@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.d.mts +146 -5
- package/dist/index.d.ts +146 -5
- package/dist/index.js +737 -294
- package/dist/index.mjs +683 -244
- package/package.json +4 -4
- package/vitest.setup.ts +6 -0
package/dist/index.mjs
CHANGED
|
@@ -665,9 +665,9 @@ function ComboboxInput({ autoFocus, children }) {
|
|
|
665
665
|
setInputElementRef,
|
|
666
666
|
handleKeyDown,
|
|
667
667
|
handleInputBlur,
|
|
668
|
-
|
|
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
|
-
|
|
690
|
-
}, [
|
|
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
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
2981
|
-
|
|
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
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
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
|
|
3808
|
+
import { clsx as clsx36 } from "clsx";
|
|
3606
3809
|
import { forwardRef as forwardRef12 } from "react";
|
|
3607
|
-
import { jsx as
|
|
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 =
|
|
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 =
|
|
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__ */
|
|
3619
|
-
/* @__PURE__ */
|
|
3620
|
-
/* @__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(
|
|
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__ */
|
|
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
|
|
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
|
|
3650
|
-
var SegmentedControlContext =
|
|
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
|
|
3654
|
-
import { clsx as
|
|
3655
|
-
import { useContext as
|
|
3656
|
-
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";
|
|
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 =
|
|
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 =
|
|
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__ */
|
|
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__ */
|
|
3935
|
+
Boolean(icon) === true && icon && /* @__PURE__ */ jsx56(
|
|
3733
3936
|
"span",
|
|
3734
3937
|
{
|
|
3735
|
-
className:
|
|
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__ */
|
|
3943
|
+
children: /* @__PURE__ */ jsx56(Icon, { name: icon, size: "small" })
|
|
3741
3944
|
}
|
|
3742
3945
|
),
|
|
3743
|
-
Boolean(label) === true && /* @__PURE__ */
|
|
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
|
|
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 =
|
|
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 =
|
|
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__ */
|
|
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
|
|
3813
|
-
import
|
|
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
|
|
3818
|
-
import
|
|
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
|
|
3822
|
-
import
|
|
3823
|
-
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";
|
|
3824
4027
|
function SelectItem2({ children, isSortKey, size, onClickItem }) {
|
|
3825
|
-
const itemClasses =
|
|
4028
|
+
const itemClasses = clsx38(
|
|
3826
4029
|
"typography-label14regular flex w-full items-center px-3 hover:bg-hover02 active:bg-active02",
|
|
3827
|
-
|
|
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__ */
|
|
3836
|
-
/* @__PURE__ */
|
|
3837
|
-
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" }) })
|
|
3838
4041
|
] }) });
|
|
3839
4042
|
}
|
|
3840
4043
|
|
|
3841
4044
|
// src/select-sort/select-list.tsx
|
|
3842
|
-
import { jsx as
|
|
4045
|
+
import { jsx as jsx59, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
3843
4046
|
function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect }) {
|
|
3844
|
-
const listClasses =
|
|
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 =
|
|
4056
|
+
const deselectButtonClasses = clsx39(
|
|
3854
4057
|
"typography-label14regular flex w-full items-center px-3 text-interactive02 hover:bg-hover02 active:bg-active02",
|
|
3855
|
-
|
|
4058
|
+
focusVisible16.inset,
|
|
3856
4059
|
{
|
|
3857
4060
|
"h-8": size !== "large",
|
|
3858
4061
|
"h-10": size === "large"
|
|
3859
4062
|
}
|
|
3860
4063
|
);
|
|
3861
|
-
return /* @__PURE__ */
|
|
3862
|
-
/* @__PURE__ */
|
|
3863
|
-
/* @__PURE__ */
|
|
3864
|
-
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" }) })
|
|
3865
4068
|
] });
|
|
3866
4069
|
}
|
|
3867
4070
|
|
|
3868
4071
|
// src/select-sort/select-sort.tsx
|
|
3869
|
-
import { jsx as
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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__ */
|
|
3925
|
-
/* @__PURE__ */
|
|
3926
|
-
/* @__PURE__ */
|
|
3927
|
-
/* @__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(
|
|
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__ */
|
|
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__ */
|
|
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
|
|
3956
|
-
import
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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__ */
|
|
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__ */
|
|
4019
|
-
/* @__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" }) })
|
|
4020
4223
|
]
|
|
4021
4224
|
}
|
|
4022
4225
|
) });
|
|
4023
4226
|
}
|
|
4024
4227
|
|
|
4025
4228
|
// src/steps/steps.tsx
|
|
4026
|
-
import { clsx as
|
|
4027
|
-
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";
|
|
4028
4231
|
|
|
4029
4232
|
// src/steps/steps-context.ts
|
|
4030
|
-
import { createContext as
|
|
4031
|
-
var StepsContext =
|
|
4233
|
+
import { createContext as createContext14, useContext as useContext17 } from "react";
|
|
4234
|
+
var StepsContext = createContext14(null);
|
|
4032
4235
|
function useStepsContext() {
|
|
4033
|
-
const context =
|
|
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
|
|
4244
|
+
import { clsx as clsx43 } from "clsx";
|
|
4042
4245
|
|
|
4043
4246
|
// src/steps/steps-item-context.ts
|
|
4044
|
-
import { createContext as
|
|
4045
|
-
var StepsItemContext =
|
|
4247
|
+
import { createContext as createContext15, useContext as useContext18 } from "react";
|
|
4248
|
+
var StepsItemContext = createContext15(null);
|
|
4046
4249
|
function useStepsItemContext() {
|
|
4047
|
-
const context =
|
|
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
|
|
4056
|
-
import { jsx as
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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__ */
|
|
4113
|
-
const circle = /* @__PURE__ */
|
|
4114
|
-
const labelBlock = /* @__PURE__ */
|
|
4115
|
-
/* @__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(
|
|
4116
4319
|
"span",
|
|
4117
4320
|
{
|
|
4118
|
-
className:
|
|
4321
|
+
className: clsx43(
|
|
4119
4322
|
"whitespace-nowrap text-text01",
|
|
4120
4323
|
size === "large" ? "typography-body16regular" : "typography-body14regular"
|
|
4121
4324
|
),
|
|
4122
4325
|
children: [
|
|
4123
|
-
/* @__PURE__ */
|
|
4326
|
+
/* @__PURE__ */ jsx63("span", { className: "sr-only", children: progressSrOnlyLabel[state.progress] }),
|
|
4124
4327
|
label
|
|
4125
4328
|
]
|
|
4126
4329
|
}
|
|
4127
4330
|
),
|
|
4128
|
-
description != null && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
4347
|
+
return /* @__PURE__ */ jsxs30(
|
|
4145
4348
|
"li",
|
|
4146
4349
|
{
|
|
4147
4350
|
...ariaCurrentProps,
|
|
4148
|
-
className:
|
|
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__ */
|
|
4155
|
-
/* @__PURE__ */
|
|
4156
|
-
!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 }) })
|
|
4157
4360
|
]
|
|
4158
4361
|
}
|
|
4159
4362
|
);
|
|
4160
4363
|
}
|
|
4161
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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
|
-
|
|
4188
|
-
if (!
|
|
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 =
|
|
4415
|
+
const baseId = useId7();
|
|
4213
4416
|
const [internalStep] = useState14(defaultCurrentStep ?? 0);
|
|
4214
4417
|
const resolvedCurrentStep = currentStep ?? internalStep;
|
|
4215
|
-
const itemElements =
|
|
4418
|
+
const itemElements = useMemo7(() => collectStepsItems(children), [children]);
|
|
4216
4419
|
const stepsCount = itemElements.length;
|
|
4217
|
-
const contextValue =
|
|
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__ */
|
|
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__ */
|
|
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 =
|
|
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__ */
|
|
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
|
|
4270
|
-
import { Children as
|
|
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
|
|
4274
|
-
import { jsx as
|
|
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 =
|
|
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 =
|
|
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__ */
|
|
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__ */
|
|
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
|
|
4510
|
+
import { jsx as jsx66 } from "react/jsx-runtime";
|
|
4308
4511
|
function Tab({ children, layout = "auto" }) {
|
|
4309
|
-
const childrenCount =
|
|
4512
|
+
const childrenCount = Children8.count(children);
|
|
4310
4513
|
const containerStyle = layout === "equal" ? { gridTemplateColumns: `repeat(${childrenCount}, minmax(0,1fr))` } : {};
|
|
4311
|
-
const containerClasses =
|
|
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__ */
|
|
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
|
|
4324
|
-
import { jsx as
|
|
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 =
|
|
4327
|
-
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 });
|
|
4328
4531
|
}
|
|
4329
4532
|
|
|
4330
4533
|
// src/table/table-row.tsx
|
|
4331
|
-
import
|
|
4332
|
-
import { jsx as
|
|
4534
|
+
import clsx48 from "clsx";
|
|
4535
|
+
import { jsx as jsx68 } from "react/jsx-runtime";
|
|
4333
4536
|
function TableRow({ children, isHoverBackgroundVisible = false }) {
|
|
4334
|
-
const rowClasses =
|
|
4335
|
-
return /* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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
|
|
4571
|
+
import clsx50 from "clsx";
|
|
4369
4572
|
|
|
4370
4573
|
// src/tag/delete-icon.tsx
|
|
4371
|
-
import { focusVisible as
|
|
4372
|
-
import
|
|
4373
|
-
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";
|
|
4374
4577
|
var DeleteIcon = ({ color, variant, onClick }) => {
|
|
4375
|
-
const deleteButtonClasses =
|
|
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
|
-
|
|
4580
|
+
focusVisible19.normal
|
|
4378
4581
|
);
|
|
4379
|
-
const deletePathClasses =
|
|
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__ */
|
|
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
|
|
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 =
|
|
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__ */
|
|
4611
|
+
return /* @__PURE__ */ jsxs32("div", { className: wrapperClasses, children: [
|
|
4409
4612
|
children,
|
|
4410
|
-
isEditable ? /* @__PURE__ */
|
|
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
|
|
4416
|
-
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";
|
|
4417
4620
|
|
|
4418
4621
|
// src/text-area/text-area-context.tsx
|
|
4419
|
-
import { createContext as
|
|
4420
|
-
var TextAreaCompoundContext =
|
|
4622
|
+
import { createContext as createContext16, useContext as useContext19 } from "react";
|
|
4623
|
+
var TextAreaCompoundContext = createContext16(null);
|
|
4421
4624
|
var useTextAreaCompoundContext = (componentName) => {
|
|
4422
|
-
const context =
|
|
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
|
|
4633
|
+
import { clsx as clsx51 } from "clsx";
|
|
4431
4634
|
import { forwardRef as forwardRef13 } from "react";
|
|
4432
|
-
import { jsx as
|
|
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 =
|
|
4442
|
-
return /* @__PURE__ */
|
|
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
|
|
4651
|
+
import { clsx as clsx52 } from "clsx";
|
|
4449
4652
|
import { forwardRef as forwardRef14 } from "react";
|
|
4450
|
-
import { jsx as
|
|
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 =
|
|
4455
|
-
return /* @__PURE__ */
|
|
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
|
|
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 =
|
|
4478
|
-
const textAreaPropsForContext =
|
|
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 =
|
|
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 =
|
|
4497
|
-
if (!
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
4802
|
+
const counterElement = isCounterVisible ? /* @__PURE__ */ jsx74(
|
|
4600
4803
|
"div",
|
|
4601
4804
|
{
|
|
4602
4805
|
id: counterId,
|
|
4603
|
-
className:
|
|
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 ? [] :
|
|
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__ */
|
|
4819
|
+
return /* @__PURE__ */ jsx74(TextAreaCompoundContext.Provider, { value: contextValue, children: textAreaElement });
|
|
4617
4820
|
}
|
|
4618
|
-
return /* @__PURE__ */
|
|
4821
|
+
return /* @__PURE__ */ jsx74(TextAreaCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs33("div", { className: "flex flex-col gap-2", children: [
|
|
4619
4822
|
textAreaElement,
|
|
4620
|
-
/* @__PURE__ */
|
|
4621
|
-
hasMessageChildren && /* @__PURE__ */
|
|
4622
|
-
!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" }),
|
|
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
|
|
5074
|
+
import clsx56 from "clsx";
|
|
4640
5075
|
import { useCallback as useCallback15, useEffect as useEffect12, useState as useState15 } from "react";
|
|
4641
|
-
import { jsx as
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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__ */
|
|
4689
|
-
/* @__PURE__ */
|
|
4690
|
-
/* @__PURE__ */
|
|
4691
|
-
/* @__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 })
|
|
4692
5127
|
] });
|
|
4693
5128
|
}
|
|
4694
5129
|
|
|
4695
5130
|
// src/toast/toast-provider.tsx
|
|
4696
|
-
import { createContext as
|
|
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
|
|
4699
|
-
var ToastContext =
|
|
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__ */
|
|
5147
|
+
return /* @__PURE__ */ jsxs36(ToastContext.Provider, { value: { addToast, removeToast }, children: [
|
|
4713
5148
|
children,
|
|
4714
5149
|
isClientRender && createPortal3(
|
|
4715
|
-
/* @__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)) }),
|
|
4716
5151
|
document.body
|
|
4717
5152
|
)
|
|
4718
5153
|
] });
|
|
4719
5154
|
};
|
|
4720
5155
|
var useToast = () => {
|
|
4721
|
-
return
|
|
5156
|
+
return useContext21(ToastContext);
|
|
4722
5157
|
};
|
|
4723
5158
|
|
|
4724
5159
|
// src/toggle/toggle.tsx
|
|
4725
|
-
import
|
|
4726
|
-
import { jsx as
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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__ */
|
|
4762
|
-
label != null && labelPosition === "left" && /* @__PURE__ */
|
|
4763
|
-
/* @__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(
|
|
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__ */
|
|
4776
|
-
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 })
|
|
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
|
|
5220
|
+
import clsx59 from "clsx";
|
|
4786
5221
|
|
|
4787
5222
|
// src/tooltip/tail-icon.tsx
|
|
4788
|
-
import
|
|
4789
|
-
import { jsx as
|
|
5223
|
+
import clsx58 from "clsx";
|
|
5224
|
+
import { jsx as jsx80 } from "react/jsx-runtime";
|
|
4790
5225
|
var TailIcon = (props) => {
|
|
4791
|
-
const tailClasses =
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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 =
|
|
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 =
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|