@zenkigen-inc/component-ui 1.21.1 → 1.23.1
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 +175 -17
- package/dist/index.d.ts +175 -17
- package/dist/index.js +920 -327
- package/dist/index.mjs +872 -283
- package/package.json +5 -5
- package/vitest.setup.ts +6 -0
package/dist/index.js
CHANGED
|
@@ -55,6 +55,7 @@ __export(index_exports, {
|
|
|
55
55
|
PopoverTrigger: () => PopoverTrigger,
|
|
56
56
|
Popup: () => Popup,
|
|
57
57
|
Radio: () => Radio,
|
|
58
|
+
RadioCard: () => RadioCard,
|
|
58
59
|
Search: () => Search,
|
|
59
60
|
SegmentedControl: () => SegmentedControl,
|
|
60
61
|
Select: () => Select,
|
|
@@ -69,10 +70,13 @@ __export(index_exports, {
|
|
|
69
70
|
Tag: () => Tag,
|
|
70
71
|
TextArea: () => TextArea,
|
|
71
72
|
TextInput: () => TextInput,
|
|
73
|
+
TimePicker: () => TimePicker,
|
|
72
74
|
Toast: () => Toast,
|
|
73
75
|
ToastProvider: () => ToastProvider,
|
|
74
76
|
Toggle: () => Toggle,
|
|
75
77
|
Tooltip: () => Tooltip,
|
|
78
|
+
formatTime: () => formatTime,
|
|
79
|
+
parseTime: () => parseTime,
|
|
76
80
|
useOutsideClick: () => useOutsideClick,
|
|
77
81
|
useRovingFocus: () => useRovingFocus,
|
|
78
82
|
useToast: () => useToast
|
|
@@ -1743,6 +1747,7 @@ var PopoverTrigger = (0, import_react24.forwardRef)(function PopoverTrigger2({ c
|
|
|
1743
1747
|
|
|
1744
1748
|
// src/popover/popover.tsx
|
|
1745
1749
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1750
|
+
var FLOATING_VIEWPORT_PADDING2 = 8;
|
|
1746
1751
|
function Popover({
|
|
1747
1752
|
isOpen,
|
|
1748
1753
|
children,
|
|
@@ -1752,6 +1757,14 @@ function Popover({
|
|
|
1752
1757
|
anchorRef
|
|
1753
1758
|
}) {
|
|
1754
1759
|
const triggerRef = (0, import_react26.useRef)(null);
|
|
1760
|
+
const middleware = (0, import_react26.useMemo)(
|
|
1761
|
+
() => [
|
|
1762
|
+
(0, import_react25.offset)(offsetValue),
|
|
1763
|
+
(0, import_react25.flip)({ padding: FLOATING_VIEWPORT_PADDING2, flipAlignment: false }),
|
|
1764
|
+
(0, import_react25.shift)({ padding: FLOATING_VIEWPORT_PADDING2 })
|
|
1765
|
+
],
|
|
1766
|
+
[offsetValue]
|
|
1767
|
+
);
|
|
1755
1768
|
const floating = (0, import_react25.useFloating)({
|
|
1756
1769
|
open: isOpen,
|
|
1757
1770
|
onOpenChange: (open) => {
|
|
@@ -1760,7 +1773,7 @@ function Popover({
|
|
|
1760
1773
|
}
|
|
1761
1774
|
},
|
|
1762
1775
|
placement,
|
|
1763
|
-
middleware
|
|
1776
|
+
middleware,
|
|
1764
1777
|
whileElementsMounted: import_react25.autoUpdate,
|
|
1765
1778
|
strategy: "fixed"
|
|
1766
1779
|
});
|
|
@@ -1808,27 +1821,83 @@ var import_react_day_picker2 = require("react-day-picker");
|
|
|
1808
1821
|
var import_clsx15 = require("clsx");
|
|
1809
1822
|
var import_react_day_picker = require("react-day-picker");
|
|
1810
1823
|
var defaultDayPickerClassNames = (0, import_react_day_picker.getDefaultClassNames)();
|
|
1811
|
-
var
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1824
|
+
var BASE_TOKENS = {
|
|
1825
|
+
triggerIcon: "small",
|
|
1826
|
+
dayPickerStyle: {
|
|
1827
|
+
"--rdp-nav-height": "30px",
|
|
1828
|
+
"--rdp-day-width": "30px",
|
|
1829
|
+
"--rdp-day-height": "30px",
|
|
1830
|
+
"--rdp-day_button-width": "28px",
|
|
1831
|
+
"--rdp-day_button-height": "28px",
|
|
1832
|
+
"--rdp-day_button-border": "1px solid transparent",
|
|
1833
|
+
"--rdp-weekday-padding": "0px",
|
|
1834
|
+
fontFamily: "Arial, 'Noto Sans JP', sans-serif",
|
|
1835
|
+
fontSize: "12px",
|
|
1836
|
+
fontWeight: 700
|
|
1837
|
+
},
|
|
1838
|
+
dayPickerClassNames: {
|
|
1839
|
+
month: (0, import_clsx15.clsx)(defaultDayPickerClassNames.month, "flex flex-col px-[7px] py-2")
|
|
1840
|
+
},
|
|
1841
|
+
dayButtonClass: "relative grid size-full place-items-center rounded-full !border !border-solid",
|
|
1842
|
+
dayButtonFontSize: "12px",
|
|
1843
|
+
monthCaptionClass: "flex items-center justify-between px-1 pb-0.5",
|
|
1844
|
+
monthCaptionTypography: "typography-label12bold",
|
|
1845
|
+
navIconButton: "small",
|
|
1846
|
+
weekdayClass: "m-0 size-7 p-0 text-center align-middle",
|
|
1847
|
+
footerIconButton: "medium",
|
|
1848
|
+
footerClearButton: "small",
|
|
1849
|
+
errorTypography: "typography-label11regular"
|
|
1850
|
+
};
|
|
1851
|
+
var LARGE_TOKENS = {
|
|
1852
|
+
...BASE_TOKENS,
|
|
1853
|
+
triggerIcon: "medium",
|
|
1854
|
+
errorTypography: "typography-label12regular"
|
|
1855
|
+
};
|
|
1856
|
+
var X_LARGE_TOKENS = {
|
|
1857
|
+
triggerIcon: "medium",
|
|
1858
|
+
dayPickerStyle: {
|
|
1859
|
+
"--rdp-nav-height": "40px",
|
|
1860
|
+
"--rdp-day-width": "48px",
|
|
1861
|
+
"--rdp-day-height": "48px",
|
|
1862
|
+
"--rdp-day_button-width": "40px",
|
|
1863
|
+
"--rdp-day_button-height": "40px",
|
|
1864
|
+
"--rdp-day_button-border": "1px solid transparent",
|
|
1865
|
+
"--rdp-weekday-padding": "0px",
|
|
1866
|
+
fontFamily: "Arial, 'Noto Sans JP', sans-serif",
|
|
1867
|
+
fontSize: "16px",
|
|
1868
|
+
fontWeight: 700
|
|
1869
|
+
},
|
|
1870
|
+
dayPickerClassNames: {
|
|
1871
|
+
month: (0, import_clsx15.clsx)(defaultDayPickerClassNames.month, "flex flex-col px-[3px] pb-1 pt-2")
|
|
1872
|
+
},
|
|
1873
|
+
dayButtonClass: "relative grid size-10 place-items-center rounded-full !border !border-solid",
|
|
1874
|
+
dayButtonFontSize: "16px",
|
|
1875
|
+
// caption は height 固定(--rdp-nav-height: 40px)のため pb-2 は食い込みとして働き、
|
|
1876
|
+
// ナビボタンが上へ 4px はみ出して月ヘッダーと曜日行の視覚間隔が 8px になる(上部ブロックコメント参照)
|
|
1877
|
+
monthCaptionClass: "flex items-center justify-between px-1 pb-2",
|
|
1878
|
+
monthCaptionTypography: "typography-label16bold",
|
|
1879
|
+
// IconButton に x-large は無いが、large が 40px で Figma と一致する(内部アイコンも 24px になる)
|
|
1880
|
+
navIconButton: "large",
|
|
1881
|
+
weekdayClass: "m-0 size-12 p-0 text-center align-middle",
|
|
1882
|
+
footerIconButton: "large",
|
|
1883
|
+
footerClearButton: "large",
|
|
1884
|
+
errorTypography: "typography-label12regular"
|
|
1885
|
+
};
|
|
1886
|
+
var DATE_PICKER_SIZE_TOKENS = {
|
|
1887
|
+
small: BASE_TOKENS,
|
|
1888
|
+
medium: BASE_TOKENS,
|
|
1889
|
+
large: LARGE_TOKENS,
|
|
1890
|
+
"x-large": X_LARGE_TOKENS
|
|
1823
1891
|
};
|
|
1824
|
-
var
|
|
1825
|
-
|
|
1892
|
+
var useDatePickerSizeTokens = (componentName = "DatePicker \u306E\u30AB\u30EC\u30F3\u30C0\u30FC") => {
|
|
1893
|
+
const context = useDatePickerCompoundContext(componentName);
|
|
1894
|
+
return { ...context, tokens: DATE_PICKER_SIZE_TOKENS[context.size] };
|
|
1826
1895
|
};
|
|
1827
|
-
var dayButtonBaseClass = "relative grid size-full place-items-center rounded-full !border !border-solid";
|
|
1828
1896
|
|
|
1829
1897
|
// src/date-picker/date-picker-day-button.tsx
|
|
1830
1898
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1831
1899
|
var CustomDayButton = ({ day, modifiers, className, style, ...buttonProps }) => {
|
|
1900
|
+
const { tokens } = useDatePickerSizeTokens();
|
|
1832
1901
|
const isSelected = Boolean(modifiers.selected);
|
|
1833
1902
|
const isOutside = Boolean(modifiers.outside);
|
|
1834
1903
|
const isMinMaxDisabled = Boolean(modifiers.minMaxDisabled);
|
|
@@ -1841,10 +1910,10 @@ var CustomDayButton = ({ day, modifiers, className, style, ...buttonProps }) =>
|
|
|
1841
1910
|
...buttonProps,
|
|
1842
1911
|
day,
|
|
1843
1912
|
modifiers,
|
|
1844
|
-
style: { ...style, fontSize:
|
|
1913
|
+
style: { ...style, fontSize: tokens.dayButtonFontSize },
|
|
1845
1914
|
className: (0, import_clsx16.clsx)(
|
|
1846
1915
|
className,
|
|
1847
|
-
|
|
1916
|
+
tokens.dayButtonClass,
|
|
1848
1917
|
// 共通: フォーカスリング(有効な日のみ)
|
|
1849
1918
|
// react-day-picker の rdp-day_button クラスが outline: none を設定しているため、!important で上書き
|
|
1850
1919
|
!isDisabledDay && import_component_theme6.focusVisible.normalImportant,
|
|
@@ -1870,8 +1939,8 @@ var import_react28 = require("react");
|
|
|
1870
1939
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1871
1940
|
var DatePickerErrorMessage = (0, import_react28.forwardRef)(
|
|
1872
1941
|
({ "aria-live": ariaLive = "assertive", ...props }, ref) => {
|
|
1873
|
-
const {
|
|
1874
|
-
const typographyClass =
|
|
1942
|
+
const { isError, tokens } = useDatePickerSizeTokens("DatePicker.ErrorMessage");
|
|
1943
|
+
const typographyClass = tokens.errorTypography;
|
|
1875
1944
|
if (isError !== true) {
|
|
1876
1945
|
return null;
|
|
1877
1946
|
}
|
|
@@ -1952,11 +2021,12 @@ var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
|
1952
2021
|
var CustomMonthCaption = ({ calendarMonth, className, displayIndex, style, ...props }) => {
|
|
1953
2022
|
void displayIndex;
|
|
1954
2023
|
const { goToMonth, nextMonth, previousMonth } = (0, import_react_day_picker3.useDayPicker)();
|
|
2024
|
+
const { tokens } = useDatePickerSizeTokens();
|
|
1955
2025
|
const captionMonth = calendarMonth.date;
|
|
1956
2026
|
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
1957
2027
|
"div",
|
|
1958
2028
|
{
|
|
1959
|
-
className: (0, import_clsx18.clsx)(
|
|
2029
|
+
className: (0, import_clsx18.clsx)(tokens.monthCaptionClass, className),
|
|
1960
2030
|
style: { ...style, fontSize: "inherit", fontWeight: "inherit" },
|
|
1961
2031
|
...props,
|
|
1962
2032
|
children: [
|
|
@@ -1964,19 +2034,19 @@ var CustomMonthCaption = ({ calendarMonth, className, displayIndex, style, ...pr
|
|
|
1964
2034
|
IconButton,
|
|
1965
2035
|
{
|
|
1966
2036
|
icon: "angle-left",
|
|
1967
|
-
size:
|
|
2037
|
+
size: tokens.navIconButton,
|
|
1968
2038
|
variant: "text",
|
|
1969
2039
|
isDisabled: !previousMonth,
|
|
1970
2040
|
"aria-label": "\u524D\u306E\u6708",
|
|
1971
2041
|
onClick: () => previousMonth && goToMonth(previousMonth)
|
|
1972
2042
|
}
|
|
1973
2043
|
),
|
|
1974
|
-
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "
|
|
2044
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: (0, import_clsx18.clsx)(tokens.monthCaptionTypography, "text-text02"), children: formatMonthLabel(captionMonth) }),
|
|
1975
2045
|
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1976
2046
|
IconButton,
|
|
1977
2047
|
{
|
|
1978
2048
|
icon: "angle-right",
|
|
1979
|
-
size:
|
|
2049
|
+
size: tokens.navIconButton,
|
|
1980
2050
|
variant: "text",
|
|
1981
2051
|
isDisabled: !nextMonth,
|
|
1982
2052
|
"aria-label": "\u6B21\u306E\u6708",
|
|
@@ -1992,11 +2062,12 @@ var CustomMonthCaption = ({ calendarMonth, className, displayIndex, style, ...pr
|
|
|
1992
2062
|
var import_clsx19 = require("clsx");
|
|
1993
2063
|
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
1994
2064
|
var CustomWeekday = ({ className, children, style, ...props }) => {
|
|
2065
|
+
const { tokens } = useDatePickerSizeTokens();
|
|
1995
2066
|
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1996
2067
|
"th",
|
|
1997
2068
|
{
|
|
1998
2069
|
...props,
|
|
1999
|
-
className: (0, import_clsx19.clsx)(className, "
|
|
2070
|
+
className: (0, import_clsx19.clsx)(className, tokens.weekdayClass, "text-text02"),
|
|
2000
2071
|
style: { ...style, fontSize: "inherit", fontWeight: "bold" },
|
|
2001
2072
|
children
|
|
2002
2073
|
}
|
|
@@ -2131,7 +2202,7 @@ var DatePicker = ({
|
|
|
2131
2202
|
formatWeekdayName: (date) => weekdayFormatter.format(date)
|
|
2132
2203
|
};
|
|
2133
2204
|
}, []);
|
|
2134
|
-
const
|
|
2205
|
+
const tokens = DATE_PICKER_SIZE_TOKENS[size];
|
|
2135
2206
|
const displayText = value ? formatDisplayDate(value, timeZone) : placeholder;
|
|
2136
2207
|
const displayTextClasses = "min-w-0 truncate";
|
|
2137
2208
|
const errorIds = [];
|
|
@@ -2179,7 +2250,7 @@ var DatePicker = ({
|
|
|
2179
2250
|
size,
|
|
2180
2251
|
variant: isError ? "outlineDanger" : "outline",
|
|
2181
2252
|
isDisabled,
|
|
2182
|
-
before: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Icon, { name: "calendar", size:
|
|
2253
|
+
before: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Icon, { name: "calendar", size: tokens.triggerIcon }),
|
|
2183
2254
|
justifyContent: "start",
|
|
2184
2255
|
onClick: handleTriggerClick,
|
|
2185
2256
|
children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: displayTextClasses, children: displayText })
|
|
@@ -2193,7 +2264,7 @@ var DatePicker = ({
|
|
|
2193
2264
|
showOutsideDays: true,
|
|
2194
2265
|
hideNavigation: true,
|
|
2195
2266
|
weekStartsOn: 0,
|
|
2196
|
-
style: dayPickerStyle,
|
|
2267
|
+
style: tokens.dayPickerStyle,
|
|
2197
2268
|
month: displayMonth,
|
|
2198
2269
|
onMonthChange: setDisplayMonth,
|
|
2199
2270
|
selected: selectedDate,
|
|
@@ -2201,7 +2272,7 @@ var DatePicker = ({
|
|
|
2201
2272
|
today: todayForCalendar,
|
|
2202
2273
|
disabled: disabledDays,
|
|
2203
2274
|
modifiers: { minMaxDisabled: isMinMaxDisabled },
|
|
2204
|
-
classNames: dayPickerClassNames,
|
|
2275
|
+
classNames: tokens.dayPickerClassNames,
|
|
2205
2276
|
formatters,
|
|
2206
2277
|
fixedWeeks: true,
|
|
2207
2278
|
components: { MonthCaption: CustomMonthCaption, DayButton: CustomDayButton, Weekday: CustomWeekday }
|
|
@@ -2212,14 +2283,14 @@ var DatePicker = ({
|
|
|
2212
2283
|
IconButton,
|
|
2213
2284
|
{
|
|
2214
2285
|
icon: "calendar-today",
|
|
2215
|
-
size:
|
|
2286
|
+
size: tokens.footerIconButton,
|
|
2216
2287
|
variant: "text",
|
|
2217
2288
|
"aria-label": "\u4ECA\u65E5\u306B\u623B\u308B",
|
|
2218
2289
|
iconAccentColor: "supportInfo",
|
|
2219
2290
|
onClick: handleClickToday
|
|
2220
2291
|
}
|
|
2221
2292
|
),
|
|
2222
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Button, { type: "button", size:
|
|
2293
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Button, { type: "button", size: tokens.footerClearButton, variant: "text", onClick: handleClear, children: "\u30AF\u30EA\u30A2" })
|
|
2223
2294
|
] })
|
|
2224
2295
|
] }) })
|
|
2225
2296
|
] });
|
|
@@ -3039,22 +3110,35 @@ Modal.Footer = ModalFooter;
|
|
|
3039
3110
|
// src/notification-inline/notification-inline.tsx
|
|
3040
3111
|
var import_clsx29 = require("clsx");
|
|
3041
3112
|
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
3042
|
-
function NotificationInline({ state = "default", size = "medium", ...props }) {
|
|
3043
|
-
const
|
|
3113
|
+
function NotificationInline({ state = "default", size = "medium", variant = "default", ...props }) {
|
|
3114
|
+
const isOutline = variant === "outline";
|
|
3115
|
+
const wrapperClasses = (0, import_clsx29.clsx)("typography-body13regular flex items-center gap-1 rounded border text-text01", {
|
|
3044
3116
|
"bg-uiBackgroundError": state === "attention",
|
|
3045
3117
|
"bg-uiBackgroundWarning": state === "warning",
|
|
3046
3118
|
"bg-uiBackgroundBlue": state === "information",
|
|
3047
3119
|
"bg-uiBackgroundSuccess": state === "success",
|
|
3048
3120
|
"bg-uiBackgroundGray": state === "default",
|
|
3049
|
-
|
|
3050
|
-
|
|
3121
|
+
// 1 行時の高さの基準は small が閉じるボタン(24px)、medium がアイコン(24px)。
|
|
3122
|
+
// showClose / state によらず高さが変わらないよう、両サイズとも最小高を確保する
|
|
3123
|
+
"min-h-12 p-[calc(0.75rem_-_1px)]": size === "small",
|
|
3124
|
+
"min-h-14 p-[calc(1rem_-_1px)]": size === "medium",
|
|
3125
|
+
"border-transparent": !isOutline,
|
|
3126
|
+
"border-supportError": isOutline && state === "attention",
|
|
3127
|
+
"border-supportWarning": isOutline && state === "warning",
|
|
3128
|
+
"border-supportInfo": isOutline && state === "information",
|
|
3129
|
+
"border-supportSuccess": isOutline && state === "success",
|
|
3130
|
+
"border-uiBorder04": isOutline && state === "default"
|
|
3051
3131
|
});
|
|
3052
|
-
const iconClasses = (0, import_clsx29.clsx)("flex items-center", {
|
|
3132
|
+
const iconClasses = (0, import_clsx29.clsx)("flex shrink-0 items-center", {
|
|
3133
|
+
"h-5": size === "small",
|
|
3053
3134
|
"fill-supportError": state === "attention",
|
|
3054
3135
|
"fill-supportWarning": state === "warning",
|
|
3055
3136
|
"fill-blue-blue50": state === "information",
|
|
3056
3137
|
"fill-supportSuccess": state === "success"
|
|
3057
3138
|
});
|
|
3139
|
+
const textClasses = (0, import_clsx29.clsx)("flex-1", {
|
|
3140
|
+
"pt-[2px]": size === "medium" && state !== "default"
|
|
3141
|
+
});
|
|
3058
3142
|
const iconName = {
|
|
3059
3143
|
attention: "attention",
|
|
3060
3144
|
success: "success-filled",
|
|
@@ -3066,9 +3150,11 @@ function NotificationInline({ state = "default", size = "medium", ...props }) {
|
|
|
3066
3150
|
medium: "medium"
|
|
3067
3151
|
};
|
|
3068
3152
|
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: wrapperClasses, children: [
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3153
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex flex-1 items-start gap-1", children: [
|
|
3154
|
+
state !== "default" && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: iconClasses, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Icon, { name: iconName[state], size: iconSize[size] }) }),
|
|
3155
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("p", { className: textClasses, children: props.children })
|
|
3156
|
+
] }),
|
|
3157
|
+
props.showClose === true && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "ml-2 flex shrink-0 items-center", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(IconButton, { icon: "close", size: "small", variant: "text", onClick: props.onClickClose }) })
|
|
3072
3158
|
] });
|
|
3073
3159
|
}
|
|
3074
3160
|
|
|
@@ -3280,7 +3366,9 @@ function Select({
|
|
|
3280
3366
|
isOptionSelected = false,
|
|
3281
3367
|
onChange,
|
|
3282
3368
|
optionListMaxHeight,
|
|
3283
|
-
matchListToTrigger = false
|
|
3369
|
+
matchListToTrigger = false,
|
|
3370
|
+
"aria-label": ariaLabel,
|
|
3371
|
+
"aria-describedby": ariaDescribedby
|
|
3284
3372
|
}) {
|
|
3285
3373
|
const [isOptionListOpen, setIsOptionListOpen] = (0, import_react47.useState)(false);
|
|
3286
3374
|
const targetRef = (0, import_react47.useRef)(null);
|
|
@@ -3341,6 +3429,7 @@ function Select({
|
|
|
3341
3429
|
"typography-label14regular": size === "small" || size === "medium",
|
|
3342
3430
|
"typography-label16regular": size === "large"
|
|
3343
3431
|
});
|
|
3432
|
+
const ariaInvalidProps = isError ? { "aria-invalid": true } : {};
|
|
3344
3433
|
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
3345
3434
|
SelectContext.Provider,
|
|
3346
3435
|
{
|
|
@@ -3362,6 +3451,9 @@ function Select({
|
|
|
3362
3451
|
ref: refs.setReference,
|
|
3363
3452
|
className: buttonClasses,
|
|
3364
3453
|
type: "button",
|
|
3454
|
+
"aria-label": ariaLabel,
|
|
3455
|
+
"aria-describedby": ariaDescribedby,
|
|
3456
|
+
...ariaInvalidProps,
|
|
3365
3457
|
onClick: handleClickToggle,
|
|
3366
3458
|
disabled: isDisabled,
|
|
3367
3459
|
children: [
|
|
@@ -3670,23 +3762,207 @@ function Radio({
|
|
|
3670
3762
|
] });
|
|
3671
3763
|
}
|
|
3672
3764
|
|
|
3673
|
-
// src/
|
|
3674
|
-
var
|
|
3765
|
+
// src/radio-card/radio-card.tsx
|
|
3766
|
+
var import_react55 = require("react");
|
|
3767
|
+
|
|
3768
|
+
// src/radio-card/radio-card-context.ts
|
|
3675
3769
|
var import_react53 = require("react");
|
|
3770
|
+
var RadioCardContext = (0, import_react53.createContext)(null);
|
|
3771
|
+
function useRadioCardContext(componentName) {
|
|
3772
|
+
const context = (0, import_react53.useContext)(RadioCardContext);
|
|
3773
|
+
if (context === null) {
|
|
3774
|
+
throw new Error(`<${componentName}> \u306F <RadioCard> \u306E\u5185\u90E8\u3067\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044`);
|
|
3775
|
+
}
|
|
3776
|
+
return context;
|
|
3777
|
+
}
|
|
3778
|
+
|
|
3779
|
+
// src/radio-card/radio-card-error-message.tsx
|
|
3676
3780
|
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
3677
|
-
|
|
3678
|
-
const
|
|
3781
|
+
function RadioCardErrorMessage({ children, id }) {
|
|
3782
|
+
const { isError } = useRadioCardContext("RadioCard.ErrorMessage");
|
|
3783
|
+
if (!isError) {
|
|
3784
|
+
return null;
|
|
3785
|
+
}
|
|
3786
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { id, className: "typography-label13regular text-supportError", "aria-live": "assertive", children });
|
|
3787
|
+
}
|
|
3788
|
+
RadioCardErrorMessage.displayName = "RadioCard.ErrorMessage";
|
|
3789
|
+
|
|
3790
|
+
// src/radio-card/radio-card-group.tsx
|
|
3791
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
3792
|
+
function RadioCardGroup({ children }) {
|
|
3793
|
+
const { ariaLabel, ariaLabelledby, errorDescribedBy } = useRadioCardContext("RadioCard.Group");
|
|
3794
|
+
const describedByProps = errorDescribedBy != null ? { "aria-describedby": errorDescribedBy } : {};
|
|
3795
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
3796
|
+
"div",
|
|
3797
|
+
{
|
|
3798
|
+
role: "radiogroup",
|
|
3799
|
+
"aria-label": ariaLabel,
|
|
3800
|
+
"aria-labelledby": ariaLabelledby,
|
|
3801
|
+
className: "flex flex-col gap-4",
|
|
3802
|
+
...describedByProps,
|
|
3803
|
+
children
|
|
3804
|
+
}
|
|
3805
|
+
);
|
|
3806
|
+
}
|
|
3807
|
+
RadioCardGroup.displayName = "RadioCard.Group";
|
|
3808
|
+
|
|
3809
|
+
// src/radio-card/radio-card-item.tsx
|
|
3810
|
+
var import_component_theme15 = require("@zenkigen-inc/component-theme");
|
|
3811
|
+
var import_clsx35 = __toESM(require("clsx"));
|
|
3812
|
+
var import_react54 = require("react");
|
|
3813
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
3814
|
+
function RadioCardItem({ value, label, description, isDisabled: itemDisabled = false, id }) {
|
|
3815
|
+
const context = useRadioCardContext("RadioCard.Item");
|
|
3816
|
+
const autoId = (0, import_react54.useId)();
|
|
3817
|
+
const inputId = id ?? autoId;
|
|
3818
|
+
const labelId = `${inputId}-label`;
|
|
3819
|
+
const descriptionId = `${inputId}-description`;
|
|
3820
|
+
const isChecked = context.value === value;
|
|
3821
|
+
const isDisabled = context.isDisabled || itemDisabled;
|
|
3822
|
+
const isError = context.isError && !isDisabled;
|
|
3823
|
+
const hasDescription = description != null && description !== "";
|
|
3824
|
+
const describedByProps = hasDescription ? { "aria-describedby": descriptionId } : {};
|
|
3825
|
+
const ariaInvalidProps = isError ? { "aria-invalid": true } : {};
|
|
3826
|
+
const handleChange = () => {
|
|
3827
|
+
if (!isDisabled) {
|
|
3828
|
+
context.onChange(value);
|
|
3829
|
+
}
|
|
3830
|
+
};
|
|
3831
|
+
const cardClasses = (0, import_clsx35.default)(
|
|
3832
|
+
"pointer-events-none flex flex-col gap-2 rounded border border-solid px-4 py-3",
|
|
3833
|
+
import_component_theme15.focusVisible.normalPeer,
|
|
3834
|
+
{
|
|
3835
|
+
"border-uiBorder02 bg-uiBackground01": isDisabled,
|
|
3836
|
+
"border-supportError bg-uiBackground01 group-hover:bg-hoverUi02": isError,
|
|
3837
|
+
"border-selectedUiBorder bg-selectedUi group-hover:bg-hoverUi02": !isDisabled && !isError && isChecked,
|
|
3838
|
+
"border-uiBorder02 bg-uiBackground01 group-hover:bg-hoverUi02": !isDisabled && !isError && !isChecked
|
|
3839
|
+
}
|
|
3840
|
+
);
|
|
3841
|
+
const boxClasses = (0, import_clsx35.default)(
|
|
3842
|
+
"relative inline-flex size-5 shrink-0 items-center justify-center rounded-full border border-solid bg-white",
|
|
3843
|
+
{
|
|
3844
|
+
"border-disabled01": isDisabled,
|
|
3845
|
+
"border-supportError group-hover:border-hoverError": !isDisabled && isError,
|
|
3846
|
+
"border-uiBorder04 group-hover:border-hoverUiBorder": !isDisabled && !isError
|
|
3847
|
+
}
|
|
3848
|
+
);
|
|
3849
|
+
const dotClasses = (0, import_clsx35.default)("absolute inset-0 m-auto size-3 rounded-full", {
|
|
3850
|
+
"scale-100": isChecked,
|
|
3851
|
+
"scale-0": !isChecked,
|
|
3852
|
+
"bg-disabled01": isDisabled && isChecked,
|
|
3853
|
+
"bg-supportError": !isDisabled && isError && isChecked,
|
|
3854
|
+
"bg-activeSelectedUi": !isDisabled && !isError && isChecked
|
|
3855
|
+
});
|
|
3856
|
+
const hoverDotClasses = (0, import_clsx35.default)("size-3 rounded-full bg-transparent", {
|
|
3857
|
+
"group-hover:bg-hoverUi": !isDisabled && !isChecked
|
|
3858
|
+
});
|
|
3859
|
+
const labelClasses = (0, import_clsx35.default)("typography-label14regular ml-2 select-none break-all", {
|
|
3860
|
+
"text-disabled01": isDisabled,
|
|
3861
|
+
"text-text01": !isDisabled
|
|
3862
|
+
});
|
|
3863
|
+
const descriptionClasses = (0, import_clsx35.default)("typography-body12regular pl-7", {
|
|
3864
|
+
"text-disabled01": isDisabled,
|
|
3865
|
+
"text-text02": !isDisabled
|
|
3866
|
+
});
|
|
3867
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "group relative", children: [
|
|
3868
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
3869
|
+
"input",
|
|
3870
|
+
{
|
|
3871
|
+
type: "radio",
|
|
3872
|
+
id: inputId,
|
|
3873
|
+
name: context.name,
|
|
3874
|
+
value,
|
|
3875
|
+
checked: isChecked,
|
|
3876
|
+
disabled: isDisabled,
|
|
3877
|
+
onChange: handleChange,
|
|
3878
|
+
"aria-labelledby": labelId,
|
|
3879
|
+
className: "peer absolute inset-0 size-full cursor-pointer opacity-0 disabled:cursor-not-allowed",
|
|
3880
|
+
...describedByProps,
|
|
3881
|
+
...ariaInvalidProps
|
|
3882
|
+
}
|
|
3883
|
+
),
|
|
3884
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: cardClasses, children: [
|
|
3885
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-center", children: [
|
|
3886
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("span", { className: boxClasses, "aria-hidden": "true", children: [
|
|
3887
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: dotClasses }),
|
|
3888
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: hoverDotClasses })
|
|
3889
|
+
] }),
|
|
3890
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { id: labelId, className: labelClasses, children: label })
|
|
3891
|
+
] }),
|
|
3892
|
+
hasDescription ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("p", { id: descriptionId, className: descriptionClasses, children: description }) : null
|
|
3893
|
+
] })
|
|
3894
|
+
] });
|
|
3895
|
+
}
|
|
3896
|
+
RadioCardItem.displayName = "RadioCard.Item";
|
|
3897
|
+
|
|
3898
|
+
// src/radio-card/radio-card.tsx
|
|
3899
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
3900
|
+
function RadioCardRoot({
|
|
3901
|
+
children,
|
|
3902
|
+
value,
|
|
3903
|
+
onChange,
|
|
3904
|
+
name,
|
|
3905
|
+
isDisabled = false,
|
|
3906
|
+
isError = false,
|
|
3907
|
+
"aria-label": ariaLabel,
|
|
3908
|
+
"aria-labelledby": ariaLabelledby
|
|
3909
|
+
}) {
|
|
3910
|
+
const autoName = (0, import_react55.useId)();
|
|
3911
|
+
const baseId = (0, import_react55.useId)();
|
|
3912
|
+
const resolvedName = name ?? autoName;
|
|
3913
|
+
const errorIds = [];
|
|
3914
|
+
const enhancedChildren = import_react55.Children.map(children, (child) => {
|
|
3915
|
+
if (!(0, import_react55.isValidElement)(child)) {
|
|
3916
|
+
return child;
|
|
3917
|
+
}
|
|
3918
|
+
if (child.type === RadioCardErrorMessage && isError) {
|
|
3919
|
+
const errorChild = child;
|
|
3920
|
+
const assignedId = errorChild.props.id ?? `${baseId}-error-${errorIds.length + 1}`;
|
|
3921
|
+
errorIds.push(assignedId);
|
|
3922
|
+
return (0, import_react55.cloneElement)(errorChild, { id: assignedId });
|
|
3923
|
+
}
|
|
3924
|
+
return child;
|
|
3925
|
+
});
|
|
3926
|
+
const errorDescribedBy = errorIds.length > 0 ? errorIds.join(" ") : null;
|
|
3927
|
+
const contextValue = (0, import_react55.useMemo)(
|
|
3928
|
+
() => ({
|
|
3929
|
+
value,
|
|
3930
|
+
onChange,
|
|
3931
|
+
name: resolvedName,
|
|
3932
|
+
isDisabled,
|
|
3933
|
+
isError,
|
|
3934
|
+
errorDescribedBy,
|
|
3935
|
+
ariaLabel,
|
|
3936
|
+
ariaLabelledby
|
|
3937
|
+
}),
|
|
3938
|
+
[value, onChange, resolvedName, isDisabled, isError, errorDescribedBy, ariaLabel, ariaLabelledby]
|
|
3939
|
+
);
|
|
3940
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(RadioCardContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "flex flex-col gap-2", children: enhancedChildren }) });
|
|
3941
|
+
}
|
|
3942
|
+
var RadioCard = Object.assign(RadioCardRoot, {
|
|
3943
|
+
Group: RadioCardGroup,
|
|
3944
|
+
Item: RadioCardItem,
|
|
3945
|
+
ErrorMessage: RadioCardErrorMessage,
|
|
3946
|
+
displayName: "RadioCard"
|
|
3947
|
+
});
|
|
3948
|
+
|
|
3949
|
+
// src/search/search.tsx
|
|
3950
|
+
var import_clsx36 = require("clsx");
|
|
3951
|
+
var import_react56 = require("react");
|
|
3952
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
3953
|
+
var Search = (0, import_react56.forwardRef)(({ width = "100%", size = "medium", ...props }, ref) => {
|
|
3954
|
+
const classes = (0, import_clsx36.clsx)(
|
|
3679
3955
|
"flex items-center rounded-full border border-uiBorder02 bg-uiBackground01 focus-within:border-activeInput",
|
|
3680
3956
|
{ "h-8 px-3": size === "medium" },
|
|
3681
3957
|
{ "h-10 px-4": size === "large" }
|
|
3682
3958
|
);
|
|
3683
|
-
const inputClasses = (0,
|
|
3959
|
+
const inputClasses = (0, import_clsx36.clsx)("mx-2 h-full flex-1 text-text01 outline-none placeholder:text-textPlaceholder", {
|
|
3684
3960
|
["typography-label14regular"]: size === "medium",
|
|
3685
3961
|
["typography-label16regular"]: size === "large"
|
|
3686
3962
|
});
|
|
3687
|
-
return /* @__PURE__ */ (0,
|
|
3688
|
-
/* @__PURE__ */ (0,
|
|
3689
|
-
/* @__PURE__ */ (0,
|
|
3963
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "relative", ref, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("form", { onSubmit: props.onSubmit, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: classes, style: { width }, children: [
|
|
3964
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Icon, { name: "search", color: "icon01", size: "medium" }),
|
|
3965
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
3690
3966
|
"input",
|
|
3691
3967
|
{
|
|
3692
3968
|
type: "text",
|
|
@@ -3697,7 +3973,7 @@ var Search = (0, import_react53.forwardRef)(({ width = "100%", size = "medium",
|
|
|
3697
3973
|
onChange: props.onChange
|
|
3698
3974
|
}
|
|
3699
3975
|
),
|
|
3700
|
-
props.onClickClearButton && props.value && props.value.length !== 0 && /* @__PURE__ */ (0,
|
|
3976
|
+
props.onClickClearButton && props.value && props.value.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
3701
3977
|
IconButton,
|
|
3702
3978
|
{
|
|
3703
3979
|
variant: "text",
|
|
@@ -3712,17 +3988,17 @@ var Search = (0, import_react53.forwardRef)(({ width = "100%", size = "medium",
|
|
|
3712
3988
|
Search.displayName = "Search";
|
|
3713
3989
|
|
|
3714
3990
|
// src/segmented-control/segmented-control.tsx
|
|
3715
|
-
var
|
|
3991
|
+
var import_react59 = __toESM(require("react"));
|
|
3716
3992
|
|
|
3717
3993
|
// src/segmented-control/segmented-control-context.ts
|
|
3718
|
-
var
|
|
3719
|
-
var SegmentedControlContext = (0,
|
|
3994
|
+
var import_react57 = require("react");
|
|
3995
|
+
var SegmentedControlContext = (0, import_react57.createContext)(null);
|
|
3720
3996
|
|
|
3721
3997
|
// src/segmented-control/segmented-control-item.tsx
|
|
3722
|
-
var
|
|
3723
|
-
var
|
|
3724
|
-
var
|
|
3725
|
-
var
|
|
3998
|
+
var import_component_theme16 = require("@zenkigen-inc/component-theme");
|
|
3999
|
+
var import_clsx37 = require("clsx");
|
|
4000
|
+
var import_react58 = require("react");
|
|
4001
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
3726
4002
|
var SegmentedControlItem = ({
|
|
3727
4003
|
label,
|
|
3728
4004
|
value,
|
|
@@ -3731,9 +4007,9 @@ var SegmentedControlItem = ({
|
|
|
3731
4007
|
"aria-label": ariaLabel,
|
|
3732
4008
|
...rest
|
|
3733
4009
|
}) => {
|
|
3734
|
-
const context = (0,
|
|
3735
|
-
const buttonRef = (0,
|
|
3736
|
-
const lastInteractionWasMouse = (0,
|
|
4010
|
+
const context = (0, import_react58.useContext)(SegmentedControlContext);
|
|
4011
|
+
const buttonRef = (0, import_react58.useRef)(null);
|
|
4012
|
+
const lastInteractionWasMouse = (0, import_react58.useRef)(false);
|
|
3737
4013
|
if (context === null) {
|
|
3738
4014
|
throw new Error("SegmentedControl.Item must be used within SegmentedControl");
|
|
3739
4015
|
}
|
|
@@ -3749,7 +4025,7 @@ var SegmentedControlItem = ({
|
|
|
3749
4025
|
const isSelected = value === selectedValue;
|
|
3750
4026
|
const isFocused = value === focusedValue;
|
|
3751
4027
|
const isOptionDisabled = isContextDisabled || itemDisabled === true;
|
|
3752
|
-
(0,
|
|
4028
|
+
(0, import_react58.useEffect)(() => {
|
|
3753
4029
|
if (isFocused === true && buttonRef.current !== null) {
|
|
3754
4030
|
buttonRef.current.focus();
|
|
3755
4031
|
}
|
|
@@ -3771,7 +4047,7 @@ var SegmentedControlItem = ({
|
|
|
3771
4047
|
lastInteractionWasMouse.current = false;
|
|
3772
4048
|
onBlur?.();
|
|
3773
4049
|
};
|
|
3774
|
-
const buttonClasses = (0,
|
|
4050
|
+
const buttonClasses = (0, import_clsx37.clsx)("relative flex items-center justify-center gap-1 rounded", import_component_theme16.focusVisible.normal, {
|
|
3775
4051
|
"px-2 min-h-[24px] typography-label12regular": size === "small",
|
|
3776
4052
|
"px-4 min-h-[32px] typography-label14regular": size === "medium",
|
|
3777
4053
|
// States - Default with hover
|
|
@@ -3781,7 +4057,7 @@ var SegmentedControlItem = ({
|
|
|
3781
4057
|
// States - Disabled
|
|
3782
4058
|
"text-disabled01 bg-transparent": isOptionDisabled === true
|
|
3783
4059
|
});
|
|
3784
|
-
return /* @__PURE__ */ (0,
|
|
4060
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
3785
4061
|
"button",
|
|
3786
4062
|
{
|
|
3787
4063
|
ref: buttonRef,
|
|
@@ -3798,25 +4074,25 @@ var SegmentedControlItem = ({
|
|
|
3798
4074
|
onMouseDown: handleMouseDown,
|
|
3799
4075
|
...rest,
|
|
3800
4076
|
children: [
|
|
3801
|
-
Boolean(icon) === true && icon && /* @__PURE__ */ (0,
|
|
4077
|
+
Boolean(icon) === true && icon && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
3802
4078
|
"span",
|
|
3803
4079
|
{
|
|
3804
|
-
className: (0,
|
|
4080
|
+
className: (0, import_clsx37.clsx)("flex items-center", {
|
|
3805
4081
|
"fill-disabled01": isOptionDisabled === true,
|
|
3806
4082
|
"fill-interactive01": isSelected === true && isOptionDisabled === false,
|
|
3807
4083
|
"fill-icon01": isSelected === false && isOptionDisabled === false
|
|
3808
4084
|
}),
|
|
3809
|
-
children: /* @__PURE__ */ (0,
|
|
4085
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Icon, { name: icon, size: "small" })
|
|
3810
4086
|
}
|
|
3811
4087
|
),
|
|
3812
|
-
Boolean(label) === true && /* @__PURE__ */ (0,
|
|
4088
|
+
Boolean(label) === true && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "whitespace-nowrap", children: label })
|
|
3813
4089
|
]
|
|
3814
4090
|
}
|
|
3815
4091
|
);
|
|
3816
4092
|
};
|
|
3817
4093
|
|
|
3818
4094
|
// src/segmented-control/segmented-control.tsx
|
|
3819
|
-
var
|
|
4095
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
3820
4096
|
var SegmentedControl = ({
|
|
3821
4097
|
children,
|
|
3822
4098
|
value,
|
|
@@ -3826,15 +4102,15 @@ var SegmentedControl = ({
|
|
|
3826
4102
|
"aria-label": ariaLabel,
|
|
3827
4103
|
...rest
|
|
3828
4104
|
}) => {
|
|
3829
|
-
const containerRef = (0,
|
|
3830
|
-
const itemIds =
|
|
3831
|
-
if (!
|
|
4105
|
+
const containerRef = (0, import_react59.useRef)(null);
|
|
4106
|
+
const itemIds = import_react59.Children.toArray(children).filter((child) => {
|
|
4107
|
+
if (!import_react59.default.isValidElement(child) || typeof child.props !== "object" || child.props === null || !("value" in child.props)) {
|
|
3832
4108
|
return false;
|
|
3833
4109
|
}
|
|
3834
4110
|
const props = child.props;
|
|
3835
4111
|
return props.isDisabled !== true;
|
|
3836
4112
|
}).map((child) => child.props.value);
|
|
3837
|
-
const childrenCount =
|
|
4113
|
+
const childrenCount = import_react59.Children.count(children);
|
|
3838
4114
|
const containerStyle = { gridTemplateColumns: `repeat(${childrenCount}, minmax(0,1fr))` };
|
|
3839
4115
|
const {
|
|
3840
4116
|
focusedValue,
|
|
@@ -3861,7 +4137,7 @@ var SegmentedControl = ({
|
|
|
3861
4137
|
onBlur: handleBlurRovingFocus,
|
|
3862
4138
|
values: itemIds
|
|
3863
4139
|
};
|
|
3864
|
-
return /* @__PURE__ */ (0,
|
|
4140
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_jsx_runtime59.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SegmentedControlContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
3865
4141
|
"div",
|
|
3866
4142
|
{
|
|
3867
4143
|
ref: containerRef,
|
|
@@ -3878,22 +4154,22 @@ var SegmentedControl = ({
|
|
|
3878
4154
|
SegmentedControl.Item = SegmentedControlItem;
|
|
3879
4155
|
|
|
3880
4156
|
// src/select-sort/select-sort.tsx
|
|
4157
|
+
var import_component_theme19 = require("@zenkigen-inc/component-theme");
|
|
4158
|
+
var import_clsx40 = __toESM(require("clsx"));
|
|
4159
|
+
var import_react60 = require("react");
|
|
4160
|
+
|
|
4161
|
+
// src/select-sort/select-list.tsx
|
|
3881
4162
|
var import_component_theme18 = require("@zenkigen-inc/component-theme");
|
|
3882
4163
|
var import_clsx39 = __toESM(require("clsx"));
|
|
3883
|
-
var import_react57 = require("react");
|
|
3884
4164
|
|
|
3885
|
-
// src/select-sort/select-
|
|
4165
|
+
// src/select-sort/select-item.tsx
|
|
3886
4166
|
var import_component_theme17 = require("@zenkigen-inc/component-theme");
|
|
3887
4167
|
var import_clsx38 = __toESM(require("clsx"));
|
|
3888
|
-
|
|
3889
|
-
// src/select-sort/select-item.tsx
|
|
3890
|
-
var import_component_theme16 = require("@zenkigen-inc/component-theme");
|
|
3891
|
-
var import_clsx37 = __toESM(require("clsx"));
|
|
3892
|
-
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
4168
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
3893
4169
|
function SelectItem2({ children, isSortKey, size, onClickItem }) {
|
|
3894
|
-
const itemClasses = (0,
|
|
4170
|
+
const itemClasses = (0, import_clsx38.default)(
|
|
3895
4171
|
"typography-label14regular flex w-full items-center px-3 hover:bg-hover02 active:bg-active02",
|
|
3896
|
-
|
|
4172
|
+
import_component_theme17.focusVisible.inset,
|
|
3897
4173
|
{
|
|
3898
4174
|
"h-8": size !== "large",
|
|
3899
4175
|
"h-10": size === "large",
|
|
@@ -3901,16 +4177,16 @@ function SelectItem2({ children, isSortKey, size, onClickItem }) {
|
|
|
3901
4177
|
"bg-uiBackground01 fill-icon01 text-interactive02": !isSortKey
|
|
3902
4178
|
}
|
|
3903
4179
|
);
|
|
3904
|
-
return /* @__PURE__ */ (0,
|
|
3905
|
-
/* @__PURE__ */ (0,
|
|
3906
|
-
isSortKey && /* @__PURE__ */ (0,
|
|
4180
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("li", { className: "flex w-full items-center", onClick: onClickItem, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("button", { className: itemClasses, type: "button", children: [
|
|
4181
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "ml-1 mr-6", children }),
|
|
4182
|
+
isSortKey && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: "check", size: "small" }) })
|
|
3907
4183
|
] }) });
|
|
3908
4184
|
}
|
|
3909
4185
|
|
|
3910
4186
|
// src/select-sort/select-list.tsx
|
|
3911
|
-
var
|
|
4187
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
3912
4188
|
function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect }) {
|
|
3913
|
-
const listClasses = (0,
|
|
4189
|
+
const listClasses = (0, import_clsx39.default)(
|
|
3914
4190
|
"absolute z-dropdown w-max overflow-y-auto rounded bg-uiBackground01 py-2 shadow-floatingShadow",
|
|
3915
4191
|
{
|
|
3916
4192
|
"top-7": size === "x-small" || size === "small",
|
|
@@ -3919,23 +4195,23 @@ function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect })
|
|
|
3919
4195
|
"border-solid border border-uiBorder01": variant === "outline"
|
|
3920
4196
|
}
|
|
3921
4197
|
);
|
|
3922
|
-
const deselectButtonClasses = (0,
|
|
4198
|
+
const deselectButtonClasses = (0, import_clsx39.default)(
|
|
3923
4199
|
"typography-label14regular flex w-full items-center px-3 text-interactive02 hover:bg-hover02 active:bg-active02",
|
|
3924
|
-
|
|
4200
|
+
import_component_theme18.focusVisible.inset,
|
|
3925
4201
|
{
|
|
3926
4202
|
"h-8": size !== "large",
|
|
3927
4203
|
"h-10": size === "large"
|
|
3928
4204
|
}
|
|
3929
4205
|
);
|
|
3930
|
-
return /* @__PURE__ */ (0,
|
|
3931
|
-
/* @__PURE__ */ (0,
|
|
3932
|
-
/* @__PURE__ */ (0,
|
|
3933
|
-
sortOrder !== null && onClickDeselect && /* @__PURE__ */ (0,
|
|
4206
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("ul", { className: listClasses, children: [
|
|
4207
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(SelectItem2, { size, isSortKey: sortOrder === "ascend", onClickItem: () => onClickItem("ascend"), children: "\u6607\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
|
|
4208
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(SelectItem2, { size, isSortKey: sortOrder === "descend", onClickItem: () => onClickItem("descend"), children: "\u964D\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
|
|
4209
|
+
sortOrder !== null && onClickDeselect && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("button", { className: deselectButtonClasses, type: "button", onClick: onClickDeselect, children: "\u9078\u629E\u89E3\u9664" }) })
|
|
3934
4210
|
] });
|
|
3935
4211
|
}
|
|
3936
4212
|
|
|
3937
4213
|
// src/select-sort/select-sort.tsx
|
|
3938
|
-
var
|
|
4214
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
3939
4215
|
function SelectSort({
|
|
3940
4216
|
size = "medium",
|
|
3941
4217
|
variant = "outline",
|
|
@@ -3947,8 +4223,8 @@ function SelectSort({
|
|
|
3947
4223
|
onChange,
|
|
3948
4224
|
onClickDeselect
|
|
3949
4225
|
}) {
|
|
3950
|
-
const [isOptionListOpen, setIsOptionListOpen] = (0,
|
|
3951
|
-
const targetRef = (0,
|
|
4226
|
+
const [isOptionListOpen, setIsOptionListOpen] = (0, import_react60.useState)(false);
|
|
4227
|
+
const targetRef = (0, import_react60.useRef)(null);
|
|
3952
4228
|
useOutsideClick(targetRef, () => setIsOptionListOpen(false));
|
|
3953
4229
|
useDismissOnModalOpen(() => {
|
|
3954
4230
|
if (isOptionListOpen) {
|
|
@@ -3956,50 +4232,50 @@ function SelectSort({
|
|
|
3956
4232
|
}
|
|
3957
4233
|
});
|
|
3958
4234
|
const handleClickToggle = () => setIsOptionListOpen((prev) => !prev);
|
|
3959
|
-
const handleClickItem = (0,
|
|
4235
|
+
const handleClickItem = (0, import_react60.useCallback)(
|
|
3960
4236
|
(value) => {
|
|
3961
4237
|
onChange?.(value);
|
|
3962
4238
|
setIsOptionListOpen(false);
|
|
3963
4239
|
},
|
|
3964
4240
|
[onChange]
|
|
3965
4241
|
);
|
|
3966
|
-
const wrapperClasses = (0,
|
|
4242
|
+
const wrapperClasses = (0, import_clsx40.default)("relative flex shrink-0 items-center gap-1 rounded", {
|
|
3967
4243
|
"h-6": size === "x-small" || size === "small",
|
|
3968
4244
|
"h-8": size === "medium",
|
|
3969
4245
|
"h-10": size === "large",
|
|
3970
4246
|
"cursor-not-allowed": isDisabled
|
|
3971
4247
|
});
|
|
3972
|
-
const buttonClasses = (0,
|
|
4248
|
+
const buttonClasses = (0, import_clsx40.default)(
|
|
3973
4249
|
"flex size-full items-center rounded",
|
|
3974
|
-
|
|
3975
|
-
|
|
3976
|
-
|
|
3977
|
-
|
|
4250
|
+
import_component_theme19.buttonColors[variant].hover,
|
|
4251
|
+
import_component_theme19.buttonColors[variant].active,
|
|
4252
|
+
import_component_theme19.buttonColors[variant].disabled,
|
|
4253
|
+
import_component_theme19.focusVisible.normal,
|
|
3978
4254
|
{
|
|
3979
|
-
[
|
|
3980
|
-
[
|
|
4255
|
+
[import_component_theme19.buttonColors[variant].selected]: isSortKey,
|
|
4256
|
+
[import_component_theme19.buttonColors[variant].base]: !isSortKey,
|
|
3981
4257
|
"px-2": size === "x-small" || size === "small",
|
|
3982
4258
|
"px-4": size === "medium" || size === "large",
|
|
3983
4259
|
"pointer-events-none": isDisabled
|
|
3984
4260
|
}
|
|
3985
4261
|
);
|
|
3986
|
-
const labelClasses = (0,
|
|
4262
|
+
const labelClasses = (0, import_clsx40.default)("truncate", {
|
|
3987
4263
|
"typography-label12regular": size === "x-small",
|
|
3988
4264
|
"typography-label14regular": size === "small" || size === "medium",
|
|
3989
4265
|
"typography-label16regular": size === "large",
|
|
3990
4266
|
"mr-1": size === "x-small",
|
|
3991
4267
|
"mr-2": size !== "x-small"
|
|
3992
4268
|
});
|
|
3993
|
-
return /* @__PURE__ */ (0,
|
|
3994
|
-
/* @__PURE__ */ (0,
|
|
3995
|
-
/* @__PURE__ */ (0,
|
|
3996
|
-
/* @__PURE__ */ (0,
|
|
4269
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: wrapperClasses, style: { width }, ref: targetRef, children: [
|
|
4270
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("button", { className: buttonClasses, type: "button", onClick: handleClickToggle, disabled: isDisabled, children: [
|
|
4271
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: labelClasses, children: label }),
|
|
4272
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "ml-auto flex items-center", children: isSortKey ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
3997
4273
|
Icon,
|
|
3998
4274
|
{
|
|
3999
4275
|
name: sortOrder === "ascend" ? "arrow-up" : "arrow-down",
|
|
4000
4276
|
size: size === "large" ? "medium" : "small"
|
|
4001
4277
|
}
|
|
4002
|
-
) : /* @__PURE__ */ (0,
|
|
4278
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
4003
4279
|
Icon,
|
|
4004
4280
|
{
|
|
4005
4281
|
name: isOptionListOpen ? "angle-small-up" : "angle-small-down",
|
|
@@ -4007,7 +4283,7 @@ function SelectSort({
|
|
|
4007
4283
|
}
|
|
4008
4284
|
) })
|
|
4009
4285
|
] }),
|
|
4010
|
-
isOptionListOpen && !isDisabled && /* @__PURE__ */ (0,
|
|
4286
|
+
isOptionListOpen && !isDisabled && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
4011
4287
|
SelectList2,
|
|
4012
4288
|
{
|
|
4013
4289
|
size,
|
|
@@ -4021,10 +4297,10 @@ function SelectSort({
|
|
|
4021
4297
|
}
|
|
4022
4298
|
|
|
4023
4299
|
// src/sort-button/sort-button.tsx
|
|
4024
|
-
var
|
|
4025
|
-
var
|
|
4026
|
-
var
|
|
4027
|
-
var
|
|
4300
|
+
var import_component_theme20 = require("@zenkigen-inc/component-theme");
|
|
4301
|
+
var import_clsx41 = __toESM(require("clsx"));
|
|
4302
|
+
var import_react61 = require("react");
|
|
4303
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
4028
4304
|
function SortButton({
|
|
4029
4305
|
size = "medium",
|
|
4030
4306
|
width,
|
|
@@ -4035,7 +4311,7 @@ function SortButton({
|
|
|
4035
4311
|
"aria-label": ariaLabel,
|
|
4036
4312
|
...rest
|
|
4037
4313
|
}) {
|
|
4038
|
-
const handleClick = (0,
|
|
4314
|
+
const handleClick = (0, import_react61.useCallback)(() => {
|
|
4039
4315
|
if (isDisabled || !onClick) return;
|
|
4040
4316
|
onClick();
|
|
4041
4317
|
}, [isDisabled, onClick]);
|
|
@@ -4044,36 +4320,36 @@ function SortButton({
|
|
|
4044
4320
|
if (sortOrder === "descend") return "arrow-down";
|
|
4045
4321
|
return "angle-small-down";
|
|
4046
4322
|
};
|
|
4047
|
-
const wrapperClasses = (0,
|
|
4323
|
+
const wrapperClasses = (0, import_clsx41.default)("relative flex shrink-0 items-center gap-1 rounded", {
|
|
4048
4324
|
"h-6": size === "x-small" || size === "small",
|
|
4049
4325
|
"h-8": size === "medium",
|
|
4050
4326
|
"h-10": size === "large",
|
|
4051
4327
|
"cursor-not-allowed": isDisabled
|
|
4052
4328
|
});
|
|
4053
|
-
const buttonClasses = (0,
|
|
4329
|
+
const buttonClasses = (0, import_clsx41.default)(
|
|
4054
4330
|
"flex size-full items-center rounded",
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4331
|
+
import_component_theme20.buttonColors.text.hover,
|
|
4332
|
+
import_component_theme20.buttonColors.text.active,
|
|
4333
|
+
import_component_theme20.buttonColors.text.disabled,
|
|
4334
|
+
import_component_theme20.focusVisible.normal,
|
|
4059
4335
|
{
|
|
4060
|
-
[
|
|
4336
|
+
[import_component_theme20.buttonColors.text.selected]: !isDisabled && sortOrder !== null,
|
|
4061
4337
|
// ソート状態時は選択状態のスタイル
|
|
4062
|
-
[
|
|
4338
|
+
[import_component_theme20.buttonColors.text.base]: sortOrder === null,
|
|
4063
4339
|
// ソートなし時は通常のスタイル
|
|
4064
4340
|
"px-2": size === "x-small" || size === "small",
|
|
4065
4341
|
"px-4": size === "medium" || size === "large",
|
|
4066
4342
|
"pointer-events-none": isDisabled
|
|
4067
4343
|
}
|
|
4068
4344
|
);
|
|
4069
|
-
const labelClasses = (0,
|
|
4345
|
+
const labelClasses = (0, import_clsx41.default)("truncate", {
|
|
4070
4346
|
"typography-label12regular": size === "x-small",
|
|
4071
4347
|
"typography-label14regular": size === "small" || size === "medium",
|
|
4072
4348
|
"typography-label16regular": size === "large",
|
|
4073
4349
|
"mr-1": size === "x-small",
|
|
4074
4350
|
"mr-2": size !== "x-small"
|
|
4075
4351
|
});
|
|
4076
|
-
return /* @__PURE__ */ (0,
|
|
4352
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: wrapperClasses, style: { width }, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
4077
4353
|
"button",
|
|
4078
4354
|
{
|
|
4079
4355
|
className: buttonClasses,
|
|
@@ -4084,22 +4360,22 @@ function SortButton({
|
|
|
4084
4360
|
"aria-label": ariaLabel,
|
|
4085
4361
|
"aria-disabled": isDisabled,
|
|
4086
4362
|
children: [
|
|
4087
|
-
/* @__PURE__ */ (0,
|
|
4088
|
-
/* @__PURE__ */ (0,
|
|
4363
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: labelClasses, children: label }),
|
|
4364
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icon, { name: getIconName(), size: size === "large" ? "medium" : "small" }) })
|
|
4089
4365
|
]
|
|
4090
4366
|
}
|
|
4091
4367
|
) });
|
|
4092
4368
|
}
|
|
4093
4369
|
|
|
4094
4370
|
// src/steps/steps.tsx
|
|
4095
|
-
var
|
|
4096
|
-
var
|
|
4371
|
+
var import_clsx44 = require("clsx");
|
|
4372
|
+
var import_react64 = require("react");
|
|
4097
4373
|
|
|
4098
4374
|
// src/steps/steps-context.ts
|
|
4099
|
-
var
|
|
4100
|
-
var StepsContext = (0,
|
|
4375
|
+
var import_react62 = require("react");
|
|
4376
|
+
var StepsContext = (0, import_react62.createContext)(null);
|
|
4101
4377
|
function useStepsContext() {
|
|
4102
|
-
const context = (0,
|
|
4378
|
+
const context = (0, import_react62.useContext)(StepsContext);
|
|
4103
4379
|
if (context === null) {
|
|
4104
4380
|
throw new Error("Steps.Item must be used within <Steps>");
|
|
4105
4381
|
}
|
|
@@ -4107,13 +4383,13 @@ function useStepsContext() {
|
|
|
4107
4383
|
}
|
|
4108
4384
|
|
|
4109
4385
|
// src/steps/steps-item.tsx
|
|
4110
|
-
var
|
|
4386
|
+
var import_clsx43 = require("clsx");
|
|
4111
4387
|
|
|
4112
4388
|
// src/steps/steps-item-context.ts
|
|
4113
|
-
var
|
|
4114
|
-
var StepsItemContext = (0,
|
|
4389
|
+
var import_react63 = require("react");
|
|
4390
|
+
var StepsItemContext = (0, import_react63.createContext)(null);
|
|
4115
4391
|
function useStepsItemContext() {
|
|
4116
|
-
const context = (0,
|
|
4392
|
+
const context = (0, import_react63.useContext)(StepsItemContext);
|
|
4117
4393
|
if (context === null) {
|
|
4118
4394
|
throw new Error("Steps.Item must be rendered inside a <Steps> component");
|
|
4119
4395
|
}
|
|
@@ -4121,34 +4397,34 @@ function useStepsItemContext() {
|
|
|
4121
4397
|
}
|
|
4122
4398
|
|
|
4123
4399
|
// src/steps/steps-separator.tsx
|
|
4124
|
-
var
|
|
4125
|
-
var
|
|
4400
|
+
var import_clsx42 = require("clsx");
|
|
4401
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
4126
4402
|
function StepsSeparator({ progress }) {
|
|
4127
4403
|
const { orientation } = useStepsContext();
|
|
4128
4404
|
const isVerticalLine = orientation === "vertical";
|
|
4129
4405
|
const colorClass = progress === "completed" ? "bg-interactive01" : "bg-uiBorder01";
|
|
4130
4406
|
if (isVerticalLine) {
|
|
4131
|
-
return /* @__PURE__ */ (0,
|
|
4407
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { "aria-hidden": "true", className: (0, import_clsx42.clsx)("mx-auto h-full min-h-2 w-px", colorClass) });
|
|
4132
4408
|
}
|
|
4133
|
-
return /* @__PURE__ */ (0,
|
|
4409
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { "aria-hidden": "true", className: (0, import_clsx42.clsx)("h-px flex-1", colorClass) });
|
|
4134
4410
|
}
|
|
4135
4411
|
|
|
4136
4412
|
// src/steps/steps-item.tsx
|
|
4137
|
-
var
|
|
4413
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
4138
4414
|
var progressSrOnlyLabel = {
|
|
4139
4415
|
completed: "\u5B8C\u4E86: ",
|
|
4140
4416
|
current: "\u73FE\u5728\u306E\u30B9\u30C6\u30C3\u30D7: ",
|
|
4141
4417
|
upcoming: "\u672A\u7740\u624B: "
|
|
4142
4418
|
};
|
|
4143
4419
|
function getCircleSizeClass(size) {
|
|
4144
|
-
return (0,
|
|
4420
|
+
return (0, import_clsx43.clsx)({
|
|
4145
4421
|
"size-6 typography-label12regular": size === "small",
|
|
4146
4422
|
"size-8 typography-label12regular": size === "medium",
|
|
4147
4423
|
"size-10 typography-label16regular": size === "large"
|
|
4148
4424
|
});
|
|
4149
4425
|
}
|
|
4150
4426
|
function getCircleVariantProgressClass(variant, progress) {
|
|
4151
|
-
return (0,
|
|
4427
|
+
return (0, import_clsx43.clsx)({
|
|
4152
4428
|
// subtle(全 state border-transparent で box-sizing を揃える)
|
|
4153
4429
|
"bg-uiBackground02 text-text01 border-transparent": variant === "subtle" && progress === "upcoming",
|
|
4154
4430
|
"bg-activeUi text-text01 border-transparent": variant === "subtle" && progress === "current",
|
|
@@ -4160,7 +4436,7 @@ function getCircleVariantProgressClass(variant, progress) {
|
|
|
4160
4436
|
});
|
|
4161
4437
|
}
|
|
4162
4438
|
function getCircleClasses(size, variant, state) {
|
|
4163
|
-
return (0,
|
|
4439
|
+
return (0, import_clsx43.clsx)(
|
|
4164
4440
|
"box-border flex items-center justify-center rounded-full border-2",
|
|
4165
4441
|
getCircleSizeClass(size),
|
|
4166
4442
|
getCircleVariantProgressClass(variant, state.progress)
|
|
@@ -4178,65 +4454,65 @@ function StepsItem({ label, description }) {
|
|
|
4178
4454
|
const { state, index, isLast, id } = useStepsItemContext();
|
|
4179
4455
|
const isCircleFilled = state.progress === "completed";
|
|
4180
4456
|
const circleClasses = getCircleClasses(size, variant, state);
|
|
4181
|
-
const checkIcon = variant === "solid" ? /* @__PURE__ */ (0,
|
|
4182
|
-
const circle = /* @__PURE__ */ (0,
|
|
4183
|
-
const labelBlock = /* @__PURE__ */ (0,
|
|
4184
|
-
/* @__PURE__ */ (0,
|
|
4457
|
+
const checkIcon = variant === "solid" ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Icon, { name: "check", size: getIconSize(size), color: "iconOnColor" }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Icon, { name: "check", size: getIconSize(size), className: "fill-gray-gray100" });
|
|
4458
|
+
const circle = /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { "aria-hidden": "true", className: circleClasses, children: isCircleFilled ? checkIcon : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { children: index + 1 }) });
|
|
4459
|
+
const labelBlock = /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { className: (0, import_clsx43.clsx)("flex flex-col", textOrientation === "horizontal" ? "gap-1" : "items-center text-center"), children: [
|
|
4460
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
|
|
4185
4461
|
"span",
|
|
4186
4462
|
{
|
|
4187
|
-
className: (0,
|
|
4463
|
+
className: (0, import_clsx43.clsx)(
|
|
4188
4464
|
"whitespace-nowrap text-text01",
|
|
4189
4465
|
size === "large" ? "typography-body16regular" : "typography-body14regular"
|
|
4190
4466
|
),
|
|
4191
4467
|
children: [
|
|
4192
|
-
/* @__PURE__ */ (0,
|
|
4468
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "sr-only", children: progressSrOnlyLabel[state.progress] }),
|
|
4193
4469
|
label
|
|
4194
4470
|
]
|
|
4195
4471
|
}
|
|
4196
4472
|
),
|
|
4197
|
-
description != null && /* @__PURE__ */ (0,
|
|
4473
|
+
description != null && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "typography-label12regular whitespace-nowrap text-text02", children: description })
|
|
4198
4474
|
] });
|
|
4199
4475
|
const ariaCurrentProps = state.progress === "current" ? { "aria-current": "step" } : {};
|
|
4200
4476
|
if (orientation === "horizontal" && textOrientation === "horizontal") {
|
|
4201
|
-
return /* @__PURE__ */ (0,
|
|
4477
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("li", { ...ariaCurrentProps, id, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
4202
4478
|
circle,
|
|
4203
4479
|
labelBlock
|
|
4204
4480
|
] }) });
|
|
4205
4481
|
}
|
|
4206
4482
|
if (orientation === "horizontal" && textOrientation === "vertical") {
|
|
4207
|
-
return /* @__PURE__ */ (0,
|
|
4483
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("li", { ...ariaCurrentProps, id, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-col items-center gap-1", children: [
|
|
4208
4484
|
circle,
|
|
4209
4485
|
labelBlock
|
|
4210
4486
|
] }) });
|
|
4211
4487
|
}
|
|
4212
4488
|
if (orientation === "vertical" && textOrientation === "horizontal") {
|
|
4213
|
-
return /* @__PURE__ */ (0,
|
|
4489
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
|
|
4214
4490
|
"li",
|
|
4215
4491
|
{
|
|
4216
4492
|
...ariaCurrentProps,
|
|
4217
|
-
className: (0,
|
|
4493
|
+
className: (0, import_clsx43.clsx)(
|
|
4218
4494
|
"grid grid-cols-[min-content_1fr] grid-rows-[auto_1fr] items-center gap-x-2",
|
|
4219
4495
|
!isLast && "flex-1"
|
|
4220
4496
|
),
|
|
4221
4497
|
id,
|
|
4222
4498
|
children: [
|
|
4223
|
-
/* @__PURE__ */ (0,
|
|
4224
|
-
/* @__PURE__ */ (0,
|
|
4225
|
-
!isLast && /* @__PURE__ */ (0,
|
|
4499
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "col-start-1 row-start-1 flex items-center", children: circle }),
|
|
4500
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "col-start-2 row-start-1 flex items-center", children: labelBlock }),
|
|
4501
|
+
!isLast && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "col-start-1 row-start-2 flex items-stretch justify-center self-stretch py-2", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(StepsSeparator, { progress: state.progress }) })
|
|
4226
4502
|
]
|
|
4227
4503
|
}
|
|
4228
4504
|
);
|
|
4229
4505
|
}
|
|
4230
|
-
return /* @__PURE__ */ (0,
|
|
4506
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("li", { ...ariaCurrentProps, className: (0, import_clsx43.clsx)("flex flex-col items-center gap-1", !isLast && "flex-1"), id, children: [
|
|
4231
4507
|
circle,
|
|
4232
4508
|
labelBlock,
|
|
4233
|
-
!isLast && /* @__PURE__ */ (0,
|
|
4509
|
+
!isLast && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "flex flex-1 items-stretch self-stretch py-2", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(StepsSeparator, { progress: state.progress }) })
|
|
4234
4510
|
] });
|
|
4235
4511
|
}
|
|
4236
4512
|
StepsItem.displayName = "Steps.Item";
|
|
4237
4513
|
|
|
4238
4514
|
// src/steps/steps.tsx
|
|
4239
|
-
var
|
|
4515
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
4240
4516
|
function getSeparatorCellHeightClass(size) {
|
|
4241
4517
|
if (size === "small") return "h-6";
|
|
4242
4518
|
if (size === "medium") return "h-8";
|
|
@@ -4249,19 +4525,19 @@ function HorizontalSeparatorCell({
|
|
|
4249
4525
|
}) {
|
|
4250
4526
|
const heightClass = getSeparatorCellHeightClass(size);
|
|
4251
4527
|
const alignClass = textOrientation === "vertical" ? "self-start" : "";
|
|
4252
|
-
return /* @__PURE__ */ (0,
|
|
4528
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("li", { "aria-hidden": "true", className: (0, import_clsx44.clsx)("flex items-center", heightClass, alignClass), role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(StepsSeparator, { progress }) });
|
|
4253
4529
|
}
|
|
4254
4530
|
function collectStepsItems(children) {
|
|
4255
4531
|
const result = [];
|
|
4256
|
-
|
|
4257
|
-
if (!(0,
|
|
4532
|
+
import_react64.Children.toArray(children).forEach((child) => {
|
|
4533
|
+
if (!(0, import_react64.isValidElement)(child)) {
|
|
4258
4534
|
return;
|
|
4259
4535
|
}
|
|
4260
4536
|
if (child.type === StepsItem) {
|
|
4261
4537
|
result.push(child);
|
|
4262
4538
|
return;
|
|
4263
4539
|
}
|
|
4264
|
-
if (child.type ===
|
|
4540
|
+
if (child.type === import_react64.Fragment) {
|
|
4265
4541
|
const fragmentChildren = child.props.children;
|
|
4266
4542
|
result.push(...collectStepsItems(fragmentChildren));
|
|
4267
4543
|
}
|
|
@@ -4278,12 +4554,12 @@ function StepsRoot({
|
|
|
4278
4554
|
variant = "solid",
|
|
4279
4555
|
"aria-label": ariaLabel
|
|
4280
4556
|
}) {
|
|
4281
|
-
const baseId = (0,
|
|
4282
|
-
const [internalStep] = (0,
|
|
4557
|
+
const baseId = (0, import_react64.useId)();
|
|
4558
|
+
const [internalStep] = (0, import_react64.useState)(defaultCurrentStep ?? 0);
|
|
4283
4559
|
const resolvedCurrentStep = currentStep ?? internalStep;
|
|
4284
|
-
const itemElements = (0,
|
|
4560
|
+
const itemElements = (0, import_react64.useMemo)(() => collectStepsItems(children), [children]);
|
|
4285
4561
|
const stepsCount = itemElements.length;
|
|
4286
|
-
const contextValue = (0,
|
|
4562
|
+
const contextValue = (0, import_react64.useMemo)(
|
|
4287
4563
|
() => ({
|
|
4288
4564
|
size,
|
|
4289
4565
|
orientation,
|
|
@@ -4302,13 +4578,13 @@ function StepsRoot({
|
|
|
4302
4578
|
const state = states[index] ?? { progress: "upcoming" };
|
|
4303
4579
|
const isLast = index === stepsCount - 1;
|
|
4304
4580
|
const id = `${baseId}-item-${index}`;
|
|
4305
|
-
return /* @__PURE__ */ (0,
|
|
4581
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(StepsItemContext.Provider, { value: { index, state, isLast, id }, children: item }, item.key ?? `item-${index}`);
|
|
4306
4582
|
};
|
|
4307
4583
|
const renderedChildren = orientation === "horizontal" ? itemElements.flatMap((item, index) => {
|
|
4308
4584
|
const nodes = [wrapItem(item, index)];
|
|
4309
4585
|
if (index < stepsCount - 1) {
|
|
4310
4586
|
nodes.push(
|
|
4311
|
-
/* @__PURE__ */ (0,
|
|
4587
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
4312
4588
|
HorizontalSeparatorCell,
|
|
4313
4589
|
{
|
|
4314
4590
|
progress: states[index]?.progress ?? "upcoming",
|
|
@@ -4321,7 +4597,7 @@ function StepsRoot({
|
|
|
4321
4597
|
}
|
|
4322
4598
|
return nodes;
|
|
4323
4599
|
}) : itemElements.map((item, index) => wrapItem(item, index));
|
|
4324
|
-
const listClassName = (0,
|
|
4600
|
+
const listClassName = (0, import_clsx44.clsx)(
|
|
4325
4601
|
orientation === "horizontal" ? ["grid w-full gap-x-2", textOrientation === "vertical" ? "items-start" : "items-center"] : "flex flex-col items-stretch"
|
|
4326
4602
|
);
|
|
4327
4603
|
const horizontalGridTemplate = Array.from(
|
|
@@ -4329,20 +4605,20 @@ function StepsRoot({
|
|
|
4329
4605
|
(_unused, index) => index === stepsCount - 1 ? "max-content" : "max-content minmax(8px, 1fr)"
|
|
4330
4606
|
).join(" ");
|
|
4331
4607
|
const listStyleProps = orientation === "horizontal" ? { style: { gridTemplateColumns: horizontalGridTemplate } } : {};
|
|
4332
|
-
return /* @__PURE__ */ (0,
|
|
4608
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(StepsContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("ol", { "aria-label": ariaLabel, className: listClassName, role: "list", ...listStyleProps, children: renderedChildren }) });
|
|
4333
4609
|
}
|
|
4334
4610
|
var Steps = StepsRoot;
|
|
4335
4611
|
Steps.Item = StepsItem;
|
|
4336
4612
|
|
|
4337
4613
|
// src/tab/tab.tsx
|
|
4338
|
-
var
|
|
4339
|
-
var
|
|
4614
|
+
var import_clsx46 = require("clsx");
|
|
4615
|
+
var import_react65 = require("react");
|
|
4340
4616
|
|
|
4341
4617
|
// src/tab/tab-item.tsx
|
|
4342
|
-
var
|
|
4343
|
-
var
|
|
4618
|
+
var import_clsx45 = require("clsx");
|
|
4619
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
4344
4620
|
var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
|
|
4345
|
-
const classes = (0,
|
|
4621
|
+
const classes = (0, import_clsx45.clsx)(
|
|
4346
4622
|
"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",
|
|
4347
4623
|
{
|
|
4348
4624
|
"typography-label14regular text-interactive02": !isSelected,
|
|
@@ -4350,12 +4626,12 @@ var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
|
|
|
4350
4626
|
"before:bg-interactive01 hover:before:bg-interactive01 pointer-events-none": isSelected
|
|
4351
4627
|
}
|
|
4352
4628
|
);
|
|
4353
|
-
const iconWrapperClasses = (0,
|
|
4629
|
+
const iconWrapperClasses = (0, import_clsx45.clsx)("flex shrink-0 items-center", {
|
|
4354
4630
|
"fill-disabled01": isDisabled,
|
|
4355
4631
|
"fill-interactive01": !isDisabled && isSelected,
|
|
4356
4632
|
"fill-icon01 group-hover:fill-interactive01": !isDisabled && !isSelected
|
|
4357
4633
|
});
|
|
4358
|
-
return /* @__PURE__ */ (0,
|
|
4634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
|
|
4359
4635
|
"button",
|
|
4360
4636
|
{
|
|
4361
4637
|
type: "button",
|
|
@@ -4365,7 +4641,7 @@ var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
|
|
|
4365
4641
|
disabled: isDisabled,
|
|
4366
4642
|
onClick: () => props.onClick(props.id),
|
|
4367
4643
|
children: [
|
|
4368
|
-
icon != null && /* @__PURE__ */ (0,
|
|
4644
|
+
icon != null && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: iconWrapperClasses, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Icon, { name: icon, size: "small" }) }),
|
|
4369
4645
|
props.children
|
|
4370
4646
|
]
|
|
4371
4647
|
}
|
|
@@ -4373,39 +4649,39 @@ var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
|
|
|
4373
4649
|
};
|
|
4374
4650
|
|
|
4375
4651
|
// src/tab/tab.tsx
|
|
4376
|
-
var
|
|
4652
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
4377
4653
|
function Tab({ children, layout = "auto" }) {
|
|
4378
|
-
const childrenCount =
|
|
4654
|
+
const childrenCount = import_react65.Children.count(children);
|
|
4379
4655
|
const containerStyle = layout === "equal" ? { gridTemplateColumns: `repeat(${childrenCount}, minmax(0,1fr))` } : {};
|
|
4380
|
-
const containerClasses = (0,
|
|
4656
|
+
const containerClasses = (0, import_clsx46.clsx)(
|
|
4381
4657
|
"relative gap-4 px-6 before:absolute before:inset-x-0 before:bottom-0 before:h-px before:bg-uiBorder01",
|
|
4382
4658
|
{
|
|
4383
4659
|
flex: layout === "auto",
|
|
4384
4660
|
grid: layout === "equal"
|
|
4385
4661
|
}
|
|
4386
4662
|
);
|
|
4387
|
-
return /* @__PURE__ */ (0,
|
|
4663
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { role: "tablist", className: containerClasses, style: containerStyle, children });
|
|
4388
4664
|
}
|
|
4389
4665
|
Tab.Item = TabItem;
|
|
4390
4666
|
|
|
4391
4667
|
// src/table/table-cell.tsx
|
|
4392
|
-
var
|
|
4393
|
-
var
|
|
4668
|
+
var import_clsx47 = __toESM(require("clsx"));
|
|
4669
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
4394
4670
|
function TableCell({ children, className, isHeader = false }) {
|
|
4395
|
-
const classes = (0,
|
|
4396
|
-
return /* @__PURE__ */ (0,
|
|
4671
|
+
const classes = (0, import_clsx47.default)("border-b border-uiBorder01", { "sticky top-0 z-10 bg-white": isHeader }, className);
|
|
4672
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: classes, children });
|
|
4397
4673
|
}
|
|
4398
4674
|
|
|
4399
4675
|
// src/table/table-row.tsx
|
|
4400
|
-
var
|
|
4401
|
-
var
|
|
4676
|
+
var import_clsx48 = __toESM(require("clsx"));
|
|
4677
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
4402
4678
|
function TableRow({ children, isHoverBackgroundVisible = false }) {
|
|
4403
|
-
const rowClasses = (0,
|
|
4404
|
-
return /* @__PURE__ */ (0,
|
|
4679
|
+
const rowClasses = (0, import_clsx48.default)("contents", isHoverBackgroundVisible && "[&:hover>div]:bg-hoverUi02");
|
|
4680
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: rowClasses, children });
|
|
4405
4681
|
}
|
|
4406
4682
|
|
|
4407
4683
|
// src/table/table.tsx
|
|
4408
|
-
var
|
|
4684
|
+
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
4409
4685
|
function Table({
|
|
4410
4686
|
width,
|
|
4411
4687
|
templateRows,
|
|
@@ -4414,7 +4690,7 @@ function Table({
|
|
|
4414
4690
|
autoRows,
|
|
4415
4691
|
children
|
|
4416
4692
|
}) {
|
|
4417
|
-
return /* @__PURE__ */ (0,
|
|
4693
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
4418
4694
|
"div",
|
|
4419
4695
|
{
|
|
4420
4696
|
className: "grid",
|
|
@@ -4433,23 +4709,23 @@ Table.Row = TableRow;
|
|
|
4433
4709
|
Table.Cell = TableCell;
|
|
4434
4710
|
|
|
4435
4711
|
// src/tag/tag.tsx
|
|
4436
|
-
var
|
|
4437
|
-
var
|
|
4712
|
+
var import_component_theme22 = require("@zenkigen-inc/component-theme");
|
|
4713
|
+
var import_clsx50 = __toESM(require("clsx"));
|
|
4438
4714
|
|
|
4439
4715
|
// src/tag/delete-icon.tsx
|
|
4440
|
-
var
|
|
4441
|
-
var
|
|
4442
|
-
var
|
|
4716
|
+
var import_component_theme21 = require("@zenkigen-inc/component-theme");
|
|
4717
|
+
var import_clsx49 = __toESM(require("clsx"));
|
|
4718
|
+
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
4443
4719
|
var DeleteIcon = ({ color, variant, onClick }) => {
|
|
4444
|
-
const deleteButtonClasses = (0,
|
|
4720
|
+
const deleteButtonClasses = (0, import_clsx49.default)(
|
|
4445
4721
|
"group ml-2 size-[14px] rounded-full p-0.5 hover:cursor-pointer hover:bg-iconOnColor focus-visible:bg-iconOnColor",
|
|
4446
|
-
|
|
4722
|
+
import_component_theme21.focusVisible.normal
|
|
4447
4723
|
);
|
|
4448
|
-
const deletePathClasses = (0,
|
|
4724
|
+
const deletePathClasses = (0, import_clsx49.default)({
|
|
4449
4725
|
"fill-interactive02": color === "gray" || variant === "light",
|
|
4450
4726
|
"group-hover:fill-interactive02 group-focus-visible:fill-interactive02 fill-iconOnColor": color !== "gray"
|
|
4451
4727
|
});
|
|
4452
|
-
return /* @__PURE__ */ (0,
|
|
4728
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("button", { type: "button", className: deleteButtonClasses, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
4453
4729
|
"path",
|
|
4454
4730
|
{
|
|
4455
4731
|
fillRule: "evenodd",
|
|
@@ -4461,11 +4737,11 @@ var DeleteIcon = ({ color, variant, onClick }) => {
|
|
|
4461
4737
|
};
|
|
4462
4738
|
|
|
4463
4739
|
// src/tag/tag.tsx
|
|
4464
|
-
var
|
|
4740
|
+
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
4465
4741
|
function Tag({ id, children, color, variant = "normal", size = "medium", isEditable, onDelete }) {
|
|
4466
|
-
const wrapperClasses = (0,
|
|
4467
|
-
[
|
|
4468
|
-
[
|
|
4742
|
+
const wrapperClasses = (0, import_clsx50.default)("flex", "items-center", "justify-center", {
|
|
4743
|
+
[import_component_theme22.tagColors[color]]: variant === "normal",
|
|
4744
|
+
[import_component_theme22.tagLightColors[color]]: variant === "light",
|
|
4469
4745
|
"h-[14px] typography-label11regular": !isEditable && size === "x-small",
|
|
4470
4746
|
"h-4 typography-label12regular": !isEditable && size === "small",
|
|
4471
4747
|
"h-5 typography-label14regular": size === "medium",
|
|
@@ -4474,21 +4750,21 @@ function Tag({ id, children, color, variant = "normal", size = "medium", isEdita
|
|
|
4474
4750
|
"px-1": !isEditable,
|
|
4475
4751
|
"px-2": isEditable
|
|
4476
4752
|
});
|
|
4477
|
-
return /* @__PURE__ */ (0,
|
|
4753
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: wrapperClasses, children: [
|
|
4478
4754
|
children,
|
|
4479
|
-
isEditable ? /* @__PURE__ */ (0,
|
|
4755
|
+
isEditable ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(DeleteIcon, { onClick: () => onDelete(id), color, variant }) : null
|
|
4480
4756
|
] });
|
|
4481
4757
|
}
|
|
4482
4758
|
|
|
4483
4759
|
// src/text-area/text-area.tsx
|
|
4484
|
-
var
|
|
4485
|
-
var
|
|
4760
|
+
var import_clsx53 = require("clsx");
|
|
4761
|
+
var import_react69 = require("react");
|
|
4486
4762
|
|
|
4487
4763
|
// src/text-area/text-area-context.tsx
|
|
4488
|
-
var
|
|
4489
|
-
var TextAreaCompoundContext = (0,
|
|
4764
|
+
var import_react66 = require("react");
|
|
4765
|
+
var TextAreaCompoundContext = (0, import_react66.createContext)(null);
|
|
4490
4766
|
var useTextAreaCompoundContext = (componentName) => {
|
|
4491
|
-
const context = (0,
|
|
4767
|
+
const context = (0, import_react66.useContext)(TextAreaCompoundContext);
|
|
4492
4768
|
if (context == null) {
|
|
4493
4769
|
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`);
|
|
4494
4770
|
}
|
|
@@ -4496,10 +4772,10 @@ var useTextAreaCompoundContext = (componentName) => {
|
|
|
4496
4772
|
};
|
|
4497
4773
|
|
|
4498
4774
|
// src/text-area/text-area-error-message.tsx
|
|
4499
|
-
var
|
|
4500
|
-
var
|
|
4501
|
-
var
|
|
4502
|
-
var TextAreaErrorMessage = (0,
|
|
4775
|
+
var import_clsx51 = require("clsx");
|
|
4776
|
+
var import_react67 = require("react");
|
|
4777
|
+
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
4778
|
+
var TextAreaErrorMessage = (0, import_react67.forwardRef)(
|
|
4503
4779
|
({ "aria-live": ariaLive = "assertive", ...props }, ref) => {
|
|
4504
4780
|
const { textAreaProps } = useTextAreaCompoundContext("TextArea.ErrorMessage");
|
|
4505
4781
|
const typographyClass = textAreaProps.size === "large" ? "typography-label13regular" : "typography-label12regular";
|
|
@@ -4507,26 +4783,26 @@ var TextAreaErrorMessage = (0, import_react64.forwardRef)(
|
|
|
4507
4783
|
if (!shouldRender) {
|
|
4508
4784
|
return null;
|
|
4509
4785
|
}
|
|
4510
|
-
const errorMessageClassName = (0,
|
|
4511
|
-
return /* @__PURE__ */ (0,
|
|
4786
|
+
const errorMessageClassName = (0, import_clsx51.clsx)(typographyClass, "text-supportError");
|
|
4787
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", { ref, className: errorMessageClassName, "aria-live": ariaLive, ...props });
|
|
4512
4788
|
}
|
|
4513
4789
|
);
|
|
4514
4790
|
TextAreaErrorMessage.displayName = "TextArea.ErrorMessage";
|
|
4515
4791
|
|
|
4516
4792
|
// src/text-area/text-area-helper-message.tsx
|
|
4517
|
-
var
|
|
4518
|
-
var
|
|
4519
|
-
var
|
|
4520
|
-
var TextAreaHelperMessage = (0,
|
|
4793
|
+
var import_clsx52 = require("clsx");
|
|
4794
|
+
var import_react68 = require("react");
|
|
4795
|
+
var import_jsx_runtime75 = require("react/jsx-runtime");
|
|
4796
|
+
var TextAreaHelperMessage = (0, import_react68.forwardRef)((props, ref) => {
|
|
4521
4797
|
const { textAreaProps } = useTextAreaCompoundContext("TextArea.HelperMessage");
|
|
4522
4798
|
const typographyClass = textAreaProps.size === "large" ? "typography-label13regular" : "typography-label12regular";
|
|
4523
|
-
const helperMessageClassName = (0,
|
|
4524
|
-
return /* @__PURE__ */ (0,
|
|
4799
|
+
const helperMessageClassName = (0, import_clsx52.clsx)(typographyClass, "text-text02");
|
|
4800
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("div", { ref, className: helperMessageClassName, ...props });
|
|
4525
4801
|
});
|
|
4526
4802
|
TextAreaHelperMessage.displayName = "TextArea.HelperMessage";
|
|
4527
4803
|
|
|
4528
4804
|
// src/text-area/text-area.tsx
|
|
4529
|
-
var
|
|
4805
|
+
var import_jsx_runtime76 = require("react/jsx-runtime");
|
|
4530
4806
|
function TextAreaInner({
|
|
4531
4807
|
size = "medium",
|
|
4532
4808
|
variant = "outline",
|
|
@@ -4543,8 +4819,8 @@ function TextAreaInner({
|
|
|
4543
4819
|
maxLength,
|
|
4544
4820
|
...props
|
|
4545
4821
|
}, ref) {
|
|
4546
|
-
const autoGeneratedId = (0,
|
|
4547
|
-
const textAreaPropsForContext = (0,
|
|
4822
|
+
const autoGeneratedId = (0, import_react69.useId)();
|
|
4823
|
+
const textAreaPropsForContext = (0, import_react69.useMemo)(
|
|
4548
4824
|
() => ({
|
|
4549
4825
|
size,
|
|
4550
4826
|
variant,
|
|
@@ -4552,7 +4828,7 @@ function TextAreaInner({
|
|
|
4552
4828
|
}),
|
|
4553
4829
|
[size, variant, isError]
|
|
4554
4830
|
);
|
|
4555
|
-
const contextValue = (0,
|
|
4831
|
+
const contextValue = (0, import_react69.useMemo)(
|
|
4556
4832
|
() => ({
|
|
4557
4833
|
textAreaProps: textAreaPropsForContext,
|
|
4558
4834
|
forwardedRef: ref
|
|
@@ -4562,21 +4838,21 @@ function TextAreaInner({
|
|
|
4562
4838
|
const helperMessageIds = [];
|
|
4563
4839
|
const errorIds = [];
|
|
4564
4840
|
const describedByBaseId = props.id ?? autoGeneratedId;
|
|
4565
|
-
const enhancedChildren =
|
|
4566
|
-
if (!(0,
|
|
4841
|
+
const enhancedChildren = import_react69.Children.map(children, (child) => {
|
|
4842
|
+
if (!(0, import_react69.isValidElement)(child)) {
|
|
4567
4843
|
return child;
|
|
4568
4844
|
}
|
|
4569
4845
|
if (child.type === TextAreaHelperMessage) {
|
|
4570
4846
|
const helperChild = child;
|
|
4571
4847
|
const assignedId = helperChild.props.id ?? `${describedByBaseId}-helper-${helperMessageIds.length + 1}`;
|
|
4572
4848
|
helperMessageIds.push(assignedId);
|
|
4573
|
-
return (0,
|
|
4849
|
+
return (0, import_react69.cloneElement)(helperChild, { id: assignedId });
|
|
4574
4850
|
}
|
|
4575
4851
|
if (child.type === TextAreaErrorMessage && isError) {
|
|
4576
4852
|
const errorChild = child;
|
|
4577
4853
|
const assignedId = errorChild.props.id ?? `${describedByBaseId}-error-${errorIds.length + 1}`;
|
|
4578
4854
|
errorIds.push(assignedId);
|
|
4579
|
-
return (0,
|
|
4855
|
+
return (0, import_react69.cloneElement)(errorChild, { id: assignedId });
|
|
4580
4856
|
}
|
|
4581
4857
|
return child;
|
|
4582
4858
|
});
|
|
@@ -4603,7 +4879,7 @@ function TextAreaInner({
|
|
|
4603
4879
|
...maxLengthProps
|
|
4604
4880
|
};
|
|
4605
4881
|
const isBorderless = variant === "text";
|
|
4606
|
-
const textAreaWrapperClassName = (0,
|
|
4882
|
+
const textAreaWrapperClassName = (0, import_clsx53.clsx)(
|
|
4607
4883
|
"box-border flex w-full overflow-hidden rounded border",
|
|
4608
4884
|
{
|
|
4609
4885
|
// outline variant
|
|
@@ -4619,7 +4895,7 @@ function TextAreaInner({
|
|
|
4619
4895
|
// className は variant="outline" のみ受け入れ、後方互換のため wrapper の末尾に合成(@deprecated)
|
|
4620
4896
|
!isBorderless && className
|
|
4621
4897
|
);
|
|
4622
|
-
const textAreaClassName = (0,
|
|
4898
|
+
const textAreaClassName = (0, import_clsx53.clsx)("w-full border-none bg-uiBackground01 outline-none", {
|
|
4623
4899
|
// outline: 従来の padding
|
|
4624
4900
|
"typography-body14regular px-2 py-2": !isBorderless && size === "medium",
|
|
4625
4901
|
"typography-body16regular px-3 py-2": !isBorderless && size === "large",
|
|
@@ -4638,7 +4914,7 @@ function TextAreaInner({
|
|
|
4638
4914
|
"resize-none": !isResizable
|
|
4639
4915
|
});
|
|
4640
4916
|
const hasHeight = height != null && String(height).trim().length > 0;
|
|
4641
|
-
const textAreaElement = /* @__PURE__ */ (0,
|
|
4917
|
+
const textAreaElement = /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
4642
4918
|
"div",
|
|
4643
4919
|
{
|
|
4644
4920
|
className: textAreaWrapperClassName,
|
|
@@ -4649,7 +4925,7 @@ function TextAreaInner({
|
|
|
4649
4925
|
...!autoHeight && hasHeight && !isResizable ? { height } : {},
|
|
4650
4926
|
...autoHeight && hasHeight ? { minHeight: height } : {}
|
|
4651
4927
|
},
|
|
4652
|
-
children: /* @__PURE__ */ (0,
|
|
4928
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
4653
4929
|
"textarea",
|
|
4654
4930
|
{
|
|
4655
4931
|
ref,
|
|
@@ -4665,11 +4941,11 @@ function TextAreaInner({
|
|
|
4665
4941
|
)
|
|
4666
4942
|
}
|
|
4667
4943
|
);
|
|
4668
|
-
const counterElement = isCounterVisible ? /* @__PURE__ */ (0,
|
|
4944
|
+
const counterElement = isCounterVisible ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
4669
4945
|
"div",
|
|
4670
4946
|
{
|
|
4671
4947
|
id: counterId,
|
|
4672
|
-
className: (0,
|
|
4948
|
+
className: (0, import_clsx53.clsx)(
|
|
4673
4949
|
"shrink-0",
|
|
4674
4950
|
size === "large" ? "typography-label13regular" : "typography-label12regular",
|
|
4675
4951
|
!disabled && isExceeded ? "text-supportError" : "text-text02"
|
|
@@ -4678,17 +4954,17 @@ function TextAreaInner({
|
|
|
4678
4954
|
children: counterLimit != null ? `${currentLength}/${counterLimit}\u6587\u5B57` : `${currentLength}\u6587\u5B57`
|
|
4679
4955
|
}
|
|
4680
4956
|
) : null;
|
|
4681
|
-
const stackedChildren = enhancedChildren == null ? [] :
|
|
4957
|
+
const stackedChildren = enhancedChildren == null ? [] : import_react69.Children.toArray(enhancedChildren);
|
|
4682
4958
|
const hasMessageChildren = stackedChildren.length > 0;
|
|
4683
4959
|
const hasBottomContent = hasMessageChildren || counterElement != null;
|
|
4684
4960
|
if (!hasBottomContent) {
|
|
4685
|
-
return /* @__PURE__ */ (0,
|
|
4961
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(TextAreaCompoundContext.Provider, { value: contextValue, children: textAreaElement });
|
|
4686
4962
|
}
|
|
4687
|
-
return /* @__PURE__ */ (0,
|
|
4963
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(TextAreaCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
4688
4964
|
textAreaElement,
|
|
4689
|
-
/* @__PURE__ */ (0,
|
|
4690
|
-
hasMessageChildren && /* @__PURE__ */ (0,
|
|
4691
|
-
!hasMessageChildren && counterElement != null && /* @__PURE__ */ (0,
|
|
4965
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
|
|
4966
|
+
hasMessageChildren && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "flex min-w-0 flex-1 flex-col gap-2", children: stackedChildren }),
|
|
4967
|
+
!hasMessageChildren && counterElement != null && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "flex-1" }),
|
|
4692
4968
|
counterElement
|
|
4693
4969
|
] })
|
|
4694
4970
|
] }) });
|
|
@@ -4699,46 +4975,326 @@ var attachStatics2 = (component) => {
|
|
|
4699
4975
|
component.displayName = "TextArea";
|
|
4700
4976
|
return component;
|
|
4701
4977
|
};
|
|
4702
|
-
var TextAreaBase = (0,
|
|
4978
|
+
var TextAreaBase = (0, import_react69.forwardRef)(function TextAreaBase2(props, ref) {
|
|
4703
4979
|
return TextAreaInner(props, ref);
|
|
4704
4980
|
});
|
|
4705
4981
|
var TextArea = attachStatics2(TextAreaBase);
|
|
4706
4982
|
|
|
4983
|
+
// src/time-picker/time-picker.tsx
|
|
4984
|
+
var import_clsx55 = require("clsx");
|
|
4985
|
+
var import_react72 = require("react");
|
|
4986
|
+
|
|
4987
|
+
// src/time-picker/time-picker-context.tsx
|
|
4988
|
+
var import_react70 = require("react");
|
|
4989
|
+
var TimePickerCompoundContext = (0, import_react70.createContext)(null);
|
|
4990
|
+
var useTimePickerCompoundContext = (componentName) => {
|
|
4991
|
+
const context = (0, import_react70.useContext)(TimePickerCompoundContext);
|
|
4992
|
+
if (context == null) {
|
|
4993
|
+
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`);
|
|
4994
|
+
}
|
|
4995
|
+
return context;
|
|
4996
|
+
};
|
|
4997
|
+
|
|
4998
|
+
// src/time-picker/time-picker-error-message.tsx
|
|
4999
|
+
var import_clsx54 = require("clsx");
|
|
5000
|
+
var import_react71 = require("react");
|
|
5001
|
+
var import_jsx_runtime77 = require("react/jsx-runtime");
|
|
5002
|
+
var TimePickerErrorMessage = (0, import_react71.forwardRef)(
|
|
5003
|
+
({ "aria-live": ariaLive = "assertive", ...props }, ref) => {
|
|
5004
|
+
const { size, isError } = useTimePickerCompoundContext("TimePicker.ErrorMessage");
|
|
5005
|
+
const typographyClass = size === "large" ? "typography-label12regular" : "typography-label11regular";
|
|
5006
|
+
if (isError !== true) {
|
|
5007
|
+
return null;
|
|
5008
|
+
}
|
|
5009
|
+
const errorMessageClassName = (0, import_clsx54.clsx)(typographyClass, "text-supportError");
|
|
5010
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { ref, className: errorMessageClassName, "aria-live": ariaLive, ...props });
|
|
5011
|
+
}
|
|
5012
|
+
);
|
|
5013
|
+
TimePickerErrorMessage.displayName = "TimePicker.ErrorMessage";
|
|
5014
|
+
|
|
5015
|
+
// src/time-picker/time-picker-utils.ts
|
|
5016
|
+
var MIN_HOUR = 0;
|
|
5017
|
+
var MAX_HOUR = 23;
|
|
5018
|
+
var MIN_MINUTE = 0;
|
|
5019
|
+
var MAX_MINUTE = 59;
|
|
5020
|
+
var MINUTES_PER_HOUR = 60;
|
|
5021
|
+
var padZero = (value) => String(value).padStart(2, "0");
|
|
5022
|
+
var toTotalMinutes = (hour, minute) => hour * MINUTES_PER_HOUR + minute;
|
|
5023
|
+
var createHourOption = (hour) => ({
|
|
5024
|
+
id: `hour-${hour}`,
|
|
5025
|
+
value: String(hour),
|
|
5026
|
+
label: padZero(hour)
|
|
5027
|
+
});
|
|
5028
|
+
var createMinuteOption = (minute) => ({
|
|
5029
|
+
id: `minute-${minute}`,
|
|
5030
|
+
value: String(minute),
|
|
5031
|
+
label: padZero(minute)
|
|
5032
|
+
});
|
|
5033
|
+
var parseTime = (time) => {
|
|
5034
|
+
const match = /^(\d{1,2}):(\d{1,2})$/.exec(time);
|
|
5035
|
+
if (match == null) {
|
|
5036
|
+
return null;
|
|
5037
|
+
}
|
|
5038
|
+
const hour = Number(match[1]);
|
|
5039
|
+
const minute = Number(match[2]);
|
|
5040
|
+
if (Number.isNaN(hour) || Number.isNaN(minute)) {
|
|
5041
|
+
return null;
|
|
5042
|
+
}
|
|
5043
|
+
if (hour < MIN_HOUR || hour > MAX_HOUR || minute < MIN_MINUTE || minute > MAX_MINUTE) {
|
|
5044
|
+
return null;
|
|
5045
|
+
}
|
|
5046
|
+
return { hour, minute };
|
|
5047
|
+
};
|
|
5048
|
+
var formatTime = (value) => {
|
|
5049
|
+
if (value.hour == null || value.minute == null) {
|
|
5050
|
+
return null;
|
|
5051
|
+
}
|
|
5052
|
+
return `${padZero(value.hour)}:${padZero(value.minute)}`;
|
|
5053
|
+
};
|
|
5054
|
+
var isTimeInRange = (hour, minute, minTime, maxTime) => {
|
|
5055
|
+
const total = toTotalMinutes(hour, minute);
|
|
5056
|
+
const min = minTime != null ? parseTime(minTime) : null;
|
|
5057
|
+
const max = maxTime != null ? parseTime(maxTime) : null;
|
|
5058
|
+
if (min != null && total < toTotalMinutes(min.hour, min.minute)) {
|
|
5059
|
+
return false;
|
|
5060
|
+
}
|
|
5061
|
+
if (max != null && total > toTotalMinutes(max.hour, max.minute)) {
|
|
5062
|
+
return false;
|
|
5063
|
+
}
|
|
5064
|
+
return true;
|
|
5065
|
+
};
|
|
5066
|
+
var isMinuteAvailableForAnyHour = (minute, minTime, maxTime) => {
|
|
5067
|
+
for (let hour = MIN_HOUR; hour <= MAX_HOUR; hour += 1) {
|
|
5068
|
+
if (isTimeInRange(hour, minute, minTime, maxTime)) {
|
|
5069
|
+
return true;
|
|
5070
|
+
}
|
|
5071
|
+
}
|
|
5072
|
+
return false;
|
|
5073
|
+
};
|
|
5074
|
+
var generateMinuteOptions = (minuteStep, selectedHour, minTime, maxTime) => {
|
|
5075
|
+
const min = minTime != null ? parseTime(minTime) : null;
|
|
5076
|
+
const max = maxTime != null ? parseTime(maxTime) : null;
|
|
5077
|
+
const shouldFilterByRange = min != null || max != null;
|
|
5078
|
+
const options = [];
|
|
5079
|
+
for (let minute = MIN_MINUTE; minute <= MAX_MINUTE; minute += minuteStep) {
|
|
5080
|
+
if (shouldFilterByRange) {
|
|
5081
|
+
const isAvailable = selectedHour != null ? isTimeInRange(selectedHour, minute, minTime, maxTime) : isMinuteAvailableForAnyHour(minute, minTime, maxTime);
|
|
5082
|
+
if (!isAvailable) {
|
|
5083
|
+
continue;
|
|
5084
|
+
}
|
|
5085
|
+
}
|
|
5086
|
+
options.push(createMinuteOption(minute));
|
|
5087
|
+
}
|
|
5088
|
+
return options;
|
|
5089
|
+
};
|
|
5090
|
+
var generateHourOptions = (minuteStep, minTime, maxTime) => {
|
|
5091
|
+
const options = [];
|
|
5092
|
+
for (let hour = MIN_HOUR; hour <= MAX_HOUR; hour += 1) {
|
|
5093
|
+
if (generateMinuteOptions(minuteStep, hour, minTime, maxTime).length === 0) {
|
|
5094
|
+
continue;
|
|
5095
|
+
}
|
|
5096
|
+
options.push(createHourOption(hour));
|
|
5097
|
+
}
|
|
5098
|
+
return options;
|
|
5099
|
+
};
|
|
5100
|
+
|
|
5101
|
+
// src/time-picker/time-picker.tsx
|
|
5102
|
+
var import_jsx_runtime78 = require("react/jsx-runtime");
|
|
5103
|
+
var SELECT_WIDTH_BY_SIZE = {
|
|
5104
|
+
"x-small": 80,
|
|
5105
|
+
small: 80,
|
|
5106
|
+
medium: 80,
|
|
5107
|
+
large: 88
|
|
5108
|
+
};
|
|
5109
|
+
var PLACEHOLDER = "--";
|
|
5110
|
+
var HOUR_ARIA_LABEL = "\u6642";
|
|
5111
|
+
var MINUTE_ARIA_LABEL = "\u5206";
|
|
5112
|
+
var createTriggerAriaLabel = (baseLabel, selectedOption) => selectedOption != null ? `${baseLabel} ${selectedOption.label}` : baseLabel;
|
|
5113
|
+
var OPTION_LIST_MAX_HEIGHT = "250px";
|
|
5114
|
+
var TimePicker = ({
|
|
5115
|
+
value,
|
|
5116
|
+
onChange,
|
|
5117
|
+
size = "medium",
|
|
5118
|
+
minuteStep = 1,
|
|
5119
|
+
minTime,
|
|
5120
|
+
maxTime,
|
|
5121
|
+
isDisabled = false,
|
|
5122
|
+
isError = false,
|
|
5123
|
+
children
|
|
5124
|
+
}) => {
|
|
5125
|
+
const autoGeneratedId = (0, import_react72.useId)();
|
|
5126
|
+
const hourOptions = (0, import_react72.useMemo)(() => generateHourOptions(minuteStep, minTime, maxTime), [minuteStep, minTime, maxTime]);
|
|
5127
|
+
const minuteOptions = (0, import_react72.useMemo)(
|
|
5128
|
+
() => generateMinuteOptions(minuteStep, value.hour, minTime, maxTime),
|
|
5129
|
+
[minuteStep, value.hour, minTime, maxTime]
|
|
5130
|
+
);
|
|
5131
|
+
const selectedHourOption = value.hour != null ? createHourOption(value.hour) : null;
|
|
5132
|
+
const selectedMinuteOption = value.minute != null ? createMinuteOption(value.minute) : null;
|
|
5133
|
+
const handleHourChange = (option) => {
|
|
5134
|
+
const nextHour = option != null ? Number(option.value) : null;
|
|
5135
|
+
const shouldResetMinute = nextHour != null && value.minute != null && !isTimeInRange(nextHour, value.minute, minTime, maxTime);
|
|
5136
|
+
onChange({ hour: nextHour, minute: shouldResetMinute ? null : value.minute });
|
|
5137
|
+
};
|
|
5138
|
+
const handleMinuteChange = (option) => {
|
|
5139
|
+
onChange({ hour: value.hour, minute: option != null ? Number(option.value) : null });
|
|
5140
|
+
};
|
|
5141
|
+
const errorIds = [];
|
|
5142
|
+
const assignErrorIds = (nodes) => import_react72.Children.map(nodes, (child) => {
|
|
5143
|
+
if (!(0, import_react72.isValidElement)(child)) {
|
|
5144
|
+
return child;
|
|
5145
|
+
}
|
|
5146
|
+
if (child.type === import_react72.Fragment) {
|
|
5147
|
+
const fragmentChild = child;
|
|
5148
|
+
return (0, import_react72.cloneElement)(fragmentChild, {}, assignErrorIds(fragmentChild.props.children));
|
|
5149
|
+
}
|
|
5150
|
+
if (child.type === TimePickerErrorMessage && isError) {
|
|
5151
|
+
const errorChild = child;
|
|
5152
|
+
const assignedId = errorChild.props.id ?? `${autoGeneratedId}-error-${errorIds.length + 1}`;
|
|
5153
|
+
errorIds.push(assignedId);
|
|
5154
|
+
return (0, import_react72.cloneElement)(errorChild, { id: assignedId });
|
|
5155
|
+
}
|
|
5156
|
+
return child;
|
|
5157
|
+
});
|
|
5158
|
+
const enhancedChildren = assignErrorIds(children);
|
|
5159
|
+
const sharedAriaProps = errorIds.length > 0 ? { "aria-describedby": errorIds.join(" ") } : {};
|
|
5160
|
+
const separatorClasses = (0, import_clsx55.clsx)("text-text02", {
|
|
5161
|
+
"typography-label12regular": size === "x-small",
|
|
5162
|
+
"typography-label14regular": size === "small" || size === "medium",
|
|
5163
|
+
"typography-label16regular": size === "large"
|
|
5164
|
+
});
|
|
5165
|
+
const selectWidth = SELECT_WIDTH_BY_SIZE[size];
|
|
5166
|
+
const contextValue = (0, import_react72.useMemo)(() => ({ size, isError }), [size, isError]);
|
|
5167
|
+
const timeInputs = /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
5168
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
5169
|
+
Select,
|
|
5170
|
+
{
|
|
5171
|
+
size,
|
|
5172
|
+
width: selectWidth,
|
|
5173
|
+
placeholder: PLACEHOLDER,
|
|
5174
|
+
selectedOption: selectedHourOption,
|
|
5175
|
+
isDisabled,
|
|
5176
|
+
isError,
|
|
5177
|
+
optionListMaxHeight: OPTION_LIST_MAX_HEIGHT,
|
|
5178
|
+
"aria-label": createTriggerAriaLabel(HOUR_ARIA_LABEL, selectedHourOption),
|
|
5179
|
+
...sharedAriaProps,
|
|
5180
|
+
onChange: handleHourChange,
|
|
5181
|
+
children: hourOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Select.Option, { option }, option.id))
|
|
5182
|
+
}
|
|
5183
|
+
),
|
|
5184
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: separatorClasses, children: ":" }),
|
|
5185
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
5186
|
+
Select,
|
|
5187
|
+
{
|
|
5188
|
+
size,
|
|
5189
|
+
width: selectWidth,
|
|
5190
|
+
placeholder: PLACEHOLDER,
|
|
5191
|
+
selectedOption: selectedMinuteOption,
|
|
5192
|
+
isDisabled,
|
|
5193
|
+
isError,
|
|
5194
|
+
optionListMaxHeight: OPTION_LIST_MAX_HEIGHT,
|
|
5195
|
+
"aria-label": createTriggerAriaLabel(MINUTE_ARIA_LABEL, selectedMinuteOption),
|
|
5196
|
+
...sharedAriaProps,
|
|
5197
|
+
onChange: handleMinuteChange,
|
|
5198
|
+
children: minuteOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Select.Option, { option }, option.id))
|
|
5199
|
+
}
|
|
5200
|
+
)
|
|
5201
|
+
] });
|
|
5202
|
+
const stackedChildren = enhancedChildren == null ? [] : import_react72.Children.toArray(enhancedChildren);
|
|
5203
|
+
const hasMessageChildren = stackedChildren.length > 0;
|
|
5204
|
+
if (!hasMessageChildren) {
|
|
5205
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(TimePickerCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "flex flex-col", children: timeInputs }) });
|
|
5206
|
+
}
|
|
5207
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(TimePickerCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
5208
|
+
timeInputs,
|
|
5209
|
+
stackedChildren
|
|
5210
|
+
] }) });
|
|
5211
|
+
};
|
|
5212
|
+
TimePicker.ErrorMessage = TimePickerErrorMessage;
|
|
5213
|
+
TimePicker.displayName = "TimePicker";
|
|
5214
|
+
|
|
4707
5215
|
// src/toast/toast.tsx
|
|
4708
|
-
var
|
|
4709
|
-
var
|
|
4710
|
-
var
|
|
5216
|
+
var import_clsx56 = require("clsx");
|
|
5217
|
+
var import_react73 = require("react");
|
|
5218
|
+
var import_jsx_runtime79 = require("react/jsx-runtime");
|
|
4711
5219
|
var CLOSE_TIME_MSEC = 5e3;
|
|
5220
|
+
var REMOVAL_FALLBACK_MSEC = 1e3;
|
|
4712
5221
|
function Toast({
|
|
4713
5222
|
state = "information",
|
|
4714
5223
|
width = "auto",
|
|
5224
|
+
// 既定 false は v1.22.0 までの互換維持のため据え置き(自動クローズしない既定では、安全弁により閉じるボタンが表示される)。
|
|
5225
|
+
// 「自動クローズ・閉じるボタンなし」の新しい既定は ToastProvider が isAutoClose を明示的に渡すことで実現している。
|
|
4715
5226
|
isAutoClose = false,
|
|
4716
5227
|
isAnimation = false,
|
|
5228
|
+
hasCloseButton = false,
|
|
5229
|
+
description,
|
|
4717
5230
|
children,
|
|
4718
5231
|
onClickClose
|
|
4719
5232
|
}) {
|
|
4720
|
-
const [isRemoving, setIsRemoving] = (0,
|
|
4721
|
-
const
|
|
5233
|
+
const [isRemoving, setIsRemoving] = (0, import_react73.useState)(false);
|
|
5234
|
+
const onClickCloseRef = (0, import_react73.useRef)(onClickClose);
|
|
5235
|
+
(0, import_react73.useEffect)(() => {
|
|
5236
|
+
onClickCloseRef.current = onClickClose;
|
|
5237
|
+
}, [onClickClose]);
|
|
5238
|
+
const hasNotifiedCloseRef = (0, import_react73.useRef)(false);
|
|
5239
|
+
const notifyClose = (0, import_react73.useCallback)(() => {
|
|
5240
|
+
if (hasNotifiedCloseRef.current) {
|
|
5241
|
+
return;
|
|
5242
|
+
}
|
|
5243
|
+
hasNotifiedCloseRef.current = true;
|
|
5244
|
+
onClickCloseRef.current();
|
|
5245
|
+
}, []);
|
|
5246
|
+
const handleClose = (0, import_react73.useCallback)(() => {
|
|
4722
5247
|
if (isAnimation) {
|
|
4723
5248
|
setIsRemoving(true);
|
|
4724
5249
|
} else {
|
|
4725
|
-
|
|
5250
|
+
notifyClose();
|
|
4726
5251
|
}
|
|
4727
|
-
}, [isAnimation,
|
|
4728
|
-
const handleAnimationEnd = (e) =>
|
|
4729
|
-
|
|
4730
|
-
|
|
4731
|
-
|
|
4732
|
-
|
|
4733
|
-
|
|
5252
|
+
}, [isAnimation, notifyClose]);
|
|
5253
|
+
const handleAnimationEnd = (e) => {
|
|
5254
|
+
if (e.target !== e.currentTarget) {
|
|
5255
|
+
return;
|
|
5256
|
+
}
|
|
5257
|
+
if (window.getComputedStyle(e.currentTarget).opacity === "0") {
|
|
5258
|
+
notifyClose();
|
|
5259
|
+
}
|
|
5260
|
+
};
|
|
5261
|
+
(0, import_react73.useEffect)(() => {
|
|
5262
|
+
if (!isAutoClose) {
|
|
5263
|
+
return;
|
|
5264
|
+
}
|
|
5265
|
+
const timer = window.setTimeout(() => {
|
|
5266
|
+
if (isAnimation) {
|
|
5267
|
+
setIsRemoving(true);
|
|
5268
|
+
} else {
|
|
5269
|
+
notifyClose();
|
|
5270
|
+
}
|
|
5271
|
+
}, CLOSE_TIME_MSEC);
|
|
5272
|
+
return () => window.clearTimeout(timer);
|
|
5273
|
+
}, [isAutoClose, isAnimation, notifyClose]);
|
|
5274
|
+
(0, import_react73.useEffect)(() => {
|
|
5275
|
+
if (!isRemoving) {
|
|
5276
|
+
return;
|
|
5277
|
+
}
|
|
5278
|
+
const fallbackTimer = window.setTimeout(notifyClose, REMOVAL_FALLBACK_MSEC);
|
|
5279
|
+
return () => window.clearTimeout(fallbackTimer);
|
|
5280
|
+
}, [isRemoving, notifyClose]);
|
|
5281
|
+
const isCloseButtonShown = hasCloseButton || !isAutoClose;
|
|
5282
|
+
const wrapperClasses = (0, import_clsx56.clsx)(
|
|
5283
|
+
"pointer-events-auto flex items-center gap-3 rounded border border-solid border-uiBorder01 bg-uiBackground01 p-4 shadow-floatingShadow",
|
|
5284
|
+
{
|
|
5285
|
+
["animate-toast-in"]: isAnimation && !isRemoving,
|
|
5286
|
+
["animate-toast-out opacity-0"]: isAnimation && isRemoving
|
|
5287
|
+
}
|
|
5288
|
+
);
|
|
5289
|
+
const iconClasses = (0, import_clsx56.clsx)("flex shrink-0 items-center", {
|
|
4734
5290
|
"fill-supportSuccess": state === "success",
|
|
4735
5291
|
"fill-supportError": state === "error",
|
|
4736
5292
|
"fill-supportWarning": state === "warning",
|
|
4737
5293
|
"fill-supportInfo": state === "information"
|
|
4738
5294
|
});
|
|
4739
|
-
const
|
|
5295
|
+
const titleClasses = (0, import_clsx56.clsx)("typography-body13regular break-words", {
|
|
4740
5296
|
"text-supportError": state === "error",
|
|
4741
|
-
"text-text01": state
|
|
5297
|
+
"text-text01": state !== "error"
|
|
4742
5298
|
});
|
|
4743
5299
|
const iconName = {
|
|
4744
5300
|
success: "success-filled",
|
|
@@ -4746,53 +5302,86 @@ function Toast({
|
|
|
4746
5302
|
warning: "warning",
|
|
4747
5303
|
information: "information-filled"
|
|
4748
5304
|
};
|
|
4749
|
-
(0,
|
|
4750
|
-
|
|
4751
|
-
|
|
4752
|
-
|
|
4753
|
-
|
|
4754
|
-
|
|
4755
|
-
|
|
4756
|
-
|
|
4757
|
-
|
|
4758
|
-
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { className: iconClasses, children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Icon, { name: iconName[state] }) }),
|
|
4759
|
-
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)("p", { className: textClasses, children }),
|
|
4760
|
-
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(IconButton, { icon: "close", size: "medium", variant: "text", onClick: handleClose, isNoPadding: true })
|
|
5305
|
+
return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: wrapperClasses, style: { width }, onAnimationEnd: handleAnimationEnd, children: [
|
|
5306
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: "flex min-w-0 flex-1 items-start gap-1", children: [
|
|
5307
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { className: iconClasses, children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(Icon, { name: iconName[state] }) }),
|
|
5308
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-2 pt-[3px]", children: [
|
|
5309
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)("p", { className: titleClasses, children }),
|
|
5310
|
+
description != null && description !== "" && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("p", { className: "typography-label12regular break-words text-text01", children: description })
|
|
5311
|
+
] })
|
|
5312
|
+
] }),
|
|
5313
|
+
isCloseButtonShown && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { className: "flex shrink-0 items-center", children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(IconButton, { icon: "close", size: "medium", variant: "text", isNoPadding: true, "aria-label": "\u9589\u3058\u308B", onClick: handleClose }) })
|
|
4761
5314
|
] });
|
|
4762
5315
|
}
|
|
4763
5316
|
|
|
4764
5317
|
// src/toast/toast-provider.tsx
|
|
4765
|
-
var
|
|
5318
|
+
var import_react74 = require("react");
|
|
4766
5319
|
var import_react_dom3 = require("react-dom");
|
|
4767
|
-
var
|
|
4768
|
-
var ToastContext = (0,
|
|
4769
|
-
var ToastProvider = ({ children }) => {
|
|
4770
|
-
const [isClientRender, setIsClientRender] = (0,
|
|
4771
|
-
const [toasts, setToasts] = (0,
|
|
4772
|
-
const
|
|
4773
|
-
|
|
4774
|
-
|
|
4775
|
-
|
|
5320
|
+
var import_jsx_runtime80 = require("react/jsx-runtime");
|
|
5321
|
+
var ToastContext = (0, import_react74.createContext)({});
|
|
5322
|
+
var ToastProvider = ({ children, hasCloseButton = false }) => {
|
|
5323
|
+
const [isClientRender, setIsClientRender] = (0, import_react74.useState)(false);
|
|
5324
|
+
const [toasts, setToasts] = (0, import_react74.useState)([]);
|
|
5325
|
+
const nextIdRef = (0, import_react74.useRef)(0);
|
|
5326
|
+
const addToast = (0, import_react74.useCallback)(
|
|
5327
|
+
(args) => {
|
|
5328
|
+
nextIdRef.current += 1;
|
|
5329
|
+
const id = nextIdRef.current;
|
|
5330
|
+
setToasts((prev) => [
|
|
5331
|
+
...prev,
|
|
5332
|
+
{
|
|
5333
|
+
id,
|
|
5334
|
+
message: args.message,
|
|
5335
|
+
state: args.state,
|
|
5336
|
+
description: args.description,
|
|
5337
|
+
hasCloseButton: args.hasCloseButton ?? hasCloseButton,
|
|
5338
|
+
isAutoClose: args.isAutoClose ?? true
|
|
5339
|
+
}
|
|
5340
|
+
]);
|
|
5341
|
+
},
|
|
5342
|
+
[hasCloseButton]
|
|
5343
|
+
);
|
|
5344
|
+
const removeToast = (0, import_react74.useCallback)((id) => {
|
|
4776
5345
|
setToasts((prev) => prev.filter((snackbar) => snackbar.id !== id));
|
|
4777
5346
|
}, []);
|
|
4778
|
-
(0,
|
|
5347
|
+
(0, import_react74.useEffect)(() => {
|
|
4779
5348
|
setIsClientRender(true);
|
|
4780
5349
|
}, []);
|
|
4781
|
-
return /* @__PURE__ */ (0,
|
|
5350
|
+
return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(ToastContext.Provider, { value: { addToast, removeToast }, children: [
|
|
4782
5351
|
children,
|
|
4783
5352
|
isClientRender && (0, import_react_dom3.createPortal)(
|
|
4784
|
-
/* @__PURE__ */ (0,
|
|
5353
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
5354
|
+
"div",
|
|
5355
|
+
{
|
|
5356
|
+
role: "region",
|
|
5357
|
+
"aria-label": "\u901A\u77E5",
|
|
5358
|
+
className: "pointer-events-none fixed bottom-0 left-0 z-toast mb-4 ml-4 flex w-full flex-col-reverse gap-4",
|
|
5359
|
+
children: toasts.map((toast) => /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { role: toast.state === "error" ? "alert" : "status", children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
5360
|
+
Toast,
|
|
5361
|
+
{
|
|
5362
|
+
state: toast.state,
|
|
5363
|
+
description: toast.description,
|
|
5364
|
+
hasCloseButton: toast.hasCloseButton,
|
|
5365
|
+
isAutoClose: toast.isAutoClose,
|
|
5366
|
+
isAnimation: true,
|
|
5367
|
+
width: 475,
|
|
5368
|
+
onClickClose: () => removeToast(toast.id),
|
|
5369
|
+
children: toast.message
|
|
5370
|
+
}
|
|
5371
|
+
) }, toast.id))
|
|
5372
|
+
}
|
|
5373
|
+
),
|
|
4785
5374
|
document.body
|
|
4786
5375
|
)
|
|
4787
5376
|
] });
|
|
4788
5377
|
};
|
|
4789
5378
|
var useToast = () => {
|
|
4790
|
-
return (0,
|
|
5379
|
+
return (0, import_react74.useContext)(ToastContext);
|
|
4791
5380
|
};
|
|
4792
5381
|
|
|
4793
5382
|
// src/toggle/toggle.tsx
|
|
4794
|
-
var
|
|
4795
|
-
var
|
|
5383
|
+
var import_clsx57 = __toESM(require("clsx"));
|
|
5384
|
+
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
4796
5385
|
function Toggle({
|
|
4797
5386
|
id,
|
|
4798
5387
|
size = "medium",
|
|
@@ -4802,7 +5391,7 @@ function Toggle({
|
|
|
4802
5391
|
labelPosition = "right",
|
|
4803
5392
|
isDisabled = false
|
|
4804
5393
|
}) {
|
|
4805
|
-
const baseClasses = (0,
|
|
5394
|
+
const baseClasses = (0, import_clsx57.default)("relative flex items-center rounded-full", {
|
|
4806
5395
|
"bg-disabledOn": isDisabled && isChecked,
|
|
4807
5396
|
"bg-disabled01": isDisabled && !isChecked,
|
|
4808
5397
|
"bg-interactive01 peer-hover:bg-hover01": !isDisabled && isChecked,
|
|
@@ -4810,16 +5399,16 @@ function Toggle({
|
|
|
4810
5399
|
"w-8 h-4 px-[3px]": size === "small",
|
|
4811
5400
|
"w-12 h-6 px-1": size === "medium" || size === "large"
|
|
4812
5401
|
});
|
|
4813
|
-
const inputClasses = (0,
|
|
5402
|
+
const inputClasses = (0, import_clsx57.default)(
|
|
4814
5403
|
"peer absolute inset-0 z-[1] opacity-0",
|
|
4815
5404
|
isDisabled ? "cursor-not-allowed" : "cursor-pointer"
|
|
4816
5405
|
);
|
|
4817
|
-
const indicatorClasses = (0,
|
|
5406
|
+
const indicatorClasses = (0, import_clsx57.default)("rounded-full bg-iconOnColor", {
|
|
4818
5407
|
"w-2.5 h-2.5": size === "small",
|
|
4819
5408
|
"w-4 h-4": size === "medium" || size === "large",
|
|
4820
5409
|
"ml-auto": isChecked
|
|
4821
5410
|
});
|
|
4822
|
-
const labelClasses = (0,
|
|
5411
|
+
const labelClasses = (0, import_clsx57.default)("break-all", {
|
|
4823
5412
|
"mr-2": labelPosition === "left",
|
|
4824
5413
|
"ml-2": labelPosition === "right",
|
|
4825
5414
|
"typography-label14regular": size === "small" || size === "medium",
|
|
@@ -4827,9 +5416,9 @@ function Toggle({
|
|
|
4827
5416
|
"pointer-events-none cursor-not-allowed text-disabled01": isDisabled,
|
|
4828
5417
|
"cursor-pointer text-text01": !isDisabled
|
|
4829
5418
|
});
|
|
4830
|
-
return /* @__PURE__ */ (0,
|
|
4831
|
-
label != null && labelPosition === "left" && /* @__PURE__ */ (0,
|
|
4832
|
-
/* @__PURE__ */ (0,
|
|
5419
|
+
return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "relative flex flex-[0_0_auto] items-center", children: [
|
|
5420
|
+
label != null && labelPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("label", { htmlFor: id, className: labelClasses, children: label }),
|
|
5421
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
4833
5422
|
"input",
|
|
4834
5423
|
{
|
|
4835
5424
|
className: inputClasses,
|
|
@@ -4841,23 +5430,23 @@ function Toggle({
|
|
|
4841
5430
|
disabled: isDisabled
|
|
4842
5431
|
}
|
|
4843
5432
|
),
|
|
4844
|
-
/* @__PURE__ */ (0,
|
|
4845
|
-
label != null && labelPosition === "right" && /* @__PURE__ */ (0,
|
|
5433
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: baseClasses, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: indicatorClasses }) }),
|
|
5434
|
+
label != null && labelPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("label", { htmlFor: id, className: labelClasses, children: label })
|
|
4846
5435
|
] });
|
|
4847
5436
|
}
|
|
4848
5437
|
|
|
4849
5438
|
// src/tooltip/tooltip.tsx
|
|
4850
|
-
var
|
|
5439
|
+
var import_react76 = require("react");
|
|
4851
5440
|
var import_react_dom4 = require("react-dom");
|
|
4852
5441
|
|
|
4853
5442
|
// src/tooltip/tooltip-content.tsx
|
|
4854
|
-
var
|
|
5443
|
+
var import_clsx59 = __toESM(require("clsx"));
|
|
4855
5444
|
|
|
4856
5445
|
// src/tooltip/tail-icon.tsx
|
|
4857
|
-
var
|
|
4858
|
-
var
|
|
5446
|
+
var import_clsx58 = __toESM(require("clsx"));
|
|
5447
|
+
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
4859
5448
|
var TailIcon = (props) => {
|
|
4860
|
-
const tailClasses = (0,
|
|
5449
|
+
const tailClasses = (0, import_clsx58.default)("absolute fill-uiBackgroundTooltip", {
|
|
4861
5450
|
"rotate-180": props.verticalPosition === "bottom",
|
|
4862
5451
|
"rotate-0": props.verticalPosition !== "bottom",
|
|
4863
5452
|
"-top-1": props.verticalPosition === "bottom" && props.size === "small",
|
|
@@ -4872,9 +5461,9 @@ var TailIcon = (props) => {
|
|
|
4872
5461
|
"left-1/2 -translate-x-2": props.horizontalAlign === "center" && props.size !== "small"
|
|
4873
5462
|
});
|
|
4874
5463
|
if (props.size === "small") {
|
|
4875
|
-
return /* @__PURE__ */ (0,
|
|
5464
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("svg", { className: tailClasses, width: "8", height: "4", viewBox: "0 0 8 4", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("path", { d: "M4 4L0 0H8L4 4Z" }) });
|
|
4876
5465
|
} else {
|
|
4877
|
-
return /* @__PURE__ */ (0,
|
|
5466
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
4878
5467
|
"svg",
|
|
4879
5468
|
{
|
|
4880
5469
|
className: tailClasses,
|
|
@@ -4883,14 +5472,14 @@ var TailIcon = (props) => {
|
|
|
4883
5472
|
viewBox: "0 0 14 8",
|
|
4884
5473
|
fill: "none",
|
|
4885
5474
|
xmlns: "http://www.w3.org/2000/svg",
|
|
4886
|
-
children: /* @__PURE__ */ (0,
|
|
5475
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("path", { d: "M7 8L0 0H14L7 8Z" })
|
|
4887
5476
|
}
|
|
4888
5477
|
);
|
|
4889
5478
|
}
|
|
4890
5479
|
};
|
|
4891
5480
|
|
|
4892
5481
|
// src/tooltip/tooltip-content.tsx
|
|
4893
|
-
var
|
|
5482
|
+
var import_jsx_runtime83 = require("react/jsx-runtime");
|
|
4894
5483
|
var TooltipContent = ({
|
|
4895
5484
|
content,
|
|
4896
5485
|
horizontalAlign,
|
|
@@ -4900,7 +5489,7 @@ var TooltipContent = ({
|
|
|
4900
5489
|
maxWidth,
|
|
4901
5490
|
isPortal = false
|
|
4902
5491
|
}) => {
|
|
4903
|
-
const tooltipWrapperClasses = (0,
|
|
5492
|
+
const tooltipWrapperClasses = (0, import_clsx59.default)("absolute z-tooltip m-auto flex", {
|
|
4904
5493
|
"top-0": !isPortal && verticalPosition === "top",
|
|
4905
5494
|
"bottom-0": !isPortal && verticalPosition === "bottom",
|
|
4906
5495
|
"justify-start": horizontalAlign === "left",
|
|
@@ -4909,7 +5498,7 @@ var TooltipContent = ({
|
|
|
4909
5498
|
"w-[24px]": size === "small",
|
|
4910
5499
|
"w-[46px]": size !== "small"
|
|
4911
5500
|
});
|
|
4912
|
-
const tooltipBodyClasses = (0,
|
|
5501
|
+
const tooltipBodyClasses = (0, import_clsx59.default)(
|
|
4913
5502
|
"absolute z-tooltip inline-block w-max rounded bg-uiBackgroundTooltip text-textOnColor",
|
|
4914
5503
|
{
|
|
4915
5504
|
"typography-body12regular": size === "small",
|
|
@@ -4926,7 +5515,7 @@ var TooltipContent = ({
|
|
|
4926
5515
|
transform: `translate(${tooltipPosition.translateX}, ${tooltipPosition.translateY})`,
|
|
4927
5516
|
...tooltipPosition
|
|
4928
5517
|
} : {};
|
|
4929
|
-
return /* @__PURE__ */ (0,
|
|
5518
|
+
return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className: tooltipWrapperClasses, style: tooltipWrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
|
|
4930
5519
|
"div",
|
|
4931
5520
|
{
|
|
4932
5521
|
className: tooltipBodyClasses,
|
|
@@ -4935,16 +5524,16 @@ var TooltipContent = ({
|
|
|
4935
5524
|
},
|
|
4936
5525
|
children: [
|
|
4937
5526
|
content,
|
|
4938
|
-
/* @__PURE__ */ (0,
|
|
5527
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(TailIcon, { size, verticalPosition, horizontalAlign })
|
|
4939
5528
|
]
|
|
4940
5529
|
}
|
|
4941
5530
|
) });
|
|
4942
5531
|
};
|
|
4943
5532
|
|
|
4944
5533
|
// src/tooltip/tooltip-hook.ts
|
|
4945
|
-
var
|
|
5534
|
+
var import_react75 = require("react");
|
|
4946
5535
|
var useTooltip = () => {
|
|
4947
|
-
const calculatePosition = (0,
|
|
5536
|
+
const calculatePosition = (0, import_react75.useCallback)(
|
|
4948
5537
|
(args) => {
|
|
4949
5538
|
const result = {
|
|
4950
5539
|
maxWidth: "none",
|
|
@@ -4996,7 +5585,7 @@ var useTooltip = () => {
|
|
|
4996
5585
|
};
|
|
4997
5586
|
|
|
4998
5587
|
// src/tooltip/tooltip.tsx
|
|
4999
|
-
var
|
|
5588
|
+
var import_jsx_runtime84 = require("react/jsx-runtime");
|
|
5000
5589
|
function Tooltip({
|
|
5001
5590
|
children,
|
|
5002
5591
|
content,
|
|
@@ -5008,8 +5597,8 @@ function Tooltip({
|
|
|
5008
5597
|
portalTarget
|
|
5009
5598
|
}) {
|
|
5010
5599
|
const { calculatePosition } = useTooltip();
|
|
5011
|
-
const [isVisible, setIsVisible] = (0,
|
|
5012
|
-
const [tooltipPosition, setTooltipPosition] = (0,
|
|
5600
|
+
const [isVisible, setIsVisible] = (0, import_react76.useState)(false);
|
|
5601
|
+
const [tooltipPosition, setTooltipPosition] = (0, import_react76.useState)({
|
|
5013
5602
|
maxWidth: "none",
|
|
5014
5603
|
width: "auto",
|
|
5015
5604
|
left: "0px",
|
|
@@ -5018,8 +5607,8 @@ function Tooltip({
|
|
|
5018
5607
|
translateX: "0",
|
|
5019
5608
|
translateY: "0"
|
|
5020
5609
|
});
|
|
5021
|
-
const targetRef = (0,
|
|
5022
|
-
const handleMouseOverWrapper = (0,
|
|
5610
|
+
const targetRef = (0, import_react76.useRef)(null);
|
|
5611
|
+
const handleMouseOverWrapper = (0, import_react76.useCallback)(() => {
|
|
5023
5612
|
if (isDisabledHover) {
|
|
5024
5613
|
return;
|
|
5025
5614
|
}
|
|
@@ -5036,16 +5625,16 @@ function Tooltip({
|
|
|
5036
5625
|
}
|
|
5037
5626
|
setIsVisible(true);
|
|
5038
5627
|
}, [isDisabledHover, calculatePosition, maxWidth, verticalPosition, horizontalAlign, size]);
|
|
5039
|
-
const handleMouseOutWrapper = (0,
|
|
5628
|
+
const handleMouseOutWrapper = (0, import_react76.useCallback)(() => {
|
|
5040
5629
|
setIsVisible(false);
|
|
5041
5630
|
}, []);
|
|
5042
|
-
(0,
|
|
5631
|
+
(0, import_react76.useEffect)(() => {
|
|
5043
5632
|
if (targetRef.current === null) return;
|
|
5044
5633
|
const dimensions = targetRef.current?.getBoundingClientRect();
|
|
5045
5634
|
const position = calculatePosition({ dimensions, maxWidth, verticalPosition, horizontalAlign, tooltipSize: size });
|
|
5046
5635
|
setTooltipPosition(position);
|
|
5047
5636
|
}, [calculatePosition, horizontalAlign, maxWidth, size, verticalPosition]);
|
|
5048
|
-
(0,
|
|
5637
|
+
(0, import_react76.useEffect)(() => {
|
|
5049
5638
|
if (!isVisible) return;
|
|
5050
5639
|
const updatePosition = () => {
|
|
5051
5640
|
if (targetRef.current === null) return;
|
|
@@ -5066,7 +5655,7 @@ function Tooltip({
|
|
|
5066
5655
|
window.removeEventListener("resize", updatePosition);
|
|
5067
5656
|
};
|
|
5068
5657
|
}, [isVisible, calculatePosition, maxWidth, verticalPosition, horizontalAlign, size]);
|
|
5069
|
-
return /* @__PURE__ */ (0,
|
|
5658
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)(
|
|
5070
5659
|
"div",
|
|
5071
5660
|
{
|
|
5072
5661
|
ref: targetRef,
|
|
@@ -5075,7 +5664,7 @@ function Tooltip({
|
|
|
5075
5664
|
onMouseLeave: handleMouseOutWrapper,
|
|
5076
5665
|
children: [
|
|
5077
5666
|
children,
|
|
5078
|
-
isVisible && (portalTarget == null ? /* @__PURE__ */ (0,
|
|
5667
|
+
isVisible && (portalTarget == null ? /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
|
|
5079
5668
|
TooltipContent,
|
|
5080
5669
|
{
|
|
5081
5670
|
content,
|
|
@@ -5086,7 +5675,7 @@ function Tooltip({
|
|
|
5086
5675
|
tooltipPosition
|
|
5087
5676
|
}
|
|
5088
5677
|
) : (0, import_react_dom4.createPortal)(
|
|
5089
|
-
/* @__PURE__ */ (0,
|
|
5678
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
|
|
5090
5679
|
TooltipContent,
|
|
5091
5680
|
{
|
|
5092
5681
|
isPortal: true,
|
|
@@ -5131,6 +5720,7 @@ function Tooltip({
|
|
|
5131
5720
|
PopoverTrigger,
|
|
5132
5721
|
Popup,
|
|
5133
5722
|
Radio,
|
|
5723
|
+
RadioCard,
|
|
5134
5724
|
Search,
|
|
5135
5725
|
SegmentedControl,
|
|
5136
5726
|
Select,
|
|
@@ -5145,10 +5735,13 @@ function Tooltip({
|
|
|
5145
5735
|
Tag,
|
|
5146
5736
|
TextArea,
|
|
5147
5737
|
TextInput,
|
|
5738
|
+
TimePicker,
|
|
5148
5739
|
Toast,
|
|
5149
5740
|
ToastProvider,
|
|
5150
5741
|
Toggle,
|
|
5151
5742
|
Tooltip,
|
|
5743
|
+
formatTime,
|
|
5744
|
+
parseTime,
|
|
5152
5745
|
useOutsideClick,
|
|
5153
5746
|
useRovingFocus,
|
|
5154
5747
|
useToast
|