@zenkigen-inc/component-ui 1.21.1 → 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.d.mts +139 -4
- package/dist/index.d.ts +139 -4
- package/dist/index.js +724 -279
- package/dist/index.mjs +670 -229
- package/package.json +4 -4
- package/vitest.setup.ts +6 -0
package/dist/index.mjs
CHANGED
|
@@ -2968,22 +2968,35 @@ Modal.Footer = ModalFooter;
|
|
|
2968
2968
|
// src/notification-inline/notification-inline.tsx
|
|
2969
2969
|
import { clsx as clsx29 } from "clsx";
|
|
2970
2970
|
import { jsx as jsx38, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
2971
|
-
function NotificationInline({ state = "default", size = "medium", ...props }) {
|
|
2972
|
-
const
|
|
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", {
|
|
2973
2974
|
"bg-uiBackgroundError": state === "attention",
|
|
2974
2975
|
"bg-uiBackgroundWarning": state === "warning",
|
|
2975
2976
|
"bg-uiBackgroundBlue": state === "information",
|
|
2976
2977
|
"bg-uiBackgroundSuccess": state === "success",
|
|
2977
2978
|
"bg-uiBackgroundGray": state === "default",
|
|
2978
|
-
|
|
2979
|
-
|
|
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"
|
|
2980
2989
|
});
|
|
2981
|
-
const iconClasses = clsx29("flex items-center", {
|
|
2990
|
+
const iconClasses = clsx29("flex shrink-0 items-center", {
|
|
2991
|
+
"h-5": size === "small",
|
|
2982
2992
|
"fill-supportError": state === "attention",
|
|
2983
2993
|
"fill-supportWarning": state === "warning",
|
|
2984
2994
|
"fill-blue-blue50": state === "information",
|
|
2985
2995
|
"fill-supportSuccess": state === "success"
|
|
2986
2996
|
});
|
|
2997
|
+
const textClasses = clsx29("flex-1", {
|
|
2998
|
+
"pt-[2px]": size === "medium" && state !== "default"
|
|
2999
|
+
});
|
|
2987
3000
|
const iconName = {
|
|
2988
3001
|
attention: "attention",
|
|
2989
3002
|
success: "success-filled",
|
|
@@ -2995,9 +3008,11 @@ function NotificationInline({ state = "default", size = "medium", ...props }) {
|
|
|
2995
3008
|
medium: "medium"
|
|
2996
3009
|
};
|
|
2997
3010
|
return /* @__PURE__ */ jsxs15("div", { className: wrapperClasses, children: [
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
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 }) })
|
|
3001
3016
|
] });
|
|
3002
3017
|
}
|
|
3003
3018
|
|
|
@@ -3209,7 +3224,9 @@ function Select({
|
|
|
3209
3224
|
isOptionSelected = false,
|
|
3210
3225
|
onChange,
|
|
3211
3226
|
optionListMaxHeight,
|
|
3212
|
-
matchListToTrigger = false
|
|
3227
|
+
matchListToTrigger = false,
|
|
3228
|
+
"aria-label": ariaLabel,
|
|
3229
|
+
"aria-describedby": ariaDescribedby
|
|
3213
3230
|
}) {
|
|
3214
3231
|
const [isOptionListOpen, setIsOptionListOpen] = useState10(false);
|
|
3215
3232
|
const targetRef = useRef11(null);
|
|
@@ -3270,6 +3287,7 @@ function Select({
|
|
|
3270
3287
|
"typography-label14regular": size === "small" || size === "medium",
|
|
3271
3288
|
"typography-label16regular": size === "large"
|
|
3272
3289
|
});
|
|
3290
|
+
const ariaInvalidProps = isError ? { "aria-invalid": true } : {};
|
|
3273
3291
|
return /* @__PURE__ */ jsx43(
|
|
3274
3292
|
SelectContext.Provider,
|
|
3275
3293
|
{
|
|
@@ -3291,6 +3309,9 @@ function Select({
|
|
|
3291
3309
|
ref: refs.setReference,
|
|
3292
3310
|
className: buttonClasses,
|
|
3293
3311
|
type: "button",
|
|
3312
|
+
"aria-label": ariaLabel,
|
|
3313
|
+
"aria-describedby": ariaDescribedby,
|
|
3314
|
+
...ariaInvalidProps,
|
|
3294
3315
|
onClick: handleClickToggle,
|
|
3295
3316
|
disabled: isDisabled,
|
|
3296
3317
|
children: [
|
|
@@ -3599,23 +3620,207 @@ function Radio({
|
|
|
3599
3620
|
] });
|
|
3600
3621
|
}
|
|
3601
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
|
+
|
|
3602
3807
|
// src/search/search.tsx
|
|
3603
|
-
import { clsx as
|
|
3808
|
+
import { clsx as clsx36 } from "clsx";
|
|
3604
3809
|
import { forwardRef as forwardRef12 } from "react";
|
|
3605
|
-
import { jsx as
|
|
3810
|
+
import { jsx as jsx55, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
3606
3811
|
var Search = forwardRef12(({ width = "100%", size = "medium", ...props }, ref) => {
|
|
3607
|
-
const classes =
|
|
3812
|
+
const classes = clsx36(
|
|
3608
3813
|
"flex items-center rounded-full border border-uiBorder02 bg-uiBackground01 focus-within:border-activeInput",
|
|
3609
3814
|
{ "h-8 px-3": size === "medium" },
|
|
3610
3815
|
{ "h-10 px-4": size === "large" }
|
|
3611
3816
|
);
|
|
3612
|
-
const inputClasses =
|
|
3817
|
+
const inputClasses = clsx36("mx-2 h-full flex-1 text-text01 outline-none placeholder:text-textPlaceholder", {
|
|
3613
3818
|
["typography-label14regular"]: size === "medium",
|
|
3614
3819
|
["typography-label16regular"]: size === "large"
|
|
3615
3820
|
});
|
|
3616
|
-
return /* @__PURE__ */
|
|
3617
|
-
/* @__PURE__ */
|
|
3618
|
-
/* @__PURE__ */
|
|
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(
|
|
3619
3824
|
"input",
|
|
3620
3825
|
{
|
|
3621
3826
|
type: "text",
|
|
@@ -3626,7 +3831,7 @@ var Search = forwardRef12(({ width = "100%", size = "medium", ...props }, ref) =
|
|
|
3626
3831
|
onChange: props.onChange
|
|
3627
3832
|
}
|
|
3628
3833
|
),
|
|
3629
|
-
props.onClickClearButton && props.value && props.value.length !== 0 && /* @__PURE__ */
|
|
3834
|
+
props.onClickClearButton && props.value && props.value.length !== 0 && /* @__PURE__ */ jsx55(
|
|
3630
3835
|
IconButton,
|
|
3631
3836
|
{
|
|
3632
3837
|
variant: "text",
|
|
@@ -3641,17 +3846,17 @@ var Search = forwardRef12(({ width = "100%", size = "medium", ...props }, ref) =
|
|
|
3641
3846
|
Search.displayName = "Search";
|
|
3642
3847
|
|
|
3643
3848
|
// src/segmented-control/segmented-control.tsx
|
|
3644
|
-
import React4, { Children as
|
|
3849
|
+
import React4, { Children as Children6, useRef as useRef13 } from "react";
|
|
3645
3850
|
|
|
3646
3851
|
// src/segmented-control/segmented-control-context.ts
|
|
3647
|
-
import { createContext as
|
|
3648
|
-
var SegmentedControlContext =
|
|
3852
|
+
import { createContext as createContext13 } from "react";
|
|
3853
|
+
var SegmentedControlContext = createContext13(null);
|
|
3649
3854
|
|
|
3650
3855
|
// src/segmented-control/segmented-control-item.tsx
|
|
3651
|
-
import { focusVisible as
|
|
3652
|
-
import { clsx as
|
|
3653
|
-
import { useContext as
|
|
3654
|
-
import { jsx as
|
|
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";
|
|
3655
3860
|
var SegmentedControlItem = ({
|
|
3656
3861
|
label,
|
|
3657
3862
|
value,
|
|
@@ -3660,7 +3865,7 @@ var SegmentedControlItem = ({
|
|
|
3660
3865
|
"aria-label": ariaLabel,
|
|
3661
3866
|
...rest
|
|
3662
3867
|
}) => {
|
|
3663
|
-
const context =
|
|
3868
|
+
const context = useContext16(SegmentedControlContext);
|
|
3664
3869
|
const buttonRef = useRef12(null);
|
|
3665
3870
|
const lastInteractionWasMouse = useRef12(false);
|
|
3666
3871
|
if (context === null) {
|
|
@@ -3700,7 +3905,7 @@ var SegmentedControlItem = ({
|
|
|
3700
3905
|
lastInteractionWasMouse.current = false;
|
|
3701
3906
|
onBlur?.();
|
|
3702
3907
|
};
|
|
3703
|
-
const buttonClasses =
|
|
3908
|
+
const buttonClasses = clsx37("relative flex items-center justify-center gap-1 rounded", focusVisible14.normal, {
|
|
3704
3909
|
"px-2 min-h-[24px] typography-label12regular": size === "small",
|
|
3705
3910
|
"px-4 min-h-[32px] typography-label14regular": size === "medium",
|
|
3706
3911
|
// States - Default with hover
|
|
@@ -3710,7 +3915,7 @@ var SegmentedControlItem = ({
|
|
|
3710
3915
|
// States - Disabled
|
|
3711
3916
|
"text-disabled01 bg-transparent": isOptionDisabled === true
|
|
3712
3917
|
});
|
|
3713
|
-
return /* @__PURE__ */
|
|
3918
|
+
return /* @__PURE__ */ jsxs25(
|
|
3714
3919
|
"button",
|
|
3715
3920
|
{
|
|
3716
3921
|
ref: buttonRef,
|
|
@@ -3727,25 +3932,25 @@ var SegmentedControlItem = ({
|
|
|
3727
3932
|
onMouseDown: handleMouseDown,
|
|
3728
3933
|
...rest,
|
|
3729
3934
|
children: [
|
|
3730
|
-
Boolean(icon) === true && icon && /* @__PURE__ */
|
|
3935
|
+
Boolean(icon) === true && icon && /* @__PURE__ */ jsx56(
|
|
3731
3936
|
"span",
|
|
3732
3937
|
{
|
|
3733
|
-
className:
|
|
3938
|
+
className: clsx37("flex items-center", {
|
|
3734
3939
|
"fill-disabled01": isOptionDisabled === true,
|
|
3735
3940
|
"fill-interactive01": isSelected === true && isOptionDisabled === false,
|
|
3736
3941
|
"fill-icon01": isSelected === false && isOptionDisabled === false
|
|
3737
3942
|
}),
|
|
3738
|
-
children: /* @__PURE__ */
|
|
3943
|
+
children: /* @__PURE__ */ jsx56(Icon, { name: icon, size: "small" })
|
|
3739
3944
|
}
|
|
3740
3945
|
),
|
|
3741
|
-
Boolean(label) === true && /* @__PURE__ */
|
|
3946
|
+
Boolean(label) === true && /* @__PURE__ */ jsx56("span", { className: "whitespace-nowrap", children: label })
|
|
3742
3947
|
]
|
|
3743
3948
|
}
|
|
3744
3949
|
);
|
|
3745
3950
|
};
|
|
3746
3951
|
|
|
3747
3952
|
// src/segmented-control/segmented-control.tsx
|
|
3748
|
-
import { Fragment as Fragment6, jsx as
|
|
3953
|
+
import { Fragment as Fragment6, jsx as jsx57 } from "react/jsx-runtime";
|
|
3749
3954
|
var SegmentedControl = ({
|
|
3750
3955
|
children,
|
|
3751
3956
|
value,
|
|
@@ -3756,14 +3961,14 @@ var SegmentedControl = ({
|
|
|
3756
3961
|
...rest
|
|
3757
3962
|
}) => {
|
|
3758
3963
|
const containerRef = useRef13(null);
|
|
3759
|
-
const itemIds =
|
|
3964
|
+
const itemIds = Children6.toArray(children).filter((child) => {
|
|
3760
3965
|
if (!React4.isValidElement(child) || typeof child.props !== "object" || child.props === null || !("value" in child.props)) {
|
|
3761
3966
|
return false;
|
|
3762
3967
|
}
|
|
3763
3968
|
const props = child.props;
|
|
3764
3969
|
return props.isDisabled !== true;
|
|
3765
3970
|
}).map((child) => child.props.value);
|
|
3766
|
-
const childrenCount =
|
|
3971
|
+
const childrenCount = Children6.count(children);
|
|
3767
3972
|
const containerStyle = { gridTemplateColumns: `repeat(${childrenCount}, minmax(0,1fr))` };
|
|
3768
3973
|
const {
|
|
3769
3974
|
focusedValue,
|
|
@@ -3790,7 +3995,7 @@ var SegmentedControl = ({
|
|
|
3790
3995
|
onBlur: handleBlurRovingFocus,
|
|
3791
3996
|
values: itemIds
|
|
3792
3997
|
};
|
|
3793
|
-
return /* @__PURE__ */
|
|
3998
|
+
return /* @__PURE__ */ jsx57(Fragment6, { children: /* @__PURE__ */ jsx57(SegmentedControlContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx57(
|
|
3794
3999
|
"div",
|
|
3795
4000
|
{
|
|
3796
4001
|
ref: containerRef,
|
|
@@ -3807,22 +4012,22 @@ var SegmentedControl = ({
|
|
|
3807
4012
|
SegmentedControl.Item = SegmentedControlItem;
|
|
3808
4013
|
|
|
3809
4014
|
// src/select-sort/select-sort.tsx
|
|
3810
|
-
import { buttonColors as buttonColors4, focusVisible as
|
|
3811
|
-
import
|
|
4015
|
+
import { buttonColors as buttonColors4, focusVisible as focusVisible17 } from "@zenkigen-inc/component-theme";
|
|
4016
|
+
import clsx40 from "clsx";
|
|
3812
4017
|
import { useCallback as useCallback13, useRef as useRef14, useState as useState13 } from "react";
|
|
3813
4018
|
|
|
3814
4019
|
// src/select-sort/select-list.tsx
|
|
3815
|
-
import { focusVisible as
|
|
3816
|
-
import
|
|
4020
|
+
import { focusVisible as focusVisible16 } from "@zenkigen-inc/component-theme";
|
|
4021
|
+
import clsx39 from "clsx";
|
|
3817
4022
|
|
|
3818
4023
|
// src/select-sort/select-item.tsx
|
|
3819
|
-
import { focusVisible as
|
|
3820
|
-
import
|
|
3821
|
-
import { jsx as
|
|
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";
|
|
3822
4027
|
function SelectItem2({ children, isSortKey, size, onClickItem }) {
|
|
3823
|
-
const itemClasses =
|
|
4028
|
+
const itemClasses = clsx38(
|
|
3824
4029
|
"typography-label14regular flex w-full items-center px-3 hover:bg-hover02 active:bg-active02",
|
|
3825
|
-
|
|
4030
|
+
focusVisible15.inset,
|
|
3826
4031
|
{
|
|
3827
4032
|
"h-8": size !== "large",
|
|
3828
4033
|
"h-10": size === "large",
|
|
@@ -3830,16 +4035,16 @@ function SelectItem2({ children, isSortKey, size, onClickItem }) {
|
|
|
3830
4035
|
"bg-uiBackground01 fill-icon01 text-interactive02": !isSortKey
|
|
3831
4036
|
}
|
|
3832
4037
|
);
|
|
3833
|
-
return /* @__PURE__ */
|
|
3834
|
-
/* @__PURE__ */
|
|
3835
|
-
isSortKey && /* @__PURE__ */
|
|
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" }) })
|
|
3836
4041
|
] }) });
|
|
3837
4042
|
}
|
|
3838
4043
|
|
|
3839
4044
|
// src/select-sort/select-list.tsx
|
|
3840
|
-
import { jsx as
|
|
4045
|
+
import { jsx as jsx59, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
3841
4046
|
function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect }) {
|
|
3842
|
-
const listClasses =
|
|
4047
|
+
const listClasses = clsx39(
|
|
3843
4048
|
"absolute z-dropdown w-max overflow-y-auto rounded bg-uiBackground01 py-2 shadow-floatingShadow",
|
|
3844
4049
|
{
|
|
3845
4050
|
"top-7": size === "x-small" || size === "small",
|
|
@@ -3848,23 +4053,23 @@ function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect })
|
|
|
3848
4053
|
"border-solid border border-uiBorder01": variant === "outline"
|
|
3849
4054
|
}
|
|
3850
4055
|
);
|
|
3851
|
-
const deselectButtonClasses =
|
|
4056
|
+
const deselectButtonClasses = clsx39(
|
|
3852
4057
|
"typography-label14regular flex w-full items-center px-3 text-interactive02 hover:bg-hover02 active:bg-active02",
|
|
3853
|
-
|
|
4058
|
+
focusVisible16.inset,
|
|
3854
4059
|
{
|
|
3855
4060
|
"h-8": size !== "large",
|
|
3856
4061
|
"h-10": size === "large"
|
|
3857
4062
|
}
|
|
3858
4063
|
);
|
|
3859
|
-
return /* @__PURE__ */
|
|
3860
|
-
/* @__PURE__ */
|
|
3861
|
-
/* @__PURE__ */
|
|
3862
|
-
sortOrder !== null && onClickDeselect && /* @__PURE__ */
|
|
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" }) })
|
|
3863
4068
|
] });
|
|
3864
4069
|
}
|
|
3865
4070
|
|
|
3866
4071
|
// src/select-sort/select-sort.tsx
|
|
3867
|
-
import { jsx as
|
|
4072
|
+
import { jsx as jsx60, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
3868
4073
|
function SelectSort({
|
|
3869
4074
|
size = "medium",
|
|
3870
4075
|
variant = "outline",
|
|
@@ -3892,18 +4097,18 @@ function SelectSort({
|
|
|
3892
4097
|
},
|
|
3893
4098
|
[onChange]
|
|
3894
4099
|
);
|
|
3895
|
-
const wrapperClasses =
|
|
4100
|
+
const wrapperClasses = clsx40("relative flex shrink-0 items-center gap-1 rounded", {
|
|
3896
4101
|
"h-6": size === "x-small" || size === "small",
|
|
3897
4102
|
"h-8": size === "medium",
|
|
3898
4103
|
"h-10": size === "large",
|
|
3899
4104
|
"cursor-not-allowed": isDisabled
|
|
3900
4105
|
});
|
|
3901
|
-
const buttonClasses =
|
|
4106
|
+
const buttonClasses = clsx40(
|
|
3902
4107
|
"flex size-full items-center rounded",
|
|
3903
4108
|
buttonColors4[variant].hover,
|
|
3904
4109
|
buttonColors4[variant].active,
|
|
3905
4110
|
buttonColors4[variant].disabled,
|
|
3906
|
-
|
|
4111
|
+
focusVisible17.normal,
|
|
3907
4112
|
{
|
|
3908
4113
|
[buttonColors4[variant].selected]: isSortKey,
|
|
3909
4114
|
[buttonColors4[variant].base]: !isSortKey,
|
|
@@ -3912,23 +4117,23 @@ function SelectSort({
|
|
|
3912
4117
|
"pointer-events-none": isDisabled
|
|
3913
4118
|
}
|
|
3914
4119
|
);
|
|
3915
|
-
const labelClasses =
|
|
4120
|
+
const labelClasses = clsx40("truncate", {
|
|
3916
4121
|
"typography-label12regular": size === "x-small",
|
|
3917
4122
|
"typography-label14regular": size === "small" || size === "medium",
|
|
3918
4123
|
"typography-label16regular": size === "large",
|
|
3919
4124
|
"mr-1": size === "x-small",
|
|
3920
4125
|
"mr-2": size !== "x-small"
|
|
3921
4126
|
});
|
|
3922
|
-
return /* @__PURE__ */
|
|
3923
|
-
/* @__PURE__ */
|
|
3924
|
-
/* @__PURE__ */
|
|
3925
|
-
/* @__PURE__ */
|
|
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(
|
|
3926
4131
|
Icon,
|
|
3927
4132
|
{
|
|
3928
4133
|
name: sortOrder === "ascend" ? "arrow-up" : "arrow-down",
|
|
3929
4134
|
size: size === "large" ? "medium" : "small"
|
|
3930
4135
|
}
|
|
3931
|
-
) : /* @__PURE__ */
|
|
4136
|
+
) : /* @__PURE__ */ jsx60(
|
|
3932
4137
|
Icon,
|
|
3933
4138
|
{
|
|
3934
4139
|
name: isOptionListOpen ? "angle-small-up" : "angle-small-down",
|
|
@@ -3936,7 +4141,7 @@ function SelectSort({
|
|
|
3936
4141
|
}
|
|
3937
4142
|
) })
|
|
3938
4143
|
] }),
|
|
3939
|
-
isOptionListOpen && !isDisabled && /* @__PURE__ */
|
|
4144
|
+
isOptionListOpen && !isDisabled && /* @__PURE__ */ jsx60(
|
|
3940
4145
|
SelectList2,
|
|
3941
4146
|
{
|
|
3942
4147
|
size,
|
|
@@ -3950,10 +4155,10 @@ function SelectSort({
|
|
|
3950
4155
|
}
|
|
3951
4156
|
|
|
3952
4157
|
// src/sort-button/sort-button.tsx
|
|
3953
|
-
import { buttonColors as buttonColors5, focusVisible as
|
|
3954
|
-
import
|
|
4158
|
+
import { buttonColors as buttonColors5, focusVisible as focusVisible18 } from "@zenkigen-inc/component-theme";
|
|
4159
|
+
import clsx41 from "clsx";
|
|
3955
4160
|
import { useCallback as useCallback14 } from "react";
|
|
3956
|
-
import { jsx as
|
|
4161
|
+
import { jsx as jsx61, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
3957
4162
|
function SortButton({
|
|
3958
4163
|
size = "medium",
|
|
3959
4164
|
width,
|
|
@@ -3973,18 +4178,18 @@ function SortButton({
|
|
|
3973
4178
|
if (sortOrder === "descend") return "arrow-down";
|
|
3974
4179
|
return "angle-small-down";
|
|
3975
4180
|
};
|
|
3976
|
-
const wrapperClasses =
|
|
4181
|
+
const wrapperClasses = clsx41("relative flex shrink-0 items-center gap-1 rounded", {
|
|
3977
4182
|
"h-6": size === "x-small" || size === "small",
|
|
3978
4183
|
"h-8": size === "medium",
|
|
3979
4184
|
"h-10": size === "large",
|
|
3980
4185
|
"cursor-not-allowed": isDisabled
|
|
3981
4186
|
});
|
|
3982
|
-
const buttonClasses =
|
|
4187
|
+
const buttonClasses = clsx41(
|
|
3983
4188
|
"flex size-full items-center rounded",
|
|
3984
4189
|
buttonColors5.text.hover,
|
|
3985
4190
|
buttonColors5.text.active,
|
|
3986
4191
|
buttonColors5.text.disabled,
|
|
3987
|
-
|
|
4192
|
+
focusVisible18.normal,
|
|
3988
4193
|
{
|
|
3989
4194
|
[buttonColors5.text.selected]: !isDisabled && sortOrder !== null,
|
|
3990
4195
|
// ソート状態時は選択状態のスタイル
|
|
@@ -3995,14 +4200,14 @@ function SortButton({
|
|
|
3995
4200
|
"pointer-events-none": isDisabled
|
|
3996
4201
|
}
|
|
3997
4202
|
);
|
|
3998
|
-
const labelClasses =
|
|
4203
|
+
const labelClasses = clsx41("truncate", {
|
|
3999
4204
|
"typography-label12regular": size === "x-small",
|
|
4000
4205
|
"typography-label14regular": size === "small" || size === "medium",
|
|
4001
4206
|
"typography-label16regular": size === "large",
|
|
4002
4207
|
"mr-1": size === "x-small",
|
|
4003
4208
|
"mr-2": size !== "x-small"
|
|
4004
4209
|
});
|
|
4005
|
-
return /* @__PURE__ */
|
|
4210
|
+
return /* @__PURE__ */ jsx61("div", { className: wrapperClasses, style: { width }, children: /* @__PURE__ */ jsxs29(
|
|
4006
4211
|
"button",
|
|
4007
4212
|
{
|
|
4008
4213
|
className: buttonClasses,
|
|
@@ -4013,22 +4218,22 @@ function SortButton({
|
|
|
4013
4218
|
"aria-label": ariaLabel,
|
|
4014
4219
|
"aria-disabled": isDisabled,
|
|
4015
4220
|
children: [
|
|
4016
|
-
/* @__PURE__ */
|
|
4017
|
-
/* @__PURE__ */
|
|
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" }) })
|
|
4018
4223
|
]
|
|
4019
4224
|
}
|
|
4020
4225
|
) });
|
|
4021
4226
|
}
|
|
4022
4227
|
|
|
4023
4228
|
// src/steps/steps.tsx
|
|
4024
|
-
import { clsx as
|
|
4025
|
-
import { Children as
|
|
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";
|
|
4026
4231
|
|
|
4027
4232
|
// src/steps/steps-context.ts
|
|
4028
|
-
import { createContext as
|
|
4029
|
-
var StepsContext =
|
|
4233
|
+
import { createContext as createContext14, useContext as useContext17 } from "react";
|
|
4234
|
+
var StepsContext = createContext14(null);
|
|
4030
4235
|
function useStepsContext() {
|
|
4031
|
-
const context =
|
|
4236
|
+
const context = useContext17(StepsContext);
|
|
4032
4237
|
if (context === null) {
|
|
4033
4238
|
throw new Error("Steps.Item must be used within <Steps>");
|
|
4034
4239
|
}
|
|
@@ -4036,13 +4241,13 @@ function useStepsContext() {
|
|
|
4036
4241
|
}
|
|
4037
4242
|
|
|
4038
4243
|
// src/steps/steps-item.tsx
|
|
4039
|
-
import { clsx as
|
|
4244
|
+
import { clsx as clsx43 } from "clsx";
|
|
4040
4245
|
|
|
4041
4246
|
// src/steps/steps-item-context.ts
|
|
4042
|
-
import { createContext as
|
|
4043
|
-
var StepsItemContext =
|
|
4247
|
+
import { createContext as createContext15, useContext as useContext18 } from "react";
|
|
4248
|
+
var StepsItemContext = createContext15(null);
|
|
4044
4249
|
function useStepsItemContext() {
|
|
4045
|
-
const context =
|
|
4250
|
+
const context = useContext18(StepsItemContext);
|
|
4046
4251
|
if (context === null) {
|
|
4047
4252
|
throw new Error("Steps.Item must be rendered inside a <Steps> component");
|
|
4048
4253
|
}
|
|
@@ -4050,34 +4255,34 @@ function useStepsItemContext() {
|
|
|
4050
4255
|
}
|
|
4051
4256
|
|
|
4052
4257
|
// src/steps/steps-separator.tsx
|
|
4053
|
-
import { clsx as
|
|
4054
|
-
import { jsx as
|
|
4258
|
+
import { clsx as clsx42 } from "clsx";
|
|
4259
|
+
import { jsx as jsx62 } from "react/jsx-runtime";
|
|
4055
4260
|
function StepsSeparator({ progress }) {
|
|
4056
4261
|
const { orientation } = useStepsContext();
|
|
4057
4262
|
const isVerticalLine = orientation === "vertical";
|
|
4058
4263
|
const colorClass = progress === "completed" ? "bg-interactive01" : "bg-uiBorder01";
|
|
4059
4264
|
if (isVerticalLine) {
|
|
4060
|
-
return /* @__PURE__ */
|
|
4265
|
+
return /* @__PURE__ */ jsx62("div", { "aria-hidden": "true", className: clsx42("mx-auto h-full min-h-2 w-px", colorClass) });
|
|
4061
4266
|
}
|
|
4062
|
-
return /* @__PURE__ */
|
|
4267
|
+
return /* @__PURE__ */ jsx62("div", { "aria-hidden": "true", className: clsx42("h-px flex-1", colorClass) });
|
|
4063
4268
|
}
|
|
4064
4269
|
|
|
4065
4270
|
// src/steps/steps-item.tsx
|
|
4066
|
-
import { jsx as
|
|
4271
|
+
import { jsx as jsx63, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
4067
4272
|
var progressSrOnlyLabel = {
|
|
4068
4273
|
completed: "\u5B8C\u4E86: ",
|
|
4069
4274
|
current: "\u73FE\u5728\u306E\u30B9\u30C6\u30C3\u30D7: ",
|
|
4070
4275
|
upcoming: "\u672A\u7740\u624B: "
|
|
4071
4276
|
};
|
|
4072
4277
|
function getCircleSizeClass(size) {
|
|
4073
|
-
return
|
|
4278
|
+
return clsx43({
|
|
4074
4279
|
"size-6 typography-label12regular": size === "small",
|
|
4075
4280
|
"size-8 typography-label12regular": size === "medium",
|
|
4076
4281
|
"size-10 typography-label16regular": size === "large"
|
|
4077
4282
|
});
|
|
4078
4283
|
}
|
|
4079
4284
|
function getCircleVariantProgressClass(variant, progress) {
|
|
4080
|
-
return
|
|
4285
|
+
return clsx43({
|
|
4081
4286
|
// subtle(全 state border-transparent で box-sizing を揃える)
|
|
4082
4287
|
"bg-uiBackground02 text-text01 border-transparent": variant === "subtle" && progress === "upcoming",
|
|
4083
4288
|
"bg-activeUi text-text01 border-transparent": variant === "subtle" && progress === "current",
|
|
@@ -4089,7 +4294,7 @@ function getCircleVariantProgressClass(variant, progress) {
|
|
|
4089
4294
|
});
|
|
4090
4295
|
}
|
|
4091
4296
|
function getCircleClasses(size, variant, state) {
|
|
4092
|
-
return
|
|
4297
|
+
return clsx43(
|
|
4093
4298
|
"box-border flex items-center justify-center rounded-full border-2",
|
|
4094
4299
|
getCircleSizeClass(size),
|
|
4095
4300
|
getCircleVariantProgressClass(variant, state.progress)
|
|
@@ -4107,65 +4312,65 @@ function StepsItem({ label, description }) {
|
|
|
4107
4312
|
const { state, index, isLast, id } = useStepsItemContext();
|
|
4108
4313
|
const isCircleFilled = state.progress === "completed";
|
|
4109
4314
|
const circleClasses = getCircleClasses(size, variant, state);
|
|
4110
|
-
const checkIcon = variant === "solid" ? /* @__PURE__ */
|
|
4111
|
-
const circle = /* @__PURE__ */
|
|
4112
|
-
const labelBlock = /* @__PURE__ */
|
|
4113
|
-
/* @__PURE__ */
|
|
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(
|
|
4114
4319
|
"span",
|
|
4115
4320
|
{
|
|
4116
|
-
className:
|
|
4321
|
+
className: clsx43(
|
|
4117
4322
|
"whitespace-nowrap text-text01",
|
|
4118
4323
|
size === "large" ? "typography-body16regular" : "typography-body14regular"
|
|
4119
4324
|
),
|
|
4120
4325
|
children: [
|
|
4121
|
-
/* @__PURE__ */
|
|
4326
|
+
/* @__PURE__ */ jsx63("span", { className: "sr-only", children: progressSrOnlyLabel[state.progress] }),
|
|
4122
4327
|
label
|
|
4123
4328
|
]
|
|
4124
4329
|
}
|
|
4125
4330
|
),
|
|
4126
|
-
description != null && /* @__PURE__ */
|
|
4331
|
+
description != null && /* @__PURE__ */ jsx63("span", { className: "typography-label12regular whitespace-nowrap text-text02", children: description })
|
|
4127
4332
|
] });
|
|
4128
4333
|
const ariaCurrentProps = state.progress === "current" ? { "aria-current": "step" } : {};
|
|
4129
4334
|
if (orientation === "horizontal" && textOrientation === "horizontal") {
|
|
4130
|
-
return /* @__PURE__ */
|
|
4335
|
+
return /* @__PURE__ */ jsx63("li", { ...ariaCurrentProps, id, children: /* @__PURE__ */ jsxs30("div", { className: "flex items-center gap-2", children: [
|
|
4131
4336
|
circle,
|
|
4132
4337
|
labelBlock
|
|
4133
4338
|
] }) });
|
|
4134
4339
|
}
|
|
4135
4340
|
if (orientation === "horizontal" && textOrientation === "vertical") {
|
|
4136
|
-
return /* @__PURE__ */
|
|
4341
|
+
return /* @__PURE__ */ jsx63("li", { ...ariaCurrentProps, id, children: /* @__PURE__ */ jsxs30("div", { className: "flex flex-col items-center gap-1", children: [
|
|
4137
4342
|
circle,
|
|
4138
4343
|
labelBlock
|
|
4139
4344
|
] }) });
|
|
4140
4345
|
}
|
|
4141
4346
|
if (orientation === "vertical" && textOrientation === "horizontal") {
|
|
4142
|
-
return /* @__PURE__ */
|
|
4347
|
+
return /* @__PURE__ */ jsxs30(
|
|
4143
4348
|
"li",
|
|
4144
4349
|
{
|
|
4145
4350
|
...ariaCurrentProps,
|
|
4146
|
-
className:
|
|
4351
|
+
className: clsx43(
|
|
4147
4352
|
"grid grid-cols-[min-content_1fr] grid-rows-[auto_1fr] items-center gap-x-2",
|
|
4148
4353
|
!isLast && "flex-1"
|
|
4149
4354
|
),
|
|
4150
4355
|
id,
|
|
4151
4356
|
children: [
|
|
4152
|
-
/* @__PURE__ */
|
|
4153
|
-
/* @__PURE__ */
|
|
4154
|
-
!isLast && /* @__PURE__ */
|
|
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 }) })
|
|
4155
4360
|
]
|
|
4156
4361
|
}
|
|
4157
4362
|
);
|
|
4158
4363
|
}
|
|
4159
|
-
return /* @__PURE__ */
|
|
4364
|
+
return /* @__PURE__ */ jsxs30("li", { ...ariaCurrentProps, className: clsx43("flex flex-col items-center gap-1", !isLast && "flex-1"), id, children: [
|
|
4160
4365
|
circle,
|
|
4161
4366
|
labelBlock,
|
|
4162
|
-
!isLast && /* @__PURE__ */
|
|
4367
|
+
!isLast && /* @__PURE__ */ jsx63("div", { className: "flex flex-1 items-stretch self-stretch py-2", children: /* @__PURE__ */ jsx63(StepsSeparator, { progress: state.progress }) })
|
|
4163
4368
|
] });
|
|
4164
4369
|
}
|
|
4165
4370
|
StepsItem.displayName = "Steps.Item";
|
|
4166
4371
|
|
|
4167
4372
|
// src/steps/steps.tsx
|
|
4168
|
-
import { jsx as
|
|
4373
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
4169
4374
|
function getSeparatorCellHeightClass(size) {
|
|
4170
4375
|
if (size === "small") return "h-6";
|
|
4171
4376
|
if (size === "medium") return "h-8";
|
|
@@ -4178,12 +4383,12 @@ function HorizontalSeparatorCell({
|
|
|
4178
4383
|
}) {
|
|
4179
4384
|
const heightClass = getSeparatorCellHeightClass(size);
|
|
4180
4385
|
const alignClass = textOrientation === "vertical" ? "self-start" : "";
|
|
4181
|
-
return /* @__PURE__ */
|
|
4386
|
+
return /* @__PURE__ */ jsx64("li", { "aria-hidden": "true", className: clsx44("flex items-center", heightClass, alignClass), role: "presentation", children: /* @__PURE__ */ jsx64(StepsSeparator, { progress }) });
|
|
4182
4387
|
}
|
|
4183
4388
|
function collectStepsItems(children) {
|
|
4184
4389
|
const result = [];
|
|
4185
|
-
|
|
4186
|
-
if (!
|
|
4390
|
+
Children7.toArray(children).forEach((child) => {
|
|
4391
|
+
if (!isValidElement6(child)) {
|
|
4187
4392
|
return;
|
|
4188
4393
|
}
|
|
4189
4394
|
if (child.type === StepsItem) {
|
|
@@ -4207,12 +4412,12 @@ function StepsRoot({
|
|
|
4207
4412
|
variant = "solid",
|
|
4208
4413
|
"aria-label": ariaLabel
|
|
4209
4414
|
}) {
|
|
4210
|
-
const baseId =
|
|
4415
|
+
const baseId = useId7();
|
|
4211
4416
|
const [internalStep] = useState14(defaultCurrentStep ?? 0);
|
|
4212
4417
|
const resolvedCurrentStep = currentStep ?? internalStep;
|
|
4213
|
-
const itemElements =
|
|
4418
|
+
const itemElements = useMemo7(() => collectStepsItems(children), [children]);
|
|
4214
4419
|
const stepsCount = itemElements.length;
|
|
4215
|
-
const contextValue =
|
|
4420
|
+
const contextValue = useMemo7(
|
|
4216
4421
|
() => ({
|
|
4217
4422
|
size,
|
|
4218
4423
|
orientation,
|
|
@@ -4231,13 +4436,13 @@ function StepsRoot({
|
|
|
4231
4436
|
const state = states[index] ?? { progress: "upcoming" };
|
|
4232
4437
|
const isLast = index === stepsCount - 1;
|
|
4233
4438
|
const id = `${baseId}-item-${index}`;
|
|
4234
|
-
return /* @__PURE__ */
|
|
4439
|
+
return /* @__PURE__ */ jsx64(StepsItemContext.Provider, { value: { index, state, isLast, id }, children: item }, item.key ?? `item-${index}`);
|
|
4235
4440
|
};
|
|
4236
4441
|
const renderedChildren = orientation === "horizontal" ? itemElements.flatMap((item, index) => {
|
|
4237
4442
|
const nodes = [wrapItem(item, index)];
|
|
4238
4443
|
if (index < stepsCount - 1) {
|
|
4239
4444
|
nodes.push(
|
|
4240
|
-
/* @__PURE__ */
|
|
4445
|
+
/* @__PURE__ */ jsx64(
|
|
4241
4446
|
HorizontalSeparatorCell,
|
|
4242
4447
|
{
|
|
4243
4448
|
progress: states[index]?.progress ?? "upcoming",
|
|
@@ -4250,7 +4455,7 @@ function StepsRoot({
|
|
|
4250
4455
|
}
|
|
4251
4456
|
return nodes;
|
|
4252
4457
|
}) : itemElements.map((item, index) => wrapItem(item, index));
|
|
4253
|
-
const listClassName =
|
|
4458
|
+
const listClassName = clsx44(
|
|
4254
4459
|
orientation === "horizontal" ? ["grid w-full gap-x-2", textOrientation === "vertical" ? "items-start" : "items-center"] : "flex flex-col items-stretch"
|
|
4255
4460
|
);
|
|
4256
4461
|
const horizontalGridTemplate = Array.from(
|
|
@@ -4258,20 +4463,20 @@ function StepsRoot({
|
|
|
4258
4463
|
(_unused, index) => index === stepsCount - 1 ? "max-content" : "max-content minmax(8px, 1fr)"
|
|
4259
4464
|
).join(" ");
|
|
4260
4465
|
const listStyleProps = orientation === "horizontal" ? { style: { gridTemplateColumns: horizontalGridTemplate } } : {};
|
|
4261
|
-
return /* @__PURE__ */
|
|
4466
|
+
return /* @__PURE__ */ jsx64(StepsContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx64("ol", { "aria-label": ariaLabel, className: listClassName, role: "list", ...listStyleProps, children: renderedChildren }) });
|
|
4262
4467
|
}
|
|
4263
4468
|
var Steps = StepsRoot;
|
|
4264
4469
|
Steps.Item = StepsItem;
|
|
4265
4470
|
|
|
4266
4471
|
// src/tab/tab.tsx
|
|
4267
|
-
import { clsx as
|
|
4268
|
-
import { Children as
|
|
4472
|
+
import { clsx as clsx46 } from "clsx";
|
|
4473
|
+
import { Children as Children8 } from "react";
|
|
4269
4474
|
|
|
4270
4475
|
// src/tab/tab-item.tsx
|
|
4271
|
-
import { clsx as
|
|
4272
|
-
import { jsx as
|
|
4476
|
+
import { clsx as clsx45 } from "clsx";
|
|
4477
|
+
import { jsx as jsx65, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
4273
4478
|
var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
|
|
4274
|
-
const classes =
|
|
4479
|
+
const classes = clsx45(
|
|
4275
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",
|
|
4276
4481
|
{
|
|
4277
4482
|
"typography-label14regular text-interactive02": !isSelected,
|
|
@@ -4279,12 +4484,12 @@ var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
|
|
|
4279
4484
|
"before:bg-interactive01 hover:before:bg-interactive01 pointer-events-none": isSelected
|
|
4280
4485
|
}
|
|
4281
4486
|
);
|
|
4282
|
-
const iconWrapperClasses =
|
|
4487
|
+
const iconWrapperClasses = clsx45("flex shrink-0 items-center", {
|
|
4283
4488
|
"fill-disabled01": isDisabled,
|
|
4284
4489
|
"fill-interactive01": !isDisabled && isSelected,
|
|
4285
4490
|
"fill-icon01 group-hover:fill-interactive01": !isDisabled && !isSelected
|
|
4286
4491
|
});
|
|
4287
|
-
return /* @__PURE__ */
|
|
4492
|
+
return /* @__PURE__ */ jsxs31(
|
|
4288
4493
|
"button",
|
|
4289
4494
|
{
|
|
4290
4495
|
type: "button",
|
|
@@ -4294,7 +4499,7 @@ var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
|
|
|
4294
4499
|
disabled: isDisabled,
|
|
4295
4500
|
onClick: () => props.onClick(props.id),
|
|
4296
4501
|
children: [
|
|
4297
|
-
icon != null && /* @__PURE__ */
|
|
4502
|
+
icon != null && /* @__PURE__ */ jsx65("span", { className: iconWrapperClasses, children: /* @__PURE__ */ jsx65(Icon, { name: icon, size: "small" }) }),
|
|
4298
4503
|
props.children
|
|
4299
4504
|
]
|
|
4300
4505
|
}
|
|
@@ -4302,39 +4507,39 @@ var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
|
|
|
4302
4507
|
};
|
|
4303
4508
|
|
|
4304
4509
|
// src/tab/tab.tsx
|
|
4305
|
-
import { jsx as
|
|
4510
|
+
import { jsx as jsx66 } from "react/jsx-runtime";
|
|
4306
4511
|
function Tab({ children, layout = "auto" }) {
|
|
4307
|
-
const childrenCount =
|
|
4512
|
+
const childrenCount = Children8.count(children);
|
|
4308
4513
|
const containerStyle = layout === "equal" ? { gridTemplateColumns: `repeat(${childrenCount}, minmax(0,1fr))` } : {};
|
|
4309
|
-
const containerClasses =
|
|
4514
|
+
const containerClasses = clsx46(
|
|
4310
4515
|
"relative gap-4 px-6 before:absolute before:inset-x-0 before:bottom-0 before:h-px before:bg-uiBorder01",
|
|
4311
4516
|
{
|
|
4312
4517
|
flex: layout === "auto",
|
|
4313
4518
|
grid: layout === "equal"
|
|
4314
4519
|
}
|
|
4315
4520
|
);
|
|
4316
|
-
return /* @__PURE__ */
|
|
4521
|
+
return /* @__PURE__ */ jsx66("div", { role: "tablist", className: containerClasses, style: containerStyle, children });
|
|
4317
4522
|
}
|
|
4318
4523
|
Tab.Item = TabItem;
|
|
4319
4524
|
|
|
4320
4525
|
// src/table/table-cell.tsx
|
|
4321
|
-
import
|
|
4322
|
-
import { jsx as
|
|
4526
|
+
import clsx47 from "clsx";
|
|
4527
|
+
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
4323
4528
|
function TableCell({ children, className, isHeader = false }) {
|
|
4324
|
-
const classes =
|
|
4325
|
-
return /* @__PURE__ */
|
|
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 });
|
|
4326
4531
|
}
|
|
4327
4532
|
|
|
4328
4533
|
// src/table/table-row.tsx
|
|
4329
|
-
import
|
|
4330
|
-
import { jsx as
|
|
4534
|
+
import clsx48 from "clsx";
|
|
4535
|
+
import { jsx as jsx68 } from "react/jsx-runtime";
|
|
4331
4536
|
function TableRow({ children, isHoverBackgroundVisible = false }) {
|
|
4332
|
-
const rowClasses =
|
|
4333
|
-
return /* @__PURE__ */
|
|
4537
|
+
const rowClasses = clsx48("contents", isHoverBackgroundVisible && "[&:hover>div]:bg-hoverUi02");
|
|
4538
|
+
return /* @__PURE__ */ jsx68("div", { className: rowClasses, children });
|
|
4334
4539
|
}
|
|
4335
4540
|
|
|
4336
4541
|
// src/table/table.tsx
|
|
4337
|
-
import { jsx as
|
|
4542
|
+
import { jsx as jsx69 } from "react/jsx-runtime";
|
|
4338
4543
|
function Table({
|
|
4339
4544
|
width,
|
|
4340
4545
|
templateRows,
|
|
@@ -4343,7 +4548,7 @@ function Table({
|
|
|
4343
4548
|
autoRows,
|
|
4344
4549
|
children
|
|
4345
4550
|
}) {
|
|
4346
|
-
return /* @__PURE__ */
|
|
4551
|
+
return /* @__PURE__ */ jsx69(
|
|
4347
4552
|
"div",
|
|
4348
4553
|
{
|
|
4349
4554
|
className: "grid",
|
|
@@ -4363,22 +4568,22 @@ Table.Cell = TableCell;
|
|
|
4363
4568
|
|
|
4364
4569
|
// src/tag/tag.tsx
|
|
4365
4570
|
import { tagColors, tagLightColors } from "@zenkigen-inc/component-theme";
|
|
4366
|
-
import
|
|
4571
|
+
import clsx50 from "clsx";
|
|
4367
4572
|
|
|
4368
4573
|
// src/tag/delete-icon.tsx
|
|
4369
|
-
import { focusVisible as
|
|
4370
|
-
import
|
|
4371
|
-
import { jsx as
|
|
4574
|
+
import { focusVisible as focusVisible19 } from "@zenkigen-inc/component-theme";
|
|
4575
|
+
import clsx49 from "clsx";
|
|
4576
|
+
import { jsx as jsx70 } from "react/jsx-runtime";
|
|
4372
4577
|
var DeleteIcon = ({ color, variant, onClick }) => {
|
|
4373
|
-
const deleteButtonClasses =
|
|
4578
|
+
const deleteButtonClasses = clsx49(
|
|
4374
4579
|
"group ml-2 size-[14px] rounded-full p-0.5 hover:cursor-pointer hover:bg-iconOnColor focus-visible:bg-iconOnColor",
|
|
4375
|
-
|
|
4580
|
+
focusVisible19.normal
|
|
4376
4581
|
);
|
|
4377
|
-
const deletePathClasses =
|
|
4582
|
+
const deletePathClasses = clsx49({
|
|
4378
4583
|
"fill-interactive02": color === "gray" || variant === "light",
|
|
4379
4584
|
"group-hover:fill-interactive02 group-focus-visible:fill-interactive02 fill-iconOnColor": color !== "gray"
|
|
4380
4585
|
});
|
|
4381
|
-
return /* @__PURE__ */
|
|
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(
|
|
4382
4587
|
"path",
|
|
4383
4588
|
{
|
|
4384
4589
|
fillRule: "evenodd",
|
|
@@ -4390,9 +4595,9 @@ var DeleteIcon = ({ color, variant, onClick }) => {
|
|
|
4390
4595
|
};
|
|
4391
4596
|
|
|
4392
4597
|
// src/tag/tag.tsx
|
|
4393
|
-
import { jsx as
|
|
4598
|
+
import { jsx as jsx71, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
4394
4599
|
function Tag({ id, children, color, variant = "normal", size = "medium", isEditable, onDelete }) {
|
|
4395
|
-
const wrapperClasses =
|
|
4600
|
+
const wrapperClasses = clsx50("flex", "items-center", "justify-center", {
|
|
4396
4601
|
[tagColors[color]]: variant === "normal",
|
|
4397
4602
|
[tagLightColors[color]]: variant === "light",
|
|
4398
4603
|
"h-[14px] typography-label11regular": !isEditable && size === "x-small",
|
|
@@ -4403,21 +4608,21 @@ function Tag({ id, children, color, variant = "normal", size = "medium", isEdita
|
|
|
4403
4608
|
"px-1": !isEditable,
|
|
4404
4609
|
"px-2": isEditable
|
|
4405
4610
|
});
|
|
4406
|
-
return /* @__PURE__ */
|
|
4611
|
+
return /* @__PURE__ */ jsxs32("div", { className: wrapperClasses, children: [
|
|
4407
4612
|
children,
|
|
4408
|
-
isEditable ? /* @__PURE__ */
|
|
4613
|
+
isEditable ? /* @__PURE__ */ jsx71(DeleteIcon, { onClick: () => onDelete(id), color, variant }) : null
|
|
4409
4614
|
] });
|
|
4410
4615
|
}
|
|
4411
4616
|
|
|
4412
4617
|
// src/text-area/text-area.tsx
|
|
4413
|
-
import { clsx as
|
|
4414
|
-
import { Children as
|
|
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";
|
|
4415
4620
|
|
|
4416
4621
|
// src/text-area/text-area-context.tsx
|
|
4417
|
-
import { createContext as
|
|
4418
|
-
var TextAreaCompoundContext =
|
|
4622
|
+
import { createContext as createContext16, useContext as useContext19 } from "react";
|
|
4623
|
+
var TextAreaCompoundContext = createContext16(null);
|
|
4419
4624
|
var useTextAreaCompoundContext = (componentName) => {
|
|
4420
|
-
const context =
|
|
4625
|
+
const context = useContext19(TextAreaCompoundContext);
|
|
4421
4626
|
if (context == null) {
|
|
4422
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`);
|
|
4423
4628
|
}
|
|
@@ -4425,9 +4630,9 @@ var useTextAreaCompoundContext = (componentName) => {
|
|
|
4425
4630
|
};
|
|
4426
4631
|
|
|
4427
4632
|
// src/text-area/text-area-error-message.tsx
|
|
4428
|
-
import { clsx as
|
|
4633
|
+
import { clsx as clsx51 } from "clsx";
|
|
4429
4634
|
import { forwardRef as forwardRef13 } from "react";
|
|
4430
|
-
import { jsx as
|
|
4635
|
+
import { jsx as jsx72 } from "react/jsx-runtime";
|
|
4431
4636
|
var TextAreaErrorMessage = forwardRef13(
|
|
4432
4637
|
({ "aria-live": ariaLive = "assertive", ...props }, ref) => {
|
|
4433
4638
|
const { textAreaProps } = useTextAreaCompoundContext("TextArea.ErrorMessage");
|
|
@@ -4436,26 +4641,26 @@ var TextAreaErrorMessage = forwardRef13(
|
|
|
4436
4641
|
if (!shouldRender) {
|
|
4437
4642
|
return null;
|
|
4438
4643
|
}
|
|
4439
|
-
const errorMessageClassName =
|
|
4440
|
-
return /* @__PURE__ */
|
|
4644
|
+
const errorMessageClassName = clsx51(typographyClass, "text-supportError");
|
|
4645
|
+
return /* @__PURE__ */ jsx72("div", { ref, className: errorMessageClassName, "aria-live": ariaLive, ...props });
|
|
4441
4646
|
}
|
|
4442
4647
|
);
|
|
4443
4648
|
TextAreaErrorMessage.displayName = "TextArea.ErrorMessage";
|
|
4444
4649
|
|
|
4445
4650
|
// src/text-area/text-area-helper-message.tsx
|
|
4446
|
-
import { clsx as
|
|
4651
|
+
import { clsx as clsx52 } from "clsx";
|
|
4447
4652
|
import { forwardRef as forwardRef14 } from "react";
|
|
4448
|
-
import { jsx as
|
|
4653
|
+
import { jsx as jsx73 } from "react/jsx-runtime";
|
|
4449
4654
|
var TextAreaHelperMessage = forwardRef14((props, ref) => {
|
|
4450
4655
|
const { textAreaProps } = useTextAreaCompoundContext("TextArea.HelperMessage");
|
|
4451
4656
|
const typographyClass = textAreaProps.size === "large" ? "typography-label13regular" : "typography-label12regular";
|
|
4452
|
-
const helperMessageClassName =
|
|
4453
|
-
return /* @__PURE__ */
|
|
4657
|
+
const helperMessageClassName = clsx52(typographyClass, "text-text02");
|
|
4658
|
+
return /* @__PURE__ */ jsx73("div", { ref, className: helperMessageClassName, ...props });
|
|
4454
4659
|
});
|
|
4455
4660
|
TextAreaHelperMessage.displayName = "TextArea.HelperMessage";
|
|
4456
4661
|
|
|
4457
4662
|
// src/text-area/text-area.tsx
|
|
4458
|
-
import { jsx as
|
|
4663
|
+
import { jsx as jsx74, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
4459
4664
|
function TextAreaInner({
|
|
4460
4665
|
size = "medium",
|
|
4461
4666
|
variant = "outline",
|
|
@@ -4472,8 +4677,8 @@ function TextAreaInner({
|
|
|
4472
4677
|
maxLength,
|
|
4473
4678
|
...props
|
|
4474
4679
|
}, ref) {
|
|
4475
|
-
const autoGeneratedId =
|
|
4476
|
-
const textAreaPropsForContext =
|
|
4680
|
+
const autoGeneratedId = useId8();
|
|
4681
|
+
const textAreaPropsForContext = useMemo8(
|
|
4477
4682
|
() => ({
|
|
4478
4683
|
size,
|
|
4479
4684
|
variant,
|
|
@@ -4481,7 +4686,7 @@ function TextAreaInner({
|
|
|
4481
4686
|
}),
|
|
4482
4687
|
[size, variant, isError]
|
|
4483
4688
|
);
|
|
4484
|
-
const contextValue =
|
|
4689
|
+
const contextValue = useMemo8(
|
|
4485
4690
|
() => ({
|
|
4486
4691
|
textAreaProps: textAreaPropsForContext,
|
|
4487
4692
|
forwardedRef: ref
|
|
@@ -4491,21 +4696,21 @@ function TextAreaInner({
|
|
|
4491
4696
|
const helperMessageIds = [];
|
|
4492
4697
|
const errorIds = [];
|
|
4493
4698
|
const describedByBaseId = props.id ?? autoGeneratedId;
|
|
4494
|
-
const enhancedChildren =
|
|
4495
|
-
if (!
|
|
4699
|
+
const enhancedChildren = Children9.map(children, (child) => {
|
|
4700
|
+
if (!isValidElement7(child)) {
|
|
4496
4701
|
return child;
|
|
4497
4702
|
}
|
|
4498
4703
|
if (child.type === TextAreaHelperMessage) {
|
|
4499
4704
|
const helperChild = child;
|
|
4500
4705
|
const assignedId = helperChild.props.id ?? `${describedByBaseId}-helper-${helperMessageIds.length + 1}`;
|
|
4501
4706
|
helperMessageIds.push(assignedId);
|
|
4502
|
-
return
|
|
4707
|
+
return cloneElement6(helperChild, { id: assignedId });
|
|
4503
4708
|
}
|
|
4504
4709
|
if (child.type === TextAreaErrorMessage && isError) {
|
|
4505
4710
|
const errorChild = child;
|
|
4506
4711
|
const assignedId = errorChild.props.id ?? `${describedByBaseId}-error-${errorIds.length + 1}`;
|
|
4507
4712
|
errorIds.push(assignedId);
|
|
4508
|
-
return
|
|
4713
|
+
return cloneElement6(errorChild, { id: assignedId });
|
|
4509
4714
|
}
|
|
4510
4715
|
return child;
|
|
4511
4716
|
});
|
|
@@ -4532,7 +4737,7 @@ function TextAreaInner({
|
|
|
4532
4737
|
...maxLengthProps
|
|
4533
4738
|
};
|
|
4534
4739
|
const isBorderless = variant === "text";
|
|
4535
|
-
const textAreaWrapperClassName =
|
|
4740
|
+
const textAreaWrapperClassName = clsx53(
|
|
4536
4741
|
"box-border flex w-full overflow-hidden rounded border",
|
|
4537
4742
|
{
|
|
4538
4743
|
// outline variant
|
|
@@ -4548,7 +4753,7 @@ function TextAreaInner({
|
|
|
4548
4753
|
// className は variant="outline" のみ受け入れ、後方互換のため wrapper の末尾に合成(@deprecated)
|
|
4549
4754
|
!isBorderless && className
|
|
4550
4755
|
);
|
|
4551
|
-
const textAreaClassName =
|
|
4756
|
+
const textAreaClassName = clsx53("w-full border-none bg-uiBackground01 outline-none", {
|
|
4552
4757
|
// outline: 従来の padding
|
|
4553
4758
|
"typography-body14regular px-2 py-2": !isBorderless && size === "medium",
|
|
4554
4759
|
"typography-body16regular px-3 py-2": !isBorderless && size === "large",
|
|
@@ -4567,7 +4772,7 @@ function TextAreaInner({
|
|
|
4567
4772
|
"resize-none": !isResizable
|
|
4568
4773
|
});
|
|
4569
4774
|
const hasHeight = height != null && String(height).trim().length > 0;
|
|
4570
|
-
const textAreaElement = /* @__PURE__ */
|
|
4775
|
+
const textAreaElement = /* @__PURE__ */ jsx74(
|
|
4571
4776
|
"div",
|
|
4572
4777
|
{
|
|
4573
4778
|
className: textAreaWrapperClassName,
|
|
@@ -4578,7 +4783,7 @@ function TextAreaInner({
|
|
|
4578
4783
|
...!autoHeight && hasHeight && !isResizable ? { height } : {},
|
|
4579
4784
|
...autoHeight && hasHeight ? { minHeight: height } : {}
|
|
4580
4785
|
},
|
|
4581
|
-
children: /* @__PURE__ */
|
|
4786
|
+
children: /* @__PURE__ */ jsx74(
|
|
4582
4787
|
"textarea",
|
|
4583
4788
|
{
|
|
4584
4789
|
ref,
|
|
@@ -4594,11 +4799,11 @@ function TextAreaInner({
|
|
|
4594
4799
|
)
|
|
4595
4800
|
}
|
|
4596
4801
|
);
|
|
4597
|
-
const counterElement = isCounterVisible ? /* @__PURE__ */
|
|
4802
|
+
const counterElement = isCounterVisible ? /* @__PURE__ */ jsx74(
|
|
4598
4803
|
"div",
|
|
4599
4804
|
{
|
|
4600
4805
|
id: counterId,
|
|
4601
|
-
className:
|
|
4806
|
+
className: clsx53(
|
|
4602
4807
|
"shrink-0",
|
|
4603
4808
|
size === "large" ? "typography-label13regular" : "typography-label12regular",
|
|
4604
4809
|
!disabled && isExceeded ? "text-supportError" : "text-text02"
|
|
@@ -4607,17 +4812,17 @@ function TextAreaInner({
|
|
|
4607
4812
|
children: counterLimit != null ? `${currentLength}/${counterLimit}\u6587\u5B57` : `${currentLength}\u6587\u5B57`
|
|
4608
4813
|
}
|
|
4609
4814
|
) : null;
|
|
4610
|
-
const stackedChildren = enhancedChildren == null ? [] :
|
|
4815
|
+
const stackedChildren = enhancedChildren == null ? [] : Children9.toArray(enhancedChildren);
|
|
4611
4816
|
const hasMessageChildren = stackedChildren.length > 0;
|
|
4612
4817
|
const hasBottomContent = hasMessageChildren || counterElement != null;
|
|
4613
4818
|
if (!hasBottomContent) {
|
|
4614
|
-
return /* @__PURE__ */
|
|
4819
|
+
return /* @__PURE__ */ jsx74(TextAreaCompoundContext.Provider, { value: contextValue, children: textAreaElement });
|
|
4615
4820
|
}
|
|
4616
|
-
return /* @__PURE__ */
|
|
4821
|
+
return /* @__PURE__ */ jsx74(TextAreaCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs33("div", { className: "flex flex-col gap-2", children: [
|
|
4617
4822
|
textAreaElement,
|
|
4618
|
-
/* @__PURE__ */
|
|
4619
|
-
hasMessageChildren && /* @__PURE__ */
|
|
4620
|
-
!hasMessageChildren && counterElement != null && /* @__PURE__ */
|
|
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" }),
|
|
4621
4826
|
counterElement
|
|
4622
4827
|
] })
|
|
4623
4828
|
] }) });
|
|
@@ -4633,10 +4838,242 @@ var TextAreaBase = forwardRef15(function TextAreaBase2(props, ref) {
|
|
|
4633
4838
|
});
|
|
4634
4839
|
var TextArea = attachStatics2(TextAreaBase);
|
|
4635
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
|
+
|
|
4636
5073
|
// src/toast/toast.tsx
|
|
4637
|
-
import
|
|
5074
|
+
import clsx56 from "clsx";
|
|
4638
5075
|
import { useCallback as useCallback15, useEffect as useEffect12, useState as useState15 } from "react";
|
|
4639
|
-
import { jsx as
|
|
5076
|
+
import { jsx as jsx77, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
4640
5077
|
var CLOSE_TIME_MSEC = 5e3;
|
|
4641
5078
|
function Toast({
|
|
4642
5079
|
state = "information",
|
|
@@ -4655,17 +5092,17 @@ function Toast({
|
|
|
4655
5092
|
}
|
|
4656
5093
|
}, [isAnimation, onClickClose]);
|
|
4657
5094
|
const handleAnimationEnd = (e) => window.getComputedStyle(e.currentTarget).opacity === "0" && onClickClose();
|
|
4658
|
-
const wrapperClasses =
|
|
5095
|
+
const wrapperClasses = clsx56("pointer-events-auto flex items-start gap-1 bg-white p-4 shadow-floatingShadow", {
|
|
4659
5096
|
["animate-toast-in"]: isAnimation && !isRemoving,
|
|
4660
5097
|
["animate-toast-out opacity-0"]: isAnimation && isRemoving
|
|
4661
5098
|
});
|
|
4662
|
-
const iconClasses =
|
|
5099
|
+
const iconClasses = clsx56("flex items-center", {
|
|
4663
5100
|
"fill-supportSuccess": state === "success",
|
|
4664
5101
|
"fill-supportError": state === "error",
|
|
4665
5102
|
"fill-supportWarning": state === "warning",
|
|
4666
5103
|
"fill-supportInfo": state === "information"
|
|
4667
5104
|
});
|
|
4668
|
-
const textClasses =
|
|
5105
|
+
const textClasses = clsx56("typography-body13regular flex-1 pt-[3px]", {
|
|
4669
5106
|
"text-supportError": state === "error",
|
|
4670
5107
|
"text-text01": state === "success" || state === "warning" || state === "information"
|
|
4671
5108
|
});
|
|
@@ -4683,18 +5120,18 @@ function Toast({
|
|
|
4683
5120
|
}, CLOSE_TIME_MSEC);
|
|
4684
5121
|
return () => window.clearTimeout(timer);
|
|
4685
5122
|
}, [isAutoClose]);
|
|
4686
|
-
return /* @__PURE__ */
|
|
4687
|
-
/* @__PURE__ */
|
|
4688
|
-
/* @__PURE__ */
|
|
4689
|
-
/* @__PURE__ */
|
|
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 })
|
|
4690
5127
|
] });
|
|
4691
5128
|
}
|
|
4692
5129
|
|
|
4693
5130
|
// src/toast/toast-provider.tsx
|
|
4694
|
-
import { createContext as
|
|
5131
|
+
import { createContext as createContext18, useCallback as useCallback16, useContext as useContext21, useEffect as useEffect13, useState as useState16 } from "react";
|
|
4695
5132
|
import { createPortal as createPortal3 } from "react-dom";
|
|
4696
|
-
import { jsx as
|
|
4697
|
-
var ToastContext =
|
|
5133
|
+
import { jsx as jsx78, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
5134
|
+
var ToastContext = createContext18({});
|
|
4698
5135
|
var ToastProvider = ({ children }) => {
|
|
4699
5136
|
const [isClientRender, setIsClientRender] = useState16(false);
|
|
4700
5137
|
const [toasts, setToasts] = useState16([]);
|
|
@@ -4707,21 +5144,21 @@ var ToastProvider = ({ children }) => {
|
|
|
4707
5144
|
useEffect13(() => {
|
|
4708
5145
|
setIsClientRender(true);
|
|
4709
5146
|
}, []);
|
|
4710
|
-
return /* @__PURE__ */
|
|
5147
|
+
return /* @__PURE__ */ jsxs36(ToastContext.Provider, { value: { addToast, removeToast }, children: [
|
|
4711
5148
|
children,
|
|
4712
5149
|
isClientRender && createPortal3(
|
|
4713
|
-
/* @__PURE__ */
|
|
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)) }),
|
|
4714
5151
|
document.body
|
|
4715
5152
|
)
|
|
4716
5153
|
] });
|
|
4717
5154
|
};
|
|
4718
5155
|
var useToast = () => {
|
|
4719
|
-
return
|
|
5156
|
+
return useContext21(ToastContext);
|
|
4720
5157
|
};
|
|
4721
5158
|
|
|
4722
5159
|
// src/toggle/toggle.tsx
|
|
4723
|
-
import
|
|
4724
|
-
import { jsx as
|
|
5160
|
+
import clsx57 from "clsx";
|
|
5161
|
+
import { jsx as jsx79, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
4725
5162
|
function Toggle({
|
|
4726
5163
|
id,
|
|
4727
5164
|
size = "medium",
|
|
@@ -4731,7 +5168,7 @@ function Toggle({
|
|
|
4731
5168
|
labelPosition = "right",
|
|
4732
5169
|
isDisabled = false
|
|
4733
5170
|
}) {
|
|
4734
|
-
const baseClasses =
|
|
5171
|
+
const baseClasses = clsx57("relative flex items-center rounded-full", {
|
|
4735
5172
|
"bg-disabledOn": isDisabled && isChecked,
|
|
4736
5173
|
"bg-disabled01": isDisabled && !isChecked,
|
|
4737
5174
|
"bg-interactive01 peer-hover:bg-hover01": !isDisabled && isChecked,
|
|
@@ -4739,16 +5176,16 @@ function Toggle({
|
|
|
4739
5176
|
"w-8 h-4 px-[3px]": size === "small",
|
|
4740
5177
|
"w-12 h-6 px-1": size === "medium" || size === "large"
|
|
4741
5178
|
});
|
|
4742
|
-
const inputClasses =
|
|
5179
|
+
const inputClasses = clsx57(
|
|
4743
5180
|
"peer absolute inset-0 z-[1] opacity-0",
|
|
4744
5181
|
isDisabled ? "cursor-not-allowed" : "cursor-pointer"
|
|
4745
5182
|
);
|
|
4746
|
-
const indicatorClasses =
|
|
5183
|
+
const indicatorClasses = clsx57("rounded-full bg-iconOnColor", {
|
|
4747
5184
|
"w-2.5 h-2.5": size === "small",
|
|
4748
5185
|
"w-4 h-4": size === "medium" || size === "large",
|
|
4749
5186
|
"ml-auto": isChecked
|
|
4750
5187
|
});
|
|
4751
|
-
const labelClasses =
|
|
5188
|
+
const labelClasses = clsx57("break-all", {
|
|
4752
5189
|
"mr-2": labelPosition === "left",
|
|
4753
5190
|
"ml-2": labelPosition === "right",
|
|
4754
5191
|
"typography-label14regular": size === "small" || size === "medium",
|
|
@@ -4756,9 +5193,9 @@ function Toggle({
|
|
|
4756
5193
|
"pointer-events-none cursor-not-allowed text-disabled01": isDisabled,
|
|
4757
5194
|
"cursor-pointer text-text01": !isDisabled
|
|
4758
5195
|
});
|
|
4759
|
-
return /* @__PURE__ */
|
|
4760
|
-
label != null && labelPosition === "left" && /* @__PURE__ */
|
|
4761
|
-
/* @__PURE__ */
|
|
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(
|
|
4762
5199
|
"input",
|
|
4763
5200
|
{
|
|
4764
5201
|
className: inputClasses,
|
|
@@ -4770,8 +5207,8 @@ function Toggle({
|
|
|
4770
5207
|
disabled: isDisabled
|
|
4771
5208
|
}
|
|
4772
5209
|
),
|
|
4773
|
-
/* @__PURE__ */
|
|
4774
|
-
label != null && labelPosition === "right" && /* @__PURE__ */
|
|
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 })
|
|
4775
5212
|
] });
|
|
4776
5213
|
}
|
|
4777
5214
|
|
|
@@ -4780,13 +5217,13 @@ import { useCallback as useCallback18, useEffect as useEffect14, useRef as useRe
|
|
|
4780
5217
|
import { createPortal as createPortal4 } from "react-dom";
|
|
4781
5218
|
|
|
4782
5219
|
// src/tooltip/tooltip-content.tsx
|
|
4783
|
-
import
|
|
5220
|
+
import clsx59 from "clsx";
|
|
4784
5221
|
|
|
4785
5222
|
// src/tooltip/tail-icon.tsx
|
|
4786
|
-
import
|
|
4787
|
-
import { jsx as
|
|
5223
|
+
import clsx58 from "clsx";
|
|
5224
|
+
import { jsx as jsx80 } from "react/jsx-runtime";
|
|
4788
5225
|
var TailIcon = (props) => {
|
|
4789
|
-
const tailClasses =
|
|
5226
|
+
const tailClasses = clsx58("absolute fill-uiBackgroundTooltip", {
|
|
4790
5227
|
"rotate-180": props.verticalPosition === "bottom",
|
|
4791
5228
|
"rotate-0": props.verticalPosition !== "bottom",
|
|
4792
5229
|
"-top-1": props.verticalPosition === "bottom" && props.size === "small",
|
|
@@ -4801,9 +5238,9 @@ var TailIcon = (props) => {
|
|
|
4801
5238
|
"left-1/2 -translate-x-2": props.horizontalAlign === "center" && props.size !== "small"
|
|
4802
5239
|
});
|
|
4803
5240
|
if (props.size === "small") {
|
|
4804
|
-
return /* @__PURE__ */
|
|
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" }) });
|
|
4805
5242
|
} else {
|
|
4806
|
-
return /* @__PURE__ */
|
|
5243
|
+
return /* @__PURE__ */ jsx80(
|
|
4807
5244
|
"svg",
|
|
4808
5245
|
{
|
|
4809
5246
|
className: tailClasses,
|
|
@@ -4812,14 +5249,14 @@ var TailIcon = (props) => {
|
|
|
4812
5249
|
viewBox: "0 0 14 8",
|
|
4813
5250
|
fill: "none",
|
|
4814
5251
|
xmlns: "http://www.w3.org/2000/svg",
|
|
4815
|
-
children: /* @__PURE__ */
|
|
5252
|
+
children: /* @__PURE__ */ jsx80("path", { d: "M7 8L0 0H14L7 8Z" })
|
|
4816
5253
|
}
|
|
4817
5254
|
);
|
|
4818
5255
|
}
|
|
4819
5256
|
};
|
|
4820
5257
|
|
|
4821
5258
|
// src/tooltip/tooltip-content.tsx
|
|
4822
|
-
import { jsx as
|
|
5259
|
+
import { jsx as jsx81, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
4823
5260
|
var TooltipContent = ({
|
|
4824
5261
|
content,
|
|
4825
5262
|
horizontalAlign,
|
|
@@ -4829,7 +5266,7 @@ var TooltipContent = ({
|
|
|
4829
5266
|
maxWidth,
|
|
4830
5267
|
isPortal = false
|
|
4831
5268
|
}) => {
|
|
4832
|
-
const tooltipWrapperClasses =
|
|
5269
|
+
const tooltipWrapperClasses = clsx59("absolute z-tooltip m-auto flex", {
|
|
4833
5270
|
"top-0": !isPortal && verticalPosition === "top",
|
|
4834
5271
|
"bottom-0": !isPortal && verticalPosition === "bottom",
|
|
4835
5272
|
"justify-start": horizontalAlign === "left",
|
|
@@ -4838,7 +5275,7 @@ var TooltipContent = ({
|
|
|
4838
5275
|
"w-[24px]": size === "small",
|
|
4839
5276
|
"w-[46px]": size !== "small"
|
|
4840
5277
|
});
|
|
4841
|
-
const tooltipBodyClasses =
|
|
5278
|
+
const tooltipBodyClasses = clsx59(
|
|
4842
5279
|
"absolute z-tooltip inline-block w-max rounded bg-uiBackgroundTooltip text-textOnColor",
|
|
4843
5280
|
{
|
|
4844
5281
|
"typography-body12regular": size === "small",
|
|
@@ -4855,7 +5292,7 @@ var TooltipContent = ({
|
|
|
4855
5292
|
transform: `translate(${tooltipPosition.translateX}, ${tooltipPosition.translateY})`,
|
|
4856
5293
|
...tooltipPosition
|
|
4857
5294
|
} : {};
|
|
4858
|
-
return /* @__PURE__ */
|
|
5295
|
+
return /* @__PURE__ */ jsx81("div", { className: tooltipWrapperClasses, style: tooltipWrapperStyle, children: /* @__PURE__ */ jsxs38(
|
|
4859
5296
|
"div",
|
|
4860
5297
|
{
|
|
4861
5298
|
className: tooltipBodyClasses,
|
|
@@ -4864,7 +5301,7 @@ var TooltipContent = ({
|
|
|
4864
5301
|
},
|
|
4865
5302
|
children: [
|
|
4866
5303
|
content,
|
|
4867
|
-
/* @__PURE__ */
|
|
5304
|
+
/* @__PURE__ */ jsx81(TailIcon, { size, verticalPosition, horizontalAlign })
|
|
4868
5305
|
]
|
|
4869
5306
|
}
|
|
4870
5307
|
) });
|
|
@@ -4925,7 +5362,7 @@ var useTooltip = () => {
|
|
|
4925
5362
|
};
|
|
4926
5363
|
|
|
4927
5364
|
// src/tooltip/tooltip.tsx
|
|
4928
|
-
import { jsx as
|
|
5365
|
+
import { jsx as jsx82, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
4929
5366
|
function Tooltip({
|
|
4930
5367
|
children,
|
|
4931
5368
|
content,
|
|
@@ -4995,7 +5432,7 @@ function Tooltip({
|
|
|
4995
5432
|
window.removeEventListener("resize", updatePosition);
|
|
4996
5433
|
};
|
|
4997
5434
|
}, [isVisible, calculatePosition, maxWidth, verticalPosition, horizontalAlign, size]);
|
|
4998
|
-
return /* @__PURE__ */
|
|
5435
|
+
return /* @__PURE__ */ jsxs39(
|
|
4999
5436
|
"div",
|
|
5000
5437
|
{
|
|
5001
5438
|
ref: targetRef,
|
|
@@ -5004,7 +5441,7 @@ function Tooltip({
|
|
|
5004
5441
|
onMouseLeave: handleMouseOutWrapper,
|
|
5005
5442
|
children: [
|
|
5006
5443
|
children,
|
|
5007
|
-
isVisible && (portalTarget == null ? /* @__PURE__ */
|
|
5444
|
+
isVisible && (portalTarget == null ? /* @__PURE__ */ jsx82(
|
|
5008
5445
|
TooltipContent,
|
|
5009
5446
|
{
|
|
5010
5447
|
content,
|
|
@@ -5015,7 +5452,7 @@ function Tooltip({
|
|
|
5015
5452
|
tooltipPosition
|
|
5016
5453
|
}
|
|
5017
5454
|
) : createPortal4(
|
|
5018
|
-
/* @__PURE__ */
|
|
5455
|
+
/* @__PURE__ */ jsx82(
|
|
5019
5456
|
TooltipContent,
|
|
5020
5457
|
{
|
|
5021
5458
|
isPortal: true,
|
|
@@ -5059,6 +5496,7 @@ export {
|
|
|
5059
5496
|
PopoverTrigger,
|
|
5060
5497
|
Popup,
|
|
5061
5498
|
Radio,
|
|
5499
|
+
RadioCard,
|
|
5062
5500
|
Search,
|
|
5063
5501
|
SegmentedControl,
|
|
5064
5502
|
Select,
|
|
@@ -5073,10 +5511,13 @@ export {
|
|
|
5073
5511
|
Tag,
|
|
5074
5512
|
TextArea,
|
|
5075
5513
|
TextInput,
|
|
5514
|
+
TimePicker,
|
|
5076
5515
|
Toast,
|
|
5077
5516
|
ToastProvider,
|
|
5078
5517
|
Toggle,
|
|
5079
5518
|
Tooltip,
|
|
5519
|
+
formatTime,
|
|
5520
|
+
parseTime,
|
|
5080
5521
|
useOutsideClick,
|
|
5081
5522
|
useRovingFocus,
|
|
5082
5523
|
useToast
|