@x-plat/design-system 0.5.63 → 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.js CHANGED
@@ -6782,11 +6782,72 @@ var Chart = React5.memo((props) => {
6782
6782
  Chart.displayName = "Chart";
6783
6783
  var Chart_default = Chart;
6784
6784
 
6785
- // src/components/ChatInput/ChatInput.tsx
6785
+ // src/components/AutoResizeTextArea/AutoResizeTextArea.tsx
6786
6786
  import React6 from "react";
6787
+ import { jsx as jsx306 } from "react/jsx-runtime";
6788
+ var MAX_HEIGHT = 400;
6789
+ var AutoResizeTextArea = React6.forwardRef(
6790
+ (props, ref) => {
6791
+ const { value, className, onChange, disabled, bare = false, ...textareaProps } = props;
6792
+ const localRef = React6.useRef(null);
6793
+ const setRefs = (el) => {
6794
+ localRef.current = el;
6795
+ if (!ref) return;
6796
+ if (typeof ref === "function") ref(el);
6797
+ else if (ref && "current" in ref)
6798
+ ref.current = el;
6799
+ };
6800
+ const updateHeight = () => {
6801
+ const el = localRef.current;
6802
+ if (!el) return;
6803
+ el.style.height = "0px";
6804
+ el.style.height = `${Math.min(el.scrollHeight, MAX_HEIGHT)}px`;
6805
+ };
6806
+ const handleChange = (e) => {
6807
+ if (onChange) {
6808
+ const event = {
6809
+ ...e,
6810
+ target: { value: e.target.value }
6811
+ };
6812
+ onChange(event);
6813
+ }
6814
+ };
6815
+ React6.useEffect(() => {
6816
+ updateHeight();
6817
+ }, [value]);
6818
+ if (bare) {
6819
+ return /* @__PURE__ */ jsx306(
6820
+ "textarea",
6821
+ {
6822
+ ...textareaProps,
6823
+ ref: setRefs,
6824
+ className,
6825
+ disabled,
6826
+ value,
6827
+ onChange: handleChange
6828
+ }
6829
+ );
6830
+ }
6831
+ return /* @__PURE__ */ jsx306("div", { className: clsx_default("lib-xplat-auto-resize-textarea-wrapper", className), children: /* @__PURE__ */ jsx306("div", { className: clsx_default("lib-xplat-auto-resize-textarea", disabled && "disabled"), children: /* @__PURE__ */ jsx306(
6832
+ "textarea",
6833
+ {
6834
+ ...textareaProps,
6835
+ ref: setRefs,
6836
+ disabled,
6837
+ value,
6838
+ onChange: handleChange
6839
+ }
6840
+ ) }) });
6841
+ }
6842
+ );
6843
+ AutoResizeTextArea.displayName = "AutoResizeTextArea";
6844
+ var AutoResizeTextArea_default = AutoResizeTextArea;
6845
+
6846
+ // src/components/ChatInput/ChatInput.tsx
6847
+ import React7 from "react";
6787
6848
 
6788
6849
  // src/components/IconButton/IconButton.tsx
6789
- import { jsx as jsx306 } from "react/jsx-runtime";
6850
+ import { jsx as jsx307 } from "react/jsx-runtime";
6790
6851
  var IconButton = (props) => {
6791
6852
  const {
6792
6853
  icon,
@@ -6796,7 +6857,7 @@ var IconButton = (props) => {
6796
6857
  disabled,
6797
6858
  ...rest
6798
6859
  } = props;
6799
- return /* @__PURE__ */ jsx306(
6860
+ return /* @__PURE__ */ jsx307(
6800
6861
  "button",
6801
6862
  {
6802
6863
  className: clsx_default("lib-xplat-icon-button", type, size, className),
@@ -6810,9 +6871,8 @@ IconButton.displayName = "IconButton";
6810
6871
  var IconButton_default = IconButton;
6811
6872
 
6812
6873
  // src/components/ChatInput/ChatInput.tsx
6813
- import { jsx as jsx307, jsxs as jsxs197 } from "react/jsx-runtime";
6814
- var MAX_HEIGHT = 200;
6815
- var ChatInput = React6.forwardRef(
6874
+ import { jsx as jsx308, jsxs as jsxs197 } from "react/jsx-runtime";
6875
+ var ChatInput = React7.forwardRef(
6816
6876
  (props, ref) => {
6817
6877
  const {
6818
6878
  placeholder,
@@ -6823,24 +6883,9 @@ var ChatInput = React6.forwardRef(
6823
6883
  onChange
6824
6884
  } = props;
6825
6885
  const isControlled = valueProp !== void 0;
6826
- const [internalValue, setInternalValue] = React6.useState("");
6886
+ const [internalValue, setInternalValue] = React7.useState("");
6827
6887
  const value = isControlled ? valueProp : internalValue;
6828
6888
  const hasText = value.trim().length > 0;
6829
- const textareaRef = React6.useRef(null);
6830
- const setRefs = React6.useCallback(
6831
- (el) => {
6832
- textareaRef.current = el;
6833
- if (typeof ref === "function") ref(el);
6834
- else if (ref) ref.current = el;
6835
- },
6836
- [ref]
6837
- );
6838
- const updateHeight = React6.useCallback(() => {
6839
- const el = textareaRef.current;
6840
- if (!el) return;
6841
- el.style.height = "0px";
6842
- el.style.height = `${Math.min(el.scrollHeight, MAX_HEIGHT)}px`;
6843
- }, []);
6844
6889
  const handleChange = (e) => {
6845
6890
  const val = e.target.value;
6846
6891
  if (!isControlled) setInternalValue(val);
@@ -6850,7 +6895,6 @@ var ChatInput = React6.forwardRef(
6850
6895
  if (!hasText || disabled) return;
6851
6896
  onSubmit?.(value);
6852
6897
  if (!isControlled) setInternalValue("");
6853
- requestAnimationFrame(updateHeight);
6854
6898
  };
6855
6899
  const handleKeyDown = (e) => {
6856
6900
  if (e.key === "Enter" && !e.shiftKey) {
@@ -6858,14 +6902,12 @@ var ChatInput = React6.forwardRef(
6858
6902
  handleSubmit();
6859
6903
  }
6860
6904
  };
6861
- React6.useEffect(() => {
6862
- updateHeight();
6863
- }, [value, updateHeight]);
6864
6905
  return /* @__PURE__ */ jsxs197("div", { className: clsx_default("lib-xplat-chat-input", disabled && "disabled"), children: [
6865
- /* @__PURE__ */ jsx307(
6866
- "textarea",
6906
+ /* @__PURE__ */ jsx308(
6907
+ AutoResizeTextArea_default,
6867
6908
  {
6868
- ref: setRefs,
6909
+ ref,
6910
+ bare: true,
6869
6911
  className: "chat-input-textarea",
6870
6912
  placeholder,
6871
6913
  value,
@@ -6875,10 +6917,10 @@ var ChatInput = React6.forwardRef(
6875
6917
  onKeyDown: handleKeyDown
6876
6918
  }
6877
6919
  ),
6878
- /* @__PURE__ */ jsx307(
6920
+ /* @__PURE__ */ jsx308(
6879
6921
  IconButton_default,
6880
6922
  {
6881
- icon: /* @__PURE__ */ jsx307(MessageSquareIcon_default, {}),
6923
+ icon: /* @__PURE__ */ jsx308(MessageSquareIcon_default, {}),
6882
6924
  type: buttonType,
6883
6925
  size: "sm",
6884
6926
  disabled: !hasText || disabled,
@@ -6912,7 +6954,7 @@ import { primitive, semantic } from "@x-plat/tokens-core";
6912
6954
  import { cssVar } from "@x-plat/tokens-core";
6913
6955
 
6914
6956
  // src/components/CheckBox/CheckBox.tsx
6915
- import { jsx as jsx308, jsxs as jsxs198 } from "react/jsx-runtime";
6957
+ import { jsx as jsx309, jsxs as jsxs198 } from "react/jsx-runtime";
6916
6958
  var CheckBox = (props) => {
6917
6959
  const {
6918
6960
  checked,
@@ -6932,7 +6974,7 @@ var CheckBox = (props) => {
6932
6974
  const disabledClasses = "disabled";
6933
6975
  const boxClasses = disabled ? disabledClasses : checked ? checkedClasses : uncheckedClasses;
6934
6976
  return /* @__PURE__ */ jsxs198("label", { className: clsx_default("lib-xplat-checkbox", size, type, className), children: [
6935
- /* @__PURE__ */ jsx308(
6977
+ /* @__PURE__ */ jsx309(
6936
6978
  "input",
6937
6979
  {
6938
6980
  type: "checkbox",
@@ -6942,44 +6984,44 @@ var CheckBox = (props) => {
6942
6984
  ...rest
6943
6985
  }
6944
6986
  ),
6945
- /* @__PURE__ */ jsx308("span", { className: clsx_default("checkbox", boxClasses), children: /* @__PURE__ */ jsx308("span", { className: clsx_default("check-icon", { visible: checked }), children: /* @__PURE__ */ jsx308(CheckIcon_default, {}) }) }),
6946
- label && /* @__PURE__ */ jsx308("span", { className: "label", children: label })
6987
+ /* @__PURE__ */ jsx309("span", { className: clsx_default("checkbox", boxClasses), children: /* @__PURE__ */ jsx309("span", { className: clsx_default("check-icon", { visible: checked }), children: /* @__PURE__ */ jsx309(CheckIcon_default, {}) }) }),
6988
+ label && /* @__PURE__ */ jsx309("span", { className: "label", children: label })
6947
6989
  ] });
6948
6990
  };
6949
6991
  CheckBox.displayName = "CheckBox";
6950
6992
  var CheckBox_default = CheckBox;
6951
6993
 
6952
6994
  // src/components/Chip/Chip.tsx
6953
- import { jsx as jsx309 } from "react/jsx-runtime";
6995
+ import { jsx as jsx310 } from "react/jsx-runtime";
6954
6996
  var Chip = (props) => {
6955
6997
  const {
6956
6998
  children,
6957
6999
  type = "primary",
6958
7000
  size = "md"
6959
7001
  } = props;
6960
- return /* @__PURE__ */ jsx309("div", { className: clsx_default("lib-xplat-chip", type, size), children });
7002
+ return /* @__PURE__ */ jsx310("div", { className: clsx_default("lib-xplat-chip", type, size), children });
6961
7003
  };
6962
7004
  Chip.displayName = "Chip";
6963
7005
  var Chip_default = Chip;
6964
7006
 
6965
7007
  // src/components/DatePicker/InputDatePicker/index.tsx
6966
- import React12 from "react";
7008
+ import React13 from "react";
6967
7009
 
6968
7010
  // src/components/Input/Input.tsx
6969
- import React7 from "react";
7011
+ import React8 from "react";
6970
7012
 
6971
7013
  // src/components/Input/InputValidations.tsx
6972
- import { jsx as jsx310, jsxs as jsxs199 } from "react/jsx-runtime";
7014
+ import { jsx as jsx311, jsxs as jsxs199 } from "react/jsx-runtime";
6973
7015
  var InputValidations = (props) => {
6974
7016
  const { message, status = "default" } = props;
6975
7017
  return /* @__PURE__ */ jsxs199("div", { className: clsx_default("lib-xplat-input-validation", status), children: [
6976
7018
  /* @__PURE__ */ jsxs199("div", { className: "icon", children: [
6977
- status === "default" && /* @__PURE__ */ jsx310(InfoIcon_default, {}),
6978
- status === "success" && /* @__PURE__ */ jsx310(SuccessIcon_default, {}),
6979
- status === "warning" && /* @__PURE__ */ jsx310(InfoIcon_default, {}),
6980
- status === "error" && /* @__PURE__ */ jsx310(ErrorIcon_default, {})
7019
+ status === "default" && /* @__PURE__ */ jsx311(InfoIcon_default, {}),
7020
+ status === "success" && /* @__PURE__ */ jsx311(SuccessIcon_default, {}),
7021
+ status === "warning" && /* @__PURE__ */ jsx311(InfoIcon_default, {}),
7022
+ status === "error" && /* @__PURE__ */ jsx311(ErrorIcon_default, {})
6981
7023
  ] }),
6982
- /* @__PURE__ */ jsx310("div", { className: "message", children: message })
7024
+ /* @__PURE__ */ jsx311("div", { className: "message", children: message })
6983
7025
  ] });
6984
7026
  };
6985
7027
  InputValidations.displayName = "InputValidations";
@@ -7020,7 +7062,7 @@ var handleTelBackspace = (prevValue, currValue) => {
7020
7062
  };
7021
7063
 
7022
7064
  // src/components/Input/Input.tsx
7023
- import { jsx as jsx311, jsxs as jsxs200 } from "react/jsx-runtime";
7065
+ import { jsx as jsx312, jsxs as jsxs200 } from "react/jsx-runtime";
7024
7066
  import { createElement } from "react";
7025
7067
  var formatValue = (type, value) => {
7026
7068
  if (value === null || value === void 0) return "";
@@ -7069,7 +7111,7 @@ var parseValue = (type, value) => {
7069
7111
  return value;
7070
7112
  }
7071
7113
  };
7072
- var Input = React7.forwardRef((props, ref) => {
7114
+ var Input = React8.forwardRef((props, ref) => {
7073
7115
  const {
7074
7116
  value,
7075
7117
  className,
@@ -7102,7 +7144,7 @@ var Input = React7.forwardRef((props, ref) => {
7102
7144
  {
7103
7145
  className: clsx_default("lib-xplat-input", size, disabled ? "disabled" : void 0),
7104
7146
  children: [
7105
- /* @__PURE__ */ jsx311(
7147
+ /* @__PURE__ */ jsx312(
7106
7148
  "input",
7107
7149
  {
7108
7150
  ...inputProps,
@@ -7113,11 +7155,11 @@ var Input = React7.forwardRef((props, ref) => {
7113
7155
  onChange: handleChange
7114
7156
  }
7115
7157
  ),
7116
- suffix && /* @__PURE__ */ jsx311("div", { className: "suffix", children: suffix })
7158
+ suffix && /* @__PURE__ */ jsx312("div", { className: "suffix", children: suffix })
7117
7159
  ]
7118
7160
  }
7119
7161
  ),
7120
- validations && /* @__PURE__ */ jsx311("div", { className: "lib-xplat-input-validation-wrap", children: validations?.map((validation, idx) => /* @__PURE__ */ createElement(
7162
+ validations && /* @__PURE__ */ jsx312("div", { className: "lib-xplat-input-validation-wrap", children: validations?.map((validation, idx) => /* @__PURE__ */ createElement(
7121
7163
  InputValidations_default,
7122
7164
  {
7123
7165
  ...validation,
@@ -7130,20 +7172,20 @@ Input.displayName = "Input";
7130
7172
  var Input_default = Input;
7131
7173
 
7132
7174
  // src/components/Input/PasswordInput/PasswordInput.tsx
7133
- import React8 from "react";
7134
- import { jsx as jsx312 } from "react/jsx-runtime";
7135
- var PasswordInput = React8.forwardRef(
7175
+ import React9 from "react";
7176
+ import { jsx as jsx313 } from "react/jsx-runtime";
7177
+ var PasswordInput = React9.forwardRef(
7136
7178
  (props, ref) => {
7137
7179
  const { reg: _reg, ...inputProps } = props;
7138
- const [isView, setIsView] = React8.useState(false);
7180
+ const [isView, setIsView] = React9.useState(false);
7139
7181
  const handleChangeView = () => {
7140
7182
  setIsView((prev) => !prev);
7141
7183
  };
7142
- return /* @__PURE__ */ jsx312(
7184
+ return /* @__PURE__ */ jsx313(
7143
7185
  Input_default,
7144
7186
  {
7145
7187
  ...inputProps,
7146
- suffix: /* @__PURE__ */ jsx312("div", { className: "wrapper pointer", onClick: handleChangeView, children: isView ? /* @__PURE__ */ jsx312(OpenEyeIcon_default, {}) : /* @__PURE__ */ jsx312(CloseEyeIcon_default, {}) }),
7188
+ suffix: /* @__PURE__ */ jsx313("div", { className: "wrapper pointer", onClick: handleChangeView, children: isView ? /* @__PURE__ */ jsx313(OpenEyeIcon_default, {}) : /* @__PURE__ */ jsx313(CloseEyeIcon_default, {}) }),
7147
7189
  type: isView ? "text" : "password",
7148
7190
  ref
7149
7191
  }
@@ -7154,17 +7196,17 @@ PasswordInput.displayName = "PasswordInput";
7154
7196
  var PasswordInput_default = PasswordInput;
7155
7197
 
7156
7198
  // src/components/Modal/Modal.tsx
7157
- import React10 from "react";
7199
+ import React11 from "react";
7158
7200
  import { createPortal } from "react-dom";
7159
7201
 
7160
7202
  // src/tokens/hooks/Portal.tsx
7161
- import React9 from "react";
7203
+ import React10 from "react";
7162
7204
  import ReactDOM from "react-dom";
7163
- import { jsx as jsx313 } from "react/jsx-runtime";
7164
- var PortalContainerContext = React9.createContext(null);
7165
- var PortalProvider = ({ container, children }) => /* @__PURE__ */ jsx313(PortalContainerContext.Provider, { value: container, children });
7205
+ import { jsx as jsx314 } from "react/jsx-runtime";
7206
+ var PortalContainerContext = React10.createContext(null);
7207
+ var PortalProvider = ({ container, children }) => /* @__PURE__ */ jsx314(PortalContainerContext.Provider, { value: container, children });
7166
7208
  var Portal = ({ children }) => {
7167
- const contextContainer = React9.useContext(PortalContainerContext);
7209
+ const contextContainer = React10.useContext(PortalContainerContext);
7168
7210
  if (typeof document === "undefined") return null;
7169
7211
  const container = contextContainer ?? document.body;
7170
7212
  return ReactDOM.createPortal(children, container);
@@ -7173,14 +7215,14 @@ Portal.displayName = "Portal";
7173
7215
  var Portal_default = Portal;
7174
7216
 
7175
7217
  // src/components/Modal/Modal.tsx
7176
- import { jsx as jsx314 } from "react/jsx-runtime";
7218
+ import { jsx as jsx315 } from "react/jsx-runtime";
7177
7219
  var ANIMATION_DURATION_MS = 200;
7178
7220
  var Modal = (props) => {
7179
7221
  const { isOpen, onClose, children } = props;
7180
- const [mounted, setMounted] = React10.useState(false);
7181
- const [visible, setVisible] = React10.useState(false);
7182
- const boxRef = React10.useRef(null);
7183
- React10.useEffect(() => {
7222
+ const [mounted, setMounted] = React11.useState(false);
7223
+ const [visible, setVisible] = React11.useState(false);
7224
+ const boxRef = React11.useRef(null);
7225
+ React11.useEffect(() => {
7184
7226
  if (isOpen) {
7185
7227
  setMounted(true);
7186
7228
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -7194,12 +7236,12 @@ var Modal = (props) => {
7194
7236
  if (!mounted) return null;
7195
7237
  const stateClass = visible ? "enter" : "exit";
7196
7238
  return createPortal(
7197
- /* @__PURE__ */ jsx314(
7239
+ /* @__PURE__ */ jsx315(
7198
7240
  "div",
7199
7241
  {
7200
7242
  className: clsx_default("lib-xplat-modal", "dim", stateClass),
7201
7243
  onClick: onClose,
7202
- children: /* @__PURE__ */ jsx314(
7244
+ children: /* @__PURE__ */ jsx315(
7203
7245
  "div",
7204
7246
  {
7205
7247
  ref: boxRef,
@@ -7207,7 +7249,7 @@ var Modal = (props) => {
7207
7249
  role: "dialog",
7208
7250
  "aria-modal": "true",
7209
7251
  onClick: (e) => e.stopPropagation(),
7210
- children: /* @__PURE__ */ jsx314(PortalProvider, { container: boxRef.current, children })
7252
+ children: /* @__PURE__ */ jsx315(PortalProvider, { container: boxRef.current, children })
7211
7253
  }
7212
7254
  )
7213
7255
  }
@@ -7219,9 +7261,9 @@ Modal.displayName = "Modal";
7219
7261
  var Modal_default = Modal;
7220
7262
 
7221
7263
  // src/components/DatePicker/SingleDatePicker/index.tsx
7222
- import React11 from "react";
7223
- import { Fragment as Fragment3, jsx as jsx315, jsxs as jsxs201 } from "react/jsx-runtime";
7224
- var DayCell2 = React11.memo(
7264
+ import React12 from "react";
7265
+ import { Fragment as Fragment3, jsx as jsx316, jsxs as jsxs201 } from "react/jsx-runtime";
7266
+ var DayCell2 = React12.memo(
7225
7267
  ({
7226
7268
  day,
7227
7269
  disabled,
@@ -7231,7 +7273,7 @@ var DayCell2 = React11.memo(
7231
7273
  isEnd,
7232
7274
  inRange,
7233
7275
  onSelect
7234
- }) => /* @__PURE__ */ jsx315(
7276
+ }) => /* @__PURE__ */ jsx316(
7235
7277
  "button",
7236
7278
  {
7237
7279
  type: "button",
@@ -7273,26 +7315,26 @@ var SingleDatePicker = (props) => {
7273
7315
  initialYear,
7274
7316
  initialMonth
7275
7317
  );
7276
- const [pickerMode, setPickerMode] = React11.useState("days");
7277
- const [yearRangeStart, setYearRangeStart] = React11.useState(
7318
+ const [pickerMode, setPickerMode] = React12.useState("days");
7319
+ const [yearRangeStart, setYearRangeStart] = React12.useState(
7278
7320
  Math.floor((initialYear ?? (/* @__PURE__ */ new Date()).getFullYear()) / 12) * 12
7279
7321
  );
7280
- const minTime = React11.useMemo(
7322
+ const minTime = React12.useMemo(
7281
7323
  () => minDate ? new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()).getTime() : -Infinity,
7282
7324
  [minDate]
7283
7325
  );
7284
- const maxTime = React11.useMemo(
7326
+ const maxTime = React12.useMemo(
7285
7327
  () => maxDate ? new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()).getTime() : Infinity,
7286
7328
  [maxDate]
7287
7329
  );
7288
- const highlightSet = React11.useMemo(() => {
7330
+ const highlightSet = React12.useMemo(() => {
7289
7331
  const set = /* @__PURE__ */ new Set();
7290
7332
  for (const h of highlightDates) {
7291
7333
  set.add(`${h.getFullYear()}-${h.getMonth()}-${h.getDate()}`);
7292
7334
  }
7293
7335
  return set;
7294
7336
  }, [highlightDates]);
7295
- const handleSelect = React11.useCallback(
7337
+ const handleSelect = React12.useCallback(
7296
7338
  (date) => {
7297
7339
  onChange?.(date);
7298
7340
  },
@@ -7335,14 +7377,14 @@ var SingleDatePicker = (props) => {
7335
7377
  className: clsx_default("lib-xplat-datepicker", "single"),
7336
7378
  children: [
7337
7379
  /* @__PURE__ */ jsxs201("div", { className: "datepicker-header", children: [
7338
- /* @__PURE__ */ jsx315("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ jsx315(ChevronLeftIcon_default, {}) }),
7339
- /* @__PURE__ */ jsx315("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
7340
- /* @__PURE__ */ jsx315("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ jsx315(ChevronRightIcon_default, {}) })
7380
+ /* @__PURE__ */ jsx316("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ jsx316(ChevronLeftIcon_default, {}) }),
7381
+ /* @__PURE__ */ jsx316("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
7382
+ /* @__PURE__ */ jsx316("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ jsx316(ChevronRightIcon_default, {}) })
7341
7383
  ] }),
7342
7384
  /* @__PURE__ */ jsxs201("div", { className: "datepicker-body", children: [
7343
- pickerMode === "years" && /* @__PURE__ */ jsx315("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
7385
+ pickerMode === "years" && /* @__PURE__ */ jsx316("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
7344
7386
  const y = yearRangeStart + i;
7345
- return /* @__PURE__ */ jsx315(
7387
+ return /* @__PURE__ */ jsx316(
7346
7388
  "button",
7347
7389
  {
7348
7390
  type: "button",
@@ -7353,7 +7395,7 @@ var SingleDatePicker = (props) => {
7353
7395
  y
7354
7396
  );
7355
7397
  }) }),
7356
- pickerMode === "months" && /* @__PURE__ */ jsx315("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ jsx315(
7398
+ pickerMode === "months" && /* @__PURE__ */ jsx316("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ jsx316(
7357
7399
  "button",
7358
7400
  {
7359
7401
  type: "button",
@@ -7364,7 +7406,7 @@ var SingleDatePicker = (props) => {
7364
7406
  i
7365
7407
  )) }),
7366
7408
  pickerMode === "days" && /* @__PURE__ */ jsxs201(Fragment3, { children: [
7367
- /* @__PURE__ */ jsx315("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ jsx315(
7409
+ /* @__PURE__ */ jsx316("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ jsx316(
7368
7410
  "div",
7369
7411
  {
7370
7412
  className: clsx_default(
@@ -7376,7 +7418,7 @@ var SingleDatePicker = (props) => {
7376
7418
  },
7377
7419
  label
7378
7420
  )) }),
7379
- /* @__PURE__ */ jsx315("div", { className: "datepicker-grid", children: days.map((day, idx) => {
7421
+ /* @__PURE__ */ jsx316("div", { className: "datepicker-grid", children: days.map((day, idx) => {
7380
7422
  const t = day.date.getTime();
7381
7423
  const disabled = t < minTime || t > maxTime;
7382
7424
  const selected = value ? isSameDay(day.date, value) : false;
@@ -7386,7 +7428,7 @@ var SingleDatePicker = (props) => {
7386
7428
  const isStart = hasRange ? isSameDay(day.date, rangeStart) : false;
7387
7429
  const isEnd = hasRange ? isSameDay(day.date, rangeEnd) : false;
7388
7430
  const inRangeVal = hasRange ? isInRange(day.date, rangeStart, rangeEnd) : false;
7389
- return /* @__PURE__ */ jsx315(
7431
+ return /* @__PURE__ */ jsx316(
7390
7432
  DayCell2,
7391
7433
  {
7392
7434
  day,
@@ -7411,7 +7453,7 @@ SingleDatePicker.displayName = "SingleDatePicker";
7411
7453
  var SingleDatePicker_default = SingleDatePicker;
7412
7454
 
7413
7455
  // src/components/DatePicker/InputDatePicker/index.tsx
7414
- import { jsx as jsx316, jsxs as jsxs202 } from "react/jsx-runtime";
7456
+ import { jsx as jsx317, jsxs as jsxs202 } from "react/jsx-runtime";
7415
7457
  var formatDate = (date) => {
7416
7458
  if (!date || !(date instanceof Date) || isNaN(date.getTime())) return "";
7417
7459
  const y = date.getFullYear();
@@ -7421,8 +7463,8 @@ var formatDate = (date) => {
7421
7463
  };
7422
7464
  var InputDatePicker = (props) => {
7423
7465
  const { value, onChange, minDate, maxDate, disabled, locale = "ko", placeholder } = props;
7424
- const [isOpen, setIsOpen] = React12.useState(false);
7425
- const [tempDate, setTempDate] = React12.useState(value ?? /* @__PURE__ */ new Date());
7466
+ const [isOpen, setIsOpen] = React13.useState(false);
7467
+ const [tempDate, setTempDate] = React13.useState(value ?? /* @__PURE__ */ new Date());
7426
7468
  const handleOpen = () => {
7427
7469
  if (disabled) return;
7428
7470
  setTempDate(value ?? /* @__PURE__ */ new Date());
@@ -7439,18 +7481,18 @@ var InputDatePicker = (props) => {
7439
7481
  setIsOpen(false);
7440
7482
  };
7441
7483
  return /* @__PURE__ */ jsxs202("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
7442
- /* @__PURE__ */ jsx316("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ jsx316(
7484
+ /* @__PURE__ */ jsx317("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ jsx317(
7443
7485
  Input_default,
7444
7486
  {
7445
7487
  value: formatDate(value),
7446
7488
  placeholder,
7447
- suffix: /* @__PURE__ */ jsx316(CalenderIcon_default, {}),
7489
+ suffix: /* @__PURE__ */ jsx317(CalenderIcon_default, {}),
7448
7490
  disabled,
7449
7491
  readOnly: true
7450
7492
  }
7451
7493
  ) }),
7452
- /* @__PURE__ */ jsx316(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs202("div", { className: "lib-xplat-popup-datepicker-card", children: [
7453
- /* @__PURE__ */ jsx316("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ jsx316(
7494
+ /* @__PURE__ */ jsx317(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs202("div", { className: "lib-xplat-popup-datepicker-card", children: [
7495
+ /* @__PURE__ */ jsx317("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ jsx317(
7454
7496
  SingleDatePicker_default,
7455
7497
  {
7456
7498
  value: tempDate,
@@ -7461,8 +7503,8 @@ var InputDatePicker = (props) => {
7461
7503
  }
7462
7504
  ) }),
7463
7505
  /* @__PURE__ */ jsxs202("div", { className: "popup-datepicker-footer", children: [
7464
- /* @__PURE__ */ jsx316(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
7465
- /* @__PURE__ */ jsx316(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
7506
+ /* @__PURE__ */ jsx317(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
7507
+ /* @__PURE__ */ jsx317(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
7466
7508
  ] })
7467
7509
  ] }) })
7468
7510
  ] });
@@ -7471,20 +7513,20 @@ InputDatePicker.displayName = "InputDatePicker";
7471
7513
  var InputDatePicker_default = InputDatePicker;
7472
7514
 
7473
7515
  // src/components/DatePicker/PopupPicker/index.tsx
7474
- import React16 from "react";
7516
+ import React17 from "react";
7475
7517
 
7476
7518
  // src/components/DatePicker/RangePicker/index.tsx
7477
- import React15 from "react";
7519
+ import React16 from "react";
7478
7520
 
7479
7521
  // src/components/Tab/Tab.tsx
7480
- import React14 from "react";
7522
+ import React15 from "react";
7481
7523
 
7482
7524
  // src/components/Tab/TabItem.tsx
7483
- import React13 from "react";
7484
- import { jsx as jsx317 } from "react/jsx-runtime";
7485
- var TabItem = React13.forwardRef((props, ref) => {
7525
+ import React14 from "react";
7526
+ import { jsx as jsx318 } from "react/jsx-runtime";
7527
+ var TabItem = React14.forwardRef((props, ref) => {
7486
7528
  const { isActive: isActive2, title, onClick } = props;
7487
- return /* @__PURE__ */ jsx317(
7529
+ return /* @__PURE__ */ jsx318(
7488
7530
  "div",
7489
7531
  {
7490
7532
  ref,
@@ -7498,25 +7540,25 @@ TabItem.displayName = "TabItem";
7498
7540
  var TabItem_default = TabItem;
7499
7541
 
7500
7542
  // src/components/Tab/Tab.tsx
7501
- import { jsx as jsx318, jsxs as jsxs203 } from "react/jsx-runtime";
7543
+ import { jsx as jsx319, jsxs as jsxs203 } from "react/jsx-runtime";
7502
7544
  var Tab = (props) => {
7503
7545
  const { activeIndex, onChange, tabs, type, size = "md" } = props;
7504
- const [underlineStyle, setUnderlineStyle] = React14.useState({
7546
+ const [underlineStyle, setUnderlineStyle] = React15.useState({
7505
7547
  left: 0,
7506
7548
  width: 0
7507
7549
  });
7508
- const itemRefs = React14.useRef([]);
7550
+ const itemRefs = React15.useRef([]);
7509
7551
  const handleChangeActiveTab = (tabItem, tabIdx) => {
7510
7552
  onChange(tabItem, tabIdx);
7511
7553
  };
7512
- React14.useEffect(() => {
7554
+ React15.useEffect(() => {
7513
7555
  const el = itemRefs.current[activeIndex];
7514
7556
  if (el) {
7515
7557
  setUnderlineStyle({ left: el.offsetLeft, width: el.offsetWidth });
7516
7558
  }
7517
7559
  }, [activeIndex, tabs.length]);
7518
7560
  return /* @__PURE__ */ jsxs203("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
7519
- tabs.map((tab, idx) => /* @__PURE__ */ jsx318(
7561
+ tabs.map((tab, idx) => /* @__PURE__ */ jsx319(
7520
7562
  TabItem_default,
7521
7563
  {
7522
7564
  onClick: () => handleChangeActiveTab(tab, idx),
@@ -7528,7 +7570,7 @@ var Tab = (props) => {
7528
7570
  },
7529
7571
  `${tab.value}_${idx}`
7530
7572
  )),
7531
- type === "toggle" && /* @__PURE__ */ jsx318(
7573
+ type === "toggle" && /* @__PURE__ */ jsx319(
7532
7574
  "div",
7533
7575
  {
7534
7576
  className: "tab-toggle-underline",
@@ -7544,7 +7586,7 @@ Tab.displayName = "Tab";
7544
7586
  var Tab_default = Tab;
7545
7587
 
7546
7588
  // src/components/DatePicker/RangePicker/index.tsx
7547
- import { jsx as jsx319, jsxs as jsxs204 } from "react/jsx-runtime";
7589
+ import { jsx as jsx320, jsxs as jsxs204 } from "react/jsx-runtime";
7548
7590
  var RangePicker = (props) => {
7549
7591
  const {
7550
7592
  startDate,
@@ -7554,7 +7596,7 @@ var RangePicker = (props) => {
7554
7596
  maxDate,
7555
7597
  locale = "ko"
7556
7598
  } = props;
7557
- const [activeTab, setActiveTab] = React15.useState("start");
7599
+ const [activeTab, setActiveTab] = React16.useState("start");
7558
7600
  const handleStartChange = (date) => {
7559
7601
  if (!date) return;
7560
7602
  const newStart = date > endDate ? endDate : date;
@@ -7568,7 +7610,7 @@ var RangePicker = (props) => {
7568
7610
  const startMaxDate = maxDate && endDate < maxDate ? endDate : endDate;
7569
7611
  const endMinDate = minDate && startDate > minDate ? startDate : startDate;
7570
7612
  return /* @__PURE__ */ jsxs204("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
7571
- /* @__PURE__ */ jsx319("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ jsx319(
7613
+ /* @__PURE__ */ jsx320("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ jsx320(
7572
7614
  Tab_default,
7573
7615
  {
7574
7616
  activeIndex: activeTab === "start" ? 0 : 1,
@@ -7582,7 +7624,7 @@ var RangePicker = (props) => {
7582
7624
  }
7583
7625
  ) }),
7584
7626
  /* @__PURE__ */ jsxs204("div", { className: "datepicker-range-panels", children: [
7585
- /* @__PURE__ */ jsx319(
7627
+ /* @__PURE__ */ jsx320(
7586
7628
  SingleDatePicker_default,
7587
7629
  {
7588
7630
  value: startDate,
@@ -7594,7 +7636,7 @@ var RangePicker = (props) => {
7594
7636
  locale
7595
7637
  }
7596
7638
  ),
7597
- /* @__PURE__ */ jsx319(
7639
+ /* @__PURE__ */ jsx320(
7598
7640
  SingleDatePicker_default,
7599
7641
  {
7600
7642
  value: endDate,
@@ -7607,7 +7649,7 @@ var RangePicker = (props) => {
7607
7649
  }
7608
7650
  )
7609
7651
  ] }),
7610
- /* @__PURE__ */ jsx319("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ jsx319(
7652
+ /* @__PURE__ */ jsx320("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ jsx320(
7611
7653
  SingleDatePicker_default,
7612
7654
  {
7613
7655
  value: startDate,
@@ -7618,7 +7660,7 @@ var RangePicker = (props) => {
7618
7660
  rangeEnd: endDate,
7619
7661
  locale
7620
7662
  }
7621
- ) : /* @__PURE__ */ jsx319(
7663
+ ) : /* @__PURE__ */ jsx320(
7622
7664
  SingleDatePicker_default,
7623
7665
  {
7624
7666
  value: endDate,
@@ -7636,10 +7678,10 @@ RangePicker.displayName = "RangePicker";
7636
7678
  var RangePicker_default = RangePicker;
7637
7679
 
7638
7680
  // src/components/DatePicker/PopupPicker/index.tsx
7639
- import { jsx as jsx320, jsxs as jsxs205 } from "react/jsx-runtime";
7681
+ import { jsx as jsx321, jsxs as jsxs205 } from "react/jsx-runtime";
7640
7682
  var PopupPicker = (props) => {
7641
7683
  const { component, type, locale } = props;
7642
- const [isOpen, setIsOpen] = React16.useState(false);
7684
+ const [isOpen, setIsOpen] = React17.useState(false);
7643
7685
  const handleClick = () => setIsOpen(true);
7644
7686
  const handleClose = () => setIsOpen(false);
7645
7687
  const handleSingleChange = (date) => {
@@ -7648,10 +7690,10 @@ var PopupPicker = (props) => {
7648
7690
  handleClose();
7649
7691
  };
7650
7692
  return /* @__PURE__ */ jsxs205("div", { className: "lib-xplat-popup-datepicker", children: [
7651
- React16.cloneElement(component, { onClick: handleClick }),
7652
- /* @__PURE__ */ jsx320(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs205("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
7693
+ React17.cloneElement(component, { onClick: handleClick }),
7694
+ /* @__PURE__ */ jsx321(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs205("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
7653
7695
  /* @__PURE__ */ jsxs205("div", { className: "popup-datepicker-content", children: [
7654
- type === "single" && /* @__PURE__ */ jsx320(
7696
+ type === "single" && /* @__PURE__ */ jsx321(
7655
7697
  SingleDatePicker_default,
7656
7698
  {
7657
7699
  value: props.value,
@@ -7661,7 +7703,7 @@ var PopupPicker = (props) => {
7661
7703
  locale
7662
7704
  }
7663
7705
  ),
7664
- type === "range" && /* @__PURE__ */ jsx320(
7706
+ type === "range" && /* @__PURE__ */ jsx321(
7665
7707
  RangePicker_default,
7666
7708
  {
7667
7709
  startDate: props.startDate,
@@ -7674,7 +7716,7 @@ var PopupPicker = (props) => {
7674
7716
  )
7675
7717
  ] }),
7676
7718
  /* @__PURE__ */ jsxs205("div", { className: "popup-datepicker-footer", children: [
7677
- /* @__PURE__ */ jsx320(
7719
+ /* @__PURE__ */ jsx321(
7678
7720
  Button_default,
7679
7721
  {
7680
7722
  type: "secondary",
@@ -7682,7 +7724,7 @@ var PopupPicker = (props) => {
7682
7724
  children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel"
7683
7725
  }
7684
7726
  ),
7685
- /* @__PURE__ */ jsx320(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
7727
+ /* @__PURE__ */ jsx321(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
7686
7728
  ] })
7687
7729
  ] }) })
7688
7730
  ] });
@@ -7691,10 +7733,10 @@ PopupPicker.displayName = "PopupPicker";
7691
7733
  var PopupPicker_default = PopupPicker;
7692
7734
 
7693
7735
  // src/components/Divider/Divider.tsx
7694
- import { jsx as jsx321 } from "react/jsx-runtime";
7736
+ import { jsx as jsx322 } from "react/jsx-runtime";
7695
7737
  var Divider = (props) => {
7696
7738
  const { orientation = "horizontal" } = props;
7697
- return /* @__PURE__ */ jsx321(
7739
+ return /* @__PURE__ */ jsx322(
7698
7740
  "div",
7699
7741
  {
7700
7742
  className: clsx_default("lib-xplat-divider", orientation),
@@ -7707,15 +7749,15 @@ Divider.displayName = "Divider";
7707
7749
  var Divider_default = Divider;
7708
7750
 
7709
7751
  // src/components/Drawer/Drawer.tsx
7710
- import React17 from "react";
7752
+ import React18 from "react";
7711
7753
  import { createPortal as createPortal2 } from "react-dom";
7712
- import { jsx as jsx322, jsxs as jsxs206 } from "react/jsx-runtime";
7754
+ import { jsx as jsx323, jsxs as jsxs206 } from "react/jsx-runtime";
7713
7755
  var ANIMATION_DURATION_MS2 = 250;
7714
7756
  var Drawer = (props) => {
7715
7757
  const { isOpen, onClose, placement = "right", size = "md", title, children } = props;
7716
- const [mounted, setMounted] = React17.useState(false);
7717
- const [visible, setVisible] = React17.useState(false);
7718
- React17.useEffect(() => {
7758
+ const [mounted, setMounted] = React18.useState(false);
7759
+ const [visible, setVisible] = React18.useState(false);
7760
+ React18.useEffect(() => {
7719
7761
  if (isOpen) {
7720
7762
  setMounted(true);
7721
7763
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -7729,7 +7771,7 @@ var Drawer = (props) => {
7729
7771
  if (!mounted) return null;
7730
7772
  const stateClass = visible ? "enter" : "exit";
7731
7773
  return createPortal2(
7732
- /* @__PURE__ */ jsx322(
7774
+ /* @__PURE__ */ jsx323(
7733
7775
  "div",
7734
7776
  {
7735
7777
  className: clsx_default("lib-xplat-drawer-overlay", stateClass),
@@ -7743,10 +7785,10 @@ var Drawer = (props) => {
7743
7785
  onClick: (e) => e.stopPropagation(),
7744
7786
  children: [
7745
7787
  title && /* @__PURE__ */ jsxs206("div", { className: "drawer-header", children: [
7746
- /* @__PURE__ */ jsx322("span", { className: "drawer-title", children: title }),
7747
- /* @__PURE__ */ jsx322("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
7788
+ /* @__PURE__ */ jsx323("span", { className: "drawer-title", children: title }),
7789
+ /* @__PURE__ */ jsx323("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
7748
7790
  ] }),
7749
- /* @__PURE__ */ jsx322("div", { className: "drawer-body", children })
7791
+ /* @__PURE__ */ jsx323("div", { className: "drawer-body", children })
7750
7792
  ]
7751
7793
  }
7752
7794
  )
@@ -7759,16 +7801,16 @@ Drawer.displayName = "Drawer";
7759
7801
  var Drawer_default = Drawer;
7760
7802
 
7761
7803
  // src/components/Dropdown/Dropdown.tsx
7762
- import React20 from "react";
7804
+ import React21 from "react";
7763
7805
 
7764
7806
  // src/tokens/hooks/useAutoPosition.ts
7765
- import React18 from "react";
7807
+ import React19 from "react";
7766
7808
  var useAutoPosition = (triggerRef, popRef, enabled = true) => {
7767
- const [position, setPosition] = React18.useState({
7809
+ const [position, setPosition] = React19.useState({
7768
7810
  position: {},
7769
7811
  direction: "bottom"
7770
7812
  });
7771
- const calculatePosition = React18.useCallback(() => {
7813
+ const calculatePosition = React19.useCallback(() => {
7772
7814
  if (!triggerRef.current || !popRef.current) return;
7773
7815
  const triggerRect = triggerRef.current.getBoundingClientRect();
7774
7816
  const popW = popRef.current.offsetWidth;
@@ -7795,13 +7837,13 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
7795
7837
  direction
7796
7838
  });
7797
7839
  }, [triggerRef, popRef]);
7798
- React18.useLayoutEffect(() => {
7840
+ React19.useLayoutEffect(() => {
7799
7841
  if (!enabled) return;
7800
7842
  calculatePosition();
7801
7843
  const raf = requestAnimationFrame(calculatePosition);
7802
7844
  return () => cancelAnimationFrame(raf);
7803
7845
  }, [calculatePosition, enabled]);
7804
- React18.useEffect(() => {
7846
+ React19.useEffect(() => {
7805
7847
  if (!enabled || !popRef.current) return;
7806
7848
  const observer = new ResizeObserver(() => {
7807
7849
  calculatePosition();
@@ -7809,7 +7851,7 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
7809
7851
  observer.observe(popRef.current);
7810
7852
  return () => observer.disconnect();
7811
7853
  }, [calculatePosition, enabled, popRef]);
7812
- React18.useEffect(() => {
7854
+ React19.useEffect(() => {
7813
7855
  if (!enabled) return;
7814
7856
  window.addEventListener("resize", calculatePosition);
7815
7857
  window.addEventListener("scroll", calculatePosition, true);
@@ -7823,9 +7865,9 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
7823
7865
  var useAutoPosition_default = useAutoPosition;
7824
7866
 
7825
7867
  // src/tokens/hooks/useClickOutside.ts
7826
- import React19 from "react";
7868
+ import React20 from "react";
7827
7869
  var useClickOutside = (refs, handler, enabled = true) => {
7828
- React19.useEffect(() => {
7870
+ React20.useEffect(() => {
7829
7871
  if (!enabled) return;
7830
7872
  const refArray = Array.isArray(refs) ? refs : [refs];
7831
7873
  const listener = (event) => {
@@ -7848,17 +7890,17 @@ var useClickOutside = (refs, handler, enabled = true) => {
7848
7890
  var useClickOutside_default = useClickOutside;
7849
7891
 
7850
7892
  // src/components/Dropdown/Dropdown.tsx
7851
- import { jsx as jsx323, jsxs as jsxs207 } from "react/jsx-runtime";
7893
+ import { jsx as jsx324, jsxs as jsxs207 } from "react/jsx-runtime";
7852
7894
  var Dropdown = (props) => {
7853
7895
  const { items, children } = props;
7854
- const [isOpen, setIsOpen] = React20.useState(false);
7855
- const [mounted, setMounted] = React20.useState(false);
7856
- const [visible, setVisible] = React20.useState(false);
7857
- const triggerRef = React20.useRef(null);
7858
- const menuRef = React20.useRef(null);
7896
+ const [isOpen, setIsOpen] = React21.useState(false);
7897
+ const [mounted, setMounted] = React21.useState(false);
7898
+ const [visible, setVisible] = React21.useState(false);
7899
+ const triggerRef = React21.useRef(null);
7900
+ const menuRef = React21.useRef(null);
7859
7901
  const { position, direction } = useAutoPosition_default(triggerRef, menuRef, mounted);
7860
7902
  useClickOutside_default([triggerRef, menuRef], () => setIsOpen(false), isOpen);
7861
- React20.useEffect(() => {
7903
+ React21.useEffect(() => {
7862
7904
  if (isOpen) {
7863
7905
  setMounted(true);
7864
7906
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -7874,7 +7916,7 @@ var Dropdown = (props) => {
7874
7916
  setIsOpen(false);
7875
7917
  };
7876
7918
  return /* @__PURE__ */ jsxs207("div", { className: "lib-xplat-dropdown", children: [
7877
- /* @__PURE__ */ jsx323(
7919
+ /* @__PURE__ */ jsx324(
7878
7920
  "div",
7879
7921
  {
7880
7922
  ref: triggerRef,
@@ -7883,14 +7925,14 @@ var Dropdown = (props) => {
7883
7925
  children
7884
7926
  }
7885
7927
  ),
7886
- mounted && /* @__PURE__ */ jsx323(Portal_default, { children: /* @__PURE__ */ jsx323(
7928
+ mounted && /* @__PURE__ */ jsx324(Portal_default, { children: /* @__PURE__ */ jsx324(
7887
7929
  "div",
7888
7930
  {
7889
7931
  ref: menuRef,
7890
7932
  className: clsx_default("lib-xplat-dropdown-menu", direction, { visible }),
7891
7933
  style: { top: position.top, left: position.left },
7892
7934
  role: "menu",
7893
- children: items.map((item) => /* @__PURE__ */ jsx323(
7935
+ children: items.map((item) => /* @__PURE__ */ jsx324(
7894
7936
  "button",
7895
7937
  {
7896
7938
  className: clsx_default("dropdown-item", {
@@ -7912,8 +7954,8 @@ Dropdown.displayName = "Dropdown";
7912
7954
  var Dropdown_default = Dropdown;
7913
7955
 
7914
7956
  // src/components/Editor/Editor.tsx
7915
- import React21 from "react";
7916
- import { jsx as jsx324, jsxs as jsxs208 } from "react/jsx-runtime";
7957
+ import React22 from "react";
7958
+ import { jsx as jsx325, jsxs as jsxs208 } from "react/jsx-runtime";
7917
7959
  var DEFAULT_TOOLBAR = [
7918
7960
  "bold",
7919
7961
  "italic",
@@ -8020,21 +8062,21 @@ var Editor = (props) => {
8020
8062
  onImageUpload,
8021
8063
  minHeight = 200
8022
8064
  } = props;
8023
- const editorRef = React21.useRef(null);
8024
- const lastRangeRef = React21.useRef(null);
8025
- const composingRef = React21.useRef(false);
8026
- const [isFocused, setIsFocused] = React21.useState(false);
8027
- const [isEmpty, setIsEmpty] = React21.useState(!value);
8028
- const [activeFormats, setActiveFormats] = React21.useState(/* @__PURE__ */ new Set());
8029
- const [slashOpen, setSlashOpen] = React21.useState(false);
8030
- const [slashFilter, setSlashFilter] = React21.useState("");
8031
- const [slashIdx, setSlashIdx] = React21.useState(0);
8032
- const [slashPos, setSlashPos] = React21.useState({ top: 0, left: 0 });
8033
- const slashStartRangeRef = React21.useRef(null);
8034
- const [linkOpen, setLinkOpen] = React21.useState(false);
8035
- const [linkValue, setLinkValue] = React21.useState("");
8036
- const [linkPos, setLinkPos] = React21.useState({ top: 0, left: 0 });
8037
- React21.useEffect(() => {
8065
+ const editorRef = React22.useRef(null);
8066
+ const lastRangeRef = React22.useRef(null);
8067
+ const composingRef = React22.useRef(false);
8068
+ const [isFocused, setIsFocused] = React22.useState(false);
8069
+ const [isEmpty, setIsEmpty] = React22.useState(!value);
8070
+ const [activeFormats, setActiveFormats] = React22.useState(/* @__PURE__ */ new Set());
8071
+ const [slashOpen, setSlashOpen] = React22.useState(false);
8072
+ const [slashFilter, setSlashFilter] = React22.useState("");
8073
+ const [slashIdx, setSlashIdx] = React22.useState(0);
8074
+ const [slashPos, setSlashPos] = React22.useState({ top: 0, left: 0 });
8075
+ const slashStartRangeRef = React22.useRef(null);
8076
+ const [linkOpen, setLinkOpen] = React22.useState(false);
8077
+ const [linkValue, setLinkValue] = React22.useState("");
8078
+ const [linkPos, setLinkPos] = React22.useState({ top: 0, left: 0 });
8079
+ React22.useEffect(() => {
8038
8080
  if (!editorRef.current) return;
8039
8081
  if (editorRef.current.innerHTML !== value) {
8040
8082
  editorRef.current.innerHTML = sanitizeHtml(value || "");
@@ -8148,7 +8190,7 @@ var Editor = (props) => {
8148
8190
  setSlashIdx(0);
8149
8191
  slashStartRangeRef.current = null;
8150
8192
  };
8151
- const filteredSlashItems = React21.useMemo(() => {
8193
+ const filteredSlashItems = React22.useMemo(() => {
8152
8194
  if (!slashFilter) return SLASH_ITEMS;
8153
8195
  const f = slashFilter.toLowerCase();
8154
8196
  return SLASH_ITEMS.filter((it) => it.label.toLowerCase().includes(f) || it.key.includes(f));
@@ -8434,7 +8476,7 @@ var Editor = (props) => {
8434
8476
  }
8435
8477
  };
8436
8478
  return /* @__PURE__ */ jsxs208("div", { className: clsx_default("lib-xplat-editor", isFocused && "focused", readOnly && "readonly"), children: [
8437
- !readOnly && /* @__PURE__ */ jsx324(
8479
+ !readOnly && /* @__PURE__ */ jsx325(
8438
8480
  EditorToolbar,
8439
8481
  {
8440
8482
  items: toolbar,
@@ -8443,8 +8485,8 @@ var Editor = (props) => {
8443
8485
  }
8444
8486
  ),
8445
8487
  /* @__PURE__ */ jsxs208("div", { className: "lib-xplat-editor__content", style: { minHeight }, children: [
8446
- isEmpty && !isFocused && /* @__PURE__ */ jsx324("div", { className: "lib-xplat-editor__placeholder", children: placeholder }),
8447
- /* @__PURE__ */ jsx324(
8488
+ isEmpty && !isFocused && /* @__PURE__ */ jsx325("div", { className: "lib-xplat-editor__placeholder", children: placeholder }),
8489
+ /* @__PURE__ */ jsx325(
8448
8490
  "div",
8449
8491
  {
8450
8492
  ref: editorRef,
@@ -8463,7 +8505,7 @@ var Editor = (props) => {
8463
8505
  spellCheck: true
8464
8506
  }
8465
8507
  ),
8466
- slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ jsx324(
8508
+ slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ jsx325(
8467
8509
  SlashMenu,
8468
8510
  {
8469
8511
  position: slashPos,
@@ -8473,7 +8515,7 @@ var Editor = (props) => {
8473
8515
  onClose: closeSlashMenu
8474
8516
  }
8475
8517
  ),
8476
- linkOpen && /* @__PURE__ */ jsx324(
8518
+ linkOpen && /* @__PURE__ */ jsx325(
8477
8519
  LinkPopover,
8478
8520
  {
8479
8521
  position: linkPos,
@@ -8525,7 +8567,7 @@ var isActive = (item, active) => {
8525
8567
  return active.has(item);
8526
8568
  };
8527
8569
  var EditorToolbar = ({ items, active, onAction }) => {
8528
- return /* @__PURE__ */ jsx324("div", { className: "lib-xplat-editor__toolbar", children: items.map((item) => /* @__PURE__ */ jsx324(
8570
+ return /* @__PURE__ */ jsx325("div", { className: "lib-xplat-editor__toolbar", children: items.map((item) => /* @__PURE__ */ jsx325(
8529
8571
  "button",
8530
8572
  {
8531
8573
  type: "button",
@@ -8541,7 +8583,7 @@ var EditorToolbar = ({ items, active, onAction }) => {
8541
8583
  )) });
8542
8584
  };
8543
8585
  var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
8544
- React21.useEffect(() => {
8586
+ React22.useEffect(() => {
8545
8587
  const handleClickOutside = (e) => {
8546
8588
  const target = e.target;
8547
8589
  const menu = document.querySelector(".lib-xplat-editor__slash-menu");
@@ -8550,7 +8592,7 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
8550
8592
  window.addEventListener("mousedown", handleClickOutside);
8551
8593
  return () => window.removeEventListener("mousedown", handleClickOutside);
8552
8594
  }, [onClose]);
8553
- return /* @__PURE__ */ jsx324(
8595
+ return /* @__PURE__ */ jsx325(
8554
8596
  "div",
8555
8597
  {
8556
8598
  className: "lib-xplat-editor__slash-menu",
@@ -8565,8 +8607,8 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
8565
8607
  onSelect(item);
8566
8608
  },
8567
8609
  children: [
8568
- /* @__PURE__ */ jsx324("span", { className: "label", children: item.label }),
8569
- item.hint && /* @__PURE__ */ jsx324("span", { className: "hint", children: item.hint })
8610
+ /* @__PURE__ */ jsx325("span", { className: "label", children: item.label }),
8611
+ item.hint && /* @__PURE__ */ jsx325("span", { className: "hint", children: item.hint })
8570
8612
  ]
8571
8613
  },
8572
8614
  item.key
@@ -8575,8 +8617,8 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
8575
8617
  );
8576
8618
  };
8577
8619
  var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
8578
- const inputRef = React21.useRef(null);
8579
- React21.useEffect(() => {
8620
+ const inputRef = React22.useRef(null);
8621
+ React22.useEffect(() => {
8580
8622
  inputRef.current?.focus();
8581
8623
  }, []);
8582
8624
  return /* @__PURE__ */ jsxs208(
@@ -8585,7 +8627,7 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
8585
8627
  className: "lib-xplat-editor__link-popover",
8586
8628
  style: { top: position.top, left: position.left },
8587
8629
  children: [
8588
- /* @__PURE__ */ jsx324(
8630
+ /* @__PURE__ */ jsx325(
8589
8631
  "input",
8590
8632
  {
8591
8633
  ref: inputRef,
@@ -8605,11 +8647,11 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
8605
8647
  }
8606
8648
  }
8607
8649
  ),
8608
- /* @__PURE__ */ jsx324("button", { type: "button", onMouseDown: (e) => {
8650
+ /* @__PURE__ */ jsx325("button", { type: "button", onMouseDown: (e) => {
8609
8651
  e.preventDefault();
8610
8652
  onConfirm();
8611
8653
  }, children: "\uC801\uC6A9" }),
8612
- /* @__PURE__ */ jsx324("button", { type: "button", onMouseDown: (e) => {
8654
+ /* @__PURE__ */ jsx325("button", { type: "button", onMouseDown: (e) => {
8613
8655
  e.preventDefault();
8614
8656
  onClose();
8615
8657
  }, children: "\uCDE8\uC18C" })
@@ -8619,23 +8661,23 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
8619
8661
  };
8620
8662
 
8621
8663
  // src/components/EmptyState/EmptyState.tsx
8622
- import { jsx as jsx325, jsxs as jsxs209 } from "react/jsx-runtime";
8664
+ import { jsx as jsx326, jsxs as jsxs209 } from "react/jsx-runtime";
8623
8665
  var EmptyState = (props) => {
8624
8666
  const { icon, title = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4", description, action } = props;
8625
8667
  return /* @__PURE__ */ jsxs209("div", { className: "lib-xplat-empty-state", children: [
8626
- icon && /* @__PURE__ */ jsx325("div", { className: "empty-icon", children: icon }),
8627
- !icon && /* @__PURE__ */ jsx325("div", { className: "empty-icon", children: /* @__PURE__ */ jsx325("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx325("path", { d: "M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" }) }) }),
8628
- /* @__PURE__ */ jsx325("p", { className: "empty-title", children: title }),
8629
- description && /* @__PURE__ */ jsx325("p", { className: "empty-description", children: description }),
8630
- action && /* @__PURE__ */ jsx325("div", { className: "empty-action", children: action })
8668
+ icon && /* @__PURE__ */ jsx326("div", { className: "empty-icon", children: icon }),
8669
+ !icon && /* @__PURE__ */ jsx326("div", { className: "empty-icon", children: /* @__PURE__ */ jsx326("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx326("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" }) }) }),
8670
+ /* @__PURE__ */ jsx326("p", { className: "empty-title", children: title }),
8671
+ description && /* @__PURE__ */ jsx326("p", { className: "empty-description", children: description }),
8672
+ action && /* @__PURE__ */ jsx326("div", { className: "empty-action", children: action })
8631
8673
  ] });
8632
8674
  };
8633
8675
  EmptyState.displayName = "EmptyState";
8634
8676
  var EmptyState_default = EmptyState;
8635
8677
 
8636
8678
  // src/components/FileUpload/FileUpload.tsx
8637
- import React22 from "react";
8638
- import { jsx as jsx326, jsxs as jsxs210 } from "react/jsx-runtime";
8679
+ import React23 from "react";
8680
+ import { jsx as jsx327, jsxs as jsxs210 } from "react/jsx-runtime";
8639
8681
  var FileUpload = (props) => {
8640
8682
  const {
8641
8683
  accept,
@@ -8645,8 +8687,8 @@ var FileUpload = (props) => {
8645
8687
  label = "\uD30C\uC77C\uC744 \uB4DC\uB798\uADF8\uD558\uAC70\uB098 \uD074\uB9AD\uD558\uC5EC \uC5C5\uB85C\uB4DC",
8646
8688
  description
8647
8689
  } = props;
8648
- const [isDragOver, setIsDragOver] = React22.useState(false);
8649
- const inputRef = React22.useRef(null);
8690
+ const [isDragOver, setIsDragOver] = React23.useState(false);
8691
+ const inputRef = React23.useRef(null);
8650
8692
  const handleFiles = (fileList) => {
8651
8693
  let files = Array.from(fileList);
8652
8694
  if (maxSize) {
@@ -8685,7 +8727,7 @@ var FileUpload = (props) => {
8685
8727
  onDragLeave: handleDragLeave,
8686
8728
  onClick: () => inputRef.current?.click(),
8687
8729
  children: [
8688
- /* @__PURE__ */ jsx326(
8730
+ /* @__PURE__ */ jsx327(
8689
8731
  "input",
8690
8732
  {
8691
8733
  ref: inputRef,
@@ -8695,9 +8737,9 @@ var FileUpload = (props) => {
8695
8737
  onChange: handleChange
8696
8738
  }
8697
8739
  ),
8698
- /* @__PURE__ */ jsx326("div", { className: "upload-icon", children: /* @__PURE__ */ jsx326(UploadIcon_default, {}) }),
8699
- /* @__PURE__ */ jsx326("p", { className: "upload-label", children: label }),
8700
- description && /* @__PURE__ */ jsx326("p", { className: "upload-description", children: description })
8740
+ /* @__PURE__ */ jsx327("div", { className: "upload-icon", children: /* @__PURE__ */ jsx327(UploadIcon_default, {}) }),
8741
+ /* @__PURE__ */ jsx327("p", { className: "upload-label", children: label }),
8742
+ description && /* @__PURE__ */ jsx327("p", { className: "upload-description", children: description })
8701
8743
  ]
8702
8744
  }
8703
8745
  );
@@ -8706,10 +8748,10 @@ FileUpload.displayName = "FileUpload";
8706
8748
  var FileUpload_default = FileUpload;
8707
8749
 
8708
8750
  // src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
8709
- import React24 from "react";
8751
+ import React25 from "react";
8710
8752
 
8711
8753
  // src/components/HtmlTypeWriter/utils.ts
8712
- import React23 from "react";
8754
+ import React24 from "react";
8713
8755
  var voidTags = /* @__PURE__ */ new Set([
8714
8756
  "br",
8715
8757
  "img",
@@ -8777,41 +8819,41 @@ var convertNodeToReactWithRange = (node, typedLen, rangeMap) => {
8777
8819
  props[attr.name] = attr.value;
8778
8820
  });
8779
8821
  if (voidTags.has(tag)) {
8780
- return React23.createElement(tag, props);
8822
+ return React24.createElement(tag, props);
8781
8823
  }
8782
8824
  const children = Array.from(element.childNodes).map((child) => convertNodeToReactWithRange(child, typedLen, rangeMap)).filter((n) => n != null);
8783
- return React23.createElement(tag, props, ...children);
8825
+ return React24.createElement(tag, props, ...children);
8784
8826
  };
8785
8827
  var htmlToReactProgressive = (root, typedLen, rangeMap) => {
8786
8828
  const nodes = Array.from(root.childNodes).map((child, idx) => {
8787
8829
  const node = convertNodeToReactWithRange(child, typedLen, rangeMap);
8788
- return node == null ? null : React23.createElement(React23.Fragment, { key: idx }, node);
8830
+ return node == null ? null : React24.createElement(React24.Fragment, { key: idx }, node);
8789
8831
  }).filter(Boolean);
8790
8832
  return nodes.length === 0 ? null : nodes;
8791
8833
  };
8792
8834
 
8793
8835
  // src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
8794
- import { jsx as jsx327 } from "react/jsx-runtime";
8836
+ import { jsx as jsx328 } from "react/jsx-runtime";
8795
8837
  var HtmlTypeWriter = ({
8796
8838
  html,
8797
8839
  duration = 20,
8798
8840
  onDone,
8799
8841
  onChange
8800
8842
  }) => {
8801
- const [typedLen, setTypedLen] = React24.useState(0);
8802
- const doneCalledRef = React24.useRef(false);
8803
- const { doc, rangeMap, totalLength } = React24.useMemo(() => {
8843
+ const [typedLen, setTypedLen] = React25.useState(0);
8844
+ const doneCalledRef = React25.useRef(false);
8845
+ const { doc, rangeMap, totalLength } = React25.useMemo(() => {
8804
8846
  if (typeof window === "undefined") return { doc: null, rangeMap: /* @__PURE__ */ new Map(), totalLength: 0 };
8805
8847
  const decoded = decodeHtmlEntities(html);
8806
8848
  const doc2 = new DOMParser().parseFromString(decoded, "text/html");
8807
8849
  const { rangeMap: rangeMap2, totalLength: totalLength2 } = buildRangeMap(doc2.body);
8808
8850
  return { doc: doc2, rangeMap: rangeMap2, totalLength: totalLength2 };
8809
8851
  }, [html]);
8810
- React24.useEffect(() => {
8852
+ React25.useEffect(() => {
8811
8853
  setTypedLen(0);
8812
8854
  doneCalledRef.current = false;
8813
8855
  }, [html]);
8814
- React24.useEffect(() => {
8856
+ React25.useEffect(() => {
8815
8857
  if (!totalLength) return;
8816
8858
  if (typedLen >= totalLength) return;
8817
8859
  const timer = window.setInterval(() => {
@@ -8819,33 +8861,33 @@ var HtmlTypeWriter = ({
8819
8861
  }, duration);
8820
8862
  return () => window.clearInterval(timer);
8821
8863
  }, [typedLen, totalLength, duration]);
8822
- React24.useEffect(() => {
8864
+ React25.useEffect(() => {
8823
8865
  if (typedLen > 0 && typedLen < totalLength) {
8824
8866
  onChange?.();
8825
8867
  }
8826
8868
  }, [typedLen, totalLength, onChange]);
8827
- React24.useEffect(() => {
8869
+ React25.useEffect(() => {
8828
8870
  if (typedLen === totalLength && totalLength > 0 && !doneCalledRef.current) {
8829
8871
  doneCalledRef.current = true;
8830
8872
  onDone?.();
8831
8873
  }
8832
8874
  }, [typedLen, totalLength, onDone]);
8833
- const parsed = React24.useMemo(
8875
+ const parsed = React25.useMemo(
8834
8876
  () => doc ? htmlToReactProgressive(doc.body, typedLen, rangeMap) : null,
8835
8877
  [doc, typedLen, rangeMap]
8836
8878
  );
8837
- return /* @__PURE__ */ jsx327("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
8879
+ return /* @__PURE__ */ jsx328("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
8838
8880
  };
8839
8881
  HtmlTypeWriter.displayName = "HtmlTypeWriter";
8840
8882
  var HtmlTypeWriter_default = HtmlTypeWriter;
8841
8883
 
8842
8884
  // src/components/ImageSelector/ImageSelector.tsx
8843
- import React25 from "react";
8844
- import { jsx as jsx328, jsxs as jsxs211 } from "react/jsx-runtime";
8885
+ import React26 from "react";
8886
+ import { jsx as jsx329, jsxs as jsxs211 } from "react/jsx-runtime";
8845
8887
  var ImageSelector = (props) => {
8846
8888
  const { value, label, onChange } = props;
8847
- const [previewUrl, setPreviewUrl] = React25.useState();
8848
- React25.useEffect(() => {
8889
+ const [previewUrl, setPreviewUrl] = React26.useState();
8890
+ React26.useEffect(() => {
8849
8891
  if (!value) {
8850
8892
  setPreviewUrl(void 0);
8851
8893
  return;
@@ -8854,7 +8896,7 @@ var ImageSelector = (props) => {
8854
8896
  setPreviewUrl(url);
8855
8897
  return () => URL.revokeObjectURL(url);
8856
8898
  }, [value]);
8857
- const inputRef = React25.useRef(null);
8899
+ const inputRef = React26.useRef(null);
8858
8900
  const handleFileChange = (e) => {
8859
8901
  const selectedFile = e.target.files?.[0];
8860
8902
  if (selectedFile) {
@@ -8868,7 +8910,7 @@ var ImageSelector = (props) => {
8868
8910
  inputRef.current?.click();
8869
8911
  };
8870
8912
  return /* @__PURE__ */ jsxs211("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
8871
- /* @__PURE__ */ jsx328(
8913
+ /* @__PURE__ */ jsx329(
8872
8914
  "input",
8873
8915
  {
8874
8916
  type: "file",
@@ -8879,12 +8921,12 @@ var ImageSelector = (props) => {
8879
8921
  }
8880
8922
  ),
8881
8923
  value && /* @__PURE__ */ jsxs211("div", { className: "action-bar", children: [
8882
- /* @__PURE__ */ jsx328("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ jsx328(UploadIcon_default, {}) }),
8883
- /* @__PURE__ */ jsx328("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ jsx328(DeleteIcon_default, {}) })
8924
+ /* @__PURE__ */ jsx329("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ jsx329(UploadIcon_default, {}) }),
8925
+ /* @__PURE__ */ jsx329("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ jsx329(DeleteIcon_default, {}) })
8884
8926
  ] }),
8885
- /* @__PURE__ */ jsx328("div", { className: "content", children: previewUrl ? /* @__PURE__ */ jsx328("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ jsxs211("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
8886
- /* @__PURE__ */ jsx328("div", { className: "icon-wrapper", children: /* @__PURE__ */ jsx328(ImageIcon_default, {}) }),
8887
- /* @__PURE__ */ jsx328("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
8927
+ /* @__PURE__ */ jsx329("div", { className: "content", children: previewUrl ? /* @__PURE__ */ jsx329("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ jsxs211("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
8928
+ /* @__PURE__ */ jsx329("div", { className: "icon-wrapper", children: /* @__PURE__ */ jsx329(ImageIcon_default, {}) }),
8929
+ /* @__PURE__ */ jsx329("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
8888
8930
  ] }) })
8889
8931
  ] });
8890
8932
  };
@@ -8892,7 +8934,7 @@ ImageSelector.displayName = "ImageSelector";
8892
8934
  var ImageSelector_default = ImageSelector;
8893
8935
 
8894
8936
  // src/components/Pagination/Pagination.tsx
8895
- import { jsx as jsx329, jsxs as jsxs212 } from "react/jsx-runtime";
8937
+ import { jsx as jsx330, jsxs as jsxs212 } from "react/jsx-runtime";
8896
8938
  var getPageRange = (current, totalPages, siblingCount) => {
8897
8939
  const totalNumbers = siblingCount * 2 + 5;
8898
8940
  if (totalPages <= totalNumbers) {
@@ -8936,18 +8978,18 @@ var Pagination = (props) => {
8936
8978
  }
8937
8979
  };
8938
8980
  return /* @__PURE__ */ jsxs212("nav", { className: clsx_default("lib-xplat-pagination", size, type), "aria-label": "\uD398\uC774\uC9C0 \uB124\uBE44\uAC8C\uC774\uC158", children: [
8939
- /* @__PURE__ */ jsx329(
8981
+ /* @__PURE__ */ jsx330(
8940
8982
  "button",
8941
8983
  {
8942
8984
  className: "page-btn prev",
8943
8985
  disabled: current <= 1,
8944
8986
  onClick: () => handleClick(current - 1),
8945
8987
  "aria-label": "\uC774\uC804 \uD398\uC774\uC9C0",
8946
- children: /* @__PURE__ */ jsx329(ChevronLeftIcon_default, {})
8988
+ children: /* @__PURE__ */ jsx330(ChevronLeftIcon_default, {})
8947
8989
  }
8948
8990
  ),
8949
8991
  pages.map(
8950
- (page, i) => page === "..." ? /* @__PURE__ */ jsx329("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ jsx329(
8992
+ (page, i) => page === "..." ? /* @__PURE__ */ jsx330("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ jsx330(
8951
8993
  "button",
8952
8994
  {
8953
8995
  className: clsx_default("page-btn", { active: page === current }),
@@ -8958,14 +9000,14 @@ var Pagination = (props) => {
8958
9000
  page
8959
9001
  )
8960
9002
  ),
8961
- /* @__PURE__ */ jsx329(
9003
+ /* @__PURE__ */ jsx330(
8962
9004
  "button",
8963
9005
  {
8964
9006
  className: "page-btn next",
8965
9007
  disabled: current >= totalPages,
8966
9008
  onClick: () => handleClick(current + 1),
8967
9009
  "aria-label": "\uB2E4\uC74C \uD398\uC774\uC9C0",
8968
- children: /* @__PURE__ */ jsx329(ChevronRightIcon_default, {})
9010
+ children: /* @__PURE__ */ jsx330(ChevronRightIcon_default, {})
8969
9011
  }
8970
9012
  )
8971
9013
  ] });
@@ -8974,17 +9016,17 @@ Pagination.displayName = "Pagination";
8974
9016
  var Pagination_default = Pagination;
8975
9017
 
8976
9018
  // src/components/PopOver/PopOver.tsx
8977
- import React26 from "react";
8978
- import { jsx as jsx330, jsxs as jsxs213 } from "react/jsx-runtime";
9019
+ import React27 from "react";
9020
+ import { jsx as jsx331, jsxs as jsxs213 } from "react/jsx-runtime";
8979
9021
  var PopOver = (props) => {
8980
9022
  const { children, isOpen, onClose, PopOverEl } = props;
8981
- const popRef = React26.useRef(null);
8982
- const triggerRef = React26.useRef(null);
8983
- const [localOpen, setLocalOpen] = React26.useState(false);
8984
- const [eventTrigger, setEventTrigger] = React26.useState(false);
9023
+ const popRef = React27.useRef(null);
9024
+ const triggerRef = React27.useRef(null);
9025
+ const [localOpen, setLocalOpen] = React27.useState(false);
9026
+ const [eventTrigger, setEventTrigger] = React27.useState(false);
8985
9027
  useClickOutside_default([popRef, triggerRef], onClose, isOpen);
8986
9028
  const position = useAutoPosition_default(triggerRef, popRef, localOpen);
8987
- React26.useEffect(() => {
9029
+ React27.useEffect(() => {
8988
9030
  if (isOpen) {
8989
9031
  setLocalOpen(isOpen);
8990
9032
  setTimeout(() => {
@@ -9007,7 +9049,7 @@ var PopOver = (props) => {
9007
9049
  },
9008
9050
  children: [
9009
9051
  children,
9010
- localOpen && /* @__PURE__ */ jsx330(Portal_default, { children: /* @__PURE__ */ jsx330(
9052
+ localOpen && /* @__PURE__ */ jsx331(Portal_default, { children: /* @__PURE__ */ jsx331(
9011
9053
  "div",
9012
9054
  {
9013
9055
  className: clsx_default(
@@ -9030,7 +9072,7 @@ PopOver.displayName = "PopOver";
9030
9072
  var PopOver_default = PopOver;
9031
9073
 
9032
9074
  // src/components/Progress/Progress.tsx
9033
- import { jsx as jsx331, jsxs as jsxs214 } from "react/jsx-runtime";
9075
+ import { jsx as jsx332, jsxs as jsxs214 } from "react/jsx-runtime";
9034
9076
  var Progress = (props) => {
9035
9077
  const {
9036
9078
  value,
@@ -9041,7 +9083,7 @@ var Progress = (props) => {
9041
9083
  } = props;
9042
9084
  const percentage = Math.min(100, Math.max(0, value / max * 100));
9043
9085
  return /* @__PURE__ */ jsxs214("div", { className: clsx_default("lib-xplat-progress", size, type), children: [
9044
- /* @__PURE__ */ jsx331(
9086
+ /* @__PURE__ */ jsx332(
9045
9087
  "div",
9046
9088
  {
9047
9089
  className: "track",
@@ -9049,7 +9091,7 @@ var Progress = (props) => {
9049
9091
  "aria-valuenow": value,
9050
9092
  "aria-valuemin": 0,
9051
9093
  "aria-valuemax": max,
9052
- children: /* @__PURE__ */ jsx331(
9094
+ children: /* @__PURE__ */ jsx332(
9053
9095
  "div",
9054
9096
  {
9055
9097
  className: "bar",
@@ -9068,17 +9110,17 @@ Progress.displayName = "Progress";
9068
9110
  var Progress_default = Progress;
9069
9111
 
9070
9112
  // src/components/Radio/RadioGroupContext.tsx
9071
- import React27 from "react";
9072
- var RadioGroupContext = React27.createContext(
9113
+ import React28 from "react";
9114
+ var RadioGroupContext = React28.createContext(
9073
9115
  null
9074
9116
  );
9075
9117
  var useRadioGroupContext = () => {
9076
- return React27.useContext(RadioGroupContext);
9118
+ return React28.useContext(RadioGroupContext);
9077
9119
  };
9078
9120
  var RadioGroupContext_default = RadioGroupContext;
9079
9121
 
9080
9122
  // src/components/Radio/Radio.tsx
9081
- import { jsx as jsx332, jsxs as jsxs215 } from "react/jsx-runtime";
9123
+ import { jsx as jsx333, jsxs as jsxs215 } from "react/jsx-runtime";
9082
9124
  var Radio = (props) => {
9083
9125
  const {
9084
9126
  label,
@@ -9108,18 +9150,18 @@ var Radio = (props) => {
9108
9150
  className
9109
9151
  ),
9110
9152
  children: [
9111
- /* @__PURE__ */ jsx332("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
9112
- /* @__PURE__ */ jsx332(
9153
+ /* @__PURE__ */ jsx333("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
9154
+ /* @__PURE__ */ jsx333(
9113
9155
  "div",
9114
9156
  {
9115
9157
  className: clsx_default(
9116
9158
  "circle",
9117
9159
  localChecked ? "checked" : void 0
9118
9160
  ),
9119
- children: localChecked && /* @__PURE__ */ jsx332("div", { className: "inner-circle" })
9161
+ children: localChecked && /* @__PURE__ */ jsx333("div", { className: "inner-circle" })
9120
9162
  }
9121
9163
  ),
9122
- label && /* @__PURE__ */ jsx332("span", { children: label })
9164
+ label && /* @__PURE__ */ jsx333("span", { children: label })
9123
9165
  ]
9124
9166
  }
9125
9167
  );
@@ -9128,28 +9170,28 @@ Radio.displayName = "Radio";
9128
9170
  var Radio_default = Radio;
9129
9171
 
9130
9172
  // src/components/Radio/RadioGroup.tsx
9131
- import { Fragment as Fragment4, jsx as jsx333 } from "react/jsx-runtime";
9173
+ import { Fragment as Fragment4, jsx as jsx334 } from "react/jsx-runtime";
9132
9174
  var RadioGroup = (props) => {
9133
9175
  const { children, ...rest } = props;
9134
- return /* @__PURE__ */ jsx333(Fragment4, { children: /* @__PURE__ */ jsx333(RadioGroupContext_default.Provider, { value: rest, children }) });
9176
+ return /* @__PURE__ */ jsx334(Fragment4, { children: /* @__PURE__ */ jsx334(RadioGroupContext_default.Provider, { value: rest, children }) });
9135
9177
  };
9136
9178
  RadioGroup.displayName = "RadioGroup";
9137
9179
  var RadioGroup_default = RadioGroup;
9138
9180
 
9139
9181
  // src/components/Select/Select.tsx
9140
- import React30 from "react";
9182
+ import React31 from "react";
9141
9183
 
9142
9184
  // src/components/Select/context.ts
9143
- import React28 from "react";
9144
- var SelectContext = React28.createContext(null);
9185
+ import React29 from "react";
9186
+ var SelectContext = React29.createContext(null);
9145
9187
  var context_default = SelectContext;
9146
9188
 
9147
9189
  // src/components/Select/SelectItem.tsx
9148
- import React29 from "react";
9149
- import { jsx as jsx334 } from "react/jsx-runtime";
9190
+ import React30 from "react";
9191
+ import { jsx as jsx335 } from "react/jsx-runtime";
9150
9192
  var SelectItem = (props) => {
9151
9193
  const { children, value, onClick, disabled = false } = props;
9152
- const ctx = React29.useContext(context_default);
9194
+ const ctx = React30.useContext(context_default);
9153
9195
  const handleClick = (e) => {
9154
9196
  e.preventDefault();
9155
9197
  e.stopPropagation();
@@ -9159,7 +9201,7 @@ var SelectItem = (props) => {
9159
9201
  onClick?.();
9160
9202
  };
9161
9203
  const isSelected = value !== void 0 ? ctx?.selectedValue === value : ctx?.selectedLabel === children;
9162
- return /* @__PURE__ */ jsx334(
9204
+ return /* @__PURE__ */ jsx335(
9163
9205
  "div",
9164
9206
  {
9165
9207
  className: clsx_default("select-item", disabled && "disabled", isSelected && "is-selected"),
@@ -9180,7 +9222,7 @@ SelectItem.displayName = "Select.Item";
9180
9222
  var SelectItem_default = SelectItem;
9181
9223
 
9182
9224
  // src/components/Select/Select.tsx
9183
- import { jsx as jsx335, jsxs as jsxs216 } from "react/jsx-runtime";
9225
+ import { jsx as jsx336, jsxs as jsxs216 } from "react/jsx-runtime";
9184
9226
  var ANIMATION_DURATION_MS3 = 200;
9185
9227
  var SelectRoot = (props) => {
9186
9228
  const {
@@ -9192,28 +9234,28 @@ var SelectRoot = (props) => {
9192
9234
  error = false,
9193
9235
  size = "md"
9194
9236
  } = props;
9195
- const itemChildren = React30.Children.toArray(children).filter(
9196
- (child) => React30.isValidElement(child) && child.type === SelectItem_default
9237
+ const itemChildren = React31.Children.toArray(children).filter(
9238
+ (child) => React31.isValidElement(child) && child.type === SelectItem_default
9197
9239
  );
9198
9240
  const isControlled = valueProp !== void 0;
9199
- const [isOpen, setOpen] = React30.useState(false);
9200
- const [uncontrolledLabel, setUncontrolledLabel] = React30.useState(null);
9201
- const [uncontrolledValue, setUncontrolledValue] = React30.useState(void 0);
9202
- const controlledLabel = React30.useMemo(() => {
9241
+ const [isOpen, setOpen] = React31.useState(false);
9242
+ const [uncontrolledLabel, setUncontrolledLabel] = React31.useState(null);
9243
+ const [uncontrolledValue, setUncontrolledValue] = React31.useState(void 0);
9244
+ const controlledLabel = React31.useMemo(() => {
9203
9245
  if (!isControlled) return null;
9204
9246
  const match = itemChildren.find((child) => child.props.value === valueProp);
9205
9247
  return match ? match.props.children : null;
9206
9248
  }, [isControlled, valueProp, itemChildren]);
9207
9249
  const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
9208
9250
  const selectedValue = isControlled ? valueProp : uncontrolledValue;
9209
- const triggerRef = React30.useRef(null);
9210
- const contentRef = React30.useRef(null);
9211
- const [mounted, setMounted] = React30.useState(false);
9212
- const [visible, setVisible] = React30.useState(false);
9213
- React30.useEffect(() => {
9251
+ const triggerRef = React31.useRef(null);
9252
+ const contentRef = React31.useRef(null);
9253
+ const [mounted, setMounted] = React31.useState(false);
9254
+ const [visible, setVisible] = React31.useState(false);
9255
+ React31.useEffect(() => {
9214
9256
  if (disabled && isOpen) setOpen(false);
9215
9257
  }, [disabled, isOpen]);
9216
- React30.useEffect(() => {
9258
+ React31.useEffect(() => {
9217
9259
  if (isOpen) {
9218
9260
  setMounted(true);
9219
9261
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -9223,12 +9265,12 @@ var SelectRoot = (props) => {
9223
9265
  const t = setTimeout(() => setMounted(false), ANIMATION_DURATION_MS3);
9224
9266
  return () => clearTimeout(t);
9225
9267
  }, [isOpen]);
9226
- const open = React30.useCallback(() => setOpen(true), []);
9227
- const close = React30.useCallback(() => setOpen(false), []);
9228
- const toggle = React30.useCallback(() => setOpen((prev) => !prev), []);
9268
+ const open = React31.useCallback(() => setOpen(true), []);
9269
+ const close = React31.useCallback(() => setOpen(false), []);
9270
+ const toggle = React31.useCallback(() => setOpen((prev) => !prev), []);
9229
9271
  useClickOutside_default([contentRef, triggerRef], close, isOpen);
9230
9272
  const position = useAutoPosition_default(triggerRef, contentRef, mounted);
9231
- const setSelected = React30.useCallback(
9273
+ const setSelected = React31.useCallback(
9232
9274
  (label, itemValue) => {
9233
9275
  if (!isControlled) {
9234
9276
  setUncontrolledLabel(label);
@@ -9238,7 +9280,7 @@ var SelectRoot = (props) => {
9238
9280
  },
9239
9281
  [isControlled, onChange]
9240
9282
  );
9241
- const ctxValue = React30.useMemo(
9283
+ const ctxValue = React31.useMemo(
9242
9284
  () => ({
9243
9285
  isOpen,
9244
9286
  mounted,
@@ -9260,7 +9302,7 @@ var SelectRoot = (props) => {
9260
9302
  if (disabled) return;
9261
9303
  toggle();
9262
9304
  };
9263
- return /* @__PURE__ */ jsx335(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs216(
9305
+ return /* @__PURE__ */ jsx336(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs216(
9264
9306
  "div",
9265
9307
  {
9266
9308
  className: clsx_default(
@@ -9295,7 +9337,7 @@ var SelectRoot = (props) => {
9295
9337
  }
9296
9338
  },
9297
9339
  children: [
9298
- /* @__PURE__ */ jsx335(
9340
+ /* @__PURE__ */ jsx336(
9299
9341
  "span",
9300
9342
  {
9301
9343
  className: clsx_default(
@@ -9305,25 +9347,25 @@ var SelectRoot = (props) => {
9305
9347
  children: selectedLabel ?? placeholder
9306
9348
  }
9307
9349
  ),
9308
- /* @__PURE__ */ jsx335(
9350
+ /* @__PURE__ */ jsx336(
9309
9351
  "span",
9310
9352
  {
9311
9353
  className: clsx_default("select-trigger-icon", isOpen && "open"),
9312
9354
  "aria-hidden": true,
9313
- children: /* @__PURE__ */ jsx335(ChevronDownIcon_default, {})
9355
+ children: /* @__PURE__ */ jsx336(ChevronDownIcon_default, {})
9314
9356
  }
9315
9357
  )
9316
9358
  ]
9317
9359
  }
9318
9360
  ),
9319
- mounted && /* @__PURE__ */ jsx335(Portal_default, { children: /* @__PURE__ */ jsx335(
9361
+ mounted && /* @__PURE__ */ jsx336(Portal_default, { children: /* @__PURE__ */ jsx336(
9320
9362
  "div",
9321
9363
  {
9322
9364
  className: clsx_default("lib-xplat-select-content", size, position.direction, stateClass),
9323
9365
  ref: contentRef,
9324
9366
  style: { ...position.position, width: triggerRef.current?.offsetWidth },
9325
9367
  role: "listbox",
9326
- children: /* @__PURE__ */ jsx335(context_default.Provider, { value: ctxValue, children: itemChildren })
9368
+ children: /* @__PURE__ */ jsx336(context_default.Provider, { value: ctxValue, children: itemChildren })
9327
9369
  }
9328
9370
  ) })
9329
9371
  ]
@@ -9337,7 +9379,7 @@ var Select = Object.assign(SelectRoot, {
9337
9379
  var Select_default = Select;
9338
9380
 
9339
9381
  // src/components/Skeleton/Skeleton.tsx
9340
- import { jsx as jsx336 } from "react/jsx-runtime";
9382
+ import { jsx as jsx337 } from "react/jsx-runtime";
9341
9383
  var SIZE_MAP = {
9342
9384
  xs: "var(--spacing-size-1)",
9343
9385
  sm: "var(--spacing-size-2)",
@@ -9353,7 +9395,7 @@ var Skeleton = (props) => {
9353
9395
  ...width != null && { width: SIZE_MAP[width] },
9354
9396
  ...height != null && { height: SIZE_MAP[height] }
9355
9397
  };
9356
- return /* @__PURE__ */ jsx336(
9398
+ return /* @__PURE__ */ jsx337(
9357
9399
  "div",
9358
9400
  {
9359
9401
  className: clsx_default("lib-xplat-skeleton", variant),
@@ -9366,20 +9408,20 @@ Skeleton.displayName = "Skeleton";
9366
9408
  var Skeleton_default = Skeleton;
9367
9409
 
9368
9410
  // src/components/Spinner/Spinner.tsx
9369
- import { jsx as jsx337, jsxs as jsxs217 } from "react/jsx-runtime";
9411
+ import { jsx as jsx338, jsxs as jsxs217 } from "react/jsx-runtime";
9370
9412
  var Spinner = (props) => {
9371
9413
  const {
9372
9414
  size = "md",
9373
9415
  type = "brand"
9374
9416
  } = props;
9375
- return /* @__PURE__ */ jsx337(
9417
+ return /* @__PURE__ */ jsx338(
9376
9418
  "div",
9377
9419
  {
9378
9420
  className: clsx_default("lib-xplat-spinner", size, type),
9379
9421
  role: "status",
9380
9422
  "aria-label": "\uB85C\uB529 \uC911",
9381
9423
  children: /* @__PURE__ */ jsxs217("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
9382
- /* @__PURE__ */ jsx337(
9424
+ /* @__PURE__ */ jsx338(
9383
9425
  "circle",
9384
9426
  {
9385
9427
  className: "track",
@@ -9389,7 +9431,7 @@ var Spinner = (props) => {
9389
9431
  strokeWidth: "3"
9390
9432
  }
9391
9433
  ),
9392
- /* @__PURE__ */ jsx337(
9434
+ /* @__PURE__ */ jsx338(
9393
9435
  "circle",
9394
9436
  {
9395
9437
  className: "indicator",
@@ -9408,20 +9450,20 @@ Spinner.displayName = "Spinner";
9408
9450
  var Spinner_default = Spinner;
9409
9451
 
9410
9452
  // src/components/Steps/Steps.tsx
9411
- import { jsx as jsx338, jsxs as jsxs218 } from "react/jsx-runtime";
9453
+ import { jsx as jsx339, jsxs as jsxs218 } from "react/jsx-runtime";
9412
9454
  var Steps = (props) => {
9413
9455
  const {
9414
9456
  items,
9415
9457
  current,
9416
9458
  type = "brand"
9417
9459
  } = props;
9418
- return /* @__PURE__ */ jsx338("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
9460
+ return /* @__PURE__ */ jsx339("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
9419
9461
  const status = index < current ? "completed" : index === current ? "active" : "pending";
9420
9462
  return /* @__PURE__ */ jsxs218("div", { className: clsx_default("step-item", status), children: [
9421
- /* @__PURE__ */ jsx338("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ jsx338(CheckIcon_default, {}) : /* @__PURE__ */ jsx338("span", { children: index + 1 }) }),
9463
+ /* @__PURE__ */ jsx339("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ jsx339(CheckIcon_default, {}) : /* @__PURE__ */ jsx339("span", { children: index + 1 }) }),
9422
9464
  /* @__PURE__ */ jsxs218("div", { className: "step-content", children: [
9423
- /* @__PURE__ */ jsx338("span", { className: "step-title", children: item.title }),
9424
- item.description && /* @__PURE__ */ jsx338("span", { className: "step-description", children: item.description })
9465
+ /* @__PURE__ */ jsx339("span", { className: "step-title", children: item.title }),
9466
+ item.description && /* @__PURE__ */ jsx339("span", { className: "step-description", children: item.description })
9425
9467
  ] })
9426
9468
  ] }, index);
9427
9469
  }) });
@@ -9430,8 +9472,8 @@ Steps.displayName = "Steps";
9430
9472
  var Steps_default = Steps;
9431
9473
 
9432
9474
  // src/components/Swiper/Swiper.tsx
9433
- import React31 from "react";
9434
- import { jsx as jsx339, jsxs as jsxs219 } from "react/jsx-runtime";
9475
+ import React32 from "react";
9476
+ import { jsx as jsx340, jsxs as jsxs219 } from "react/jsx-runtime";
9435
9477
  var Swiper = (props) => {
9436
9478
  const {
9437
9479
  auto = false,
@@ -9455,26 +9497,26 @@ var Swiper = (props) => {
9455
9497
  const maxIndex = Math.max(0, totalSlides - viewItemCount);
9456
9498
  const useLoop = loop && canSlide;
9457
9499
  const cloneCount = useLoop ? totalSlides : 0;
9458
- const extendedItems = React31.useMemo(() => {
9500
+ const extendedItems = React32.useMemo(() => {
9459
9501
  if (!useLoop) return items;
9460
9502
  return [...items, ...items, ...items];
9461
9503
  }, [items, useLoop]);
9462
9504
  const initialIdx = Math.max(0, Math.min(indexProp ?? 0, maxIndex));
9463
- const [innerIndex, setInnerIndex] = React31.useState(
9505
+ const [innerIndex, setInnerIndex] = React32.useState(
9464
9506
  useLoop ? cloneCount + initialIdx : initialIdx
9465
9507
  );
9466
- const [isDragging, setIsDragging] = React31.useState(false);
9467
- const [dragOffset, setDragOffset] = React31.useState(0);
9468
- const [animated, setAnimated] = React31.useState(false);
9469
- const [containerWidth, setContainerWidth] = React31.useState(0);
9470
- const containerRef = React31.useRef(null);
9471
- const startXRef = React31.useRef(0);
9472
- const startTimeRef = React31.useRef(0);
9473
- const autoplayTimerRef = React31.useRef(null);
9474
- const resumeTimeoutRef = React31.useRef(null);
9475
- const [paused, setPaused] = React31.useState(false);
9476
- const initializedRef = React31.useRef(false);
9477
- React31.useEffect(() => {
9508
+ const [isDragging, setIsDragging] = React32.useState(false);
9509
+ const [dragOffset, setDragOffset] = React32.useState(0);
9510
+ const [animated, setAnimated] = React32.useState(false);
9511
+ const [containerWidth, setContainerWidth] = React32.useState(0);
9512
+ const containerRef = React32.useRef(null);
9513
+ const startXRef = React32.useRef(0);
9514
+ const startTimeRef = React32.useRef(0);
9515
+ const autoplayTimerRef = React32.useRef(null);
9516
+ const resumeTimeoutRef = React32.useRef(null);
9517
+ const [paused, setPaused] = React32.useState(false);
9518
+ const initializedRef = React32.useRef(false);
9519
+ React32.useEffect(() => {
9478
9520
  const el = containerRef.current;
9479
9521
  if (!el) return;
9480
9522
  const ro = new ResizeObserver((entries) => {
@@ -9497,7 +9539,7 @@ var Swiper = (props) => {
9497
9539
  return ((inner - cloneCount) % totalSlides + totalSlides) % totalSlides;
9498
9540
  };
9499
9541
  const realIndex = getRealIndex(innerIndex);
9500
- const moveToInner = React31.useCallback(
9542
+ const moveToInner = React32.useCallback(
9501
9543
  (idx, withAnim = true) => {
9502
9544
  if (!useLoop) {
9503
9545
  setAnimated(withAnim);
@@ -9525,7 +9567,7 @@ var Swiper = (props) => {
9525
9567
  },
9526
9568
  [useLoop, cloneCount, totalSlides]
9527
9569
  );
9528
- const handleTransitionEnd = React31.useCallback(() => {
9570
+ const handleTransitionEnd = React32.useCallback(() => {
9529
9571
  if (!useLoop) return;
9530
9572
  const real = getRealIndex(innerIndex);
9531
9573
  const canonical = cloneCount + real;
@@ -9535,7 +9577,7 @@ var Swiper = (props) => {
9535
9577
  }
9536
9578
  onChange?.(Math.min(real, maxIndex));
9537
9579
  }, [useLoop, innerIndex, cloneCount, totalSlides, maxIndex, onChange]);
9538
- const slideTo = React31.useCallback(
9580
+ const slideTo = React32.useCallback(
9539
9581
  (logicalIndex) => {
9540
9582
  if (!canSlide) return;
9541
9583
  const clamped = useLoop ? logicalIndex : Math.max(0, Math.min(logicalIndex, maxIndex));
@@ -9545,7 +9587,7 @@ var Swiper = (props) => {
9545
9587
  },
9546
9588
  [canSlide, useLoop, cloneCount, maxIndex, onChange, moveToInner]
9547
9589
  );
9548
- const slideNext = React31.useCallback(() => {
9590
+ const slideNext = React32.useCallback(() => {
9549
9591
  if (!canSlide) return;
9550
9592
  const nextInner = innerIndex + slideBy;
9551
9593
  if (useLoop) {
@@ -9554,7 +9596,7 @@ var Swiper = (props) => {
9554
9596
  moveToInner(Math.min(nextInner, maxIndex), true);
9555
9597
  }
9556
9598
  }, [canSlide, useLoop, innerIndex, slideBy, maxIndex, moveToInner]);
9557
- const slidePrev = React31.useCallback(() => {
9599
+ const slidePrev = React32.useCallback(() => {
9558
9600
  if (!canSlide) return;
9559
9601
  const prevInner = innerIndex - slideBy;
9560
9602
  if (useLoop) {
@@ -9563,7 +9605,7 @@ var Swiper = (props) => {
9563
9605
  moveToInner(Math.max(prevInner, 0), true);
9564
9606
  }
9565
9607
  }, [canSlide, useLoop, innerIndex, slideBy, moveToInner]);
9566
- React31.useEffect(() => {
9608
+ React32.useEffect(() => {
9567
9609
  if (indexProp === void 0) return;
9568
9610
  const clamped = Math.max(0, Math.min(indexProp, maxIndex));
9569
9611
  const target = useLoop ? cloneCount + clamped : clamped;
@@ -9571,12 +9613,12 @@ var Swiper = (props) => {
9571
9613
  moveToInner(target, true);
9572
9614
  }
9573
9615
  }, [indexProp]);
9574
- React31.useImperativeHandle(swiperRef, () => ({
9616
+ React32.useImperativeHandle(swiperRef, () => ({
9575
9617
  slidePrev,
9576
9618
  slideNext,
9577
9619
  slideTo
9578
9620
  }));
9579
- React31.useEffect(() => {
9621
+ React32.useEffect(() => {
9580
9622
  if (!auto || !canSlide || paused) return;
9581
9623
  autoplayTimerRef.current = setInterval(slideNext, autoplayDelay);
9582
9624
  return () => {
@@ -9602,7 +9644,7 @@ var Swiper = (props) => {
9602
9644
  resumeTimeoutRef.current = null;
9603
9645
  }, pauseOnInteraction);
9604
9646
  };
9605
- React31.useEffect(() => {
9647
+ React32.useEffect(() => {
9606
9648
  return () => {
9607
9649
  if (resumeTimeoutRef.current) clearTimeout(resumeTimeoutRef.current);
9608
9650
  };
@@ -9620,7 +9662,7 @@ var Swiper = (props) => {
9620
9662
  startXRef.current = getClientX(e);
9621
9663
  startTimeRef.current = Date.now();
9622
9664
  };
9623
- React31.useEffect(() => {
9665
+ React32.useEffect(() => {
9624
9666
  if (!isDragging) return;
9625
9667
  const handleMove = (e) => {
9626
9668
  setDragOffset(getClientX(e) - startXRef.current);
@@ -9659,8 +9701,8 @@ var Swiper = (props) => {
9659
9701
  }, [isDragging, dragOffset, innerIndex, useLoop, maxIndex, slideStep, moveToInner]);
9660
9702
  const slideWidthPercent = 100 / viewItemCount;
9661
9703
  const gapAdjust = spaceBetween * (viewItemCount - 1) / viewItemCount;
9662
- const slideElements = React31.useMemo(
9663
- () => extendedItems.map((item, idx) => /* @__PURE__ */ jsx339(
9704
+ const slideElements = React32.useMemo(
9705
+ () => extendedItems.map((item, idx) => /* @__PURE__ */ jsx340(
9664
9706
  "div",
9665
9707
  {
9666
9708
  className: "lib-xplat-swiper__slide",
@@ -9680,14 +9722,14 @@ var Swiper = (props) => {
9680
9722
  totalSteps - 1
9681
9723
  );
9682
9724
  return /* @__PURE__ */ jsxs219("div", { className: "lib-xplat-swiper", ref: containerRef, children: [
9683
- /* @__PURE__ */ jsx339(
9725
+ /* @__PURE__ */ jsx340(
9684
9726
  "div",
9685
9727
  {
9686
9728
  className: "lib-xplat-swiper__viewport",
9687
9729
  onMouseDown: handleDragStart,
9688
9730
  onTouchStart: handleDragStart,
9689
9731
  onDragStart: (e) => e.preventDefault(),
9690
- children: /* @__PURE__ */ jsx339(
9732
+ children: /* @__PURE__ */ jsx340(
9691
9733
  "div",
9692
9734
  {
9693
9735
  className: clsx_default(
@@ -9705,7 +9747,7 @@ var Swiper = (props) => {
9705
9747
  )
9706
9748
  }
9707
9749
  ),
9708
- showProgress && canSlide && /* @__PURE__ */ jsx339("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ jsx339("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ jsx339(
9750
+ showProgress && canSlide && /* @__PURE__ */ jsx340("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ jsx340("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ jsx340(
9709
9751
  "span",
9710
9752
  {
9711
9753
  className: "lib-xplat-swiper__progress-fill",
@@ -9715,7 +9757,7 @@ var Swiper = (props) => {
9715
9757
  }
9716
9758
  }
9717
9759
  ) }) }),
9718
- canSlide && /* @__PURE__ */ jsx339("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ jsx339(
9760
+ canSlide && /* @__PURE__ */ jsx340("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ jsx340(
9719
9761
  "button",
9720
9762
  {
9721
9763
  className: clsx_default(
@@ -9733,8 +9775,8 @@ Swiper.displayName = "Swiper";
9733
9775
  var Swiper_default = Swiper;
9734
9776
 
9735
9777
  // src/components/Switch/Switch.tsx
9736
- import React32 from "react";
9737
- import { jsx as jsx340 } from "react/jsx-runtime";
9778
+ import React33 from "react";
9779
+ import { jsx as jsx341 } from "react/jsx-runtime";
9738
9780
  var KNOB_TRANSITION_MS = 250;
9739
9781
  var Switch = (props) => {
9740
9782
  const {
@@ -9744,9 +9786,9 @@ var Switch = (props) => {
9744
9786
  disabled,
9745
9787
  onChange
9746
9788
  } = props;
9747
- const [isAnimating, setIsAnimating] = React32.useState(false);
9748
- const timeoutRef = React32.useRef(null);
9749
- React32.useEffect(() => {
9789
+ const [isAnimating, setIsAnimating] = React33.useState(false);
9790
+ const timeoutRef = React33.useRef(null);
9791
+ React33.useEffect(() => {
9750
9792
  return () => {
9751
9793
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
9752
9794
  };
@@ -9761,7 +9803,7 @@ var Switch = (props) => {
9761
9803
  timeoutRef.current = null;
9762
9804
  }, KNOB_TRANSITION_MS);
9763
9805
  };
9764
- return /* @__PURE__ */ jsx340(
9806
+ return /* @__PURE__ */ jsx341(
9765
9807
  "div",
9766
9808
  {
9767
9809
  className: clsx_default(
@@ -9774,7 +9816,7 @@ var Switch = (props) => {
9774
9816
  ),
9775
9817
  onClick: handleClick,
9776
9818
  "aria-disabled": disabled || isAnimating,
9777
- children: /* @__PURE__ */ jsx340("div", { className: clsx_default("knob", value ? "checked" : void 0) })
9819
+ children: /* @__PURE__ */ jsx341("div", { className: clsx_default("knob", value ? "checked" : void 0) })
9778
9820
  }
9779
9821
  );
9780
9822
  };
@@ -9782,17 +9824,17 @@ Switch.displayName = "Switch";
9782
9824
  var Switch_default = Switch;
9783
9825
 
9784
9826
  // src/components/Table/TableContext.tsx
9785
- import React33 from "react";
9786
- var TableContext = React33.createContext(null);
9827
+ import React34 from "react";
9828
+ var TableContext = React34.createContext(null);
9787
9829
  var useTableContext = () => {
9788
- const ctx = React33.useContext(TableContext);
9830
+ const ctx = React34.useContext(TableContext);
9789
9831
  if (!ctx) throw new Error("Table components must be used inside <Table>");
9790
9832
  return ctx;
9791
9833
  };
9792
9834
  var TableContext_default = TableContext;
9793
9835
 
9794
9836
  // src/components/Table/Table.tsx
9795
- import { jsx as jsx341 } from "react/jsx-runtime";
9837
+ import { jsx as jsx342 } from "react/jsx-runtime";
9796
9838
  var Table = (props) => {
9797
9839
  const {
9798
9840
  children,
@@ -9802,7 +9844,7 @@ var Table = (props) => {
9802
9844
  headerSticky = false,
9803
9845
  stickyShadow = true
9804
9846
  } = props;
9805
- return /* @__PURE__ */ jsx341("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ jsx341(
9847
+ return /* @__PURE__ */ jsx342("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ jsx342(
9806
9848
  TableContext_default.Provider,
9807
9849
  {
9808
9850
  value: {
@@ -9811,7 +9853,7 @@ var Table = (props) => {
9811
9853
  headerSticky,
9812
9854
  stickyShadow
9813
9855
  },
9814
- children: /* @__PURE__ */ jsx341("table", { className: "lib-xplat-table", children })
9856
+ children: /* @__PURE__ */ jsx342("table", { className: "lib-xplat-table", children })
9815
9857
  }
9816
9858
  ) });
9817
9859
  };
@@ -9819,41 +9861,41 @@ Table.displayName = "Table";
9819
9861
  var Table_default = Table;
9820
9862
 
9821
9863
  // src/components/Table/TableBody.tsx
9822
- import { jsx as jsx342 } from "react/jsx-runtime";
9864
+ import { jsx as jsx343 } from "react/jsx-runtime";
9823
9865
  var TableBody = (props) => {
9824
9866
  const { children } = props;
9825
- return /* @__PURE__ */ jsx342("tbody", { children });
9867
+ return /* @__PURE__ */ jsx343("tbody", { children });
9826
9868
  };
9827
9869
  TableBody.displayName = "TableBody";
9828
9870
  var TableBody_default = TableBody;
9829
9871
 
9830
9872
  // src/components/Table/TableCell.tsx
9831
- import React36 from "react";
9873
+ import React37 from "react";
9832
9874
 
9833
9875
  // src/components/Table/TableHeadContext.tsx
9834
- import React34 from "react";
9835
- var TableHeadContext = React34.createContext(
9876
+ import React35 from "react";
9877
+ var TableHeadContext = React35.createContext(
9836
9878
  null
9837
9879
  );
9838
9880
  var useTableHeadContext = () => {
9839
- const ctx = React34.useContext(TableHeadContext);
9881
+ const ctx = React35.useContext(TableHeadContext);
9840
9882
  return ctx;
9841
9883
  };
9842
9884
  var TableHeadContext_default = TableHeadContext;
9843
9885
 
9844
9886
  // src/components/Table/TableRowContext.tsx
9845
- import React35 from "react";
9846
- var TableRowContext = React35.createContext(null);
9887
+ import React36 from "react";
9888
+ var TableRowContext = React36.createContext(null);
9847
9889
  var useTableRowContext = () => {
9848
- const ctx = React35.useContext(TableRowContext);
9890
+ const ctx = React36.useContext(TableRowContext);
9849
9891
  if (!ctx) throw new Error("Table components must be used inside <Table>");
9850
9892
  return ctx;
9851
9893
  };
9852
9894
  var TableRowContext_default = TableRowContext;
9853
9895
 
9854
9896
  // src/components/Table/TableCell.tsx
9855
- import { jsx as jsx343 } from "react/jsx-runtime";
9856
- var TableCell = React36.memo((props) => {
9897
+ import { jsx as jsx344 } from "react/jsx-runtime";
9898
+ var TableCell = React37.memo((props) => {
9857
9899
  const {
9858
9900
  children,
9859
9901
  align = "center",
@@ -9865,9 +9907,9 @@ var TableCell = React36.memo((props) => {
9865
9907
  const { registerStickyCell, stickyCells } = useTableRowContext();
9866
9908
  const { stickyShadow } = useTableContext();
9867
9909
  const headContext = useTableHeadContext();
9868
- const [left, setLeft] = React36.useState(0);
9869
- const cellRef = React36.useRef(null);
9870
- const calculateLeft = React36.useCallback(() => {
9910
+ const [left, setLeft] = React37.useState(0);
9911
+ const cellRef = React37.useRef(null);
9912
+ const calculateLeft = React37.useCallback(() => {
9871
9913
  if (!cellRef.current) return 0;
9872
9914
  let totalLeft = 0;
9873
9915
  for (const ref of stickyCells) {
@@ -9876,7 +9918,7 @@ var TableCell = React36.memo((props) => {
9876
9918
  }
9877
9919
  return totalLeft;
9878
9920
  }, [stickyCells]);
9879
- React36.useEffect(() => {
9921
+ React37.useEffect(() => {
9880
9922
  if (!isSticky || !cellRef.current) return;
9881
9923
  registerStickyCell(cellRef);
9882
9924
  setLeft(calculateLeft());
@@ -9894,7 +9936,7 @@ var TableCell = React36.memo((props) => {
9894
9936
  const CellTag = cellRef.current?.tagName === "TH" ? "th" : "td";
9895
9937
  const isLastSticky = isSticky && stickyCells[stickyCells.length - 1] === cellRef;
9896
9938
  const enableHover = headContext && headContext.cellHover;
9897
- return /* @__PURE__ */ jsx343(
9939
+ return /* @__PURE__ */ jsx344(
9898
9940
  CellTag,
9899
9941
  {
9900
9942
  ref: cellRef,
@@ -9919,21 +9961,21 @@ TableCell.displayName = "TableCell";
9919
9961
  var TableCell_default = TableCell;
9920
9962
 
9921
9963
  // src/components/Table/TableHead.tsx
9922
- import { jsx as jsx344 } from "react/jsx-runtime";
9964
+ import { jsx as jsx345 } from "react/jsx-runtime";
9923
9965
  var TableHead = ({
9924
9966
  children,
9925
9967
  cellHover = false
9926
9968
  }) => {
9927
9969
  const { headerSticky } = useTableContext();
9928
- return /* @__PURE__ */ jsx344(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ jsx344("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
9970
+ return /* @__PURE__ */ jsx345(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ jsx345("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
9929
9971
  };
9930
9972
  TableHead.displayName = "TableHead";
9931
9973
  var TableHead_default = TableHead;
9932
9974
 
9933
9975
  // src/components/Table/TableRow.tsx
9934
- import React37 from "react";
9935
- import { jsx as jsx345 } from "react/jsx-runtime";
9936
- var TableRow = React37.memo((props) => {
9976
+ import React38 from "react";
9977
+ import { jsx as jsx346 } from "react/jsx-runtime";
9978
+ var TableRow = React38.memo((props) => {
9937
9979
  const {
9938
9980
  children,
9939
9981
  type = "secondary",
@@ -9942,14 +9984,14 @@ var TableRow = React37.memo((props) => {
9942
9984
  onClick
9943
9985
  } = props;
9944
9986
  const { rowBorderUse } = useTableContext();
9945
- const [stickyCells, setStickyCells] = React37.useState([]);
9987
+ const [stickyCells, setStickyCells] = React38.useState([]);
9946
9988
  const registerStickyCell = (ref) => {
9947
9989
  setStickyCells((prev) => {
9948
9990
  if (prev.includes(ref)) return prev;
9949
9991
  return [...prev, ref];
9950
9992
  });
9951
9993
  };
9952
- return /* @__PURE__ */ jsx345(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ jsx345(
9994
+ return /* @__PURE__ */ jsx346(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ jsx346(
9953
9995
  "tr",
9954
9996
  {
9955
9997
  className: clsx_default(
@@ -9973,7 +10015,7 @@ TableRow.displayName = "TableRow";
9973
10015
  var TableRow_default = TableRow;
9974
10016
 
9975
10017
  // src/components/Tag/Tag.tsx
9976
- import { jsx as jsx346, jsxs as jsxs220 } from "react/jsx-runtime";
10018
+ import { jsx as jsx347, jsxs as jsxs220 } from "react/jsx-runtime";
9977
10019
  var Tag = (props) => {
9978
10020
  const {
9979
10021
  children,
@@ -9994,8 +10036,8 @@ var Tag = (props) => {
9994
10036
  disabled && "disabled"
9995
10037
  ),
9996
10038
  children: [
9997
- /* @__PURE__ */ jsx346("span", { className: "tag-label", children }),
9998
- onClose && /* @__PURE__ */ jsx346("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ jsx346(XIcon_default, {}) })
10039
+ /* @__PURE__ */ jsx347("span", { className: "tag-label", children }),
10040
+ onClose && /* @__PURE__ */ jsx347("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ jsx347(XIcon_default, {}) })
9999
10041
  ]
10000
10042
  }
10001
10043
  );
@@ -10004,55 +10046,27 @@ Tag.displayName = "Tag";
10004
10046
  var Tag_default = Tag;
10005
10047
 
10006
10048
  // src/components/TextArea/TextArea.tsx
10007
- import React38 from "react";
10008
- import { jsx as jsx347 } from "react/jsx-runtime";
10009
- var TextArea = React38.forwardRef(
10049
+ import React39 from "react";
10050
+ import { jsx as jsx348 } from "react/jsx-runtime";
10051
+ var TextArea = React39.forwardRef(
10010
10052
  (props, ref) => {
10011
- const { value, className, onChange, disabled, ...textareaProps } = props;
10012
- const localRef = React38.useRef(null);
10013
- const setRefs = (el) => {
10014
- localRef.current = el;
10015
- if (!ref) return;
10016
- if (typeof ref === "function") {
10017
- ref(el);
10018
- } else if (ref && typeof ref === "object" && "current" in ref) {
10019
- ref.current = el;
10020
- }
10021
- };
10022
- const handleOnChange = (e) => {
10023
- const val = e.target.value;
10024
- if (onChange) {
10025
- const event = {
10026
- ...e,
10027
- target: { value: val }
10028
- };
10029
- onChange(event);
10030
- }
10031
- };
10032
- React38.useEffect(() => {
10033
- const el = localRef.current;
10034
- if (!el) return;
10035
- el.style.height = "0px";
10036
- const nextHeight = Math.min(el.scrollHeight, 400);
10037
- el.style.height = `${nextHeight}px`;
10038
- }, [value]);
10039
- return /* @__PURE__ */ jsx347("div", { className: clsx_default("lib-xplat-textarea-wrapper", className), children: /* @__PURE__ */ jsx347(
10040
- "div",
10053
+ const {
10054
+ className,
10055
+ size = "md",
10056
+ resize = "vertical",
10057
+ rows = 3,
10058
+ disabled,
10059
+ ...textareaProps
10060
+ } = props;
10061
+ return /* @__PURE__ */ jsx348("div", { className: clsx_default("lib-xplat-textarea-wrap", className), children: /* @__PURE__ */ jsx348(
10062
+ "textarea",
10041
10063
  {
10042
- className: clsx_default(
10043
- "lib-xplat-textarea",
10044
- disabled ? "disabled" : void 0
10045
- ),
10046
- children: /* @__PURE__ */ jsx347(
10047
- "textarea",
10048
- {
10049
- ...textareaProps,
10050
- ref: setRefs,
10051
- disabled,
10052
- value,
10053
- onChange: handleOnChange
10054
- }
10055
- )
10064
+ ...textareaProps,
10065
+ ref,
10066
+ rows,
10067
+ disabled,
10068
+ className: clsx_default("lib-xplat-textarea", size, disabled && "disabled"),
10069
+ style: { resize }
10056
10070
  }
10057
10071
  ) });
10058
10072
  }
@@ -10061,25 +10075,25 @@ TextArea.displayName = "TextArea";
10061
10075
  var TextArea_default = TextArea;
10062
10076
 
10063
10077
  // src/components/Toast/Toast.tsx
10064
- import React39 from "react";
10078
+ import React40 from "react";
10065
10079
  import { createPortal as createPortal3 } from "react-dom";
10066
- import { jsx as jsx348, jsxs as jsxs221 } from "react/jsx-runtime";
10067
- var ToastContext = React39.createContext(null);
10080
+ import { jsx as jsx349, jsxs as jsxs221 } from "react/jsx-runtime";
10081
+ var ToastContext = React40.createContext(null);
10068
10082
  var useToast = () => {
10069
- const ctx = React39.useContext(ToastContext);
10083
+ const ctx = React40.useContext(ToastContext);
10070
10084
  if (!ctx) throw new Error("useToast must be used within ToastProvider");
10071
10085
  return ctx;
10072
10086
  };
10073
10087
  var EXIT_DURATION = 300;
10074
10088
  var ToastItemComponent = ({ item, isExiting, onClose }) => {
10075
- const ref = React39.useRef(null);
10076
- const [height, setHeight] = React39.useState(void 0);
10077
- React39.useEffect(() => {
10089
+ const ref = React40.useRef(null);
10090
+ const [height, setHeight] = React40.useState(void 0);
10091
+ React40.useEffect(() => {
10078
10092
  if (ref.current && !isExiting) {
10079
10093
  setHeight(ref.current.offsetHeight);
10080
10094
  }
10081
10095
  }, [isExiting]);
10082
- return /* @__PURE__ */ jsx348(
10096
+ return /* @__PURE__ */ jsx349(
10083
10097
  "div",
10084
10098
  {
10085
10099
  className: clsx_default("lib-xplat-toast-wrapper", { exit: isExiting }),
@@ -10094,8 +10108,8 @@ var ToastItemComponent = ({ item, isExiting, onClose }) => {
10094
10108
  className: clsx_default("lib-xplat-toast", item.type, { exit: isExiting }),
10095
10109
  role: "alert",
10096
10110
  children: [
10097
- /* @__PURE__ */ jsx348("span", { className: "message", children: item.message }),
10098
- /* @__PURE__ */ jsx348("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
10111
+ /* @__PURE__ */ jsx349("span", { className: "message", children: item.message }),
10112
+ /* @__PURE__ */ jsx349("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
10099
10113
  ]
10100
10114
  }
10101
10115
  )
@@ -10106,13 +10120,13 @@ var ToastProvider = ({
10106
10120
  children,
10107
10121
  position = "top-right"
10108
10122
  }) => {
10109
- const [toasts, setToasts] = React39.useState([]);
10110
- const [removing, setRemoving] = React39.useState(/* @__PURE__ */ new Set());
10111
- const [mounted, setMounted] = React39.useState(false);
10112
- React39.useEffect(() => {
10123
+ const [toasts, setToasts] = React40.useState([]);
10124
+ const [removing, setRemoving] = React40.useState(/* @__PURE__ */ new Set());
10125
+ const [mounted, setMounted] = React40.useState(false);
10126
+ React40.useEffect(() => {
10113
10127
  setMounted(true);
10114
10128
  }, []);
10115
- const remove = React39.useCallback((id) => {
10129
+ const remove = React40.useCallback((id) => {
10116
10130
  setRemoving((prev) => new Set(prev).add(id));
10117
10131
  setTimeout(() => {
10118
10132
  setToasts((prev) => prev.filter((t) => t.id !== id));
@@ -10123,7 +10137,7 @@ var ToastProvider = ({
10123
10137
  });
10124
10138
  }, EXIT_DURATION);
10125
10139
  }, []);
10126
- const toast = React39.useCallback(
10140
+ const toast = React40.useCallback(
10127
10141
  (type, message, duration = 3e3) => {
10128
10142
  const id = `${Date.now()}-${Math.random()}`;
10129
10143
  setToasts((prev) => [...prev, { id, type, message }]);
@@ -10136,7 +10150,7 @@ var ToastProvider = ({
10136
10150
  return /* @__PURE__ */ jsxs221(ToastContext.Provider, { value: { toast }, children: [
10137
10151
  children,
10138
10152
  mounted && createPortal3(
10139
- /* @__PURE__ */ jsx348("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ jsx348(
10153
+ /* @__PURE__ */ jsx349("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ jsx349(
10140
10154
  ToastItemComponent,
10141
10155
  {
10142
10156
  item: t,
@@ -10152,8 +10166,8 @@ var ToastProvider = ({
10152
10166
  ToastProvider.displayName = "ToastProvider";
10153
10167
 
10154
10168
  // src/components/Tooltip/Tooltip.tsx
10155
- import React40 from "react";
10156
- import { Fragment as Fragment5, jsx as jsx349, jsxs as jsxs222 } from "react/jsx-runtime";
10169
+ import React41 from "react";
10170
+ import { Fragment as Fragment5, jsx as jsx350, jsxs as jsxs222 } from "react/jsx-runtime";
10157
10171
  var OFFSET = 12;
10158
10172
  var SHOW_DELAY = 300;
10159
10173
  var Tooltip = (props) => {
@@ -10164,12 +10178,12 @@ var Tooltip = (props) => {
10164
10178
  children,
10165
10179
  disabled = false
10166
10180
  } = props;
10167
- const triggerRef = React40.useRef(null);
10168
- const tooltipRef = React40.useRef(null);
10169
- const [visible, setVisible] = React40.useState(false);
10170
- const [pos, setPos] = React40.useState({ left: 0, top: 0 });
10171
- const delayTimer = React40.useRef(0);
10172
- const calculatePos = React40.useCallback((clientX, clientY) => {
10181
+ const triggerRef = React41.useRef(null);
10182
+ const tooltipRef = React41.useRef(null);
10183
+ const [visible, setVisible] = React41.useState(false);
10184
+ const [pos, setPos] = React41.useState({ left: 0, top: 0 });
10185
+ const delayTimer = React41.useRef(0);
10186
+ const calculatePos = React41.useCallback((clientX, clientY) => {
10173
10187
  const el = tooltipRef.current;
10174
10188
  if (!el) return;
10175
10189
  const w = el.offsetWidth;
@@ -10182,37 +10196,37 @@ var Tooltip = (props) => {
10182
10196
  if (left < 8) left = 8;
10183
10197
  setPos({ left, top });
10184
10198
  }, []);
10185
- const handleMouseEnter = React40.useCallback(() => {
10199
+ const handleMouseEnter = React41.useCallback(() => {
10186
10200
  if (disabled) return;
10187
10201
  delayTimer.current = window.setTimeout(() => {
10188
10202
  setVisible(true);
10189
10203
  }, SHOW_DELAY);
10190
10204
  }, [disabled]);
10191
- const handleMouseMove = React40.useCallback((e) => {
10205
+ const handleMouseMove = React41.useCallback((e) => {
10192
10206
  if (!visible) return;
10193
10207
  calculatePos(e.clientX, e.clientY);
10194
10208
  }, [visible, calculatePos]);
10195
- const handleMouseLeave = React40.useCallback(() => {
10209
+ const handleMouseLeave = React41.useCallback(() => {
10196
10210
  window.clearTimeout(delayTimer.current);
10197
10211
  setVisible(false);
10198
10212
  }, []);
10199
- const handleClick = React40.useCallback(() => {
10213
+ const handleClick = React41.useCallback(() => {
10200
10214
  window.clearTimeout(delayTimer.current);
10201
10215
  setVisible(false);
10202
10216
  }, []);
10203
- const handleFocus = React40.useCallback(() => {
10217
+ const handleFocus = React41.useCallback(() => {
10204
10218
  if (disabled) return;
10205
10219
  setVisible(true);
10206
10220
  }, [disabled]);
10207
- const handleBlur = React40.useCallback(() => {
10221
+ const handleBlur = React41.useCallback(() => {
10208
10222
  setVisible(false);
10209
10223
  }, []);
10210
- React40.useLayoutEffect(() => {
10224
+ React41.useLayoutEffect(() => {
10211
10225
  if (!visible || !triggerRef.current) return;
10212
10226
  const rect = triggerRef.current.getBoundingClientRect();
10213
10227
  calculatePos(rect.right, rect.top);
10214
10228
  }, [visible, calculatePos]);
10215
- if (!title && !description) return /* @__PURE__ */ jsx349(Fragment5, { children });
10229
+ if (!title && !description) return /* @__PURE__ */ jsx350(Fragment5, { children });
10216
10230
  return /* @__PURE__ */ jsxs222(
10217
10231
  "div",
10218
10232
  {
@@ -10226,15 +10240,15 @@ var Tooltip = (props) => {
10226
10240
  onBlur: handleBlur,
10227
10241
  children: [
10228
10242
  children,
10229
- visible && /* @__PURE__ */ jsx349(Portal_default, { children: /* @__PURE__ */ jsxs222(
10243
+ visible && /* @__PURE__ */ jsx350(Portal_default, { children: /* @__PURE__ */ jsxs222(
10230
10244
  "div",
10231
10245
  {
10232
10246
  ref: tooltipRef,
10233
10247
  className: clsx_default("lib-xplat-tooltip", type),
10234
10248
  style: { position: "fixed", left: pos.left, top: pos.top },
10235
10249
  children: [
10236
- title && /* @__PURE__ */ jsx349("div", { className: "tooltip-title", children: title }),
10237
- description && /* @__PURE__ */ jsx349("div", { className: "tooltip-desc", children: description })
10250
+ title && /* @__PURE__ */ jsx350("div", { className: "tooltip-title", children: title }),
10251
+ description && /* @__PURE__ */ jsx350("div", { className: "tooltip-desc", children: description })
10238
10252
  ]
10239
10253
  }
10240
10254
  ) })
@@ -10246,11 +10260,11 @@ Tooltip.displayName = "Tooltip";
10246
10260
  var Tooltip_default = Tooltip;
10247
10261
 
10248
10262
  // src/components/Video/Video.tsx
10249
- import React41 from "react";
10250
- import { jsx as jsx350, jsxs as jsxs223 } from "react/jsx-runtime";
10263
+ import React42 from "react";
10264
+ import { jsx as jsx351, jsxs as jsxs223 } from "react/jsx-runtime";
10251
10265
  var PipIcon = () => /* @__PURE__ */ jsxs223("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
10252
- /* @__PURE__ */ jsx350("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
10253
- /* @__PURE__ */ jsx350("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
10266
+ /* @__PURE__ */ jsx351("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
10267
+ /* @__PURE__ */ jsx351("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
10254
10268
  ] });
10255
10269
  var formatTime = (sec) => {
10256
10270
  if (!Number.isFinite(sec) || sec < 0) return "0:00";
@@ -10258,7 +10272,7 @@ var formatTime = (sec) => {
10258
10272
  const s = Math.floor(sec % 60);
10259
10273
  return `${m}:${s.toString().padStart(2, "0")}`;
10260
10274
  };
10261
- var Video = React41.forwardRef((props, ref) => {
10275
+ var Video = React42.forwardRef((props, ref) => {
10262
10276
  const {
10263
10277
  src,
10264
10278
  poster,
@@ -10282,21 +10296,21 @@ var Video = React41.forwardRef((props, ref) => {
10282
10296
  children,
10283
10297
  ...rest
10284
10298
  } = props;
10285
- const containerRef = React41.useRef(null);
10286
- const videoRef = React41.useRef(null);
10287
- const [isPlaying, setIsPlaying] = React41.useState(Boolean(autoPlay));
10288
- const [isLoaded, setIsLoaded] = React41.useState(false);
10289
- const [currentTime, setCurrentTime] = React41.useState(0);
10290
- const [duration, setDuration] = React41.useState(0);
10291
- const [buffered, setBuffered] = React41.useState(0);
10292
- const [volume, setVolume] = React41.useState(1);
10293
- const [isMuted, setIsMuted] = React41.useState(Boolean(muted));
10294
- const [isFullscreen, setIsFullscreen] = React41.useState(false);
10295
- const [playbackRate, setPlaybackRate] = React41.useState(1);
10296
- const [rateMenuOpen, setRateMenuOpen] = React41.useState(false);
10297
- const [captionsOn, setCaptionsOn] = React41.useState(false);
10298
- const [isPip, setIsPip] = React41.useState(false);
10299
- const setRefs = React41.useCallback(
10299
+ const containerRef = React42.useRef(null);
10300
+ const videoRef = React42.useRef(null);
10301
+ const [isPlaying, setIsPlaying] = React42.useState(Boolean(autoPlay));
10302
+ const [isLoaded, setIsLoaded] = React42.useState(false);
10303
+ const [currentTime, setCurrentTime] = React42.useState(0);
10304
+ const [duration, setDuration] = React42.useState(0);
10305
+ const [buffered, setBuffered] = React42.useState(0);
10306
+ const [volume, setVolume] = React42.useState(1);
10307
+ const [isMuted, setIsMuted] = React42.useState(Boolean(muted));
10308
+ const [isFullscreen, setIsFullscreen] = React42.useState(false);
10309
+ const [playbackRate, setPlaybackRate] = React42.useState(1);
10310
+ const [rateMenuOpen, setRateMenuOpen] = React42.useState(false);
10311
+ const [captionsOn, setCaptionsOn] = React42.useState(false);
10312
+ const [isPip, setIsPip] = React42.useState(false);
10313
+ const setRefs = React42.useCallback(
10300
10314
  (el) => {
10301
10315
  videoRef.current = el;
10302
10316
  if (typeof ref === "function") ref(el);
@@ -10304,14 +10318,14 @@ var Video = React41.forwardRef((props, ref) => {
10304
10318
  },
10305
10319
  [ref]
10306
10320
  );
10307
- React41.useEffect(() => {
10321
+ React42.useEffect(() => {
10308
10322
  const onFsChange = () => {
10309
10323
  setIsFullscreen(document.fullscreenElement === containerRef.current);
10310
10324
  };
10311
10325
  document.addEventListener("fullscreenchange", onFsChange);
10312
10326
  return () => document.removeEventListener("fullscreenchange", onFsChange);
10313
10327
  }, []);
10314
- React41.useEffect(() => {
10328
+ React42.useEffect(() => {
10315
10329
  const v = videoRef.current;
10316
10330
  if (!v) return;
10317
10331
  const onEnter = () => setIsPip(true);
@@ -10431,7 +10445,7 @@ var Video = React41.forwardRef((props, ref) => {
10431
10445
  ref: containerRef,
10432
10446
  className: clsx_default("lib-xplat-video", showControls && "has-controls"),
10433
10447
  children: [
10434
- /* @__PURE__ */ jsx350(
10448
+ /* @__PURE__ */ jsx351(
10435
10449
  "video",
10436
10450
  {
10437
10451
  ref: setRefs,
@@ -10452,7 +10466,7 @@ var Video = React41.forwardRef((props, ref) => {
10452
10466
  children
10453
10467
  }
10454
10468
  ),
10455
- showCenterPlay && /* @__PURE__ */ jsx350(
10469
+ showCenterPlay && /* @__PURE__ */ jsx351(
10456
10470
  "button",
10457
10471
  {
10458
10472
  type: "button",
@@ -10464,11 +10478,11 @@ var Video = React41.forwardRef((props, ref) => {
10464
10478
  onClick: togglePlay,
10465
10479
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
10466
10480
  tabIndex: -1,
10467
- children: /* @__PURE__ */ jsx350("span", { className: "center-play-icon", children: /* @__PURE__ */ jsx350(PlayCircleIcon_default, {}) })
10481
+ children: /* @__PURE__ */ jsx351("span", { className: "center-play-icon", children: /* @__PURE__ */ jsx351(PlayCircleIcon_default, {}) })
10468
10482
  }
10469
10483
  ),
10470
10484
  showControls && /* @__PURE__ */ jsxs223("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
10471
- /* @__PURE__ */ jsx350(
10485
+ /* @__PURE__ */ jsx351(
10472
10486
  "input",
10473
10487
  {
10474
10488
  type: "range",
@@ -10486,28 +10500,28 @@ var Video = React41.forwardRef((props, ref) => {
10486
10500
  }
10487
10501
  ),
10488
10502
  /* @__PURE__ */ jsxs223("div", { className: "controls-row", children: [
10489
- /* @__PURE__ */ jsx350(
10503
+ /* @__PURE__ */ jsx351(
10490
10504
  "button",
10491
10505
  {
10492
10506
  type: "button",
10493
10507
  className: "control-btn",
10494
10508
  onClick: togglePlay,
10495
10509
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
10496
- children: isPlaying ? /* @__PURE__ */ jsx350(PauseIcon_default, {}) : /* @__PURE__ */ jsx350(PlayIcon_default, {})
10510
+ children: isPlaying ? /* @__PURE__ */ jsx351(PauseIcon_default, {}) : /* @__PURE__ */ jsx351(PlayIcon_default, {})
10497
10511
  }
10498
10512
  ),
10499
10513
  /* @__PURE__ */ jsxs223("div", { className: "volume-group", children: [
10500
- /* @__PURE__ */ jsx350(
10514
+ /* @__PURE__ */ jsx351(
10501
10515
  "button",
10502
10516
  {
10503
10517
  type: "button",
10504
10518
  className: "control-btn",
10505
10519
  onClick: toggleMute,
10506
10520
  "aria-label": isMuted ? "\uC74C\uC18C\uAC70 \uD574\uC81C" : "\uC74C\uC18C\uAC70",
10507
- children: /* @__PURE__ */ jsx350(VolumeGlyph, {})
10521
+ children: /* @__PURE__ */ jsx351(VolumeGlyph, {})
10508
10522
  }
10509
10523
  ),
10510
- /* @__PURE__ */ jsx350(
10524
+ /* @__PURE__ */ jsx351(
10511
10525
  "input",
10512
10526
  {
10513
10527
  type: "range",
@@ -10527,7 +10541,7 @@ var Video = React41.forwardRef((props, ref) => {
10527
10541
  " / ",
10528
10542
  formatTime(duration)
10529
10543
  ] }),
10530
- /* @__PURE__ */ jsx350("div", { className: "controls-spacer" }),
10544
+ /* @__PURE__ */ jsx351("div", { className: "controls-spacer" }),
10531
10545
  playbackRates && playbackRates.length > 0 && /* @__PURE__ */ jsxs223("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
10532
10546
  /* @__PURE__ */ jsxs223(
10533
10547
  "button",
@@ -10543,7 +10557,7 @@ var Video = React41.forwardRef((props, ref) => {
10543
10557
  ]
10544
10558
  }
10545
10559
  ),
10546
- rateMenuOpen && /* @__PURE__ */ jsx350("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ jsx350("li", { children: /* @__PURE__ */ jsxs223(
10560
+ rateMenuOpen && /* @__PURE__ */ jsx351("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ jsx351("li", { children: /* @__PURE__ */ jsxs223(
10547
10561
  "button",
10548
10562
  {
10549
10563
  type: "button",
@@ -10557,7 +10571,7 @@ var Video = React41.forwardRef((props, ref) => {
10557
10571
  }
10558
10572
  ) }, r2)) })
10559
10573
  ] }),
10560
- showCaptions && /* @__PURE__ */ jsx350(
10574
+ showCaptions && /* @__PURE__ */ jsx351(
10561
10575
  "button",
10562
10576
  {
10563
10577
  type: "button",
@@ -10565,37 +10579,37 @@ var Video = React41.forwardRef((props, ref) => {
10565
10579
  onClick: toggleCaptions,
10566
10580
  "aria-label": captionsOn ? "\uC790\uB9C9 \uB044\uAE30" : "\uC790\uB9C9 \uCF1C\uAE30",
10567
10581
  "aria-pressed": captionsOn,
10568
- children: /* @__PURE__ */ jsx350(TypeIcon_default, {})
10582
+ children: /* @__PURE__ */ jsx351(TypeIcon_default, {})
10569
10583
  }
10570
10584
  ),
10571
- showPip && pipSupported && /* @__PURE__ */ jsx350(
10585
+ showPip && pipSupported && /* @__PURE__ */ jsx351(
10572
10586
  "button",
10573
10587
  {
10574
10588
  type: "button",
10575
10589
  className: clsx_default("control-btn", isPip && "is-active"),
10576
10590
  onClick: togglePip,
10577
10591
  "aria-label": isPip ? "PIP \uC885\uB8CC" : "PIP",
10578
- children: /* @__PURE__ */ jsx350(PipIcon, {})
10592
+ children: /* @__PURE__ */ jsx351(PipIcon, {})
10579
10593
  }
10580
10594
  ),
10581
- showDownload && /* @__PURE__ */ jsx350(
10595
+ showDownload && /* @__PURE__ */ jsx351(
10582
10596
  "a",
10583
10597
  {
10584
10598
  className: "control-btn",
10585
10599
  href: src,
10586
10600
  download: downloadFileName ?? true,
10587
10601
  "aria-label": "\uB2E4\uC6B4\uB85C\uB4DC",
10588
- children: /* @__PURE__ */ jsx350(DownloadIcon_default, {})
10602
+ children: /* @__PURE__ */ jsx351(DownloadIcon_default, {})
10589
10603
  }
10590
10604
  ),
10591
- /* @__PURE__ */ jsx350(
10605
+ /* @__PURE__ */ jsx351(
10592
10606
  "button",
10593
10607
  {
10594
10608
  type: "button",
10595
10609
  className: "control-btn",
10596
10610
  onClick: toggleFullscreen,
10597
10611
  "aria-label": isFullscreen ? "\uC804\uCCB4\uD654\uBA74 \uC885\uB8CC" : "\uC804\uCCB4\uD654\uBA74",
10598
- children: isFullscreen ? /* @__PURE__ */ jsx350(MinimizeIcon_default, {}) : /* @__PURE__ */ jsx350(MaximizeIcon_default, {})
10612
+ children: isFullscreen ? /* @__PURE__ */ jsx351(MinimizeIcon_default, {}) : /* @__PURE__ */ jsx351(MaximizeIcon_default, {})
10599
10613
  }
10600
10614
  )
10601
10615
  ] })
@@ -10608,7 +10622,7 @@ Video.displayName = "Video";
10608
10622
  var Video_default = Video;
10609
10623
 
10610
10624
  // src/layout/Grid/FullGrid/FullGrid.tsx
10611
- import { jsx as jsx351 } from "react/jsx-runtime";
10625
+ import { jsx as jsx352 } from "react/jsx-runtime";
10612
10626
  var GAP_MAP = {
10613
10627
  none: "var(--spacing-space-none)",
10614
10628
  xs: "var(--spacing-space-1)",
@@ -10621,13 +10635,13 @@ var GAP_MAP = {
10621
10635
  var FullGrid = (props) => {
10622
10636
  const { children, gap } = props;
10623
10637
  const style = gap != null ? { gap: GAP_MAP[gap] } : void 0;
10624
- return /* @__PURE__ */ jsx351("div", { className: "lib-xplat-full-grid", style, children });
10638
+ return /* @__PURE__ */ jsx352("div", { className: "lib-xplat-full-grid", style, children });
10625
10639
  };
10626
10640
  FullGrid.displayName = "FullGrid";
10627
10641
  var FullGrid_default = FullGrid;
10628
10642
 
10629
10643
  // src/layout/Grid/FullScreen/FullScreen.tsx
10630
- import { jsx as jsx352 } from "react/jsx-runtime";
10644
+ import { jsx as jsx353 } from "react/jsx-runtime";
10631
10645
  var GAP_MAP2 = {
10632
10646
  none: "var(--spacing-space-none)",
10633
10647
  xs: "var(--spacing-space-1)",
@@ -10640,13 +10654,13 @@ var GAP_MAP2 = {
10640
10654
  var FullScreen = (props) => {
10641
10655
  const { children, gap } = props;
10642
10656
  const style = gap != null ? { gap: GAP_MAP2[gap] } : void 0;
10643
- return /* @__PURE__ */ jsx352("div", { className: "lib-xplat-full-screen", style, children });
10657
+ return /* @__PURE__ */ jsx353("div", { className: "lib-xplat-full-screen", style, children });
10644
10658
  };
10645
10659
  FullScreen.displayName = "FullScreen";
10646
10660
  var FullScreen_default = FullScreen;
10647
10661
 
10648
10662
  // src/layout/Grid/Item/Item.tsx
10649
- import { jsx as jsx353 } from "react/jsx-runtime";
10663
+ import { jsx as jsx354 } from "react/jsx-runtime";
10650
10664
  var calculateSpans = (column) => {
10651
10665
  const spans = {};
10652
10666
  let inherited = column.default;
@@ -10663,35 +10677,35 @@ var GridItem = ({ column, children, className }) => {
10663
10677
  Object.entries(spans).forEach(([key, value]) => {
10664
10678
  style[`--column-${key}`] = value;
10665
10679
  });
10666
- return /* @__PURE__ */ jsx353("div", { className: clsx_default("lib-xplat-grid-item", className), style, children });
10680
+ return /* @__PURE__ */ jsx354("div", { className: clsx_default("lib-xplat-grid-item", className), style, children });
10667
10681
  };
10668
10682
  GridItem.displayName = "GridItem";
10669
10683
  var Item_default = GridItem;
10670
10684
 
10671
10685
  // src/layout/Header/Header.tsx
10672
- import { jsx as jsx354, jsxs as jsxs224 } from "react/jsx-runtime";
10686
+ import { jsx as jsx355, jsxs as jsxs224 } from "react/jsx-runtime";
10673
10687
  var Header = ({
10674
10688
  logo,
10675
10689
  centerContent,
10676
10690
  rightContent
10677
10691
  }) => {
10678
10692
  return /* @__PURE__ */ jsxs224("div", { className: "lib-xplat-layout-header", children: [
10679
- /* @__PURE__ */ jsx354("div", { children: logo }),
10680
- /* @__PURE__ */ jsx354("div", { children: centerContent }),
10681
- /* @__PURE__ */ jsx354("div", { children: rightContent })
10693
+ /* @__PURE__ */ jsx355("div", { children: logo }),
10694
+ /* @__PURE__ */ jsx355("div", { children: centerContent }),
10695
+ /* @__PURE__ */ jsx355("div", { children: rightContent })
10682
10696
  ] });
10683
10697
  };
10684
10698
  Header.displayName = "Header";
10685
10699
  var Header_default = Header;
10686
10700
 
10687
10701
  // src/layout/Layout/Layout.tsx
10688
- import { Fragment as Fragment6, jsx as jsx355, jsxs as jsxs225 } from "react/jsx-runtime";
10702
+ import { Fragment as Fragment6, jsx as jsx356, jsxs as jsxs225 } from "react/jsx-runtime";
10689
10703
  var Layout = (props) => {
10690
10704
  const { header, sideBar, children } = props;
10691
- return /* @__PURE__ */ jsx355("div", { className: "lib-xplat-layout", children: /* @__PURE__ */ jsxs225("div", { className: "lib-xplat-layout-content-wrapper", children: [
10692
- sideBar && /* @__PURE__ */ jsx355(Fragment6, { children: sideBar }),
10705
+ return /* @__PURE__ */ jsx356("div", { className: "lib-xplat-layout", children: /* @__PURE__ */ jsxs225("div", { className: "lib-xplat-layout-content-wrapper", children: [
10706
+ sideBar && /* @__PURE__ */ jsx356(Fragment6, { children: sideBar }),
10693
10707
  /* @__PURE__ */ jsxs225("div", { className: "lib-xplat-layout-content", children: [
10694
- header && /* @__PURE__ */ jsx355("div", { className: "lib-xplat-layout-conent-header", children: header }),
10708
+ header && /* @__PURE__ */ jsx356("div", { className: "lib-xplat-layout-conent-header", children: header }),
10695
10709
  children
10696
10710
  ] })
10697
10711
  ] }) });
@@ -10700,31 +10714,31 @@ Layout.displayName = "Layout";
10700
10714
  var Layout_default = Layout;
10701
10715
 
10702
10716
  // src/layout/SideBar/SideBar.tsx
10703
- import React43 from "react";
10717
+ import React44 from "react";
10704
10718
 
10705
10719
  // src/layout/SideBar/SideBarContext.tsx
10706
- import React42 from "react";
10707
- var SideBarContext = React42.createContext(null);
10720
+ import React43 from "react";
10721
+ var SideBarContext = React43.createContext(null);
10708
10722
  var useSideBarContext = () => {
10709
- const ctx = React42.useContext(SideBarContext);
10723
+ const ctx = React43.useContext(SideBarContext);
10710
10724
  if (!ctx) throw new Error("Error");
10711
10725
  return ctx;
10712
10726
  };
10713
10727
  var SideBarContext_default = SideBarContext;
10714
10728
 
10715
10729
  // src/layout/SideBar/SideBar.tsx
10716
- import { jsx as jsx356 } from "react/jsx-runtime";
10730
+ import { jsx as jsx357 } from "react/jsx-runtime";
10717
10731
  var SideBar = (props) => {
10718
10732
  const { children, className } = props;
10719
- const [isOpen, setIsOpen] = React43.useState(true);
10733
+ const [isOpen, setIsOpen] = React44.useState(true);
10720
10734
  const handleSwitchSideBar = () => {
10721
10735
  setIsOpen((prev) => !prev);
10722
10736
  };
10723
- return /* @__PURE__ */ jsx356(
10737
+ return /* @__PURE__ */ jsx357(
10724
10738
  SideBarContext_default.Provider,
10725
10739
  {
10726
10740
  value: { isSidebarOpen: isOpen, handleSwitchSideBar },
10727
- children: /* @__PURE__ */ jsx356(
10741
+ children: /* @__PURE__ */ jsx357(
10728
10742
  "div",
10729
10743
  {
10730
10744
  className: clsx_default(
@@ -10768,6 +10782,7 @@ export {
10768
10782
  ArrowUpLeftIcon_default as ArrowUpLeftIcon,
10769
10783
  ArrowUpRightIcon_default as ArrowUpRightIcon,
10770
10784
  AtSignIcon_default as AtSignIcon,
10785
+ AutoResizeTextArea_default as AutoResizeTextArea,
10771
10786
  Avatar_default as Avatar,
10772
10787
  AwardIcon_default as AwardIcon,
10773
10788
  BREAKPOINT_KEYS_ORDERED,