@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.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: [(0, import_react25.offset)(offsetValue)],
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 DAY_PICKER_FONT_SIZE = "12px";
1812
- var dayPickerStyle = {
1813
- "--rdp-nav-height": "30px",
1814
- "--rdp-day-width": "30px",
1815
- "--rdp-day-height": "30px",
1816
- "--rdp-day_button-width": "28px",
1817
- "--rdp-day_button-height": "28px",
1818
- "--rdp-day_button-border": "1px solid transparent",
1819
- "--rdp-weekday-padding": "0px",
1820
- fontFamily: "Arial, 'Noto Sans JP', sans-serif",
1821
- fontSize: DAY_PICKER_FONT_SIZE,
1822
- fontWeight: 700
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 dayPickerClassNames = {
1825
- month: (0, import_clsx15.clsx)(defaultDayPickerClassNames.month, "flex flex-col px-[7px] py-2")
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: DAY_PICKER_FONT_SIZE },
1913
+ style: { ...style, fontSize: tokens.dayButtonFontSize },
1845
1914
  className: (0, import_clsx16.clsx)(
1846
1915
  className,
1847
- dayButtonBaseClass,
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 { size, isError } = useDatePickerCompoundContext("DatePicker.ErrorMessage");
1874
- const typographyClass = size === "large" ? "typography-label12regular" : "typography-label11regular";
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)("flex items-center justify-between px-1 pb-0.5", className),
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: "small",
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: "typography-label12bold text-text02", children: formatMonthLabel(captionMonth) }),
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: "small",
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, "m-0 size-7 p-0 text-center align-middle text-text02"),
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 iconSize = size === "large" ? "medium" : "small";
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: iconSize }),
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: "medium",
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: "small", variant: "text", onClick: handleClear, children: "\u30AF\u30EA\u30A2" })
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 wrapperClasses = (0, import_clsx29.clsx)("typography-body13regular flex items-center gap-1 rounded text-text01", {
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
- "p-2": size === "small",
3050
- "p-3": size === "medium"
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
- 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] }) }),
3070
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("p", { className: "flex-1", children: props.children }),
3071
- props.showClose === true && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(IconButton, { icon: "close", size: "small", variant: "text", onClick: props.onClickClose }) })
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/search/search.tsx
3674
- var import_clsx35 = require("clsx");
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
- var Search = (0, import_react53.forwardRef)(({ width = "100%", size = "medium", ...props }, ref) => {
3678
- const classes = (0, import_clsx35.clsx)(
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, import_clsx35.clsx)("mx-2 h-full flex-1 text-text01 outline-none placeholder:text-textPlaceholder", {
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, import_jsx_runtime53.jsx)("div", { className: "relative", ref, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("form", { onSubmit: props.onSubmit, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: classes, style: { width }, children: [
3688
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Icon, { name: "search", color: "icon01", size: "medium" }),
3689
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
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, import_jsx_runtime53.jsx)(
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 import_react56 = __toESM(require("react"));
3991
+ var import_react59 = __toESM(require("react"));
3716
3992
 
3717
3993
  // src/segmented-control/segmented-control-context.ts
3718
- var import_react54 = require("react");
3719
- var SegmentedControlContext = (0, import_react54.createContext)(null);
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 import_component_theme15 = require("@zenkigen-inc/component-theme");
3723
- var import_clsx36 = require("clsx");
3724
- var import_react55 = require("react");
3725
- var import_jsx_runtime54 = require("react/jsx-runtime");
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, import_react55.useContext)(SegmentedControlContext);
3735
- const buttonRef = (0, import_react55.useRef)(null);
3736
- const lastInteractionWasMouse = (0, import_react55.useRef)(false);
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, import_react55.useEffect)(() => {
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, import_clsx36.clsx)("relative flex items-center justify-center gap-1 rounded", import_component_theme15.focusVisible.normal, {
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, import_jsx_runtime54.jsxs)(
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, import_jsx_runtime54.jsx)(
4077
+ Boolean(icon) === true && icon && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
3802
4078
  "span",
3803
4079
  {
3804
- className: (0, import_clsx36.clsx)("flex items-center", {
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, import_jsx_runtime54.jsx)(Icon, { name: icon, size: "small" })
4085
+ children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Icon, { name: icon, size: "small" })
3810
4086
  }
3811
4087
  ),
3812
- Boolean(label) === true && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "whitespace-nowrap", children: label })
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 import_jsx_runtime55 = require("react/jsx-runtime");
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, import_react56.useRef)(null);
3830
- const itemIds = import_react56.Children.toArray(children).filter((child) => {
3831
- if (!import_react56.default.isValidElement(child) || typeof child.props !== "object" || child.props === null || !("value" in child.props)) {
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 = import_react56.Children.count(children);
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, import_jsx_runtime55.jsx)(import_jsx_runtime55.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(SegmentedControlContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
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-list.tsx
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, import_clsx37.default)(
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
- import_component_theme16.focusVisible.inset,
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, import_jsx_runtime56.jsx)("li", { className: "flex w-full items-center", onClick: onClickItem, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("button", { className: itemClasses, type: "button", children: [
3905
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "ml-1 mr-6", children }),
3906
- isSortKey && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Icon, { name: "check", size: "small" }) })
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 import_jsx_runtime57 = require("react/jsx-runtime");
4187
+ var import_jsx_runtime61 = require("react/jsx-runtime");
3912
4188
  function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect }) {
3913
- const listClasses = (0, import_clsx38.default)(
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, import_clsx38.default)(
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
- import_component_theme17.focusVisible.inset,
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, import_jsx_runtime57.jsxs)("ul", { className: listClasses, children: [
3931
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(SelectItem2, { size, isSortKey: sortOrder === "ascend", onClickItem: () => onClickItem("ascend"), children: "\u6607\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
3932
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(SelectItem2, { size, isSortKey: sortOrder === "descend", onClickItem: () => onClickItem("descend"), children: "\u964D\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
3933
- sortOrder !== null && onClickDeselect && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("button", { className: deselectButtonClasses, type: "button", onClick: onClickDeselect, children: "\u9078\u629E\u89E3\u9664" }) })
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 import_jsx_runtime58 = require("react/jsx-runtime");
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, import_react57.useState)(false);
3951
- const targetRef = (0, import_react57.useRef)(null);
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, import_react57.useCallback)(
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, import_clsx39.default)("relative flex shrink-0 items-center gap-1 rounded", {
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, import_clsx39.default)(
4248
+ const buttonClasses = (0, import_clsx40.default)(
3973
4249
  "flex size-full items-center rounded",
3974
- import_component_theme18.buttonColors[variant].hover,
3975
- import_component_theme18.buttonColors[variant].active,
3976
- import_component_theme18.buttonColors[variant].disabled,
3977
- import_component_theme18.focusVisible.normal,
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
- [import_component_theme18.buttonColors[variant].selected]: isSortKey,
3980
- [import_component_theme18.buttonColors[variant].base]: !isSortKey,
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, import_clsx39.default)("truncate", {
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, import_jsx_runtime58.jsxs)("div", { className: wrapperClasses, style: { width }, ref: targetRef, children: [
3994
- /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("button", { className: buttonClasses, type: "button", onClick: handleClickToggle, disabled: isDisabled, children: [
3995
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: labelClasses, children: label }),
3996
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "ml-auto flex items-center", children: isSortKey ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
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, import_jsx_runtime58.jsx)(
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, import_jsx_runtime58.jsx)(
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 import_component_theme19 = require("@zenkigen-inc/component-theme");
4025
- var import_clsx40 = __toESM(require("clsx"));
4026
- var import_react58 = require("react");
4027
- var import_jsx_runtime59 = require("react/jsx-runtime");
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, import_react58.useCallback)(() => {
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, import_clsx40.default)("relative flex shrink-0 items-center gap-1 rounded", {
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, import_clsx40.default)(
4329
+ const buttonClasses = (0, import_clsx41.default)(
4054
4330
  "flex size-full items-center rounded",
4055
- import_component_theme19.buttonColors.text.hover,
4056
- import_component_theme19.buttonColors.text.active,
4057
- import_component_theme19.buttonColors.text.disabled,
4058
- import_component_theme19.focusVisible.normal,
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
- [import_component_theme19.buttonColors.text.selected]: !isDisabled && sortOrder !== null,
4336
+ [import_component_theme20.buttonColors.text.selected]: !isDisabled && sortOrder !== null,
4061
4337
  // ソート状態時は選択状態のスタイル
4062
- [import_component_theme19.buttonColors.text.base]: sortOrder === null,
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, import_clsx40.default)("truncate", {
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, import_jsx_runtime59.jsx)("div", { className: wrapperClasses, style: { width }, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(
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, import_jsx_runtime59.jsx)("div", { className: labelClasses, children: label }),
4088
- /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: getIconName(), size: size === "large" ? "medium" : "small" }) })
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 import_clsx43 = require("clsx");
4096
- var import_react61 = require("react");
4371
+ var import_clsx44 = require("clsx");
4372
+ var import_react64 = require("react");
4097
4373
 
4098
4374
  // src/steps/steps-context.ts
4099
- var import_react59 = require("react");
4100
- var StepsContext = (0, import_react59.createContext)(null);
4375
+ var import_react62 = require("react");
4376
+ var StepsContext = (0, import_react62.createContext)(null);
4101
4377
  function useStepsContext() {
4102
- const context = (0, import_react59.useContext)(StepsContext);
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 import_clsx42 = require("clsx");
4386
+ var import_clsx43 = require("clsx");
4111
4387
 
4112
4388
  // src/steps/steps-item-context.ts
4113
- var import_react60 = require("react");
4114
- var StepsItemContext = (0, import_react60.createContext)(null);
4389
+ var import_react63 = require("react");
4390
+ var StepsItemContext = (0, import_react63.createContext)(null);
4115
4391
  function useStepsItemContext() {
4116
- const context = (0, import_react60.useContext)(StepsItemContext);
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 import_clsx41 = require("clsx");
4125
- var import_jsx_runtime60 = require("react/jsx-runtime");
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, import_jsx_runtime60.jsx)("div", { "aria-hidden": "true", className: (0, import_clsx41.clsx)("mx-auto h-full min-h-2 w-px", colorClass) });
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, import_jsx_runtime60.jsx)("div", { "aria-hidden": "true", className: (0, import_clsx41.clsx)("h-px flex-1", colorClass) });
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 import_jsx_runtime61 = require("react/jsx-runtime");
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, import_clsx42.clsx)({
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, import_clsx42.clsx)({
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, import_clsx42.clsx)(
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, import_jsx_runtime61.jsx)(Icon, { name: "check", size: getIconSize(size), color: "iconOnColor" }) : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: "check", size: getIconSize(size), className: "fill-gray-gray100" });
4182
- const circle = /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { "aria-hidden": "true", className: circleClasses, children: isCircleFilled ? checkIcon : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { children: index + 1 }) });
4183
- const labelBlock = /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("span", { className: (0, import_clsx42.clsx)("flex flex-col", textOrientation === "horizontal" ? "gap-1" : "items-center text-center"), children: [
4184
- /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
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, import_clsx42.clsx)(
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, import_jsx_runtime61.jsx)("span", { className: "sr-only", children: progressSrOnlyLabel[state.progress] }),
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, import_jsx_runtime61.jsx)("span", { className: "typography-label12regular whitespace-nowrap text-text02", children: description })
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, import_jsx_runtime61.jsx)("li", { ...ariaCurrentProps, id, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex items-center gap-2", children: [
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, import_jsx_runtime61.jsx)("li", { ...ariaCurrentProps, id, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex flex-col items-center gap-1", children: [
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, import_jsx_runtime61.jsxs)(
4489
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
4214
4490
  "li",
4215
4491
  {
4216
4492
  ...ariaCurrentProps,
4217
- className: (0, import_clsx42.clsx)(
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, import_jsx_runtime61.jsx)("div", { className: "col-start-1 row-start-1 flex items-center", children: circle }),
4224
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "col-start-2 row-start-1 flex items-center", children: labelBlock }),
4225
- !isLast && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "col-start-1 row-start-2 flex items-stretch justify-center self-stretch py-2", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(StepsSeparator, { progress: state.progress }) })
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, import_jsx_runtime61.jsxs)("li", { ...ariaCurrentProps, className: (0, import_clsx42.clsx)("flex flex-col items-center gap-1", !isLast && "flex-1"), id, children: [
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, import_jsx_runtime61.jsx)("div", { className: "flex flex-1 items-stretch self-stretch py-2", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(StepsSeparator, { progress: state.progress }) })
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 import_jsx_runtime62 = require("react/jsx-runtime");
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, import_jsx_runtime62.jsx)("li", { "aria-hidden": "true", className: (0, import_clsx43.clsx)("flex items-center", heightClass, alignClass), role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(StepsSeparator, { progress }) });
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
- import_react61.Children.toArray(children).forEach((child) => {
4257
- if (!(0, import_react61.isValidElement)(child)) {
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 === import_react61.Fragment) {
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, import_react61.useId)();
4282
- const [internalStep] = (0, import_react61.useState)(defaultCurrentStep ?? 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, import_react61.useMemo)(() => collectStepsItems(children), [children]);
4560
+ const itemElements = (0, import_react64.useMemo)(() => collectStepsItems(children), [children]);
4285
4561
  const stepsCount = itemElements.length;
4286
- const contextValue = (0, import_react61.useMemo)(
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, import_jsx_runtime62.jsx)(StepsItemContext.Provider, { value: { index, state, isLast, id }, children: item }, item.key ?? `item-${index}`);
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, import_jsx_runtime62.jsx)(
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, import_clsx43.clsx)(
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, import_jsx_runtime62.jsx)(StepsContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("ol", { "aria-label": ariaLabel, className: listClassName, role: "list", ...listStyleProps, children: renderedChildren }) });
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 import_clsx45 = require("clsx");
4339
- var import_react62 = require("react");
4614
+ var import_clsx46 = require("clsx");
4615
+ var import_react65 = require("react");
4340
4616
 
4341
4617
  // src/tab/tab-item.tsx
4342
- var import_clsx44 = require("clsx");
4343
- var import_jsx_runtime63 = require("react/jsx-runtime");
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, import_clsx44.clsx)(
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, import_clsx44.clsx)("flex shrink-0 items-center", {
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, import_jsx_runtime63.jsxs)(
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, import_jsx_runtime63.jsx)("span", { className: iconWrapperClasses, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icon, { name: icon, size: "small" }) }),
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 import_jsx_runtime64 = require("react/jsx-runtime");
4652
+ var import_jsx_runtime68 = require("react/jsx-runtime");
4377
4653
  function Tab({ children, layout = "auto" }) {
4378
- const childrenCount = import_react62.Children.count(children);
4654
+ const childrenCount = import_react65.Children.count(children);
4379
4655
  const containerStyle = layout === "equal" ? { gridTemplateColumns: `repeat(${childrenCount}, minmax(0,1fr))` } : {};
4380
- const containerClasses = (0, import_clsx45.clsx)(
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, import_jsx_runtime64.jsx)("div", { role: "tablist", className: containerClasses, style: containerStyle, children });
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 import_clsx46 = __toESM(require("clsx"));
4393
- var import_jsx_runtime65 = require("react/jsx-runtime");
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, import_clsx46.default)("border-b border-uiBorder01", { "sticky top-0 z-10 bg-white": isHeader }, className);
4396
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: classes, children });
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 import_clsx47 = __toESM(require("clsx"));
4401
- var import_jsx_runtime66 = require("react/jsx-runtime");
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, import_clsx47.default)("contents", isHoverBackgroundVisible && "[&:hover>div]:bg-hoverUi02");
4404
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: rowClasses, children });
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 import_jsx_runtime67 = require("react/jsx-runtime");
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, import_jsx_runtime67.jsx)(
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 import_component_theme21 = require("@zenkigen-inc/component-theme");
4437
- var import_clsx49 = __toESM(require("clsx"));
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 import_component_theme20 = require("@zenkigen-inc/component-theme");
4441
- var import_clsx48 = __toESM(require("clsx"));
4442
- var import_jsx_runtime68 = require("react/jsx-runtime");
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, import_clsx48.default)(
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
- import_component_theme20.focusVisible.normal
4722
+ import_component_theme21.focusVisible.normal
4447
4723
  );
4448
- const deletePathClasses = (0, import_clsx48.default)({
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, import_jsx_runtime68.jsx)("button", { type: "button", className: deleteButtonClasses, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
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 import_jsx_runtime69 = require("react/jsx-runtime");
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, import_clsx49.default)("flex", "items-center", "justify-center", {
4467
- [import_component_theme21.tagColors[color]]: variant === "normal",
4468
- [import_component_theme21.tagLightColors[color]]: variant === "light",
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, import_jsx_runtime69.jsxs)("div", { className: wrapperClasses, children: [
4753
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: wrapperClasses, children: [
4478
4754
  children,
4479
- isEditable ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(DeleteIcon, { onClick: () => onDelete(id), color, variant }) : null
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 import_clsx52 = require("clsx");
4485
- var import_react66 = require("react");
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 import_react63 = require("react");
4489
- var TextAreaCompoundContext = (0, import_react63.createContext)(null);
4764
+ var import_react66 = require("react");
4765
+ var TextAreaCompoundContext = (0, import_react66.createContext)(null);
4490
4766
  var useTextAreaCompoundContext = (componentName) => {
4491
- const context = (0, import_react63.useContext)(TextAreaCompoundContext);
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 import_clsx50 = require("clsx");
4500
- var import_react64 = require("react");
4501
- var import_jsx_runtime70 = require("react/jsx-runtime");
4502
- var TextAreaErrorMessage = (0, import_react64.forwardRef)(
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, import_clsx50.clsx)(typographyClass, "text-supportError");
4511
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { ref, className: errorMessageClassName, "aria-live": ariaLive, ...props });
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 import_clsx51 = require("clsx");
4518
- var import_react65 = require("react");
4519
- var import_jsx_runtime71 = require("react/jsx-runtime");
4520
- var TextAreaHelperMessage = (0, import_react65.forwardRef)((props, ref) => {
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, import_clsx51.clsx)(typographyClass, "text-text02");
4524
- return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { ref, className: helperMessageClassName, ...props });
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 import_jsx_runtime72 = require("react/jsx-runtime");
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, import_react66.useId)();
4547
- const textAreaPropsForContext = (0, import_react66.useMemo)(
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, import_react66.useMemo)(
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 = import_react66.Children.map(children, (child) => {
4566
- if (!(0, import_react66.isValidElement)(child)) {
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, import_react66.cloneElement)(helperChild, { id: assignedId });
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, import_react66.cloneElement)(errorChild, { id: assignedId });
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, import_clsx52.clsx)(
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, import_clsx52.clsx)("w-full border-none bg-uiBackground01 outline-none", {
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, import_jsx_runtime72.jsx)(
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, import_jsx_runtime72.jsx)(
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, import_jsx_runtime72.jsx)(
4944
+ const counterElement = isCounterVisible ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
4669
4945
  "div",
4670
4946
  {
4671
4947
  id: counterId,
4672
- className: (0, import_clsx52.clsx)(
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 ? [] : import_react66.Children.toArray(enhancedChildren);
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, import_jsx_runtime72.jsx)(TextAreaCompoundContext.Provider, { value: contextValue, children: textAreaElement });
4961
+ return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(TextAreaCompoundContext.Provider, { value: contextValue, children: textAreaElement });
4686
4962
  }
4687
- return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(TextAreaCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "flex flex-col gap-2", children: [
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, import_jsx_runtime72.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
4690
- hasMessageChildren && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "flex min-w-0 flex-1 flex-col gap-2", children: stackedChildren }),
4691
- !hasMessageChildren && counterElement != null && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "flex-1" }),
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, import_react66.forwardRef)(function TextAreaBase2(props, ref) {
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 import_clsx53 = __toESM(require("clsx"));
4709
- var import_react67 = require("react");
4710
- var import_jsx_runtime73 = require("react/jsx-runtime");
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, import_react67.useState)(false);
4721
- const handleClose = (0, import_react67.useCallback)(() => {
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
- onClickClose();
5250
+ notifyClose();
4726
5251
  }
4727
- }, [isAnimation, onClickClose]);
4728
- const handleAnimationEnd = (e) => window.getComputedStyle(e.currentTarget).opacity === "0" && onClickClose();
4729
- const wrapperClasses = (0, import_clsx53.default)("pointer-events-auto flex items-start gap-1 bg-white p-4 shadow-floatingShadow", {
4730
- ["animate-toast-in"]: isAnimation && !isRemoving,
4731
- ["animate-toast-out opacity-0"]: isAnimation && isRemoving
4732
- });
4733
- const iconClasses = (0, import_clsx53.default)("flex items-center", {
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 textClasses = (0, import_clsx53.default)("typography-body13regular flex-1 pt-[3px]", {
5295
+ const titleClasses = (0, import_clsx56.clsx)("typography-body13regular break-words", {
4740
5296
  "text-supportError": state === "error",
4741
- "text-text01": state === "success" || state === "warning" || state === "information"
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, import_react67.useEffect)(() => {
4750
- const timer = window.setTimeout(() => {
4751
- if (isAutoClose) {
4752
- setIsRemoving(true);
4753
- }
4754
- }, CLOSE_TIME_MSEC);
4755
- return () => window.clearTimeout(timer);
4756
- }, [isAutoClose]);
4757
- return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: wrapperClasses, style: { width }, onAnimationEnd: handleAnimationEnd, children: [
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 import_react68 = require("react");
5318
+ var import_react74 = require("react");
4766
5319
  var import_react_dom3 = require("react-dom");
4767
- var import_jsx_runtime74 = require("react/jsx-runtime");
4768
- var ToastContext = (0, import_react68.createContext)({});
4769
- var ToastProvider = ({ children }) => {
4770
- const [isClientRender, setIsClientRender] = (0, import_react68.useState)(false);
4771
- const [toasts, setToasts] = (0, import_react68.useState)([]);
4772
- const addToast = (0, import_react68.useCallback)(({ message, state }) => {
4773
- setToasts((prev) => [...prev, { id: Math.trunc(Math.random() * 1e5), message, state }]);
4774
- }, []);
4775
- const removeToast = (0, import_react68.useCallback)((id) => {
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, import_react68.useEffect)(() => {
5347
+ (0, import_react74.useEffect)(() => {
4779
5348
  setIsClientRender(true);
4780
5349
  }, []);
4781
- return /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(ToastContext.Provider, { value: { addToast, removeToast }, children: [
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, import_jsx_runtime74.jsx)("div", { className: "pointer-events-none fixed bottom-0 left-0 z-toast mb-4 ml-4 flex w-full flex-col-reverse gap-[16px]", children: toasts.map(({ id, message, state }) => /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Toast, { state, isAutoClose: true, isAnimation: true, onClickClose: () => removeToast(id), width: 475, children: message }, id)) }),
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, import_react68.useContext)(ToastContext);
5379
+ return (0, import_react74.useContext)(ToastContext);
4791
5380
  };
4792
5381
 
4793
5382
  // src/toggle/toggle.tsx
4794
- var import_clsx54 = __toESM(require("clsx"));
4795
- var import_jsx_runtime75 = require("react/jsx-runtime");
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, import_clsx54.default)("relative flex items-center rounded-full", {
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, import_clsx54.default)(
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, import_clsx54.default)("rounded-full bg-iconOnColor", {
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, import_clsx54.default)("break-all", {
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, import_jsx_runtime75.jsxs)("div", { className: "relative flex flex-[0_0_auto] items-center", children: [
4831
- label != null && labelPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("label", { htmlFor: id, className: labelClasses, children: label }),
4832
- /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
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, import_jsx_runtime75.jsx)("div", { className: baseClasses, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: indicatorClasses }) }),
4845
- label != null && labelPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("label", { htmlFor: id, className: labelClasses, children: label })
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 import_react70 = require("react");
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 import_clsx56 = __toESM(require("clsx"));
5443
+ var import_clsx59 = __toESM(require("clsx"));
4855
5444
 
4856
5445
  // src/tooltip/tail-icon.tsx
4857
- var import_clsx55 = __toESM(require("clsx"));
4858
- var import_jsx_runtime76 = require("react/jsx-runtime");
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, import_clsx55.default)("absolute fill-uiBackgroundTooltip", {
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, import_jsx_runtime76.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_runtime76.jsx)("path", { d: "M4 4L0 0H8L4 4Z" }) });
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, import_jsx_runtime76.jsx)(
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, import_jsx_runtime76.jsx)("path", { d: "M7 8L0 0H14L7 8Z" })
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 import_jsx_runtime77 = require("react/jsx-runtime");
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, import_clsx56.default)("absolute z-tooltip m-auto flex", {
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, import_clsx56.default)(
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, import_jsx_runtime77.jsx)("div", { className: tooltipWrapperClasses, style: tooltipWrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(
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, import_jsx_runtime77.jsx)(TailIcon, { size, verticalPosition, horizontalAlign })
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 import_react69 = require("react");
5534
+ var import_react75 = require("react");
4946
5535
  var useTooltip = () => {
4947
- const calculatePosition = (0, import_react69.useCallback)(
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 import_jsx_runtime78 = require("react/jsx-runtime");
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, import_react70.useState)(false);
5012
- const [tooltipPosition, setTooltipPosition] = (0, import_react70.useState)({
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, import_react70.useRef)(null);
5022
- const handleMouseOverWrapper = (0, import_react70.useCallback)(() => {
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, import_react70.useCallback)(() => {
5628
+ const handleMouseOutWrapper = (0, import_react76.useCallback)(() => {
5040
5629
  setIsVisible(false);
5041
5630
  }, []);
5042
- (0, import_react70.useEffect)(() => {
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, import_react70.useEffect)(() => {
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, import_jsx_runtime78.jsxs)(
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, import_jsx_runtime78.jsx)(
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, import_jsx_runtime78.jsx)(
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