@zenkigen-inc/component-ui 1.21.0 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -665,9 +665,9 @@ function ComboboxInput({ autoFocus, children }) {
665
665
  setInputElementRef,
666
666
  handleKeyDown,
667
667
  handleInputBlur,
668
- clearValue
668
+ onClickClearButton
669
669
  } = useComboboxContext("Combobox.Input");
670
- const isClearButtonVisible = inputValue.length > 0 && !isDisabled;
670
+ const isClearButtonVisible = onClickClearButton != null && inputValue.length > 0 && !isDisabled;
671
671
  const isEffectivelyOpen = isOpen && hasOpenableContent2;
672
672
  const activeItem = activeIndex !== null ? items[activeIndex] : null;
673
673
  const activeId = activeItem != null ? `${baseId}-option-${activeItem.value}` : null;
@@ -686,8 +686,8 @@ function ComboboxInput({ autoFocus, children }) {
686
686
  inputRef.current?.focus();
687
687
  }, [isOpen, setIsOpen, inputRef]);
688
688
  const handleClear = useCallback2(() => {
689
- clearValue();
690
- }, [clearValue]);
689
+ onClickClearButton?.();
690
+ }, [onClickClearButton]);
691
691
  const setRef = useCallback2(
692
692
  (node) => {
693
693
  setInputElementRef(node);
@@ -1179,14 +1179,12 @@ function useCombobox(params) {
1179
1179
  },
1180
1180
  [setIsOpen]
1181
1181
  );
1182
- const clearValue = useCallback4(() => {
1183
- committedInputValueRef.current = "";
1184
- paramsRef.current.onChange(null, null);
1185
- paramsRef.current.onInputChange("");
1186
- setActiveIndexState(null);
1187
- activeValueRef.current = null;
1188
- inputRef.current?.focus();
1189
- }, []);
1182
+ useEffect4(() => {
1183
+ if (params.inputValue === "" && params.value === null) {
1184
+ setActiveIndexState(null);
1185
+ activeValueRef.current = null;
1186
+ }
1187
+ }, [params.inputValue, params.value]);
1190
1188
  const moveActive = useCallback4((direction) => {
1191
1189
  const currentItems = itemsRef.current;
1192
1190
  const enabledIndices = currentItems.flatMap((item, i) => item.isDisabled ? [] : [i]);
@@ -1284,7 +1282,6 @@ function useCombobox(params) {
1284
1282
  items,
1285
1283
  setItems,
1286
1284
  selectValue,
1287
- clearValue,
1288
1285
  revertInputToCommitted,
1289
1286
  inputRef,
1290
1287
  handleKeyDown
@@ -1308,6 +1305,7 @@ function ComboboxBase({
1308
1305
  onChange,
1309
1306
  inputValue,
1310
1307
  onInputChange,
1308
+ onClickClearButton,
1311
1309
  isOpen: isOpenProp,
1312
1310
  onOpenChange,
1313
1311
  size = "medium",
@@ -1426,7 +1424,7 @@ function ComboboxBase({
1426
1424
  setIsOpen,
1427
1425
  selectedValue: value,
1428
1426
  selectValue: combobox.selectValue,
1429
- clearValue: combobox.clearValue,
1427
+ onClickClearButton,
1430
1428
  activeIndex: combobox.activeIndex,
1431
1429
  setActiveIndex: combobox.setActiveIndex,
1432
1430
  inputMode: combobox.inputMode,
@@ -1457,7 +1455,7 @@ function ComboboxBase({
1457
1455
  setIsOpen,
1458
1456
  value,
1459
1457
  combobox.selectValue,
1460
- combobox.clearValue,
1458
+ onClickClearButton,
1461
1459
  combobox.activeIndex,
1462
1460
  combobox.setActiveIndex,
1463
1461
  combobox.inputMode,
@@ -2970,22 +2968,35 @@ Modal.Footer = ModalFooter;
2970
2968
  // src/notification-inline/notification-inline.tsx
2971
2969
  import { clsx as clsx29 } from "clsx";
2972
2970
  import { jsx as jsx38, jsxs as jsxs15 } from "react/jsx-runtime";
2973
- function NotificationInline({ state = "default", size = "medium", ...props }) {
2974
- const wrapperClasses = clsx29("typography-body13regular flex items-center gap-1 rounded text-text01", {
2971
+ function NotificationInline({ state = "default", size = "medium", variant = "default", ...props }) {
2972
+ const isOutline = variant === "outline";
2973
+ const wrapperClasses = clsx29("typography-body13regular flex items-center gap-1 rounded border text-text01", {
2975
2974
  "bg-uiBackgroundError": state === "attention",
2976
2975
  "bg-uiBackgroundWarning": state === "warning",
2977
2976
  "bg-uiBackgroundBlue": state === "information",
2978
2977
  "bg-uiBackgroundSuccess": state === "success",
2979
2978
  "bg-uiBackgroundGray": state === "default",
2980
- "p-2": size === "small",
2981
- "p-3": size === "medium"
2979
+ // 1 行時の高さの基準は small が閉じるボタン(24px)、medium がアイコン(24px)。
2980
+ // showClose / state によらず高さが変わらないよう、両サイズとも最小高を確保する
2981
+ "min-h-12 p-[calc(0.75rem_-_1px)]": size === "small",
2982
+ "min-h-14 p-[calc(1rem_-_1px)]": size === "medium",
2983
+ "border-transparent": !isOutline,
2984
+ "border-supportError": isOutline && state === "attention",
2985
+ "border-supportWarning": isOutline && state === "warning",
2986
+ "border-supportInfo": isOutline && state === "information",
2987
+ "border-supportSuccess": isOutline && state === "success",
2988
+ "border-uiBorder04": isOutline && state === "default"
2982
2989
  });
2983
- const iconClasses = clsx29("flex items-center", {
2990
+ const iconClasses = clsx29("flex shrink-0 items-center", {
2991
+ "h-5": size === "small",
2984
2992
  "fill-supportError": state === "attention",
2985
2993
  "fill-supportWarning": state === "warning",
2986
2994
  "fill-blue-blue50": state === "information",
2987
2995
  "fill-supportSuccess": state === "success"
2988
2996
  });
2997
+ const textClasses = clsx29("flex-1", {
2998
+ "pt-[2px]": size === "medium" && state !== "default"
2999
+ });
2989
3000
  const iconName = {
2990
3001
  attention: "attention",
2991
3002
  success: "success-filled",
@@ -2997,9 +3008,11 @@ function NotificationInline({ state = "default", size = "medium", ...props }) {
2997
3008
  medium: "medium"
2998
3009
  };
2999
3010
  return /* @__PURE__ */ jsxs15("div", { className: wrapperClasses, children: [
3000
- state !== "default" && /* @__PURE__ */ jsx38("div", { className: iconClasses, children: /* @__PURE__ */ jsx38(Icon, { name: iconName[state], size: iconSize[size] }) }),
3001
- /* @__PURE__ */ jsx38("p", { className: "flex-1", children: props.children }),
3002
- props.showClose === true && /* @__PURE__ */ jsx38("div", { className: "flex items-center", children: /* @__PURE__ */ jsx38(IconButton, { icon: "close", size: "small", variant: "text", onClick: props.onClickClose }) })
3011
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-1 items-start gap-1", children: [
3012
+ state !== "default" && /* @__PURE__ */ jsx38("div", { className: iconClasses, children: /* @__PURE__ */ jsx38(Icon, { name: iconName[state], size: iconSize[size] }) }),
3013
+ /* @__PURE__ */ jsx38("p", { className: textClasses, children: props.children })
3014
+ ] }),
3015
+ props.showClose === true && /* @__PURE__ */ jsx38("div", { className: "ml-2 flex shrink-0 items-center", children: /* @__PURE__ */ jsx38(IconButton, { icon: "close", size: "small", variant: "text", onClick: props.onClickClose }) })
3003
3016
  ] });
3004
3017
  }
3005
3018
 
@@ -3211,7 +3224,9 @@ function Select({
3211
3224
  isOptionSelected = false,
3212
3225
  onChange,
3213
3226
  optionListMaxHeight,
3214
- matchListToTrigger = false
3227
+ matchListToTrigger = false,
3228
+ "aria-label": ariaLabel,
3229
+ "aria-describedby": ariaDescribedby
3215
3230
  }) {
3216
3231
  const [isOptionListOpen, setIsOptionListOpen] = useState10(false);
3217
3232
  const targetRef = useRef11(null);
@@ -3272,6 +3287,7 @@ function Select({
3272
3287
  "typography-label14regular": size === "small" || size === "medium",
3273
3288
  "typography-label16regular": size === "large"
3274
3289
  });
3290
+ const ariaInvalidProps = isError ? { "aria-invalid": true } : {};
3275
3291
  return /* @__PURE__ */ jsx43(
3276
3292
  SelectContext.Provider,
3277
3293
  {
@@ -3293,6 +3309,9 @@ function Select({
3293
3309
  ref: refs.setReference,
3294
3310
  className: buttonClasses,
3295
3311
  type: "button",
3312
+ "aria-label": ariaLabel,
3313
+ "aria-describedby": ariaDescribedby,
3314
+ ...ariaInvalidProps,
3296
3315
  onClick: handleClickToggle,
3297
3316
  disabled: isDisabled,
3298
3317
  children: [
@@ -3601,23 +3620,207 @@ function Radio({
3601
3620
  ] });
3602
3621
  }
3603
3622
 
3623
+ // src/radio-card/radio-card.tsx
3624
+ import { Children as Children5, cloneElement as cloneElement5, isValidElement as isValidElement5, useId as useId6, useMemo as useMemo6 } from "react";
3625
+
3626
+ // src/radio-card/radio-card-context.ts
3627
+ import { createContext as createContext12, useContext as useContext15 } from "react";
3628
+ var RadioCardContext = createContext12(null);
3629
+ function useRadioCardContext(componentName) {
3630
+ const context = useContext15(RadioCardContext);
3631
+ if (context === null) {
3632
+ throw new Error(`<${componentName}> \u306F <RadioCard> \u306E\u5185\u90E8\u3067\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044`);
3633
+ }
3634
+ return context;
3635
+ }
3636
+
3637
+ // src/radio-card/radio-card-error-message.tsx
3638
+ import { jsx as jsx51 } from "react/jsx-runtime";
3639
+ function RadioCardErrorMessage({ children, id }) {
3640
+ const { isError } = useRadioCardContext("RadioCard.ErrorMessage");
3641
+ if (!isError) {
3642
+ return null;
3643
+ }
3644
+ return /* @__PURE__ */ jsx51("p", { id, className: "typography-label13regular text-supportError", "aria-live": "assertive", children });
3645
+ }
3646
+ RadioCardErrorMessage.displayName = "RadioCard.ErrorMessage";
3647
+
3648
+ // src/radio-card/radio-card-group.tsx
3649
+ import { jsx as jsx52 } from "react/jsx-runtime";
3650
+ function RadioCardGroup({ children }) {
3651
+ const { ariaLabel, ariaLabelledby, errorDescribedBy } = useRadioCardContext("RadioCard.Group");
3652
+ const describedByProps = errorDescribedBy != null ? { "aria-describedby": errorDescribedBy } : {};
3653
+ return /* @__PURE__ */ jsx52(
3654
+ "div",
3655
+ {
3656
+ role: "radiogroup",
3657
+ "aria-label": ariaLabel,
3658
+ "aria-labelledby": ariaLabelledby,
3659
+ className: "flex flex-col gap-4",
3660
+ ...describedByProps,
3661
+ children
3662
+ }
3663
+ );
3664
+ }
3665
+ RadioCardGroup.displayName = "RadioCard.Group";
3666
+
3667
+ // src/radio-card/radio-card-item.tsx
3668
+ import { focusVisible as focusVisible13 } from "@zenkigen-inc/component-theme";
3669
+ import clsx35 from "clsx";
3670
+ import { useId as useId5 } from "react";
3671
+ import { jsx as jsx53, jsxs as jsxs23 } from "react/jsx-runtime";
3672
+ function RadioCardItem({ value, label, description, isDisabled: itemDisabled = false, id }) {
3673
+ const context = useRadioCardContext("RadioCard.Item");
3674
+ const autoId = useId5();
3675
+ const inputId = id ?? autoId;
3676
+ const labelId = `${inputId}-label`;
3677
+ const descriptionId = `${inputId}-description`;
3678
+ const isChecked = context.value === value;
3679
+ const isDisabled = context.isDisabled || itemDisabled;
3680
+ const isError = context.isError && !isDisabled;
3681
+ const hasDescription = description != null && description !== "";
3682
+ const describedByProps = hasDescription ? { "aria-describedby": descriptionId } : {};
3683
+ const ariaInvalidProps = isError ? { "aria-invalid": true } : {};
3684
+ const handleChange = () => {
3685
+ if (!isDisabled) {
3686
+ context.onChange(value);
3687
+ }
3688
+ };
3689
+ const cardClasses = clsx35(
3690
+ "pointer-events-none flex flex-col gap-2 rounded border border-solid px-4 py-3",
3691
+ focusVisible13.normalPeer,
3692
+ {
3693
+ "border-uiBorder02 bg-uiBackground01": isDisabled,
3694
+ "border-supportError bg-uiBackground01 group-hover:bg-hoverUi02": isError,
3695
+ "border-selectedUiBorder bg-selectedUi group-hover:bg-hoverUi02": !isDisabled && !isError && isChecked,
3696
+ "border-uiBorder02 bg-uiBackground01 group-hover:bg-hoverUi02": !isDisabled && !isError && !isChecked
3697
+ }
3698
+ );
3699
+ const boxClasses = clsx35(
3700
+ "relative inline-flex size-5 shrink-0 items-center justify-center rounded-full border border-solid bg-white",
3701
+ {
3702
+ "border-disabled01": isDisabled,
3703
+ "border-supportError group-hover:border-hoverError": !isDisabled && isError,
3704
+ "border-uiBorder04 group-hover:border-hoverUiBorder": !isDisabled && !isError
3705
+ }
3706
+ );
3707
+ const dotClasses = clsx35("absolute inset-0 m-auto size-3 rounded-full", {
3708
+ "scale-100": isChecked,
3709
+ "scale-0": !isChecked,
3710
+ "bg-disabled01": isDisabled && isChecked,
3711
+ "bg-supportError": !isDisabled && isError && isChecked,
3712
+ "bg-activeSelectedUi": !isDisabled && !isError && isChecked
3713
+ });
3714
+ const hoverDotClasses = clsx35("size-3 rounded-full bg-transparent", {
3715
+ "group-hover:bg-hoverUi": !isDisabled && !isChecked
3716
+ });
3717
+ const labelClasses = clsx35("typography-label14regular ml-2 select-none break-all", {
3718
+ "text-disabled01": isDisabled,
3719
+ "text-text01": !isDisabled
3720
+ });
3721
+ const descriptionClasses = clsx35("typography-body12regular pl-7", {
3722
+ "text-disabled01": isDisabled,
3723
+ "text-text02": !isDisabled
3724
+ });
3725
+ return /* @__PURE__ */ jsxs23("div", { className: "group relative", children: [
3726
+ /* @__PURE__ */ jsx53(
3727
+ "input",
3728
+ {
3729
+ type: "radio",
3730
+ id: inputId,
3731
+ name: context.name,
3732
+ value,
3733
+ checked: isChecked,
3734
+ disabled: isDisabled,
3735
+ onChange: handleChange,
3736
+ "aria-labelledby": labelId,
3737
+ className: "peer absolute inset-0 size-full cursor-pointer opacity-0 disabled:cursor-not-allowed",
3738
+ ...describedByProps,
3739
+ ...ariaInvalidProps
3740
+ }
3741
+ ),
3742
+ /* @__PURE__ */ jsxs23("div", { className: cardClasses, children: [
3743
+ /* @__PURE__ */ jsxs23("div", { className: "flex items-center", children: [
3744
+ /* @__PURE__ */ jsxs23("span", { className: boxClasses, "aria-hidden": "true", children: [
3745
+ /* @__PURE__ */ jsx53("span", { className: dotClasses }),
3746
+ /* @__PURE__ */ jsx53("span", { className: hoverDotClasses })
3747
+ ] }),
3748
+ /* @__PURE__ */ jsx53("span", { id: labelId, className: labelClasses, children: label })
3749
+ ] }),
3750
+ hasDescription ? /* @__PURE__ */ jsx53("p", { id: descriptionId, className: descriptionClasses, children: description }) : null
3751
+ ] })
3752
+ ] });
3753
+ }
3754
+ RadioCardItem.displayName = "RadioCard.Item";
3755
+
3756
+ // src/radio-card/radio-card.tsx
3757
+ import { jsx as jsx54 } from "react/jsx-runtime";
3758
+ function RadioCardRoot({
3759
+ children,
3760
+ value,
3761
+ onChange,
3762
+ name,
3763
+ isDisabled = false,
3764
+ isError = false,
3765
+ "aria-label": ariaLabel,
3766
+ "aria-labelledby": ariaLabelledby
3767
+ }) {
3768
+ const autoName = useId6();
3769
+ const baseId = useId6();
3770
+ const resolvedName = name ?? autoName;
3771
+ const errorIds = [];
3772
+ const enhancedChildren = Children5.map(children, (child) => {
3773
+ if (!isValidElement5(child)) {
3774
+ return child;
3775
+ }
3776
+ if (child.type === RadioCardErrorMessage && isError) {
3777
+ const errorChild = child;
3778
+ const assignedId = errorChild.props.id ?? `${baseId}-error-${errorIds.length + 1}`;
3779
+ errorIds.push(assignedId);
3780
+ return cloneElement5(errorChild, { id: assignedId });
3781
+ }
3782
+ return child;
3783
+ });
3784
+ const errorDescribedBy = errorIds.length > 0 ? errorIds.join(" ") : null;
3785
+ const contextValue = useMemo6(
3786
+ () => ({
3787
+ value,
3788
+ onChange,
3789
+ name: resolvedName,
3790
+ isDisabled,
3791
+ isError,
3792
+ errorDescribedBy,
3793
+ ariaLabel,
3794
+ ariaLabelledby
3795
+ }),
3796
+ [value, onChange, resolvedName, isDisabled, isError, errorDescribedBy, ariaLabel, ariaLabelledby]
3797
+ );
3798
+ return /* @__PURE__ */ jsx54(RadioCardContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx54("div", { className: "flex flex-col gap-2", children: enhancedChildren }) });
3799
+ }
3800
+ var RadioCard = Object.assign(RadioCardRoot, {
3801
+ Group: RadioCardGroup,
3802
+ Item: RadioCardItem,
3803
+ ErrorMessage: RadioCardErrorMessage,
3804
+ displayName: "RadioCard"
3805
+ });
3806
+
3604
3807
  // src/search/search.tsx
3605
- import { clsx as clsx35 } from "clsx";
3808
+ import { clsx as clsx36 } from "clsx";
3606
3809
  import { forwardRef as forwardRef12 } from "react";
3607
- import { jsx as jsx51, jsxs as jsxs23 } from "react/jsx-runtime";
3810
+ import { jsx as jsx55, jsxs as jsxs24 } from "react/jsx-runtime";
3608
3811
  var Search = forwardRef12(({ width = "100%", size = "medium", ...props }, ref) => {
3609
- const classes = clsx35(
3812
+ const classes = clsx36(
3610
3813
  "flex items-center rounded-full border border-uiBorder02 bg-uiBackground01 focus-within:border-activeInput",
3611
3814
  { "h-8 px-3": size === "medium" },
3612
3815
  { "h-10 px-4": size === "large" }
3613
3816
  );
3614
- const inputClasses = clsx35("mx-2 h-full flex-1 text-text01 outline-none placeholder:text-textPlaceholder", {
3817
+ const inputClasses = clsx36("mx-2 h-full flex-1 text-text01 outline-none placeholder:text-textPlaceholder", {
3615
3818
  ["typography-label14regular"]: size === "medium",
3616
3819
  ["typography-label16regular"]: size === "large"
3617
3820
  });
3618
- return /* @__PURE__ */ jsx51("div", { className: "relative", ref, children: /* @__PURE__ */ jsx51("form", { onSubmit: props.onSubmit, children: /* @__PURE__ */ jsxs23("div", { className: classes, style: { width }, children: [
3619
- /* @__PURE__ */ jsx51(Icon, { name: "search", color: "icon01", size: "medium" }),
3620
- /* @__PURE__ */ jsx51(
3821
+ return /* @__PURE__ */ jsx55("div", { className: "relative", ref, children: /* @__PURE__ */ jsx55("form", { onSubmit: props.onSubmit, children: /* @__PURE__ */ jsxs24("div", { className: classes, style: { width }, children: [
3822
+ /* @__PURE__ */ jsx55(Icon, { name: "search", color: "icon01", size: "medium" }),
3823
+ /* @__PURE__ */ jsx55(
3621
3824
  "input",
3622
3825
  {
3623
3826
  type: "text",
@@ -3628,7 +3831,7 @@ var Search = forwardRef12(({ width = "100%", size = "medium", ...props }, ref) =
3628
3831
  onChange: props.onChange
3629
3832
  }
3630
3833
  ),
3631
- props.onClickClearButton && props.value && props.value.length !== 0 && /* @__PURE__ */ jsx51(
3834
+ props.onClickClearButton && props.value && props.value.length !== 0 && /* @__PURE__ */ jsx55(
3632
3835
  IconButton,
3633
3836
  {
3634
3837
  variant: "text",
@@ -3643,17 +3846,17 @@ var Search = forwardRef12(({ width = "100%", size = "medium", ...props }, ref) =
3643
3846
  Search.displayName = "Search";
3644
3847
 
3645
3848
  // src/segmented-control/segmented-control.tsx
3646
- import React4, { Children as Children5, useRef as useRef13 } from "react";
3849
+ import React4, { Children as Children6, useRef as useRef13 } from "react";
3647
3850
 
3648
3851
  // src/segmented-control/segmented-control-context.ts
3649
- import { createContext as createContext12 } from "react";
3650
- var SegmentedControlContext = createContext12(null);
3852
+ import { createContext as createContext13 } from "react";
3853
+ var SegmentedControlContext = createContext13(null);
3651
3854
 
3652
3855
  // src/segmented-control/segmented-control-item.tsx
3653
- import { focusVisible as focusVisible13 } from "@zenkigen-inc/component-theme";
3654
- import { clsx as clsx36 } from "clsx";
3655
- import { useContext as useContext15, useEffect as useEffect11, useRef as useRef12 } from "react";
3656
- import { jsx as jsx52, jsxs as jsxs24 } from "react/jsx-runtime";
3856
+ import { focusVisible as focusVisible14 } from "@zenkigen-inc/component-theme";
3857
+ import { clsx as clsx37 } from "clsx";
3858
+ import { useContext as useContext16, useEffect as useEffect11, useRef as useRef12 } from "react";
3859
+ import { jsx as jsx56, jsxs as jsxs25 } from "react/jsx-runtime";
3657
3860
  var SegmentedControlItem = ({
3658
3861
  label,
3659
3862
  value,
@@ -3662,7 +3865,7 @@ var SegmentedControlItem = ({
3662
3865
  "aria-label": ariaLabel,
3663
3866
  ...rest
3664
3867
  }) => {
3665
- const context = useContext15(SegmentedControlContext);
3868
+ const context = useContext16(SegmentedControlContext);
3666
3869
  const buttonRef = useRef12(null);
3667
3870
  const lastInteractionWasMouse = useRef12(false);
3668
3871
  if (context === null) {
@@ -3702,7 +3905,7 @@ var SegmentedControlItem = ({
3702
3905
  lastInteractionWasMouse.current = false;
3703
3906
  onBlur?.();
3704
3907
  };
3705
- const buttonClasses = clsx36("relative flex items-center justify-center gap-1 rounded", focusVisible13.normal, {
3908
+ const buttonClasses = clsx37("relative flex items-center justify-center gap-1 rounded", focusVisible14.normal, {
3706
3909
  "px-2 min-h-[24px] typography-label12regular": size === "small",
3707
3910
  "px-4 min-h-[32px] typography-label14regular": size === "medium",
3708
3911
  // States - Default with hover
@@ -3712,7 +3915,7 @@ var SegmentedControlItem = ({
3712
3915
  // States - Disabled
3713
3916
  "text-disabled01 bg-transparent": isOptionDisabled === true
3714
3917
  });
3715
- return /* @__PURE__ */ jsxs24(
3918
+ return /* @__PURE__ */ jsxs25(
3716
3919
  "button",
3717
3920
  {
3718
3921
  ref: buttonRef,
@@ -3729,25 +3932,25 @@ var SegmentedControlItem = ({
3729
3932
  onMouseDown: handleMouseDown,
3730
3933
  ...rest,
3731
3934
  children: [
3732
- Boolean(icon) === true && icon && /* @__PURE__ */ jsx52(
3935
+ Boolean(icon) === true && icon && /* @__PURE__ */ jsx56(
3733
3936
  "span",
3734
3937
  {
3735
- className: clsx36("flex items-center", {
3938
+ className: clsx37("flex items-center", {
3736
3939
  "fill-disabled01": isOptionDisabled === true,
3737
3940
  "fill-interactive01": isSelected === true && isOptionDisabled === false,
3738
3941
  "fill-icon01": isSelected === false && isOptionDisabled === false
3739
3942
  }),
3740
- children: /* @__PURE__ */ jsx52(Icon, { name: icon, size: "small" })
3943
+ children: /* @__PURE__ */ jsx56(Icon, { name: icon, size: "small" })
3741
3944
  }
3742
3945
  ),
3743
- Boolean(label) === true && /* @__PURE__ */ jsx52("span", { className: "whitespace-nowrap", children: label })
3946
+ Boolean(label) === true && /* @__PURE__ */ jsx56("span", { className: "whitespace-nowrap", children: label })
3744
3947
  ]
3745
3948
  }
3746
3949
  );
3747
3950
  };
3748
3951
 
3749
3952
  // src/segmented-control/segmented-control.tsx
3750
- import { Fragment as Fragment6, jsx as jsx53 } from "react/jsx-runtime";
3953
+ import { Fragment as Fragment6, jsx as jsx57 } from "react/jsx-runtime";
3751
3954
  var SegmentedControl = ({
3752
3955
  children,
3753
3956
  value,
@@ -3758,14 +3961,14 @@ var SegmentedControl = ({
3758
3961
  ...rest
3759
3962
  }) => {
3760
3963
  const containerRef = useRef13(null);
3761
- const itemIds = Children5.toArray(children).filter((child) => {
3964
+ const itemIds = Children6.toArray(children).filter((child) => {
3762
3965
  if (!React4.isValidElement(child) || typeof child.props !== "object" || child.props === null || !("value" in child.props)) {
3763
3966
  return false;
3764
3967
  }
3765
3968
  const props = child.props;
3766
3969
  return props.isDisabled !== true;
3767
3970
  }).map((child) => child.props.value);
3768
- const childrenCount = Children5.count(children);
3971
+ const childrenCount = Children6.count(children);
3769
3972
  const containerStyle = { gridTemplateColumns: `repeat(${childrenCount}, minmax(0,1fr))` };
3770
3973
  const {
3771
3974
  focusedValue,
@@ -3792,7 +3995,7 @@ var SegmentedControl = ({
3792
3995
  onBlur: handleBlurRovingFocus,
3793
3996
  values: itemIds
3794
3997
  };
3795
- return /* @__PURE__ */ jsx53(Fragment6, { children: /* @__PURE__ */ jsx53(SegmentedControlContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx53(
3998
+ return /* @__PURE__ */ jsx57(Fragment6, { children: /* @__PURE__ */ jsx57(SegmentedControlContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx57(
3796
3999
  "div",
3797
4000
  {
3798
4001
  ref: containerRef,
@@ -3809,22 +4012,22 @@ var SegmentedControl = ({
3809
4012
  SegmentedControl.Item = SegmentedControlItem;
3810
4013
 
3811
4014
  // src/select-sort/select-sort.tsx
3812
- import { buttonColors as buttonColors4, focusVisible as focusVisible16 } from "@zenkigen-inc/component-theme";
3813
- import clsx39 from "clsx";
4015
+ import { buttonColors as buttonColors4, focusVisible as focusVisible17 } from "@zenkigen-inc/component-theme";
4016
+ import clsx40 from "clsx";
3814
4017
  import { useCallback as useCallback13, useRef as useRef14, useState as useState13 } from "react";
3815
4018
 
3816
4019
  // src/select-sort/select-list.tsx
3817
- import { focusVisible as focusVisible15 } from "@zenkigen-inc/component-theme";
3818
- import clsx38 from "clsx";
4020
+ import { focusVisible as focusVisible16 } from "@zenkigen-inc/component-theme";
4021
+ import clsx39 from "clsx";
3819
4022
 
3820
4023
  // src/select-sort/select-item.tsx
3821
- import { focusVisible as focusVisible14 } from "@zenkigen-inc/component-theme";
3822
- import clsx37 from "clsx";
3823
- import { jsx as jsx54, jsxs as jsxs25 } from "react/jsx-runtime";
4024
+ import { focusVisible as focusVisible15 } from "@zenkigen-inc/component-theme";
4025
+ import clsx38 from "clsx";
4026
+ import { jsx as jsx58, jsxs as jsxs26 } from "react/jsx-runtime";
3824
4027
  function SelectItem2({ children, isSortKey, size, onClickItem }) {
3825
- const itemClasses = clsx37(
4028
+ const itemClasses = clsx38(
3826
4029
  "typography-label14regular flex w-full items-center px-3 hover:bg-hover02 active:bg-active02",
3827
- focusVisible14.inset,
4030
+ focusVisible15.inset,
3828
4031
  {
3829
4032
  "h-8": size !== "large",
3830
4033
  "h-10": size === "large",
@@ -3832,16 +4035,16 @@ function SelectItem2({ children, isSortKey, size, onClickItem }) {
3832
4035
  "bg-uiBackground01 fill-icon01 text-interactive02": !isSortKey
3833
4036
  }
3834
4037
  );
3835
- return /* @__PURE__ */ jsx54("li", { className: "flex w-full items-center", onClick: onClickItem, children: /* @__PURE__ */ jsxs25("button", { className: itemClasses, type: "button", children: [
3836
- /* @__PURE__ */ jsx54("span", { className: "ml-1 mr-6", children }),
3837
- isSortKey && /* @__PURE__ */ jsx54("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ jsx54(Icon, { name: "check", size: "small" }) })
4038
+ return /* @__PURE__ */ jsx58("li", { className: "flex w-full items-center", onClick: onClickItem, children: /* @__PURE__ */ jsxs26("button", { className: itemClasses, type: "button", children: [
4039
+ /* @__PURE__ */ jsx58("span", { className: "ml-1 mr-6", children }),
4040
+ isSortKey && /* @__PURE__ */ jsx58("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ jsx58(Icon, { name: "check", size: "small" }) })
3838
4041
  ] }) });
3839
4042
  }
3840
4043
 
3841
4044
  // src/select-sort/select-list.tsx
3842
- import { jsx as jsx55, jsxs as jsxs26 } from "react/jsx-runtime";
4045
+ import { jsx as jsx59, jsxs as jsxs27 } from "react/jsx-runtime";
3843
4046
  function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect }) {
3844
- const listClasses = clsx38(
4047
+ const listClasses = clsx39(
3845
4048
  "absolute z-dropdown w-max overflow-y-auto rounded bg-uiBackground01 py-2 shadow-floatingShadow",
3846
4049
  {
3847
4050
  "top-7": size === "x-small" || size === "small",
@@ -3850,23 +4053,23 @@ function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect })
3850
4053
  "border-solid border border-uiBorder01": variant === "outline"
3851
4054
  }
3852
4055
  );
3853
- const deselectButtonClasses = clsx38(
4056
+ const deselectButtonClasses = clsx39(
3854
4057
  "typography-label14regular flex w-full items-center px-3 text-interactive02 hover:bg-hover02 active:bg-active02",
3855
- focusVisible15.inset,
4058
+ focusVisible16.inset,
3856
4059
  {
3857
4060
  "h-8": size !== "large",
3858
4061
  "h-10": size === "large"
3859
4062
  }
3860
4063
  );
3861
- return /* @__PURE__ */ jsxs26("ul", { className: listClasses, children: [
3862
- /* @__PURE__ */ jsx55(SelectItem2, { size, isSortKey: sortOrder === "ascend", onClickItem: () => onClickItem("ascend"), children: "\u6607\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
3863
- /* @__PURE__ */ jsx55(SelectItem2, { size, isSortKey: sortOrder === "descend", onClickItem: () => onClickItem("descend"), children: "\u964D\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
3864
- sortOrder !== null && onClickDeselect && /* @__PURE__ */ jsx55("li", { children: /* @__PURE__ */ jsx55("button", { className: deselectButtonClasses, type: "button", onClick: onClickDeselect, children: "\u9078\u629E\u89E3\u9664" }) })
4064
+ return /* @__PURE__ */ jsxs27("ul", { className: listClasses, children: [
4065
+ /* @__PURE__ */ jsx59(SelectItem2, { size, isSortKey: sortOrder === "ascend", onClickItem: () => onClickItem("ascend"), children: "\u6607\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
4066
+ /* @__PURE__ */ jsx59(SelectItem2, { size, isSortKey: sortOrder === "descend", onClickItem: () => onClickItem("descend"), children: "\u964D\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
4067
+ sortOrder !== null && onClickDeselect && /* @__PURE__ */ jsx59("li", { children: /* @__PURE__ */ jsx59("button", { className: deselectButtonClasses, type: "button", onClick: onClickDeselect, children: "\u9078\u629E\u89E3\u9664" }) })
3865
4068
  ] });
3866
4069
  }
3867
4070
 
3868
4071
  // src/select-sort/select-sort.tsx
3869
- import { jsx as jsx56, jsxs as jsxs27 } from "react/jsx-runtime";
4072
+ import { jsx as jsx60, jsxs as jsxs28 } from "react/jsx-runtime";
3870
4073
  function SelectSort({
3871
4074
  size = "medium",
3872
4075
  variant = "outline",
@@ -3894,18 +4097,18 @@ function SelectSort({
3894
4097
  },
3895
4098
  [onChange]
3896
4099
  );
3897
- const wrapperClasses = clsx39("relative flex shrink-0 items-center gap-1 rounded", {
4100
+ const wrapperClasses = clsx40("relative flex shrink-0 items-center gap-1 rounded", {
3898
4101
  "h-6": size === "x-small" || size === "small",
3899
4102
  "h-8": size === "medium",
3900
4103
  "h-10": size === "large",
3901
4104
  "cursor-not-allowed": isDisabled
3902
4105
  });
3903
- const buttonClasses = clsx39(
4106
+ const buttonClasses = clsx40(
3904
4107
  "flex size-full items-center rounded",
3905
4108
  buttonColors4[variant].hover,
3906
4109
  buttonColors4[variant].active,
3907
4110
  buttonColors4[variant].disabled,
3908
- focusVisible16.normal,
4111
+ focusVisible17.normal,
3909
4112
  {
3910
4113
  [buttonColors4[variant].selected]: isSortKey,
3911
4114
  [buttonColors4[variant].base]: !isSortKey,
@@ -3914,23 +4117,23 @@ function SelectSort({
3914
4117
  "pointer-events-none": isDisabled
3915
4118
  }
3916
4119
  );
3917
- const labelClasses = clsx39("truncate", {
4120
+ const labelClasses = clsx40("truncate", {
3918
4121
  "typography-label12regular": size === "x-small",
3919
4122
  "typography-label14regular": size === "small" || size === "medium",
3920
4123
  "typography-label16regular": size === "large",
3921
4124
  "mr-1": size === "x-small",
3922
4125
  "mr-2": size !== "x-small"
3923
4126
  });
3924
- return /* @__PURE__ */ jsxs27("div", { className: wrapperClasses, style: { width }, ref: targetRef, children: [
3925
- /* @__PURE__ */ jsxs27("button", { className: buttonClasses, type: "button", onClick: handleClickToggle, disabled: isDisabled, children: [
3926
- /* @__PURE__ */ jsx56("div", { className: labelClasses, children: label }),
3927
- /* @__PURE__ */ jsx56("div", { className: "ml-auto flex items-center", children: isSortKey ? /* @__PURE__ */ jsx56(
4127
+ return /* @__PURE__ */ jsxs28("div", { className: wrapperClasses, style: { width }, ref: targetRef, children: [
4128
+ /* @__PURE__ */ jsxs28("button", { className: buttonClasses, type: "button", onClick: handleClickToggle, disabled: isDisabled, children: [
4129
+ /* @__PURE__ */ jsx60("div", { className: labelClasses, children: label }),
4130
+ /* @__PURE__ */ jsx60("div", { className: "ml-auto flex items-center", children: isSortKey ? /* @__PURE__ */ jsx60(
3928
4131
  Icon,
3929
4132
  {
3930
4133
  name: sortOrder === "ascend" ? "arrow-up" : "arrow-down",
3931
4134
  size: size === "large" ? "medium" : "small"
3932
4135
  }
3933
- ) : /* @__PURE__ */ jsx56(
4136
+ ) : /* @__PURE__ */ jsx60(
3934
4137
  Icon,
3935
4138
  {
3936
4139
  name: isOptionListOpen ? "angle-small-up" : "angle-small-down",
@@ -3938,7 +4141,7 @@ function SelectSort({
3938
4141
  }
3939
4142
  ) })
3940
4143
  ] }),
3941
- isOptionListOpen && !isDisabled && /* @__PURE__ */ jsx56(
4144
+ isOptionListOpen && !isDisabled && /* @__PURE__ */ jsx60(
3942
4145
  SelectList2,
3943
4146
  {
3944
4147
  size,
@@ -3952,10 +4155,10 @@ function SelectSort({
3952
4155
  }
3953
4156
 
3954
4157
  // src/sort-button/sort-button.tsx
3955
- import { buttonColors as buttonColors5, focusVisible as focusVisible17 } from "@zenkigen-inc/component-theme";
3956
- import clsx40 from "clsx";
4158
+ import { buttonColors as buttonColors5, focusVisible as focusVisible18 } from "@zenkigen-inc/component-theme";
4159
+ import clsx41 from "clsx";
3957
4160
  import { useCallback as useCallback14 } from "react";
3958
- import { jsx as jsx57, jsxs as jsxs28 } from "react/jsx-runtime";
4161
+ import { jsx as jsx61, jsxs as jsxs29 } from "react/jsx-runtime";
3959
4162
  function SortButton({
3960
4163
  size = "medium",
3961
4164
  width,
@@ -3975,18 +4178,18 @@ function SortButton({
3975
4178
  if (sortOrder === "descend") return "arrow-down";
3976
4179
  return "angle-small-down";
3977
4180
  };
3978
- const wrapperClasses = clsx40("relative flex shrink-0 items-center gap-1 rounded", {
4181
+ const wrapperClasses = clsx41("relative flex shrink-0 items-center gap-1 rounded", {
3979
4182
  "h-6": size === "x-small" || size === "small",
3980
4183
  "h-8": size === "medium",
3981
4184
  "h-10": size === "large",
3982
4185
  "cursor-not-allowed": isDisabled
3983
4186
  });
3984
- const buttonClasses = clsx40(
4187
+ const buttonClasses = clsx41(
3985
4188
  "flex size-full items-center rounded",
3986
4189
  buttonColors5.text.hover,
3987
4190
  buttonColors5.text.active,
3988
4191
  buttonColors5.text.disabled,
3989
- focusVisible17.normal,
4192
+ focusVisible18.normal,
3990
4193
  {
3991
4194
  [buttonColors5.text.selected]: !isDisabled && sortOrder !== null,
3992
4195
  // ソート状態時は選択状態のスタイル
@@ -3997,14 +4200,14 @@ function SortButton({
3997
4200
  "pointer-events-none": isDisabled
3998
4201
  }
3999
4202
  );
4000
- const labelClasses = clsx40("truncate", {
4203
+ const labelClasses = clsx41("truncate", {
4001
4204
  "typography-label12regular": size === "x-small",
4002
4205
  "typography-label14regular": size === "small" || size === "medium",
4003
4206
  "typography-label16regular": size === "large",
4004
4207
  "mr-1": size === "x-small",
4005
4208
  "mr-2": size !== "x-small"
4006
4209
  });
4007
- return /* @__PURE__ */ jsx57("div", { className: wrapperClasses, style: { width }, children: /* @__PURE__ */ jsxs28(
4210
+ return /* @__PURE__ */ jsx61("div", { className: wrapperClasses, style: { width }, children: /* @__PURE__ */ jsxs29(
4008
4211
  "button",
4009
4212
  {
4010
4213
  className: buttonClasses,
@@ -4015,22 +4218,22 @@ function SortButton({
4015
4218
  "aria-label": ariaLabel,
4016
4219
  "aria-disabled": isDisabled,
4017
4220
  children: [
4018
- /* @__PURE__ */ jsx57("div", { className: labelClasses, children: label }),
4019
- /* @__PURE__ */ jsx57("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ jsx57(Icon, { name: getIconName(), size: size === "large" ? "medium" : "small" }) })
4221
+ /* @__PURE__ */ jsx61("div", { className: labelClasses, children: label }),
4222
+ /* @__PURE__ */ jsx61("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ jsx61(Icon, { name: getIconName(), size: size === "large" ? "medium" : "small" }) })
4020
4223
  ]
4021
4224
  }
4022
4225
  ) });
4023
4226
  }
4024
4227
 
4025
4228
  // src/steps/steps.tsx
4026
- import { clsx as clsx43 } from "clsx";
4027
- import { Children as Children6, Fragment as Fragment7, isValidElement as isValidElement5, useId as useId5, useMemo as useMemo6, useState as useState14 } from "react";
4229
+ import { clsx as clsx44 } from "clsx";
4230
+ import { Children as Children7, Fragment as Fragment7, isValidElement as isValidElement6, useId as useId7, useMemo as useMemo7, useState as useState14 } from "react";
4028
4231
 
4029
4232
  // src/steps/steps-context.ts
4030
- import { createContext as createContext13, useContext as useContext16 } from "react";
4031
- var StepsContext = createContext13(null);
4233
+ import { createContext as createContext14, useContext as useContext17 } from "react";
4234
+ var StepsContext = createContext14(null);
4032
4235
  function useStepsContext() {
4033
- const context = useContext16(StepsContext);
4236
+ const context = useContext17(StepsContext);
4034
4237
  if (context === null) {
4035
4238
  throw new Error("Steps.Item must be used within <Steps>");
4036
4239
  }
@@ -4038,13 +4241,13 @@ function useStepsContext() {
4038
4241
  }
4039
4242
 
4040
4243
  // src/steps/steps-item.tsx
4041
- import { clsx as clsx42 } from "clsx";
4244
+ import { clsx as clsx43 } from "clsx";
4042
4245
 
4043
4246
  // src/steps/steps-item-context.ts
4044
- import { createContext as createContext14, useContext as useContext17 } from "react";
4045
- var StepsItemContext = createContext14(null);
4247
+ import { createContext as createContext15, useContext as useContext18 } from "react";
4248
+ var StepsItemContext = createContext15(null);
4046
4249
  function useStepsItemContext() {
4047
- const context = useContext17(StepsItemContext);
4250
+ const context = useContext18(StepsItemContext);
4048
4251
  if (context === null) {
4049
4252
  throw new Error("Steps.Item must be rendered inside a <Steps> component");
4050
4253
  }
@@ -4052,34 +4255,34 @@ function useStepsItemContext() {
4052
4255
  }
4053
4256
 
4054
4257
  // src/steps/steps-separator.tsx
4055
- import { clsx as clsx41 } from "clsx";
4056
- import { jsx as jsx58 } from "react/jsx-runtime";
4258
+ import { clsx as clsx42 } from "clsx";
4259
+ import { jsx as jsx62 } from "react/jsx-runtime";
4057
4260
  function StepsSeparator({ progress }) {
4058
4261
  const { orientation } = useStepsContext();
4059
4262
  const isVerticalLine = orientation === "vertical";
4060
4263
  const colorClass = progress === "completed" ? "bg-interactive01" : "bg-uiBorder01";
4061
4264
  if (isVerticalLine) {
4062
- return /* @__PURE__ */ jsx58("div", { "aria-hidden": "true", className: clsx41("mx-auto h-full min-h-2 w-px", colorClass) });
4265
+ return /* @__PURE__ */ jsx62("div", { "aria-hidden": "true", className: clsx42("mx-auto h-full min-h-2 w-px", colorClass) });
4063
4266
  }
4064
- return /* @__PURE__ */ jsx58("div", { "aria-hidden": "true", className: clsx41("h-px flex-1", colorClass) });
4267
+ return /* @__PURE__ */ jsx62("div", { "aria-hidden": "true", className: clsx42("h-px flex-1", colorClass) });
4065
4268
  }
4066
4269
 
4067
4270
  // src/steps/steps-item.tsx
4068
- import { jsx as jsx59, jsxs as jsxs29 } from "react/jsx-runtime";
4271
+ import { jsx as jsx63, jsxs as jsxs30 } from "react/jsx-runtime";
4069
4272
  var progressSrOnlyLabel = {
4070
4273
  completed: "\u5B8C\u4E86: ",
4071
4274
  current: "\u73FE\u5728\u306E\u30B9\u30C6\u30C3\u30D7: ",
4072
4275
  upcoming: "\u672A\u7740\u624B: "
4073
4276
  };
4074
4277
  function getCircleSizeClass(size) {
4075
- return clsx42({
4278
+ return clsx43({
4076
4279
  "size-6 typography-label12regular": size === "small",
4077
4280
  "size-8 typography-label12regular": size === "medium",
4078
4281
  "size-10 typography-label16regular": size === "large"
4079
4282
  });
4080
4283
  }
4081
4284
  function getCircleVariantProgressClass(variant, progress) {
4082
- return clsx42({
4285
+ return clsx43({
4083
4286
  // subtle(全 state border-transparent で box-sizing を揃える)
4084
4287
  "bg-uiBackground02 text-text01 border-transparent": variant === "subtle" && progress === "upcoming",
4085
4288
  "bg-activeUi text-text01 border-transparent": variant === "subtle" && progress === "current",
@@ -4091,7 +4294,7 @@ function getCircleVariantProgressClass(variant, progress) {
4091
4294
  });
4092
4295
  }
4093
4296
  function getCircleClasses(size, variant, state) {
4094
- return clsx42(
4297
+ return clsx43(
4095
4298
  "box-border flex items-center justify-center rounded-full border-2",
4096
4299
  getCircleSizeClass(size),
4097
4300
  getCircleVariantProgressClass(variant, state.progress)
@@ -4109,65 +4312,65 @@ function StepsItem({ label, description }) {
4109
4312
  const { state, index, isLast, id } = useStepsItemContext();
4110
4313
  const isCircleFilled = state.progress === "completed";
4111
4314
  const circleClasses = getCircleClasses(size, variant, state);
4112
- const checkIcon = variant === "solid" ? /* @__PURE__ */ jsx59(Icon, { name: "check", size: getIconSize(size), color: "iconOnColor" }) : /* @__PURE__ */ jsx59(Icon, { name: "check", size: getIconSize(size), className: "fill-gray-gray100" });
4113
- const circle = /* @__PURE__ */ jsx59("span", { "aria-hidden": "true", className: circleClasses, children: isCircleFilled ? checkIcon : /* @__PURE__ */ jsx59("span", { children: index + 1 }) });
4114
- const labelBlock = /* @__PURE__ */ jsxs29("span", { className: clsx42("flex flex-col", textOrientation === "horizontal" ? "gap-1" : "items-center text-center"), children: [
4115
- /* @__PURE__ */ jsxs29(
4315
+ const checkIcon = variant === "solid" ? /* @__PURE__ */ jsx63(Icon, { name: "check", size: getIconSize(size), color: "iconOnColor" }) : /* @__PURE__ */ jsx63(Icon, { name: "check", size: getIconSize(size), className: "fill-gray-gray100" });
4316
+ const circle = /* @__PURE__ */ jsx63("span", { "aria-hidden": "true", className: circleClasses, children: isCircleFilled ? checkIcon : /* @__PURE__ */ jsx63("span", { children: index + 1 }) });
4317
+ const labelBlock = /* @__PURE__ */ jsxs30("span", { className: clsx43("flex flex-col", textOrientation === "horizontal" ? "gap-1" : "items-center text-center"), children: [
4318
+ /* @__PURE__ */ jsxs30(
4116
4319
  "span",
4117
4320
  {
4118
- className: clsx42(
4321
+ className: clsx43(
4119
4322
  "whitespace-nowrap text-text01",
4120
4323
  size === "large" ? "typography-body16regular" : "typography-body14regular"
4121
4324
  ),
4122
4325
  children: [
4123
- /* @__PURE__ */ jsx59("span", { className: "sr-only", children: progressSrOnlyLabel[state.progress] }),
4326
+ /* @__PURE__ */ jsx63("span", { className: "sr-only", children: progressSrOnlyLabel[state.progress] }),
4124
4327
  label
4125
4328
  ]
4126
4329
  }
4127
4330
  ),
4128
- description != null && /* @__PURE__ */ jsx59("span", { className: "typography-label12regular whitespace-nowrap text-text02", children: description })
4331
+ description != null && /* @__PURE__ */ jsx63("span", { className: "typography-label12regular whitespace-nowrap text-text02", children: description })
4129
4332
  ] });
4130
4333
  const ariaCurrentProps = state.progress === "current" ? { "aria-current": "step" } : {};
4131
4334
  if (orientation === "horizontal" && textOrientation === "horizontal") {
4132
- return /* @__PURE__ */ jsx59("li", { ...ariaCurrentProps, id, children: /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2", children: [
4335
+ return /* @__PURE__ */ jsx63("li", { ...ariaCurrentProps, id, children: /* @__PURE__ */ jsxs30("div", { className: "flex items-center gap-2", children: [
4133
4336
  circle,
4134
4337
  labelBlock
4135
4338
  ] }) });
4136
4339
  }
4137
4340
  if (orientation === "horizontal" && textOrientation === "vertical") {
4138
- return /* @__PURE__ */ jsx59("li", { ...ariaCurrentProps, id, children: /* @__PURE__ */ jsxs29("div", { className: "flex flex-col items-center gap-1", children: [
4341
+ return /* @__PURE__ */ jsx63("li", { ...ariaCurrentProps, id, children: /* @__PURE__ */ jsxs30("div", { className: "flex flex-col items-center gap-1", children: [
4139
4342
  circle,
4140
4343
  labelBlock
4141
4344
  ] }) });
4142
4345
  }
4143
4346
  if (orientation === "vertical" && textOrientation === "horizontal") {
4144
- return /* @__PURE__ */ jsxs29(
4347
+ return /* @__PURE__ */ jsxs30(
4145
4348
  "li",
4146
4349
  {
4147
4350
  ...ariaCurrentProps,
4148
- className: clsx42(
4351
+ className: clsx43(
4149
4352
  "grid grid-cols-[min-content_1fr] grid-rows-[auto_1fr] items-center gap-x-2",
4150
4353
  !isLast && "flex-1"
4151
4354
  ),
4152
4355
  id,
4153
4356
  children: [
4154
- /* @__PURE__ */ jsx59("div", { className: "col-start-1 row-start-1 flex items-center", children: circle }),
4155
- /* @__PURE__ */ jsx59("div", { className: "col-start-2 row-start-1 flex items-center", children: labelBlock }),
4156
- !isLast && /* @__PURE__ */ jsx59("div", { className: "col-start-1 row-start-2 flex items-stretch justify-center self-stretch py-2", children: /* @__PURE__ */ jsx59(StepsSeparator, { progress: state.progress }) })
4357
+ /* @__PURE__ */ jsx63("div", { className: "col-start-1 row-start-1 flex items-center", children: circle }),
4358
+ /* @__PURE__ */ jsx63("div", { className: "col-start-2 row-start-1 flex items-center", children: labelBlock }),
4359
+ !isLast && /* @__PURE__ */ jsx63("div", { className: "col-start-1 row-start-2 flex items-stretch justify-center self-stretch py-2", children: /* @__PURE__ */ jsx63(StepsSeparator, { progress: state.progress }) })
4157
4360
  ]
4158
4361
  }
4159
4362
  );
4160
4363
  }
4161
- return /* @__PURE__ */ jsxs29("li", { ...ariaCurrentProps, className: clsx42("flex flex-col items-center gap-1", !isLast && "flex-1"), id, children: [
4364
+ return /* @__PURE__ */ jsxs30("li", { ...ariaCurrentProps, className: clsx43("flex flex-col items-center gap-1", !isLast && "flex-1"), id, children: [
4162
4365
  circle,
4163
4366
  labelBlock,
4164
- !isLast && /* @__PURE__ */ jsx59("div", { className: "flex flex-1 items-stretch self-stretch py-2", children: /* @__PURE__ */ jsx59(StepsSeparator, { progress: state.progress }) })
4367
+ !isLast && /* @__PURE__ */ jsx63("div", { className: "flex flex-1 items-stretch self-stretch py-2", children: /* @__PURE__ */ jsx63(StepsSeparator, { progress: state.progress }) })
4165
4368
  ] });
4166
4369
  }
4167
4370
  StepsItem.displayName = "Steps.Item";
4168
4371
 
4169
4372
  // src/steps/steps.tsx
4170
- import { jsx as jsx60 } from "react/jsx-runtime";
4373
+ import { jsx as jsx64 } from "react/jsx-runtime";
4171
4374
  function getSeparatorCellHeightClass(size) {
4172
4375
  if (size === "small") return "h-6";
4173
4376
  if (size === "medium") return "h-8";
@@ -4180,12 +4383,12 @@ function HorizontalSeparatorCell({
4180
4383
  }) {
4181
4384
  const heightClass = getSeparatorCellHeightClass(size);
4182
4385
  const alignClass = textOrientation === "vertical" ? "self-start" : "";
4183
- return /* @__PURE__ */ jsx60("li", { "aria-hidden": "true", className: clsx43("flex items-center", heightClass, alignClass), role: "presentation", children: /* @__PURE__ */ jsx60(StepsSeparator, { progress }) });
4386
+ return /* @__PURE__ */ jsx64("li", { "aria-hidden": "true", className: clsx44("flex items-center", heightClass, alignClass), role: "presentation", children: /* @__PURE__ */ jsx64(StepsSeparator, { progress }) });
4184
4387
  }
4185
4388
  function collectStepsItems(children) {
4186
4389
  const result = [];
4187
- Children6.toArray(children).forEach((child) => {
4188
- if (!isValidElement5(child)) {
4390
+ Children7.toArray(children).forEach((child) => {
4391
+ if (!isValidElement6(child)) {
4189
4392
  return;
4190
4393
  }
4191
4394
  if (child.type === StepsItem) {
@@ -4209,12 +4412,12 @@ function StepsRoot({
4209
4412
  variant = "solid",
4210
4413
  "aria-label": ariaLabel
4211
4414
  }) {
4212
- const baseId = useId5();
4415
+ const baseId = useId7();
4213
4416
  const [internalStep] = useState14(defaultCurrentStep ?? 0);
4214
4417
  const resolvedCurrentStep = currentStep ?? internalStep;
4215
- const itemElements = useMemo6(() => collectStepsItems(children), [children]);
4418
+ const itemElements = useMemo7(() => collectStepsItems(children), [children]);
4216
4419
  const stepsCount = itemElements.length;
4217
- const contextValue = useMemo6(
4420
+ const contextValue = useMemo7(
4218
4421
  () => ({
4219
4422
  size,
4220
4423
  orientation,
@@ -4233,13 +4436,13 @@ function StepsRoot({
4233
4436
  const state = states[index] ?? { progress: "upcoming" };
4234
4437
  const isLast = index === stepsCount - 1;
4235
4438
  const id = `${baseId}-item-${index}`;
4236
- return /* @__PURE__ */ jsx60(StepsItemContext.Provider, { value: { index, state, isLast, id }, children: item }, item.key ?? `item-${index}`);
4439
+ return /* @__PURE__ */ jsx64(StepsItemContext.Provider, { value: { index, state, isLast, id }, children: item }, item.key ?? `item-${index}`);
4237
4440
  };
4238
4441
  const renderedChildren = orientation === "horizontal" ? itemElements.flatMap((item, index) => {
4239
4442
  const nodes = [wrapItem(item, index)];
4240
4443
  if (index < stepsCount - 1) {
4241
4444
  nodes.push(
4242
- /* @__PURE__ */ jsx60(
4445
+ /* @__PURE__ */ jsx64(
4243
4446
  HorizontalSeparatorCell,
4244
4447
  {
4245
4448
  progress: states[index]?.progress ?? "upcoming",
@@ -4252,7 +4455,7 @@ function StepsRoot({
4252
4455
  }
4253
4456
  return nodes;
4254
4457
  }) : itemElements.map((item, index) => wrapItem(item, index));
4255
- const listClassName = clsx43(
4458
+ const listClassName = clsx44(
4256
4459
  orientation === "horizontal" ? ["grid w-full gap-x-2", textOrientation === "vertical" ? "items-start" : "items-center"] : "flex flex-col items-stretch"
4257
4460
  );
4258
4461
  const horizontalGridTemplate = Array.from(
@@ -4260,20 +4463,20 @@ function StepsRoot({
4260
4463
  (_unused, index) => index === stepsCount - 1 ? "max-content" : "max-content minmax(8px, 1fr)"
4261
4464
  ).join(" ");
4262
4465
  const listStyleProps = orientation === "horizontal" ? { style: { gridTemplateColumns: horizontalGridTemplate } } : {};
4263
- return /* @__PURE__ */ jsx60(StepsContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx60("ol", { "aria-label": ariaLabel, className: listClassName, role: "list", ...listStyleProps, children: renderedChildren }) });
4466
+ return /* @__PURE__ */ jsx64(StepsContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx64("ol", { "aria-label": ariaLabel, className: listClassName, role: "list", ...listStyleProps, children: renderedChildren }) });
4264
4467
  }
4265
4468
  var Steps = StepsRoot;
4266
4469
  Steps.Item = StepsItem;
4267
4470
 
4268
4471
  // src/tab/tab.tsx
4269
- import { clsx as clsx45 } from "clsx";
4270
- import { Children as Children7 } from "react";
4472
+ import { clsx as clsx46 } from "clsx";
4473
+ import { Children as Children8 } from "react";
4271
4474
 
4272
4475
  // src/tab/tab-item.tsx
4273
- import { clsx as clsx44 } from "clsx";
4274
- import { jsx as jsx61, jsxs as jsxs30 } from "react/jsx-runtime";
4476
+ import { clsx as clsx45 } from "clsx";
4477
+ import { jsx as jsx65, jsxs as jsxs31 } from "react/jsx-runtime";
4275
4478
  var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
4276
- const classes = clsx44(
4479
+ const classes = clsx45(
4277
4480
  "group relative z-0 flex items-center justify-center gap-1 py-2 leading-[24px] before:absolute before:inset-x-0 before:bottom-0 before:h-[2px] hover:text-interactive01 disabled:pointer-events-none disabled:text-disabled01",
4278
4481
  {
4279
4482
  "typography-label14regular text-interactive02": !isSelected,
@@ -4281,12 +4484,12 @@ var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
4281
4484
  "before:bg-interactive01 hover:before:bg-interactive01 pointer-events-none": isSelected
4282
4485
  }
4283
4486
  );
4284
- const iconWrapperClasses = clsx44("flex shrink-0 items-center", {
4487
+ const iconWrapperClasses = clsx45("flex shrink-0 items-center", {
4285
4488
  "fill-disabled01": isDisabled,
4286
4489
  "fill-interactive01": !isDisabled && isSelected,
4287
4490
  "fill-icon01 group-hover:fill-interactive01": !isDisabled && !isSelected
4288
4491
  });
4289
- return /* @__PURE__ */ jsxs30(
4492
+ return /* @__PURE__ */ jsxs31(
4290
4493
  "button",
4291
4494
  {
4292
4495
  type: "button",
@@ -4296,7 +4499,7 @@ var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
4296
4499
  disabled: isDisabled,
4297
4500
  onClick: () => props.onClick(props.id),
4298
4501
  children: [
4299
- icon != null && /* @__PURE__ */ jsx61("span", { className: iconWrapperClasses, children: /* @__PURE__ */ jsx61(Icon, { name: icon, size: "small" }) }),
4502
+ icon != null && /* @__PURE__ */ jsx65("span", { className: iconWrapperClasses, children: /* @__PURE__ */ jsx65(Icon, { name: icon, size: "small" }) }),
4300
4503
  props.children
4301
4504
  ]
4302
4505
  }
@@ -4304,39 +4507,39 @@ var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
4304
4507
  };
4305
4508
 
4306
4509
  // src/tab/tab.tsx
4307
- import { jsx as jsx62 } from "react/jsx-runtime";
4510
+ import { jsx as jsx66 } from "react/jsx-runtime";
4308
4511
  function Tab({ children, layout = "auto" }) {
4309
- const childrenCount = Children7.count(children);
4512
+ const childrenCount = Children8.count(children);
4310
4513
  const containerStyle = layout === "equal" ? { gridTemplateColumns: `repeat(${childrenCount}, minmax(0,1fr))` } : {};
4311
- const containerClasses = clsx45(
4514
+ const containerClasses = clsx46(
4312
4515
  "relative gap-4 px-6 before:absolute before:inset-x-0 before:bottom-0 before:h-px before:bg-uiBorder01",
4313
4516
  {
4314
4517
  flex: layout === "auto",
4315
4518
  grid: layout === "equal"
4316
4519
  }
4317
4520
  );
4318
- return /* @__PURE__ */ jsx62("div", { role: "tablist", className: containerClasses, style: containerStyle, children });
4521
+ return /* @__PURE__ */ jsx66("div", { role: "tablist", className: containerClasses, style: containerStyle, children });
4319
4522
  }
4320
4523
  Tab.Item = TabItem;
4321
4524
 
4322
4525
  // src/table/table-cell.tsx
4323
- import clsx46 from "clsx";
4324
- import { jsx as jsx63 } from "react/jsx-runtime";
4526
+ import clsx47 from "clsx";
4527
+ import { jsx as jsx67 } from "react/jsx-runtime";
4325
4528
  function TableCell({ children, className, isHeader = false }) {
4326
- const classes = clsx46("border-b border-uiBorder01", { "sticky top-0 z-10 bg-white": isHeader }, className);
4327
- return /* @__PURE__ */ jsx63("div", { className: classes, children });
4529
+ const classes = clsx47("border-b border-uiBorder01", { "sticky top-0 z-10 bg-white": isHeader }, className);
4530
+ return /* @__PURE__ */ jsx67("div", { className: classes, children });
4328
4531
  }
4329
4532
 
4330
4533
  // src/table/table-row.tsx
4331
- import clsx47 from "clsx";
4332
- import { jsx as jsx64 } from "react/jsx-runtime";
4534
+ import clsx48 from "clsx";
4535
+ import { jsx as jsx68 } from "react/jsx-runtime";
4333
4536
  function TableRow({ children, isHoverBackgroundVisible = false }) {
4334
- const rowClasses = clsx47("contents", isHoverBackgroundVisible && "[&:hover>div]:bg-hoverUi02");
4335
- return /* @__PURE__ */ jsx64("div", { className: rowClasses, children });
4537
+ const rowClasses = clsx48("contents", isHoverBackgroundVisible && "[&:hover>div]:bg-hoverUi02");
4538
+ return /* @__PURE__ */ jsx68("div", { className: rowClasses, children });
4336
4539
  }
4337
4540
 
4338
4541
  // src/table/table.tsx
4339
- import { jsx as jsx65 } from "react/jsx-runtime";
4542
+ import { jsx as jsx69 } from "react/jsx-runtime";
4340
4543
  function Table({
4341
4544
  width,
4342
4545
  templateRows,
@@ -4345,7 +4548,7 @@ function Table({
4345
4548
  autoRows,
4346
4549
  children
4347
4550
  }) {
4348
- return /* @__PURE__ */ jsx65(
4551
+ return /* @__PURE__ */ jsx69(
4349
4552
  "div",
4350
4553
  {
4351
4554
  className: "grid",
@@ -4365,22 +4568,22 @@ Table.Cell = TableCell;
4365
4568
 
4366
4569
  // src/tag/tag.tsx
4367
4570
  import { tagColors, tagLightColors } from "@zenkigen-inc/component-theme";
4368
- import clsx49 from "clsx";
4571
+ import clsx50 from "clsx";
4369
4572
 
4370
4573
  // src/tag/delete-icon.tsx
4371
- import { focusVisible as focusVisible18 } from "@zenkigen-inc/component-theme";
4372
- import clsx48 from "clsx";
4373
- import { jsx as jsx66 } from "react/jsx-runtime";
4574
+ import { focusVisible as focusVisible19 } from "@zenkigen-inc/component-theme";
4575
+ import clsx49 from "clsx";
4576
+ import { jsx as jsx70 } from "react/jsx-runtime";
4374
4577
  var DeleteIcon = ({ color, variant, onClick }) => {
4375
- const deleteButtonClasses = clsx48(
4578
+ const deleteButtonClasses = clsx49(
4376
4579
  "group ml-2 size-[14px] rounded-full p-0.5 hover:cursor-pointer hover:bg-iconOnColor focus-visible:bg-iconOnColor",
4377
- focusVisible18.normal
4580
+ focusVisible19.normal
4378
4581
  );
4379
- const deletePathClasses = clsx48({
4582
+ const deletePathClasses = clsx49({
4380
4583
  "fill-interactive02": color === "gray" || variant === "light",
4381
4584
  "group-hover:fill-interactive02 group-focus-visible:fill-interactive02 fill-iconOnColor": color !== "gray"
4382
4585
  });
4383
- return /* @__PURE__ */ jsx66("button", { type: "button", className: deleteButtonClasses, onClick, children: /* @__PURE__ */ jsx66("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx66(
4586
+ return /* @__PURE__ */ jsx70("button", { type: "button", className: deleteButtonClasses, onClick, children: /* @__PURE__ */ jsx70("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx70(
4384
4587
  "path",
4385
4588
  {
4386
4589
  fillRule: "evenodd",
@@ -4392,9 +4595,9 @@ var DeleteIcon = ({ color, variant, onClick }) => {
4392
4595
  };
4393
4596
 
4394
4597
  // src/tag/tag.tsx
4395
- import { jsx as jsx67, jsxs as jsxs31 } from "react/jsx-runtime";
4598
+ import { jsx as jsx71, jsxs as jsxs32 } from "react/jsx-runtime";
4396
4599
  function Tag({ id, children, color, variant = "normal", size = "medium", isEditable, onDelete }) {
4397
- const wrapperClasses = clsx49("flex", "items-center", "justify-center", {
4600
+ const wrapperClasses = clsx50("flex", "items-center", "justify-center", {
4398
4601
  [tagColors[color]]: variant === "normal",
4399
4602
  [tagLightColors[color]]: variant === "light",
4400
4603
  "h-[14px] typography-label11regular": !isEditable && size === "x-small",
@@ -4405,21 +4608,21 @@ function Tag({ id, children, color, variant = "normal", size = "medium", isEdita
4405
4608
  "px-1": !isEditable,
4406
4609
  "px-2": isEditable
4407
4610
  });
4408
- return /* @__PURE__ */ jsxs31("div", { className: wrapperClasses, children: [
4611
+ return /* @__PURE__ */ jsxs32("div", { className: wrapperClasses, children: [
4409
4612
  children,
4410
- isEditable ? /* @__PURE__ */ jsx67(DeleteIcon, { onClick: () => onDelete(id), color, variant }) : null
4613
+ isEditable ? /* @__PURE__ */ jsx71(DeleteIcon, { onClick: () => onDelete(id), color, variant }) : null
4411
4614
  ] });
4412
4615
  }
4413
4616
 
4414
4617
  // src/text-area/text-area.tsx
4415
- import { clsx as clsx52 } from "clsx";
4416
- import { Children as Children8, cloneElement as cloneElement5, forwardRef as forwardRef15, isValidElement as isValidElement6, useId as useId6, useMemo as useMemo7 } from "react";
4618
+ import { clsx as clsx53 } from "clsx";
4619
+ import { Children as Children9, cloneElement as cloneElement6, forwardRef as forwardRef15, isValidElement as isValidElement7, useId as useId8, useMemo as useMemo8 } from "react";
4417
4620
 
4418
4621
  // src/text-area/text-area-context.tsx
4419
- import { createContext as createContext15, useContext as useContext18 } from "react";
4420
- var TextAreaCompoundContext = createContext15(null);
4622
+ import { createContext as createContext16, useContext as useContext19 } from "react";
4623
+ var TextAreaCompoundContext = createContext16(null);
4421
4624
  var useTextAreaCompoundContext = (componentName) => {
4422
- const context = useContext18(TextAreaCompoundContext);
4625
+ const context = useContext19(TextAreaCompoundContext);
4423
4626
  if (context == null) {
4424
4627
  throw new Error(`${componentName} \u3092\u4F7F\u7528\u3059\u308B\u306B\u306F TextArea \u306E\u5B50\u8981\u7D20\u3068\u3057\u3066\u914D\u7F6E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u3002`);
4425
4628
  }
@@ -4427,9 +4630,9 @@ var useTextAreaCompoundContext = (componentName) => {
4427
4630
  };
4428
4631
 
4429
4632
  // src/text-area/text-area-error-message.tsx
4430
- import { clsx as clsx50 } from "clsx";
4633
+ import { clsx as clsx51 } from "clsx";
4431
4634
  import { forwardRef as forwardRef13 } from "react";
4432
- import { jsx as jsx68 } from "react/jsx-runtime";
4635
+ import { jsx as jsx72 } from "react/jsx-runtime";
4433
4636
  var TextAreaErrorMessage = forwardRef13(
4434
4637
  ({ "aria-live": ariaLive = "assertive", ...props }, ref) => {
4435
4638
  const { textAreaProps } = useTextAreaCompoundContext("TextArea.ErrorMessage");
@@ -4438,26 +4641,26 @@ var TextAreaErrorMessage = forwardRef13(
4438
4641
  if (!shouldRender) {
4439
4642
  return null;
4440
4643
  }
4441
- const errorMessageClassName = clsx50(typographyClass, "text-supportError");
4442
- return /* @__PURE__ */ jsx68("div", { ref, className: errorMessageClassName, "aria-live": ariaLive, ...props });
4644
+ const errorMessageClassName = clsx51(typographyClass, "text-supportError");
4645
+ return /* @__PURE__ */ jsx72("div", { ref, className: errorMessageClassName, "aria-live": ariaLive, ...props });
4443
4646
  }
4444
4647
  );
4445
4648
  TextAreaErrorMessage.displayName = "TextArea.ErrorMessage";
4446
4649
 
4447
4650
  // src/text-area/text-area-helper-message.tsx
4448
- import { clsx as clsx51 } from "clsx";
4651
+ import { clsx as clsx52 } from "clsx";
4449
4652
  import { forwardRef as forwardRef14 } from "react";
4450
- import { jsx as jsx69 } from "react/jsx-runtime";
4653
+ import { jsx as jsx73 } from "react/jsx-runtime";
4451
4654
  var TextAreaHelperMessage = forwardRef14((props, ref) => {
4452
4655
  const { textAreaProps } = useTextAreaCompoundContext("TextArea.HelperMessage");
4453
4656
  const typographyClass = textAreaProps.size === "large" ? "typography-label13regular" : "typography-label12regular";
4454
- const helperMessageClassName = clsx51(typographyClass, "text-text02");
4455
- return /* @__PURE__ */ jsx69("div", { ref, className: helperMessageClassName, ...props });
4657
+ const helperMessageClassName = clsx52(typographyClass, "text-text02");
4658
+ return /* @__PURE__ */ jsx73("div", { ref, className: helperMessageClassName, ...props });
4456
4659
  });
4457
4660
  TextAreaHelperMessage.displayName = "TextArea.HelperMessage";
4458
4661
 
4459
4662
  // src/text-area/text-area.tsx
4460
- import { jsx as jsx70, jsxs as jsxs32 } from "react/jsx-runtime";
4663
+ import { jsx as jsx74, jsxs as jsxs33 } from "react/jsx-runtime";
4461
4664
  function TextAreaInner({
4462
4665
  size = "medium",
4463
4666
  variant = "outline",
@@ -4474,8 +4677,8 @@ function TextAreaInner({
4474
4677
  maxLength,
4475
4678
  ...props
4476
4679
  }, ref) {
4477
- const autoGeneratedId = useId6();
4478
- const textAreaPropsForContext = useMemo7(
4680
+ const autoGeneratedId = useId8();
4681
+ const textAreaPropsForContext = useMemo8(
4479
4682
  () => ({
4480
4683
  size,
4481
4684
  variant,
@@ -4483,7 +4686,7 @@ function TextAreaInner({
4483
4686
  }),
4484
4687
  [size, variant, isError]
4485
4688
  );
4486
- const contextValue = useMemo7(
4689
+ const contextValue = useMemo8(
4487
4690
  () => ({
4488
4691
  textAreaProps: textAreaPropsForContext,
4489
4692
  forwardedRef: ref
@@ -4493,21 +4696,21 @@ function TextAreaInner({
4493
4696
  const helperMessageIds = [];
4494
4697
  const errorIds = [];
4495
4698
  const describedByBaseId = props.id ?? autoGeneratedId;
4496
- const enhancedChildren = Children8.map(children, (child) => {
4497
- if (!isValidElement6(child)) {
4699
+ const enhancedChildren = Children9.map(children, (child) => {
4700
+ if (!isValidElement7(child)) {
4498
4701
  return child;
4499
4702
  }
4500
4703
  if (child.type === TextAreaHelperMessage) {
4501
4704
  const helperChild = child;
4502
4705
  const assignedId = helperChild.props.id ?? `${describedByBaseId}-helper-${helperMessageIds.length + 1}`;
4503
4706
  helperMessageIds.push(assignedId);
4504
- return cloneElement5(helperChild, { id: assignedId });
4707
+ return cloneElement6(helperChild, { id: assignedId });
4505
4708
  }
4506
4709
  if (child.type === TextAreaErrorMessage && isError) {
4507
4710
  const errorChild = child;
4508
4711
  const assignedId = errorChild.props.id ?? `${describedByBaseId}-error-${errorIds.length + 1}`;
4509
4712
  errorIds.push(assignedId);
4510
- return cloneElement5(errorChild, { id: assignedId });
4713
+ return cloneElement6(errorChild, { id: assignedId });
4511
4714
  }
4512
4715
  return child;
4513
4716
  });
@@ -4534,7 +4737,7 @@ function TextAreaInner({
4534
4737
  ...maxLengthProps
4535
4738
  };
4536
4739
  const isBorderless = variant === "text";
4537
- const textAreaWrapperClassName = clsx52(
4740
+ const textAreaWrapperClassName = clsx53(
4538
4741
  "box-border flex w-full overflow-hidden rounded border",
4539
4742
  {
4540
4743
  // outline variant
@@ -4550,7 +4753,7 @@ function TextAreaInner({
4550
4753
  // className は variant="outline" のみ受け入れ、後方互換のため wrapper の末尾に合成(@deprecated)
4551
4754
  !isBorderless && className
4552
4755
  );
4553
- const textAreaClassName = clsx52("w-full border-none bg-uiBackground01 outline-none", {
4756
+ const textAreaClassName = clsx53("w-full border-none bg-uiBackground01 outline-none", {
4554
4757
  // outline: 従来の padding
4555
4758
  "typography-body14regular px-2 py-2": !isBorderless && size === "medium",
4556
4759
  "typography-body16regular px-3 py-2": !isBorderless && size === "large",
@@ -4569,7 +4772,7 @@ function TextAreaInner({
4569
4772
  "resize-none": !isResizable
4570
4773
  });
4571
4774
  const hasHeight = height != null && String(height).trim().length > 0;
4572
- const textAreaElement = /* @__PURE__ */ jsx70(
4775
+ const textAreaElement = /* @__PURE__ */ jsx74(
4573
4776
  "div",
4574
4777
  {
4575
4778
  className: textAreaWrapperClassName,
@@ -4580,7 +4783,7 @@ function TextAreaInner({
4580
4783
  ...!autoHeight && hasHeight && !isResizable ? { height } : {},
4581
4784
  ...autoHeight && hasHeight ? { minHeight: height } : {}
4582
4785
  },
4583
- children: /* @__PURE__ */ jsx70(
4786
+ children: /* @__PURE__ */ jsx74(
4584
4787
  "textarea",
4585
4788
  {
4586
4789
  ref,
@@ -4596,11 +4799,11 @@ function TextAreaInner({
4596
4799
  )
4597
4800
  }
4598
4801
  );
4599
- const counterElement = isCounterVisible ? /* @__PURE__ */ jsx70(
4802
+ const counterElement = isCounterVisible ? /* @__PURE__ */ jsx74(
4600
4803
  "div",
4601
4804
  {
4602
4805
  id: counterId,
4603
- className: clsx52(
4806
+ className: clsx53(
4604
4807
  "shrink-0",
4605
4808
  size === "large" ? "typography-label13regular" : "typography-label12regular",
4606
4809
  !disabled && isExceeded ? "text-supportError" : "text-text02"
@@ -4609,17 +4812,17 @@ function TextAreaInner({
4609
4812
  children: counterLimit != null ? `${currentLength}/${counterLimit}\u6587\u5B57` : `${currentLength}\u6587\u5B57`
4610
4813
  }
4611
4814
  ) : null;
4612
- const stackedChildren = enhancedChildren == null ? [] : Children8.toArray(enhancedChildren);
4815
+ const stackedChildren = enhancedChildren == null ? [] : Children9.toArray(enhancedChildren);
4613
4816
  const hasMessageChildren = stackedChildren.length > 0;
4614
4817
  const hasBottomContent = hasMessageChildren || counterElement != null;
4615
4818
  if (!hasBottomContent) {
4616
- return /* @__PURE__ */ jsx70(TextAreaCompoundContext.Provider, { value: contextValue, children: textAreaElement });
4819
+ return /* @__PURE__ */ jsx74(TextAreaCompoundContext.Provider, { value: contextValue, children: textAreaElement });
4617
4820
  }
4618
- return /* @__PURE__ */ jsx70(TextAreaCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs32("div", { className: "flex flex-col gap-2", children: [
4821
+ return /* @__PURE__ */ jsx74(TextAreaCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs33("div", { className: "flex flex-col gap-2", children: [
4619
4822
  textAreaElement,
4620
- /* @__PURE__ */ jsxs32("div", { className: "flex items-start justify-between gap-2", children: [
4621
- hasMessageChildren && /* @__PURE__ */ jsx70("div", { className: "flex min-w-0 flex-1 flex-col gap-2", children: stackedChildren }),
4622
- !hasMessageChildren && counterElement != null && /* @__PURE__ */ jsx70("div", { className: "flex-1" }),
4823
+ /* @__PURE__ */ jsxs33("div", { className: "flex items-start justify-between gap-2", children: [
4824
+ hasMessageChildren && /* @__PURE__ */ jsx74("div", { className: "flex min-w-0 flex-1 flex-col gap-2", children: stackedChildren }),
4825
+ !hasMessageChildren && counterElement != null && /* @__PURE__ */ jsx74("div", { className: "flex-1" }),
4623
4826
  counterElement
4624
4827
  ] })
4625
4828
  ] }) });
@@ -4635,10 +4838,242 @@ var TextAreaBase = forwardRef15(function TextAreaBase2(props, ref) {
4635
4838
  });
4636
4839
  var TextArea = attachStatics2(TextAreaBase);
4637
4840
 
4841
+ // src/time-picker/time-picker.tsx
4842
+ import { clsx as clsx55 } from "clsx";
4843
+ import { Children as Children10, cloneElement as cloneElement7, Fragment as Fragment8, isValidElement as isValidElement8, useId as useId9, useMemo as useMemo9 } from "react";
4844
+
4845
+ // src/time-picker/time-picker-context.tsx
4846
+ import { createContext as createContext17, useContext as useContext20 } from "react";
4847
+ var TimePickerCompoundContext = createContext17(null);
4848
+ var useTimePickerCompoundContext = (componentName) => {
4849
+ const context = useContext20(TimePickerCompoundContext);
4850
+ if (context == null) {
4851
+ throw new Error(`${componentName} \u3092\u4F7F\u7528\u3059\u308B\u306B\u306F TimePicker \u306E\u5B50\u8981\u7D20\u3068\u3057\u3066\u914D\u7F6E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u3002`);
4852
+ }
4853
+ return context;
4854
+ };
4855
+
4856
+ // src/time-picker/time-picker-error-message.tsx
4857
+ import { clsx as clsx54 } from "clsx";
4858
+ import { forwardRef as forwardRef16 } from "react";
4859
+ import { jsx as jsx75 } from "react/jsx-runtime";
4860
+ var TimePickerErrorMessage = forwardRef16(
4861
+ ({ "aria-live": ariaLive = "assertive", ...props }, ref) => {
4862
+ const { size, isError } = useTimePickerCompoundContext("TimePicker.ErrorMessage");
4863
+ const typographyClass = size === "large" ? "typography-label12regular" : "typography-label11regular";
4864
+ if (isError !== true) {
4865
+ return null;
4866
+ }
4867
+ const errorMessageClassName = clsx54(typographyClass, "text-supportError");
4868
+ return /* @__PURE__ */ jsx75("div", { ref, className: errorMessageClassName, "aria-live": ariaLive, ...props });
4869
+ }
4870
+ );
4871
+ TimePickerErrorMessage.displayName = "TimePicker.ErrorMessage";
4872
+
4873
+ // src/time-picker/time-picker-utils.ts
4874
+ var MIN_HOUR = 0;
4875
+ var MAX_HOUR = 23;
4876
+ var MIN_MINUTE = 0;
4877
+ var MAX_MINUTE = 59;
4878
+ var MINUTES_PER_HOUR = 60;
4879
+ var padZero = (value) => String(value).padStart(2, "0");
4880
+ var toTotalMinutes = (hour, minute) => hour * MINUTES_PER_HOUR + minute;
4881
+ var createHourOption = (hour) => ({
4882
+ id: `hour-${hour}`,
4883
+ value: String(hour),
4884
+ label: padZero(hour)
4885
+ });
4886
+ var createMinuteOption = (minute) => ({
4887
+ id: `minute-${minute}`,
4888
+ value: String(minute),
4889
+ label: padZero(minute)
4890
+ });
4891
+ var parseTime = (time) => {
4892
+ const match = /^(\d{1,2}):(\d{1,2})$/.exec(time);
4893
+ if (match == null) {
4894
+ return null;
4895
+ }
4896
+ const hour = Number(match[1]);
4897
+ const minute = Number(match[2]);
4898
+ if (Number.isNaN(hour) || Number.isNaN(minute)) {
4899
+ return null;
4900
+ }
4901
+ if (hour < MIN_HOUR || hour > MAX_HOUR || minute < MIN_MINUTE || minute > MAX_MINUTE) {
4902
+ return null;
4903
+ }
4904
+ return { hour, minute };
4905
+ };
4906
+ var formatTime = (value) => {
4907
+ if (value.hour == null || value.minute == null) {
4908
+ return null;
4909
+ }
4910
+ return `${padZero(value.hour)}:${padZero(value.minute)}`;
4911
+ };
4912
+ var isTimeInRange = (hour, minute, minTime, maxTime) => {
4913
+ const total = toTotalMinutes(hour, minute);
4914
+ const min = minTime != null ? parseTime(minTime) : null;
4915
+ const max = maxTime != null ? parseTime(maxTime) : null;
4916
+ if (min != null && total < toTotalMinutes(min.hour, min.minute)) {
4917
+ return false;
4918
+ }
4919
+ if (max != null && total > toTotalMinutes(max.hour, max.minute)) {
4920
+ return false;
4921
+ }
4922
+ return true;
4923
+ };
4924
+ var isMinuteAvailableForAnyHour = (minute, minTime, maxTime) => {
4925
+ for (let hour = MIN_HOUR; hour <= MAX_HOUR; hour += 1) {
4926
+ if (isTimeInRange(hour, minute, minTime, maxTime)) {
4927
+ return true;
4928
+ }
4929
+ }
4930
+ return false;
4931
+ };
4932
+ var generateMinuteOptions = (minuteStep, selectedHour, minTime, maxTime) => {
4933
+ const min = minTime != null ? parseTime(minTime) : null;
4934
+ const max = maxTime != null ? parseTime(maxTime) : null;
4935
+ const shouldFilterByRange = min != null || max != null;
4936
+ const options = [];
4937
+ for (let minute = MIN_MINUTE; minute <= MAX_MINUTE; minute += minuteStep) {
4938
+ if (shouldFilterByRange) {
4939
+ const isAvailable = selectedHour != null ? isTimeInRange(selectedHour, minute, minTime, maxTime) : isMinuteAvailableForAnyHour(minute, minTime, maxTime);
4940
+ if (!isAvailable) {
4941
+ continue;
4942
+ }
4943
+ }
4944
+ options.push(createMinuteOption(minute));
4945
+ }
4946
+ return options;
4947
+ };
4948
+ var generateHourOptions = (minuteStep, minTime, maxTime) => {
4949
+ const options = [];
4950
+ for (let hour = MIN_HOUR; hour <= MAX_HOUR; hour += 1) {
4951
+ if (generateMinuteOptions(minuteStep, hour, minTime, maxTime).length === 0) {
4952
+ continue;
4953
+ }
4954
+ options.push(createHourOption(hour));
4955
+ }
4956
+ return options;
4957
+ };
4958
+
4959
+ // src/time-picker/time-picker.tsx
4960
+ import { jsx as jsx76, jsxs as jsxs34 } from "react/jsx-runtime";
4961
+ var SELECT_WIDTH_BY_SIZE = {
4962
+ "x-small": 80,
4963
+ small: 80,
4964
+ medium: 80,
4965
+ large: 88
4966
+ };
4967
+ var PLACEHOLDER = "--";
4968
+ var HOUR_ARIA_LABEL = "\u6642";
4969
+ var MINUTE_ARIA_LABEL = "\u5206";
4970
+ var createTriggerAriaLabel = (baseLabel, selectedOption) => selectedOption != null ? `${baseLabel} ${selectedOption.label}` : baseLabel;
4971
+ var OPTION_LIST_MAX_HEIGHT = "250px";
4972
+ var TimePicker = ({
4973
+ value,
4974
+ onChange,
4975
+ size = "medium",
4976
+ minuteStep = 1,
4977
+ minTime,
4978
+ maxTime,
4979
+ isDisabled = false,
4980
+ isError = false,
4981
+ children
4982
+ }) => {
4983
+ const autoGeneratedId = useId9();
4984
+ const hourOptions = useMemo9(() => generateHourOptions(minuteStep, minTime, maxTime), [minuteStep, minTime, maxTime]);
4985
+ const minuteOptions = useMemo9(
4986
+ () => generateMinuteOptions(minuteStep, value.hour, minTime, maxTime),
4987
+ [minuteStep, value.hour, minTime, maxTime]
4988
+ );
4989
+ const selectedHourOption = value.hour != null ? createHourOption(value.hour) : null;
4990
+ const selectedMinuteOption = value.minute != null ? createMinuteOption(value.minute) : null;
4991
+ const handleHourChange = (option) => {
4992
+ const nextHour = option != null ? Number(option.value) : null;
4993
+ const shouldResetMinute = nextHour != null && value.minute != null && !isTimeInRange(nextHour, value.minute, minTime, maxTime);
4994
+ onChange({ hour: nextHour, minute: shouldResetMinute ? null : value.minute });
4995
+ };
4996
+ const handleMinuteChange = (option) => {
4997
+ onChange({ hour: value.hour, minute: option != null ? Number(option.value) : null });
4998
+ };
4999
+ const errorIds = [];
5000
+ const assignErrorIds = (nodes) => Children10.map(nodes, (child) => {
5001
+ if (!isValidElement8(child)) {
5002
+ return child;
5003
+ }
5004
+ if (child.type === Fragment8) {
5005
+ const fragmentChild = child;
5006
+ return cloneElement7(fragmentChild, {}, assignErrorIds(fragmentChild.props.children));
5007
+ }
5008
+ if (child.type === TimePickerErrorMessage && isError) {
5009
+ const errorChild = child;
5010
+ const assignedId = errorChild.props.id ?? `${autoGeneratedId}-error-${errorIds.length + 1}`;
5011
+ errorIds.push(assignedId);
5012
+ return cloneElement7(errorChild, { id: assignedId });
5013
+ }
5014
+ return child;
5015
+ });
5016
+ const enhancedChildren = assignErrorIds(children);
5017
+ const sharedAriaProps = errorIds.length > 0 ? { "aria-describedby": errorIds.join(" ") } : {};
5018
+ const separatorClasses = clsx55("text-text02", {
5019
+ "typography-label12regular": size === "x-small",
5020
+ "typography-label14regular": size === "small" || size === "medium",
5021
+ "typography-label16regular": size === "large"
5022
+ });
5023
+ const selectWidth = SELECT_WIDTH_BY_SIZE[size];
5024
+ const contextValue = useMemo9(() => ({ size, isError }), [size, isError]);
5025
+ const timeInputs = /* @__PURE__ */ jsxs34("div", { className: "flex items-center gap-2", children: [
5026
+ /* @__PURE__ */ jsx76(
5027
+ Select,
5028
+ {
5029
+ size,
5030
+ width: selectWidth,
5031
+ placeholder: PLACEHOLDER,
5032
+ selectedOption: selectedHourOption,
5033
+ isDisabled,
5034
+ isError,
5035
+ optionListMaxHeight: OPTION_LIST_MAX_HEIGHT,
5036
+ "aria-label": createTriggerAriaLabel(HOUR_ARIA_LABEL, selectedHourOption),
5037
+ ...sharedAriaProps,
5038
+ onChange: handleHourChange,
5039
+ children: hourOptions.map((option) => /* @__PURE__ */ jsx76(Select.Option, { option }, option.id))
5040
+ }
5041
+ ),
5042
+ /* @__PURE__ */ jsx76("span", { className: separatorClasses, children: ":" }),
5043
+ /* @__PURE__ */ jsx76(
5044
+ Select,
5045
+ {
5046
+ size,
5047
+ width: selectWidth,
5048
+ placeholder: PLACEHOLDER,
5049
+ selectedOption: selectedMinuteOption,
5050
+ isDisabled,
5051
+ isError,
5052
+ optionListMaxHeight: OPTION_LIST_MAX_HEIGHT,
5053
+ "aria-label": createTriggerAriaLabel(MINUTE_ARIA_LABEL, selectedMinuteOption),
5054
+ ...sharedAriaProps,
5055
+ onChange: handleMinuteChange,
5056
+ children: minuteOptions.map((option) => /* @__PURE__ */ jsx76(Select.Option, { option }, option.id))
5057
+ }
5058
+ )
5059
+ ] });
5060
+ const stackedChildren = enhancedChildren == null ? [] : Children10.toArray(enhancedChildren);
5061
+ const hasMessageChildren = stackedChildren.length > 0;
5062
+ if (!hasMessageChildren) {
5063
+ return /* @__PURE__ */ jsx76(TimePickerCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx76("div", { className: "flex flex-col", children: timeInputs }) });
5064
+ }
5065
+ return /* @__PURE__ */ jsx76(TimePickerCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs34("div", { className: "flex flex-col gap-2", children: [
5066
+ timeInputs,
5067
+ stackedChildren
5068
+ ] }) });
5069
+ };
5070
+ TimePicker.ErrorMessage = TimePickerErrorMessage;
5071
+ TimePicker.displayName = "TimePicker";
5072
+
4638
5073
  // src/toast/toast.tsx
4639
- import clsx53 from "clsx";
5074
+ import clsx56 from "clsx";
4640
5075
  import { useCallback as useCallback15, useEffect as useEffect12, useState as useState15 } from "react";
4641
- import { jsx as jsx71, jsxs as jsxs33 } from "react/jsx-runtime";
5076
+ import { jsx as jsx77, jsxs as jsxs35 } from "react/jsx-runtime";
4642
5077
  var CLOSE_TIME_MSEC = 5e3;
4643
5078
  function Toast({
4644
5079
  state = "information",
@@ -4657,17 +5092,17 @@ function Toast({
4657
5092
  }
4658
5093
  }, [isAnimation, onClickClose]);
4659
5094
  const handleAnimationEnd = (e) => window.getComputedStyle(e.currentTarget).opacity === "0" && onClickClose();
4660
- const wrapperClasses = clsx53("pointer-events-auto flex items-start gap-1 bg-white p-4 shadow-floatingShadow", {
5095
+ const wrapperClasses = clsx56("pointer-events-auto flex items-start gap-1 bg-white p-4 shadow-floatingShadow", {
4661
5096
  ["animate-toast-in"]: isAnimation && !isRemoving,
4662
5097
  ["animate-toast-out opacity-0"]: isAnimation && isRemoving
4663
5098
  });
4664
- const iconClasses = clsx53("flex items-center", {
5099
+ const iconClasses = clsx56("flex items-center", {
4665
5100
  "fill-supportSuccess": state === "success",
4666
5101
  "fill-supportError": state === "error",
4667
5102
  "fill-supportWarning": state === "warning",
4668
5103
  "fill-supportInfo": state === "information"
4669
5104
  });
4670
- const textClasses = clsx53("typography-body13regular flex-1 pt-[3px]", {
5105
+ const textClasses = clsx56("typography-body13regular flex-1 pt-[3px]", {
4671
5106
  "text-supportError": state === "error",
4672
5107
  "text-text01": state === "success" || state === "warning" || state === "information"
4673
5108
  });
@@ -4685,18 +5120,18 @@ function Toast({
4685
5120
  }, CLOSE_TIME_MSEC);
4686
5121
  return () => window.clearTimeout(timer);
4687
5122
  }, [isAutoClose]);
4688
- return /* @__PURE__ */ jsxs33("div", { className: wrapperClasses, style: { width }, onAnimationEnd: handleAnimationEnd, children: [
4689
- /* @__PURE__ */ jsx71("div", { className: iconClasses, children: /* @__PURE__ */ jsx71(Icon, { name: iconName[state] }) }),
4690
- /* @__PURE__ */ jsx71("p", { className: textClasses, children }),
4691
- /* @__PURE__ */ jsx71(IconButton, { icon: "close", size: "medium", variant: "text", onClick: handleClose, isNoPadding: true })
5123
+ return /* @__PURE__ */ jsxs35("div", { className: wrapperClasses, style: { width }, onAnimationEnd: handleAnimationEnd, children: [
5124
+ /* @__PURE__ */ jsx77("div", { className: iconClasses, children: /* @__PURE__ */ jsx77(Icon, { name: iconName[state] }) }),
5125
+ /* @__PURE__ */ jsx77("p", { className: textClasses, children }),
5126
+ /* @__PURE__ */ jsx77(IconButton, { icon: "close", size: "medium", variant: "text", onClick: handleClose, isNoPadding: true })
4692
5127
  ] });
4693
5128
  }
4694
5129
 
4695
5130
  // src/toast/toast-provider.tsx
4696
- import { createContext as createContext16, useCallback as useCallback16, useContext as useContext19, useEffect as useEffect13, useState as useState16 } from "react";
5131
+ import { createContext as createContext18, useCallback as useCallback16, useContext as useContext21, useEffect as useEffect13, useState as useState16 } from "react";
4697
5132
  import { createPortal as createPortal3 } from "react-dom";
4698
- import { jsx as jsx72, jsxs as jsxs34 } from "react/jsx-runtime";
4699
- var ToastContext = createContext16({});
5133
+ import { jsx as jsx78, jsxs as jsxs36 } from "react/jsx-runtime";
5134
+ var ToastContext = createContext18({});
4700
5135
  var ToastProvider = ({ children }) => {
4701
5136
  const [isClientRender, setIsClientRender] = useState16(false);
4702
5137
  const [toasts, setToasts] = useState16([]);
@@ -4709,21 +5144,21 @@ var ToastProvider = ({ children }) => {
4709
5144
  useEffect13(() => {
4710
5145
  setIsClientRender(true);
4711
5146
  }, []);
4712
- return /* @__PURE__ */ jsxs34(ToastContext.Provider, { value: { addToast, removeToast }, children: [
5147
+ return /* @__PURE__ */ jsxs36(ToastContext.Provider, { value: { addToast, removeToast }, children: [
4713
5148
  children,
4714
5149
  isClientRender && createPortal3(
4715
- /* @__PURE__ */ jsx72("div", { className: "pointer-events-none fixed bottom-0 left-0 z-toast mb-4 ml-4 flex w-full flex-col-reverse gap-[16px]", children: toasts.map(({ id, message, state }) => /* @__PURE__ */ jsx72(Toast, { state, isAutoClose: true, isAnimation: true, onClickClose: () => removeToast(id), width: 475, children: message }, id)) }),
5150
+ /* @__PURE__ */ jsx78("div", { className: "pointer-events-none fixed bottom-0 left-0 z-toast mb-4 ml-4 flex w-full flex-col-reverse gap-[16px]", children: toasts.map(({ id, message, state }) => /* @__PURE__ */ jsx78(Toast, { state, isAutoClose: true, isAnimation: true, onClickClose: () => removeToast(id), width: 475, children: message }, id)) }),
4716
5151
  document.body
4717
5152
  )
4718
5153
  ] });
4719
5154
  };
4720
5155
  var useToast = () => {
4721
- return useContext19(ToastContext);
5156
+ return useContext21(ToastContext);
4722
5157
  };
4723
5158
 
4724
5159
  // src/toggle/toggle.tsx
4725
- import clsx54 from "clsx";
4726
- import { jsx as jsx73, jsxs as jsxs35 } from "react/jsx-runtime";
5160
+ import clsx57 from "clsx";
5161
+ import { jsx as jsx79, jsxs as jsxs37 } from "react/jsx-runtime";
4727
5162
  function Toggle({
4728
5163
  id,
4729
5164
  size = "medium",
@@ -4733,7 +5168,7 @@ function Toggle({
4733
5168
  labelPosition = "right",
4734
5169
  isDisabled = false
4735
5170
  }) {
4736
- const baseClasses = clsx54("relative flex items-center rounded-full", {
5171
+ const baseClasses = clsx57("relative flex items-center rounded-full", {
4737
5172
  "bg-disabledOn": isDisabled && isChecked,
4738
5173
  "bg-disabled01": isDisabled && !isChecked,
4739
5174
  "bg-interactive01 peer-hover:bg-hover01": !isDisabled && isChecked,
@@ -4741,16 +5176,16 @@ function Toggle({
4741
5176
  "w-8 h-4 px-[3px]": size === "small",
4742
5177
  "w-12 h-6 px-1": size === "medium" || size === "large"
4743
5178
  });
4744
- const inputClasses = clsx54(
5179
+ const inputClasses = clsx57(
4745
5180
  "peer absolute inset-0 z-[1] opacity-0",
4746
5181
  isDisabled ? "cursor-not-allowed" : "cursor-pointer"
4747
5182
  );
4748
- const indicatorClasses = clsx54("rounded-full bg-iconOnColor", {
5183
+ const indicatorClasses = clsx57("rounded-full bg-iconOnColor", {
4749
5184
  "w-2.5 h-2.5": size === "small",
4750
5185
  "w-4 h-4": size === "medium" || size === "large",
4751
5186
  "ml-auto": isChecked
4752
5187
  });
4753
- const labelClasses = clsx54("break-all", {
5188
+ const labelClasses = clsx57("break-all", {
4754
5189
  "mr-2": labelPosition === "left",
4755
5190
  "ml-2": labelPosition === "right",
4756
5191
  "typography-label14regular": size === "small" || size === "medium",
@@ -4758,9 +5193,9 @@ function Toggle({
4758
5193
  "pointer-events-none cursor-not-allowed text-disabled01": isDisabled,
4759
5194
  "cursor-pointer text-text01": !isDisabled
4760
5195
  });
4761
- return /* @__PURE__ */ jsxs35("div", { className: "relative flex flex-[0_0_auto] items-center", children: [
4762
- label != null && labelPosition === "left" && /* @__PURE__ */ jsx73("label", { htmlFor: id, className: labelClasses, children: label }),
4763
- /* @__PURE__ */ jsx73(
5196
+ return /* @__PURE__ */ jsxs37("div", { className: "relative flex flex-[0_0_auto] items-center", children: [
5197
+ label != null && labelPosition === "left" && /* @__PURE__ */ jsx79("label", { htmlFor: id, className: labelClasses, children: label }),
5198
+ /* @__PURE__ */ jsx79(
4764
5199
  "input",
4765
5200
  {
4766
5201
  className: inputClasses,
@@ -4772,8 +5207,8 @@ function Toggle({
4772
5207
  disabled: isDisabled
4773
5208
  }
4774
5209
  ),
4775
- /* @__PURE__ */ jsx73("div", { className: baseClasses, children: /* @__PURE__ */ jsx73("span", { className: indicatorClasses }) }),
4776
- label != null && labelPosition === "right" && /* @__PURE__ */ jsx73("label", { htmlFor: id, className: labelClasses, children: label })
5210
+ /* @__PURE__ */ jsx79("div", { className: baseClasses, children: /* @__PURE__ */ jsx79("span", { className: indicatorClasses }) }),
5211
+ label != null && labelPosition === "right" && /* @__PURE__ */ jsx79("label", { htmlFor: id, className: labelClasses, children: label })
4777
5212
  ] });
4778
5213
  }
4779
5214
 
@@ -4782,13 +5217,13 @@ import { useCallback as useCallback18, useEffect as useEffect14, useRef as useRe
4782
5217
  import { createPortal as createPortal4 } from "react-dom";
4783
5218
 
4784
5219
  // src/tooltip/tooltip-content.tsx
4785
- import clsx56 from "clsx";
5220
+ import clsx59 from "clsx";
4786
5221
 
4787
5222
  // src/tooltip/tail-icon.tsx
4788
- import clsx55 from "clsx";
4789
- import { jsx as jsx74 } from "react/jsx-runtime";
5223
+ import clsx58 from "clsx";
5224
+ import { jsx as jsx80 } from "react/jsx-runtime";
4790
5225
  var TailIcon = (props) => {
4791
- const tailClasses = clsx55("absolute fill-uiBackgroundTooltip", {
5226
+ const tailClasses = clsx58("absolute fill-uiBackgroundTooltip", {
4792
5227
  "rotate-180": props.verticalPosition === "bottom",
4793
5228
  "rotate-0": props.verticalPosition !== "bottom",
4794
5229
  "-top-1": props.verticalPosition === "bottom" && props.size === "small",
@@ -4803,9 +5238,9 @@ var TailIcon = (props) => {
4803
5238
  "left-1/2 -translate-x-2": props.horizontalAlign === "center" && props.size !== "small"
4804
5239
  });
4805
5240
  if (props.size === "small") {
4806
- return /* @__PURE__ */ jsx74("svg", { className: tailClasses, width: "8", height: "4", viewBox: "0 0 8 4", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx74("path", { d: "M4 4L0 0H8L4 4Z" }) });
5241
+ return /* @__PURE__ */ jsx80("svg", { className: tailClasses, width: "8", height: "4", viewBox: "0 0 8 4", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx80("path", { d: "M4 4L0 0H8L4 4Z" }) });
4807
5242
  } else {
4808
- return /* @__PURE__ */ jsx74(
5243
+ return /* @__PURE__ */ jsx80(
4809
5244
  "svg",
4810
5245
  {
4811
5246
  className: tailClasses,
@@ -4814,14 +5249,14 @@ var TailIcon = (props) => {
4814
5249
  viewBox: "0 0 14 8",
4815
5250
  fill: "none",
4816
5251
  xmlns: "http://www.w3.org/2000/svg",
4817
- children: /* @__PURE__ */ jsx74("path", { d: "M7 8L0 0H14L7 8Z" })
5252
+ children: /* @__PURE__ */ jsx80("path", { d: "M7 8L0 0H14L7 8Z" })
4818
5253
  }
4819
5254
  );
4820
5255
  }
4821
5256
  };
4822
5257
 
4823
5258
  // src/tooltip/tooltip-content.tsx
4824
- import { jsx as jsx75, jsxs as jsxs36 } from "react/jsx-runtime";
5259
+ import { jsx as jsx81, jsxs as jsxs38 } from "react/jsx-runtime";
4825
5260
  var TooltipContent = ({
4826
5261
  content,
4827
5262
  horizontalAlign,
@@ -4831,7 +5266,7 @@ var TooltipContent = ({
4831
5266
  maxWidth,
4832
5267
  isPortal = false
4833
5268
  }) => {
4834
- const tooltipWrapperClasses = clsx56("absolute z-tooltip m-auto flex", {
5269
+ const tooltipWrapperClasses = clsx59("absolute z-tooltip m-auto flex", {
4835
5270
  "top-0": !isPortal && verticalPosition === "top",
4836
5271
  "bottom-0": !isPortal && verticalPosition === "bottom",
4837
5272
  "justify-start": horizontalAlign === "left",
@@ -4840,7 +5275,7 @@ var TooltipContent = ({
4840
5275
  "w-[24px]": size === "small",
4841
5276
  "w-[46px]": size !== "small"
4842
5277
  });
4843
- const tooltipBodyClasses = clsx56(
5278
+ const tooltipBodyClasses = clsx59(
4844
5279
  "absolute z-tooltip inline-block w-max rounded bg-uiBackgroundTooltip text-textOnColor",
4845
5280
  {
4846
5281
  "typography-body12regular": size === "small",
@@ -4857,7 +5292,7 @@ var TooltipContent = ({
4857
5292
  transform: `translate(${tooltipPosition.translateX}, ${tooltipPosition.translateY})`,
4858
5293
  ...tooltipPosition
4859
5294
  } : {};
4860
- return /* @__PURE__ */ jsx75("div", { className: tooltipWrapperClasses, style: tooltipWrapperStyle, children: /* @__PURE__ */ jsxs36(
5295
+ return /* @__PURE__ */ jsx81("div", { className: tooltipWrapperClasses, style: tooltipWrapperStyle, children: /* @__PURE__ */ jsxs38(
4861
5296
  "div",
4862
5297
  {
4863
5298
  className: tooltipBodyClasses,
@@ -4866,7 +5301,7 @@ var TooltipContent = ({
4866
5301
  },
4867
5302
  children: [
4868
5303
  content,
4869
- /* @__PURE__ */ jsx75(TailIcon, { size, verticalPosition, horizontalAlign })
5304
+ /* @__PURE__ */ jsx81(TailIcon, { size, verticalPosition, horizontalAlign })
4870
5305
  ]
4871
5306
  }
4872
5307
  ) });
@@ -4927,7 +5362,7 @@ var useTooltip = () => {
4927
5362
  };
4928
5363
 
4929
5364
  // src/tooltip/tooltip.tsx
4930
- import { jsx as jsx76, jsxs as jsxs37 } from "react/jsx-runtime";
5365
+ import { jsx as jsx82, jsxs as jsxs39 } from "react/jsx-runtime";
4931
5366
  function Tooltip({
4932
5367
  children,
4933
5368
  content,
@@ -4997,7 +5432,7 @@ function Tooltip({
4997
5432
  window.removeEventListener("resize", updatePosition);
4998
5433
  };
4999
5434
  }, [isVisible, calculatePosition, maxWidth, verticalPosition, horizontalAlign, size]);
5000
- return /* @__PURE__ */ jsxs37(
5435
+ return /* @__PURE__ */ jsxs39(
5001
5436
  "div",
5002
5437
  {
5003
5438
  ref: targetRef,
@@ -5006,7 +5441,7 @@ function Tooltip({
5006
5441
  onMouseLeave: handleMouseOutWrapper,
5007
5442
  children: [
5008
5443
  children,
5009
- isVisible && (portalTarget == null ? /* @__PURE__ */ jsx76(
5444
+ isVisible && (portalTarget == null ? /* @__PURE__ */ jsx82(
5010
5445
  TooltipContent,
5011
5446
  {
5012
5447
  content,
@@ -5017,7 +5452,7 @@ function Tooltip({
5017
5452
  tooltipPosition
5018
5453
  }
5019
5454
  ) : createPortal4(
5020
- /* @__PURE__ */ jsx76(
5455
+ /* @__PURE__ */ jsx82(
5021
5456
  TooltipContent,
5022
5457
  {
5023
5458
  isPortal: true,
@@ -5061,6 +5496,7 @@ export {
5061
5496
  PopoverTrigger,
5062
5497
  Popup,
5063
5498
  Radio,
5499
+ RadioCard,
5064
5500
  Search,
5065
5501
  SegmentedControl,
5066
5502
  Select,
@@ -5075,10 +5511,13 @@ export {
5075
5511
  Tag,
5076
5512
  TextArea,
5077
5513
  TextInput,
5514
+ TimePicker,
5078
5515
  Toast,
5079
5516
  ToastProvider,
5080
5517
  Toggle,
5081
5518
  Tooltip,
5519
+ formatTime,
5520
+ parseTime,
5082
5521
  useOutsideClick,
5083
5522
  useRovingFocus,
5084
5523
  useToast