@x-plat/design-system 0.5.64 → 0.5.65

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.cjs CHANGED
@@ -57,6 +57,7 @@ __export(index_exports, {
57
57
  ArrowUpLeftIcon: () => ArrowUpLeftIcon_default,
58
58
  ArrowUpRightIcon: () => ArrowUpRightIcon_default,
59
59
  AtSignIcon: () => AtSignIcon_default,
60
+ AutoResizeTextArea: () => AutoResizeTextArea_default,
60
61
  Avatar: () => Avatar_default,
61
62
  AwardIcon: () => AwardIcon_default,
62
63
  BREAKPOINT_KEYS_ORDERED: () => BREAKPOINT_KEYS_ORDERED,
@@ -7182,11 +7183,72 @@ var Chart = import_react5.default.memo((props) => {
7182
7183
  Chart.displayName = "Chart";
7183
7184
  var Chart_default = Chart;
7184
7185
 
7185
- // src/components/ChatInput/ChatInput.tsx
7186
+ // src/components/AutoResizeTextArea/AutoResizeTextArea.tsx
7186
7187
  var import_react6 = __toESM(require("react"), 1);
7188
+ var import_jsx_runtime306 = require("react/jsx-runtime");
7189
+ var MAX_HEIGHT = 400;
7190
+ var AutoResizeTextArea = import_react6.default.forwardRef(
7191
+ (props, ref) => {
7192
+ const { value, className, onChange, disabled, bare = false, ...textareaProps } = props;
7193
+ const localRef = import_react6.default.useRef(null);
7194
+ const setRefs = (el) => {
7195
+ localRef.current = el;
7196
+ if (!ref) return;
7197
+ if (typeof ref === "function") ref(el);
7198
+ else if (ref && "current" in ref)
7199
+ ref.current = el;
7200
+ };
7201
+ const updateHeight = () => {
7202
+ const el = localRef.current;
7203
+ if (!el) return;
7204
+ el.style.height = "0px";
7205
+ el.style.height = `${Math.min(el.scrollHeight, MAX_HEIGHT)}px`;
7206
+ };
7207
+ const handleChange = (e) => {
7208
+ if (onChange) {
7209
+ const event = {
7210
+ ...e,
7211
+ target: { value: e.target.value }
7212
+ };
7213
+ onChange(event);
7214
+ }
7215
+ };
7216
+ import_react6.default.useEffect(() => {
7217
+ updateHeight();
7218
+ }, [value]);
7219
+ if (bare) {
7220
+ return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
7221
+ "textarea",
7222
+ {
7223
+ ...textareaProps,
7224
+ ref: setRefs,
7225
+ className,
7226
+ disabled,
7227
+ value,
7228
+ onChange: handleChange
7229
+ }
7230
+ );
7231
+ }
7232
+ return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("div", { className: clsx_default("lib-xplat-auto-resize-textarea-wrapper", className), children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("div", { className: clsx_default("lib-xplat-auto-resize-textarea", disabled && "disabled"), children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
7233
+ "textarea",
7234
+ {
7235
+ ...textareaProps,
7236
+ ref: setRefs,
7237
+ disabled,
7238
+ value,
7239
+ onChange: handleChange
7240
+ }
7241
+ ) }) });
7242
+ }
7243
+ );
7244
+ AutoResizeTextArea.displayName = "AutoResizeTextArea";
7245
+ var AutoResizeTextArea_default = AutoResizeTextArea;
7246
+
7247
+ // src/components/ChatInput/ChatInput.tsx
7248
+ var import_react7 = __toESM(require("react"), 1);
7187
7249
 
7188
7250
  // src/components/IconButton/IconButton.tsx
7189
- var import_jsx_runtime306 = require("react/jsx-runtime");
7251
+ var import_jsx_runtime307 = require("react/jsx-runtime");
7190
7252
  var IconButton = (props) => {
7191
7253
  const {
7192
7254
  icon,
@@ -7196,7 +7258,7 @@ var IconButton = (props) => {
7196
7258
  disabled,
7197
7259
  ...rest
7198
7260
  } = props;
7199
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
7261
+ return /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(
7200
7262
  "button",
7201
7263
  {
7202
7264
  className: clsx_default("lib-xplat-icon-button", type, size, className),
@@ -7210,9 +7272,8 @@ IconButton.displayName = "IconButton";
7210
7272
  var IconButton_default = IconButton;
7211
7273
 
7212
7274
  // src/components/ChatInput/ChatInput.tsx
7213
- var import_jsx_runtime307 = require("react/jsx-runtime");
7214
- var MAX_HEIGHT = 200;
7215
- var ChatInput = import_react6.default.forwardRef(
7275
+ var import_jsx_runtime308 = require("react/jsx-runtime");
7276
+ var ChatInput = import_react7.default.forwardRef(
7216
7277
  (props, ref) => {
7217
7278
  const {
7218
7279
  placeholder,
@@ -7223,24 +7284,9 @@ var ChatInput = import_react6.default.forwardRef(
7223
7284
  onChange
7224
7285
  } = props;
7225
7286
  const isControlled = valueProp !== void 0;
7226
- const [internalValue, setInternalValue] = import_react6.default.useState("");
7287
+ const [internalValue, setInternalValue] = import_react7.default.useState("");
7227
7288
  const value = isControlled ? valueProp : internalValue;
7228
7289
  const hasText = value.trim().length > 0;
7229
- const textareaRef = import_react6.default.useRef(null);
7230
- const setRefs = import_react6.default.useCallback(
7231
- (el) => {
7232
- textareaRef.current = el;
7233
- if (typeof ref === "function") ref(el);
7234
- else if (ref) ref.current = el;
7235
- },
7236
- [ref]
7237
- );
7238
- const updateHeight = import_react6.default.useCallback(() => {
7239
- const el = textareaRef.current;
7240
- if (!el) return;
7241
- el.style.height = "0px";
7242
- el.style.height = `${Math.min(el.scrollHeight, MAX_HEIGHT)}px`;
7243
- }, []);
7244
7290
  const handleChange = (e) => {
7245
7291
  const val = e.target.value;
7246
7292
  if (!isControlled) setInternalValue(val);
@@ -7250,7 +7296,6 @@ var ChatInput = import_react6.default.forwardRef(
7250
7296
  if (!hasText || disabled) return;
7251
7297
  onSubmit?.(value);
7252
7298
  if (!isControlled) setInternalValue("");
7253
- requestAnimationFrame(updateHeight);
7254
7299
  };
7255
7300
  const handleKeyDown = (e) => {
7256
7301
  if (e.key === "Enter" && !e.shiftKey) {
@@ -7258,14 +7303,12 @@ var ChatInput = import_react6.default.forwardRef(
7258
7303
  handleSubmit();
7259
7304
  }
7260
7305
  };
7261
- import_react6.default.useEffect(() => {
7262
- updateHeight();
7263
- }, [value, updateHeight]);
7264
- return /* @__PURE__ */ (0, import_jsx_runtime307.jsxs)("div", { className: clsx_default("lib-xplat-chat-input", disabled && "disabled"), children: [
7265
- /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(
7266
- "textarea",
7306
+ return /* @__PURE__ */ (0, import_jsx_runtime308.jsxs)("div", { className: clsx_default("lib-xplat-chat-input", disabled && "disabled"), children: [
7307
+ /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(
7308
+ AutoResizeTextArea_default,
7267
7309
  {
7268
- ref: setRefs,
7310
+ ref,
7311
+ bare: true,
7269
7312
  className: "chat-input-textarea",
7270
7313
  placeholder,
7271
7314
  value,
@@ -7275,10 +7318,10 @@ var ChatInput = import_react6.default.forwardRef(
7275
7318
  onKeyDown: handleKeyDown
7276
7319
  }
7277
7320
  ),
7278
- /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(
7321
+ /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(
7279
7322
  IconButton_default,
7280
7323
  {
7281
- icon: /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(MessageSquareIcon_default, {}),
7324
+ icon: /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(MessageSquareIcon_default, {}),
7282
7325
  type: buttonType,
7283
7326
  size: "sm",
7284
7327
  disabled: !hasText || disabled,
@@ -7312,7 +7355,7 @@ var import_tokens_core = require("@x-plat/tokens-core");
7312
7355
  var import_tokens_core2 = require("@x-plat/tokens-core");
7313
7356
 
7314
7357
  // src/components/CheckBox/CheckBox.tsx
7315
- var import_jsx_runtime308 = require("react/jsx-runtime");
7358
+ var import_jsx_runtime309 = require("react/jsx-runtime");
7316
7359
  var CheckBox = (props) => {
7317
7360
  const {
7318
7361
  checked,
@@ -7331,8 +7374,8 @@ var CheckBox = (props) => {
7331
7374
  const checkedClasses = `checked`;
7332
7375
  const disabledClasses = "disabled";
7333
7376
  const boxClasses = disabled ? disabledClasses : checked ? checkedClasses : uncheckedClasses;
7334
- return /* @__PURE__ */ (0, import_jsx_runtime308.jsxs)("label", { className: clsx_default("lib-xplat-checkbox", size, type, className), children: [
7335
- /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(
7377
+ return /* @__PURE__ */ (0, import_jsx_runtime309.jsxs)("label", { className: clsx_default("lib-xplat-checkbox", size, type, className), children: [
7378
+ /* @__PURE__ */ (0, import_jsx_runtime309.jsx)(
7336
7379
  "input",
7337
7380
  {
7338
7381
  type: "checkbox",
@@ -7342,44 +7385,44 @@ var CheckBox = (props) => {
7342
7385
  ...rest
7343
7386
  }
7344
7387
  ),
7345
- /* @__PURE__ */ (0, import_jsx_runtime308.jsx)("span", { className: clsx_default("checkbox", boxClasses), children: /* @__PURE__ */ (0, import_jsx_runtime308.jsx)("span", { className: clsx_default("check-icon", { visible: checked }), children: /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(CheckIcon_default, {}) }) }),
7346
- label && /* @__PURE__ */ (0, import_jsx_runtime308.jsx)("span", { className: "label", children: label })
7388
+ /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("span", { className: clsx_default("checkbox", boxClasses), children: /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("span", { className: clsx_default("check-icon", { visible: checked }), children: /* @__PURE__ */ (0, import_jsx_runtime309.jsx)(CheckIcon_default, {}) }) }),
7389
+ label && /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("span", { className: "label", children: label })
7347
7390
  ] });
7348
7391
  };
7349
7392
  CheckBox.displayName = "CheckBox";
7350
7393
  var CheckBox_default = CheckBox;
7351
7394
 
7352
7395
  // src/components/Chip/Chip.tsx
7353
- var import_jsx_runtime309 = require("react/jsx-runtime");
7396
+ var import_jsx_runtime310 = require("react/jsx-runtime");
7354
7397
  var Chip = (props) => {
7355
7398
  const {
7356
7399
  children,
7357
7400
  type = "primary",
7358
7401
  size = "md"
7359
7402
  } = props;
7360
- return /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("div", { className: clsx_default("lib-xplat-chip", type, size), children });
7403
+ return /* @__PURE__ */ (0, import_jsx_runtime310.jsx)("div", { className: clsx_default("lib-xplat-chip", type, size), children });
7361
7404
  };
7362
7405
  Chip.displayName = "Chip";
7363
7406
  var Chip_default = Chip;
7364
7407
 
7365
7408
  // src/components/DatePicker/InputDatePicker/index.tsx
7366
- var import_react13 = __toESM(require("react"), 1);
7409
+ var import_react14 = __toESM(require("react"), 1);
7367
7410
 
7368
7411
  // src/components/Input/Input.tsx
7369
- var import_react7 = __toESM(require("react"), 1);
7412
+ var import_react8 = __toESM(require("react"), 1);
7370
7413
 
7371
7414
  // src/components/Input/InputValidations.tsx
7372
- var import_jsx_runtime310 = require("react/jsx-runtime");
7415
+ var import_jsx_runtime311 = require("react/jsx-runtime");
7373
7416
  var InputValidations = (props) => {
7374
7417
  const { message, status = "default" } = props;
7375
- return /* @__PURE__ */ (0, import_jsx_runtime310.jsxs)("div", { className: clsx_default("lib-xplat-input-validation", status), children: [
7376
- /* @__PURE__ */ (0, import_jsx_runtime310.jsxs)("div", { className: "icon", children: [
7377
- status === "default" && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)(InfoIcon_default, {}),
7378
- status === "success" && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)(SuccessIcon_default, {}),
7379
- status === "warning" && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)(InfoIcon_default, {}),
7380
- status === "error" && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)(ErrorIcon_default, {})
7418
+ return /* @__PURE__ */ (0, import_jsx_runtime311.jsxs)("div", { className: clsx_default("lib-xplat-input-validation", status), children: [
7419
+ /* @__PURE__ */ (0, import_jsx_runtime311.jsxs)("div", { className: "icon", children: [
7420
+ status === "default" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(InfoIcon_default, {}),
7421
+ status === "success" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(SuccessIcon_default, {}),
7422
+ status === "warning" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(InfoIcon_default, {}),
7423
+ status === "error" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(ErrorIcon_default, {})
7381
7424
  ] }),
7382
- /* @__PURE__ */ (0, import_jsx_runtime310.jsx)("div", { className: "message", children: message })
7425
+ /* @__PURE__ */ (0, import_jsx_runtime311.jsx)("div", { className: "message", children: message })
7383
7426
  ] });
7384
7427
  };
7385
7428
  InputValidations.displayName = "InputValidations";
@@ -7420,8 +7463,8 @@ var handleTelBackspace = (prevValue, currValue) => {
7420
7463
  };
7421
7464
 
7422
7465
  // src/components/Input/Input.tsx
7423
- var import_jsx_runtime311 = require("react/jsx-runtime");
7424
- var import_react8 = require("react");
7466
+ var import_jsx_runtime312 = require("react/jsx-runtime");
7467
+ var import_react9 = require("react");
7425
7468
  var formatValue = (type, value) => {
7426
7469
  if (value === null || value === void 0) return "";
7427
7470
  const strValue = Array.isArray(value) ? String(value[0] ?? "") : String(value);
@@ -7469,7 +7512,7 @@ var parseValue = (type, value) => {
7469
7512
  return value;
7470
7513
  }
7471
7514
  };
7472
- var Input = import_react7.default.forwardRef((props, ref) => {
7515
+ var Input = import_react8.default.forwardRef((props, ref) => {
7473
7516
  const {
7474
7517
  value,
7475
7518
  className,
@@ -7496,13 +7539,13 @@ var Input = import_react7.default.forwardRef((props, ref) => {
7496
7539
  onChange(event);
7497
7540
  }
7498
7541
  };
7499
- return /* @__PURE__ */ (0, import_jsx_runtime311.jsxs)("div", { className: clsx_default("lib-xplat-input-wrap", className), children: [
7500
- /* @__PURE__ */ (0, import_jsx_runtime311.jsxs)(
7542
+ return /* @__PURE__ */ (0, import_jsx_runtime312.jsxs)("div", { className: clsx_default("lib-xplat-input-wrap", className), children: [
7543
+ /* @__PURE__ */ (0, import_jsx_runtime312.jsxs)(
7501
7544
  "div",
7502
7545
  {
7503
7546
  className: clsx_default("lib-xplat-input", size, disabled ? "disabled" : void 0),
7504
7547
  children: [
7505
- /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(
7548
+ /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(
7506
7549
  "input",
7507
7550
  {
7508
7551
  ...inputProps,
@@ -7513,11 +7556,11 @@ var Input = import_react7.default.forwardRef((props, ref) => {
7513
7556
  onChange: handleChange
7514
7557
  }
7515
7558
  ),
7516
- suffix && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)("div", { className: "suffix", children: suffix })
7559
+ suffix && /* @__PURE__ */ (0, import_jsx_runtime312.jsx)("div", { className: "suffix", children: suffix })
7517
7560
  ]
7518
7561
  }
7519
7562
  ),
7520
- validations && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)("div", { className: "lib-xplat-input-validation-wrap", children: validations?.map((validation, idx) => /* @__PURE__ */ (0, import_react8.createElement)(
7563
+ validations && /* @__PURE__ */ (0, import_jsx_runtime312.jsx)("div", { className: "lib-xplat-input-validation-wrap", children: validations?.map((validation, idx) => /* @__PURE__ */ (0, import_react9.createElement)(
7521
7564
  InputValidations_default,
7522
7565
  {
7523
7566
  ...validation,
@@ -7530,20 +7573,20 @@ Input.displayName = "Input";
7530
7573
  var Input_default = Input;
7531
7574
 
7532
7575
  // src/components/Input/PasswordInput/PasswordInput.tsx
7533
- var import_react9 = __toESM(require("react"), 1);
7534
- var import_jsx_runtime312 = require("react/jsx-runtime");
7535
- var PasswordInput = import_react9.default.forwardRef(
7576
+ var import_react10 = __toESM(require("react"), 1);
7577
+ var import_jsx_runtime313 = require("react/jsx-runtime");
7578
+ var PasswordInput = import_react10.default.forwardRef(
7536
7579
  (props, ref) => {
7537
7580
  const { reg: _reg, ...inputProps } = props;
7538
- const [isView, setIsView] = import_react9.default.useState(false);
7581
+ const [isView, setIsView] = import_react10.default.useState(false);
7539
7582
  const handleChangeView = () => {
7540
7583
  setIsView((prev) => !prev);
7541
7584
  };
7542
- return /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(
7585
+ return /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(
7543
7586
  Input_default,
7544
7587
  {
7545
7588
  ...inputProps,
7546
- suffix: /* @__PURE__ */ (0, import_jsx_runtime312.jsx)("div", { className: "wrapper pointer", onClick: handleChangeView, children: isView ? /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(OpenEyeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(CloseEyeIcon_default, {}) }),
7589
+ suffix: /* @__PURE__ */ (0, import_jsx_runtime313.jsx)("div", { className: "wrapper pointer", onClick: handleChangeView, children: isView ? /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(OpenEyeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(CloseEyeIcon_default, {}) }),
7547
7590
  type: isView ? "text" : "password",
7548
7591
  ref
7549
7592
  }
@@ -7554,17 +7597,17 @@ PasswordInput.displayName = "PasswordInput";
7554
7597
  var PasswordInput_default = PasswordInput;
7555
7598
 
7556
7599
  // src/components/Modal/Modal.tsx
7557
- var import_react11 = __toESM(require("react"), 1);
7600
+ var import_react12 = __toESM(require("react"), 1);
7558
7601
  var import_react_dom2 = require("react-dom");
7559
7602
 
7560
7603
  // src/tokens/hooks/Portal.tsx
7561
- var import_react10 = __toESM(require("react"), 1);
7604
+ var import_react11 = __toESM(require("react"), 1);
7562
7605
  var import_react_dom = __toESM(require("react-dom"), 1);
7563
- var import_jsx_runtime313 = require("react/jsx-runtime");
7564
- var PortalContainerContext = import_react10.default.createContext(null);
7565
- var PortalProvider = ({ container, children }) => /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(PortalContainerContext.Provider, { value: container, children });
7606
+ var import_jsx_runtime314 = require("react/jsx-runtime");
7607
+ var PortalContainerContext = import_react11.default.createContext(null);
7608
+ var PortalProvider = ({ container, children }) => /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(PortalContainerContext.Provider, { value: container, children });
7566
7609
  var Portal = ({ children }) => {
7567
- const contextContainer = import_react10.default.useContext(PortalContainerContext);
7610
+ const contextContainer = import_react11.default.useContext(PortalContainerContext);
7568
7611
  if (typeof document === "undefined") return null;
7569
7612
  const container = contextContainer ?? document.body;
7570
7613
  return import_react_dom.default.createPortal(children, container);
@@ -7573,14 +7616,14 @@ Portal.displayName = "Portal";
7573
7616
  var Portal_default = Portal;
7574
7617
 
7575
7618
  // src/components/Modal/Modal.tsx
7576
- var import_jsx_runtime314 = require("react/jsx-runtime");
7619
+ var import_jsx_runtime315 = require("react/jsx-runtime");
7577
7620
  var ANIMATION_DURATION_MS = 200;
7578
7621
  var Modal = (props) => {
7579
7622
  const { isOpen, onClose, children } = props;
7580
- const [mounted, setMounted] = import_react11.default.useState(false);
7581
- const [visible, setVisible] = import_react11.default.useState(false);
7582
- const boxRef = import_react11.default.useRef(null);
7583
- import_react11.default.useEffect(() => {
7623
+ const [mounted, setMounted] = import_react12.default.useState(false);
7624
+ const [visible, setVisible] = import_react12.default.useState(false);
7625
+ const boxRef = import_react12.default.useRef(null);
7626
+ import_react12.default.useEffect(() => {
7584
7627
  if (isOpen) {
7585
7628
  setMounted(true);
7586
7629
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -7594,12 +7637,12 @@ var Modal = (props) => {
7594
7637
  if (!mounted) return null;
7595
7638
  const stateClass = visible ? "enter" : "exit";
7596
7639
  return (0, import_react_dom2.createPortal)(
7597
- /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(
7640
+ /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
7598
7641
  "div",
7599
7642
  {
7600
7643
  className: clsx_default("lib-xplat-modal", "dim", stateClass),
7601
7644
  onClick: onClose,
7602
- children: /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(
7645
+ children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
7603
7646
  "div",
7604
7647
  {
7605
7648
  ref: boxRef,
@@ -7607,7 +7650,7 @@ var Modal = (props) => {
7607
7650
  role: "dialog",
7608
7651
  "aria-modal": "true",
7609
7652
  onClick: (e) => e.stopPropagation(),
7610
- children: /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(PortalProvider, { container: boxRef.current, children })
7653
+ children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(PortalProvider, { container: boxRef.current, children })
7611
7654
  }
7612
7655
  )
7613
7656
  }
@@ -7619,9 +7662,9 @@ Modal.displayName = "Modal";
7619
7662
  var Modal_default = Modal;
7620
7663
 
7621
7664
  // src/components/DatePicker/SingleDatePicker/index.tsx
7622
- var import_react12 = __toESM(require("react"), 1);
7623
- var import_jsx_runtime315 = require("react/jsx-runtime");
7624
- var DayCell2 = import_react12.default.memo(
7665
+ var import_react13 = __toESM(require("react"), 1);
7666
+ var import_jsx_runtime316 = require("react/jsx-runtime");
7667
+ var DayCell2 = import_react13.default.memo(
7625
7668
  ({
7626
7669
  day,
7627
7670
  disabled,
@@ -7631,7 +7674,7 @@ var DayCell2 = import_react12.default.memo(
7631
7674
  isEnd,
7632
7675
  inRange,
7633
7676
  onSelect
7634
- }) => /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
7677
+ }) => /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
7635
7678
  "button",
7636
7679
  {
7637
7680
  type: "button",
@@ -7673,26 +7716,26 @@ var SingleDatePicker = (props) => {
7673
7716
  initialYear,
7674
7717
  initialMonth
7675
7718
  );
7676
- const [pickerMode, setPickerMode] = import_react12.default.useState("days");
7677
- const [yearRangeStart, setYearRangeStart] = import_react12.default.useState(
7719
+ const [pickerMode, setPickerMode] = import_react13.default.useState("days");
7720
+ const [yearRangeStart, setYearRangeStart] = import_react13.default.useState(
7678
7721
  Math.floor((initialYear ?? (/* @__PURE__ */ new Date()).getFullYear()) / 12) * 12
7679
7722
  );
7680
- const minTime = import_react12.default.useMemo(
7723
+ const minTime = import_react13.default.useMemo(
7681
7724
  () => minDate ? new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()).getTime() : -Infinity,
7682
7725
  [minDate]
7683
7726
  );
7684
- const maxTime = import_react12.default.useMemo(
7727
+ const maxTime = import_react13.default.useMemo(
7685
7728
  () => maxDate ? new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()).getTime() : Infinity,
7686
7729
  [maxDate]
7687
7730
  );
7688
- const highlightSet = import_react12.default.useMemo(() => {
7731
+ const highlightSet = import_react13.default.useMemo(() => {
7689
7732
  const set = /* @__PURE__ */ new Set();
7690
7733
  for (const h of highlightDates) {
7691
7734
  set.add(`${h.getFullYear()}-${h.getMonth()}-${h.getDate()}`);
7692
7735
  }
7693
7736
  return set;
7694
7737
  }, [highlightDates]);
7695
- const handleSelect = import_react12.default.useCallback(
7738
+ const handleSelect = import_react13.default.useCallback(
7696
7739
  (date) => {
7697
7740
  onChange?.(date);
7698
7741
  },
@@ -7729,20 +7772,20 @@ var SingleDatePicker = (props) => {
7729
7772
  const monthLabels = MONTH_LABELS[locale];
7730
7773
  const titleText = pickerMode === "days" ? locale === "ko" ? `${year}\uB144 ${monthLabels[month]}` : `${monthLabels[month]} ${year}` : pickerMode === "months" ? `${year}` : `${yearRangeStart} - ${yearRangeStart + 11}`;
7731
7774
  const hasRange = rangeStart != null && rangeEnd != null;
7732
- return /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)(
7775
+ return /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)(
7733
7776
  "div",
7734
7777
  {
7735
7778
  className: clsx_default("lib-xplat-datepicker", "single"),
7736
7779
  children: [
7737
- /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)("div", { className: "datepicker-header", children: [
7738
- /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(ChevronLeftIcon_default, {}) }),
7739
- /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
7740
- /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(ChevronRightIcon_default, {}) })
7780
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "datepicker-header", children: [
7781
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(ChevronLeftIcon_default, {}) }),
7782
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
7783
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(ChevronRightIcon_default, {}) })
7741
7784
  ] }),
7742
- /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)("div", { className: "datepicker-body", children: [
7743
- pickerMode === "years" && /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
7785
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "datepicker-body", children: [
7786
+ pickerMode === "years" && /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
7744
7787
  const y = yearRangeStart + i;
7745
- return /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
7788
+ return /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
7746
7789
  "button",
7747
7790
  {
7748
7791
  type: "button",
@@ -7753,7 +7796,7 @@ var SingleDatePicker = (props) => {
7753
7796
  y
7754
7797
  );
7755
7798
  }) }),
7756
- pickerMode === "months" && /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
7799
+ pickerMode === "months" && /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
7757
7800
  "button",
7758
7801
  {
7759
7802
  type: "button",
@@ -7763,8 +7806,8 @@ var SingleDatePicker = (props) => {
7763
7806
  },
7764
7807
  i
7765
7808
  )) }),
7766
- pickerMode === "days" && /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)(import_jsx_runtime315.Fragment, { children: [
7767
- /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
7809
+ pickerMode === "days" && /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)(import_jsx_runtime316.Fragment, { children: [
7810
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
7768
7811
  "div",
7769
7812
  {
7770
7813
  className: clsx_default(
@@ -7776,7 +7819,7 @@ var SingleDatePicker = (props) => {
7776
7819
  },
7777
7820
  label
7778
7821
  )) }),
7779
- /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "datepicker-grid", children: days.map((day, idx) => {
7822
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-grid", children: days.map((day, idx) => {
7780
7823
  const t = day.date.getTime();
7781
7824
  const disabled = t < minTime || t > maxTime;
7782
7825
  const selected = value ? isSameDay(day.date, value) : false;
@@ -7786,7 +7829,7 @@ var SingleDatePicker = (props) => {
7786
7829
  const isStart = hasRange ? isSameDay(day.date, rangeStart) : false;
7787
7830
  const isEnd = hasRange ? isSameDay(day.date, rangeEnd) : false;
7788
7831
  const inRangeVal = hasRange ? isInRange(day.date, rangeStart, rangeEnd) : false;
7789
- return /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
7832
+ return /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
7790
7833
  DayCell2,
7791
7834
  {
7792
7835
  day,
@@ -7811,7 +7854,7 @@ SingleDatePicker.displayName = "SingleDatePicker";
7811
7854
  var SingleDatePicker_default = SingleDatePicker;
7812
7855
 
7813
7856
  // src/components/DatePicker/InputDatePicker/index.tsx
7814
- var import_jsx_runtime316 = require("react/jsx-runtime");
7857
+ var import_jsx_runtime317 = require("react/jsx-runtime");
7815
7858
  var formatDate = (date) => {
7816
7859
  if (!date || !(date instanceof Date) || isNaN(date.getTime())) return "";
7817
7860
  const y = date.getFullYear();
@@ -7821,8 +7864,8 @@ var formatDate = (date) => {
7821
7864
  };
7822
7865
  var InputDatePicker = (props) => {
7823
7866
  const { value, onChange, minDate, maxDate, disabled, locale = "ko", placeholder } = props;
7824
- const [isOpen, setIsOpen] = import_react13.default.useState(false);
7825
- const [tempDate, setTempDate] = import_react13.default.useState(value ?? /* @__PURE__ */ new Date());
7867
+ const [isOpen, setIsOpen] = import_react14.default.useState(false);
7868
+ const [tempDate, setTempDate] = import_react14.default.useState(value ?? /* @__PURE__ */ new Date());
7826
7869
  const handleOpen = () => {
7827
7870
  if (disabled) return;
7828
7871
  setTempDate(value ?? /* @__PURE__ */ new Date());
@@ -7838,19 +7881,19 @@ var InputDatePicker = (props) => {
7838
7881
  const handleClose = () => {
7839
7882
  setIsOpen(false);
7840
7883
  };
7841
- return /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
7842
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
7884
+ return /* @__PURE__ */ (0, import_jsx_runtime317.jsxs)("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
7885
+ /* @__PURE__ */ (0, import_jsx_runtime317.jsx)("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(
7843
7886
  Input_default,
7844
7887
  {
7845
7888
  value: formatDate(value),
7846
7889
  placeholder,
7847
- suffix: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(CalenderIcon_default, {}),
7890
+ suffix: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(CalenderIcon_default, {}),
7848
7891
  disabled,
7849
7892
  readOnly: true
7850
7893
  }
7851
7894
  ) }),
7852
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "lib-xplat-popup-datepicker-card", children: [
7853
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
7895
+ /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime317.jsxs)("div", { className: "lib-xplat-popup-datepicker-card", children: [
7896
+ /* @__PURE__ */ (0, import_jsx_runtime317.jsx)("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(
7854
7897
  SingleDatePicker_default,
7855
7898
  {
7856
7899
  value: tempDate,
@@ -7860,9 +7903,9 @@ var InputDatePicker = (props) => {
7860
7903
  locale
7861
7904
  }
7862
7905
  ) }),
7863
- /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "popup-datepicker-footer", children: [
7864
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
7865
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
7906
+ /* @__PURE__ */ (0, import_jsx_runtime317.jsxs)("div", { className: "popup-datepicker-footer", children: [
7907
+ /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
7908
+ /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
7866
7909
  ] })
7867
7910
  ] }) })
7868
7911
  ] });
@@ -7871,20 +7914,20 @@ InputDatePicker.displayName = "InputDatePicker";
7871
7914
  var InputDatePicker_default = InputDatePicker;
7872
7915
 
7873
7916
  // src/components/DatePicker/PopupPicker/index.tsx
7874
- var import_react17 = __toESM(require("react"), 1);
7917
+ var import_react18 = __toESM(require("react"), 1);
7875
7918
 
7876
7919
  // src/components/DatePicker/RangePicker/index.tsx
7877
- var import_react16 = __toESM(require("react"), 1);
7920
+ var import_react17 = __toESM(require("react"), 1);
7878
7921
 
7879
7922
  // src/components/Tab/Tab.tsx
7880
- var import_react15 = __toESM(require("react"), 1);
7923
+ var import_react16 = __toESM(require("react"), 1);
7881
7924
 
7882
7925
  // src/components/Tab/TabItem.tsx
7883
- var import_react14 = __toESM(require("react"), 1);
7884
- var import_jsx_runtime317 = require("react/jsx-runtime");
7885
- var TabItem = import_react14.default.forwardRef((props, ref) => {
7926
+ var import_react15 = __toESM(require("react"), 1);
7927
+ var import_jsx_runtime318 = require("react/jsx-runtime");
7928
+ var TabItem = import_react15.default.forwardRef((props, ref) => {
7886
7929
  const { isActive: isActive2, title, onClick } = props;
7887
- return /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(
7930
+ return /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
7888
7931
  "div",
7889
7932
  {
7890
7933
  ref,
@@ -7898,25 +7941,25 @@ TabItem.displayName = "TabItem";
7898
7941
  var TabItem_default = TabItem;
7899
7942
 
7900
7943
  // src/components/Tab/Tab.tsx
7901
- var import_jsx_runtime318 = require("react/jsx-runtime");
7944
+ var import_jsx_runtime319 = require("react/jsx-runtime");
7902
7945
  var Tab = (props) => {
7903
7946
  const { activeIndex, onChange, tabs, type, size = "md" } = props;
7904
- const [underlineStyle, setUnderlineStyle] = import_react15.default.useState({
7947
+ const [underlineStyle, setUnderlineStyle] = import_react16.default.useState({
7905
7948
  left: 0,
7906
7949
  width: 0
7907
7950
  });
7908
- const itemRefs = import_react15.default.useRef([]);
7951
+ const itemRefs = import_react16.default.useRef([]);
7909
7952
  const handleChangeActiveTab = (tabItem, tabIdx) => {
7910
7953
  onChange(tabItem, tabIdx);
7911
7954
  };
7912
- import_react15.default.useEffect(() => {
7955
+ import_react16.default.useEffect(() => {
7913
7956
  const el = itemRefs.current[activeIndex];
7914
7957
  if (el) {
7915
7958
  setUnderlineStyle({ left: el.offsetLeft, width: el.offsetWidth });
7916
7959
  }
7917
7960
  }, [activeIndex, tabs.length]);
7918
- return /* @__PURE__ */ (0, import_jsx_runtime318.jsxs)("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
7919
- tabs.map((tab, idx) => /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
7961
+ return /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
7962
+ tabs.map((tab, idx) => /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
7920
7963
  TabItem_default,
7921
7964
  {
7922
7965
  onClick: () => handleChangeActiveTab(tab, idx),
@@ -7928,7 +7971,7 @@ var Tab = (props) => {
7928
7971
  },
7929
7972
  `${tab.value}_${idx}`
7930
7973
  )),
7931
- type === "toggle" && /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
7974
+ type === "toggle" && /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
7932
7975
  "div",
7933
7976
  {
7934
7977
  className: "tab-toggle-underline",
@@ -7944,7 +7987,7 @@ Tab.displayName = "Tab";
7944
7987
  var Tab_default = Tab;
7945
7988
 
7946
7989
  // src/components/DatePicker/RangePicker/index.tsx
7947
- var import_jsx_runtime319 = require("react/jsx-runtime");
7990
+ var import_jsx_runtime320 = require("react/jsx-runtime");
7948
7991
  var RangePicker = (props) => {
7949
7992
  const {
7950
7993
  startDate,
@@ -7954,7 +7997,7 @@ var RangePicker = (props) => {
7954
7997
  maxDate,
7955
7998
  locale = "ko"
7956
7999
  } = props;
7957
- const [activeTab, setActiveTab] = import_react16.default.useState("start");
8000
+ const [activeTab, setActiveTab] = import_react17.default.useState("start");
7958
8001
  const handleStartChange = (date) => {
7959
8002
  if (!date) return;
7960
8003
  const newStart = date > endDate ? endDate : date;
@@ -7967,8 +8010,8 @@ var RangePicker = (props) => {
7967
8010
  };
7968
8011
  const startMaxDate = maxDate && endDate < maxDate ? endDate : endDate;
7969
8012
  const endMinDate = minDate && startDate > minDate ? startDate : startDate;
7970
- return /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
7971
- /* @__PURE__ */ (0, import_jsx_runtime319.jsx)("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
8013
+ return /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
8014
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsx)("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
7972
8015
  Tab_default,
7973
8016
  {
7974
8017
  activeIndex: activeTab === "start" ? 0 : 1,
@@ -7981,8 +8024,8 @@ var RangePicker = (props) => {
7981
8024
  size: "sm"
7982
8025
  }
7983
8026
  ) }),
7984
- /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: "datepicker-range-panels", children: [
7985
- /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
8027
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: "datepicker-range-panels", children: [
8028
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
7986
8029
  SingleDatePicker_default,
7987
8030
  {
7988
8031
  value: startDate,
@@ -7994,7 +8037,7 @@ var RangePicker = (props) => {
7994
8037
  locale
7995
8038
  }
7996
8039
  ),
7997
- /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
8040
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
7998
8041
  SingleDatePicker_default,
7999
8042
  {
8000
8043
  value: endDate,
@@ -8007,7 +8050,7 @@ var RangePicker = (props) => {
8007
8050
  }
8008
8051
  )
8009
8052
  ] }),
8010
- /* @__PURE__ */ (0, import_jsx_runtime319.jsx)("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
8053
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsx)("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
8011
8054
  SingleDatePicker_default,
8012
8055
  {
8013
8056
  value: startDate,
@@ -8018,7 +8061,7 @@ var RangePicker = (props) => {
8018
8061
  rangeEnd: endDate,
8019
8062
  locale
8020
8063
  }
8021
- ) : /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
8064
+ ) : /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
8022
8065
  SingleDatePicker_default,
8023
8066
  {
8024
8067
  value: endDate,
@@ -8036,10 +8079,10 @@ RangePicker.displayName = "RangePicker";
8036
8079
  var RangePicker_default = RangePicker;
8037
8080
 
8038
8081
  // src/components/DatePicker/PopupPicker/index.tsx
8039
- var import_jsx_runtime320 = require("react/jsx-runtime");
8082
+ var import_jsx_runtime321 = require("react/jsx-runtime");
8040
8083
  var PopupPicker = (props) => {
8041
8084
  const { component, type, locale } = props;
8042
- const [isOpen, setIsOpen] = import_react17.default.useState(false);
8085
+ const [isOpen, setIsOpen] = import_react18.default.useState(false);
8043
8086
  const handleClick = () => setIsOpen(true);
8044
8087
  const handleClose = () => setIsOpen(false);
8045
8088
  const handleSingleChange = (date) => {
@@ -8047,11 +8090,11 @@ var PopupPicker = (props) => {
8047
8090
  props.onChange?.(date);
8048
8091
  handleClose();
8049
8092
  };
8050
- return /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: "lib-xplat-popup-datepicker", children: [
8051
- import_react17.default.cloneElement(component, { onClick: handleClick }),
8052
- /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
8053
- /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: "popup-datepicker-content", children: [
8054
- type === "single" && /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
8093
+ return /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: "lib-xplat-popup-datepicker", children: [
8094
+ import_react18.default.cloneElement(component, { onClick: handleClick }),
8095
+ /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
8096
+ /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: "popup-datepicker-content", children: [
8097
+ type === "single" && /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
8055
8098
  SingleDatePicker_default,
8056
8099
  {
8057
8100
  value: props.value,
@@ -8061,7 +8104,7 @@ var PopupPicker = (props) => {
8061
8104
  locale
8062
8105
  }
8063
8106
  ),
8064
- type === "range" && /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
8107
+ type === "range" && /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
8065
8108
  RangePicker_default,
8066
8109
  {
8067
8110
  startDate: props.startDate,
@@ -8073,8 +8116,8 @@ var PopupPicker = (props) => {
8073
8116
  }
8074
8117
  )
8075
8118
  ] }),
8076
- /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: "popup-datepicker-footer", children: [
8077
- /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
8119
+ /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: "popup-datepicker-footer", children: [
8120
+ /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
8078
8121
  Button_default,
8079
8122
  {
8080
8123
  type: "secondary",
@@ -8082,7 +8125,7 @@ var PopupPicker = (props) => {
8082
8125
  children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel"
8083
8126
  }
8084
8127
  ),
8085
- /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
8128
+ /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
8086
8129
  ] })
8087
8130
  ] }) })
8088
8131
  ] });
@@ -8091,10 +8134,10 @@ PopupPicker.displayName = "PopupPicker";
8091
8134
  var PopupPicker_default = PopupPicker;
8092
8135
 
8093
8136
  // src/components/Divider/Divider.tsx
8094
- var import_jsx_runtime321 = require("react/jsx-runtime");
8137
+ var import_jsx_runtime322 = require("react/jsx-runtime");
8095
8138
  var Divider = (props) => {
8096
8139
  const { orientation = "horizontal" } = props;
8097
- return /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
8140
+ return /* @__PURE__ */ (0, import_jsx_runtime322.jsx)(
8098
8141
  "div",
8099
8142
  {
8100
8143
  className: clsx_default("lib-xplat-divider", orientation),
@@ -8107,15 +8150,15 @@ Divider.displayName = "Divider";
8107
8150
  var Divider_default = Divider;
8108
8151
 
8109
8152
  // src/components/Drawer/Drawer.tsx
8110
- var import_react18 = __toESM(require("react"), 1);
8153
+ var import_react19 = __toESM(require("react"), 1);
8111
8154
  var import_react_dom3 = require("react-dom");
8112
- var import_jsx_runtime322 = require("react/jsx-runtime");
8155
+ var import_jsx_runtime323 = require("react/jsx-runtime");
8113
8156
  var ANIMATION_DURATION_MS2 = 250;
8114
8157
  var Drawer = (props) => {
8115
8158
  const { isOpen, onClose, placement = "right", size = "md", title, children } = props;
8116
- const [mounted, setMounted] = import_react18.default.useState(false);
8117
- const [visible, setVisible] = import_react18.default.useState(false);
8118
- import_react18.default.useEffect(() => {
8159
+ const [mounted, setMounted] = import_react19.default.useState(false);
8160
+ const [visible, setVisible] = import_react19.default.useState(false);
8161
+ import_react19.default.useEffect(() => {
8119
8162
  if (isOpen) {
8120
8163
  setMounted(true);
8121
8164
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -8129,12 +8172,12 @@ var Drawer = (props) => {
8129
8172
  if (!mounted) return null;
8130
8173
  const stateClass = visible ? "enter" : "exit";
8131
8174
  return (0, import_react_dom3.createPortal)(
8132
- /* @__PURE__ */ (0, import_jsx_runtime322.jsx)(
8175
+ /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(
8133
8176
  "div",
8134
8177
  {
8135
8178
  className: clsx_default("lib-xplat-drawer-overlay", stateClass),
8136
8179
  onClick: onClose,
8137
- children: /* @__PURE__ */ (0, import_jsx_runtime322.jsxs)(
8180
+ children: /* @__PURE__ */ (0, import_jsx_runtime323.jsxs)(
8138
8181
  "div",
8139
8182
  {
8140
8183
  className: clsx_default("lib-xplat-drawer", placement, size, stateClass),
@@ -8142,11 +8185,11 @@ var Drawer = (props) => {
8142
8185
  "aria-modal": "true",
8143
8186
  onClick: (e) => e.stopPropagation(),
8144
8187
  children: [
8145
- title && /* @__PURE__ */ (0, import_jsx_runtime322.jsxs)("div", { className: "drawer-header", children: [
8146
- /* @__PURE__ */ (0, import_jsx_runtime322.jsx)("span", { className: "drawer-title", children: title }),
8147
- /* @__PURE__ */ (0, import_jsx_runtime322.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
8188
+ title && /* @__PURE__ */ (0, import_jsx_runtime323.jsxs)("div", { className: "drawer-header", children: [
8189
+ /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("span", { className: "drawer-title", children: title }),
8190
+ /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
8148
8191
  ] }),
8149
- /* @__PURE__ */ (0, import_jsx_runtime322.jsx)("div", { className: "drawer-body", children })
8192
+ /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("div", { className: "drawer-body", children })
8150
8193
  ]
8151
8194
  }
8152
8195
  )
@@ -8159,16 +8202,16 @@ Drawer.displayName = "Drawer";
8159
8202
  var Drawer_default = Drawer;
8160
8203
 
8161
8204
  // src/components/Dropdown/Dropdown.tsx
8162
- var import_react21 = __toESM(require("react"), 1);
8205
+ var import_react22 = __toESM(require("react"), 1);
8163
8206
 
8164
8207
  // src/tokens/hooks/useAutoPosition.ts
8165
- var import_react19 = __toESM(require("react"), 1);
8208
+ var import_react20 = __toESM(require("react"), 1);
8166
8209
  var useAutoPosition = (triggerRef, popRef, enabled = true) => {
8167
- const [position, setPosition] = import_react19.default.useState({
8210
+ const [position, setPosition] = import_react20.default.useState({
8168
8211
  position: {},
8169
8212
  direction: "bottom"
8170
8213
  });
8171
- const calculatePosition = import_react19.default.useCallback(() => {
8214
+ const calculatePosition = import_react20.default.useCallback(() => {
8172
8215
  if (!triggerRef.current || !popRef.current) return;
8173
8216
  const triggerRect = triggerRef.current.getBoundingClientRect();
8174
8217
  const popW = popRef.current.offsetWidth;
@@ -8195,13 +8238,13 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
8195
8238
  direction
8196
8239
  });
8197
8240
  }, [triggerRef, popRef]);
8198
- import_react19.default.useLayoutEffect(() => {
8241
+ import_react20.default.useLayoutEffect(() => {
8199
8242
  if (!enabled) return;
8200
8243
  calculatePosition();
8201
8244
  const raf = requestAnimationFrame(calculatePosition);
8202
8245
  return () => cancelAnimationFrame(raf);
8203
8246
  }, [calculatePosition, enabled]);
8204
- import_react19.default.useEffect(() => {
8247
+ import_react20.default.useEffect(() => {
8205
8248
  if (!enabled || !popRef.current) return;
8206
8249
  const observer = new ResizeObserver(() => {
8207
8250
  calculatePosition();
@@ -8209,7 +8252,7 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
8209
8252
  observer.observe(popRef.current);
8210
8253
  return () => observer.disconnect();
8211
8254
  }, [calculatePosition, enabled, popRef]);
8212
- import_react19.default.useEffect(() => {
8255
+ import_react20.default.useEffect(() => {
8213
8256
  if (!enabled) return;
8214
8257
  window.addEventListener("resize", calculatePosition);
8215
8258
  window.addEventListener("scroll", calculatePosition, true);
@@ -8223,9 +8266,9 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
8223
8266
  var useAutoPosition_default = useAutoPosition;
8224
8267
 
8225
8268
  // src/tokens/hooks/useClickOutside.ts
8226
- var import_react20 = __toESM(require("react"), 1);
8269
+ var import_react21 = __toESM(require("react"), 1);
8227
8270
  var useClickOutside = (refs, handler, enabled = true) => {
8228
- import_react20.default.useEffect(() => {
8271
+ import_react21.default.useEffect(() => {
8229
8272
  if (!enabled) return;
8230
8273
  const refArray = Array.isArray(refs) ? refs : [refs];
8231
8274
  const listener = (event) => {
@@ -8248,17 +8291,17 @@ var useClickOutside = (refs, handler, enabled = true) => {
8248
8291
  var useClickOutside_default = useClickOutside;
8249
8292
 
8250
8293
  // src/components/Dropdown/Dropdown.tsx
8251
- var import_jsx_runtime323 = require("react/jsx-runtime");
8294
+ var import_jsx_runtime324 = require("react/jsx-runtime");
8252
8295
  var Dropdown = (props) => {
8253
8296
  const { items, children } = props;
8254
- const [isOpen, setIsOpen] = import_react21.default.useState(false);
8255
- const [mounted, setMounted] = import_react21.default.useState(false);
8256
- const [visible, setVisible] = import_react21.default.useState(false);
8257
- const triggerRef = import_react21.default.useRef(null);
8258
- const menuRef = import_react21.default.useRef(null);
8297
+ const [isOpen, setIsOpen] = import_react22.default.useState(false);
8298
+ const [mounted, setMounted] = import_react22.default.useState(false);
8299
+ const [visible, setVisible] = import_react22.default.useState(false);
8300
+ const triggerRef = import_react22.default.useRef(null);
8301
+ const menuRef = import_react22.default.useRef(null);
8259
8302
  const { position, direction } = useAutoPosition_default(triggerRef, menuRef, mounted);
8260
8303
  useClickOutside_default([triggerRef, menuRef], () => setIsOpen(false), isOpen);
8261
- import_react21.default.useEffect(() => {
8304
+ import_react22.default.useEffect(() => {
8262
8305
  if (isOpen) {
8263
8306
  setMounted(true);
8264
8307
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -8273,8 +8316,8 @@ var Dropdown = (props) => {
8273
8316
  item.onClick?.();
8274
8317
  setIsOpen(false);
8275
8318
  };
8276
- return /* @__PURE__ */ (0, import_jsx_runtime323.jsxs)("div", { className: "lib-xplat-dropdown", children: [
8277
- /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(
8319
+ return /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)("div", { className: "lib-xplat-dropdown", children: [
8320
+ /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
8278
8321
  "div",
8279
8322
  {
8280
8323
  ref: triggerRef,
@@ -8283,14 +8326,14 @@ var Dropdown = (props) => {
8283
8326
  children
8284
8327
  }
8285
8328
  ),
8286
- mounted && /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(
8329
+ mounted && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
8287
8330
  "div",
8288
8331
  {
8289
8332
  ref: menuRef,
8290
8333
  className: clsx_default("lib-xplat-dropdown-menu", direction, { visible }),
8291
8334
  style: { top: position.top, left: position.left },
8292
8335
  role: "menu",
8293
- children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(
8336
+ children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
8294
8337
  "button",
8295
8338
  {
8296
8339
  className: clsx_default("dropdown-item", {
@@ -8312,8 +8355,8 @@ Dropdown.displayName = "Dropdown";
8312
8355
  var Dropdown_default = Dropdown;
8313
8356
 
8314
8357
  // src/components/Editor/Editor.tsx
8315
- var import_react22 = __toESM(require("react"), 1);
8316
- var import_jsx_runtime324 = require("react/jsx-runtime");
8358
+ var import_react23 = __toESM(require("react"), 1);
8359
+ var import_jsx_runtime325 = require("react/jsx-runtime");
8317
8360
  var DEFAULT_TOOLBAR = [
8318
8361
  "bold",
8319
8362
  "italic",
@@ -8420,21 +8463,21 @@ var Editor = (props) => {
8420
8463
  onImageUpload,
8421
8464
  minHeight = 200
8422
8465
  } = props;
8423
- const editorRef = import_react22.default.useRef(null);
8424
- const lastRangeRef = import_react22.default.useRef(null);
8425
- const composingRef = import_react22.default.useRef(false);
8426
- const [isFocused, setIsFocused] = import_react22.default.useState(false);
8427
- const [isEmpty, setIsEmpty] = import_react22.default.useState(!value);
8428
- const [activeFormats, setActiveFormats] = import_react22.default.useState(/* @__PURE__ */ new Set());
8429
- const [slashOpen, setSlashOpen] = import_react22.default.useState(false);
8430
- const [slashFilter, setSlashFilter] = import_react22.default.useState("");
8431
- const [slashIdx, setSlashIdx] = import_react22.default.useState(0);
8432
- const [slashPos, setSlashPos] = import_react22.default.useState({ top: 0, left: 0 });
8433
- const slashStartRangeRef = import_react22.default.useRef(null);
8434
- const [linkOpen, setLinkOpen] = import_react22.default.useState(false);
8435
- const [linkValue, setLinkValue] = import_react22.default.useState("");
8436
- const [linkPos, setLinkPos] = import_react22.default.useState({ top: 0, left: 0 });
8437
- import_react22.default.useEffect(() => {
8466
+ const editorRef = import_react23.default.useRef(null);
8467
+ const lastRangeRef = import_react23.default.useRef(null);
8468
+ const composingRef = import_react23.default.useRef(false);
8469
+ const [isFocused, setIsFocused] = import_react23.default.useState(false);
8470
+ const [isEmpty, setIsEmpty] = import_react23.default.useState(!value);
8471
+ const [activeFormats, setActiveFormats] = import_react23.default.useState(/* @__PURE__ */ new Set());
8472
+ const [slashOpen, setSlashOpen] = import_react23.default.useState(false);
8473
+ const [slashFilter, setSlashFilter] = import_react23.default.useState("");
8474
+ const [slashIdx, setSlashIdx] = import_react23.default.useState(0);
8475
+ const [slashPos, setSlashPos] = import_react23.default.useState({ top: 0, left: 0 });
8476
+ const slashStartRangeRef = import_react23.default.useRef(null);
8477
+ const [linkOpen, setLinkOpen] = import_react23.default.useState(false);
8478
+ const [linkValue, setLinkValue] = import_react23.default.useState("");
8479
+ const [linkPos, setLinkPos] = import_react23.default.useState({ top: 0, left: 0 });
8480
+ import_react23.default.useEffect(() => {
8438
8481
  if (!editorRef.current) return;
8439
8482
  if (editorRef.current.innerHTML !== value) {
8440
8483
  editorRef.current.innerHTML = sanitizeHtml(value || "");
@@ -8548,7 +8591,7 @@ var Editor = (props) => {
8548
8591
  setSlashIdx(0);
8549
8592
  slashStartRangeRef.current = null;
8550
8593
  };
8551
- const filteredSlashItems = import_react22.default.useMemo(() => {
8594
+ const filteredSlashItems = import_react23.default.useMemo(() => {
8552
8595
  if (!slashFilter) return SLASH_ITEMS;
8553
8596
  const f = slashFilter.toLowerCase();
8554
8597
  return SLASH_ITEMS.filter((it) => it.label.toLowerCase().includes(f) || it.key.includes(f));
@@ -8833,8 +8876,8 @@ var Editor = (props) => {
8833
8876
  break;
8834
8877
  }
8835
8878
  };
8836
- return /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)("div", { className: clsx_default("lib-xplat-editor", isFocused && "focused", readOnly && "readonly"), children: [
8837
- !readOnly && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
8879
+ return /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)("div", { className: clsx_default("lib-xplat-editor", isFocused && "focused", readOnly && "readonly"), children: [
8880
+ !readOnly && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
8838
8881
  EditorToolbar,
8839
8882
  {
8840
8883
  items: toolbar,
@@ -8842,9 +8885,9 @@ var Editor = (props) => {
8842
8885
  onAction: onToolbarAction
8843
8886
  }
8844
8887
  ),
8845
- /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)("div", { className: "lib-xplat-editor__content", style: { minHeight }, children: [
8846
- isEmpty && !isFocused && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("div", { className: "lib-xplat-editor__placeholder", children: placeholder }),
8847
- /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
8888
+ /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)("div", { className: "lib-xplat-editor__content", style: { minHeight }, children: [
8889
+ isEmpty && !isFocused && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "lib-xplat-editor__placeholder", children: placeholder }),
8890
+ /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
8848
8891
  "div",
8849
8892
  {
8850
8893
  ref: editorRef,
@@ -8863,7 +8906,7 @@ var Editor = (props) => {
8863
8906
  spellCheck: true
8864
8907
  }
8865
8908
  ),
8866
- slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
8909
+ slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
8867
8910
  SlashMenu,
8868
8911
  {
8869
8912
  position: slashPos,
@@ -8873,7 +8916,7 @@ var Editor = (props) => {
8873
8916
  onClose: closeSlashMenu
8874
8917
  }
8875
8918
  ),
8876
- linkOpen && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
8919
+ linkOpen && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
8877
8920
  LinkPopover,
8878
8921
  {
8879
8922
  position: linkPos,
@@ -8925,7 +8968,7 @@ var isActive = (item, active) => {
8925
8968
  return active.has(item);
8926
8969
  };
8927
8970
  var EditorToolbar = ({ items, active, onAction }) => {
8928
- return /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("div", { className: "lib-xplat-editor__toolbar", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
8971
+ return /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "lib-xplat-editor__toolbar", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
8929
8972
  "button",
8930
8973
  {
8931
8974
  type: "button",
@@ -8941,7 +8984,7 @@ var EditorToolbar = ({ items, active, onAction }) => {
8941
8984
  )) });
8942
8985
  };
8943
8986
  var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
8944
- import_react22.default.useEffect(() => {
8987
+ import_react23.default.useEffect(() => {
8945
8988
  const handleClickOutside = (e) => {
8946
8989
  const target = e.target;
8947
8990
  const menu = document.querySelector(".lib-xplat-editor__slash-menu");
@@ -8950,12 +8993,12 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
8950
8993
  window.addEventListener("mousedown", handleClickOutside);
8951
8994
  return () => window.removeEventListener("mousedown", handleClickOutside);
8952
8995
  }, [onClose]);
8953
- return /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
8996
+ return /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
8954
8997
  "div",
8955
8998
  {
8956
8999
  className: "lib-xplat-editor__slash-menu",
8957
9000
  style: { top: position.top, left: position.left },
8958
- children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)(
9001
+ children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)(
8959
9002
  "button",
8960
9003
  {
8961
9004
  type: "button",
@@ -8965,8 +9008,8 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
8965
9008
  onSelect(item);
8966
9009
  },
8967
9010
  children: [
8968
- /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("span", { className: "label", children: item.label }),
8969
- item.hint && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("span", { className: "hint", children: item.hint })
9011
+ /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("span", { className: "label", children: item.label }),
9012
+ item.hint && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("span", { className: "hint", children: item.hint })
8970
9013
  ]
8971
9014
  },
8972
9015
  item.key
@@ -8975,17 +9018,17 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
8975
9018
  );
8976
9019
  };
8977
9020
  var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
8978
- const inputRef = import_react22.default.useRef(null);
8979
- import_react22.default.useEffect(() => {
9021
+ const inputRef = import_react23.default.useRef(null);
9022
+ import_react23.default.useEffect(() => {
8980
9023
  inputRef.current?.focus();
8981
9024
  }, []);
8982
- return /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)(
9025
+ return /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)(
8983
9026
  "div",
8984
9027
  {
8985
9028
  className: "lib-xplat-editor__link-popover",
8986
9029
  style: { top: position.top, left: position.left },
8987
9030
  children: [
8988
- /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
9031
+ /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
8989
9032
  "input",
8990
9033
  {
8991
9034
  ref: inputRef,
@@ -9005,11 +9048,11 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
9005
9048
  }
9006
9049
  }
9007
9050
  ),
9008
- /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("button", { type: "button", onMouseDown: (e) => {
9051
+ /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("button", { type: "button", onMouseDown: (e) => {
9009
9052
  e.preventDefault();
9010
9053
  onConfirm();
9011
9054
  }, children: "\uC801\uC6A9" }),
9012
- /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("button", { type: "button", onMouseDown: (e) => {
9055
+ /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("button", { type: "button", onMouseDown: (e) => {
9013
9056
  e.preventDefault();
9014
9057
  onClose();
9015
9058
  }, children: "\uCDE8\uC18C" })
@@ -9019,23 +9062,23 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
9019
9062
  };
9020
9063
 
9021
9064
  // src/components/EmptyState/EmptyState.tsx
9022
- var import_jsx_runtime325 = require("react/jsx-runtime");
9065
+ var import_jsx_runtime326 = require("react/jsx-runtime");
9023
9066
  var EmptyState = (props) => {
9024
9067
  const { icon, title = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4", description, action } = props;
9025
- return /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)("div", { className: "lib-xplat-empty-state", children: [
9026
- icon && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "empty-icon", children: icon }),
9027
- !icon && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "empty-icon", children: /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("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" }) }) }),
9028
- /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("p", { className: "empty-title", children: title }),
9029
- description && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("p", { className: "empty-description", children: description }),
9030
- action && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "empty-action", children: action })
9068
+ return /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)("div", { className: "lib-xplat-empty-state", children: [
9069
+ icon && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "empty-icon", children: icon }),
9070
+ !icon && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "empty-icon", children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("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" }) }) }),
9071
+ /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "empty-title", children: title }),
9072
+ description && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "empty-description", children: description }),
9073
+ action && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "empty-action", children: action })
9031
9074
  ] });
9032
9075
  };
9033
9076
  EmptyState.displayName = "EmptyState";
9034
9077
  var EmptyState_default = EmptyState;
9035
9078
 
9036
9079
  // src/components/FileUpload/FileUpload.tsx
9037
- var import_react23 = __toESM(require("react"), 1);
9038
- var import_jsx_runtime326 = require("react/jsx-runtime");
9080
+ var import_react24 = __toESM(require("react"), 1);
9081
+ var import_jsx_runtime327 = require("react/jsx-runtime");
9039
9082
  var FileUpload = (props) => {
9040
9083
  const {
9041
9084
  accept,
@@ -9045,8 +9088,8 @@ var FileUpload = (props) => {
9045
9088
  label = "\uD30C\uC77C\uC744 \uB4DC\uB798\uADF8\uD558\uAC70\uB098 \uD074\uB9AD\uD558\uC5EC \uC5C5\uB85C\uB4DC",
9046
9089
  description
9047
9090
  } = props;
9048
- const [isDragOver, setIsDragOver] = import_react23.default.useState(false);
9049
- const inputRef = import_react23.default.useRef(null);
9091
+ const [isDragOver, setIsDragOver] = import_react24.default.useState(false);
9092
+ const inputRef = import_react24.default.useRef(null);
9050
9093
  const handleFiles = (fileList) => {
9051
9094
  let files = Array.from(fileList);
9052
9095
  if (maxSize) {
@@ -9076,7 +9119,7 @@ var FileUpload = (props) => {
9076
9119
  handleFiles(e.target.files);
9077
9120
  }
9078
9121
  };
9079
- return /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)(
9122
+ return /* @__PURE__ */ (0, import_jsx_runtime327.jsxs)(
9080
9123
  "div",
9081
9124
  {
9082
9125
  className: clsx_default("lib-xplat-file-upload", { "drag-over": isDragOver }),
@@ -9085,7 +9128,7 @@ var FileUpload = (props) => {
9085
9128
  onDragLeave: handleDragLeave,
9086
9129
  onClick: () => inputRef.current?.click(),
9087
9130
  children: [
9088
- /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
9131
+ /* @__PURE__ */ (0, import_jsx_runtime327.jsx)(
9089
9132
  "input",
9090
9133
  {
9091
9134
  ref: inputRef,
@@ -9095,9 +9138,9 @@ var FileUpload = (props) => {
9095
9138
  onChange: handleChange
9096
9139
  }
9097
9140
  ),
9098
- /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "upload-icon", children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(UploadIcon_default, {}) }),
9099
- /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "upload-label", children: label }),
9100
- description && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "upload-description", children: description })
9141
+ /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("div", { className: "upload-icon", children: /* @__PURE__ */ (0, import_jsx_runtime327.jsx)(UploadIcon_default, {}) }),
9142
+ /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("p", { className: "upload-label", children: label }),
9143
+ description && /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("p", { className: "upload-description", children: description })
9101
9144
  ]
9102
9145
  }
9103
9146
  );
@@ -9106,10 +9149,10 @@ FileUpload.displayName = "FileUpload";
9106
9149
  var FileUpload_default = FileUpload;
9107
9150
 
9108
9151
  // src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
9109
- var import_react25 = __toESM(require("react"), 1);
9152
+ var import_react26 = __toESM(require("react"), 1);
9110
9153
 
9111
9154
  // src/components/HtmlTypeWriter/utils.ts
9112
- var import_react24 = __toESM(require("react"), 1);
9155
+ var import_react25 = __toESM(require("react"), 1);
9113
9156
  var voidTags = /* @__PURE__ */ new Set([
9114
9157
  "br",
9115
9158
  "img",
@@ -9177,41 +9220,41 @@ var convertNodeToReactWithRange = (node, typedLen, rangeMap) => {
9177
9220
  props[attr.name] = attr.value;
9178
9221
  });
9179
9222
  if (voidTags.has(tag)) {
9180
- return import_react24.default.createElement(tag, props);
9223
+ return import_react25.default.createElement(tag, props);
9181
9224
  }
9182
9225
  const children = Array.from(element.childNodes).map((child) => convertNodeToReactWithRange(child, typedLen, rangeMap)).filter((n) => n != null);
9183
- return import_react24.default.createElement(tag, props, ...children);
9226
+ return import_react25.default.createElement(tag, props, ...children);
9184
9227
  };
9185
9228
  var htmlToReactProgressive = (root, typedLen, rangeMap) => {
9186
9229
  const nodes = Array.from(root.childNodes).map((child, idx) => {
9187
9230
  const node = convertNodeToReactWithRange(child, typedLen, rangeMap);
9188
- return node == null ? null : import_react24.default.createElement(import_react24.default.Fragment, { key: idx }, node);
9231
+ return node == null ? null : import_react25.default.createElement(import_react25.default.Fragment, { key: idx }, node);
9189
9232
  }).filter(Boolean);
9190
9233
  return nodes.length === 0 ? null : nodes;
9191
9234
  };
9192
9235
 
9193
9236
  // src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
9194
- var import_jsx_runtime327 = require("react/jsx-runtime");
9237
+ var import_jsx_runtime328 = require("react/jsx-runtime");
9195
9238
  var HtmlTypeWriter = ({
9196
9239
  html,
9197
9240
  duration = 20,
9198
9241
  onDone,
9199
9242
  onChange
9200
9243
  }) => {
9201
- const [typedLen, setTypedLen] = import_react25.default.useState(0);
9202
- const doneCalledRef = import_react25.default.useRef(false);
9203
- const { doc, rangeMap, totalLength } = import_react25.default.useMemo(() => {
9244
+ const [typedLen, setTypedLen] = import_react26.default.useState(0);
9245
+ const doneCalledRef = import_react26.default.useRef(false);
9246
+ const { doc, rangeMap, totalLength } = import_react26.default.useMemo(() => {
9204
9247
  if (typeof window === "undefined") return { doc: null, rangeMap: /* @__PURE__ */ new Map(), totalLength: 0 };
9205
9248
  const decoded = decodeHtmlEntities(html);
9206
9249
  const doc2 = new DOMParser().parseFromString(decoded, "text/html");
9207
9250
  const { rangeMap: rangeMap2, totalLength: totalLength2 } = buildRangeMap(doc2.body);
9208
9251
  return { doc: doc2, rangeMap: rangeMap2, totalLength: totalLength2 };
9209
9252
  }, [html]);
9210
- import_react25.default.useEffect(() => {
9253
+ import_react26.default.useEffect(() => {
9211
9254
  setTypedLen(0);
9212
9255
  doneCalledRef.current = false;
9213
9256
  }, [html]);
9214
- import_react25.default.useEffect(() => {
9257
+ import_react26.default.useEffect(() => {
9215
9258
  if (!totalLength) return;
9216
9259
  if (typedLen >= totalLength) return;
9217
9260
  const timer = window.setInterval(() => {
@@ -9219,33 +9262,33 @@ var HtmlTypeWriter = ({
9219
9262
  }, duration);
9220
9263
  return () => window.clearInterval(timer);
9221
9264
  }, [typedLen, totalLength, duration]);
9222
- import_react25.default.useEffect(() => {
9265
+ import_react26.default.useEffect(() => {
9223
9266
  if (typedLen > 0 && typedLen < totalLength) {
9224
9267
  onChange?.();
9225
9268
  }
9226
9269
  }, [typedLen, totalLength, onChange]);
9227
- import_react25.default.useEffect(() => {
9270
+ import_react26.default.useEffect(() => {
9228
9271
  if (typedLen === totalLength && totalLength > 0 && !doneCalledRef.current) {
9229
9272
  doneCalledRef.current = true;
9230
9273
  onDone?.();
9231
9274
  }
9232
9275
  }, [typedLen, totalLength, onDone]);
9233
- const parsed = import_react25.default.useMemo(
9276
+ const parsed = import_react26.default.useMemo(
9234
9277
  () => doc ? htmlToReactProgressive(doc.body, typedLen, rangeMap) : null,
9235
9278
  [doc, typedLen, rangeMap]
9236
9279
  );
9237
- return /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
9280
+ return /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
9238
9281
  };
9239
9282
  HtmlTypeWriter.displayName = "HtmlTypeWriter";
9240
9283
  var HtmlTypeWriter_default = HtmlTypeWriter;
9241
9284
 
9242
9285
  // src/components/ImageSelector/ImageSelector.tsx
9243
- var import_react26 = __toESM(require("react"), 1);
9244
- var import_jsx_runtime328 = require("react/jsx-runtime");
9286
+ var import_react27 = __toESM(require("react"), 1);
9287
+ var import_jsx_runtime329 = require("react/jsx-runtime");
9245
9288
  var ImageSelector = (props) => {
9246
9289
  const { value, label, onChange } = props;
9247
- const [previewUrl, setPreviewUrl] = import_react26.default.useState();
9248
- import_react26.default.useEffect(() => {
9290
+ const [previewUrl, setPreviewUrl] = import_react27.default.useState();
9291
+ import_react27.default.useEffect(() => {
9249
9292
  if (!value) {
9250
9293
  setPreviewUrl(void 0);
9251
9294
  return;
@@ -9254,7 +9297,7 @@ var ImageSelector = (props) => {
9254
9297
  setPreviewUrl(url);
9255
9298
  return () => URL.revokeObjectURL(url);
9256
9299
  }, [value]);
9257
- const inputRef = import_react26.default.useRef(null);
9300
+ const inputRef = import_react27.default.useRef(null);
9258
9301
  const handleFileChange = (e) => {
9259
9302
  const selectedFile = e.target.files?.[0];
9260
9303
  if (selectedFile) {
@@ -9267,8 +9310,8 @@ var ImageSelector = (props) => {
9267
9310
  const handleOpenFileDialog = () => {
9268
9311
  inputRef.current?.click();
9269
9312
  };
9270
- return /* @__PURE__ */ (0, import_jsx_runtime328.jsxs)("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
9271
- /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(
9313
+ return /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
9314
+ /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
9272
9315
  "input",
9273
9316
  {
9274
9317
  type: "file",
@@ -9278,13 +9321,13 @@ var ImageSelector = (props) => {
9278
9321
  ref: inputRef
9279
9322
  }
9280
9323
  ),
9281
- value && /* @__PURE__ */ (0, import_jsx_runtime328.jsxs)("div", { className: "action-bar", children: [
9282
- /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(UploadIcon_default, {}) }),
9283
- /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(DeleteIcon_default, {}) })
9324
+ value && /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: "action-bar", children: [
9325
+ /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(UploadIcon_default, {}) }),
9326
+ /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(DeleteIcon_default, {}) })
9284
9327
  ] }),
9285
- /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "content", children: previewUrl ? /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ (0, import_jsx_runtime328.jsxs)("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
9286
- /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "icon-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(ImageIcon_default, {}) }),
9287
- /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
9328
+ /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "content", children: previewUrl ? /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
9329
+ /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "icon-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(ImageIcon_default, {}) }),
9330
+ /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
9288
9331
  ] }) })
9289
9332
  ] });
9290
9333
  };
@@ -9292,7 +9335,7 @@ ImageSelector.displayName = "ImageSelector";
9292
9335
  var ImageSelector_default = ImageSelector;
9293
9336
 
9294
9337
  // src/components/Pagination/Pagination.tsx
9295
- var import_jsx_runtime329 = require("react/jsx-runtime");
9338
+ var import_jsx_runtime330 = require("react/jsx-runtime");
9296
9339
  var getPageRange = (current, totalPages, siblingCount) => {
9297
9340
  const totalNumbers = siblingCount * 2 + 5;
9298
9341
  if (totalPages <= totalNumbers) {
@@ -9335,19 +9378,19 @@ var Pagination = (props) => {
9335
9378
  onChange?.(page);
9336
9379
  }
9337
9380
  };
9338
- return /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("nav", { className: clsx_default("lib-xplat-pagination", size, type), "aria-label": "\uD398\uC774\uC9C0 \uB124\uBE44\uAC8C\uC774\uC158", children: [
9339
- /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
9381
+ return /* @__PURE__ */ (0, import_jsx_runtime330.jsxs)("nav", { className: clsx_default("lib-xplat-pagination", size, type), "aria-label": "\uD398\uC774\uC9C0 \uB124\uBE44\uAC8C\uC774\uC158", children: [
9382
+ /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(
9340
9383
  "button",
9341
9384
  {
9342
9385
  className: "page-btn prev",
9343
9386
  disabled: current <= 1,
9344
9387
  onClick: () => handleClick(current - 1),
9345
9388
  "aria-label": "\uC774\uC804 \uD398\uC774\uC9C0",
9346
- children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(ChevronLeftIcon_default, {})
9389
+ children: /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(ChevronLeftIcon_default, {})
9347
9390
  }
9348
9391
  ),
9349
9392
  pages.map(
9350
- (page, i) => page === "..." ? /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
9393
+ (page, i) => page === "..." ? /* @__PURE__ */ (0, import_jsx_runtime330.jsx)("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(
9351
9394
  "button",
9352
9395
  {
9353
9396
  className: clsx_default("page-btn", { active: page === current }),
@@ -9358,14 +9401,14 @@ var Pagination = (props) => {
9358
9401
  page
9359
9402
  )
9360
9403
  ),
9361
- /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
9404
+ /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(
9362
9405
  "button",
9363
9406
  {
9364
9407
  className: "page-btn next",
9365
9408
  disabled: current >= totalPages,
9366
9409
  onClick: () => handleClick(current + 1),
9367
9410
  "aria-label": "\uB2E4\uC74C \uD398\uC774\uC9C0",
9368
- children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(ChevronRightIcon_default, {})
9411
+ children: /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(ChevronRightIcon_default, {})
9369
9412
  }
9370
9413
  )
9371
9414
  ] });
@@ -9374,17 +9417,17 @@ Pagination.displayName = "Pagination";
9374
9417
  var Pagination_default = Pagination;
9375
9418
 
9376
9419
  // src/components/PopOver/PopOver.tsx
9377
- var import_react27 = __toESM(require("react"), 1);
9378
- var import_jsx_runtime330 = require("react/jsx-runtime");
9420
+ var import_react28 = __toESM(require("react"), 1);
9421
+ var import_jsx_runtime331 = require("react/jsx-runtime");
9379
9422
  var PopOver = (props) => {
9380
9423
  const { children, isOpen, onClose, PopOverEl } = props;
9381
- const popRef = import_react27.default.useRef(null);
9382
- const triggerRef = import_react27.default.useRef(null);
9383
- const [localOpen, setLocalOpen] = import_react27.default.useState(false);
9384
- const [eventTrigger, setEventTrigger] = import_react27.default.useState(false);
9424
+ const popRef = import_react28.default.useRef(null);
9425
+ const triggerRef = import_react28.default.useRef(null);
9426
+ const [localOpen, setLocalOpen] = import_react28.default.useState(false);
9427
+ const [eventTrigger, setEventTrigger] = import_react28.default.useState(false);
9385
9428
  useClickOutside_default([popRef, triggerRef], onClose, isOpen);
9386
9429
  const position = useAutoPosition_default(triggerRef, popRef, localOpen);
9387
- import_react27.default.useEffect(() => {
9430
+ import_react28.default.useEffect(() => {
9388
9431
  if (isOpen) {
9389
9432
  setLocalOpen(isOpen);
9390
9433
  setTimeout(() => {
@@ -9397,7 +9440,7 @@ var PopOver = (props) => {
9397
9440
  }, 200);
9398
9441
  }
9399
9442
  }, [isOpen]);
9400
- return /* @__PURE__ */ (0, import_jsx_runtime330.jsxs)(
9443
+ return /* @__PURE__ */ (0, import_jsx_runtime331.jsxs)(
9401
9444
  "div",
9402
9445
  {
9403
9446
  className: "lib-xplat-pop-over",
@@ -9407,7 +9450,7 @@ var PopOver = (props) => {
9407
9450
  },
9408
9451
  children: [
9409
9452
  children,
9410
- localOpen && /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(
9453
+ localOpen && /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(
9411
9454
  "div",
9412
9455
  {
9413
9456
  className: clsx_default(
@@ -9430,7 +9473,7 @@ PopOver.displayName = "PopOver";
9430
9473
  var PopOver_default = PopOver;
9431
9474
 
9432
9475
  // src/components/Progress/Progress.tsx
9433
- var import_jsx_runtime331 = require("react/jsx-runtime");
9476
+ var import_jsx_runtime332 = require("react/jsx-runtime");
9434
9477
  var Progress = (props) => {
9435
9478
  const {
9436
9479
  value,
@@ -9440,8 +9483,8 @@ var Progress = (props) => {
9440
9483
  showLabel = false
9441
9484
  } = props;
9442
9485
  const percentage = Math.min(100, Math.max(0, value / max * 100));
9443
- return /* @__PURE__ */ (0, import_jsx_runtime331.jsxs)("div", { className: clsx_default("lib-xplat-progress", size, type), children: [
9444
- /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(
9486
+ return /* @__PURE__ */ (0, import_jsx_runtime332.jsxs)("div", { className: clsx_default("lib-xplat-progress", size, type), children: [
9487
+ /* @__PURE__ */ (0, import_jsx_runtime332.jsx)(
9445
9488
  "div",
9446
9489
  {
9447
9490
  className: "track",
@@ -9449,7 +9492,7 @@ var Progress = (props) => {
9449
9492
  "aria-valuenow": value,
9450
9493
  "aria-valuemin": 0,
9451
9494
  "aria-valuemax": max,
9452
- children: /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(
9495
+ children: /* @__PURE__ */ (0, import_jsx_runtime332.jsx)(
9453
9496
  "div",
9454
9497
  {
9455
9498
  className: "bar",
@@ -9458,7 +9501,7 @@ var Progress = (props) => {
9458
9501
  )
9459
9502
  }
9460
9503
  ),
9461
- showLabel && /* @__PURE__ */ (0, import_jsx_runtime331.jsxs)("span", { className: "label", children: [
9504
+ showLabel && /* @__PURE__ */ (0, import_jsx_runtime332.jsxs)("span", { className: "label", children: [
9462
9505
  Math.round(percentage),
9463
9506
  "%"
9464
9507
  ] })
@@ -9468,17 +9511,17 @@ Progress.displayName = "Progress";
9468
9511
  var Progress_default = Progress;
9469
9512
 
9470
9513
  // src/components/Radio/RadioGroupContext.tsx
9471
- var import_react28 = __toESM(require("react"), 1);
9472
- var RadioGroupContext = import_react28.default.createContext(
9514
+ var import_react29 = __toESM(require("react"), 1);
9515
+ var RadioGroupContext = import_react29.default.createContext(
9473
9516
  null
9474
9517
  );
9475
9518
  var useRadioGroupContext = () => {
9476
- return import_react28.default.useContext(RadioGroupContext);
9519
+ return import_react29.default.useContext(RadioGroupContext);
9477
9520
  };
9478
9521
  var RadioGroupContext_default = RadioGroupContext;
9479
9522
 
9480
9523
  // src/components/Radio/Radio.tsx
9481
- var import_jsx_runtime332 = require("react/jsx-runtime");
9524
+ var import_jsx_runtime333 = require("react/jsx-runtime");
9482
9525
  var Radio = (props) => {
9483
9526
  const {
9484
9527
  label,
@@ -9497,7 +9540,7 @@ var Radio = (props) => {
9497
9540
  value,
9498
9541
  onChange: rest.onChange
9499
9542
  };
9500
- return /* @__PURE__ */ (0, import_jsx_runtime332.jsxs)(
9543
+ return /* @__PURE__ */ (0, import_jsx_runtime333.jsxs)(
9501
9544
  "label",
9502
9545
  {
9503
9546
  className: clsx_default(
@@ -9508,18 +9551,18 @@ var Radio = (props) => {
9508
9551
  className
9509
9552
  ),
9510
9553
  children: [
9511
- /* @__PURE__ */ (0, import_jsx_runtime332.jsx)("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
9512
- /* @__PURE__ */ (0, import_jsx_runtime332.jsx)(
9554
+ /* @__PURE__ */ (0, import_jsx_runtime333.jsx)("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
9555
+ /* @__PURE__ */ (0, import_jsx_runtime333.jsx)(
9513
9556
  "div",
9514
9557
  {
9515
9558
  className: clsx_default(
9516
9559
  "circle",
9517
9560
  localChecked ? "checked" : void 0
9518
9561
  ),
9519
- children: localChecked && /* @__PURE__ */ (0, import_jsx_runtime332.jsx)("div", { className: "inner-circle" })
9562
+ children: localChecked && /* @__PURE__ */ (0, import_jsx_runtime333.jsx)("div", { className: "inner-circle" })
9520
9563
  }
9521
9564
  ),
9522
- label && /* @__PURE__ */ (0, import_jsx_runtime332.jsx)("span", { children: label })
9565
+ label && /* @__PURE__ */ (0, import_jsx_runtime333.jsx)("span", { children: label })
9523
9566
  ]
9524
9567
  }
9525
9568
  );
@@ -9528,28 +9571,28 @@ Radio.displayName = "Radio";
9528
9571
  var Radio_default = Radio;
9529
9572
 
9530
9573
  // src/components/Radio/RadioGroup.tsx
9531
- var import_jsx_runtime333 = require("react/jsx-runtime");
9574
+ var import_jsx_runtime334 = require("react/jsx-runtime");
9532
9575
  var RadioGroup = (props) => {
9533
9576
  const { children, ...rest } = props;
9534
- return /* @__PURE__ */ (0, import_jsx_runtime333.jsx)(import_jsx_runtime333.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime333.jsx)(RadioGroupContext_default.Provider, { value: rest, children }) });
9577
+ return /* @__PURE__ */ (0, import_jsx_runtime334.jsx)(import_jsx_runtime334.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime334.jsx)(RadioGroupContext_default.Provider, { value: rest, children }) });
9535
9578
  };
9536
9579
  RadioGroup.displayName = "RadioGroup";
9537
9580
  var RadioGroup_default = RadioGroup;
9538
9581
 
9539
9582
  // src/components/Select/Select.tsx
9540
- var import_react31 = __toESM(require("react"), 1);
9583
+ var import_react32 = __toESM(require("react"), 1);
9541
9584
 
9542
9585
  // src/components/Select/context.ts
9543
- var import_react29 = __toESM(require("react"), 1);
9544
- var SelectContext = import_react29.default.createContext(null);
9586
+ var import_react30 = __toESM(require("react"), 1);
9587
+ var SelectContext = import_react30.default.createContext(null);
9545
9588
  var context_default = SelectContext;
9546
9589
 
9547
9590
  // src/components/Select/SelectItem.tsx
9548
- var import_react30 = __toESM(require("react"), 1);
9549
- var import_jsx_runtime334 = require("react/jsx-runtime");
9591
+ var import_react31 = __toESM(require("react"), 1);
9592
+ var import_jsx_runtime335 = require("react/jsx-runtime");
9550
9593
  var SelectItem = (props) => {
9551
9594
  const { children, value, onClick, disabled = false } = props;
9552
- const ctx = import_react30.default.useContext(context_default);
9595
+ const ctx = import_react31.default.useContext(context_default);
9553
9596
  const handleClick = (e) => {
9554
9597
  e.preventDefault();
9555
9598
  e.stopPropagation();
@@ -9559,7 +9602,7 @@ var SelectItem = (props) => {
9559
9602
  onClick?.();
9560
9603
  };
9561
9604
  const isSelected = value !== void 0 ? ctx?.selectedValue === value : ctx?.selectedLabel === children;
9562
- return /* @__PURE__ */ (0, import_jsx_runtime334.jsx)(
9605
+ return /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(
9563
9606
  "div",
9564
9607
  {
9565
9608
  className: clsx_default("select-item", disabled && "disabled", isSelected && "is-selected"),
@@ -9580,7 +9623,7 @@ SelectItem.displayName = "Select.Item";
9580
9623
  var SelectItem_default = SelectItem;
9581
9624
 
9582
9625
  // src/components/Select/Select.tsx
9583
- var import_jsx_runtime335 = require("react/jsx-runtime");
9626
+ var import_jsx_runtime336 = require("react/jsx-runtime");
9584
9627
  var ANIMATION_DURATION_MS3 = 200;
9585
9628
  var SelectRoot = (props) => {
9586
9629
  const {
@@ -9592,28 +9635,28 @@ var SelectRoot = (props) => {
9592
9635
  error = false,
9593
9636
  size = "md"
9594
9637
  } = props;
9595
- const itemChildren = import_react31.default.Children.toArray(children).filter(
9596
- (child) => import_react31.default.isValidElement(child) && child.type === SelectItem_default
9638
+ const itemChildren = import_react32.default.Children.toArray(children).filter(
9639
+ (child) => import_react32.default.isValidElement(child) && child.type === SelectItem_default
9597
9640
  );
9598
9641
  const isControlled = valueProp !== void 0;
9599
- const [isOpen, setOpen] = import_react31.default.useState(false);
9600
- const [uncontrolledLabel, setUncontrolledLabel] = import_react31.default.useState(null);
9601
- const [uncontrolledValue, setUncontrolledValue] = import_react31.default.useState(void 0);
9602
- const controlledLabel = import_react31.default.useMemo(() => {
9642
+ const [isOpen, setOpen] = import_react32.default.useState(false);
9643
+ const [uncontrolledLabel, setUncontrolledLabel] = import_react32.default.useState(null);
9644
+ const [uncontrolledValue, setUncontrolledValue] = import_react32.default.useState(void 0);
9645
+ const controlledLabel = import_react32.default.useMemo(() => {
9603
9646
  if (!isControlled) return null;
9604
9647
  const match = itemChildren.find((child) => child.props.value === valueProp);
9605
9648
  return match ? match.props.children : null;
9606
9649
  }, [isControlled, valueProp, itemChildren]);
9607
9650
  const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
9608
9651
  const selectedValue = isControlled ? valueProp : uncontrolledValue;
9609
- const triggerRef = import_react31.default.useRef(null);
9610
- const contentRef = import_react31.default.useRef(null);
9611
- const [mounted, setMounted] = import_react31.default.useState(false);
9612
- const [visible, setVisible] = import_react31.default.useState(false);
9613
- import_react31.default.useEffect(() => {
9652
+ const triggerRef = import_react32.default.useRef(null);
9653
+ const contentRef = import_react32.default.useRef(null);
9654
+ const [mounted, setMounted] = import_react32.default.useState(false);
9655
+ const [visible, setVisible] = import_react32.default.useState(false);
9656
+ import_react32.default.useEffect(() => {
9614
9657
  if (disabled && isOpen) setOpen(false);
9615
9658
  }, [disabled, isOpen]);
9616
- import_react31.default.useEffect(() => {
9659
+ import_react32.default.useEffect(() => {
9617
9660
  if (isOpen) {
9618
9661
  setMounted(true);
9619
9662
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -9623,12 +9666,12 @@ var SelectRoot = (props) => {
9623
9666
  const t = setTimeout(() => setMounted(false), ANIMATION_DURATION_MS3);
9624
9667
  return () => clearTimeout(t);
9625
9668
  }, [isOpen]);
9626
- const open = import_react31.default.useCallback(() => setOpen(true), []);
9627
- const close = import_react31.default.useCallback(() => setOpen(false), []);
9628
- const toggle = import_react31.default.useCallback(() => setOpen((prev) => !prev), []);
9669
+ const open = import_react32.default.useCallback(() => setOpen(true), []);
9670
+ const close = import_react32.default.useCallback(() => setOpen(false), []);
9671
+ const toggle = import_react32.default.useCallback(() => setOpen((prev) => !prev), []);
9629
9672
  useClickOutside_default([contentRef, triggerRef], close, isOpen);
9630
9673
  const position = useAutoPosition_default(triggerRef, contentRef, mounted);
9631
- const setSelected = import_react31.default.useCallback(
9674
+ const setSelected = import_react32.default.useCallback(
9632
9675
  (label, itemValue) => {
9633
9676
  if (!isControlled) {
9634
9677
  setUncontrolledLabel(label);
@@ -9638,7 +9681,7 @@ var SelectRoot = (props) => {
9638
9681
  },
9639
9682
  [isControlled, onChange]
9640
9683
  );
9641
- const ctxValue = import_react31.default.useMemo(
9684
+ const ctxValue = import_react32.default.useMemo(
9642
9685
  () => ({
9643
9686
  isOpen,
9644
9687
  mounted,
@@ -9660,7 +9703,7 @@ var SelectRoot = (props) => {
9660
9703
  if (disabled) return;
9661
9704
  toggle();
9662
9705
  };
9663
- return /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ (0, import_jsx_runtime335.jsxs)(
9706
+ return /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ (0, import_jsx_runtime336.jsxs)(
9664
9707
  "div",
9665
9708
  {
9666
9709
  className: clsx_default(
@@ -9671,7 +9714,7 @@ var SelectRoot = (props) => {
9671
9714
  mounted && "is-open"
9672
9715
  ),
9673
9716
  children: [
9674
- /* @__PURE__ */ (0, import_jsx_runtime335.jsxs)(
9717
+ /* @__PURE__ */ (0, import_jsx_runtime336.jsxs)(
9675
9718
  "div",
9676
9719
  {
9677
9720
  ref: triggerRef,
@@ -9695,7 +9738,7 @@ var SelectRoot = (props) => {
9695
9738
  }
9696
9739
  },
9697
9740
  children: [
9698
- /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(
9741
+ /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(
9699
9742
  "span",
9700
9743
  {
9701
9744
  className: clsx_default(
@@ -9705,25 +9748,25 @@ var SelectRoot = (props) => {
9705
9748
  children: selectedLabel ?? placeholder
9706
9749
  }
9707
9750
  ),
9708
- /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(
9751
+ /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(
9709
9752
  "span",
9710
9753
  {
9711
9754
  className: clsx_default("select-trigger-icon", isOpen && "open"),
9712
9755
  "aria-hidden": true,
9713
- children: /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(ChevronDownIcon_default, {})
9756
+ children: /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(ChevronDownIcon_default, {})
9714
9757
  }
9715
9758
  )
9716
9759
  ]
9717
9760
  }
9718
9761
  ),
9719
- mounted && /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(
9762
+ mounted && /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(
9720
9763
  "div",
9721
9764
  {
9722
9765
  className: clsx_default("lib-xplat-select-content", size, position.direction, stateClass),
9723
9766
  ref: contentRef,
9724
9767
  style: { ...position.position, width: triggerRef.current?.offsetWidth },
9725
9768
  role: "listbox",
9726
- children: /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(context_default.Provider, { value: ctxValue, children: itemChildren })
9769
+ children: /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(context_default.Provider, { value: ctxValue, children: itemChildren })
9727
9770
  }
9728
9771
  ) })
9729
9772
  ]
@@ -9737,7 +9780,7 @@ var Select = Object.assign(SelectRoot, {
9737
9780
  var Select_default = Select;
9738
9781
 
9739
9782
  // src/components/Skeleton/Skeleton.tsx
9740
- var import_jsx_runtime336 = require("react/jsx-runtime");
9783
+ var import_jsx_runtime337 = require("react/jsx-runtime");
9741
9784
  var SIZE_MAP = {
9742
9785
  xs: "var(--spacing-size-1)",
9743
9786
  sm: "var(--spacing-size-2)",
@@ -9753,7 +9796,7 @@ var Skeleton = (props) => {
9753
9796
  ...width != null && { width: SIZE_MAP[width] },
9754
9797
  ...height != null && { height: SIZE_MAP[height] }
9755
9798
  };
9756
- return /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(
9799
+ return /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
9757
9800
  "div",
9758
9801
  {
9759
9802
  className: clsx_default("lib-xplat-skeleton", variant),
@@ -9766,20 +9809,20 @@ Skeleton.displayName = "Skeleton";
9766
9809
  var Skeleton_default = Skeleton;
9767
9810
 
9768
9811
  // src/components/Spinner/Spinner.tsx
9769
- var import_jsx_runtime337 = require("react/jsx-runtime");
9812
+ var import_jsx_runtime338 = require("react/jsx-runtime");
9770
9813
  var Spinner = (props) => {
9771
9814
  const {
9772
9815
  size = "md",
9773
9816
  type = "brand"
9774
9817
  } = props;
9775
- return /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
9818
+ return /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
9776
9819
  "div",
9777
9820
  {
9778
9821
  className: clsx_default("lib-xplat-spinner", size, type),
9779
9822
  role: "status",
9780
9823
  "aria-label": "\uB85C\uB529 \uC911",
9781
- children: /* @__PURE__ */ (0, import_jsx_runtime337.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
9782
- /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
9824
+ children: /* @__PURE__ */ (0, import_jsx_runtime338.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
9825
+ /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
9783
9826
  "circle",
9784
9827
  {
9785
9828
  className: "track",
@@ -9789,7 +9832,7 @@ var Spinner = (props) => {
9789
9832
  strokeWidth: "3"
9790
9833
  }
9791
9834
  ),
9792
- /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
9835
+ /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
9793
9836
  "circle",
9794
9837
  {
9795
9838
  className: "indicator",
@@ -9808,20 +9851,20 @@ Spinner.displayName = "Spinner";
9808
9851
  var Spinner_default = Spinner;
9809
9852
 
9810
9853
  // src/components/Steps/Steps.tsx
9811
- var import_jsx_runtime338 = require("react/jsx-runtime");
9854
+ var import_jsx_runtime339 = require("react/jsx-runtime");
9812
9855
  var Steps = (props) => {
9813
9856
  const {
9814
9857
  items,
9815
9858
  current,
9816
9859
  type = "brand"
9817
9860
  } = props;
9818
- return /* @__PURE__ */ (0, import_jsx_runtime338.jsx)("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
9861
+ return /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
9819
9862
  const status = index < current ? "completed" : index === current ? "active" : "pending";
9820
- return /* @__PURE__ */ (0, import_jsx_runtime338.jsxs)("div", { className: clsx_default("step-item", status), children: [
9821
- /* @__PURE__ */ (0, import_jsx_runtime338.jsx)("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(CheckIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime338.jsx)("span", { children: index + 1 }) }),
9822
- /* @__PURE__ */ (0, import_jsx_runtime338.jsxs)("div", { className: "step-content", children: [
9823
- /* @__PURE__ */ (0, import_jsx_runtime338.jsx)("span", { className: "step-title", children: item.title }),
9824
- item.description && /* @__PURE__ */ (0, import_jsx_runtime338.jsx)("span", { className: "step-description", children: item.description })
9863
+ return /* @__PURE__ */ (0, import_jsx_runtime339.jsxs)("div", { className: clsx_default("step-item", status), children: [
9864
+ /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(CheckIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("span", { children: index + 1 }) }),
9865
+ /* @__PURE__ */ (0, import_jsx_runtime339.jsxs)("div", { className: "step-content", children: [
9866
+ /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("span", { className: "step-title", children: item.title }),
9867
+ item.description && /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("span", { className: "step-description", children: item.description })
9825
9868
  ] })
9826
9869
  ] }, index);
9827
9870
  }) });
@@ -9830,8 +9873,8 @@ Steps.displayName = "Steps";
9830
9873
  var Steps_default = Steps;
9831
9874
 
9832
9875
  // src/components/Swiper/Swiper.tsx
9833
- var import_react32 = __toESM(require("react"), 1);
9834
- var import_jsx_runtime339 = require("react/jsx-runtime");
9876
+ var import_react33 = __toESM(require("react"), 1);
9877
+ var import_jsx_runtime340 = require("react/jsx-runtime");
9835
9878
  var Swiper = (props) => {
9836
9879
  const {
9837
9880
  auto = false,
@@ -9855,26 +9898,26 @@ var Swiper = (props) => {
9855
9898
  const maxIndex = Math.max(0, totalSlides - viewItemCount);
9856
9899
  const useLoop = loop && canSlide;
9857
9900
  const cloneCount = useLoop ? totalSlides : 0;
9858
- const extendedItems = import_react32.default.useMemo(() => {
9901
+ const extendedItems = import_react33.default.useMemo(() => {
9859
9902
  if (!useLoop) return items;
9860
9903
  return [...items, ...items, ...items];
9861
9904
  }, [items, useLoop]);
9862
9905
  const initialIdx = Math.max(0, Math.min(indexProp ?? 0, maxIndex));
9863
- const [innerIndex, setInnerIndex] = import_react32.default.useState(
9906
+ const [innerIndex, setInnerIndex] = import_react33.default.useState(
9864
9907
  useLoop ? cloneCount + initialIdx : initialIdx
9865
9908
  );
9866
- const [isDragging, setIsDragging] = import_react32.default.useState(false);
9867
- const [dragOffset, setDragOffset] = import_react32.default.useState(0);
9868
- const [animated, setAnimated] = import_react32.default.useState(false);
9869
- const [containerWidth, setContainerWidth] = import_react32.default.useState(0);
9870
- const containerRef = import_react32.default.useRef(null);
9871
- const startXRef = import_react32.default.useRef(0);
9872
- const startTimeRef = import_react32.default.useRef(0);
9873
- const autoplayTimerRef = import_react32.default.useRef(null);
9874
- const resumeTimeoutRef = import_react32.default.useRef(null);
9875
- const [paused, setPaused] = import_react32.default.useState(false);
9876
- const initializedRef = import_react32.default.useRef(false);
9877
- import_react32.default.useEffect(() => {
9909
+ const [isDragging, setIsDragging] = import_react33.default.useState(false);
9910
+ const [dragOffset, setDragOffset] = import_react33.default.useState(0);
9911
+ const [animated, setAnimated] = import_react33.default.useState(false);
9912
+ const [containerWidth, setContainerWidth] = import_react33.default.useState(0);
9913
+ const containerRef = import_react33.default.useRef(null);
9914
+ const startXRef = import_react33.default.useRef(0);
9915
+ const startTimeRef = import_react33.default.useRef(0);
9916
+ const autoplayTimerRef = import_react33.default.useRef(null);
9917
+ const resumeTimeoutRef = import_react33.default.useRef(null);
9918
+ const [paused, setPaused] = import_react33.default.useState(false);
9919
+ const initializedRef = import_react33.default.useRef(false);
9920
+ import_react33.default.useEffect(() => {
9878
9921
  const el = containerRef.current;
9879
9922
  if (!el) return;
9880
9923
  const ro = new ResizeObserver((entries) => {
@@ -9897,7 +9940,7 @@ var Swiper = (props) => {
9897
9940
  return ((inner - cloneCount) % totalSlides + totalSlides) % totalSlides;
9898
9941
  };
9899
9942
  const realIndex = getRealIndex(innerIndex);
9900
- const moveToInner = import_react32.default.useCallback(
9943
+ const moveToInner = import_react33.default.useCallback(
9901
9944
  (idx, withAnim = true) => {
9902
9945
  if (!useLoop) {
9903
9946
  setAnimated(withAnim);
@@ -9925,7 +9968,7 @@ var Swiper = (props) => {
9925
9968
  },
9926
9969
  [useLoop, cloneCount, totalSlides]
9927
9970
  );
9928
- const handleTransitionEnd = import_react32.default.useCallback(() => {
9971
+ const handleTransitionEnd = import_react33.default.useCallback(() => {
9929
9972
  if (!useLoop) return;
9930
9973
  const real = getRealIndex(innerIndex);
9931
9974
  const canonical = cloneCount + real;
@@ -9935,7 +9978,7 @@ var Swiper = (props) => {
9935
9978
  }
9936
9979
  onChange?.(Math.min(real, maxIndex));
9937
9980
  }, [useLoop, innerIndex, cloneCount, totalSlides, maxIndex, onChange]);
9938
- const slideTo = import_react32.default.useCallback(
9981
+ const slideTo = import_react33.default.useCallback(
9939
9982
  (logicalIndex) => {
9940
9983
  if (!canSlide) return;
9941
9984
  const clamped = useLoop ? logicalIndex : Math.max(0, Math.min(logicalIndex, maxIndex));
@@ -9945,7 +9988,7 @@ var Swiper = (props) => {
9945
9988
  },
9946
9989
  [canSlide, useLoop, cloneCount, maxIndex, onChange, moveToInner]
9947
9990
  );
9948
- const slideNext = import_react32.default.useCallback(() => {
9991
+ const slideNext = import_react33.default.useCallback(() => {
9949
9992
  if (!canSlide) return;
9950
9993
  const nextInner = innerIndex + slideBy;
9951
9994
  if (useLoop) {
@@ -9954,7 +9997,7 @@ var Swiper = (props) => {
9954
9997
  moveToInner(Math.min(nextInner, maxIndex), true);
9955
9998
  }
9956
9999
  }, [canSlide, useLoop, innerIndex, slideBy, maxIndex, moveToInner]);
9957
- const slidePrev = import_react32.default.useCallback(() => {
10000
+ const slidePrev = import_react33.default.useCallback(() => {
9958
10001
  if (!canSlide) return;
9959
10002
  const prevInner = innerIndex - slideBy;
9960
10003
  if (useLoop) {
@@ -9963,7 +10006,7 @@ var Swiper = (props) => {
9963
10006
  moveToInner(Math.max(prevInner, 0), true);
9964
10007
  }
9965
10008
  }, [canSlide, useLoop, innerIndex, slideBy, moveToInner]);
9966
- import_react32.default.useEffect(() => {
10009
+ import_react33.default.useEffect(() => {
9967
10010
  if (indexProp === void 0) return;
9968
10011
  const clamped = Math.max(0, Math.min(indexProp, maxIndex));
9969
10012
  const target = useLoop ? cloneCount + clamped : clamped;
@@ -9971,12 +10014,12 @@ var Swiper = (props) => {
9971
10014
  moveToInner(target, true);
9972
10015
  }
9973
10016
  }, [indexProp]);
9974
- import_react32.default.useImperativeHandle(swiperRef, () => ({
10017
+ import_react33.default.useImperativeHandle(swiperRef, () => ({
9975
10018
  slidePrev,
9976
10019
  slideNext,
9977
10020
  slideTo
9978
10021
  }));
9979
- import_react32.default.useEffect(() => {
10022
+ import_react33.default.useEffect(() => {
9980
10023
  if (!auto || !canSlide || paused) return;
9981
10024
  autoplayTimerRef.current = setInterval(slideNext, autoplayDelay);
9982
10025
  return () => {
@@ -10002,7 +10045,7 @@ var Swiper = (props) => {
10002
10045
  resumeTimeoutRef.current = null;
10003
10046
  }, pauseOnInteraction);
10004
10047
  };
10005
- import_react32.default.useEffect(() => {
10048
+ import_react33.default.useEffect(() => {
10006
10049
  return () => {
10007
10050
  if (resumeTimeoutRef.current) clearTimeout(resumeTimeoutRef.current);
10008
10051
  };
@@ -10020,7 +10063,7 @@ var Swiper = (props) => {
10020
10063
  startXRef.current = getClientX(e);
10021
10064
  startTimeRef.current = Date.now();
10022
10065
  };
10023
- import_react32.default.useEffect(() => {
10066
+ import_react33.default.useEffect(() => {
10024
10067
  if (!isDragging) return;
10025
10068
  const handleMove = (e) => {
10026
10069
  setDragOffset(getClientX(e) - startXRef.current);
@@ -10059,8 +10102,8 @@ var Swiper = (props) => {
10059
10102
  }, [isDragging, dragOffset, innerIndex, useLoop, maxIndex, slideStep, moveToInner]);
10060
10103
  const slideWidthPercent = 100 / viewItemCount;
10061
10104
  const gapAdjust = spaceBetween * (viewItemCount - 1) / viewItemCount;
10062
- const slideElements = import_react32.default.useMemo(
10063
- () => extendedItems.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
10105
+ const slideElements = import_react33.default.useMemo(
10106
+ () => extendedItems.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
10064
10107
  "div",
10065
10108
  {
10066
10109
  className: "lib-xplat-swiper__slide",
@@ -10079,15 +10122,15 @@ var Swiper = (props) => {
10079
10122
  Math.floor(realIndex / slideBy),
10080
10123
  totalSteps - 1
10081
10124
  );
10082
- return /* @__PURE__ */ (0, import_jsx_runtime339.jsxs)("div", { className: "lib-xplat-swiper", ref: containerRef, children: [
10083
- /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
10125
+ return /* @__PURE__ */ (0, import_jsx_runtime340.jsxs)("div", { className: "lib-xplat-swiper", ref: containerRef, children: [
10126
+ /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
10084
10127
  "div",
10085
10128
  {
10086
10129
  className: "lib-xplat-swiper__viewport",
10087
10130
  onMouseDown: handleDragStart,
10088
10131
  onTouchStart: handleDragStart,
10089
10132
  onDragStart: (e) => e.preventDefault(),
10090
- children: /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
10133
+ children: /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
10091
10134
  "div",
10092
10135
  {
10093
10136
  className: clsx_default(
@@ -10105,7 +10148,7 @@ var Swiper = (props) => {
10105
10148
  )
10106
10149
  }
10107
10150
  ),
10108
- showProgress && canSlide && /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
10151
+ showProgress && canSlide && /* @__PURE__ */ (0, import_jsx_runtime340.jsx)("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ (0, import_jsx_runtime340.jsx)("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
10109
10152
  "span",
10110
10153
  {
10111
10154
  className: "lib-xplat-swiper__progress-fill",
@@ -10115,7 +10158,7 @@ var Swiper = (props) => {
10115
10158
  }
10116
10159
  }
10117
10160
  ) }) }),
10118
- canSlide && /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
10161
+ canSlide && /* @__PURE__ */ (0, import_jsx_runtime340.jsx)("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
10119
10162
  "button",
10120
10163
  {
10121
10164
  className: clsx_default(
@@ -10133,8 +10176,8 @@ Swiper.displayName = "Swiper";
10133
10176
  var Swiper_default = Swiper;
10134
10177
 
10135
10178
  // src/components/Switch/Switch.tsx
10136
- var import_react33 = __toESM(require("react"), 1);
10137
- var import_jsx_runtime340 = require("react/jsx-runtime");
10179
+ var import_react34 = __toESM(require("react"), 1);
10180
+ var import_jsx_runtime341 = require("react/jsx-runtime");
10138
10181
  var KNOB_TRANSITION_MS = 250;
10139
10182
  var Switch = (props) => {
10140
10183
  const {
@@ -10144,9 +10187,9 @@ var Switch = (props) => {
10144
10187
  disabled,
10145
10188
  onChange
10146
10189
  } = props;
10147
- const [isAnimating, setIsAnimating] = import_react33.default.useState(false);
10148
- const timeoutRef = import_react33.default.useRef(null);
10149
- import_react33.default.useEffect(() => {
10190
+ const [isAnimating, setIsAnimating] = import_react34.default.useState(false);
10191
+ const timeoutRef = import_react34.default.useRef(null);
10192
+ import_react34.default.useEffect(() => {
10150
10193
  return () => {
10151
10194
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
10152
10195
  };
@@ -10161,7 +10204,7 @@ var Switch = (props) => {
10161
10204
  timeoutRef.current = null;
10162
10205
  }, KNOB_TRANSITION_MS);
10163
10206
  };
10164
- return /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
10207
+ return /* @__PURE__ */ (0, import_jsx_runtime341.jsx)(
10165
10208
  "div",
10166
10209
  {
10167
10210
  className: clsx_default(
@@ -10174,7 +10217,7 @@ var Switch = (props) => {
10174
10217
  ),
10175
10218
  onClick: handleClick,
10176
10219
  "aria-disabled": disabled || isAnimating,
10177
- children: /* @__PURE__ */ (0, import_jsx_runtime340.jsx)("div", { className: clsx_default("knob", value ? "checked" : void 0) })
10220
+ children: /* @__PURE__ */ (0, import_jsx_runtime341.jsx)("div", { className: clsx_default("knob", value ? "checked" : void 0) })
10178
10221
  }
10179
10222
  );
10180
10223
  };
@@ -10182,17 +10225,17 @@ Switch.displayName = "Switch";
10182
10225
  var Switch_default = Switch;
10183
10226
 
10184
10227
  // src/components/Table/TableContext.tsx
10185
- var import_react34 = __toESM(require("react"), 1);
10186
- var TableContext = import_react34.default.createContext(null);
10228
+ var import_react35 = __toESM(require("react"), 1);
10229
+ var TableContext = import_react35.default.createContext(null);
10187
10230
  var useTableContext = () => {
10188
- const ctx = import_react34.default.useContext(TableContext);
10231
+ const ctx = import_react35.default.useContext(TableContext);
10189
10232
  if (!ctx) throw new Error("Table components must be used inside <Table>");
10190
10233
  return ctx;
10191
10234
  };
10192
10235
  var TableContext_default = TableContext;
10193
10236
 
10194
10237
  // src/components/Table/Table.tsx
10195
- var import_jsx_runtime341 = require("react/jsx-runtime");
10238
+ var import_jsx_runtime342 = require("react/jsx-runtime");
10196
10239
  var Table = (props) => {
10197
10240
  const {
10198
10241
  children,
@@ -10202,7 +10245,7 @@ var Table = (props) => {
10202
10245
  headerSticky = false,
10203
10246
  stickyShadow = true
10204
10247
  } = props;
10205
- return /* @__PURE__ */ (0, import_jsx_runtime341.jsx)("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ (0, import_jsx_runtime341.jsx)(
10248
+ return /* @__PURE__ */ (0, import_jsx_runtime342.jsx)("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ (0, import_jsx_runtime342.jsx)(
10206
10249
  TableContext_default.Provider,
10207
10250
  {
10208
10251
  value: {
@@ -10211,7 +10254,7 @@ var Table = (props) => {
10211
10254
  headerSticky,
10212
10255
  stickyShadow
10213
10256
  },
10214
- children: /* @__PURE__ */ (0, import_jsx_runtime341.jsx)("table", { className: "lib-xplat-table", children })
10257
+ children: /* @__PURE__ */ (0, import_jsx_runtime342.jsx)("table", { className: "lib-xplat-table", children })
10215
10258
  }
10216
10259
  ) });
10217
10260
  };
@@ -10219,41 +10262,41 @@ Table.displayName = "Table";
10219
10262
  var Table_default = Table;
10220
10263
 
10221
10264
  // src/components/Table/TableBody.tsx
10222
- var import_jsx_runtime342 = require("react/jsx-runtime");
10265
+ var import_jsx_runtime343 = require("react/jsx-runtime");
10223
10266
  var TableBody = (props) => {
10224
10267
  const { children } = props;
10225
- return /* @__PURE__ */ (0, import_jsx_runtime342.jsx)("tbody", { children });
10268
+ return /* @__PURE__ */ (0, import_jsx_runtime343.jsx)("tbody", { children });
10226
10269
  };
10227
10270
  TableBody.displayName = "TableBody";
10228
10271
  var TableBody_default = TableBody;
10229
10272
 
10230
10273
  // src/components/Table/TableCell.tsx
10231
- var import_react37 = __toESM(require("react"), 1);
10274
+ var import_react38 = __toESM(require("react"), 1);
10232
10275
 
10233
10276
  // src/components/Table/TableHeadContext.tsx
10234
- var import_react35 = __toESM(require("react"), 1);
10235
- var TableHeadContext = import_react35.default.createContext(
10277
+ var import_react36 = __toESM(require("react"), 1);
10278
+ var TableHeadContext = import_react36.default.createContext(
10236
10279
  null
10237
10280
  );
10238
10281
  var useTableHeadContext = () => {
10239
- const ctx = import_react35.default.useContext(TableHeadContext);
10282
+ const ctx = import_react36.default.useContext(TableHeadContext);
10240
10283
  return ctx;
10241
10284
  };
10242
10285
  var TableHeadContext_default = TableHeadContext;
10243
10286
 
10244
10287
  // src/components/Table/TableRowContext.tsx
10245
- var import_react36 = __toESM(require("react"), 1);
10246
- var TableRowContext = import_react36.default.createContext(null);
10288
+ var import_react37 = __toESM(require("react"), 1);
10289
+ var TableRowContext = import_react37.default.createContext(null);
10247
10290
  var useTableRowContext = () => {
10248
- const ctx = import_react36.default.useContext(TableRowContext);
10291
+ const ctx = import_react37.default.useContext(TableRowContext);
10249
10292
  if (!ctx) throw new Error("Table components must be used inside <Table>");
10250
10293
  return ctx;
10251
10294
  };
10252
10295
  var TableRowContext_default = TableRowContext;
10253
10296
 
10254
10297
  // src/components/Table/TableCell.tsx
10255
- var import_jsx_runtime343 = require("react/jsx-runtime");
10256
- var TableCell = import_react37.default.memo((props) => {
10298
+ var import_jsx_runtime344 = require("react/jsx-runtime");
10299
+ var TableCell = import_react38.default.memo((props) => {
10257
10300
  const {
10258
10301
  children,
10259
10302
  align = "center",
@@ -10265,9 +10308,9 @@ var TableCell = import_react37.default.memo((props) => {
10265
10308
  const { registerStickyCell, stickyCells } = useTableRowContext();
10266
10309
  const { stickyShadow } = useTableContext();
10267
10310
  const headContext = useTableHeadContext();
10268
- const [left, setLeft] = import_react37.default.useState(0);
10269
- const cellRef = import_react37.default.useRef(null);
10270
- const calculateLeft = import_react37.default.useCallback(() => {
10311
+ const [left, setLeft] = import_react38.default.useState(0);
10312
+ const cellRef = import_react38.default.useRef(null);
10313
+ const calculateLeft = import_react38.default.useCallback(() => {
10271
10314
  if (!cellRef.current) return 0;
10272
10315
  let totalLeft = 0;
10273
10316
  for (const ref of stickyCells) {
@@ -10276,7 +10319,7 @@ var TableCell = import_react37.default.memo((props) => {
10276
10319
  }
10277
10320
  return totalLeft;
10278
10321
  }, [stickyCells]);
10279
- import_react37.default.useEffect(() => {
10322
+ import_react38.default.useEffect(() => {
10280
10323
  if (!isSticky || !cellRef.current) return;
10281
10324
  registerStickyCell(cellRef);
10282
10325
  setLeft(calculateLeft());
@@ -10294,7 +10337,7 @@ var TableCell = import_react37.default.memo((props) => {
10294
10337
  const CellTag = cellRef.current?.tagName === "TH" ? "th" : "td";
10295
10338
  const isLastSticky = isSticky && stickyCells[stickyCells.length - 1] === cellRef;
10296
10339
  const enableHover = headContext && headContext.cellHover;
10297
- return /* @__PURE__ */ (0, import_jsx_runtime343.jsx)(
10340
+ return /* @__PURE__ */ (0, import_jsx_runtime344.jsx)(
10298
10341
  CellTag,
10299
10342
  {
10300
10343
  ref: cellRef,
@@ -10319,21 +10362,21 @@ TableCell.displayName = "TableCell";
10319
10362
  var TableCell_default = TableCell;
10320
10363
 
10321
10364
  // src/components/Table/TableHead.tsx
10322
- var import_jsx_runtime344 = require("react/jsx-runtime");
10365
+ var import_jsx_runtime345 = require("react/jsx-runtime");
10323
10366
  var TableHead = ({
10324
10367
  children,
10325
10368
  cellHover = false
10326
10369
  }) => {
10327
10370
  const { headerSticky } = useTableContext();
10328
- return /* @__PURE__ */ (0, import_jsx_runtime344.jsx)(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ (0, import_jsx_runtime344.jsx)("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
10371
+ return /* @__PURE__ */ (0, import_jsx_runtime345.jsx)(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ (0, import_jsx_runtime345.jsx)("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
10329
10372
  };
10330
10373
  TableHead.displayName = "TableHead";
10331
10374
  var TableHead_default = TableHead;
10332
10375
 
10333
10376
  // src/components/Table/TableRow.tsx
10334
- var import_react38 = __toESM(require("react"), 1);
10335
- var import_jsx_runtime345 = require("react/jsx-runtime");
10336
- var TableRow = import_react38.default.memo((props) => {
10377
+ var import_react39 = __toESM(require("react"), 1);
10378
+ var import_jsx_runtime346 = require("react/jsx-runtime");
10379
+ var TableRow = import_react39.default.memo((props) => {
10337
10380
  const {
10338
10381
  children,
10339
10382
  type = "secondary",
@@ -10342,14 +10385,14 @@ var TableRow = import_react38.default.memo((props) => {
10342
10385
  onClick
10343
10386
  } = props;
10344
10387
  const { rowBorderUse } = useTableContext();
10345
- const [stickyCells, setStickyCells] = import_react38.default.useState([]);
10388
+ const [stickyCells, setStickyCells] = import_react39.default.useState([]);
10346
10389
  const registerStickyCell = (ref) => {
10347
10390
  setStickyCells((prev) => {
10348
10391
  if (prev.includes(ref)) return prev;
10349
10392
  return [...prev, ref];
10350
10393
  });
10351
10394
  };
10352
- return /* @__PURE__ */ (0, import_jsx_runtime345.jsx)(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ (0, import_jsx_runtime345.jsx)(
10395
+ return /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(
10353
10396
  "tr",
10354
10397
  {
10355
10398
  className: clsx_default(
@@ -10373,7 +10416,7 @@ TableRow.displayName = "TableRow";
10373
10416
  var TableRow_default = TableRow;
10374
10417
 
10375
10418
  // src/components/Tag/Tag.tsx
10376
- var import_jsx_runtime346 = require("react/jsx-runtime");
10419
+ var import_jsx_runtime347 = require("react/jsx-runtime");
10377
10420
  var Tag = (props) => {
10378
10421
  const {
10379
10422
  children,
@@ -10383,7 +10426,7 @@ var Tag = (props) => {
10383
10426
  disabled = false,
10384
10427
  colorIndex
10385
10428
  } = props;
10386
- return /* @__PURE__ */ (0, import_jsx_runtime346.jsxs)(
10429
+ return /* @__PURE__ */ (0, import_jsx_runtime347.jsxs)(
10387
10430
  "span",
10388
10431
  {
10389
10432
  className: clsx_default(
@@ -10394,8 +10437,8 @@ var Tag = (props) => {
10394
10437
  disabled && "disabled"
10395
10438
  ),
10396
10439
  children: [
10397
- /* @__PURE__ */ (0, import_jsx_runtime346.jsx)("span", { className: "tag-label", children }),
10398
- onClose && /* @__PURE__ */ (0, import_jsx_runtime346.jsx)("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(XIcon_default, {}) })
10440
+ /* @__PURE__ */ (0, import_jsx_runtime347.jsx)("span", { className: "tag-label", children }),
10441
+ onClose && /* @__PURE__ */ (0, import_jsx_runtime347.jsx)("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ (0, import_jsx_runtime347.jsx)(XIcon_default, {}) })
10399
10442
  ]
10400
10443
  }
10401
10444
  );
@@ -10404,55 +10447,27 @@ Tag.displayName = "Tag";
10404
10447
  var Tag_default = Tag;
10405
10448
 
10406
10449
  // src/components/TextArea/TextArea.tsx
10407
- var import_react39 = __toESM(require("react"), 1);
10408
- var import_jsx_runtime347 = require("react/jsx-runtime");
10409
- var TextArea = import_react39.default.forwardRef(
10450
+ var import_react40 = __toESM(require("react"), 1);
10451
+ var import_jsx_runtime348 = require("react/jsx-runtime");
10452
+ var TextArea = import_react40.default.forwardRef(
10410
10453
  (props, ref) => {
10411
- const { value, className, onChange, disabled, ...textareaProps } = props;
10412
- const localRef = import_react39.default.useRef(null);
10413
- const setRefs = (el) => {
10414
- localRef.current = el;
10415
- if (!ref) return;
10416
- if (typeof ref === "function") {
10417
- ref(el);
10418
- } else if (ref && typeof ref === "object" && "current" in ref) {
10419
- ref.current = el;
10420
- }
10421
- };
10422
- const handleOnChange = (e) => {
10423
- const val = e.target.value;
10424
- if (onChange) {
10425
- const event = {
10426
- ...e,
10427
- target: { value: val }
10428
- };
10429
- onChange(event);
10430
- }
10431
- };
10432
- import_react39.default.useEffect(() => {
10433
- const el = localRef.current;
10434
- if (!el) return;
10435
- el.style.height = "0px";
10436
- const nextHeight = Math.min(el.scrollHeight, 400);
10437
- el.style.height = `${nextHeight}px`;
10438
- }, [value]);
10439
- return /* @__PURE__ */ (0, import_jsx_runtime347.jsx)("div", { className: clsx_default("lib-xplat-textarea-wrapper", className), children: /* @__PURE__ */ (0, import_jsx_runtime347.jsx)(
10440
- "div",
10454
+ const {
10455
+ className,
10456
+ size = "md",
10457
+ resize = "vertical",
10458
+ rows = 3,
10459
+ disabled,
10460
+ ...textareaProps
10461
+ } = props;
10462
+ return /* @__PURE__ */ (0, import_jsx_runtime348.jsx)("div", { className: clsx_default("lib-xplat-textarea-wrap", className), children: /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
10463
+ "textarea",
10441
10464
  {
10442
- className: clsx_default(
10443
- "lib-xplat-textarea",
10444
- disabled ? "disabled" : void 0
10445
- ),
10446
- children: /* @__PURE__ */ (0, import_jsx_runtime347.jsx)(
10447
- "textarea",
10448
- {
10449
- ...textareaProps,
10450
- ref: setRefs,
10451
- disabled,
10452
- value,
10453
- onChange: handleOnChange
10454
- }
10455
- )
10465
+ ...textareaProps,
10466
+ ref,
10467
+ rows,
10468
+ disabled,
10469
+ className: clsx_default("lib-xplat-textarea", size, disabled && "disabled"),
10470
+ style: { resize }
10456
10471
  }
10457
10472
  ) });
10458
10473
  }
@@ -10461,25 +10476,25 @@ TextArea.displayName = "TextArea";
10461
10476
  var TextArea_default = TextArea;
10462
10477
 
10463
10478
  // src/components/Toast/Toast.tsx
10464
- var import_react40 = __toESM(require("react"), 1);
10479
+ var import_react41 = __toESM(require("react"), 1);
10465
10480
  var import_react_dom4 = require("react-dom");
10466
- var import_jsx_runtime348 = require("react/jsx-runtime");
10467
- var ToastContext = import_react40.default.createContext(null);
10481
+ var import_jsx_runtime349 = require("react/jsx-runtime");
10482
+ var ToastContext = import_react41.default.createContext(null);
10468
10483
  var useToast = () => {
10469
- const ctx = import_react40.default.useContext(ToastContext);
10484
+ const ctx = import_react41.default.useContext(ToastContext);
10470
10485
  if (!ctx) throw new Error("useToast must be used within ToastProvider");
10471
10486
  return ctx;
10472
10487
  };
10473
10488
  var EXIT_DURATION = 300;
10474
10489
  var ToastItemComponent = ({ item, isExiting, onClose }) => {
10475
- const ref = import_react40.default.useRef(null);
10476
- const [height, setHeight] = import_react40.default.useState(void 0);
10477
- import_react40.default.useEffect(() => {
10490
+ const ref = import_react41.default.useRef(null);
10491
+ const [height, setHeight] = import_react41.default.useState(void 0);
10492
+ import_react41.default.useEffect(() => {
10478
10493
  if (ref.current && !isExiting) {
10479
10494
  setHeight(ref.current.offsetHeight);
10480
10495
  }
10481
10496
  }, [isExiting]);
10482
- return /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
10497
+ return /* @__PURE__ */ (0, import_jsx_runtime349.jsx)(
10483
10498
  "div",
10484
10499
  {
10485
10500
  className: clsx_default("lib-xplat-toast-wrapper", { exit: isExiting }),
@@ -10487,15 +10502,15 @@ var ToastItemComponent = ({ item, isExiting, onClose }) => {
10487
10502
  maxHeight: isExiting ? 0 : height ?? "none",
10488
10503
  marginBottom: isExiting ? 0 : void 0
10489
10504
  },
10490
- children: /* @__PURE__ */ (0, import_jsx_runtime348.jsxs)(
10505
+ children: /* @__PURE__ */ (0, import_jsx_runtime349.jsxs)(
10491
10506
  "div",
10492
10507
  {
10493
10508
  ref,
10494
10509
  className: clsx_default("lib-xplat-toast", item.type, { exit: isExiting }),
10495
10510
  role: "alert",
10496
10511
  children: [
10497
- /* @__PURE__ */ (0, import_jsx_runtime348.jsx)("span", { className: "message", children: item.message }),
10498
- /* @__PURE__ */ (0, import_jsx_runtime348.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
10512
+ /* @__PURE__ */ (0, import_jsx_runtime349.jsx)("span", { className: "message", children: item.message }),
10513
+ /* @__PURE__ */ (0, import_jsx_runtime349.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
10499
10514
  ]
10500
10515
  }
10501
10516
  )
@@ -10506,13 +10521,13 @@ var ToastProvider = ({
10506
10521
  children,
10507
10522
  position = "top-right"
10508
10523
  }) => {
10509
- const [toasts, setToasts] = import_react40.default.useState([]);
10510
- const [removing, setRemoving] = import_react40.default.useState(/* @__PURE__ */ new Set());
10511
- const [mounted, setMounted] = import_react40.default.useState(false);
10512
- import_react40.default.useEffect(() => {
10524
+ const [toasts, setToasts] = import_react41.default.useState([]);
10525
+ const [removing, setRemoving] = import_react41.default.useState(/* @__PURE__ */ new Set());
10526
+ const [mounted, setMounted] = import_react41.default.useState(false);
10527
+ import_react41.default.useEffect(() => {
10513
10528
  setMounted(true);
10514
10529
  }, []);
10515
- const remove = import_react40.default.useCallback((id) => {
10530
+ const remove = import_react41.default.useCallback((id) => {
10516
10531
  setRemoving((prev) => new Set(prev).add(id));
10517
10532
  setTimeout(() => {
10518
10533
  setToasts((prev) => prev.filter((t) => t.id !== id));
@@ -10523,7 +10538,7 @@ var ToastProvider = ({
10523
10538
  });
10524
10539
  }, EXIT_DURATION);
10525
10540
  }, []);
10526
- const toast = import_react40.default.useCallback(
10541
+ const toast = import_react41.default.useCallback(
10527
10542
  (type, message, duration = 3e3) => {
10528
10543
  const id = `${Date.now()}-${Math.random()}`;
10529
10544
  setToasts((prev) => [...prev, { id, type, message }]);
@@ -10533,10 +10548,10 @@ var ToastProvider = ({
10533
10548
  },
10534
10549
  [remove]
10535
10550
  );
10536
- return /* @__PURE__ */ (0, import_jsx_runtime348.jsxs)(ToastContext.Provider, { value: { toast }, children: [
10551
+ return /* @__PURE__ */ (0, import_jsx_runtime349.jsxs)(ToastContext.Provider, { value: { toast }, children: [
10537
10552
  children,
10538
10553
  mounted && (0, import_react_dom4.createPortal)(
10539
- /* @__PURE__ */ (0, import_jsx_runtime348.jsx)("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
10554
+ /* @__PURE__ */ (0, import_jsx_runtime349.jsx)("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ (0, import_jsx_runtime349.jsx)(
10540
10555
  ToastItemComponent,
10541
10556
  {
10542
10557
  item: t,
@@ -10552,8 +10567,8 @@ var ToastProvider = ({
10552
10567
  ToastProvider.displayName = "ToastProvider";
10553
10568
 
10554
10569
  // src/components/Tooltip/Tooltip.tsx
10555
- var import_react41 = __toESM(require("react"), 1);
10556
- var import_jsx_runtime349 = require("react/jsx-runtime");
10570
+ var import_react42 = __toESM(require("react"), 1);
10571
+ var import_jsx_runtime350 = require("react/jsx-runtime");
10557
10572
  var OFFSET = 12;
10558
10573
  var SHOW_DELAY = 300;
10559
10574
  var Tooltip = (props) => {
@@ -10564,12 +10579,12 @@ var Tooltip = (props) => {
10564
10579
  children,
10565
10580
  disabled = false
10566
10581
  } = props;
10567
- const triggerRef = import_react41.default.useRef(null);
10568
- const tooltipRef = import_react41.default.useRef(null);
10569
- const [visible, setVisible] = import_react41.default.useState(false);
10570
- const [pos, setPos] = import_react41.default.useState({ left: 0, top: 0 });
10571
- const delayTimer = import_react41.default.useRef(0);
10572
- const calculatePos = import_react41.default.useCallback((clientX, clientY) => {
10582
+ const triggerRef = import_react42.default.useRef(null);
10583
+ const tooltipRef = import_react42.default.useRef(null);
10584
+ const [visible, setVisible] = import_react42.default.useState(false);
10585
+ const [pos, setPos] = import_react42.default.useState({ left: 0, top: 0 });
10586
+ const delayTimer = import_react42.default.useRef(0);
10587
+ const calculatePos = import_react42.default.useCallback((clientX, clientY) => {
10573
10588
  const el = tooltipRef.current;
10574
10589
  if (!el) return;
10575
10590
  const w = el.offsetWidth;
@@ -10582,38 +10597,38 @@ var Tooltip = (props) => {
10582
10597
  if (left < 8) left = 8;
10583
10598
  setPos({ left, top });
10584
10599
  }, []);
10585
- const handleMouseEnter = import_react41.default.useCallback(() => {
10600
+ const handleMouseEnter = import_react42.default.useCallback(() => {
10586
10601
  if (disabled) return;
10587
10602
  delayTimer.current = window.setTimeout(() => {
10588
10603
  setVisible(true);
10589
10604
  }, SHOW_DELAY);
10590
10605
  }, [disabled]);
10591
- const handleMouseMove = import_react41.default.useCallback((e) => {
10606
+ const handleMouseMove = import_react42.default.useCallback((e) => {
10592
10607
  if (!visible) return;
10593
10608
  calculatePos(e.clientX, e.clientY);
10594
10609
  }, [visible, calculatePos]);
10595
- const handleMouseLeave = import_react41.default.useCallback(() => {
10610
+ const handleMouseLeave = import_react42.default.useCallback(() => {
10596
10611
  window.clearTimeout(delayTimer.current);
10597
10612
  setVisible(false);
10598
10613
  }, []);
10599
- const handleClick = import_react41.default.useCallback(() => {
10614
+ const handleClick = import_react42.default.useCallback(() => {
10600
10615
  window.clearTimeout(delayTimer.current);
10601
10616
  setVisible(false);
10602
10617
  }, []);
10603
- const handleFocus = import_react41.default.useCallback(() => {
10618
+ const handleFocus = import_react42.default.useCallback(() => {
10604
10619
  if (disabled) return;
10605
10620
  setVisible(true);
10606
10621
  }, [disabled]);
10607
- const handleBlur = import_react41.default.useCallback(() => {
10622
+ const handleBlur = import_react42.default.useCallback(() => {
10608
10623
  setVisible(false);
10609
10624
  }, []);
10610
- import_react41.default.useLayoutEffect(() => {
10625
+ import_react42.default.useLayoutEffect(() => {
10611
10626
  if (!visible || !triggerRef.current) return;
10612
10627
  const rect = triggerRef.current.getBoundingClientRect();
10613
10628
  calculatePos(rect.right, rect.top);
10614
10629
  }, [visible, calculatePos]);
10615
- if (!title && !description) return /* @__PURE__ */ (0, import_jsx_runtime349.jsx)(import_jsx_runtime349.Fragment, { children });
10616
- return /* @__PURE__ */ (0, import_jsx_runtime349.jsxs)(
10630
+ if (!title && !description) return /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(import_jsx_runtime350.Fragment, { children });
10631
+ return /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)(
10617
10632
  "div",
10618
10633
  {
10619
10634
  ref: triggerRef,
@@ -10626,15 +10641,15 @@ var Tooltip = (props) => {
10626
10641
  onBlur: handleBlur,
10627
10642
  children: [
10628
10643
  children,
10629
- visible && /* @__PURE__ */ (0, import_jsx_runtime349.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime349.jsxs)(
10644
+ visible && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)(
10630
10645
  "div",
10631
10646
  {
10632
10647
  ref: tooltipRef,
10633
10648
  className: clsx_default("lib-xplat-tooltip", type),
10634
10649
  style: { position: "fixed", left: pos.left, top: pos.top },
10635
10650
  children: [
10636
- title && /* @__PURE__ */ (0, import_jsx_runtime349.jsx)("div", { className: "tooltip-title", children: title }),
10637
- description && /* @__PURE__ */ (0, import_jsx_runtime349.jsx)("div", { className: "tooltip-desc", children: description })
10651
+ title && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("div", { className: "tooltip-title", children: title }),
10652
+ description && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("div", { className: "tooltip-desc", children: description })
10638
10653
  ]
10639
10654
  }
10640
10655
  ) })
@@ -10646,11 +10661,11 @@ Tooltip.displayName = "Tooltip";
10646
10661
  var Tooltip_default = Tooltip;
10647
10662
 
10648
10663
  // src/components/Video/Video.tsx
10649
- var import_react42 = __toESM(require("react"), 1);
10650
- var import_jsx_runtime350 = require("react/jsx-runtime");
10651
- var PipIcon = () => /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
10652
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
10653
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
10664
+ var import_react43 = __toESM(require("react"), 1);
10665
+ var import_jsx_runtime351 = require("react/jsx-runtime");
10666
+ var PipIcon = () => /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
10667
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
10668
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
10654
10669
  ] });
10655
10670
  var formatTime = (sec) => {
10656
10671
  if (!Number.isFinite(sec) || sec < 0) return "0:00";
@@ -10658,7 +10673,7 @@ var formatTime = (sec) => {
10658
10673
  const s = Math.floor(sec % 60);
10659
10674
  return `${m}:${s.toString().padStart(2, "0")}`;
10660
10675
  };
10661
- var Video = import_react42.default.forwardRef((props, ref) => {
10676
+ var Video = import_react43.default.forwardRef((props, ref) => {
10662
10677
  const {
10663
10678
  src,
10664
10679
  poster,
@@ -10682,21 +10697,21 @@ var Video = import_react42.default.forwardRef((props, ref) => {
10682
10697
  children,
10683
10698
  ...rest
10684
10699
  } = props;
10685
- const containerRef = import_react42.default.useRef(null);
10686
- const videoRef = import_react42.default.useRef(null);
10687
- const [isPlaying, setIsPlaying] = import_react42.default.useState(Boolean(autoPlay));
10688
- const [isLoaded, setIsLoaded] = import_react42.default.useState(false);
10689
- const [currentTime, setCurrentTime] = import_react42.default.useState(0);
10690
- const [duration, setDuration] = import_react42.default.useState(0);
10691
- const [buffered, setBuffered] = import_react42.default.useState(0);
10692
- const [volume, setVolume] = import_react42.default.useState(1);
10693
- const [isMuted, setIsMuted] = import_react42.default.useState(Boolean(muted));
10694
- const [isFullscreen, setIsFullscreen] = import_react42.default.useState(false);
10695
- const [playbackRate, setPlaybackRate] = import_react42.default.useState(1);
10696
- const [rateMenuOpen, setRateMenuOpen] = import_react42.default.useState(false);
10697
- const [captionsOn, setCaptionsOn] = import_react42.default.useState(false);
10698
- const [isPip, setIsPip] = import_react42.default.useState(false);
10699
- const setRefs = import_react42.default.useCallback(
10700
+ const containerRef = import_react43.default.useRef(null);
10701
+ const videoRef = import_react43.default.useRef(null);
10702
+ const [isPlaying, setIsPlaying] = import_react43.default.useState(Boolean(autoPlay));
10703
+ const [isLoaded, setIsLoaded] = import_react43.default.useState(false);
10704
+ const [currentTime, setCurrentTime] = import_react43.default.useState(0);
10705
+ const [duration, setDuration] = import_react43.default.useState(0);
10706
+ const [buffered, setBuffered] = import_react43.default.useState(0);
10707
+ const [volume, setVolume] = import_react43.default.useState(1);
10708
+ const [isMuted, setIsMuted] = import_react43.default.useState(Boolean(muted));
10709
+ const [isFullscreen, setIsFullscreen] = import_react43.default.useState(false);
10710
+ const [playbackRate, setPlaybackRate] = import_react43.default.useState(1);
10711
+ const [rateMenuOpen, setRateMenuOpen] = import_react43.default.useState(false);
10712
+ const [captionsOn, setCaptionsOn] = import_react43.default.useState(false);
10713
+ const [isPip, setIsPip] = import_react43.default.useState(false);
10714
+ const setRefs = import_react43.default.useCallback(
10700
10715
  (el) => {
10701
10716
  videoRef.current = el;
10702
10717
  if (typeof ref === "function") ref(el);
@@ -10704,14 +10719,14 @@ var Video = import_react42.default.forwardRef((props, ref) => {
10704
10719
  },
10705
10720
  [ref]
10706
10721
  );
10707
- import_react42.default.useEffect(() => {
10722
+ import_react43.default.useEffect(() => {
10708
10723
  const onFsChange = () => {
10709
10724
  setIsFullscreen(document.fullscreenElement === containerRef.current);
10710
10725
  };
10711
10726
  document.addEventListener("fullscreenchange", onFsChange);
10712
10727
  return () => document.removeEventListener("fullscreenchange", onFsChange);
10713
10728
  }, []);
10714
- import_react42.default.useEffect(() => {
10729
+ import_react43.default.useEffect(() => {
10715
10730
  const v = videoRef.current;
10716
10731
  if (!v) return;
10717
10732
  const onEnter = () => setIsPip(true);
@@ -10825,13 +10840,13 @@ var Video = import_react42.default.forwardRef((props, ref) => {
10825
10840
  const volumePct = (isMuted ? 0 : volume) * 100;
10826
10841
  const VolumeGlyph = isMuted || volume === 0 ? VolumeXIcon_default : volume < 0.5 ? VolumeIcon_default : Volume2Icon_default;
10827
10842
  const pipSupported = typeof document !== "undefined" && "pictureInPictureEnabled" in document && document.pictureInPictureEnabled;
10828
- return /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)(
10843
+ return /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)(
10829
10844
  "div",
10830
10845
  {
10831
10846
  ref: containerRef,
10832
10847
  className: clsx_default("lib-xplat-video", showControls && "has-controls"),
10833
10848
  children: [
10834
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
10849
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
10835
10850
  "video",
10836
10851
  {
10837
10852
  ref: setRefs,
@@ -10852,7 +10867,7 @@ var Video = import_react42.default.forwardRef((props, ref) => {
10852
10867
  children
10853
10868
  }
10854
10869
  ),
10855
- showCenterPlay && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
10870
+ showCenterPlay && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
10856
10871
  "button",
10857
10872
  {
10858
10873
  type: "button",
@@ -10864,11 +10879,11 @@ var Video = import_react42.default.forwardRef((props, ref) => {
10864
10879
  onClick: togglePlay,
10865
10880
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
10866
10881
  tabIndex: -1,
10867
- children: /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("span", { className: "center-play-icon", children: /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(PlayCircleIcon_default, {}) })
10882
+ children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("span", { className: "center-play-icon", children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(PlayCircleIcon_default, {}) })
10868
10883
  }
10869
10884
  ),
10870
- showControls && /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
10871
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
10885
+ showControls && /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
10886
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
10872
10887
  "input",
10873
10888
  {
10874
10889
  type: "range",
@@ -10885,29 +10900,29 @@ var Video = import_react42.default.forwardRef((props, ref) => {
10885
10900
  }
10886
10901
  }
10887
10902
  ),
10888
- /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)("div", { className: "controls-row", children: [
10889
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
10903
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("div", { className: "controls-row", children: [
10904
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
10890
10905
  "button",
10891
10906
  {
10892
10907
  type: "button",
10893
10908
  className: "control-btn",
10894
10909
  onClick: togglePlay,
10895
10910
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
10896
- children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(PauseIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(PlayIcon_default, {})
10911
+ children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(PauseIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(PlayIcon_default, {})
10897
10912
  }
10898
10913
  ),
10899
- /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)("div", { className: "volume-group", children: [
10900
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
10914
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("div", { className: "volume-group", children: [
10915
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
10901
10916
  "button",
10902
10917
  {
10903
10918
  type: "button",
10904
10919
  className: "control-btn",
10905
10920
  onClick: toggleMute,
10906
10921
  "aria-label": isMuted ? "\uC74C\uC18C\uAC70 \uD574\uC81C" : "\uC74C\uC18C\uAC70",
10907
- children: /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(VolumeGlyph, {})
10922
+ children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(VolumeGlyph, {})
10908
10923
  }
10909
10924
  ),
10910
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
10925
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
10911
10926
  "input",
10912
10927
  {
10913
10928
  type: "range",
@@ -10922,14 +10937,14 @@ var Video = import_react42.default.forwardRef((props, ref) => {
10922
10937
  }
10923
10938
  )
10924
10939
  ] }),
10925
- /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)("span", { className: "time", children: [
10940
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("span", { className: "time", children: [
10926
10941
  formatTime(currentTime),
10927
10942
  " / ",
10928
10943
  formatTime(duration)
10929
10944
  ] }),
10930
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("div", { className: "controls-spacer" }),
10931
- playbackRates && playbackRates.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
10932
- /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)(
10945
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("div", { className: "controls-spacer" }),
10946
+ playbackRates && playbackRates.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
10947
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)(
10933
10948
  "button",
10934
10949
  {
10935
10950
  type: "button",
@@ -10943,7 +10958,7 @@ var Video = import_react42.default.forwardRef((props, ref) => {
10943
10958
  ]
10944
10959
  }
10945
10960
  ),
10946
- rateMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)(
10961
+ rateMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)(
10947
10962
  "button",
10948
10963
  {
10949
10964
  type: "button",
@@ -10957,7 +10972,7 @@ var Video = import_react42.default.forwardRef((props, ref) => {
10957
10972
  }
10958
10973
  ) }, r2)) })
10959
10974
  ] }),
10960
- showCaptions && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
10975
+ showCaptions && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
10961
10976
  "button",
10962
10977
  {
10963
10978
  type: "button",
@@ -10965,37 +10980,37 @@ var Video = import_react42.default.forwardRef((props, ref) => {
10965
10980
  onClick: toggleCaptions,
10966
10981
  "aria-label": captionsOn ? "\uC790\uB9C9 \uB044\uAE30" : "\uC790\uB9C9 \uCF1C\uAE30",
10967
10982
  "aria-pressed": captionsOn,
10968
- children: /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(TypeIcon_default, {})
10983
+ children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(TypeIcon_default, {})
10969
10984
  }
10970
10985
  ),
10971
- showPip && pipSupported && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
10986
+ showPip && pipSupported && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
10972
10987
  "button",
10973
10988
  {
10974
10989
  type: "button",
10975
10990
  className: clsx_default("control-btn", isPip && "is-active"),
10976
10991
  onClick: togglePip,
10977
10992
  "aria-label": isPip ? "PIP \uC885\uB8CC" : "PIP",
10978
- children: /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(PipIcon, {})
10993
+ children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(PipIcon, {})
10979
10994
  }
10980
10995
  ),
10981
- showDownload && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
10996
+ showDownload && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
10982
10997
  "a",
10983
10998
  {
10984
10999
  className: "control-btn",
10985
11000
  href: src,
10986
11001
  download: downloadFileName ?? true,
10987
11002
  "aria-label": "\uB2E4\uC6B4\uB85C\uB4DC",
10988
- children: /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(DownloadIcon_default, {})
11003
+ children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(DownloadIcon_default, {})
10989
11004
  }
10990
11005
  ),
10991
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
11006
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
10992
11007
  "button",
10993
11008
  {
10994
11009
  type: "button",
10995
11010
  className: "control-btn",
10996
11011
  onClick: toggleFullscreen,
10997
11012
  "aria-label": isFullscreen ? "\uC804\uCCB4\uD654\uBA74 \uC885\uB8CC" : "\uC804\uCCB4\uD654\uBA74",
10998
- children: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(MinimizeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(MaximizeIcon_default, {})
11013
+ children: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(MinimizeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(MaximizeIcon_default, {})
10999
11014
  }
11000
11015
  )
11001
11016
  ] })
@@ -11008,7 +11023,7 @@ Video.displayName = "Video";
11008
11023
  var Video_default = Video;
11009
11024
 
11010
11025
  // src/layout/Grid/FullGrid/FullGrid.tsx
11011
- var import_jsx_runtime351 = require("react/jsx-runtime");
11026
+ var import_jsx_runtime352 = require("react/jsx-runtime");
11012
11027
  var GAP_MAP = {
11013
11028
  none: "var(--spacing-space-none)",
11014
11029
  xs: "var(--spacing-space-1)",
@@ -11021,13 +11036,13 @@ var GAP_MAP = {
11021
11036
  var FullGrid = (props) => {
11022
11037
  const { children, gap } = props;
11023
11038
  const style = gap != null ? { gap: GAP_MAP[gap] } : void 0;
11024
- return /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("div", { className: "lib-xplat-full-grid", style, children });
11039
+ return /* @__PURE__ */ (0, import_jsx_runtime352.jsx)("div", { className: "lib-xplat-full-grid", style, children });
11025
11040
  };
11026
11041
  FullGrid.displayName = "FullGrid";
11027
11042
  var FullGrid_default = FullGrid;
11028
11043
 
11029
11044
  // src/layout/Grid/FullScreen/FullScreen.tsx
11030
- var import_jsx_runtime352 = require("react/jsx-runtime");
11045
+ var import_jsx_runtime353 = require("react/jsx-runtime");
11031
11046
  var GAP_MAP2 = {
11032
11047
  none: "var(--spacing-space-none)",
11033
11048
  xs: "var(--spacing-space-1)",
@@ -11040,13 +11055,13 @@ var GAP_MAP2 = {
11040
11055
  var FullScreen = (props) => {
11041
11056
  const { children, gap } = props;
11042
11057
  const style = gap != null ? { gap: GAP_MAP2[gap] } : void 0;
11043
- return /* @__PURE__ */ (0, import_jsx_runtime352.jsx)("div", { className: "lib-xplat-full-screen", style, children });
11058
+ return /* @__PURE__ */ (0, import_jsx_runtime353.jsx)("div", { className: "lib-xplat-full-screen", style, children });
11044
11059
  };
11045
11060
  FullScreen.displayName = "FullScreen";
11046
11061
  var FullScreen_default = FullScreen;
11047
11062
 
11048
11063
  // src/layout/Grid/Item/Item.tsx
11049
- var import_jsx_runtime353 = require("react/jsx-runtime");
11064
+ var import_jsx_runtime354 = require("react/jsx-runtime");
11050
11065
  var calculateSpans = (column) => {
11051
11066
  const spans = {};
11052
11067
  let inherited = column.default;
@@ -11063,35 +11078,35 @@ var GridItem = ({ column, children, className }) => {
11063
11078
  Object.entries(spans).forEach(([key, value]) => {
11064
11079
  style[`--column-${key}`] = value;
11065
11080
  });
11066
- return /* @__PURE__ */ (0, import_jsx_runtime353.jsx)("div", { className: clsx_default("lib-xplat-grid-item", className), style, children });
11081
+ return /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("div", { className: clsx_default("lib-xplat-grid-item", className), style, children });
11067
11082
  };
11068
11083
  GridItem.displayName = "GridItem";
11069
11084
  var Item_default = GridItem;
11070
11085
 
11071
11086
  // src/layout/Header/Header.tsx
11072
- var import_jsx_runtime354 = require("react/jsx-runtime");
11087
+ var import_jsx_runtime355 = require("react/jsx-runtime");
11073
11088
  var Header = ({
11074
11089
  logo,
11075
11090
  centerContent,
11076
11091
  rightContent
11077
11092
  }) => {
11078
- return /* @__PURE__ */ (0, import_jsx_runtime354.jsxs)("div", { className: "lib-xplat-layout-header", children: [
11079
- /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("div", { children: logo }),
11080
- /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("div", { children: centerContent }),
11081
- /* @__PURE__ */ (0, import_jsx_runtime354.jsx)("div", { children: rightContent })
11093
+ return /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("div", { className: "lib-xplat-layout-header", children: [
11094
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("div", { children: logo }),
11095
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("div", { children: centerContent }),
11096
+ /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("div", { children: rightContent })
11082
11097
  ] });
11083
11098
  };
11084
11099
  Header.displayName = "Header";
11085
11100
  var Header_default = Header;
11086
11101
 
11087
11102
  // src/layout/Layout/Layout.tsx
11088
- var import_jsx_runtime355 = require("react/jsx-runtime");
11103
+ var import_jsx_runtime356 = require("react/jsx-runtime");
11089
11104
  var Layout = (props) => {
11090
11105
  const { header, sideBar, children } = props;
11091
- return /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("div", { className: "lib-xplat-layout", children: /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("div", { className: "lib-xplat-layout-content-wrapper", children: [
11092
- sideBar && /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(import_jsx_runtime355.Fragment, { children: sideBar }),
11093
- /* @__PURE__ */ (0, import_jsx_runtime355.jsxs)("div", { className: "lib-xplat-layout-content", children: [
11094
- header && /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("div", { className: "lib-xplat-layout-conent-header", children: header }),
11106
+ return /* @__PURE__ */ (0, import_jsx_runtime356.jsx)("div", { className: "lib-xplat-layout", children: /* @__PURE__ */ (0, import_jsx_runtime356.jsxs)("div", { className: "lib-xplat-layout-content-wrapper", children: [
11107
+ sideBar && /* @__PURE__ */ (0, import_jsx_runtime356.jsx)(import_jsx_runtime356.Fragment, { children: sideBar }),
11108
+ /* @__PURE__ */ (0, import_jsx_runtime356.jsxs)("div", { className: "lib-xplat-layout-content", children: [
11109
+ header && /* @__PURE__ */ (0, import_jsx_runtime356.jsx)("div", { className: "lib-xplat-layout-conent-header", children: header }),
11095
11110
  children
11096
11111
  ] })
11097
11112
  ] }) });
@@ -11100,31 +11115,31 @@ Layout.displayName = "Layout";
11100
11115
  var Layout_default = Layout;
11101
11116
 
11102
11117
  // src/layout/SideBar/SideBar.tsx
11103
- var import_react44 = __toESM(require("react"), 1);
11118
+ var import_react45 = __toESM(require("react"), 1);
11104
11119
 
11105
11120
  // src/layout/SideBar/SideBarContext.tsx
11106
- var import_react43 = __toESM(require("react"), 1);
11107
- var SideBarContext = import_react43.default.createContext(null);
11121
+ var import_react44 = __toESM(require("react"), 1);
11122
+ var SideBarContext = import_react44.default.createContext(null);
11108
11123
  var useSideBarContext = () => {
11109
- const ctx = import_react43.default.useContext(SideBarContext);
11124
+ const ctx = import_react44.default.useContext(SideBarContext);
11110
11125
  if (!ctx) throw new Error("Error");
11111
11126
  return ctx;
11112
11127
  };
11113
11128
  var SideBarContext_default = SideBarContext;
11114
11129
 
11115
11130
  // src/layout/SideBar/SideBar.tsx
11116
- var import_jsx_runtime356 = require("react/jsx-runtime");
11131
+ var import_jsx_runtime357 = require("react/jsx-runtime");
11117
11132
  var SideBar = (props) => {
11118
11133
  const { children, className } = props;
11119
- const [isOpen, setIsOpen] = import_react44.default.useState(true);
11134
+ const [isOpen, setIsOpen] = import_react45.default.useState(true);
11120
11135
  const handleSwitchSideBar = () => {
11121
11136
  setIsOpen((prev) => !prev);
11122
11137
  };
11123
- return /* @__PURE__ */ (0, import_jsx_runtime356.jsx)(
11138
+ return /* @__PURE__ */ (0, import_jsx_runtime357.jsx)(
11124
11139
  SideBarContext_default.Provider,
11125
11140
  {
11126
11141
  value: { isSidebarOpen: isOpen, handleSwitchSideBar },
11127
- children: /* @__PURE__ */ (0, import_jsx_runtime356.jsx)(
11142
+ children: /* @__PURE__ */ (0, import_jsx_runtime357.jsx)(
11128
11143
  "div",
11129
11144
  {
11130
11145
  className: clsx_default(
@@ -11169,6 +11184,7 @@ var SideBar_default = SideBar;
11169
11184
  ArrowUpLeftIcon,
11170
11185
  ArrowUpRightIcon,
11171
11186
  AtSignIcon,
11187
+ AutoResizeTextArea,
11172
11188
  Avatar,
11173
11189
  AwardIcon,
11174
11190
  BREAKPOINT_KEYS_ORDERED,