@x-plat/design-system 0.5.64 → 0.5.66

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.
@@ -32,6 +32,7 @@ var components_exports = {};
32
32
  __export(components_exports, {
33
33
  Accordion: () => Accordion_default,
34
34
  Alert: () => Alert_default,
35
+ AutoResizeTextArea: () => AutoResizeTextArea_default,
35
36
  Avatar: () => Avatar_default,
36
37
  Badge: () => Badge_default,
37
38
  Box: () => Box_default,
@@ -2783,11 +2784,72 @@ var Chart = import_react5.default.memo((props) => {
2783
2784
  Chart.displayName = "Chart";
2784
2785
  var Chart_default = Chart;
2785
2786
 
2786
- // src/components/ChatInput/ChatInput.tsx
2787
+ // src/components/AutoResizeTextArea/AutoResizeTextArea.tsx
2787
2788
  var import_react6 = __toESM(require("react"), 1);
2789
+ var import_jsx_runtime306 = require("react/jsx-runtime");
2790
+ var MAX_HEIGHT = 400;
2791
+ var AutoResizeTextArea = import_react6.default.forwardRef(
2792
+ (props, ref) => {
2793
+ const { value, className, onChange, disabled, bare = false, ...textareaProps } = props;
2794
+ const localRef = import_react6.default.useRef(null);
2795
+ const setRefs = (el) => {
2796
+ localRef.current = el;
2797
+ if (!ref) return;
2798
+ if (typeof ref === "function") ref(el);
2799
+ else if (ref && "current" in ref)
2800
+ ref.current = el;
2801
+ };
2802
+ const updateHeight = () => {
2803
+ const el = localRef.current;
2804
+ if (!el) return;
2805
+ el.style.height = "0px";
2806
+ el.style.height = `${Math.min(el.scrollHeight, MAX_HEIGHT)}px`;
2807
+ };
2808
+ const handleChange = (e) => {
2809
+ if (onChange) {
2810
+ const event = {
2811
+ ...e,
2812
+ target: { value: e.target.value }
2813
+ };
2814
+ onChange(event);
2815
+ }
2816
+ };
2817
+ import_react6.default.useEffect(() => {
2818
+ updateHeight();
2819
+ }, [value]);
2820
+ if (bare) {
2821
+ return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
2822
+ "textarea",
2823
+ {
2824
+ ...textareaProps,
2825
+ ref: setRefs,
2826
+ className,
2827
+ disabled,
2828
+ value,
2829
+ onChange: handleChange
2830
+ }
2831
+ );
2832
+ }
2833
+ return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("div", { className: clsx_default("lib-xplat-auto-resize-textarea-wrapper", className), children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("div", { className: clsx_default("lib-xplat-auto-resize-textarea", disabled && "disabled"), children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
2834
+ "textarea",
2835
+ {
2836
+ ...textareaProps,
2837
+ ref: setRefs,
2838
+ disabled,
2839
+ value,
2840
+ onChange: handleChange
2841
+ }
2842
+ ) }) });
2843
+ }
2844
+ );
2845
+ AutoResizeTextArea.displayName = "AutoResizeTextArea";
2846
+ var AutoResizeTextArea_default = AutoResizeTextArea;
2847
+
2848
+ // src/components/ChatInput/ChatInput.tsx
2849
+ var import_react7 = __toESM(require("react"), 1);
2788
2850
 
2789
2851
  // src/components/IconButton/IconButton.tsx
2790
- var import_jsx_runtime306 = require("react/jsx-runtime");
2852
+ var import_jsx_runtime307 = require("react/jsx-runtime");
2791
2853
  var IconButton = (props) => {
2792
2854
  const {
2793
2855
  icon,
@@ -2797,7 +2859,7 @@ var IconButton = (props) => {
2797
2859
  disabled,
2798
2860
  ...rest
2799
2861
  } = props;
2800
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
2862
+ return /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(
2801
2863
  "button",
2802
2864
  {
2803
2865
  className: clsx_default("lib-xplat-icon-button", type, size, className),
@@ -2811,9 +2873,8 @@ IconButton.displayName = "IconButton";
2811
2873
  var IconButton_default = IconButton;
2812
2874
 
2813
2875
  // src/components/ChatInput/ChatInput.tsx
2814
- var import_jsx_runtime307 = require("react/jsx-runtime");
2815
- var MAX_HEIGHT = 200;
2816
- var ChatInput = import_react6.default.forwardRef(
2876
+ var import_jsx_runtime308 = require("react/jsx-runtime");
2877
+ var ChatInput = import_react7.default.forwardRef(
2817
2878
  (props, ref) => {
2818
2879
  const {
2819
2880
  placeholder,
@@ -2824,24 +2885,9 @@ var ChatInput = import_react6.default.forwardRef(
2824
2885
  onChange
2825
2886
  } = props;
2826
2887
  const isControlled = valueProp !== void 0;
2827
- const [internalValue, setInternalValue] = import_react6.default.useState("");
2888
+ const [internalValue, setInternalValue] = import_react7.default.useState("");
2828
2889
  const value = isControlled ? valueProp : internalValue;
2829
2890
  const hasText = value.trim().length > 0;
2830
- const textareaRef = import_react6.default.useRef(null);
2831
- const setRefs = import_react6.default.useCallback(
2832
- (el) => {
2833
- textareaRef.current = el;
2834
- if (typeof ref === "function") ref(el);
2835
- else if (ref) ref.current = el;
2836
- },
2837
- [ref]
2838
- );
2839
- const updateHeight = import_react6.default.useCallback(() => {
2840
- const el = textareaRef.current;
2841
- if (!el) return;
2842
- el.style.height = "0px";
2843
- el.style.height = `${Math.min(el.scrollHeight, MAX_HEIGHT)}px`;
2844
- }, []);
2845
2891
  const handleChange = (e) => {
2846
2892
  const val = e.target.value;
2847
2893
  if (!isControlled) setInternalValue(val);
@@ -2851,7 +2897,6 @@ var ChatInput = import_react6.default.forwardRef(
2851
2897
  if (!hasText || disabled) return;
2852
2898
  onSubmit?.(value);
2853
2899
  if (!isControlled) setInternalValue("");
2854
- requestAnimationFrame(updateHeight);
2855
2900
  };
2856
2901
  const handleKeyDown = (e) => {
2857
2902
  if (e.key === "Enter" && !e.shiftKey) {
@@ -2859,14 +2904,12 @@ var ChatInput = import_react6.default.forwardRef(
2859
2904
  handleSubmit();
2860
2905
  }
2861
2906
  };
2862
- import_react6.default.useEffect(() => {
2863
- updateHeight();
2864
- }, [value, updateHeight]);
2865
- return /* @__PURE__ */ (0, import_jsx_runtime307.jsxs)("div", { className: clsx_default("lib-xplat-chat-input", disabled && "disabled"), children: [
2866
- /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(
2867
- "textarea",
2907
+ return /* @__PURE__ */ (0, import_jsx_runtime308.jsxs)("div", { className: clsx_default("lib-xplat-chat-input", disabled && "disabled"), children: [
2908
+ /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(
2909
+ AutoResizeTextArea_default,
2868
2910
  {
2869
- ref: setRefs,
2911
+ ref,
2912
+ bare: true,
2870
2913
  className: "chat-input-textarea",
2871
2914
  placeholder,
2872
2915
  value,
@@ -2876,10 +2919,10 @@ var ChatInput = import_react6.default.forwardRef(
2876
2919
  onKeyDown: handleKeyDown
2877
2920
  }
2878
2921
  ),
2879
- /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(
2922
+ /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(
2880
2923
  IconButton_default,
2881
2924
  {
2882
- icon: /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(MessageSquareIcon_default, {}),
2925
+ icon: /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(MessageSquareIcon_default, {}),
2883
2926
  type: buttonType,
2884
2927
  size: "sm",
2885
2928
  disabled: !hasText || disabled,
@@ -2900,7 +2943,7 @@ var import_tokens_core = require("@x-plat/tokens-core");
2900
2943
  var import_tokens_core2 = require("@x-plat/tokens-core");
2901
2944
 
2902
2945
  // src/components/CheckBox/CheckBox.tsx
2903
- var import_jsx_runtime308 = require("react/jsx-runtime");
2946
+ var import_jsx_runtime309 = require("react/jsx-runtime");
2904
2947
  var CheckBox = (props) => {
2905
2948
  const {
2906
2949
  checked,
@@ -2919,8 +2962,8 @@ var CheckBox = (props) => {
2919
2962
  const checkedClasses = `checked`;
2920
2963
  const disabledClasses = "disabled";
2921
2964
  const boxClasses = disabled ? disabledClasses : checked ? checkedClasses : uncheckedClasses;
2922
- return /* @__PURE__ */ (0, import_jsx_runtime308.jsxs)("label", { className: clsx_default("lib-xplat-checkbox", size, type, className), children: [
2923
- /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(
2965
+ return /* @__PURE__ */ (0, import_jsx_runtime309.jsxs)("label", { className: clsx_default("lib-xplat-checkbox", size, type, className), children: [
2966
+ /* @__PURE__ */ (0, import_jsx_runtime309.jsx)(
2924
2967
  "input",
2925
2968
  {
2926
2969
  type: "checkbox",
@@ -2930,44 +2973,44 @@ var CheckBox = (props) => {
2930
2973
  ...rest
2931
2974
  }
2932
2975
  ),
2933
- /* @__PURE__ */ (0, import_jsx_runtime308.jsx)("span", { className: clsx_default("checkbox", boxClasses), children: /* @__PURE__ */ (0, import_jsx_runtime308.jsx)("span", { className: clsx_default("check-icon", { visible: checked }), children: /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(CheckIcon_default, {}) }) }),
2934
- label && /* @__PURE__ */ (0, import_jsx_runtime308.jsx)("span", { className: "label", children: label })
2976
+ /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("span", { className: clsx_default("checkbox", boxClasses), children: /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("span", { className: clsx_default("check-icon", { visible: checked }), children: /* @__PURE__ */ (0, import_jsx_runtime309.jsx)(CheckIcon_default, {}) }) }),
2977
+ label && /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("span", { className: "label", children: label })
2935
2978
  ] });
2936
2979
  };
2937
2980
  CheckBox.displayName = "CheckBox";
2938
2981
  var CheckBox_default = CheckBox;
2939
2982
 
2940
2983
  // src/components/Chip/Chip.tsx
2941
- var import_jsx_runtime309 = require("react/jsx-runtime");
2984
+ var import_jsx_runtime310 = require("react/jsx-runtime");
2942
2985
  var Chip = (props) => {
2943
2986
  const {
2944
2987
  children,
2945
2988
  type = "primary",
2946
2989
  size = "md"
2947
2990
  } = props;
2948
- return /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("div", { className: clsx_default("lib-xplat-chip", type, size), children });
2991
+ return /* @__PURE__ */ (0, import_jsx_runtime310.jsx)("div", { className: clsx_default("lib-xplat-chip", type, size), children });
2949
2992
  };
2950
2993
  Chip.displayName = "Chip";
2951
2994
  var Chip_default = Chip;
2952
2995
 
2953
2996
  // src/components/DatePicker/InputDatePicker/index.tsx
2954
- var import_react13 = __toESM(require("react"), 1);
2997
+ var import_react14 = __toESM(require("react"), 1);
2955
2998
 
2956
2999
  // src/components/Input/Input.tsx
2957
- var import_react7 = __toESM(require("react"), 1);
3000
+ var import_react8 = __toESM(require("react"), 1);
2958
3001
 
2959
3002
  // src/components/Input/InputValidations.tsx
2960
- var import_jsx_runtime310 = require("react/jsx-runtime");
3003
+ var import_jsx_runtime311 = require("react/jsx-runtime");
2961
3004
  var InputValidations = (props) => {
2962
3005
  const { message, status = "default" } = props;
2963
- return /* @__PURE__ */ (0, import_jsx_runtime310.jsxs)("div", { className: clsx_default("lib-xplat-input-validation", status), children: [
2964
- /* @__PURE__ */ (0, import_jsx_runtime310.jsxs)("div", { className: "icon", children: [
2965
- status === "default" && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)(InfoIcon_default, {}),
2966
- status === "success" && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)(SuccessIcon_default, {}),
2967
- status === "warning" && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)(InfoIcon_default, {}),
2968
- status === "error" && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)(ErrorIcon_default, {})
3006
+ return /* @__PURE__ */ (0, import_jsx_runtime311.jsxs)("div", { className: clsx_default("lib-xplat-input-validation", status), children: [
3007
+ /* @__PURE__ */ (0, import_jsx_runtime311.jsxs)("div", { className: "icon", children: [
3008
+ status === "default" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(InfoIcon_default, {}),
3009
+ status === "success" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(SuccessIcon_default, {}),
3010
+ status === "warning" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(InfoIcon_default, {}),
3011
+ status === "error" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(ErrorIcon_default, {})
2969
3012
  ] }),
2970
- /* @__PURE__ */ (0, import_jsx_runtime310.jsx)("div", { className: "message", children: message })
3013
+ /* @__PURE__ */ (0, import_jsx_runtime311.jsx)("div", { className: "message", children: message })
2971
3014
  ] });
2972
3015
  };
2973
3016
  InputValidations.displayName = "InputValidations";
@@ -3008,8 +3051,8 @@ var handleTelBackspace = (prevValue, currValue) => {
3008
3051
  };
3009
3052
 
3010
3053
  // src/components/Input/Input.tsx
3011
- var import_jsx_runtime311 = require("react/jsx-runtime");
3012
- var import_react8 = require("react");
3054
+ var import_jsx_runtime312 = require("react/jsx-runtime");
3055
+ var import_react9 = require("react");
3013
3056
  var formatValue = (type, value) => {
3014
3057
  if (value === null || value === void 0) return "";
3015
3058
  const strValue = Array.isArray(value) ? String(value[0] ?? "") : String(value);
@@ -3057,7 +3100,7 @@ var parseValue = (type, value) => {
3057
3100
  return value;
3058
3101
  }
3059
3102
  };
3060
- var Input = import_react7.default.forwardRef((props, ref) => {
3103
+ var Input = import_react8.default.forwardRef((props, ref) => {
3061
3104
  const {
3062
3105
  value,
3063
3106
  className,
@@ -3084,13 +3127,13 @@ var Input = import_react7.default.forwardRef((props, ref) => {
3084
3127
  onChange(event);
3085
3128
  }
3086
3129
  };
3087
- return /* @__PURE__ */ (0, import_jsx_runtime311.jsxs)("div", { className: clsx_default("lib-xplat-input-wrap", className), children: [
3088
- /* @__PURE__ */ (0, import_jsx_runtime311.jsxs)(
3130
+ return /* @__PURE__ */ (0, import_jsx_runtime312.jsxs)("div", { className: clsx_default("lib-xplat-input-wrap", className), children: [
3131
+ /* @__PURE__ */ (0, import_jsx_runtime312.jsxs)(
3089
3132
  "div",
3090
3133
  {
3091
3134
  className: clsx_default("lib-xplat-input", size, disabled ? "disabled" : void 0),
3092
3135
  children: [
3093
- /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(
3136
+ /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(
3094
3137
  "input",
3095
3138
  {
3096
3139
  ...inputProps,
@@ -3101,11 +3144,11 @@ var Input = import_react7.default.forwardRef((props, ref) => {
3101
3144
  onChange: handleChange
3102
3145
  }
3103
3146
  ),
3104
- suffix && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)("div", { className: "suffix", children: suffix })
3147
+ suffix && /* @__PURE__ */ (0, import_jsx_runtime312.jsx)("div", { className: "suffix", children: suffix })
3105
3148
  ]
3106
3149
  }
3107
3150
  ),
3108
- validations && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)("div", { className: "lib-xplat-input-validation-wrap", children: validations?.map((validation, idx) => /* @__PURE__ */ (0, import_react8.createElement)(
3151
+ validations && /* @__PURE__ */ (0, import_jsx_runtime312.jsx)("div", { className: "lib-xplat-input-validation-wrap", children: validations?.map((validation, idx) => /* @__PURE__ */ (0, import_react9.createElement)(
3109
3152
  InputValidations_default,
3110
3153
  {
3111
3154
  ...validation,
@@ -3118,20 +3161,20 @@ Input.displayName = "Input";
3118
3161
  var Input_default = Input;
3119
3162
 
3120
3163
  // src/components/Input/PasswordInput/PasswordInput.tsx
3121
- var import_react9 = __toESM(require("react"), 1);
3122
- var import_jsx_runtime312 = require("react/jsx-runtime");
3123
- var PasswordInput = import_react9.default.forwardRef(
3164
+ var import_react10 = __toESM(require("react"), 1);
3165
+ var import_jsx_runtime313 = require("react/jsx-runtime");
3166
+ var PasswordInput = import_react10.default.forwardRef(
3124
3167
  (props, ref) => {
3125
3168
  const { reg: _reg, ...inputProps } = props;
3126
- const [isView, setIsView] = import_react9.default.useState(false);
3169
+ const [isView, setIsView] = import_react10.default.useState(false);
3127
3170
  const handleChangeView = () => {
3128
3171
  setIsView((prev) => !prev);
3129
3172
  };
3130
- return /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(
3173
+ return /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(
3131
3174
  Input_default,
3132
3175
  {
3133
3176
  ...inputProps,
3134
- suffix: /* @__PURE__ */ (0, import_jsx_runtime312.jsx)("div", { className: "wrapper pointer", onClick: handleChangeView, children: isView ? /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(OpenEyeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(CloseEyeIcon_default, {}) }),
3177
+ suffix: /* @__PURE__ */ (0, import_jsx_runtime313.jsx)("div", { className: "wrapper pointer", onClick: handleChangeView, children: isView ? /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(OpenEyeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(CloseEyeIcon_default, {}) }),
3135
3178
  type: isView ? "text" : "password",
3136
3179
  ref
3137
3180
  }
@@ -3142,17 +3185,17 @@ PasswordInput.displayName = "PasswordInput";
3142
3185
  var PasswordInput_default = PasswordInput;
3143
3186
 
3144
3187
  // src/components/Modal/Modal.tsx
3145
- var import_react11 = __toESM(require("react"), 1);
3188
+ var import_react12 = __toESM(require("react"), 1);
3146
3189
  var import_react_dom2 = require("react-dom");
3147
3190
 
3148
3191
  // src/tokens/hooks/Portal.tsx
3149
- var import_react10 = __toESM(require("react"), 1);
3192
+ var import_react11 = __toESM(require("react"), 1);
3150
3193
  var import_react_dom = __toESM(require("react-dom"), 1);
3151
- var import_jsx_runtime313 = require("react/jsx-runtime");
3152
- var PortalContainerContext = import_react10.default.createContext(null);
3153
- var PortalProvider = ({ container, children }) => /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(PortalContainerContext.Provider, { value: container, children });
3194
+ var import_jsx_runtime314 = require("react/jsx-runtime");
3195
+ var PortalContainerContext = import_react11.default.createContext(null);
3196
+ var PortalProvider = ({ container, children }) => /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(PortalContainerContext.Provider, { value: container, children });
3154
3197
  var Portal = ({ children }) => {
3155
- const contextContainer = import_react10.default.useContext(PortalContainerContext);
3198
+ const contextContainer = import_react11.default.useContext(PortalContainerContext);
3156
3199
  if (typeof document === "undefined") return null;
3157
3200
  const container = contextContainer ?? document.body;
3158
3201
  return import_react_dom.default.createPortal(children, container);
@@ -3161,14 +3204,14 @@ Portal.displayName = "Portal";
3161
3204
  var Portal_default = Portal;
3162
3205
 
3163
3206
  // src/components/Modal/Modal.tsx
3164
- var import_jsx_runtime314 = require("react/jsx-runtime");
3207
+ var import_jsx_runtime315 = require("react/jsx-runtime");
3165
3208
  var ANIMATION_DURATION_MS = 200;
3166
3209
  var Modal = (props) => {
3167
3210
  const { isOpen, onClose, children } = props;
3168
- const [mounted, setMounted] = import_react11.default.useState(false);
3169
- const [visible, setVisible] = import_react11.default.useState(false);
3170
- const boxRef = import_react11.default.useRef(null);
3171
- import_react11.default.useEffect(() => {
3211
+ const [mounted, setMounted] = import_react12.default.useState(false);
3212
+ const [visible, setVisible] = import_react12.default.useState(false);
3213
+ const boxRef = import_react12.default.useRef(null);
3214
+ import_react12.default.useEffect(() => {
3172
3215
  if (isOpen) {
3173
3216
  setMounted(true);
3174
3217
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -3182,12 +3225,12 @@ var Modal = (props) => {
3182
3225
  if (!mounted) return null;
3183
3226
  const stateClass = visible ? "enter" : "exit";
3184
3227
  return (0, import_react_dom2.createPortal)(
3185
- /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(
3228
+ /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3186
3229
  "div",
3187
3230
  {
3188
3231
  className: clsx_default("lib-xplat-modal", "dim", stateClass),
3189
3232
  onClick: onClose,
3190
- children: /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(
3233
+ children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3191
3234
  "div",
3192
3235
  {
3193
3236
  ref: boxRef,
@@ -3195,7 +3238,7 @@ var Modal = (props) => {
3195
3238
  role: "dialog",
3196
3239
  "aria-modal": "true",
3197
3240
  onClick: (e) => e.stopPropagation(),
3198
- children: /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(PortalProvider, { container: boxRef.current, children })
3241
+ children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(PortalProvider, { container: boxRef.current, children })
3199
3242
  }
3200
3243
  )
3201
3244
  }
@@ -3207,9 +3250,9 @@ Modal.displayName = "Modal";
3207
3250
  var Modal_default = Modal;
3208
3251
 
3209
3252
  // src/components/DatePicker/SingleDatePicker/index.tsx
3210
- var import_react12 = __toESM(require("react"), 1);
3211
- var import_jsx_runtime315 = require("react/jsx-runtime");
3212
- var DayCell2 = import_react12.default.memo(
3253
+ var import_react13 = __toESM(require("react"), 1);
3254
+ var import_jsx_runtime316 = require("react/jsx-runtime");
3255
+ var DayCell2 = import_react13.default.memo(
3213
3256
  ({
3214
3257
  day,
3215
3258
  disabled,
@@ -3219,7 +3262,7 @@ var DayCell2 = import_react12.default.memo(
3219
3262
  isEnd,
3220
3263
  inRange,
3221
3264
  onSelect
3222
- }) => /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3265
+ }) => /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3223
3266
  "button",
3224
3267
  {
3225
3268
  type: "button",
@@ -3261,26 +3304,26 @@ var SingleDatePicker = (props) => {
3261
3304
  initialYear,
3262
3305
  initialMonth
3263
3306
  );
3264
- const [pickerMode, setPickerMode] = import_react12.default.useState("days");
3265
- const [yearRangeStart, setYearRangeStart] = import_react12.default.useState(
3307
+ const [pickerMode, setPickerMode] = import_react13.default.useState("days");
3308
+ const [yearRangeStart, setYearRangeStart] = import_react13.default.useState(
3266
3309
  Math.floor((initialYear ?? (/* @__PURE__ */ new Date()).getFullYear()) / 12) * 12
3267
3310
  );
3268
- const minTime = import_react12.default.useMemo(
3311
+ const minTime = import_react13.default.useMemo(
3269
3312
  () => minDate ? new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()).getTime() : -Infinity,
3270
3313
  [minDate]
3271
3314
  );
3272
- const maxTime = import_react12.default.useMemo(
3315
+ const maxTime = import_react13.default.useMemo(
3273
3316
  () => maxDate ? new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()).getTime() : Infinity,
3274
3317
  [maxDate]
3275
3318
  );
3276
- const highlightSet = import_react12.default.useMemo(() => {
3319
+ const highlightSet = import_react13.default.useMemo(() => {
3277
3320
  const set = /* @__PURE__ */ new Set();
3278
3321
  for (const h of highlightDates) {
3279
3322
  set.add(`${h.getFullYear()}-${h.getMonth()}-${h.getDate()}`);
3280
3323
  }
3281
3324
  return set;
3282
3325
  }, [highlightDates]);
3283
- const handleSelect = import_react12.default.useCallback(
3326
+ const handleSelect = import_react13.default.useCallback(
3284
3327
  (date) => {
3285
3328
  onChange?.(date);
3286
3329
  },
@@ -3317,20 +3360,20 @@ var SingleDatePicker = (props) => {
3317
3360
  const monthLabels = MONTH_LABELS[locale];
3318
3361
  const titleText = pickerMode === "days" ? locale === "ko" ? `${year}\uB144 ${monthLabels[month]}` : `${monthLabels[month]} ${year}` : pickerMode === "months" ? `${year}` : `${yearRangeStart} - ${yearRangeStart + 11}`;
3319
3362
  const hasRange = rangeStart != null && rangeEnd != null;
3320
- return /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)(
3363
+ return /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)(
3321
3364
  "div",
3322
3365
  {
3323
3366
  className: clsx_default("lib-xplat-datepicker", "single"),
3324
3367
  children: [
3325
- /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)("div", { className: "datepicker-header", children: [
3326
- /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(ChevronLeftIcon_default, {}) }),
3327
- /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
3328
- /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(ChevronRightIcon_default, {}) })
3368
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "datepicker-header", children: [
3369
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(ChevronLeftIcon_default, {}) }),
3370
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
3371
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(ChevronRightIcon_default, {}) })
3329
3372
  ] }),
3330
- /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)("div", { className: "datepicker-body", children: [
3331
- pickerMode === "years" && /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
3373
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "datepicker-body", children: [
3374
+ pickerMode === "years" && /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
3332
3375
  const y = yearRangeStart + i;
3333
- return /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3376
+ return /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3334
3377
  "button",
3335
3378
  {
3336
3379
  type: "button",
@@ -3341,7 +3384,7 @@ var SingleDatePicker = (props) => {
3341
3384
  y
3342
3385
  );
3343
3386
  }) }),
3344
- pickerMode === "months" && /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3387
+ pickerMode === "months" && /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3345
3388
  "button",
3346
3389
  {
3347
3390
  type: "button",
@@ -3351,8 +3394,8 @@ var SingleDatePicker = (props) => {
3351
3394
  },
3352
3395
  i
3353
3396
  )) }),
3354
- pickerMode === "days" && /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)(import_jsx_runtime315.Fragment, { children: [
3355
- /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3397
+ pickerMode === "days" && /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)(import_jsx_runtime316.Fragment, { children: [
3398
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3356
3399
  "div",
3357
3400
  {
3358
3401
  className: clsx_default(
@@ -3364,7 +3407,7 @@ var SingleDatePicker = (props) => {
3364
3407
  },
3365
3408
  label
3366
3409
  )) }),
3367
- /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "datepicker-grid", children: days.map((day, idx) => {
3410
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-grid", children: days.map((day, idx) => {
3368
3411
  const t = day.date.getTime();
3369
3412
  const disabled = t < minTime || t > maxTime;
3370
3413
  const selected = value ? isSameDay(day.date, value) : false;
@@ -3374,7 +3417,7 @@ var SingleDatePicker = (props) => {
3374
3417
  const isStart = hasRange ? isSameDay(day.date, rangeStart) : false;
3375
3418
  const isEnd = hasRange ? isSameDay(day.date, rangeEnd) : false;
3376
3419
  const inRangeVal = hasRange ? isInRange(day.date, rangeStart, rangeEnd) : false;
3377
- return /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3420
+ return /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3378
3421
  DayCell2,
3379
3422
  {
3380
3423
  day,
@@ -3399,7 +3442,7 @@ SingleDatePicker.displayName = "SingleDatePicker";
3399
3442
  var SingleDatePicker_default = SingleDatePicker;
3400
3443
 
3401
3444
  // src/components/DatePicker/InputDatePicker/index.tsx
3402
- var import_jsx_runtime316 = require("react/jsx-runtime");
3445
+ var import_jsx_runtime317 = require("react/jsx-runtime");
3403
3446
  var formatDate = (date) => {
3404
3447
  if (!date || !(date instanceof Date) || isNaN(date.getTime())) return "";
3405
3448
  const y = date.getFullYear();
@@ -3409,8 +3452,8 @@ var formatDate = (date) => {
3409
3452
  };
3410
3453
  var InputDatePicker = (props) => {
3411
3454
  const { value, onChange, minDate, maxDate, disabled, locale = "ko", placeholder } = props;
3412
- const [isOpen, setIsOpen] = import_react13.default.useState(false);
3413
- const [tempDate, setTempDate] = import_react13.default.useState(value ?? /* @__PURE__ */ new Date());
3455
+ const [isOpen, setIsOpen] = import_react14.default.useState(false);
3456
+ const [tempDate, setTempDate] = import_react14.default.useState(value ?? /* @__PURE__ */ new Date());
3414
3457
  const handleOpen = () => {
3415
3458
  if (disabled) return;
3416
3459
  setTempDate(value ?? /* @__PURE__ */ new Date());
@@ -3426,19 +3469,19 @@ var InputDatePicker = (props) => {
3426
3469
  const handleClose = () => {
3427
3470
  setIsOpen(false);
3428
3471
  };
3429
- return /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
3430
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3472
+ return /* @__PURE__ */ (0, import_jsx_runtime317.jsxs)("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
3473
+ /* @__PURE__ */ (0, import_jsx_runtime317.jsx)("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(
3431
3474
  Input_default,
3432
3475
  {
3433
3476
  value: formatDate(value),
3434
3477
  placeholder,
3435
- suffix: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(CalenderIcon_default, {}),
3478
+ suffix: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(CalenderIcon_default, {}),
3436
3479
  disabled,
3437
3480
  readOnly: true
3438
3481
  }
3439
3482
  ) }),
3440
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "lib-xplat-popup-datepicker-card", children: [
3441
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3483
+ /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime317.jsxs)("div", { className: "lib-xplat-popup-datepicker-card", children: [
3484
+ /* @__PURE__ */ (0, import_jsx_runtime317.jsx)("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(
3442
3485
  SingleDatePicker_default,
3443
3486
  {
3444
3487
  value: tempDate,
@@ -3448,9 +3491,9 @@ var InputDatePicker = (props) => {
3448
3491
  locale
3449
3492
  }
3450
3493
  ) }),
3451
- /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "popup-datepicker-footer", children: [
3452
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
3453
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3494
+ /* @__PURE__ */ (0, import_jsx_runtime317.jsxs)("div", { className: "popup-datepicker-footer", children: [
3495
+ /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
3496
+ /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3454
3497
  ] })
3455
3498
  ] }) })
3456
3499
  ] });
@@ -3459,20 +3502,20 @@ InputDatePicker.displayName = "InputDatePicker";
3459
3502
  var InputDatePicker_default = InputDatePicker;
3460
3503
 
3461
3504
  // src/components/DatePicker/PopupPicker/index.tsx
3462
- var import_react17 = __toESM(require("react"), 1);
3505
+ var import_react18 = __toESM(require("react"), 1);
3463
3506
 
3464
3507
  // src/components/DatePicker/RangePicker/index.tsx
3465
- var import_react16 = __toESM(require("react"), 1);
3508
+ var import_react17 = __toESM(require("react"), 1);
3466
3509
 
3467
3510
  // src/components/Tab/Tab.tsx
3468
- var import_react15 = __toESM(require("react"), 1);
3511
+ var import_react16 = __toESM(require("react"), 1);
3469
3512
 
3470
3513
  // src/components/Tab/TabItem.tsx
3471
- var import_react14 = __toESM(require("react"), 1);
3472
- var import_jsx_runtime317 = require("react/jsx-runtime");
3473
- var TabItem = import_react14.default.forwardRef((props, ref) => {
3514
+ var import_react15 = __toESM(require("react"), 1);
3515
+ var import_jsx_runtime318 = require("react/jsx-runtime");
3516
+ var TabItem = import_react15.default.forwardRef((props, ref) => {
3474
3517
  const { isActive: isActive2, title, onClick } = props;
3475
- return /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(
3518
+ return /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
3476
3519
  "div",
3477
3520
  {
3478
3521
  ref,
@@ -3486,25 +3529,25 @@ TabItem.displayName = "TabItem";
3486
3529
  var TabItem_default = TabItem;
3487
3530
 
3488
3531
  // src/components/Tab/Tab.tsx
3489
- var import_jsx_runtime318 = require("react/jsx-runtime");
3532
+ var import_jsx_runtime319 = require("react/jsx-runtime");
3490
3533
  var Tab = (props) => {
3491
3534
  const { activeIndex, onChange, tabs, type, size = "md" } = props;
3492
- const [underlineStyle, setUnderlineStyle] = import_react15.default.useState({
3535
+ const [underlineStyle, setUnderlineStyle] = import_react16.default.useState({
3493
3536
  left: 0,
3494
3537
  width: 0
3495
3538
  });
3496
- const itemRefs = import_react15.default.useRef([]);
3539
+ const itemRefs = import_react16.default.useRef([]);
3497
3540
  const handleChangeActiveTab = (tabItem, tabIdx) => {
3498
3541
  onChange(tabItem, tabIdx);
3499
3542
  };
3500
- import_react15.default.useEffect(() => {
3543
+ import_react16.default.useEffect(() => {
3501
3544
  const el = itemRefs.current[activeIndex];
3502
3545
  if (el) {
3503
3546
  setUnderlineStyle({ left: el.offsetLeft, width: el.offsetWidth });
3504
3547
  }
3505
3548
  }, [activeIndex, tabs.length]);
3506
- return /* @__PURE__ */ (0, import_jsx_runtime318.jsxs)("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
3507
- tabs.map((tab, idx) => /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
3549
+ return /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
3550
+ tabs.map((tab, idx) => /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3508
3551
  TabItem_default,
3509
3552
  {
3510
3553
  onClick: () => handleChangeActiveTab(tab, idx),
@@ -3516,7 +3559,7 @@ var Tab = (props) => {
3516
3559
  },
3517
3560
  `${tab.value}_${idx}`
3518
3561
  )),
3519
- type === "toggle" && /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
3562
+ type === "toggle" && /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3520
3563
  "div",
3521
3564
  {
3522
3565
  className: "tab-toggle-underline",
@@ -3532,7 +3575,7 @@ Tab.displayName = "Tab";
3532
3575
  var Tab_default = Tab;
3533
3576
 
3534
3577
  // src/components/DatePicker/RangePicker/index.tsx
3535
- var import_jsx_runtime319 = require("react/jsx-runtime");
3578
+ var import_jsx_runtime320 = require("react/jsx-runtime");
3536
3579
  var RangePicker = (props) => {
3537
3580
  const {
3538
3581
  startDate,
@@ -3542,7 +3585,7 @@ var RangePicker = (props) => {
3542
3585
  maxDate,
3543
3586
  locale = "ko"
3544
3587
  } = props;
3545
- const [activeTab, setActiveTab] = import_react16.default.useState("start");
3588
+ const [activeTab, setActiveTab] = import_react17.default.useState("start");
3546
3589
  const handleStartChange = (date) => {
3547
3590
  if (!date) return;
3548
3591
  const newStart = date > endDate ? endDate : date;
@@ -3555,8 +3598,8 @@ var RangePicker = (props) => {
3555
3598
  };
3556
3599
  const startMaxDate = maxDate && endDate < maxDate ? endDate : endDate;
3557
3600
  const endMinDate = minDate && startDate > minDate ? startDate : startDate;
3558
- return /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
3559
- /* @__PURE__ */ (0, import_jsx_runtime319.jsx)("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3601
+ return /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
3602
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsx)("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3560
3603
  Tab_default,
3561
3604
  {
3562
3605
  activeIndex: activeTab === "start" ? 0 : 1,
@@ -3569,8 +3612,8 @@ var RangePicker = (props) => {
3569
3612
  size: "sm"
3570
3613
  }
3571
3614
  ) }),
3572
- /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: "datepicker-range-panels", children: [
3573
- /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3615
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: "datepicker-range-panels", children: [
3616
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3574
3617
  SingleDatePicker_default,
3575
3618
  {
3576
3619
  value: startDate,
@@ -3582,7 +3625,7 @@ var RangePicker = (props) => {
3582
3625
  locale
3583
3626
  }
3584
3627
  ),
3585
- /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3628
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3586
3629
  SingleDatePicker_default,
3587
3630
  {
3588
3631
  value: endDate,
@@ -3595,7 +3638,7 @@ var RangePicker = (props) => {
3595
3638
  }
3596
3639
  )
3597
3640
  ] }),
3598
- /* @__PURE__ */ (0, import_jsx_runtime319.jsx)("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3641
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsx)("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3599
3642
  SingleDatePicker_default,
3600
3643
  {
3601
3644
  value: startDate,
@@ -3606,7 +3649,7 @@ var RangePicker = (props) => {
3606
3649
  rangeEnd: endDate,
3607
3650
  locale
3608
3651
  }
3609
- ) : /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3652
+ ) : /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3610
3653
  SingleDatePicker_default,
3611
3654
  {
3612
3655
  value: endDate,
@@ -3624,10 +3667,10 @@ RangePicker.displayName = "RangePicker";
3624
3667
  var RangePicker_default = RangePicker;
3625
3668
 
3626
3669
  // src/components/DatePicker/PopupPicker/index.tsx
3627
- var import_jsx_runtime320 = require("react/jsx-runtime");
3670
+ var import_jsx_runtime321 = require("react/jsx-runtime");
3628
3671
  var PopupPicker = (props) => {
3629
3672
  const { component, type, locale } = props;
3630
- const [isOpen, setIsOpen] = import_react17.default.useState(false);
3673
+ const [isOpen, setIsOpen] = import_react18.default.useState(false);
3631
3674
  const handleClick = () => setIsOpen(true);
3632
3675
  const handleClose = () => setIsOpen(false);
3633
3676
  const handleSingleChange = (date) => {
@@ -3635,11 +3678,11 @@ var PopupPicker = (props) => {
3635
3678
  props.onChange?.(date);
3636
3679
  handleClose();
3637
3680
  };
3638
- return /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: "lib-xplat-popup-datepicker", children: [
3639
- import_react17.default.cloneElement(component, { onClick: handleClick }),
3640
- /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
3641
- /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: "popup-datepicker-content", children: [
3642
- type === "single" && /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3681
+ return /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: "lib-xplat-popup-datepicker", children: [
3682
+ import_react18.default.cloneElement(component, { onClick: handleClick }),
3683
+ /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
3684
+ /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: "popup-datepicker-content", children: [
3685
+ type === "single" && /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
3643
3686
  SingleDatePicker_default,
3644
3687
  {
3645
3688
  value: props.value,
@@ -3649,7 +3692,7 @@ var PopupPicker = (props) => {
3649
3692
  locale
3650
3693
  }
3651
3694
  ),
3652
- type === "range" && /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3695
+ type === "range" && /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
3653
3696
  RangePicker_default,
3654
3697
  {
3655
3698
  startDate: props.startDate,
@@ -3661,8 +3704,8 @@ var PopupPicker = (props) => {
3661
3704
  }
3662
3705
  )
3663
3706
  ] }),
3664
- /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: "popup-datepicker-footer", children: [
3665
- /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3707
+ /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: "popup-datepicker-footer", children: [
3708
+ /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
3666
3709
  Button_default,
3667
3710
  {
3668
3711
  type: "secondary",
@@ -3670,7 +3713,7 @@ var PopupPicker = (props) => {
3670
3713
  children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel"
3671
3714
  }
3672
3715
  ),
3673
- /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3716
+ /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3674
3717
  ] })
3675
3718
  ] }) })
3676
3719
  ] });
@@ -3679,10 +3722,10 @@ PopupPicker.displayName = "PopupPicker";
3679
3722
  var PopupPicker_default = PopupPicker;
3680
3723
 
3681
3724
  // src/components/Divider/Divider.tsx
3682
- var import_jsx_runtime321 = require("react/jsx-runtime");
3725
+ var import_jsx_runtime322 = require("react/jsx-runtime");
3683
3726
  var Divider = (props) => {
3684
3727
  const { orientation = "horizontal" } = props;
3685
- return /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
3728
+ return /* @__PURE__ */ (0, import_jsx_runtime322.jsx)(
3686
3729
  "div",
3687
3730
  {
3688
3731
  className: clsx_default("lib-xplat-divider", orientation),
@@ -3695,15 +3738,15 @@ Divider.displayName = "Divider";
3695
3738
  var Divider_default = Divider;
3696
3739
 
3697
3740
  // src/components/Drawer/Drawer.tsx
3698
- var import_react18 = __toESM(require("react"), 1);
3741
+ var import_react19 = __toESM(require("react"), 1);
3699
3742
  var import_react_dom3 = require("react-dom");
3700
- var import_jsx_runtime322 = require("react/jsx-runtime");
3743
+ var import_jsx_runtime323 = require("react/jsx-runtime");
3701
3744
  var ANIMATION_DURATION_MS2 = 250;
3702
3745
  var Drawer = (props) => {
3703
3746
  const { isOpen, onClose, placement = "right", size = "md", title, children } = props;
3704
- const [mounted, setMounted] = import_react18.default.useState(false);
3705
- const [visible, setVisible] = import_react18.default.useState(false);
3706
- import_react18.default.useEffect(() => {
3747
+ const [mounted, setMounted] = import_react19.default.useState(false);
3748
+ const [visible, setVisible] = import_react19.default.useState(false);
3749
+ import_react19.default.useEffect(() => {
3707
3750
  if (isOpen) {
3708
3751
  setMounted(true);
3709
3752
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -3717,12 +3760,12 @@ var Drawer = (props) => {
3717
3760
  if (!mounted) return null;
3718
3761
  const stateClass = visible ? "enter" : "exit";
3719
3762
  return (0, import_react_dom3.createPortal)(
3720
- /* @__PURE__ */ (0, import_jsx_runtime322.jsx)(
3763
+ /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(
3721
3764
  "div",
3722
3765
  {
3723
3766
  className: clsx_default("lib-xplat-drawer-overlay", stateClass),
3724
3767
  onClick: onClose,
3725
- children: /* @__PURE__ */ (0, import_jsx_runtime322.jsxs)(
3768
+ children: /* @__PURE__ */ (0, import_jsx_runtime323.jsxs)(
3726
3769
  "div",
3727
3770
  {
3728
3771
  className: clsx_default("lib-xplat-drawer", placement, size, stateClass),
@@ -3730,11 +3773,11 @@ var Drawer = (props) => {
3730
3773
  "aria-modal": "true",
3731
3774
  onClick: (e) => e.stopPropagation(),
3732
3775
  children: [
3733
- title && /* @__PURE__ */ (0, import_jsx_runtime322.jsxs)("div", { className: "drawer-header", children: [
3734
- /* @__PURE__ */ (0, import_jsx_runtime322.jsx)("span", { className: "drawer-title", children: title }),
3735
- /* @__PURE__ */ (0, import_jsx_runtime322.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
3776
+ title && /* @__PURE__ */ (0, import_jsx_runtime323.jsxs)("div", { className: "drawer-header", children: [
3777
+ /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("span", { className: "drawer-title", children: title }),
3778
+ /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
3736
3779
  ] }),
3737
- /* @__PURE__ */ (0, import_jsx_runtime322.jsx)("div", { className: "drawer-body", children })
3780
+ /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("div", { className: "drawer-body", children })
3738
3781
  ]
3739
3782
  }
3740
3783
  )
@@ -3747,16 +3790,16 @@ Drawer.displayName = "Drawer";
3747
3790
  var Drawer_default = Drawer;
3748
3791
 
3749
3792
  // src/components/Dropdown/Dropdown.tsx
3750
- var import_react21 = __toESM(require("react"), 1);
3793
+ var import_react22 = __toESM(require("react"), 1);
3751
3794
 
3752
3795
  // src/tokens/hooks/useAutoPosition.ts
3753
- var import_react19 = __toESM(require("react"), 1);
3796
+ var import_react20 = __toESM(require("react"), 1);
3754
3797
  var useAutoPosition = (triggerRef, popRef, enabled = true) => {
3755
- const [position, setPosition] = import_react19.default.useState({
3798
+ const [position, setPosition] = import_react20.default.useState({
3756
3799
  position: {},
3757
3800
  direction: "bottom"
3758
3801
  });
3759
- const calculatePosition = import_react19.default.useCallback(() => {
3802
+ const calculatePosition = import_react20.default.useCallback(() => {
3760
3803
  if (!triggerRef.current || !popRef.current) return;
3761
3804
  const triggerRect = triggerRef.current.getBoundingClientRect();
3762
3805
  const popW = popRef.current.offsetWidth;
@@ -3783,13 +3826,13 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
3783
3826
  direction
3784
3827
  });
3785
3828
  }, [triggerRef, popRef]);
3786
- import_react19.default.useLayoutEffect(() => {
3829
+ import_react20.default.useLayoutEffect(() => {
3787
3830
  if (!enabled) return;
3788
3831
  calculatePosition();
3789
3832
  const raf = requestAnimationFrame(calculatePosition);
3790
3833
  return () => cancelAnimationFrame(raf);
3791
3834
  }, [calculatePosition, enabled]);
3792
- import_react19.default.useEffect(() => {
3835
+ import_react20.default.useEffect(() => {
3793
3836
  if (!enabled || !popRef.current) return;
3794
3837
  const observer = new ResizeObserver(() => {
3795
3838
  calculatePosition();
@@ -3797,7 +3840,7 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
3797
3840
  observer.observe(popRef.current);
3798
3841
  return () => observer.disconnect();
3799
3842
  }, [calculatePosition, enabled, popRef]);
3800
- import_react19.default.useEffect(() => {
3843
+ import_react20.default.useEffect(() => {
3801
3844
  if (!enabled) return;
3802
3845
  window.addEventListener("resize", calculatePosition);
3803
3846
  window.addEventListener("scroll", calculatePosition, true);
@@ -3811,9 +3854,9 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
3811
3854
  var useAutoPosition_default = useAutoPosition;
3812
3855
 
3813
3856
  // src/tokens/hooks/useClickOutside.ts
3814
- var import_react20 = __toESM(require("react"), 1);
3857
+ var import_react21 = __toESM(require("react"), 1);
3815
3858
  var useClickOutside = (refs, handler, enabled = true) => {
3816
- import_react20.default.useEffect(() => {
3859
+ import_react21.default.useEffect(() => {
3817
3860
  if (!enabled) return;
3818
3861
  const refArray = Array.isArray(refs) ? refs : [refs];
3819
3862
  const listener = (event) => {
@@ -3836,17 +3879,17 @@ var useClickOutside = (refs, handler, enabled = true) => {
3836
3879
  var useClickOutside_default = useClickOutside;
3837
3880
 
3838
3881
  // src/components/Dropdown/Dropdown.tsx
3839
- var import_jsx_runtime323 = require("react/jsx-runtime");
3882
+ var import_jsx_runtime324 = require("react/jsx-runtime");
3840
3883
  var Dropdown = (props) => {
3841
3884
  const { items, children } = props;
3842
- const [isOpen, setIsOpen] = import_react21.default.useState(false);
3843
- const [mounted, setMounted] = import_react21.default.useState(false);
3844
- const [visible, setVisible] = import_react21.default.useState(false);
3845
- const triggerRef = import_react21.default.useRef(null);
3846
- const menuRef = import_react21.default.useRef(null);
3885
+ const [isOpen, setIsOpen] = import_react22.default.useState(false);
3886
+ const [mounted, setMounted] = import_react22.default.useState(false);
3887
+ const [visible, setVisible] = import_react22.default.useState(false);
3888
+ const triggerRef = import_react22.default.useRef(null);
3889
+ const menuRef = import_react22.default.useRef(null);
3847
3890
  const { position, direction } = useAutoPosition_default(triggerRef, menuRef, mounted);
3848
3891
  useClickOutside_default([triggerRef, menuRef], () => setIsOpen(false), isOpen);
3849
- import_react21.default.useEffect(() => {
3892
+ import_react22.default.useEffect(() => {
3850
3893
  if (isOpen) {
3851
3894
  setMounted(true);
3852
3895
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -3861,8 +3904,8 @@ var Dropdown = (props) => {
3861
3904
  item.onClick?.();
3862
3905
  setIsOpen(false);
3863
3906
  };
3864
- return /* @__PURE__ */ (0, import_jsx_runtime323.jsxs)("div", { className: "lib-xplat-dropdown", children: [
3865
- /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(
3907
+ return /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)("div", { className: "lib-xplat-dropdown", children: [
3908
+ /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
3866
3909
  "div",
3867
3910
  {
3868
3911
  ref: triggerRef,
@@ -3871,14 +3914,14 @@ var Dropdown = (props) => {
3871
3914
  children
3872
3915
  }
3873
3916
  ),
3874
- mounted && /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(
3917
+ mounted && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
3875
3918
  "div",
3876
3919
  {
3877
3920
  ref: menuRef,
3878
3921
  className: clsx_default("lib-xplat-dropdown-menu", direction, { visible }),
3879
3922
  style: { top: position.top, left: position.left },
3880
3923
  role: "menu",
3881
- children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(
3924
+ children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
3882
3925
  "button",
3883
3926
  {
3884
3927
  className: clsx_default("dropdown-item", {
@@ -3900,8 +3943,8 @@ Dropdown.displayName = "Dropdown";
3900
3943
  var Dropdown_default = Dropdown;
3901
3944
 
3902
3945
  // src/components/Editor/Editor.tsx
3903
- var import_react22 = __toESM(require("react"), 1);
3904
- var import_jsx_runtime324 = require("react/jsx-runtime");
3946
+ var import_react23 = __toESM(require("react"), 1);
3947
+ var import_jsx_runtime325 = require("react/jsx-runtime");
3905
3948
  var DEFAULT_TOOLBAR = [
3906
3949
  "bold",
3907
3950
  "italic",
@@ -4008,21 +4051,21 @@ var Editor = (props) => {
4008
4051
  onImageUpload,
4009
4052
  minHeight = 200
4010
4053
  } = props;
4011
- const editorRef = import_react22.default.useRef(null);
4012
- const lastRangeRef = import_react22.default.useRef(null);
4013
- const composingRef = import_react22.default.useRef(false);
4014
- const [isFocused, setIsFocused] = import_react22.default.useState(false);
4015
- const [isEmpty, setIsEmpty] = import_react22.default.useState(!value);
4016
- const [activeFormats, setActiveFormats] = import_react22.default.useState(/* @__PURE__ */ new Set());
4017
- const [slashOpen, setSlashOpen] = import_react22.default.useState(false);
4018
- const [slashFilter, setSlashFilter] = import_react22.default.useState("");
4019
- const [slashIdx, setSlashIdx] = import_react22.default.useState(0);
4020
- const [slashPos, setSlashPos] = import_react22.default.useState({ top: 0, left: 0 });
4021
- const slashStartRangeRef = import_react22.default.useRef(null);
4022
- const [linkOpen, setLinkOpen] = import_react22.default.useState(false);
4023
- const [linkValue, setLinkValue] = import_react22.default.useState("");
4024
- const [linkPos, setLinkPos] = import_react22.default.useState({ top: 0, left: 0 });
4025
- import_react22.default.useEffect(() => {
4054
+ const editorRef = import_react23.default.useRef(null);
4055
+ const lastRangeRef = import_react23.default.useRef(null);
4056
+ const composingRef = import_react23.default.useRef(false);
4057
+ const [isFocused, setIsFocused] = import_react23.default.useState(false);
4058
+ const [isEmpty, setIsEmpty] = import_react23.default.useState(!value);
4059
+ const [activeFormats, setActiveFormats] = import_react23.default.useState(/* @__PURE__ */ new Set());
4060
+ const [slashOpen, setSlashOpen] = import_react23.default.useState(false);
4061
+ const [slashFilter, setSlashFilter] = import_react23.default.useState("");
4062
+ const [slashIdx, setSlashIdx] = import_react23.default.useState(0);
4063
+ const [slashPos, setSlashPos] = import_react23.default.useState({ top: 0, left: 0 });
4064
+ const slashStartRangeRef = import_react23.default.useRef(null);
4065
+ const [linkOpen, setLinkOpen] = import_react23.default.useState(false);
4066
+ const [linkValue, setLinkValue] = import_react23.default.useState("");
4067
+ const [linkPos, setLinkPos] = import_react23.default.useState({ top: 0, left: 0 });
4068
+ import_react23.default.useEffect(() => {
4026
4069
  if (!editorRef.current) return;
4027
4070
  if (editorRef.current.innerHTML !== value) {
4028
4071
  editorRef.current.innerHTML = sanitizeHtml(value || "");
@@ -4136,7 +4179,7 @@ var Editor = (props) => {
4136
4179
  setSlashIdx(0);
4137
4180
  slashStartRangeRef.current = null;
4138
4181
  };
4139
- const filteredSlashItems = import_react22.default.useMemo(() => {
4182
+ const filteredSlashItems = import_react23.default.useMemo(() => {
4140
4183
  if (!slashFilter) return SLASH_ITEMS;
4141
4184
  const f = slashFilter.toLowerCase();
4142
4185
  return SLASH_ITEMS.filter((it) => it.label.toLowerCase().includes(f) || it.key.includes(f));
@@ -4421,8 +4464,8 @@ var Editor = (props) => {
4421
4464
  break;
4422
4465
  }
4423
4466
  };
4424
- return /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)("div", { className: clsx_default("lib-xplat-editor", isFocused && "focused", readOnly && "readonly"), children: [
4425
- !readOnly && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4467
+ return /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)("div", { className: clsx_default("lib-xplat-editor", isFocused && "focused", readOnly && "readonly"), children: [
4468
+ !readOnly && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4426
4469
  EditorToolbar,
4427
4470
  {
4428
4471
  items: toolbar,
@@ -4430,9 +4473,9 @@ var Editor = (props) => {
4430
4473
  onAction: onToolbarAction
4431
4474
  }
4432
4475
  ),
4433
- /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)("div", { className: "lib-xplat-editor__content", style: { minHeight }, children: [
4434
- isEmpty && !isFocused && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("div", { className: "lib-xplat-editor__placeholder", children: placeholder }),
4435
- /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4476
+ /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)("div", { className: "lib-xplat-editor__content", style: { minHeight }, children: [
4477
+ isEmpty && !isFocused && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "lib-xplat-editor__placeholder", children: placeholder }),
4478
+ /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4436
4479
  "div",
4437
4480
  {
4438
4481
  ref: editorRef,
@@ -4451,7 +4494,7 @@ var Editor = (props) => {
4451
4494
  spellCheck: true
4452
4495
  }
4453
4496
  ),
4454
- slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4497
+ slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4455
4498
  SlashMenu,
4456
4499
  {
4457
4500
  position: slashPos,
@@ -4461,7 +4504,7 @@ var Editor = (props) => {
4461
4504
  onClose: closeSlashMenu
4462
4505
  }
4463
4506
  ),
4464
- linkOpen && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4507
+ linkOpen && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4465
4508
  LinkPopover,
4466
4509
  {
4467
4510
  position: linkPos,
@@ -4513,7 +4556,7 @@ var isActive = (item, active) => {
4513
4556
  return active.has(item);
4514
4557
  };
4515
4558
  var EditorToolbar = ({ items, active, onAction }) => {
4516
- return /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("div", { className: "lib-xplat-editor__toolbar", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4559
+ return /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "lib-xplat-editor__toolbar", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4517
4560
  "button",
4518
4561
  {
4519
4562
  type: "button",
@@ -4529,7 +4572,7 @@ var EditorToolbar = ({ items, active, onAction }) => {
4529
4572
  )) });
4530
4573
  };
4531
4574
  var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
4532
- import_react22.default.useEffect(() => {
4575
+ import_react23.default.useEffect(() => {
4533
4576
  const handleClickOutside = (e) => {
4534
4577
  const target = e.target;
4535
4578
  const menu = document.querySelector(".lib-xplat-editor__slash-menu");
@@ -4538,12 +4581,12 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
4538
4581
  window.addEventListener("mousedown", handleClickOutside);
4539
4582
  return () => window.removeEventListener("mousedown", handleClickOutside);
4540
4583
  }, [onClose]);
4541
- return /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4584
+ return /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4542
4585
  "div",
4543
4586
  {
4544
4587
  className: "lib-xplat-editor__slash-menu",
4545
4588
  style: { top: position.top, left: position.left },
4546
- children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)(
4589
+ children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)(
4547
4590
  "button",
4548
4591
  {
4549
4592
  type: "button",
@@ -4553,8 +4596,8 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
4553
4596
  onSelect(item);
4554
4597
  },
4555
4598
  children: [
4556
- /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("span", { className: "label", children: item.label }),
4557
- item.hint && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("span", { className: "hint", children: item.hint })
4599
+ /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("span", { className: "label", children: item.label }),
4600
+ item.hint && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("span", { className: "hint", children: item.hint })
4558
4601
  ]
4559
4602
  },
4560
4603
  item.key
@@ -4563,17 +4606,17 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
4563
4606
  );
4564
4607
  };
4565
4608
  var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
4566
- const inputRef = import_react22.default.useRef(null);
4567
- import_react22.default.useEffect(() => {
4609
+ const inputRef = import_react23.default.useRef(null);
4610
+ import_react23.default.useEffect(() => {
4568
4611
  inputRef.current?.focus();
4569
4612
  }, []);
4570
- return /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)(
4613
+ return /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)(
4571
4614
  "div",
4572
4615
  {
4573
4616
  className: "lib-xplat-editor__link-popover",
4574
4617
  style: { top: position.top, left: position.left },
4575
4618
  children: [
4576
- /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4619
+ /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4577
4620
  "input",
4578
4621
  {
4579
4622
  ref: inputRef,
@@ -4593,11 +4636,11 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
4593
4636
  }
4594
4637
  }
4595
4638
  ),
4596
- /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("button", { type: "button", onMouseDown: (e) => {
4639
+ /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("button", { type: "button", onMouseDown: (e) => {
4597
4640
  e.preventDefault();
4598
4641
  onConfirm();
4599
4642
  }, children: "\uC801\uC6A9" }),
4600
- /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("button", { type: "button", onMouseDown: (e) => {
4643
+ /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("button", { type: "button", onMouseDown: (e) => {
4601
4644
  e.preventDefault();
4602
4645
  onClose();
4603
4646
  }, children: "\uCDE8\uC18C" })
@@ -4607,23 +4650,23 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
4607
4650
  };
4608
4651
 
4609
4652
  // src/components/EmptyState/EmptyState.tsx
4610
- var import_jsx_runtime325 = require("react/jsx-runtime");
4653
+ var import_jsx_runtime326 = require("react/jsx-runtime");
4611
4654
  var EmptyState = (props) => {
4612
4655
  const { icon, title = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4", description, action } = props;
4613
- return /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)("div", { className: "lib-xplat-empty-state", children: [
4614
- icon && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "empty-icon", children: icon }),
4615
- !icon && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "empty-icon", children: /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("path", { d: "M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" }) }) }),
4616
- /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("p", { className: "empty-title", children: title }),
4617
- description && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("p", { className: "empty-description", children: description }),
4618
- action && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "empty-action", children: action })
4656
+ return /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)("div", { className: "lib-xplat-empty-state", children: [
4657
+ icon && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "empty-icon", children: icon }),
4658
+ !icon && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "empty-icon", children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("path", { d: "M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" }) }) }),
4659
+ /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "empty-title", children: title }),
4660
+ description && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "empty-description", children: description }),
4661
+ action && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "empty-action", children: action })
4619
4662
  ] });
4620
4663
  };
4621
4664
  EmptyState.displayName = "EmptyState";
4622
4665
  var EmptyState_default = EmptyState;
4623
4666
 
4624
4667
  // src/components/FileUpload/FileUpload.tsx
4625
- var import_react23 = __toESM(require("react"), 1);
4626
- var import_jsx_runtime326 = require("react/jsx-runtime");
4668
+ var import_react24 = __toESM(require("react"), 1);
4669
+ var import_jsx_runtime327 = require("react/jsx-runtime");
4627
4670
  var FileUpload = (props) => {
4628
4671
  const {
4629
4672
  accept,
@@ -4633,8 +4676,8 @@ var FileUpload = (props) => {
4633
4676
  label = "\uD30C\uC77C\uC744 \uB4DC\uB798\uADF8\uD558\uAC70\uB098 \uD074\uB9AD\uD558\uC5EC \uC5C5\uB85C\uB4DC",
4634
4677
  description
4635
4678
  } = props;
4636
- const [isDragOver, setIsDragOver] = import_react23.default.useState(false);
4637
- const inputRef = import_react23.default.useRef(null);
4679
+ const [isDragOver, setIsDragOver] = import_react24.default.useState(false);
4680
+ const inputRef = import_react24.default.useRef(null);
4638
4681
  const handleFiles = (fileList) => {
4639
4682
  let files = Array.from(fileList);
4640
4683
  if (maxSize) {
@@ -4664,7 +4707,7 @@ var FileUpload = (props) => {
4664
4707
  handleFiles(e.target.files);
4665
4708
  }
4666
4709
  };
4667
- return /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)(
4710
+ return /* @__PURE__ */ (0, import_jsx_runtime327.jsxs)(
4668
4711
  "div",
4669
4712
  {
4670
4713
  className: clsx_default("lib-xplat-file-upload", { "drag-over": isDragOver }),
@@ -4673,7 +4716,7 @@ var FileUpload = (props) => {
4673
4716
  onDragLeave: handleDragLeave,
4674
4717
  onClick: () => inputRef.current?.click(),
4675
4718
  children: [
4676
- /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
4719
+ /* @__PURE__ */ (0, import_jsx_runtime327.jsx)(
4677
4720
  "input",
4678
4721
  {
4679
4722
  ref: inputRef,
@@ -4683,9 +4726,9 @@ var FileUpload = (props) => {
4683
4726
  onChange: handleChange
4684
4727
  }
4685
4728
  ),
4686
- /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "upload-icon", children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(UploadIcon_default, {}) }),
4687
- /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "upload-label", children: label }),
4688
- description && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "upload-description", children: description })
4729
+ /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("div", { className: "upload-icon", children: /* @__PURE__ */ (0, import_jsx_runtime327.jsx)(UploadIcon_default, {}) }),
4730
+ /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("p", { className: "upload-label", children: label }),
4731
+ description && /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("p", { className: "upload-description", children: description })
4689
4732
  ]
4690
4733
  }
4691
4734
  );
@@ -4694,10 +4737,10 @@ FileUpload.displayName = "FileUpload";
4694
4737
  var FileUpload_default = FileUpload;
4695
4738
 
4696
4739
  // src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
4697
- var import_react25 = __toESM(require("react"), 1);
4740
+ var import_react26 = __toESM(require("react"), 1);
4698
4741
 
4699
4742
  // src/components/HtmlTypeWriter/utils.ts
4700
- var import_react24 = __toESM(require("react"), 1);
4743
+ var import_react25 = __toESM(require("react"), 1);
4701
4744
  var voidTags = /* @__PURE__ */ new Set([
4702
4745
  "br",
4703
4746
  "img",
@@ -4765,41 +4808,41 @@ var convertNodeToReactWithRange = (node, typedLen, rangeMap) => {
4765
4808
  props[attr.name] = attr.value;
4766
4809
  });
4767
4810
  if (voidTags.has(tag)) {
4768
- return import_react24.default.createElement(tag, props);
4811
+ return import_react25.default.createElement(tag, props);
4769
4812
  }
4770
4813
  const children = Array.from(element.childNodes).map((child) => convertNodeToReactWithRange(child, typedLen, rangeMap)).filter((n) => n != null);
4771
- return import_react24.default.createElement(tag, props, ...children);
4814
+ return import_react25.default.createElement(tag, props, ...children);
4772
4815
  };
4773
4816
  var htmlToReactProgressive = (root, typedLen, rangeMap) => {
4774
4817
  const nodes = Array.from(root.childNodes).map((child, idx) => {
4775
4818
  const node = convertNodeToReactWithRange(child, typedLen, rangeMap);
4776
- return node == null ? null : import_react24.default.createElement(import_react24.default.Fragment, { key: idx }, node);
4819
+ return node == null ? null : import_react25.default.createElement(import_react25.default.Fragment, { key: idx }, node);
4777
4820
  }).filter(Boolean);
4778
4821
  return nodes.length === 0 ? null : nodes;
4779
4822
  };
4780
4823
 
4781
4824
  // src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
4782
- var import_jsx_runtime327 = require("react/jsx-runtime");
4825
+ var import_jsx_runtime328 = require("react/jsx-runtime");
4783
4826
  var HtmlTypeWriter = ({
4784
4827
  html,
4785
4828
  duration = 20,
4786
4829
  onDone,
4787
4830
  onChange
4788
4831
  }) => {
4789
- const [typedLen, setTypedLen] = import_react25.default.useState(0);
4790
- const doneCalledRef = import_react25.default.useRef(false);
4791
- const { doc, rangeMap, totalLength } = import_react25.default.useMemo(() => {
4832
+ const [typedLen, setTypedLen] = import_react26.default.useState(0);
4833
+ const doneCalledRef = import_react26.default.useRef(false);
4834
+ const { doc, rangeMap, totalLength } = import_react26.default.useMemo(() => {
4792
4835
  if (typeof window === "undefined") return { doc: null, rangeMap: /* @__PURE__ */ new Map(), totalLength: 0 };
4793
4836
  const decoded = decodeHtmlEntities(html);
4794
4837
  const doc2 = new DOMParser().parseFromString(decoded, "text/html");
4795
4838
  const { rangeMap: rangeMap2, totalLength: totalLength2 } = buildRangeMap(doc2.body);
4796
4839
  return { doc: doc2, rangeMap: rangeMap2, totalLength: totalLength2 };
4797
4840
  }, [html]);
4798
- import_react25.default.useEffect(() => {
4841
+ import_react26.default.useEffect(() => {
4799
4842
  setTypedLen(0);
4800
4843
  doneCalledRef.current = false;
4801
4844
  }, [html]);
4802
- import_react25.default.useEffect(() => {
4845
+ import_react26.default.useEffect(() => {
4803
4846
  if (!totalLength) return;
4804
4847
  if (typedLen >= totalLength) return;
4805
4848
  const timer = window.setInterval(() => {
@@ -4807,33 +4850,33 @@ var HtmlTypeWriter = ({
4807
4850
  }, duration);
4808
4851
  return () => window.clearInterval(timer);
4809
4852
  }, [typedLen, totalLength, duration]);
4810
- import_react25.default.useEffect(() => {
4853
+ import_react26.default.useEffect(() => {
4811
4854
  if (typedLen > 0 && typedLen < totalLength) {
4812
4855
  onChange?.();
4813
4856
  }
4814
4857
  }, [typedLen, totalLength, onChange]);
4815
- import_react25.default.useEffect(() => {
4858
+ import_react26.default.useEffect(() => {
4816
4859
  if (typedLen === totalLength && totalLength > 0 && !doneCalledRef.current) {
4817
4860
  doneCalledRef.current = true;
4818
4861
  onDone?.();
4819
4862
  }
4820
4863
  }, [typedLen, totalLength, onDone]);
4821
- const parsed = import_react25.default.useMemo(
4864
+ const parsed = import_react26.default.useMemo(
4822
4865
  () => doc ? htmlToReactProgressive(doc.body, typedLen, rangeMap) : null,
4823
4866
  [doc, typedLen, rangeMap]
4824
4867
  );
4825
- return /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
4868
+ return /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
4826
4869
  };
4827
4870
  HtmlTypeWriter.displayName = "HtmlTypeWriter";
4828
4871
  var HtmlTypeWriter_default = HtmlTypeWriter;
4829
4872
 
4830
4873
  // src/components/ImageSelector/ImageSelector.tsx
4831
- var import_react26 = __toESM(require("react"), 1);
4832
- var import_jsx_runtime328 = require("react/jsx-runtime");
4874
+ var import_react27 = __toESM(require("react"), 1);
4875
+ var import_jsx_runtime329 = require("react/jsx-runtime");
4833
4876
  var ImageSelector = (props) => {
4834
4877
  const { value, label, onChange } = props;
4835
- const [previewUrl, setPreviewUrl] = import_react26.default.useState();
4836
- import_react26.default.useEffect(() => {
4878
+ const [previewUrl, setPreviewUrl] = import_react27.default.useState();
4879
+ import_react27.default.useEffect(() => {
4837
4880
  if (!value) {
4838
4881
  setPreviewUrl(void 0);
4839
4882
  return;
@@ -4842,7 +4885,7 @@ var ImageSelector = (props) => {
4842
4885
  setPreviewUrl(url);
4843
4886
  return () => URL.revokeObjectURL(url);
4844
4887
  }, [value]);
4845
- const inputRef = import_react26.default.useRef(null);
4888
+ const inputRef = import_react27.default.useRef(null);
4846
4889
  const handleFileChange = (e) => {
4847
4890
  const selectedFile = e.target.files?.[0];
4848
4891
  if (selectedFile) {
@@ -4855,8 +4898,8 @@ var ImageSelector = (props) => {
4855
4898
  const handleOpenFileDialog = () => {
4856
4899
  inputRef.current?.click();
4857
4900
  };
4858
- return /* @__PURE__ */ (0, import_jsx_runtime328.jsxs)("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
4859
- /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(
4901
+ return /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
4902
+ /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
4860
4903
  "input",
4861
4904
  {
4862
4905
  type: "file",
@@ -4866,13 +4909,13 @@ var ImageSelector = (props) => {
4866
4909
  ref: inputRef
4867
4910
  }
4868
4911
  ),
4869
- value && /* @__PURE__ */ (0, import_jsx_runtime328.jsxs)("div", { className: "action-bar", children: [
4870
- /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(UploadIcon_default, {}) }),
4871
- /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(DeleteIcon_default, {}) })
4912
+ value && /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: "action-bar", children: [
4913
+ /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(UploadIcon_default, {}) }),
4914
+ /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(DeleteIcon_default, {}) })
4872
4915
  ] }),
4873
- /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "content", children: previewUrl ? /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ (0, import_jsx_runtime328.jsxs)("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
4874
- /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "icon-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(ImageIcon_default, {}) }),
4875
- /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
4916
+ /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "content", children: previewUrl ? /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
4917
+ /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "icon-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(ImageIcon_default, {}) }),
4918
+ /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
4876
4919
  ] }) })
4877
4920
  ] });
4878
4921
  };
@@ -4880,7 +4923,7 @@ ImageSelector.displayName = "ImageSelector";
4880
4923
  var ImageSelector_default = ImageSelector;
4881
4924
 
4882
4925
  // src/components/Pagination/Pagination.tsx
4883
- var import_jsx_runtime329 = require("react/jsx-runtime");
4926
+ var import_jsx_runtime330 = require("react/jsx-runtime");
4884
4927
  var getPageRange = (current, totalPages, siblingCount) => {
4885
4928
  const totalNumbers = siblingCount * 2 + 5;
4886
4929
  if (totalPages <= totalNumbers) {
@@ -4923,19 +4966,19 @@ var Pagination = (props) => {
4923
4966
  onChange?.(page);
4924
4967
  }
4925
4968
  };
4926
- return /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("nav", { className: clsx_default("lib-xplat-pagination", size, type), "aria-label": "\uD398\uC774\uC9C0 \uB124\uBE44\uAC8C\uC774\uC158", children: [
4927
- /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
4969
+ return /* @__PURE__ */ (0, import_jsx_runtime330.jsxs)("nav", { className: clsx_default("lib-xplat-pagination", size, type), "aria-label": "\uD398\uC774\uC9C0 \uB124\uBE44\uAC8C\uC774\uC158", children: [
4970
+ /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(
4928
4971
  "button",
4929
4972
  {
4930
4973
  className: "page-btn prev",
4931
4974
  disabled: current <= 1,
4932
4975
  onClick: () => handleClick(current - 1),
4933
4976
  "aria-label": "\uC774\uC804 \uD398\uC774\uC9C0",
4934
- children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(ChevronLeftIcon_default, {})
4977
+ children: /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(ChevronLeftIcon_default, {})
4935
4978
  }
4936
4979
  ),
4937
4980
  pages.map(
4938
- (page, i) => page === "..." ? /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
4981
+ (page, i) => page === "..." ? /* @__PURE__ */ (0, import_jsx_runtime330.jsx)("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(
4939
4982
  "button",
4940
4983
  {
4941
4984
  className: clsx_default("page-btn", { active: page === current }),
@@ -4946,14 +4989,14 @@ var Pagination = (props) => {
4946
4989
  page
4947
4990
  )
4948
4991
  ),
4949
- /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
4992
+ /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(
4950
4993
  "button",
4951
4994
  {
4952
4995
  className: "page-btn next",
4953
4996
  disabled: current >= totalPages,
4954
4997
  onClick: () => handleClick(current + 1),
4955
4998
  "aria-label": "\uB2E4\uC74C \uD398\uC774\uC9C0",
4956
- children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(ChevronRightIcon_default, {})
4999
+ children: /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(ChevronRightIcon_default, {})
4957
5000
  }
4958
5001
  )
4959
5002
  ] });
@@ -4962,17 +5005,17 @@ Pagination.displayName = "Pagination";
4962
5005
  var Pagination_default = Pagination;
4963
5006
 
4964
5007
  // src/components/PopOver/PopOver.tsx
4965
- var import_react27 = __toESM(require("react"), 1);
4966
- var import_jsx_runtime330 = require("react/jsx-runtime");
5008
+ var import_react28 = __toESM(require("react"), 1);
5009
+ var import_jsx_runtime331 = require("react/jsx-runtime");
4967
5010
  var PopOver = (props) => {
4968
5011
  const { children, isOpen, onClose, PopOverEl } = props;
4969
- const popRef = import_react27.default.useRef(null);
4970
- const triggerRef = import_react27.default.useRef(null);
4971
- const [localOpen, setLocalOpen] = import_react27.default.useState(false);
4972
- const [eventTrigger, setEventTrigger] = import_react27.default.useState(false);
5012
+ const popRef = import_react28.default.useRef(null);
5013
+ const triggerRef = import_react28.default.useRef(null);
5014
+ const [localOpen, setLocalOpen] = import_react28.default.useState(false);
5015
+ const [eventTrigger, setEventTrigger] = import_react28.default.useState(false);
4973
5016
  useClickOutside_default([popRef, triggerRef], onClose, isOpen);
4974
5017
  const position = useAutoPosition_default(triggerRef, popRef, localOpen);
4975
- import_react27.default.useEffect(() => {
5018
+ import_react28.default.useEffect(() => {
4976
5019
  if (isOpen) {
4977
5020
  setLocalOpen(isOpen);
4978
5021
  setTimeout(() => {
@@ -4985,7 +5028,7 @@ var PopOver = (props) => {
4985
5028
  }, 200);
4986
5029
  }
4987
5030
  }, [isOpen]);
4988
- return /* @__PURE__ */ (0, import_jsx_runtime330.jsxs)(
5031
+ return /* @__PURE__ */ (0, import_jsx_runtime331.jsxs)(
4989
5032
  "div",
4990
5033
  {
4991
5034
  className: "lib-xplat-pop-over",
@@ -4995,7 +5038,7 @@ var PopOver = (props) => {
4995
5038
  },
4996
5039
  children: [
4997
5040
  children,
4998
- localOpen && /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(
5041
+ localOpen && /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(
4999
5042
  "div",
5000
5043
  {
5001
5044
  className: clsx_default(
@@ -5018,7 +5061,7 @@ PopOver.displayName = "PopOver";
5018
5061
  var PopOver_default = PopOver;
5019
5062
 
5020
5063
  // src/components/Progress/Progress.tsx
5021
- var import_jsx_runtime331 = require("react/jsx-runtime");
5064
+ var import_jsx_runtime332 = require("react/jsx-runtime");
5022
5065
  var Progress = (props) => {
5023
5066
  const {
5024
5067
  value,
@@ -5028,8 +5071,8 @@ var Progress = (props) => {
5028
5071
  showLabel = false
5029
5072
  } = props;
5030
5073
  const percentage = Math.min(100, Math.max(0, value / max * 100));
5031
- return /* @__PURE__ */ (0, import_jsx_runtime331.jsxs)("div", { className: clsx_default("lib-xplat-progress", size, type), children: [
5032
- /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(
5074
+ return /* @__PURE__ */ (0, import_jsx_runtime332.jsxs)("div", { className: clsx_default("lib-xplat-progress", size, type), children: [
5075
+ /* @__PURE__ */ (0, import_jsx_runtime332.jsx)(
5033
5076
  "div",
5034
5077
  {
5035
5078
  className: "track",
@@ -5037,7 +5080,7 @@ var Progress = (props) => {
5037
5080
  "aria-valuenow": value,
5038
5081
  "aria-valuemin": 0,
5039
5082
  "aria-valuemax": max,
5040
- children: /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(
5083
+ children: /* @__PURE__ */ (0, import_jsx_runtime332.jsx)(
5041
5084
  "div",
5042
5085
  {
5043
5086
  className: "bar",
@@ -5046,7 +5089,7 @@ var Progress = (props) => {
5046
5089
  )
5047
5090
  }
5048
5091
  ),
5049
- showLabel && /* @__PURE__ */ (0, import_jsx_runtime331.jsxs)("span", { className: "label", children: [
5092
+ showLabel && /* @__PURE__ */ (0, import_jsx_runtime332.jsxs)("span", { className: "label", children: [
5050
5093
  Math.round(percentage),
5051
5094
  "%"
5052
5095
  ] })
@@ -5056,17 +5099,17 @@ Progress.displayName = "Progress";
5056
5099
  var Progress_default = Progress;
5057
5100
 
5058
5101
  // src/components/Radio/RadioGroupContext.tsx
5059
- var import_react28 = __toESM(require("react"), 1);
5060
- var RadioGroupContext = import_react28.default.createContext(
5102
+ var import_react29 = __toESM(require("react"), 1);
5103
+ var RadioGroupContext = import_react29.default.createContext(
5061
5104
  null
5062
5105
  );
5063
5106
  var useRadioGroupContext = () => {
5064
- return import_react28.default.useContext(RadioGroupContext);
5107
+ return import_react29.default.useContext(RadioGroupContext);
5065
5108
  };
5066
5109
  var RadioGroupContext_default = RadioGroupContext;
5067
5110
 
5068
5111
  // src/components/Radio/Radio.tsx
5069
- var import_jsx_runtime332 = require("react/jsx-runtime");
5112
+ var import_jsx_runtime333 = require("react/jsx-runtime");
5070
5113
  var Radio = (props) => {
5071
5114
  const {
5072
5115
  label,
@@ -5085,7 +5128,7 @@ var Radio = (props) => {
5085
5128
  value,
5086
5129
  onChange: rest.onChange
5087
5130
  };
5088
- return /* @__PURE__ */ (0, import_jsx_runtime332.jsxs)(
5131
+ return /* @__PURE__ */ (0, import_jsx_runtime333.jsxs)(
5089
5132
  "label",
5090
5133
  {
5091
5134
  className: clsx_default(
@@ -5096,18 +5139,18 @@ var Radio = (props) => {
5096
5139
  className
5097
5140
  ),
5098
5141
  children: [
5099
- /* @__PURE__ */ (0, import_jsx_runtime332.jsx)("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
5100
- /* @__PURE__ */ (0, import_jsx_runtime332.jsx)(
5142
+ /* @__PURE__ */ (0, import_jsx_runtime333.jsx)("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
5143
+ /* @__PURE__ */ (0, import_jsx_runtime333.jsx)(
5101
5144
  "div",
5102
5145
  {
5103
5146
  className: clsx_default(
5104
5147
  "circle",
5105
5148
  localChecked ? "checked" : void 0
5106
5149
  ),
5107
- children: localChecked && /* @__PURE__ */ (0, import_jsx_runtime332.jsx)("div", { className: "inner-circle" })
5150
+ children: localChecked && /* @__PURE__ */ (0, import_jsx_runtime333.jsx)("div", { className: "inner-circle" })
5108
5151
  }
5109
5152
  ),
5110
- label && /* @__PURE__ */ (0, import_jsx_runtime332.jsx)("span", { children: label })
5153
+ label && /* @__PURE__ */ (0, import_jsx_runtime333.jsx)("span", { children: label })
5111
5154
  ]
5112
5155
  }
5113
5156
  );
@@ -5116,28 +5159,28 @@ Radio.displayName = "Radio";
5116
5159
  var Radio_default = Radio;
5117
5160
 
5118
5161
  // src/components/Radio/RadioGroup.tsx
5119
- var import_jsx_runtime333 = require("react/jsx-runtime");
5162
+ var import_jsx_runtime334 = require("react/jsx-runtime");
5120
5163
  var RadioGroup = (props) => {
5121
5164
  const { children, ...rest } = props;
5122
- return /* @__PURE__ */ (0, import_jsx_runtime333.jsx)(import_jsx_runtime333.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime333.jsx)(RadioGroupContext_default.Provider, { value: rest, children }) });
5165
+ return /* @__PURE__ */ (0, import_jsx_runtime334.jsx)(import_jsx_runtime334.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime334.jsx)(RadioGroupContext_default.Provider, { value: rest, children }) });
5123
5166
  };
5124
5167
  RadioGroup.displayName = "RadioGroup";
5125
5168
  var RadioGroup_default = RadioGroup;
5126
5169
 
5127
5170
  // src/components/Select/Select.tsx
5128
- var import_react31 = __toESM(require("react"), 1);
5171
+ var import_react32 = __toESM(require("react"), 1);
5129
5172
 
5130
5173
  // src/components/Select/context.ts
5131
- var import_react29 = __toESM(require("react"), 1);
5132
- var SelectContext = import_react29.default.createContext(null);
5174
+ var import_react30 = __toESM(require("react"), 1);
5175
+ var SelectContext = import_react30.default.createContext(null);
5133
5176
  var context_default = SelectContext;
5134
5177
 
5135
5178
  // src/components/Select/SelectItem.tsx
5136
- var import_react30 = __toESM(require("react"), 1);
5137
- var import_jsx_runtime334 = require("react/jsx-runtime");
5179
+ var import_react31 = __toESM(require("react"), 1);
5180
+ var import_jsx_runtime335 = require("react/jsx-runtime");
5138
5181
  var SelectItem = (props) => {
5139
5182
  const { children, value, onClick, disabled = false } = props;
5140
- const ctx = import_react30.default.useContext(context_default);
5183
+ const ctx = import_react31.default.useContext(context_default);
5141
5184
  const handleClick = (e) => {
5142
5185
  e.preventDefault();
5143
5186
  e.stopPropagation();
@@ -5147,7 +5190,7 @@ var SelectItem = (props) => {
5147
5190
  onClick?.();
5148
5191
  };
5149
5192
  const isSelected = value !== void 0 ? ctx?.selectedValue === value : ctx?.selectedLabel === children;
5150
- return /* @__PURE__ */ (0, import_jsx_runtime334.jsx)(
5193
+ return /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(
5151
5194
  "div",
5152
5195
  {
5153
5196
  className: clsx_default("select-item", disabled && "disabled", isSelected && "is-selected"),
@@ -5168,7 +5211,7 @@ SelectItem.displayName = "Select.Item";
5168
5211
  var SelectItem_default = SelectItem;
5169
5212
 
5170
5213
  // src/components/Select/Select.tsx
5171
- var import_jsx_runtime335 = require("react/jsx-runtime");
5214
+ var import_jsx_runtime336 = require("react/jsx-runtime");
5172
5215
  var ANIMATION_DURATION_MS3 = 200;
5173
5216
  var SelectRoot = (props) => {
5174
5217
  const {
@@ -5180,28 +5223,28 @@ var SelectRoot = (props) => {
5180
5223
  error = false,
5181
5224
  size = "md"
5182
5225
  } = props;
5183
- const itemChildren = import_react31.default.Children.toArray(children).filter(
5184
- (child) => import_react31.default.isValidElement(child) && child.type === SelectItem_default
5226
+ const itemChildren = import_react32.default.Children.toArray(children).filter(
5227
+ (child) => import_react32.default.isValidElement(child) && child.type === SelectItem_default
5185
5228
  );
5186
5229
  const isControlled = valueProp !== void 0;
5187
- const [isOpen, setOpen] = import_react31.default.useState(false);
5188
- const [uncontrolledLabel, setUncontrolledLabel] = import_react31.default.useState(null);
5189
- const [uncontrolledValue, setUncontrolledValue] = import_react31.default.useState(void 0);
5190
- const controlledLabel = import_react31.default.useMemo(() => {
5230
+ const [isOpen, setOpen] = import_react32.default.useState(false);
5231
+ const [uncontrolledLabel, setUncontrolledLabel] = import_react32.default.useState(null);
5232
+ const [uncontrolledValue, setUncontrolledValue] = import_react32.default.useState(void 0);
5233
+ const controlledLabel = import_react32.default.useMemo(() => {
5191
5234
  if (!isControlled) return null;
5192
5235
  const match = itemChildren.find((child) => child.props.value === valueProp);
5193
5236
  return match ? match.props.children : null;
5194
5237
  }, [isControlled, valueProp, itemChildren]);
5195
5238
  const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
5196
5239
  const selectedValue = isControlled ? valueProp : uncontrolledValue;
5197
- const triggerRef = import_react31.default.useRef(null);
5198
- const contentRef = import_react31.default.useRef(null);
5199
- const [mounted, setMounted] = import_react31.default.useState(false);
5200
- const [visible, setVisible] = import_react31.default.useState(false);
5201
- import_react31.default.useEffect(() => {
5240
+ const triggerRef = import_react32.default.useRef(null);
5241
+ const contentRef = import_react32.default.useRef(null);
5242
+ const [mounted, setMounted] = import_react32.default.useState(false);
5243
+ const [visible, setVisible] = import_react32.default.useState(false);
5244
+ import_react32.default.useEffect(() => {
5202
5245
  if (disabled && isOpen) setOpen(false);
5203
5246
  }, [disabled, isOpen]);
5204
- import_react31.default.useEffect(() => {
5247
+ import_react32.default.useEffect(() => {
5205
5248
  if (isOpen) {
5206
5249
  setMounted(true);
5207
5250
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -5211,12 +5254,12 @@ var SelectRoot = (props) => {
5211
5254
  const t = setTimeout(() => setMounted(false), ANIMATION_DURATION_MS3);
5212
5255
  return () => clearTimeout(t);
5213
5256
  }, [isOpen]);
5214
- const open = import_react31.default.useCallback(() => setOpen(true), []);
5215
- const close = import_react31.default.useCallback(() => setOpen(false), []);
5216
- const toggle = import_react31.default.useCallback(() => setOpen((prev) => !prev), []);
5257
+ const open = import_react32.default.useCallback(() => setOpen(true), []);
5258
+ const close = import_react32.default.useCallback(() => setOpen(false), []);
5259
+ const toggle = import_react32.default.useCallback(() => setOpen((prev) => !prev), []);
5217
5260
  useClickOutside_default([contentRef, triggerRef], close, isOpen);
5218
5261
  const position = useAutoPosition_default(triggerRef, contentRef, mounted);
5219
- const setSelected = import_react31.default.useCallback(
5262
+ const setSelected = import_react32.default.useCallback(
5220
5263
  (label, itemValue) => {
5221
5264
  if (!isControlled) {
5222
5265
  setUncontrolledLabel(label);
@@ -5226,7 +5269,7 @@ var SelectRoot = (props) => {
5226
5269
  },
5227
5270
  [isControlled, onChange]
5228
5271
  );
5229
- const ctxValue = import_react31.default.useMemo(
5272
+ const ctxValue = import_react32.default.useMemo(
5230
5273
  () => ({
5231
5274
  isOpen,
5232
5275
  mounted,
@@ -5248,7 +5291,7 @@ var SelectRoot = (props) => {
5248
5291
  if (disabled) return;
5249
5292
  toggle();
5250
5293
  };
5251
- return /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ (0, import_jsx_runtime335.jsxs)(
5294
+ return /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ (0, import_jsx_runtime336.jsxs)(
5252
5295
  "div",
5253
5296
  {
5254
5297
  className: clsx_default(
@@ -5259,7 +5302,7 @@ var SelectRoot = (props) => {
5259
5302
  mounted && "is-open"
5260
5303
  ),
5261
5304
  children: [
5262
- /* @__PURE__ */ (0, import_jsx_runtime335.jsxs)(
5305
+ /* @__PURE__ */ (0, import_jsx_runtime336.jsxs)(
5263
5306
  "div",
5264
5307
  {
5265
5308
  ref: triggerRef,
@@ -5283,7 +5326,7 @@ var SelectRoot = (props) => {
5283
5326
  }
5284
5327
  },
5285
5328
  children: [
5286
- /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(
5329
+ /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(
5287
5330
  "span",
5288
5331
  {
5289
5332
  className: clsx_default(
@@ -5293,25 +5336,25 @@ var SelectRoot = (props) => {
5293
5336
  children: selectedLabel ?? placeholder
5294
5337
  }
5295
5338
  ),
5296
- /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(
5339
+ /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(
5297
5340
  "span",
5298
5341
  {
5299
5342
  className: clsx_default("select-trigger-icon", isOpen && "open"),
5300
5343
  "aria-hidden": true,
5301
- children: /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(ChevronDownIcon_default, {})
5344
+ children: /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(ChevronDownIcon_default, {})
5302
5345
  }
5303
5346
  )
5304
5347
  ]
5305
5348
  }
5306
5349
  ),
5307
- mounted && /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(
5350
+ mounted && /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(
5308
5351
  "div",
5309
5352
  {
5310
5353
  className: clsx_default("lib-xplat-select-content", size, position.direction, stateClass),
5311
5354
  ref: contentRef,
5312
5355
  style: { ...position.position, width: triggerRef.current?.offsetWidth },
5313
5356
  role: "listbox",
5314
- children: /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(context_default.Provider, { value: ctxValue, children: itemChildren })
5357
+ children: /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(context_default.Provider, { value: ctxValue, children: itemChildren })
5315
5358
  }
5316
5359
  ) })
5317
5360
  ]
@@ -5325,7 +5368,7 @@ var Select = Object.assign(SelectRoot, {
5325
5368
  var Select_default = Select;
5326
5369
 
5327
5370
  // src/components/Skeleton/Skeleton.tsx
5328
- var import_jsx_runtime336 = require("react/jsx-runtime");
5371
+ var import_jsx_runtime337 = require("react/jsx-runtime");
5329
5372
  var SIZE_MAP = {
5330
5373
  xs: "var(--spacing-size-1)",
5331
5374
  sm: "var(--spacing-size-2)",
@@ -5341,7 +5384,7 @@ var Skeleton = (props) => {
5341
5384
  ...width != null && { width: SIZE_MAP[width] },
5342
5385
  ...height != null && { height: SIZE_MAP[height] }
5343
5386
  };
5344
- return /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(
5387
+ return /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
5345
5388
  "div",
5346
5389
  {
5347
5390
  className: clsx_default("lib-xplat-skeleton", variant),
@@ -5354,20 +5397,20 @@ Skeleton.displayName = "Skeleton";
5354
5397
  var Skeleton_default = Skeleton;
5355
5398
 
5356
5399
  // src/components/Spinner/Spinner.tsx
5357
- var import_jsx_runtime337 = require("react/jsx-runtime");
5400
+ var import_jsx_runtime338 = require("react/jsx-runtime");
5358
5401
  var Spinner = (props) => {
5359
5402
  const {
5360
5403
  size = "md",
5361
5404
  type = "brand"
5362
5405
  } = props;
5363
- return /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
5406
+ return /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
5364
5407
  "div",
5365
5408
  {
5366
5409
  className: clsx_default("lib-xplat-spinner", size, type),
5367
5410
  role: "status",
5368
5411
  "aria-label": "\uB85C\uB529 \uC911",
5369
- children: /* @__PURE__ */ (0, import_jsx_runtime337.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
5370
- /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
5412
+ children: /* @__PURE__ */ (0, import_jsx_runtime338.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
5413
+ /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
5371
5414
  "circle",
5372
5415
  {
5373
5416
  className: "track",
@@ -5377,7 +5420,7 @@ var Spinner = (props) => {
5377
5420
  strokeWidth: "3"
5378
5421
  }
5379
5422
  ),
5380
- /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
5423
+ /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
5381
5424
  "circle",
5382
5425
  {
5383
5426
  className: "indicator",
@@ -5396,20 +5439,20 @@ Spinner.displayName = "Spinner";
5396
5439
  var Spinner_default = Spinner;
5397
5440
 
5398
5441
  // src/components/Steps/Steps.tsx
5399
- var import_jsx_runtime338 = require("react/jsx-runtime");
5442
+ var import_jsx_runtime339 = require("react/jsx-runtime");
5400
5443
  var Steps = (props) => {
5401
5444
  const {
5402
5445
  items,
5403
5446
  current,
5404
5447
  type = "brand"
5405
5448
  } = props;
5406
- return /* @__PURE__ */ (0, import_jsx_runtime338.jsx)("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
5449
+ return /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
5407
5450
  const status = index < current ? "completed" : index === current ? "active" : "pending";
5408
- return /* @__PURE__ */ (0, import_jsx_runtime338.jsxs)("div", { className: clsx_default("step-item", status), children: [
5409
- /* @__PURE__ */ (0, import_jsx_runtime338.jsx)("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(CheckIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime338.jsx)("span", { children: index + 1 }) }),
5410
- /* @__PURE__ */ (0, import_jsx_runtime338.jsxs)("div", { className: "step-content", children: [
5411
- /* @__PURE__ */ (0, import_jsx_runtime338.jsx)("span", { className: "step-title", children: item.title }),
5412
- item.description && /* @__PURE__ */ (0, import_jsx_runtime338.jsx)("span", { className: "step-description", children: item.description })
5451
+ return /* @__PURE__ */ (0, import_jsx_runtime339.jsxs)("div", { className: clsx_default("step-item", status), children: [
5452
+ /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(CheckIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("span", { children: index + 1 }) }),
5453
+ /* @__PURE__ */ (0, import_jsx_runtime339.jsxs)("div", { className: "step-content", children: [
5454
+ /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("span", { className: "step-title", children: item.title }),
5455
+ item.description && /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("span", { className: "step-description", children: item.description })
5413
5456
  ] })
5414
5457
  ] }, index);
5415
5458
  }) });
@@ -5418,8 +5461,8 @@ Steps.displayName = "Steps";
5418
5461
  var Steps_default = Steps;
5419
5462
 
5420
5463
  // src/components/Swiper/Swiper.tsx
5421
- var import_react32 = __toESM(require("react"), 1);
5422
- var import_jsx_runtime339 = require("react/jsx-runtime");
5464
+ var import_react33 = __toESM(require("react"), 1);
5465
+ var import_jsx_runtime340 = require("react/jsx-runtime");
5423
5466
  var Swiper = (props) => {
5424
5467
  const {
5425
5468
  auto = false,
@@ -5443,26 +5486,26 @@ var Swiper = (props) => {
5443
5486
  const maxIndex = Math.max(0, totalSlides - viewItemCount);
5444
5487
  const useLoop = loop && canSlide;
5445
5488
  const cloneCount = useLoop ? totalSlides : 0;
5446
- const extendedItems = import_react32.default.useMemo(() => {
5489
+ const extendedItems = import_react33.default.useMemo(() => {
5447
5490
  if (!useLoop) return items;
5448
5491
  return [...items, ...items, ...items];
5449
5492
  }, [items, useLoop]);
5450
5493
  const initialIdx = Math.max(0, Math.min(indexProp ?? 0, maxIndex));
5451
- const [innerIndex, setInnerIndex] = import_react32.default.useState(
5494
+ const [innerIndex, setInnerIndex] = import_react33.default.useState(
5452
5495
  useLoop ? cloneCount + initialIdx : initialIdx
5453
5496
  );
5454
- const [isDragging, setIsDragging] = import_react32.default.useState(false);
5455
- const [dragOffset, setDragOffset] = import_react32.default.useState(0);
5456
- const [animated, setAnimated] = import_react32.default.useState(false);
5457
- const [containerWidth, setContainerWidth] = import_react32.default.useState(0);
5458
- const containerRef = import_react32.default.useRef(null);
5459
- const startXRef = import_react32.default.useRef(0);
5460
- const startTimeRef = import_react32.default.useRef(0);
5461
- const autoplayTimerRef = import_react32.default.useRef(null);
5462
- const resumeTimeoutRef = import_react32.default.useRef(null);
5463
- const [paused, setPaused] = import_react32.default.useState(false);
5464
- const initializedRef = import_react32.default.useRef(false);
5465
- import_react32.default.useEffect(() => {
5497
+ const [isDragging, setIsDragging] = import_react33.default.useState(false);
5498
+ const [dragOffset, setDragOffset] = import_react33.default.useState(0);
5499
+ const [animated, setAnimated] = import_react33.default.useState(false);
5500
+ const [containerWidth, setContainerWidth] = import_react33.default.useState(0);
5501
+ const containerRef = import_react33.default.useRef(null);
5502
+ const startXRef = import_react33.default.useRef(0);
5503
+ const startTimeRef = import_react33.default.useRef(0);
5504
+ const autoplayTimerRef = import_react33.default.useRef(null);
5505
+ const resumeTimeoutRef = import_react33.default.useRef(null);
5506
+ const [paused, setPaused] = import_react33.default.useState(false);
5507
+ const initializedRef = import_react33.default.useRef(false);
5508
+ import_react33.default.useEffect(() => {
5466
5509
  const el = containerRef.current;
5467
5510
  if (!el) return;
5468
5511
  const ro = new ResizeObserver((entries) => {
@@ -5485,7 +5528,7 @@ var Swiper = (props) => {
5485
5528
  return ((inner - cloneCount) % totalSlides + totalSlides) % totalSlides;
5486
5529
  };
5487
5530
  const realIndex = getRealIndex(innerIndex);
5488
- const moveToInner = import_react32.default.useCallback(
5531
+ const moveToInner = import_react33.default.useCallback(
5489
5532
  (idx, withAnim = true) => {
5490
5533
  if (!useLoop) {
5491
5534
  setAnimated(withAnim);
@@ -5513,7 +5556,7 @@ var Swiper = (props) => {
5513
5556
  },
5514
5557
  [useLoop, cloneCount, totalSlides]
5515
5558
  );
5516
- const handleTransitionEnd = import_react32.default.useCallback(() => {
5559
+ const handleTransitionEnd = import_react33.default.useCallback(() => {
5517
5560
  if (!useLoop) return;
5518
5561
  const real = getRealIndex(innerIndex);
5519
5562
  const canonical = cloneCount + real;
@@ -5523,7 +5566,7 @@ var Swiper = (props) => {
5523
5566
  }
5524
5567
  onChange?.(Math.min(real, maxIndex));
5525
5568
  }, [useLoop, innerIndex, cloneCount, totalSlides, maxIndex, onChange]);
5526
- const slideTo = import_react32.default.useCallback(
5569
+ const slideTo = import_react33.default.useCallback(
5527
5570
  (logicalIndex) => {
5528
5571
  if (!canSlide) return;
5529
5572
  const clamped = useLoop ? logicalIndex : Math.max(0, Math.min(logicalIndex, maxIndex));
@@ -5533,7 +5576,7 @@ var Swiper = (props) => {
5533
5576
  },
5534
5577
  [canSlide, useLoop, cloneCount, maxIndex, onChange, moveToInner]
5535
5578
  );
5536
- const slideNext = import_react32.default.useCallback(() => {
5579
+ const slideNext = import_react33.default.useCallback(() => {
5537
5580
  if (!canSlide) return;
5538
5581
  const nextInner = innerIndex + slideBy;
5539
5582
  if (useLoop) {
@@ -5542,7 +5585,7 @@ var Swiper = (props) => {
5542
5585
  moveToInner(Math.min(nextInner, maxIndex), true);
5543
5586
  }
5544
5587
  }, [canSlide, useLoop, innerIndex, slideBy, maxIndex, moveToInner]);
5545
- const slidePrev = import_react32.default.useCallback(() => {
5588
+ const slidePrev = import_react33.default.useCallback(() => {
5546
5589
  if (!canSlide) return;
5547
5590
  const prevInner = innerIndex - slideBy;
5548
5591
  if (useLoop) {
@@ -5551,7 +5594,7 @@ var Swiper = (props) => {
5551
5594
  moveToInner(Math.max(prevInner, 0), true);
5552
5595
  }
5553
5596
  }, [canSlide, useLoop, innerIndex, slideBy, moveToInner]);
5554
- import_react32.default.useEffect(() => {
5597
+ import_react33.default.useEffect(() => {
5555
5598
  if (indexProp === void 0) return;
5556
5599
  const clamped = Math.max(0, Math.min(indexProp, maxIndex));
5557
5600
  const target = useLoop ? cloneCount + clamped : clamped;
@@ -5559,12 +5602,12 @@ var Swiper = (props) => {
5559
5602
  moveToInner(target, true);
5560
5603
  }
5561
5604
  }, [indexProp]);
5562
- import_react32.default.useImperativeHandle(swiperRef, () => ({
5605
+ import_react33.default.useImperativeHandle(swiperRef, () => ({
5563
5606
  slidePrev,
5564
5607
  slideNext,
5565
5608
  slideTo
5566
5609
  }));
5567
- import_react32.default.useEffect(() => {
5610
+ import_react33.default.useEffect(() => {
5568
5611
  if (!auto || !canSlide || paused) return;
5569
5612
  autoplayTimerRef.current = setInterval(slideNext, autoplayDelay);
5570
5613
  return () => {
@@ -5590,7 +5633,7 @@ var Swiper = (props) => {
5590
5633
  resumeTimeoutRef.current = null;
5591
5634
  }, pauseOnInteraction);
5592
5635
  };
5593
- import_react32.default.useEffect(() => {
5636
+ import_react33.default.useEffect(() => {
5594
5637
  return () => {
5595
5638
  if (resumeTimeoutRef.current) clearTimeout(resumeTimeoutRef.current);
5596
5639
  };
@@ -5608,7 +5651,7 @@ var Swiper = (props) => {
5608
5651
  startXRef.current = getClientX(e);
5609
5652
  startTimeRef.current = Date.now();
5610
5653
  };
5611
- import_react32.default.useEffect(() => {
5654
+ import_react33.default.useEffect(() => {
5612
5655
  if (!isDragging) return;
5613
5656
  const handleMove = (e) => {
5614
5657
  setDragOffset(getClientX(e) - startXRef.current);
@@ -5647,8 +5690,8 @@ var Swiper = (props) => {
5647
5690
  }, [isDragging, dragOffset, innerIndex, useLoop, maxIndex, slideStep, moveToInner]);
5648
5691
  const slideWidthPercent = 100 / viewItemCount;
5649
5692
  const gapAdjust = spaceBetween * (viewItemCount - 1) / viewItemCount;
5650
- const slideElements = import_react32.default.useMemo(
5651
- () => extendedItems.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
5693
+ const slideElements = import_react33.default.useMemo(
5694
+ () => extendedItems.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
5652
5695
  "div",
5653
5696
  {
5654
5697
  className: "lib-xplat-swiper__slide",
@@ -5667,15 +5710,15 @@ var Swiper = (props) => {
5667
5710
  Math.floor(realIndex / slideBy),
5668
5711
  totalSteps - 1
5669
5712
  );
5670
- return /* @__PURE__ */ (0, import_jsx_runtime339.jsxs)("div", { className: "lib-xplat-swiper", ref: containerRef, children: [
5671
- /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
5713
+ return /* @__PURE__ */ (0, import_jsx_runtime340.jsxs)("div", { className: "lib-xplat-swiper", ref: containerRef, children: [
5714
+ /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
5672
5715
  "div",
5673
5716
  {
5674
5717
  className: "lib-xplat-swiper__viewport",
5675
5718
  onMouseDown: handleDragStart,
5676
5719
  onTouchStart: handleDragStart,
5677
5720
  onDragStart: (e) => e.preventDefault(),
5678
- children: /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
5721
+ children: /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
5679
5722
  "div",
5680
5723
  {
5681
5724
  className: clsx_default(
@@ -5693,7 +5736,7 @@ var Swiper = (props) => {
5693
5736
  )
5694
5737
  }
5695
5738
  ),
5696
- showProgress && canSlide && /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
5739
+ showProgress && canSlide && /* @__PURE__ */ (0, import_jsx_runtime340.jsx)("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ (0, import_jsx_runtime340.jsx)("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
5697
5740
  "span",
5698
5741
  {
5699
5742
  className: "lib-xplat-swiper__progress-fill",
@@ -5703,7 +5746,7 @@ var Swiper = (props) => {
5703
5746
  }
5704
5747
  }
5705
5748
  ) }) }),
5706
- canSlide && /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
5749
+ canSlide && /* @__PURE__ */ (0, import_jsx_runtime340.jsx)("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
5707
5750
  "button",
5708
5751
  {
5709
5752
  className: clsx_default(
@@ -5721,8 +5764,8 @@ Swiper.displayName = "Swiper";
5721
5764
  var Swiper_default = Swiper;
5722
5765
 
5723
5766
  // src/components/Switch/Switch.tsx
5724
- var import_react33 = __toESM(require("react"), 1);
5725
- var import_jsx_runtime340 = require("react/jsx-runtime");
5767
+ var import_react34 = __toESM(require("react"), 1);
5768
+ var import_jsx_runtime341 = require("react/jsx-runtime");
5726
5769
  var KNOB_TRANSITION_MS = 250;
5727
5770
  var Switch = (props) => {
5728
5771
  const {
@@ -5732,9 +5775,9 @@ var Switch = (props) => {
5732
5775
  disabled,
5733
5776
  onChange
5734
5777
  } = props;
5735
- const [isAnimating, setIsAnimating] = import_react33.default.useState(false);
5736
- const timeoutRef = import_react33.default.useRef(null);
5737
- import_react33.default.useEffect(() => {
5778
+ const [isAnimating, setIsAnimating] = import_react34.default.useState(false);
5779
+ const timeoutRef = import_react34.default.useRef(null);
5780
+ import_react34.default.useEffect(() => {
5738
5781
  return () => {
5739
5782
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
5740
5783
  };
@@ -5749,7 +5792,7 @@ var Switch = (props) => {
5749
5792
  timeoutRef.current = null;
5750
5793
  }, KNOB_TRANSITION_MS);
5751
5794
  };
5752
- return /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
5795
+ return /* @__PURE__ */ (0, import_jsx_runtime341.jsx)(
5753
5796
  "div",
5754
5797
  {
5755
5798
  className: clsx_default(
@@ -5762,7 +5805,7 @@ var Switch = (props) => {
5762
5805
  ),
5763
5806
  onClick: handleClick,
5764
5807
  "aria-disabled": disabled || isAnimating,
5765
- children: /* @__PURE__ */ (0, import_jsx_runtime340.jsx)("div", { className: clsx_default("knob", value ? "checked" : void 0) })
5808
+ children: /* @__PURE__ */ (0, import_jsx_runtime341.jsx)("div", { className: clsx_default("knob", value ? "checked" : void 0) })
5766
5809
  }
5767
5810
  );
5768
5811
  };
@@ -5770,17 +5813,17 @@ Switch.displayName = "Switch";
5770
5813
  var Switch_default = Switch;
5771
5814
 
5772
5815
  // src/components/Table/TableContext.tsx
5773
- var import_react34 = __toESM(require("react"), 1);
5774
- var TableContext = import_react34.default.createContext(null);
5816
+ var import_react35 = __toESM(require("react"), 1);
5817
+ var TableContext = import_react35.default.createContext(null);
5775
5818
  var useTableContext = () => {
5776
- const ctx = import_react34.default.useContext(TableContext);
5819
+ const ctx = import_react35.default.useContext(TableContext);
5777
5820
  if (!ctx) throw new Error("Table components must be used inside <Table>");
5778
5821
  return ctx;
5779
5822
  };
5780
5823
  var TableContext_default = TableContext;
5781
5824
 
5782
5825
  // src/components/Table/Table.tsx
5783
- var import_jsx_runtime341 = require("react/jsx-runtime");
5826
+ var import_jsx_runtime342 = require("react/jsx-runtime");
5784
5827
  var Table = (props) => {
5785
5828
  const {
5786
5829
  children,
@@ -5790,7 +5833,7 @@ var Table = (props) => {
5790
5833
  headerSticky = false,
5791
5834
  stickyShadow = true
5792
5835
  } = props;
5793
- return /* @__PURE__ */ (0, import_jsx_runtime341.jsx)("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ (0, import_jsx_runtime341.jsx)(
5836
+ return /* @__PURE__ */ (0, import_jsx_runtime342.jsx)("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ (0, import_jsx_runtime342.jsx)(
5794
5837
  TableContext_default.Provider,
5795
5838
  {
5796
5839
  value: {
@@ -5799,7 +5842,7 @@ var Table = (props) => {
5799
5842
  headerSticky,
5800
5843
  stickyShadow
5801
5844
  },
5802
- children: /* @__PURE__ */ (0, import_jsx_runtime341.jsx)("table", { className: "lib-xplat-table", children })
5845
+ children: /* @__PURE__ */ (0, import_jsx_runtime342.jsx)("table", { className: "lib-xplat-table", children })
5803
5846
  }
5804
5847
  ) });
5805
5848
  };
@@ -5807,41 +5850,41 @@ Table.displayName = "Table";
5807
5850
  var Table_default = Table;
5808
5851
 
5809
5852
  // src/components/Table/TableBody.tsx
5810
- var import_jsx_runtime342 = require("react/jsx-runtime");
5853
+ var import_jsx_runtime343 = require("react/jsx-runtime");
5811
5854
  var TableBody = (props) => {
5812
5855
  const { children } = props;
5813
- return /* @__PURE__ */ (0, import_jsx_runtime342.jsx)("tbody", { children });
5856
+ return /* @__PURE__ */ (0, import_jsx_runtime343.jsx)("tbody", { children });
5814
5857
  };
5815
5858
  TableBody.displayName = "TableBody";
5816
5859
  var TableBody_default = TableBody;
5817
5860
 
5818
5861
  // src/components/Table/TableCell.tsx
5819
- var import_react37 = __toESM(require("react"), 1);
5862
+ var import_react38 = __toESM(require("react"), 1);
5820
5863
 
5821
5864
  // src/components/Table/TableHeadContext.tsx
5822
- var import_react35 = __toESM(require("react"), 1);
5823
- var TableHeadContext = import_react35.default.createContext(
5865
+ var import_react36 = __toESM(require("react"), 1);
5866
+ var TableHeadContext = import_react36.default.createContext(
5824
5867
  null
5825
5868
  );
5826
5869
  var useTableHeadContext = () => {
5827
- const ctx = import_react35.default.useContext(TableHeadContext);
5870
+ const ctx = import_react36.default.useContext(TableHeadContext);
5828
5871
  return ctx;
5829
5872
  };
5830
5873
  var TableHeadContext_default = TableHeadContext;
5831
5874
 
5832
5875
  // src/components/Table/TableRowContext.tsx
5833
- var import_react36 = __toESM(require("react"), 1);
5834
- var TableRowContext = import_react36.default.createContext(null);
5876
+ var import_react37 = __toESM(require("react"), 1);
5877
+ var TableRowContext = import_react37.default.createContext(null);
5835
5878
  var useTableRowContext = () => {
5836
- const ctx = import_react36.default.useContext(TableRowContext);
5879
+ const ctx = import_react37.default.useContext(TableRowContext);
5837
5880
  if (!ctx) throw new Error("Table components must be used inside <Table>");
5838
5881
  return ctx;
5839
5882
  };
5840
5883
  var TableRowContext_default = TableRowContext;
5841
5884
 
5842
5885
  // src/components/Table/TableCell.tsx
5843
- var import_jsx_runtime343 = require("react/jsx-runtime");
5844
- var TableCell = import_react37.default.memo((props) => {
5886
+ var import_jsx_runtime344 = require("react/jsx-runtime");
5887
+ var TableCell = import_react38.default.memo((props) => {
5845
5888
  const {
5846
5889
  children,
5847
5890
  align = "center",
@@ -5853,9 +5896,9 @@ var TableCell = import_react37.default.memo((props) => {
5853
5896
  const { registerStickyCell, stickyCells } = useTableRowContext();
5854
5897
  const { stickyShadow } = useTableContext();
5855
5898
  const headContext = useTableHeadContext();
5856
- const [left, setLeft] = import_react37.default.useState(0);
5857
- const cellRef = import_react37.default.useRef(null);
5858
- const calculateLeft = import_react37.default.useCallback(() => {
5899
+ const [left, setLeft] = import_react38.default.useState(0);
5900
+ const cellRef = import_react38.default.useRef(null);
5901
+ const calculateLeft = import_react38.default.useCallback(() => {
5859
5902
  if (!cellRef.current) return 0;
5860
5903
  let totalLeft = 0;
5861
5904
  for (const ref of stickyCells) {
@@ -5864,7 +5907,7 @@ var TableCell = import_react37.default.memo((props) => {
5864
5907
  }
5865
5908
  return totalLeft;
5866
5909
  }, [stickyCells]);
5867
- import_react37.default.useEffect(() => {
5910
+ import_react38.default.useEffect(() => {
5868
5911
  if (!isSticky || !cellRef.current) return;
5869
5912
  registerStickyCell(cellRef);
5870
5913
  setLeft(calculateLeft());
@@ -5882,7 +5925,7 @@ var TableCell = import_react37.default.memo((props) => {
5882
5925
  const CellTag = cellRef.current?.tagName === "TH" ? "th" : "td";
5883
5926
  const isLastSticky = isSticky && stickyCells[stickyCells.length - 1] === cellRef;
5884
5927
  const enableHover = headContext && headContext.cellHover;
5885
- return /* @__PURE__ */ (0, import_jsx_runtime343.jsx)(
5928
+ return /* @__PURE__ */ (0, import_jsx_runtime344.jsx)(
5886
5929
  CellTag,
5887
5930
  {
5888
5931
  ref: cellRef,
@@ -5907,21 +5950,21 @@ TableCell.displayName = "TableCell";
5907
5950
  var TableCell_default = TableCell;
5908
5951
 
5909
5952
  // src/components/Table/TableHead.tsx
5910
- var import_jsx_runtime344 = require("react/jsx-runtime");
5953
+ var import_jsx_runtime345 = require("react/jsx-runtime");
5911
5954
  var TableHead = ({
5912
5955
  children,
5913
5956
  cellHover = false
5914
5957
  }) => {
5915
5958
  const { headerSticky } = useTableContext();
5916
- return /* @__PURE__ */ (0, import_jsx_runtime344.jsx)(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ (0, import_jsx_runtime344.jsx)("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
5959
+ return /* @__PURE__ */ (0, import_jsx_runtime345.jsx)(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ (0, import_jsx_runtime345.jsx)("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
5917
5960
  };
5918
5961
  TableHead.displayName = "TableHead";
5919
5962
  var TableHead_default = TableHead;
5920
5963
 
5921
5964
  // src/components/Table/TableRow.tsx
5922
- var import_react38 = __toESM(require("react"), 1);
5923
- var import_jsx_runtime345 = require("react/jsx-runtime");
5924
- var TableRow = import_react38.default.memo((props) => {
5965
+ var import_react39 = __toESM(require("react"), 1);
5966
+ var import_jsx_runtime346 = require("react/jsx-runtime");
5967
+ var TableRow = import_react39.default.memo((props) => {
5925
5968
  const {
5926
5969
  children,
5927
5970
  type = "secondary",
@@ -5930,14 +5973,14 @@ var TableRow = import_react38.default.memo((props) => {
5930
5973
  onClick
5931
5974
  } = props;
5932
5975
  const { rowBorderUse } = useTableContext();
5933
- const [stickyCells, setStickyCells] = import_react38.default.useState([]);
5976
+ const [stickyCells, setStickyCells] = import_react39.default.useState([]);
5934
5977
  const registerStickyCell = (ref) => {
5935
5978
  setStickyCells((prev) => {
5936
5979
  if (prev.includes(ref)) return prev;
5937
5980
  return [...prev, ref];
5938
5981
  });
5939
5982
  };
5940
- return /* @__PURE__ */ (0, import_jsx_runtime345.jsx)(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ (0, import_jsx_runtime345.jsx)(
5983
+ return /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(
5941
5984
  "tr",
5942
5985
  {
5943
5986
  className: clsx_default(
@@ -5961,7 +6004,7 @@ TableRow.displayName = "TableRow";
5961
6004
  var TableRow_default = TableRow;
5962
6005
 
5963
6006
  // src/components/Tag/Tag.tsx
5964
- var import_jsx_runtime346 = require("react/jsx-runtime");
6007
+ var import_jsx_runtime347 = require("react/jsx-runtime");
5965
6008
  var Tag = (props) => {
5966
6009
  const {
5967
6010
  children,
@@ -5971,7 +6014,7 @@ var Tag = (props) => {
5971
6014
  disabled = false,
5972
6015
  colorIndex
5973
6016
  } = props;
5974
- return /* @__PURE__ */ (0, import_jsx_runtime346.jsxs)(
6017
+ return /* @__PURE__ */ (0, import_jsx_runtime347.jsxs)(
5975
6018
  "span",
5976
6019
  {
5977
6020
  className: clsx_default(
@@ -5982,8 +6025,8 @@ var Tag = (props) => {
5982
6025
  disabled && "disabled"
5983
6026
  ),
5984
6027
  children: [
5985
- /* @__PURE__ */ (0, import_jsx_runtime346.jsx)("span", { className: "tag-label", children }),
5986
- onClose && /* @__PURE__ */ (0, import_jsx_runtime346.jsx)("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(XIcon_default, {}) })
6028
+ /* @__PURE__ */ (0, import_jsx_runtime347.jsx)("span", { className: "tag-label", children }),
6029
+ onClose && /* @__PURE__ */ (0, import_jsx_runtime347.jsx)("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ (0, import_jsx_runtime347.jsx)(XIcon_default, {}) })
5987
6030
  ]
5988
6031
  }
5989
6032
  );
@@ -5992,55 +6035,27 @@ Tag.displayName = "Tag";
5992
6035
  var Tag_default = Tag;
5993
6036
 
5994
6037
  // src/components/TextArea/TextArea.tsx
5995
- var import_react39 = __toESM(require("react"), 1);
5996
- var import_jsx_runtime347 = require("react/jsx-runtime");
5997
- var TextArea = import_react39.default.forwardRef(
6038
+ var import_react40 = __toESM(require("react"), 1);
6039
+ var import_jsx_runtime348 = require("react/jsx-runtime");
6040
+ var TextArea = import_react40.default.forwardRef(
5998
6041
  (props, ref) => {
5999
- const { value, className, onChange, disabled, ...textareaProps } = props;
6000
- const localRef = import_react39.default.useRef(null);
6001
- const setRefs = (el) => {
6002
- localRef.current = el;
6003
- if (!ref) return;
6004
- if (typeof ref === "function") {
6005
- ref(el);
6006
- } else if (ref && typeof ref === "object" && "current" in ref) {
6007
- ref.current = el;
6008
- }
6009
- };
6010
- const handleOnChange = (e) => {
6011
- const val = e.target.value;
6012
- if (onChange) {
6013
- const event = {
6014
- ...e,
6015
- target: { value: val }
6016
- };
6017
- onChange(event);
6018
- }
6019
- };
6020
- import_react39.default.useEffect(() => {
6021
- const el = localRef.current;
6022
- if (!el) return;
6023
- el.style.height = "0px";
6024
- const nextHeight = Math.min(el.scrollHeight, 400);
6025
- el.style.height = `${nextHeight}px`;
6026
- }, [value]);
6027
- return /* @__PURE__ */ (0, import_jsx_runtime347.jsx)("div", { className: clsx_default("lib-xplat-textarea-wrapper", className), children: /* @__PURE__ */ (0, import_jsx_runtime347.jsx)(
6028
- "div",
6042
+ const {
6043
+ className,
6044
+ size = "md",
6045
+ resize = "vertical",
6046
+ rows = 3,
6047
+ disabled,
6048
+ ...textareaProps
6049
+ } = props;
6050
+ return /* @__PURE__ */ (0, import_jsx_runtime348.jsx)("div", { className: clsx_default("lib-xplat-textarea-wrap", className), children: /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
6051
+ "textarea",
6029
6052
  {
6030
- className: clsx_default(
6031
- "lib-xplat-textarea",
6032
- disabled ? "disabled" : void 0
6033
- ),
6034
- children: /* @__PURE__ */ (0, import_jsx_runtime347.jsx)(
6035
- "textarea",
6036
- {
6037
- ...textareaProps,
6038
- ref: setRefs,
6039
- disabled,
6040
- value,
6041
- onChange: handleOnChange
6042
- }
6043
- )
6053
+ ...textareaProps,
6054
+ ref,
6055
+ rows,
6056
+ disabled,
6057
+ className: clsx_default("lib-xplat-textarea", size, disabled && "disabled"),
6058
+ style: { resize }
6044
6059
  }
6045
6060
  ) });
6046
6061
  }
@@ -6049,25 +6064,25 @@ TextArea.displayName = "TextArea";
6049
6064
  var TextArea_default = TextArea;
6050
6065
 
6051
6066
  // src/components/Toast/Toast.tsx
6052
- var import_react40 = __toESM(require("react"), 1);
6067
+ var import_react41 = __toESM(require("react"), 1);
6053
6068
  var import_react_dom4 = require("react-dom");
6054
- var import_jsx_runtime348 = require("react/jsx-runtime");
6055
- var ToastContext = import_react40.default.createContext(null);
6069
+ var import_jsx_runtime349 = require("react/jsx-runtime");
6070
+ var ToastContext = import_react41.default.createContext(null);
6056
6071
  var useToast = () => {
6057
- const ctx = import_react40.default.useContext(ToastContext);
6072
+ const ctx = import_react41.default.useContext(ToastContext);
6058
6073
  if (!ctx) throw new Error("useToast must be used within ToastProvider");
6059
6074
  return ctx;
6060
6075
  };
6061
6076
  var EXIT_DURATION = 300;
6062
6077
  var ToastItemComponent = ({ item, isExiting, onClose }) => {
6063
- const ref = import_react40.default.useRef(null);
6064
- const [height, setHeight] = import_react40.default.useState(void 0);
6065
- import_react40.default.useEffect(() => {
6078
+ const ref = import_react41.default.useRef(null);
6079
+ const [height, setHeight] = import_react41.default.useState(void 0);
6080
+ import_react41.default.useEffect(() => {
6066
6081
  if (ref.current && !isExiting) {
6067
6082
  setHeight(ref.current.offsetHeight);
6068
6083
  }
6069
6084
  }, [isExiting]);
6070
- return /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
6085
+ return /* @__PURE__ */ (0, import_jsx_runtime349.jsx)(
6071
6086
  "div",
6072
6087
  {
6073
6088
  className: clsx_default("lib-xplat-toast-wrapper", { exit: isExiting }),
@@ -6075,15 +6090,15 @@ var ToastItemComponent = ({ item, isExiting, onClose }) => {
6075
6090
  maxHeight: isExiting ? 0 : height ?? "none",
6076
6091
  marginBottom: isExiting ? 0 : void 0
6077
6092
  },
6078
- children: /* @__PURE__ */ (0, import_jsx_runtime348.jsxs)(
6093
+ children: /* @__PURE__ */ (0, import_jsx_runtime349.jsxs)(
6079
6094
  "div",
6080
6095
  {
6081
6096
  ref,
6082
6097
  className: clsx_default("lib-xplat-toast", item.type, { exit: isExiting }),
6083
6098
  role: "alert",
6084
6099
  children: [
6085
- /* @__PURE__ */ (0, import_jsx_runtime348.jsx)("span", { className: "message", children: item.message }),
6086
- /* @__PURE__ */ (0, import_jsx_runtime348.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
6100
+ /* @__PURE__ */ (0, import_jsx_runtime349.jsx)("span", { className: "message", children: item.message }),
6101
+ /* @__PURE__ */ (0, import_jsx_runtime349.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
6087
6102
  ]
6088
6103
  }
6089
6104
  )
@@ -6094,13 +6109,13 @@ var ToastProvider = ({
6094
6109
  children,
6095
6110
  position = "top-right"
6096
6111
  }) => {
6097
- const [toasts, setToasts] = import_react40.default.useState([]);
6098
- const [removing, setRemoving] = import_react40.default.useState(/* @__PURE__ */ new Set());
6099
- const [mounted, setMounted] = import_react40.default.useState(false);
6100
- import_react40.default.useEffect(() => {
6112
+ const [toasts, setToasts] = import_react41.default.useState([]);
6113
+ const [removing, setRemoving] = import_react41.default.useState(/* @__PURE__ */ new Set());
6114
+ const [mounted, setMounted] = import_react41.default.useState(false);
6115
+ import_react41.default.useEffect(() => {
6101
6116
  setMounted(true);
6102
6117
  }, []);
6103
- const remove = import_react40.default.useCallback((id) => {
6118
+ const remove = import_react41.default.useCallback((id) => {
6104
6119
  setRemoving((prev) => new Set(prev).add(id));
6105
6120
  setTimeout(() => {
6106
6121
  setToasts((prev) => prev.filter((t) => t.id !== id));
@@ -6111,7 +6126,7 @@ var ToastProvider = ({
6111
6126
  });
6112
6127
  }, EXIT_DURATION);
6113
6128
  }, []);
6114
- const toast = import_react40.default.useCallback(
6129
+ const toast = import_react41.default.useCallback(
6115
6130
  (type, message, duration = 3e3) => {
6116
6131
  const id = `${Date.now()}-${Math.random()}`;
6117
6132
  setToasts((prev) => [...prev, { id, type, message }]);
@@ -6121,10 +6136,10 @@ var ToastProvider = ({
6121
6136
  },
6122
6137
  [remove]
6123
6138
  );
6124
- return /* @__PURE__ */ (0, import_jsx_runtime348.jsxs)(ToastContext.Provider, { value: { toast }, children: [
6139
+ return /* @__PURE__ */ (0, import_jsx_runtime349.jsxs)(ToastContext.Provider, { value: { toast }, children: [
6125
6140
  children,
6126
6141
  mounted && (0, import_react_dom4.createPortal)(
6127
- /* @__PURE__ */ (0, import_jsx_runtime348.jsx)("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
6142
+ /* @__PURE__ */ (0, import_jsx_runtime349.jsx)("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ (0, import_jsx_runtime349.jsx)(
6128
6143
  ToastItemComponent,
6129
6144
  {
6130
6145
  item: t,
@@ -6140,8 +6155,8 @@ var ToastProvider = ({
6140
6155
  ToastProvider.displayName = "ToastProvider";
6141
6156
 
6142
6157
  // src/components/Tooltip/Tooltip.tsx
6143
- var import_react41 = __toESM(require("react"), 1);
6144
- var import_jsx_runtime349 = require("react/jsx-runtime");
6158
+ var import_react42 = __toESM(require("react"), 1);
6159
+ var import_jsx_runtime350 = require("react/jsx-runtime");
6145
6160
  var OFFSET = 12;
6146
6161
  var SHOW_DELAY = 300;
6147
6162
  var Tooltip = (props) => {
@@ -6152,12 +6167,12 @@ var Tooltip = (props) => {
6152
6167
  children,
6153
6168
  disabled = false
6154
6169
  } = props;
6155
- const triggerRef = import_react41.default.useRef(null);
6156
- const tooltipRef = import_react41.default.useRef(null);
6157
- const [visible, setVisible] = import_react41.default.useState(false);
6158
- const [pos, setPos] = import_react41.default.useState({ left: 0, top: 0 });
6159
- const delayTimer = import_react41.default.useRef(0);
6160
- const calculatePos = import_react41.default.useCallback((clientX, clientY) => {
6170
+ const triggerRef = import_react42.default.useRef(null);
6171
+ const tooltipRef = import_react42.default.useRef(null);
6172
+ const [visible, setVisible] = import_react42.default.useState(false);
6173
+ const [pos, setPos] = import_react42.default.useState({ left: 0, top: 0 });
6174
+ const delayTimer = import_react42.default.useRef(0);
6175
+ const calculatePos = import_react42.default.useCallback((clientX, clientY) => {
6161
6176
  const el = tooltipRef.current;
6162
6177
  if (!el) return;
6163
6178
  const w = el.offsetWidth;
@@ -6170,38 +6185,38 @@ var Tooltip = (props) => {
6170
6185
  if (left < 8) left = 8;
6171
6186
  setPos({ left, top });
6172
6187
  }, []);
6173
- const handleMouseEnter = import_react41.default.useCallback(() => {
6188
+ const handleMouseEnter = import_react42.default.useCallback(() => {
6174
6189
  if (disabled) return;
6175
6190
  delayTimer.current = window.setTimeout(() => {
6176
6191
  setVisible(true);
6177
6192
  }, SHOW_DELAY);
6178
6193
  }, [disabled]);
6179
- const handleMouseMove = import_react41.default.useCallback((e) => {
6194
+ const handleMouseMove = import_react42.default.useCallback((e) => {
6180
6195
  if (!visible) return;
6181
6196
  calculatePos(e.clientX, e.clientY);
6182
6197
  }, [visible, calculatePos]);
6183
- const handleMouseLeave = import_react41.default.useCallback(() => {
6198
+ const handleMouseLeave = import_react42.default.useCallback(() => {
6184
6199
  window.clearTimeout(delayTimer.current);
6185
6200
  setVisible(false);
6186
6201
  }, []);
6187
- const handleClick = import_react41.default.useCallback(() => {
6202
+ const handleClick = import_react42.default.useCallback(() => {
6188
6203
  window.clearTimeout(delayTimer.current);
6189
6204
  setVisible(false);
6190
6205
  }, []);
6191
- const handleFocus = import_react41.default.useCallback(() => {
6206
+ const handleFocus = import_react42.default.useCallback(() => {
6192
6207
  if (disabled) return;
6193
6208
  setVisible(true);
6194
6209
  }, [disabled]);
6195
- const handleBlur = import_react41.default.useCallback(() => {
6210
+ const handleBlur = import_react42.default.useCallback(() => {
6196
6211
  setVisible(false);
6197
6212
  }, []);
6198
- import_react41.default.useLayoutEffect(() => {
6213
+ import_react42.default.useLayoutEffect(() => {
6199
6214
  if (!visible || !triggerRef.current) return;
6200
6215
  const rect = triggerRef.current.getBoundingClientRect();
6201
6216
  calculatePos(rect.right, rect.top);
6202
6217
  }, [visible, calculatePos]);
6203
- if (!title && !description) return /* @__PURE__ */ (0, import_jsx_runtime349.jsx)(import_jsx_runtime349.Fragment, { children });
6204
- return /* @__PURE__ */ (0, import_jsx_runtime349.jsxs)(
6218
+ if (!title && !description) return /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(import_jsx_runtime350.Fragment, { children });
6219
+ return /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)(
6205
6220
  "div",
6206
6221
  {
6207
6222
  ref: triggerRef,
@@ -6214,15 +6229,15 @@ var Tooltip = (props) => {
6214
6229
  onBlur: handleBlur,
6215
6230
  children: [
6216
6231
  children,
6217
- visible && /* @__PURE__ */ (0, import_jsx_runtime349.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime349.jsxs)(
6232
+ visible && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)(
6218
6233
  "div",
6219
6234
  {
6220
6235
  ref: tooltipRef,
6221
6236
  className: clsx_default("lib-xplat-tooltip", type),
6222
6237
  style: { position: "fixed", left: pos.left, top: pos.top },
6223
6238
  children: [
6224
- title && /* @__PURE__ */ (0, import_jsx_runtime349.jsx)("div", { className: "tooltip-title", children: title }),
6225
- description && /* @__PURE__ */ (0, import_jsx_runtime349.jsx)("div", { className: "tooltip-desc", children: description })
6239
+ title && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("div", { className: "tooltip-title", children: title }),
6240
+ description && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("div", { className: "tooltip-desc", children: description })
6226
6241
  ]
6227
6242
  }
6228
6243
  ) })
@@ -6234,11 +6249,11 @@ Tooltip.displayName = "Tooltip";
6234
6249
  var Tooltip_default = Tooltip;
6235
6250
 
6236
6251
  // src/components/Video/Video.tsx
6237
- var import_react42 = __toESM(require("react"), 1);
6238
- var import_jsx_runtime350 = require("react/jsx-runtime");
6239
- var PipIcon = () => /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
6240
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
6241
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
6252
+ var import_react43 = __toESM(require("react"), 1);
6253
+ var import_jsx_runtime351 = require("react/jsx-runtime");
6254
+ var PipIcon = () => /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
6255
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
6256
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
6242
6257
  ] });
6243
6258
  var formatTime = (sec) => {
6244
6259
  if (!Number.isFinite(sec) || sec < 0) return "0:00";
@@ -6246,7 +6261,7 @@ var formatTime = (sec) => {
6246
6261
  const s = Math.floor(sec % 60);
6247
6262
  return `${m}:${s.toString().padStart(2, "0")}`;
6248
6263
  };
6249
- var Video = import_react42.default.forwardRef((props, ref) => {
6264
+ var Video = import_react43.default.forwardRef((props, ref) => {
6250
6265
  const {
6251
6266
  src,
6252
6267
  poster,
@@ -6270,21 +6285,21 @@ var Video = import_react42.default.forwardRef((props, ref) => {
6270
6285
  children,
6271
6286
  ...rest
6272
6287
  } = props;
6273
- const containerRef = import_react42.default.useRef(null);
6274
- const videoRef = import_react42.default.useRef(null);
6275
- const [isPlaying, setIsPlaying] = import_react42.default.useState(Boolean(autoPlay));
6276
- const [isLoaded, setIsLoaded] = import_react42.default.useState(false);
6277
- const [currentTime, setCurrentTime] = import_react42.default.useState(0);
6278
- const [duration, setDuration] = import_react42.default.useState(0);
6279
- const [buffered, setBuffered] = import_react42.default.useState(0);
6280
- const [volume, setVolume] = import_react42.default.useState(1);
6281
- const [isMuted, setIsMuted] = import_react42.default.useState(Boolean(muted));
6282
- const [isFullscreen, setIsFullscreen] = import_react42.default.useState(false);
6283
- const [playbackRate, setPlaybackRate] = import_react42.default.useState(1);
6284
- const [rateMenuOpen, setRateMenuOpen] = import_react42.default.useState(false);
6285
- const [captionsOn, setCaptionsOn] = import_react42.default.useState(false);
6286
- const [isPip, setIsPip] = import_react42.default.useState(false);
6287
- const setRefs = import_react42.default.useCallback(
6288
+ const containerRef = import_react43.default.useRef(null);
6289
+ const videoRef = import_react43.default.useRef(null);
6290
+ const [isPlaying, setIsPlaying] = import_react43.default.useState(Boolean(autoPlay));
6291
+ const [isLoaded, setIsLoaded] = import_react43.default.useState(false);
6292
+ const [currentTime, setCurrentTime] = import_react43.default.useState(0);
6293
+ const [duration, setDuration] = import_react43.default.useState(0);
6294
+ const [buffered, setBuffered] = import_react43.default.useState(0);
6295
+ const [volume, setVolume] = import_react43.default.useState(1);
6296
+ const [isMuted, setIsMuted] = import_react43.default.useState(Boolean(muted));
6297
+ const [isFullscreen, setIsFullscreen] = import_react43.default.useState(false);
6298
+ const [playbackRate, setPlaybackRate] = import_react43.default.useState(1);
6299
+ const [rateMenuOpen, setRateMenuOpen] = import_react43.default.useState(false);
6300
+ const [captionsOn, setCaptionsOn] = import_react43.default.useState(false);
6301
+ const [isPip, setIsPip] = import_react43.default.useState(false);
6302
+ const setRefs = import_react43.default.useCallback(
6288
6303
  (el) => {
6289
6304
  videoRef.current = el;
6290
6305
  if (typeof ref === "function") ref(el);
@@ -6292,14 +6307,14 @@ var Video = import_react42.default.forwardRef((props, ref) => {
6292
6307
  },
6293
6308
  [ref]
6294
6309
  );
6295
- import_react42.default.useEffect(() => {
6310
+ import_react43.default.useEffect(() => {
6296
6311
  const onFsChange = () => {
6297
6312
  setIsFullscreen(document.fullscreenElement === containerRef.current);
6298
6313
  };
6299
6314
  document.addEventListener("fullscreenchange", onFsChange);
6300
6315
  return () => document.removeEventListener("fullscreenchange", onFsChange);
6301
6316
  }, []);
6302
- import_react42.default.useEffect(() => {
6317
+ import_react43.default.useEffect(() => {
6303
6318
  const v = videoRef.current;
6304
6319
  if (!v) return;
6305
6320
  const onEnter = () => setIsPip(true);
@@ -6413,13 +6428,13 @@ var Video = import_react42.default.forwardRef((props, ref) => {
6413
6428
  const volumePct = (isMuted ? 0 : volume) * 100;
6414
6429
  const VolumeGlyph = isMuted || volume === 0 ? VolumeXIcon_default : volume < 0.5 ? VolumeIcon_default : Volume2Icon_default;
6415
6430
  const pipSupported = typeof document !== "undefined" && "pictureInPictureEnabled" in document && document.pictureInPictureEnabled;
6416
- return /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)(
6431
+ return /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)(
6417
6432
  "div",
6418
6433
  {
6419
6434
  ref: containerRef,
6420
6435
  className: clsx_default("lib-xplat-video", showControls && "has-controls"),
6421
6436
  children: [
6422
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
6437
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
6423
6438
  "video",
6424
6439
  {
6425
6440
  ref: setRefs,
@@ -6440,7 +6455,7 @@ var Video = import_react42.default.forwardRef((props, ref) => {
6440
6455
  children
6441
6456
  }
6442
6457
  ),
6443
- showCenterPlay && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
6458
+ showCenterPlay && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
6444
6459
  "button",
6445
6460
  {
6446
6461
  type: "button",
@@ -6452,11 +6467,11 @@ var Video = import_react42.default.forwardRef((props, ref) => {
6452
6467
  onClick: togglePlay,
6453
6468
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
6454
6469
  tabIndex: -1,
6455
- children: /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("span", { className: "center-play-icon", children: /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(PlayCircleIcon_default, {}) })
6470
+ children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("span", { className: "center-play-icon", children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(PlayCircleIcon_default, {}) })
6456
6471
  }
6457
6472
  ),
6458
- showControls && /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
6459
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
6473
+ showControls && /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
6474
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
6460
6475
  "input",
6461
6476
  {
6462
6477
  type: "range",
@@ -6473,29 +6488,29 @@ var Video = import_react42.default.forwardRef((props, ref) => {
6473
6488
  }
6474
6489
  }
6475
6490
  ),
6476
- /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)("div", { className: "controls-row", children: [
6477
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
6491
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("div", { className: "controls-row", children: [
6492
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
6478
6493
  "button",
6479
6494
  {
6480
6495
  type: "button",
6481
6496
  className: "control-btn",
6482
6497
  onClick: togglePlay,
6483
6498
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
6484
- children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(PauseIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(PlayIcon_default, {})
6499
+ children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(PauseIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(PlayIcon_default, {})
6485
6500
  }
6486
6501
  ),
6487
- /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)("div", { className: "volume-group", children: [
6488
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
6502
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("div", { className: "volume-group", children: [
6503
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
6489
6504
  "button",
6490
6505
  {
6491
6506
  type: "button",
6492
6507
  className: "control-btn",
6493
6508
  onClick: toggleMute,
6494
6509
  "aria-label": isMuted ? "\uC74C\uC18C\uAC70 \uD574\uC81C" : "\uC74C\uC18C\uAC70",
6495
- children: /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(VolumeGlyph, {})
6510
+ children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(VolumeGlyph, {})
6496
6511
  }
6497
6512
  ),
6498
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
6513
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
6499
6514
  "input",
6500
6515
  {
6501
6516
  type: "range",
@@ -6510,14 +6525,14 @@ var Video = import_react42.default.forwardRef((props, ref) => {
6510
6525
  }
6511
6526
  )
6512
6527
  ] }),
6513
- /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)("span", { className: "time", children: [
6528
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("span", { className: "time", children: [
6514
6529
  formatTime(currentTime),
6515
6530
  " / ",
6516
6531
  formatTime(duration)
6517
6532
  ] }),
6518
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("div", { className: "controls-spacer" }),
6519
- playbackRates && playbackRates.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
6520
- /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)(
6533
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("div", { className: "controls-spacer" }),
6534
+ playbackRates && playbackRates.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
6535
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)(
6521
6536
  "button",
6522
6537
  {
6523
6538
  type: "button",
@@ -6531,7 +6546,7 @@ var Video = import_react42.default.forwardRef((props, ref) => {
6531
6546
  ]
6532
6547
  }
6533
6548
  ),
6534
- rateMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)(
6549
+ rateMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)(
6535
6550
  "button",
6536
6551
  {
6537
6552
  type: "button",
@@ -6545,7 +6560,7 @@ var Video = import_react42.default.forwardRef((props, ref) => {
6545
6560
  }
6546
6561
  ) }, r2)) })
6547
6562
  ] }),
6548
- showCaptions && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
6563
+ showCaptions && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
6549
6564
  "button",
6550
6565
  {
6551
6566
  type: "button",
@@ -6553,37 +6568,37 @@ var Video = import_react42.default.forwardRef((props, ref) => {
6553
6568
  onClick: toggleCaptions,
6554
6569
  "aria-label": captionsOn ? "\uC790\uB9C9 \uB044\uAE30" : "\uC790\uB9C9 \uCF1C\uAE30",
6555
6570
  "aria-pressed": captionsOn,
6556
- children: /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(TypeIcon_default, {})
6571
+ children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(TypeIcon_default, {})
6557
6572
  }
6558
6573
  ),
6559
- showPip && pipSupported && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
6574
+ showPip && pipSupported && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
6560
6575
  "button",
6561
6576
  {
6562
6577
  type: "button",
6563
6578
  className: clsx_default("control-btn", isPip && "is-active"),
6564
6579
  onClick: togglePip,
6565
6580
  "aria-label": isPip ? "PIP \uC885\uB8CC" : "PIP",
6566
- children: /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(PipIcon, {})
6581
+ children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(PipIcon, {})
6567
6582
  }
6568
6583
  ),
6569
- showDownload && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
6584
+ showDownload && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
6570
6585
  "a",
6571
6586
  {
6572
6587
  className: "control-btn",
6573
6588
  href: src,
6574
6589
  download: downloadFileName ?? true,
6575
6590
  "aria-label": "\uB2E4\uC6B4\uB85C\uB4DC",
6576
- children: /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(DownloadIcon_default, {})
6591
+ children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(DownloadIcon_default, {})
6577
6592
  }
6578
6593
  ),
6579
- /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
6594
+ /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
6580
6595
  "button",
6581
6596
  {
6582
6597
  type: "button",
6583
6598
  className: "control-btn",
6584
6599
  onClick: toggleFullscreen,
6585
6600
  "aria-label": isFullscreen ? "\uC804\uCCB4\uD654\uBA74 \uC885\uB8CC" : "\uC804\uCCB4\uD654\uBA74",
6586
- children: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(MinimizeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(MaximizeIcon_default, {})
6601
+ children: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(MinimizeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(MaximizeIcon_default, {})
6587
6602
  }
6588
6603
  )
6589
6604
  ] })
@@ -6598,6 +6613,7 @@ var Video_default = Video;
6598
6613
  0 && (module.exports = {
6599
6614
  Accordion,
6600
6615
  Alert,
6616
+ AutoResizeTextArea,
6601
6617
  Avatar,
6602
6618
  Badge,
6603
6619
  Box,