@charcoal-ui/react 3.0.0-beta.2 → 3.0.0-beta.3

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.
Files changed (174) hide show
  1. package/dist/_lib/compat.d.ts +1 -1
  2. package/dist/_lib/compat.d.ts.map +1 -1
  3. package/dist/components/Button/index.d.ts +1 -2
  4. package/dist/components/Button/index.d.ts.map +1 -1
  5. package/dist/components/Button/index.story.d.ts +1 -2
  6. package/dist/components/Button/index.story.d.ts.map +1 -1
  7. package/dist/components/Button/index.test.d.ts +4 -0
  8. package/dist/components/Button/index.test.d.ts.map +1 -0
  9. package/dist/components/Checkbox/index.d.ts +1 -1
  10. package/dist/components/Checkbox/index.d.ts.map +1 -1
  11. package/dist/components/Checkbox/index.story.d.ts +1 -2
  12. package/dist/components/Checkbox/index.story.d.ts.map +1 -1
  13. package/dist/components/Clickable/index.d.ts +1 -1
  14. package/dist/components/Clickable/index.d.ts.map +1 -1
  15. package/dist/components/Clickable/index.story.d.ts +1 -2
  16. package/dist/components/Clickable/index.story.d.ts.map +1 -1
  17. package/dist/components/DropdownSelector/Divider.d.ts +3 -0
  18. package/dist/components/DropdownSelector/Divider.d.ts.map +1 -1
  19. package/dist/components/DropdownSelector/DropdownMenuItem.d.ts +7 -0
  20. package/dist/components/DropdownSelector/DropdownMenuItem.d.ts.map +1 -0
  21. package/dist/components/DropdownSelector/DropdownPopover.d.ts +8 -8
  22. package/dist/components/DropdownSelector/DropdownPopover.d.ts.map +1 -1
  23. package/dist/components/DropdownSelector/ListItem/index.d.ts +18 -0
  24. package/dist/components/DropdownSelector/ListItem/index.d.ts.map +1 -0
  25. package/dist/components/DropdownSelector/ListItem/index.story.d.ts +9 -0
  26. package/dist/components/DropdownSelector/ListItem/index.story.d.ts.map +1 -0
  27. package/dist/components/DropdownSelector/MenuItem/index.d.ts +11 -0
  28. package/dist/components/DropdownSelector/MenuItem/index.d.ts.map +1 -0
  29. package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.d.ts +9 -0
  30. package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.d.ts.map +1 -0
  31. package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.d.ts +10 -0
  32. package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.d.ts.map +1 -0
  33. package/dist/components/DropdownSelector/MenuItemGroup/index.d.ts +14 -0
  34. package/dist/components/DropdownSelector/MenuItemGroup/index.d.ts.map +1 -0
  35. package/dist/components/DropdownSelector/MenuList/MenuListContext.d.ts +10 -0
  36. package/dist/components/DropdownSelector/MenuList/MenuListContext.d.ts.map +1 -0
  37. package/dist/components/DropdownSelector/MenuList/index.d.ts +18 -0
  38. package/dist/components/DropdownSelector/MenuList/index.d.ts.map +1 -0
  39. package/dist/components/DropdownSelector/MenuList/index.story.d.ts +11 -0
  40. package/dist/components/DropdownSelector/MenuList/index.story.d.ts.map +1 -0
  41. package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.d.ts +11 -0
  42. package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.d.ts.map +1 -0
  43. package/dist/components/DropdownSelector/Popover/index.d.ts +17 -0
  44. package/dist/components/DropdownSelector/Popover/index.d.ts.map +1 -0
  45. package/dist/components/DropdownSelector/Popover/index.story.d.ts +9 -0
  46. package/dist/components/DropdownSelector/Popover/index.story.d.ts.map +1 -0
  47. package/dist/components/DropdownSelector/index.d.ts +3 -10
  48. package/dist/components/DropdownSelector/index.d.ts.map +1 -1
  49. package/dist/components/DropdownSelector/index.story.d.ts +4 -4
  50. package/dist/components/DropdownSelector/index.story.d.ts.map +1 -1
  51. package/dist/components/DropdownSelector/utils/findPreviewRecursive.d.ts +12 -0
  52. package/dist/components/DropdownSelector/utils/findPreviewRecursive.d.ts.map +1 -0
  53. package/dist/components/FieldLabel/index.d.ts +1 -1
  54. package/dist/components/FieldLabel/index.d.ts.map +1 -1
  55. package/dist/components/Icon/index.d.ts +1 -1
  56. package/dist/components/Icon/index.d.ts.map +1 -1
  57. package/dist/components/Icon/index.story.d.ts +2 -3
  58. package/dist/components/Icon/index.story.d.ts.map +1 -1
  59. package/dist/components/IconButton/index.d.ts +1 -2
  60. package/dist/components/IconButton/index.d.ts.map +1 -1
  61. package/dist/components/IconButton/index.story.d.ts +1 -2
  62. package/dist/components/IconButton/index.story.d.ts.map +1 -1
  63. package/dist/components/LoadingSpinner/index.d.ts +1 -2
  64. package/dist/components/LoadingSpinner/index.d.ts.map +1 -1
  65. package/dist/components/Modal/ModalPlumbing.d.ts.map +1 -1
  66. package/dist/components/Modal/index.d.ts +1 -1
  67. package/dist/components/Modal/index.d.ts.map +1 -1
  68. package/dist/components/Modal/index.story.d.ts.map +1 -1
  69. package/dist/components/MultiSelect/context.d.ts +1 -1
  70. package/dist/components/MultiSelect/context.d.ts.map +1 -1
  71. package/dist/components/MultiSelect/index.d.ts +5 -6
  72. package/dist/components/MultiSelect/index.d.ts.map +1 -1
  73. package/dist/components/MultiSelect/index.story.d.ts +7 -14
  74. package/dist/components/MultiSelect/index.story.d.ts.map +1 -1
  75. package/dist/components/Radio/index.d.ts +1 -1
  76. package/dist/components/Radio/index.d.ts.map +1 -1
  77. package/dist/components/Radio/index.story.d.ts +1 -2
  78. package/dist/components/Radio/index.story.d.ts.map +1 -1
  79. package/dist/components/SegmentedControl/RadioGroupContext.d.ts +1 -1
  80. package/dist/components/SegmentedControl/RadioGroupContext.d.ts.map +1 -1
  81. package/dist/components/SegmentedControl/index.d.ts +1 -1
  82. package/dist/components/SegmentedControl/index.d.ts.map +1 -1
  83. package/dist/components/SegmentedControl/index.story.d.ts +1 -2
  84. package/dist/components/SegmentedControl/index.story.d.ts.map +1 -1
  85. package/dist/components/Switch/index.d.ts +1 -1
  86. package/dist/components/Switch/index.d.ts.map +1 -1
  87. package/dist/components/TagItem/index.d.ts +3 -3
  88. package/dist/components/TagItem/index.d.ts.map +1 -1
  89. package/dist/components/TagItem/index.story.d.ts +2 -3
  90. package/dist/components/TagItem/index.story.d.ts.map +1 -1
  91. package/dist/components/TextArea/TextArea.story.d.ts +28 -0
  92. package/dist/components/TextArea/TextArea.story.d.ts.map +1 -0
  93. package/dist/components/TextArea/index.d.ts +28 -0
  94. package/dist/components/TextArea/index.d.ts.map +1 -0
  95. package/dist/components/TextField/TextField.story.d.ts +29 -0
  96. package/dist/components/TextField/TextField.story.d.ts.map +1 -0
  97. package/dist/components/TextField/index.d.ts +2 -1
  98. package/dist/components/TextField/index.d.ts.map +1 -1
  99. package/dist/components/TextField/index.story.d.ts +4 -5
  100. package/dist/components/TextField/index.story.d.ts.map +1 -1
  101. package/dist/core/CharcoalProvider.d.ts +1 -1
  102. package/dist/core/CharcoalProvider.d.ts.map +1 -1
  103. package/dist/core/ComponentAbstraction.d.ts +1 -1
  104. package/dist/core/ComponentAbstraction.d.ts.map +1 -1
  105. package/dist/index.cjs.js +744 -493
  106. package/dist/index.cjs.js.map +1 -1
  107. package/dist/index.d.ts +3 -2
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.esm.js +689 -452
  110. package/dist/index.esm.js.map +1 -1
  111. package/dist/styled.d.ts +13 -13
  112. package/dist/types/CustomJSXElement.d.ts +3 -0
  113. package/dist/types/CustomJSXElement.d.ts.map +1 -0
  114. package/package.json +7 -7
  115. package/src/_lib/compat.ts +1 -1
  116. package/src/components/Button/__snapshots__/index.test.tsx.snap +385 -0
  117. package/src/components/Button/index.story.tsx +1 -1
  118. package/src/components/Button/index.test.tsx +24 -0
  119. package/src/components/Button/index.tsx +2 -2
  120. package/src/components/Checkbox/index.story.tsx +0 -1
  121. package/src/components/Checkbox/index.tsx +2 -1
  122. package/src/components/Clickable/index.story.tsx +0 -1
  123. package/src/components/Clickable/index.tsx +1 -1
  124. package/src/components/DropdownSelector/Divider.tsx +3 -0
  125. package/src/components/DropdownSelector/DropdownMenuItem.tsx +40 -0
  126. package/src/components/DropdownSelector/DropdownPopover.tsx +21 -42
  127. package/src/components/DropdownSelector/ListItem/index.story.tsx +51 -0
  128. package/src/components/DropdownSelector/ListItem/index.tsx +58 -0
  129. package/src/components/DropdownSelector/MenuItem/index.tsx +32 -0
  130. package/src/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.tsx +43 -0
  131. package/src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx +55 -0
  132. package/src/components/DropdownSelector/MenuItemGroup/index.tsx +43 -0
  133. package/src/components/DropdownSelector/MenuList/MenuListContext.ts +17 -0
  134. package/src/components/DropdownSelector/MenuList/index.story.tsx +52 -0
  135. package/src/components/DropdownSelector/MenuList/index.tsx +51 -0
  136. package/src/components/DropdownSelector/MenuList/internals/getValuesRecursive.tsx +35 -0
  137. package/src/components/DropdownSelector/Popover/index.story.tsx +65 -0
  138. package/src/components/DropdownSelector/Popover/index.tsx +69 -0
  139. package/src/components/DropdownSelector/index.story.tsx +56 -21
  140. package/src/components/DropdownSelector/index.tsx +21 -64
  141. package/src/components/DropdownSelector/utils/findPreviewRecursive.tsx +38 -0
  142. package/src/components/FieldLabel/index.tsx +1 -1
  143. package/src/components/Icon/index.story.tsx +0 -1
  144. package/src/components/Icon/index.tsx +1 -1
  145. package/src/components/IconButton/index.story.tsx +0 -1
  146. package/src/components/IconButton/index.tsx +2 -2
  147. package/src/components/LoadingSpinner/index.story.tsx +1 -1
  148. package/src/components/LoadingSpinner/index.tsx +18 -19
  149. package/src/components/Modal/ModalPlumbing.tsx +0 -1
  150. package/src/components/Modal/index.story.tsx +0 -1
  151. package/src/components/Modal/index.tsx +2 -1
  152. package/src/components/MultiSelect/context.ts +2 -2
  153. package/src/components/MultiSelect/index.story.tsx +16 -29
  154. package/src/components/MultiSelect/index.test.tsx +5 -23
  155. package/src/components/MultiSelect/index.tsx +19 -24
  156. package/src/components/Radio/index.story.tsx +0 -1
  157. package/src/components/Radio/index.test.tsx +0 -1
  158. package/src/components/Radio/index.tsx +2 -1
  159. package/src/components/SegmentedControl/RadioGroupContext.tsx +2 -1
  160. package/src/components/SegmentedControl/index.story.tsx +0 -1
  161. package/src/components/SegmentedControl/index.tsx +10 -4
  162. package/src/components/Switch/index.story.tsx +1 -1
  163. package/src/components/Switch/index.tsx +2 -1
  164. package/src/components/TagItem/index.story.tsx +0 -1
  165. package/src/components/TagItem/index.tsx +1 -6
  166. package/src/components/TextField/index.story.tsx +0 -1
  167. package/src/components/TextField/index.tsx +2 -7
  168. package/src/components/a11y.test.tsx +0 -1
  169. package/src/core/CharcoalProvider.tsx +1 -1
  170. package/src/core/ComponentAbstraction.tsx +2 -1
  171. package/src/index.ts +7 -4
  172. package/src/components/DropdownSelector/OptionItem.tsx +0 -85
  173. package/src/components/DropdownSelector/utils/focusIfHTMLLIElement.tsx +0 -12
  174. package/src/components/DropdownSelector/utils/handleFocusByKeyBoard.tsx +0 -20
package/dist/index.cjs.js CHANGED
@@ -31,11 +31,13 @@ __export(src_exports, {
31
31
  Checkbox: () => Checkbox_default,
32
32
  Clickable: () => Clickable_default,
33
33
  ComponentAbstraction: () => ComponentAbstraction,
34
+ DropdownMenuItem: () => DropdownMenuItem,
34
35
  DropdownSelector: () => DropdownSelector,
35
36
  Icon: () => Icon_default,
36
37
  IconButton: () => IconButton_default,
37
38
  LoadingSpinner: () => LoadingSpinner,
38
39
  LoadingSpinnerIcon: () => LoadingSpinnerIcon,
40
+ MenuItemGroup: () => MenuItemGroup,
39
41
  Modal: () => Modal,
40
42
  ModalAlign: () => ModalAlign,
41
43
  ModalBody: () => ModalBody,
@@ -43,7 +45,6 @@ __export(src_exports, {
43
45
  ModalHeader: () => ModalHeader,
44
46
  MultiSelect: () => MultiSelect,
45
47
  MultiSelectGroup: () => MultiSelectGroup,
46
- OptionItem: () => OptionItem,
47
48
  OverlayProvider: () => import_overlays.OverlayProvider,
48
49
  Radio: () => Radio,
49
50
  RadioGroup: () => RadioGroup,
@@ -57,23 +58,25 @@ __export(src_exports, {
57
58
  module.exports = __toCommonJS(src_exports);
58
59
 
59
60
  // src/core/ComponentAbstraction.tsx
60
- var import_react = __toESM(require("react"));
61
- var DefaultLink = import_react.default.forwardRef(
61
+ var import_react = require("react");
62
+ var React = __toESM(require("react"));
63
+ var import_jsx_runtime = require("react/jsx-runtime");
64
+ var DefaultLink = React.forwardRef(
62
65
  function DefaultLink2({ to, children, ...rest }, ref) {
63
- return /* @__PURE__ */ import_react.default.createElement("a", { href: to, ref, ...rest }, children);
66
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { href: to, ref, ...rest, children });
64
67
  }
65
68
  );
66
69
  var DefaultValue = {
67
70
  Link: DefaultLink
68
71
  };
69
- var ComponentAbstractionContext = import_react.default.createContext(DefaultValue);
72
+ var ComponentAbstractionContext = React.createContext(DefaultValue);
70
73
  function ComponentAbstraction({ children, components }) {
71
- return /* @__PURE__ */ import_react.default.createElement(
74
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
72
75
  ComponentAbstractionContext.Provider,
73
76
  {
74
- value: { ...DefaultValue, ...components }
75
- },
76
- children
77
+ value: { ...DefaultValue, ...components },
78
+ children
79
+ }
77
80
  );
78
81
  }
79
82
  function useComponentAbstraction() {
@@ -87,9 +90,9 @@ var import_ssr = require("@react-aria/ssr");
87
90
  var import_overlays = require("@react-aria/overlays");
88
91
 
89
92
  // src/core/CharcoalProvider.tsx
90
- var import_react2 = __toESM(require("react"));
91
93
  var import_styled_components = require("styled-components");
92
94
  var import_styled = require("@charcoal-ui/styled");
95
+ var import_jsx_runtime2 = require("react/jsx-runtime");
93
96
  function CharcoalProvider({
94
97
  themeMap,
95
98
  defaultTheme = themeMap[":root"],
@@ -97,11 +100,14 @@ function CharcoalProvider({
97
100
  injectTokens = true,
98
101
  children
99
102
  }) {
100
- return /* @__PURE__ */ import_react2.default.createElement(import_ssr.SSRProvider, null, /* @__PURE__ */ import_react2.default.createElement(import_styled_components.ThemeProvider, { theme: defaultTheme }, injectTokens && /* @__PURE__ */ import_react2.default.createElement(import_styled.TokenInjector, { theme: themeMap }), /* @__PURE__ */ import_react2.default.createElement(ComponentAbstraction, { components }, /* @__PURE__ */ import_react2.default.createElement(import_overlays.OverlayProvider, null, children))));
103
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_ssr.SSRProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_styled_components.ThemeProvider, { theme: defaultTheme, children: [
104
+ injectTokens && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_styled.TokenInjector, { theme: themeMap }),
105
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ComponentAbstraction, { components, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_overlays.OverlayProvider, { children }) })
106
+ ] }) });
101
107
  }
102
108
 
103
109
  // src/components/Button/index.tsx
104
- var import_react4 = __toESM(require("react"));
110
+ var import_react2 = require("react");
105
111
  var import_styled_components4 = __toESM(require("styled-components"));
106
112
 
107
113
  // src/_lib/index.ts
@@ -117,15 +123,16 @@ var import_styled2 = require("@charcoal-ui/styled");
117
123
  var theme = (0, import_styled2.createTheme)(import_styled_components2.default);
118
124
 
119
125
  // src/components/Clickable/index.tsx
120
- var import_react3 = __toESM(require("react"));
126
+ var React2 = __toESM(require("react"));
121
127
  var import_styled_components3 = __toESM(require("styled-components"));
122
128
  var import_utils = require("@charcoal-ui/utils");
123
- var Clickable = import_react3.default.forwardRef(
129
+ var import_jsx_runtime3 = require("react/jsx-runtime");
130
+ var Clickable = React2.forwardRef(
124
131
  function Clickable2(props, ref) {
125
132
  const { Link } = useComponentAbstraction();
126
133
  if ("to" in props) {
127
134
  const { onClick, disabled = false, ...rest } = props;
128
- return /* @__PURE__ */ import_react3.default.createElement(
135
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
129
136
  A,
130
137
  {
131
138
  ...rest,
@@ -136,7 +143,7 @@ var Clickable = import_react3.default.forwardRef(
136
143
  }
137
144
  );
138
145
  } else {
139
- return /* @__PURE__ */ import_react3.default.createElement(Button, { ...props, ref });
146
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Button, { ...props, ref });
140
147
  }
141
148
  }
142
149
  );
@@ -201,7 +208,8 @@ var A = import_styled_components3.default.span`
201
208
  `;
202
209
 
203
210
  // src/components/Button/index.tsx
204
- var Button2 = import_react4.default.forwardRef(function Button3({
211
+ var import_jsx_runtime4 = require("react/jsx-runtime");
212
+ var Button2 = (0, import_react2.forwardRef)(function Button3({
205
213
  children,
206
214
  variant = "Default",
207
215
  size = "M",
@@ -209,7 +217,7 @@ var Button2 = import_react4.default.forwardRef(function Button3({
209
217
  disabled = false,
210
218
  ...rest
211
219
  }, ref) {
212
- return /* @__PURE__ */ import_react4.default.createElement(
220
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
213
221
  StyledButton,
214
222
  {
215
223
  ...rest,
@@ -217,9 +225,9 @@ var Button2 = import_react4.default.forwardRef(function Button3({
217
225
  variant,
218
226
  size,
219
227
  fullWidth: fixed,
220
- ref
221
- },
222
- children
228
+ ref,
229
+ children
230
+ }
223
231
  );
224
232
  });
225
233
  var Button_default = Button2;
@@ -288,12 +296,13 @@ function sizeToProps(size) {
288
296
  }
289
297
 
290
298
  // src/components/IconButton/index.tsx
291
- var import_react5 = __toESM(require("react"));
299
+ var import_react3 = require("react");
292
300
  var import_styled_components5 = __toESM(require("styled-components"));
293
- var IconButton = import_react5.default.forwardRef(
301
+ var import_jsx_runtime5 = require("react/jsx-runtime");
302
+ var IconButton = (0, import_react3.forwardRef)(
294
303
  function IconButtonInner({ variant = "Default", size = "M", icon, ...rest }, ref) {
295
304
  validateIconSize(size, icon);
296
- return /* @__PURE__ */ import_react5.default.createElement(StyledIconButton, { ...rest, ref, variant, size }, /* @__PURE__ */ import_react5.default.createElement("pixiv-icon", { name: icon }));
305
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(StyledIconButton, { ...rest, ref, variant, size, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("pixiv-icon", { name: icon }) });
297
306
  }
298
307
  );
299
308
  var IconButton_default = IconButton;
@@ -372,10 +381,12 @@ function validateIconSize(size, icon) {
372
381
  }
373
382
 
374
383
  // src/components/Radio/index.tsx
375
- var import_react6 = __toESM(require("react"));
384
+ var import_react4 = require("react");
385
+ var React3 = __toESM(require("react"));
376
386
  var import_styled_components6 = __toESM(require("styled-components"));
377
387
  var import_warning = __toESM(require("warning"));
378
388
  var import_utils2 = require("@charcoal-ui/utils");
389
+ var import_jsx_runtime6 = require("react/jsx-runtime");
379
390
  function Radio({
380
391
  value,
381
392
  forceChecked = false,
@@ -389,7 +400,7 @@ function Radio({
389
400
  readonly,
390
401
  hasError,
391
402
  onChange
392
- } = (0, import_react6.useContext)(RadioGroupContext);
403
+ } = (0, import_react4.useContext)(RadioGroupContext);
393
404
  (0, import_warning.default)(
394
405
  name !== void 0,
395
406
  `"name" is not Provided for <Radio>. Perhaps you forgot to wrap with <RadioGroup> ?`
@@ -397,23 +408,26 @@ function Radio({
397
408
  const isSelected = value === selected;
398
409
  const isDisabled = disabled || isParentDisabled;
399
410
  const isReadonly = readonly && !isSelected;
400
- const handleChange = (0, import_react6.useCallback)(
411
+ const handleChange = (0, import_react4.useCallback)(
401
412
  (e) => {
402
413
  onChange(e.currentTarget.value);
403
414
  },
404
415
  [onChange]
405
416
  );
406
- return /* @__PURE__ */ import_react6.default.createElement(RadioRoot, { "aria-disabled": isDisabled || isReadonly }, /* @__PURE__ */ import_react6.default.createElement(
407
- RadioInput,
408
- {
409
- name,
410
- value,
411
- checked: forceChecked || isSelected,
412
- hasError,
413
- onChange: handleChange,
414
- disabled: isDisabled || isReadonly
415
- }
416
- ), children != null && /* @__PURE__ */ import_react6.default.createElement(RadioLabel, null, children));
417
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(RadioRoot, { "aria-disabled": isDisabled || isReadonly, children: [
418
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
419
+ RadioInput,
420
+ {
421
+ name,
422
+ value,
423
+ checked: forceChecked || isSelected,
424
+ hasError,
425
+ onChange: handleChange,
426
+ disabled: isDisabled || isReadonly
427
+ }
428
+ ),
429
+ children != null && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(RadioLabel, { children })
430
+ ] });
417
431
  }
418
432
  var RadioRoot = import_styled_components6.default.label`
419
433
  display: grid;
@@ -479,7 +493,7 @@ var StyledRadioGroup = import_styled_components6.default.div`
479
493
  grid-template-columns: 1fr;
480
494
  grid-gap: ${({ theme: theme4 }) => (0, import_utils2.px)(theme4.spacing[8])};
481
495
  `;
482
- var RadioGroupContext = import_react6.default.createContext({
496
+ var RadioGroupContext = React3.createContext({
483
497
  name: void 0,
484
498
  selected: void 0,
485
499
  disabled: false,
@@ -502,13 +516,13 @@ function RadioGroup({
502
516
  hasError,
503
517
  children
504
518
  }) {
505
- const handleChange = (0, import_react6.useCallback)(
519
+ const handleChange = (0, import_react4.useCallback)(
506
520
  (next) => {
507
521
  onChange(next);
508
522
  },
509
523
  [onChange]
510
524
  );
511
- return /* @__PURE__ */ import_react6.default.createElement(
525
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
512
526
  RadioGroupContext.Provider,
513
527
  {
514
528
  value: {
@@ -518,36 +532,36 @@ function RadioGroup({
518
532
  readonly: readonly ?? false,
519
533
  hasError: hasError ?? false,
520
534
  onChange: handleChange
521
- }
522
- },
523
- /* @__PURE__ */ import_react6.default.createElement(
524
- StyledRadioGroup,
525
- {
526
- role: "radiogroup",
527
- "aria-orientation": "vertical",
528
- "aria-label": label,
529
- "aria-invalid": hasError,
530
- className
531
535
  },
532
- children
533
- )
536
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
537
+ StyledRadioGroup,
538
+ {
539
+ role: "radiogroup",
540
+ "aria-orientation": "vertical",
541
+ "aria-label": label,
542
+ "aria-invalid": hasError,
543
+ className,
544
+ children
545
+ }
546
+ )
547
+ }
534
548
  );
535
549
  }
536
550
 
537
551
  // src/components/MultiSelect/index.tsx
538
- var import_react8 = __toESM(require("react"));
552
+ var import_react6 = require("react");
539
553
  var import_styled_components7 = __toESM(require("styled-components"));
540
554
  var import_warning2 = __toESM(require("warning"));
541
555
  var import_utils3 = require("@charcoal-ui/utils");
542
556
 
543
557
  // src/components/MultiSelect/context.ts
544
- var import_react7 = require("react");
545
- var MultiSelectGroupContext = (0, import_react7.createContext)({
558
+ var import_react5 = require("react");
559
+ var MultiSelectGroupContext = (0, import_react5.createContext)({
546
560
  name: void 0,
547
561
  selected: [],
548
562
  disabled: false,
549
563
  readonly: false,
550
- hasError: false,
564
+ invalid: false,
551
565
  onChange() {
552
566
  throw new Error(
553
567
  "Cannot find `onChange()` handler. Perhaps you forgot to wrap it with `<MultiSelectGroup />` ?"
@@ -556,9 +570,9 @@ var MultiSelectGroupContext = (0, import_react7.createContext)({
556
570
  });
557
571
 
558
572
  // src/components/MultiSelect/index.tsx
573
+ var import_jsx_runtime7 = require("react/jsx-runtime");
559
574
  function MultiSelect({
560
575
  value,
561
- forceChecked = false,
562
576
  disabled = false,
563
577
  onChange,
564
578
  variant = "default",
@@ -569,16 +583,16 @@ function MultiSelect({
569
583
  selected,
570
584
  disabled: parentDisabled,
571
585
  readonly,
572
- hasError,
586
+ invalid,
573
587
  onChange: parentOnChange
574
- } = (0, import_react8.useContext)(MultiSelectGroupContext);
588
+ } = (0, import_react6.useContext)(MultiSelectGroupContext);
575
589
  (0, import_warning2.default)(
576
590
  name !== void 0,
577
591
  `"name" is not Provided for <MultiSelect>. Perhaps you forgot to wrap with <MultiSelectGroup> ?`
578
592
  );
579
- const isSelected = selected.includes(value) || forceChecked;
593
+ const isSelected = selected.includes(value);
580
594
  const isDisabled = disabled || parentDisabled || readonly;
581
- const handleChange = (0, import_react8.useCallback)(
595
+ const handleChange = (0, import_react6.useCallback)(
582
596
  (event) => {
583
597
  if (!(event.currentTarget instanceof HTMLInputElement)) {
584
598
  return;
@@ -589,29 +603,33 @@ function MultiSelect({
589
603
  },
590
604
  [onChange, parentOnChange, value]
591
605
  );
592
- return /* @__PURE__ */ import_react8.default.createElement(MultiSelectRoot, { "aria-disabled": isDisabled }, /* @__PURE__ */ import_react8.default.createElement(
593
- MultiSelectInput,
594
- {
595
- ...{
596
- name,
597
- value,
598
- hasError
599
- },
600
- checked: isSelected,
601
- disabled: isDisabled,
602
- onChange: handleChange,
603
- overlay: variant === "overlay",
604
- "aria-invalid": hasError
605
- }
606
- ), /* @__PURE__ */ import_react8.default.createElement(
607
- MultiSelectInputOverlay,
608
- {
609
- overlay: variant === "overlay",
610
- hasError,
611
- "aria-hidden": true
612
- },
613
- /* @__PURE__ */ import_react8.default.createElement("pixiv-icon", { name: "24/Check", "unsafe-non-guideline-scale": 16 / 24 })
614
- ), Boolean(children) && /* @__PURE__ */ import_react8.default.createElement(MultiSelectLabel, null, children));
606
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(MultiSelectRoot, { "aria-disabled": isDisabled, children: [
607
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
608
+ MultiSelectInput,
609
+ {
610
+ ...{
611
+ name,
612
+ value,
613
+ invalid
614
+ },
615
+ checked: isSelected,
616
+ disabled: isDisabled,
617
+ onChange: handleChange,
618
+ overlay: variant === "overlay",
619
+ "aria-invalid": invalid
620
+ }
621
+ ),
622
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
623
+ MultiSelectInputOverlay,
624
+ {
625
+ overlay: variant === "overlay",
626
+ invalid,
627
+ "aria-hidden": true,
628
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("pixiv-icon", { name: "24/Check", "unsafe-non-guideline-scale": 16 / 24 })
629
+ }
630
+ ),
631
+ Boolean(children) && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(MultiSelectLabel, { children })
632
+ ] });
615
633
  }
616
634
  var MultiSelectRoot = import_styled_components7.default.label`
617
635
  display: grid;
@@ -642,10 +660,10 @@ var MultiSelectInput = import_styled_components7.default.input.attrs({ type: "ch
642
660
  ${theme((o) => o.bg.brand.hover.press)}
643
661
  }
644
662
 
645
- ${({ hasError, overlay }) => theme((o) => [
663
+ ${({ invalid, overlay }) => theme((o) => [
646
664
  o.bg.text3.hover.press,
647
665
  o.borderRadius("oval"),
648
- hasError && !overlay && o.outline.assertive,
666
+ invalid && !overlay && o.outline.assertive,
649
667
  overlay && o.bg.surface4
650
668
  ])};
651
669
  }
@@ -659,12 +677,12 @@ var MultiSelectInputOverlay = import_styled_components7.default.div`
659
677
  align-items: center;
660
678
  justify-content: center;
661
679
 
662
- ${({ hasError, overlay }) => theme((o) => [
680
+ ${({ invalid, overlay }) => theme((o) => [
663
681
  o.width.px(24),
664
682
  o.height.px(24),
665
683
  o.borderRadius("oval"),
666
684
  o.font.text5,
667
- hasError && overlay && o.outline.assertive
685
+ invalid && overlay && o.outline.assertive
668
686
  ])}
669
687
 
670
688
  ${({ overlay }) => overlay && import_styled_components7.css`
@@ -676,15 +694,15 @@ var MultiSelectInputOverlay = import_styled_components7.default.div`
676
694
  function MultiSelectGroup({
677
695
  className,
678
696
  name,
679
- ariaLabel,
697
+ label,
680
698
  selected,
681
699
  onChange,
682
700
  disabled = false,
683
701
  readonly = false,
684
- hasError = false,
702
+ invalid = false,
685
703
  children
686
704
  }) {
687
- const handleChange = (0, import_react8.useCallback)(
705
+ const handleChange = (0, import_react6.useCallback)(
688
706
  (payload) => {
689
707
  const index = selected.indexOf(payload.value);
690
708
  if (payload.selected) {
@@ -699,7 +717,7 @@ function MultiSelectGroup({
699
717
  },
700
718
  [onChange, selected]
701
719
  );
702
- return /* @__PURE__ */ import_react8.default.createElement(
720
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
703
721
  MultiSelectGroupContext.Provider,
704
722
  {
705
723
  value: {
@@ -707,31 +725,24 @@ function MultiSelectGroup({
707
725
  selected: Array.from(new Set(selected)),
708
726
  disabled,
709
727
  readonly,
710
- hasError,
728
+ invalid,
711
729
  onChange: handleChange
712
- }
713
- },
714
- /* @__PURE__ */ import_react8.default.createElement(
715
- "div",
716
- {
717
- className,
718
- "aria-label": ariaLabel,
719
- "data-testid": "SelectGroup"
720
730
  },
721
- children
722
- )
731
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className, "aria-label": label, "data-testid": "SelectGroup", children })
732
+ }
723
733
  );
724
734
  }
725
735
 
726
736
  // src/components/Switch/index.tsx
727
737
  var import_switch = require("@react-aria/switch");
728
- var import_react9 = __toESM(require("react"));
738
+ var import_react7 = require("react");
729
739
  var import_react_stately = require("react-stately");
730
740
  var import_styled_components8 = __toESM(require("styled-components"));
731
741
  var import_utils4 = require("@charcoal-ui/utils");
742
+ var import_jsx_runtime8 = require("react/jsx-runtime");
732
743
  function SwitchCheckbox(props) {
733
744
  const { disabled, className } = props;
734
- const ariaSwitchProps = (0, import_react9.useMemo)(
745
+ const ariaSwitchProps = (0, import_react7.useMemo)(
735
746
  () => ({
736
747
  ...props,
737
748
  "aria-label": "children" in props ? void 0 : props.label,
@@ -741,11 +752,14 @@ function SwitchCheckbox(props) {
741
752
  [props]
742
753
  );
743
754
  const state = (0, import_react_stately.useToggleState)(ariaSwitchProps);
744
- const ref = (0, import_react9.useRef)(null);
755
+ const ref = (0, import_react7.useRef)(null);
745
756
  const {
746
757
  inputProps: { className: _className, type: _type, ...rest }
747
758
  } = (0, import_switch.useSwitch)(ariaSwitchProps, state, ref);
748
- return /* @__PURE__ */ import_react9.default.createElement(Label, { className, "aria-disabled": disabled }, /* @__PURE__ */ import_react9.default.createElement(SwitchInput, { ...rest, ref }), "children" in props ? /* @__PURE__ */ import_react9.default.createElement(LabelInner, null, props.children) : void 0);
759
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Label, { className, "aria-disabled": disabled, children: [
760
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SwitchInput, { ...rest, ref }),
761
+ "children" in props ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(LabelInner, { children: props.children }) : void 0
762
+ ] });
749
763
  }
750
764
  var Label = import_styled_components8.default.label`
751
765
  display: inline-grid;
@@ -838,14 +852,16 @@ var SwitchInput = import_styled_components8.default.input.attrs({
838
852
  // src/components/TextField/index.tsx
839
853
  var import_textfield = require("@react-aria/textfield");
840
854
  var import_visually_hidden = require("@react-aria/visually-hidden");
841
- var import_react11 = __toESM(require("react"));
855
+ var import_react8 = require("react");
856
+ var React5 = __toESM(require("react"));
842
857
  var import_styled_components10 = __toESM(require("styled-components"));
843
858
 
844
859
  // src/components/FieldLabel/index.tsx
845
- var import_react10 = __toESM(require("react"));
860
+ var React4 = __toESM(require("react"));
846
861
  var import_styled_components9 = __toESM(require("styled-components"));
847
862
  var import_styled8 = require("@charcoal-ui/styled");
848
- var FieldLabel = import_react10.default.forwardRef(
863
+ var import_jsx_runtime9 = require("react/jsx-runtime");
864
+ var FieldLabel = React4.forwardRef(
849
865
  function FieldLabel2({
850
866
  style,
851
867
  className,
@@ -855,7 +871,11 @@ var FieldLabel = import_react10.default.forwardRef(
855
871
  subLabel,
856
872
  ...labelProps
857
873
  }, ref) {
858
- return /* @__PURE__ */ import_react10.default.createElement(FieldLabelWrapper, { style, className }, /* @__PURE__ */ import_react10.default.createElement(Label2, { ref, ...labelProps }, label), required && /* @__PURE__ */ import_react10.default.createElement(RequiredText, null, requiredText), /* @__PURE__ */ import_react10.default.createElement(SubLabelClickable, null, /* @__PURE__ */ import_react10.default.createElement("span", null, subLabel)));
874
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(FieldLabelWrapper, { style, className, children: [
875
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Label2, { ref, ...labelProps, children: label }),
876
+ required && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RequiredText, { children: requiredText }),
877
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SubLabelClickable, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: subLabel }) })
878
+ ] });
859
879
  }
860
880
  );
861
881
  var FieldLabel_default = FieldLabel;
@@ -888,6 +908,7 @@ var FieldLabelWrapper = import_styled_components9.default.div`
888
908
 
889
909
  // src/components/TextField/index.tsx
890
910
  var import_styled9 = require("@charcoal-ui/styled");
911
+ var import_jsx_runtime10 = require("react/jsx-runtime");
891
912
  var theme3 = (0, import_styled9.createTheme)(import_styled_components10.default);
892
913
  function mergeRefs(...refs) {
893
914
  return (value) => {
@@ -904,13 +925,13 @@ function mergeRefs(...refs) {
904
925
  function countCodePointsInString(string) {
905
926
  return Array.from(string).length;
906
927
  }
907
- var TextField = import_react11.default.forwardRef(
928
+ var TextField = React5.forwardRef(
908
929
  function TextField2(props, ref) {
909
- return props.multiline !== void 0 && props.multiline ? /* @__PURE__ */ import_react11.default.createElement(MultiLineTextField, { ref, ...props }) : /* @__PURE__ */ import_react11.default.createElement(SingleLineTextField, { ref, ...props });
930
+ return props.multiline !== void 0 && props.multiline ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MultiLineTextField, { ref, ...props }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SingleLineTextField, { ref, ...props });
910
931
  }
911
932
  );
912
933
  var TextField_default = TextField;
913
- var SingleLineTextField = import_react11.default.forwardRef(function SingleLineTextFieldInner({ onChange, ...props }, forwardRef4) {
934
+ var SingleLineTextField = React5.forwardRef(function SingleLineTextFieldInner({ onChange, ...props }, forwardRef12) {
914
935
  const {
915
936
  className,
916
937
  showLabel = false,
@@ -927,14 +948,14 @@ var SingleLineTextField = import_react11.default.forwardRef(function SingleLineT
927
948
  suffix = null
928
949
  } = props;
929
950
  const { visuallyHiddenProps } = (0, import_visually_hidden.useVisuallyHidden)();
930
- const ariaRef = (0, import_react11.useRef)(null);
931
- const prefixRef = (0, import_react11.useRef)(null);
932
- const suffixRef = (0, import_react11.useRef)(null);
933
- const [count, setCount] = (0, import_react11.useState)(countCodePointsInString(props.value ?? ""));
934
- const [prefixWidth, setPrefixWidth] = (0, import_react11.useState)(0);
935
- const [suffixWidth, setSuffixWidth] = (0, import_react11.useState)(0);
951
+ const ariaRef = (0, import_react8.useRef)(null);
952
+ const prefixRef = (0, import_react8.useRef)(null);
953
+ const suffixRef = (0, import_react8.useRef)(null);
954
+ const [count, setCount] = (0, import_react8.useState)(countCodePointsInString(props.value ?? ""));
955
+ const [prefixWidth, setPrefixWidth] = (0, import_react8.useState)(0);
956
+ const [suffixWidth, setSuffixWidth] = (0, import_react8.useState)(0);
936
957
  const nonControlled = props.value === void 0;
937
- const handleChange = (0, import_react11.useCallback)(
958
+ const handleChange = (0, import_react8.useCallback)(
938
959
  (value) => {
939
960
  const count2 = countCodePointsInString(value);
940
961
  if (maxLength !== void 0 && count2 > maxLength) {
@@ -947,7 +968,7 @@ var SingleLineTextField = import_react11.default.forwardRef(function SingleLineT
947
968
  },
948
969
  [maxLength, nonControlled, onChange]
949
970
  );
950
- (0, import_react11.useEffect)(() => {
971
+ (0, import_react8.useEffect)(() => {
951
972
  setCount(countCodePointsInString(props.value ?? ""));
952
973
  }, [props.value]);
953
974
  const { inputProps, labelProps, descriptionProps, errorMessageProps } = (0, import_textfield.useTextField)(
@@ -963,7 +984,7 @@ var SingleLineTextField = import_react11.default.forwardRef(function SingleLineT
963
984
  },
964
985
  ariaRef
965
986
  );
966
- (0, import_react11.useEffect)(() => {
987
+ (0, import_react8.useEffect)(() => {
967
988
  const prefixObserver = new ResizeObserver((entries) => {
968
989
  setPrefixWidth(entries[0].contentRect.width);
969
990
  });
@@ -981,35 +1002,46 @@ var SingleLineTextField = import_react11.default.forwardRef(function SingleLineT
981
1002
  prefixObserver.disconnect();
982
1003
  };
983
1004
  }, []);
984
- return /* @__PURE__ */ import_react11.default.createElement(TextFieldRoot, { className, isDisabled: disabled }, /* @__PURE__ */ import_react11.default.createElement(
985
- TextFieldLabel,
986
- {
987
- label,
988
- requiredText,
989
- required,
990
- subLabel,
991
- ...labelProps,
992
- ...!showLabel ? visuallyHiddenProps : {}
993
- }
994
- ), /* @__PURE__ */ import_react11.default.createElement(StyledInputContainer, null, /* @__PURE__ */ import_react11.default.createElement(PrefixContainer, { ref: prefixRef }, /* @__PURE__ */ import_react11.default.createElement(Affix, null, prefix)), /* @__PURE__ */ import_react11.default.createElement(
995
- StyledInput,
996
- {
997
- ref: mergeRefs(forwardRef4, ariaRef),
998
- invalid,
999
- extraLeftPadding: prefixWidth,
1000
- extraRightPadding: suffixWidth,
1001
- ...inputProps
1002
- }
1003
- ), /* @__PURE__ */ import_react11.default.createElement(SuffixContainer, { ref: suffixRef }, /* @__PURE__ */ import_react11.default.createElement(Affix, null, suffix), showCount && /* @__PURE__ */ import_react11.default.createElement(SingleLineCounter, null, maxLength !== void 0 ? `${count}/${maxLength}` : count))), assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ import_react11.default.createElement(
1004
- AssistiveText,
1005
- {
1006
- invalid,
1007
- ...invalid ? errorMessageProps : descriptionProps
1008
- },
1009
- assistiveText
1010
- ));
1005
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(TextFieldRoot, { className, isDisabled: disabled, children: [
1006
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1007
+ TextFieldLabel,
1008
+ {
1009
+ label,
1010
+ requiredText,
1011
+ required,
1012
+ subLabel,
1013
+ ...labelProps,
1014
+ ...!showLabel ? visuallyHiddenProps : {}
1015
+ }
1016
+ ),
1017
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(StyledInputContainer, { children: [
1018
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(PrefixContainer, { ref: prefixRef, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Affix, { children: prefix }) }),
1019
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1020
+ StyledInput,
1021
+ {
1022
+ ref: mergeRefs(forwardRef12, ariaRef),
1023
+ invalid,
1024
+ extraLeftPadding: prefixWidth,
1025
+ extraRightPadding: suffixWidth,
1026
+ ...inputProps
1027
+ }
1028
+ ),
1029
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(SuffixContainer, { ref: suffixRef, children: [
1030
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Affix, { children: suffix }),
1031
+ showCount && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SingleLineCounter, { children: maxLength !== void 0 ? `${count}/${maxLength}` : count })
1032
+ ] })
1033
+ ] }),
1034
+ assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1035
+ AssistiveText,
1036
+ {
1037
+ invalid,
1038
+ ...invalid ? errorMessageProps : descriptionProps,
1039
+ children: assistiveText
1040
+ }
1041
+ )
1042
+ ] });
1011
1043
  });
1012
- var MultiLineTextField = import_react11.default.forwardRef(function MultiLineTextFieldInner({ onChange, ...props }, forwardRef4) {
1044
+ var MultiLineTextField = React5.forwardRef(function MultiLineTextFieldInner({ onChange, ...props }, forwardRef12) {
1013
1045
  const {
1014
1046
  className,
1015
1047
  showCount = false,
@@ -1026,11 +1058,11 @@ var MultiLineTextField = import_react11.default.forwardRef(function MultiLineTex
1026
1058
  rows: initialRows = 4
1027
1059
  } = props;
1028
1060
  const { visuallyHiddenProps } = (0, import_visually_hidden.useVisuallyHidden)();
1029
- const textareaRef = (0, import_react11.useRef)(null);
1030
- const ariaRef = (0, import_react11.useRef)(null);
1031
- const [count, setCount] = (0, import_react11.useState)(countCodePointsInString(props.value ?? ""));
1032
- const [rows, setRows] = (0, import_react11.useState)(initialRows);
1033
- const syncHeight = (0, import_react11.useCallback)(
1061
+ const textareaRef = (0, import_react8.useRef)(null);
1062
+ const ariaRef = (0, import_react8.useRef)(null);
1063
+ const [count, setCount] = (0, import_react8.useState)(countCodePointsInString(props.value ?? ""));
1064
+ const [rows, setRows] = (0, import_react8.useState)(initialRows);
1065
+ const syncHeight = (0, import_react8.useCallback)(
1034
1066
  (textarea) => {
1035
1067
  const rows2 = (`${textarea.value}
1036
1068
  `.match(/\n/gu)?.length ?? 0) || 1;
@@ -1039,7 +1071,7 @@ var MultiLineTextField = import_react11.default.forwardRef(function MultiLineTex
1039
1071
  [initialRows]
1040
1072
  );
1041
1073
  const nonControlled = props.value === void 0;
1042
- const handleChange = (0, import_react11.useCallback)(
1074
+ const handleChange = (0, import_react8.useCallback)(
1043
1075
  (value) => {
1044
1076
  const count2 = countCodePointsInString(value);
1045
1077
  if (maxLength !== void 0 && count2 > maxLength) {
@@ -1055,7 +1087,7 @@ var MultiLineTextField = import_react11.default.forwardRef(function MultiLineTex
1055
1087
  },
1056
1088
  [autoHeight, maxLength, nonControlled, onChange, syncHeight]
1057
1089
  );
1058
- (0, import_react11.useEffect)(() => {
1090
+ (0, import_react8.useEffect)(() => {
1059
1091
  setCount(countCodePointsInString(props.value ?? ""));
1060
1092
  }, [props.value]);
1061
1093
  const { inputProps, labelProps, descriptionProps, errorMessageProps } = (0, import_textfield.useTextField)(
@@ -1071,45 +1103,51 @@ var MultiLineTextField = import_react11.default.forwardRef(function MultiLineTex
1071
1103
  },
1072
1104
  ariaRef
1073
1105
  );
1074
- (0, import_react11.useEffect)(() => {
1106
+ (0, import_react8.useEffect)(() => {
1075
1107
  if (autoHeight && textareaRef.current !== null) {
1076
1108
  syncHeight(textareaRef.current);
1077
1109
  }
1078
1110
  }, [autoHeight, syncHeight]);
1079
- return /* @__PURE__ */ import_react11.default.createElement(TextFieldRoot, { className, isDisabled: disabled }, /* @__PURE__ */ import_react11.default.createElement(
1080
- TextFieldLabel,
1081
- {
1082
- label,
1083
- requiredText,
1084
- required,
1085
- subLabel,
1086
- ...labelProps,
1087
- ...!showLabel ? visuallyHiddenProps : {}
1088
- }
1089
- ), /* @__PURE__ */ import_react11.default.createElement(
1090
- StyledTextareaContainer,
1091
- {
1092
- invalid,
1093
- rows: showCount ? rows + 1 : rows
1094
- },
1095
- /* @__PURE__ */ import_react11.default.createElement(
1096
- StyledTextarea,
1111
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(TextFieldRoot, { className, isDisabled: disabled, children: [
1112
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1113
+ TextFieldLabel,
1097
1114
  {
1098
- ref: mergeRefs(textareaRef, forwardRef4, ariaRef),
1099
- rows,
1100
- noBottomPadding: showCount,
1101
- ...inputProps
1115
+ label,
1116
+ requiredText,
1117
+ required,
1118
+ subLabel,
1119
+ ...labelProps,
1120
+ ...!showLabel ? visuallyHiddenProps : {}
1102
1121
  }
1103
1122
  ),
1104
- showCount && /* @__PURE__ */ import_react11.default.createElement(MultiLineCounter, null, maxLength !== void 0 ? `${count}/${maxLength}` : count)
1105
- ), assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ import_react11.default.createElement(
1106
- AssistiveText,
1107
- {
1108
- invalid,
1109
- ...invalid ? errorMessageProps : descriptionProps
1110
- },
1111
- assistiveText
1112
- ));
1123
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
1124
+ StyledTextareaContainer,
1125
+ {
1126
+ invalid,
1127
+ rows: showCount ? rows + 1 : rows,
1128
+ children: [
1129
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1130
+ StyledTextarea,
1131
+ {
1132
+ ref: mergeRefs(textareaRef, forwardRef12, ariaRef),
1133
+ rows,
1134
+ noBottomPadding: showCount,
1135
+ ...inputProps
1136
+ }
1137
+ ),
1138
+ showCount && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MultiLineCounter, { children: maxLength !== void 0 ? `${count}/${maxLength}` : count })
1139
+ ]
1140
+ }
1141
+ ),
1142
+ assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1143
+ AssistiveText,
1144
+ {
1145
+ invalid,
1146
+ ...invalid ? errorMessageProps : descriptionProps,
1147
+ children: assistiveText
1148
+ }
1149
+ )
1150
+ ] });
1113
1151
  });
1114
1152
  var TextFieldRoot = import_styled_components10.default.div`
1115
1153
  display: flex;
@@ -1260,10 +1298,11 @@ var AssistiveText = import_styled_components10.default.p`
1260
1298
  `;
1261
1299
 
1262
1300
  // src/components/Icon/index.tsx
1263
- var import_react12 = __toESM(require("react"));
1301
+ var React6 = __toESM(require("react"));
1264
1302
  var import_icons = require("@charcoal-ui/icons");
1265
- var Icon = import_react12.default.forwardRef(function IconInner({ name, scale, unsafeNonGuidelineScale, className, ...rest }, ref) {
1266
- return /* @__PURE__ */ import_react12.default.createElement(
1303
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1304
+ var Icon = React6.forwardRef(function IconInner({ name, scale, unsafeNonGuidelineScale, className, ...rest }, ref) {
1305
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1267
1306
  "pixiv-icon",
1268
1307
  {
1269
1308
  ref,
@@ -1278,7 +1317,8 @@ var Icon = import_react12.default.forwardRef(function IconInner({ name, scale, u
1278
1317
  var Icon_default = Icon;
1279
1318
 
1280
1319
  // src/components/Modal/index.tsx
1281
- var import_react13 = __toESM(require("react"));
1320
+ var import_react9 = require("react");
1321
+ var React7 = __toESM(require("react"));
1282
1322
  var import_overlays2 = require("@react-aria/overlays");
1283
1323
  var import_styled_components11 = __toESM(require("styled-components"));
1284
1324
  var import_focus = require("@react-aria/focus");
@@ -1295,6 +1335,7 @@ function columnSystem(span, column, gutter) {
1295
1335
  var import_utils5 = require("@charcoal-ui/utils");
1296
1336
  var import_styled11 = require("@charcoal-ui/styled");
1297
1337
  var import_react_spring = require("react-spring");
1338
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1298
1339
  var DEFAULT_Z_INDEX = 10;
1299
1340
  function Modal({
1300
1341
  children,
@@ -1310,7 +1351,7 @@ function Modal({
1310
1351
  onClose,
1311
1352
  isOpen = false
1312
1353
  } = props;
1313
- const ref = (0, import_react13.useRef)(null);
1354
+ const ref = (0, import_react9.useRef)(null);
1314
1355
  const { overlayProps, underlayProps } = (0, import_overlays2.useOverlay)(props, ref);
1315
1356
  const { modalProps } = (0, import_overlays2.useModalOverlay)(
1316
1357
  props,
@@ -1347,44 +1388,46 @@ function Modal({
1347
1388
  });
1348
1389
  const showDismiss = !isMobile || bottomSheet !== true;
1349
1390
  return transition(
1350
- ({ backgroundColor, transform }, item) => item && /* @__PURE__ */ import_react13.default.createElement(import_overlays2.Overlay, { portalContainer }, /* @__PURE__ */ import_react13.default.createElement(
1391
+ ({ backgroundColor, transform }, item) => item && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_overlays2.Overlay, { portalContainer, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1351
1392
  ModalBackground,
1352
1393
  {
1353
1394
  zIndex,
1354
1395
  ...underlayProps,
1355
- style: transitionEnabled ? { backgroundColor } : {}
1356
- },
1357
- /* @__PURE__ */ import_react13.default.createElement(import_focus.FocusScope, { contain: true, restoreFocus: true, autoFocus: true }, /* @__PURE__ */ import_react13.default.createElement(DialogContainer, { bottomSheet, size }, /* @__PURE__ */ import_react13.default.createElement(
1358
- ModalDialog,
1359
- {
1360
- ref,
1361
- ...overlayProps,
1362
- ...modalProps,
1363
- ...dialogProps,
1364
- style: transitionEnabled ? { transform } : {},
1365
- size,
1366
- bottomSheet
1367
- },
1368
- /* @__PURE__ */ import_react13.default.createElement(
1369
- ModalContext.Provider,
1396
+ style: transitionEnabled ? { backgroundColor } : {},
1397
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_focus.FocusScope, { contain: true, restoreFocus: true, autoFocus: true, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DialogContainer, { bottomSheet, size, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1398
+ ModalDialog,
1370
1399
  {
1371
- value: { titleProps, title, close: onClose, showDismiss }
1372
- },
1373
- children,
1374
- isDismissable === true && /* @__PURE__ */ import_react13.default.createElement(
1375
- ModalCrossButton,
1376
- {
1377
- size: "S",
1378
- icon: "24/Close",
1379
- onClick: onClose
1380
- }
1381
- )
1382
- )
1383
- )))
1384
- ))
1400
+ ref,
1401
+ ...overlayProps,
1402
+ ...modalProps,
1403
+ ...dialogProps,
1404
+ style: transitionEnabled ? { transform } : {},
1405
+ size,
1406
+ bottomSheet,
1407
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1408
+ ModalContext.Provider,
1409
+ {
1410
+ value: { titleProps, title, close: onClose, showDismiss },
1411
+ children: [
1412
+ children,
1413
+ isDismissable === true && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1414
+ ModalCrossButton,
1415
+ {
1416
+ size: "S",
1417
+ icon: "24/Close",
1418
+ onClick: onClose
1419
+ }
1420
+ )
1421
+ ]
1422
+ }
1423
+ )
1424
+ }
1425
+ ) }) })
1426
+ }
1427
+ ) })
1385
1428
  );
1386
1429
  }
1387
- var ModalContext = import_react13.default.createContext({
1430
+ var ModalContext = React7.createContext({
1388
1431
  titleProps: {},
1389
1432
  title: "",
1390
1433
  close: void 0,
@@ -1458,8 +1501,8 @@ var ModalCrossButton = (0, import_styled_components11.default)(IconButton_defaul
1458
1501
  ${theme((o) => [o.font.text3.hover.press])}
1459
1502
  `;
1460
1503
  function ModalTitle(props) {
1461
- const { titleProps, title } = (0, import_react13.useContext)(ModalContext);
1462
- return /* @__PURE__ */ import_react13.default.createElement(ModalHeading, { ...titleProps, ...props }, title);
1504
+ const { titleProps, title } = (0, import_react9.useContext)(ModalContext);
1505
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ModalHeading, { ...titleProps, ...props, children: title });
1463
1506
  }
1464
1507
  var ModalHeading = import_styled_components11.default.h3`
1465
1508
  margin: 0;
@@ -1468,10 +1511,10 @@ var ModalHeading = import_styled_components11.default.h3`
1468
1511
  `;
1469
1512
 
1470
1513
  // src/components/Modal/ModalPlumbing.tsx
1471
- var import_react14 = __toESM(require("react"));
1472
1514
  var import_styled_components12 = __toESM(require("styled-components"));
1515
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1473
1516
  function ModalHeader() {
1474
- return /* @__PURE__ */ import_react14.default.createElement(ModalHeaderRoot, null, /* @__PURE__ */ import_react14.default.createElement(StyledModalTitle, null));
1517
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ModalHeaderRoot, { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(StyledModalTitle, {}) });
1475
1518
  }
1476
1519
  var ModalHeaderRoot = import_styled_components12.default.div`
1477
1520
  height: 64px;
@@ -1497,14 +1540,15 @@ var ModalButtons = import_styled_components12.default.div`
1497
1540
  `;
1498
1541
 
1499
1542
  // src/components/LoadingSpinner/index.tsx
1500
- var import_react15 = __toESM(require("react"));
1543
+ var import_react10 = require("react");
1501
1544
  var import_styled_components13 = __toESM(require("styled-components"));
1545
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1502
1546
  function LoadingSpinner({
1503
1547
  size = 48,
1504
1548
  padding = 16,
1505
1549
  transparent = false
1506
1550
  }) {
1507
- return /* @__PURE__ */ import_react15.default.createElement(LoadingSpinnerRoot, { size, padding, transparent }, /* @__PURE__ */ import_react15.default.createElement(LoadingSpinnerIcon, null));
1551
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(LoadingSpinnerRoot, { size, padding, transparent, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(LoadingSpinnerIcon, {}) });
1508
1552
  }
1509
1553
  var LoadingSpinnerRoot = import_styled_components13.default.div.attrs({ role: "progressbar" })`
1510
1554
  box-sizing: content-box;
@@ -1543,52 +1587,90 @@ var Icon2 = import_styled_components13.default.div.attrs({ role: "presentation"
1543
1587
  animation: none;
1544
1588
  }
1545
1589
  `;
1546
- var LoadingSpinnerIcon = import_react15.default.forwardRef(function LoadingSpinnerIcon2({ once = false }, ref) {
1547
- const iconRef = (0, import_react15.useRef)(null);
1548
- (0, import_react15.useImperativeHandle)(ref, () => ({
1549
- restart: () => {
1550
- if (!iconRef.current) {
1551
- return;
1590
+ var LoadingSpinnerIcon = (0, import_react10.forwardRef)(
1591
+ function LoadingSpinnerIcon2({ once = false }, ref) {
1592
+ const iconRef = (0, import_react10.useRef)(null);
1593
+ (0, import_react10.useImperativeHandle)(ref, () => ({
1594
+ restart: () => {
1595
+ if (!iconRef.current) {
1596
+ return;
1597
+ }
1598
+ iconRef.current.dataset.resetAnimation = "true";
1599
+ void iconRef.current.offsetWidth;
1600
+ delete iconRef.current.dataset.resetAnimation;
1552
1601
  }
1553
- iconRef.current.dataset.resetAnimation = "true";
1554
- void iconRef.current.offsetWidth;
1555
- delete iconRef.current.dataset.resetAnimation;
1556
- }
1557
- }));
1558
- return /* @__PURE__ */ import_react15.default.createElement(Icon2, { ref: iconRef, once });
1559
- });
1602
+ }));
1603
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Icon2, { ref: iconRef, once });
1604
+ }
1605
+ );
1560
1606
 
1561
1607
  // src/components/DropdownSelector/index.tsx
1562
- var import_react17 = __toESM(require("react"));
1563
- var import_styled_components15 = __toESM(require("styled-components"));
1564
- var import_react_stately2 = require("react-stately");
1608
+ var import_react17 = require("react");
1609
+ var import_styled_components16 = __toESM(require("styled-components"));
1565
1610
  var import_utils6 = require("@charcoal-ui/utils");
1566
1611
 
1567
1612
  // src/components/DropdownSelector/DropdownPopover.tsx
1568
- var import_react16 = __toESM(require("react"));
1613
+ var import_react12 = require("react");
1614
+
1615
+ // src/components/DropdownSelector/Popover/index.tsx
1616
+ var import_react11 = require("react");
1569
1617
  var import_overlays3 = require("@react-aria/overlays");
1570
1618
  var import_styled_components14 = __toESM(require("styled-components"));
1571
- var DropdownPopoverDiv = import_styled_components14.default.div`
1572
- width: 100%;
1573
- ${theme((o) => o.margin.top(4).bottom(4))}
1574
- `;
1575
- function DropdownPopover({ children, state, ...props }) {
1576
- const ref = (0, import_react16.useRef)(null);
1619
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1620
+ var _empty = () => null;
1621
+ function Popover(props) {
1622
+ const defaultPopoverRef = (0, import_react11.useRef)(null);
1623
+ const finalPopoverRef = props.popoverRef === void 0 ? defaultPopoverRef : props.popoverRef;
1577
1624
  const { popoverProps, underlayProps } = (0, import_overlays3.usePopover)(
1578
1625
  {
1579
- ...props,
1580
- popoverRef: ref,
1581
- containerPadding: 0
1626
+ triggerRef: props.triggerRef,
1627
+ popoverRef: finalPopoverRef,
1628
+ containerPadding: 16
1582
1629
  },
1583
- state
1630
+ {
1631
+ close: props.onClose,
1632
+ isOpen: props.isOpen,
1633
+ open: _empty,
1634
+ setOpen: _empty,
1635
+ toggle: _empty
1636
+ }
1584
1637
  );
1585
- (0, import_react16.useEffect)(() => {
1586
- if (ref.current && props.triggerRef.current) {
1638
+ if (!props.isOpen)
1639
+ return null;
1640
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_overlays3.Overlay, { portalContainer: document.body, children: [
1641
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { ...underlayProps, style: { position: "fixed", inset: 0 } }),
1642
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(DropdownPopoverDiv, { ...popoverProps, ref: finalPopoverRef, children: [
1643
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_overlays3.DismissButton, { onDismiss: () => props.onClose() }),
1644
+ props.children,
1645
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_overlays3.DismissButton, { onDismiss: () => props.onClose() })
1646
+ ] })
1647
+ ] });
1648
+ }
1649
+ var DropdownPopoverDiv = import_styled_components14.default.div`
1650
+ margin: 4px 0;
1651
+ list-style: none;
1652
+ overflow: auto;
1653
+ max-height: inherit;
1654
+
1655
+ ${theme((o) => [
1656
+ o.bg.background1,
1657
+ o.border.default,
1658
+ o.borderRadius(8),
1659
+ o.padding.vertical(8)
1660
+ ])}
1661
+ `;
1662
+
1663
+ // src/components/DropdownSelector/DropdownPopover.tsx
1664
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1665
+ function DropdownPopover({ children, ...props }) {
1666
+ const ref = (0, import_react12.useRef)(null);
1667
+ (0, import_react12.useEffect)(() => {
1668
+ if (props.isOpen && ref.current && props.triggerRef.current) {
1587
1669
  ref.current.style.width = `${props.triggerRef.current.clientWidth}px`;
1588
1670
  }
1589
- }, [props.triggerRef]);
1590
- (0, import_react16.useEffect)(() => {
1591
- if (state.isOpen && props.value !== void 0) {
1671
+ }, [props.triggerRef, props.isOpen]);
1672
+ (0, import_react12.useEffect)(() => {
1673
+ if (props.isOpen && props.value !== void 0) {
1592
1674
  const windowScrollY = window.scrollY;
1593
1675
  const windowScrollX = window.scrollX;
1594
1676
  const selectedElement = document.querySelector(
@@ -1598,92 +1680,163 @@ function DropdownPopover({ children, state, ...props }) {
1598
1680
  selectedElement?.focus();
1599
1681
  window.scrollTo(windowScrollX, windowScrollY);
1600
1682
  }
1601
- }, [props.value, state.isOpen]);
1602
- return /* @__PURE__ */ import_react16.default.createElement(import_overlays3.Overlay, { portalContainer: document.body }, /* @__PURE__ */ import_react16.default.createElement("div", { ...underlayProps, style: { position: "fixed", inset: 0 } }), /* @__PURE__ */ import_react16.default.createElement(DropdownPopoverDiv, { ...popoverProps, ref }, /* @__PURE__ */ import_react16.default.createElement(import_overlays3.DismissButton, { onDismiss: () => state.close() }), children, /* @__PURE__ */ import_react16.default.createElement(import_overlays3.DismissButton, { onDismiss: () => state.close() })));
1683
+ }, [props.value, props.isOpen]);
1684
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1685
+ Popover,
1686
+ {
1687
+ isOpen: props.isOpen,
1688
+ onClose: props.onClose,
1689
+ popoverRef: ref,
1690
+ triggerRef: props.triggerRef,
1691
+ children
1692
+ }
1693
+ );
1603
1694
  }
1604
1695
 
1605
- // src/components/DropdownSelector/index.tsx
1606
- var DropdownSelectorContext = (0, import_react17.createContext)({
1696
+ // src/components/DropdownSelector/utils/findPreviewRecursive.tsx
1697
+ var import_react13 = __toESM(require("react"));
1698
+ function findPreviewRecursive(children, value) {
1699
+ const childArray = import_react13.default.Children.toArray(children);
1700
+ for (let i = 0; i < childArray.length; i++) {
1701
+ const child = childArray[i];
1702
+ if (import_react13.default.isValidElement(child)) {
1703
+ if ("value" in child.props) {
1704
+ const childValue = child.props.value;
1705
+ if (childValue === value && "children" in child.props) {
1706
+ const children2 = child.props.children;
1707
+ return children2;
1708
+ }
1709
+ }
1710
+ if ("children" in child.props) {
1711
+ const children2 = findPreviewRecursive(
1712
+ child.props.children,
1713
+ value
1714
+ );
1715
+ if (children2 !== void 0) {
1716
+ return children2;
1717
+ }
1718
+ }
1719
+ }
1720
+ }
1721
+ }
1722
+
1723
+ // src/components/DropdownSelector/MenuList/index.tsx
1724
+ var import_react16 = require("react");
1725
+ var import_styled_components15 = __toESM(require("styled-components"));
1726
+
1727
+ // src/components/DropdownSelector/MenuList/MenuListContext.ts
1728
+ var import_react14 = require("react");
1729
+ var MenuListContext = (0, import_react14.createContext)({
1730
+ root: void 0,
1607
1731
  value: "",
1732
+ values: [],
1608
1733
  setValue: (_v) => {
1609
1734
  }
1610
1735
  });
1611
- var defaultRequiredText = "*\u5FC5\u9808";
1612
- function DropdownSelector(props) {
1613
- const triggerRef = (0, import_react17.useRef)(null);
1614
- const state = (0, import_react_stately2.useOverlayTriggerState)({});
1615
- let preview;
1616
- const childArray = import_react17.default.Children.toArray(props.children);
1736
+
1737
+ // src/components/DropdownSelector/MenuList/internals/getValuesRecursive.tsx
1738
+ var import_react15 = __toESM(require("react"));
1739
+ function getValuesRecursive(children, values = []) {
1740
+ const childArray = import_react15.default.Children.toArray(children);
1617
1741
  for (let i = 0; i < childArray.length; i++) {
1618
1742
  const child = childArray[i];
1619
- if (import_react17.default.isValidElement(child) && "value" in child.props) {
1620
- const find = child.props.value === props.value;
1621
- if (find && "children" in child.props) {
1622
- preview = child.props.children;
1623
- break;
1743
+ if (import_react15.default.isValidElement(child)) {
1744
+ const props = child.props;
1745
+ if ("value" in props && typeof props.value === "string") {
1746
+ const childValue = props.value;
1747
+ values.push(childValue);
1748
+ }
1749
+ if ("children" in props && props.children) {
1750
+ getValuesRecursive(props.children, values);
1624
1751
  }
1625
1752
  }
1626
1753
  }
1627
- return /* @__PURE__ */ import_react17.default.createElement(DropdownSelectorRoot, { "aria-disabled": props.disabled }, props.showLabel === true && /* @__PURE__ */ import_react17.default.createElement(
1628
- DropdownFieldLabel,
1629
- {
1630
- label: props.label,
1631
- required: props.required,
1632
- requiredText: props.requiredText ?? defaultRequiredText,
1633
- subLabel: props.subLabel
1634
- }
1635
- ), /* @__PURE__ */ import_react17.default.createElement(
1636
- DropdownButton,
1637
- {
1638
- invalid: props.invalid,
1639
- disabled: props.disabled,
1640
- onClick: () => {
1641
- if (props.disabled === true)
1642
- return;
1643
- state.open();
1644
- },
1645
- ref: triggerRef
1646
- },
1647
- /* @__PURE__ */ import_react17.default.createElement(DropdownButtonText, null, props.placeholder !== void 0 && preview === void 0 ? props.placeholder : preview),
1648
- /* @__PURE__ */ import_react17.default.createElement(DropdownButtonIcon, { name: "16/Menu" })
1649
- ), state.isOpen && /* @__PURE__ */ import_react17.default.createElement(
1650
- DropdownPopover,
1754
+ }
1755
+
1756
+ // src/components/DropdownSelector/MenuList/index.tsx
1757
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1758
+ function MenuList(props) {
1759
+ const root = (0, import_react16.useRef)(null);
1760
+ const values = [];
1761
+ getValuesRecursive(props.children, values);
1762
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(StyledUl, { ref: root, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1763
+ MenuListContext.Provider,
1651
1764
  {
1652
- state,
1653
- triggerRef,
1654
- value: props.value
1655
- },
1656
- /* @__PURE__ */ import_react17.default.createElement(ListboxRoot, null, /* @__PURE__ */ import_react17.default.createElement(
1657
- DropdownSelectorContext.Provider,
1658
- {
1659
- value: {
1660
- value: props.value,
1661
- setValue: (v) => {
1662
- props.onChange(v);
1663
- state.close();
1664
- }
1765
+ value: {
1766
+ value: props.value ?? "",
1767
+ root,
1768
+ values,
1769
+ setValue: (v) => {
1770
+ props.onChange?.(v);
1665
1771
  }
1666
1772
  },
1667
- props.children
1668
- ))
1669
- ), props.assistiveText !== void 0 && /* @__PURE__ */ import_react17.default.createElement(AssertiveText, { invalid: props.invalid }, props.assistiveText));
1773
+ children: props.children
1774
+ }
1775
+ ) });
1670
1776
  }
1671
- var ListboxRoot = import_styled_components15.default.ul`
1672
- padding-left: 0;
1777
+ var StyledUl = import_styled_components15.default.ul`
1778
+ padding: 0;
1673
1779
  margin: 0;
1674
- box-sizing: border-box;
1675
- list-style: none;
1676
- overflow: auto;
1677
- max-height: inherit;
1678
-
1679
- ${theme((o) => [
1680
- o.bg.background1,
1681
- o.border.default,
1682
- o.borderRadius(8),
1683
- o.padding.vertical(8)
1684
- ])}
1685
1780
  `;
1686
- var DropdownSelectorRoot = import_styled_components15.default.div`
1781
+
1782
+ // src/components/DropdownSelector/index.tsx
1783
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1784
+ var defaultRequiredText = "*\u5FC5\u9808";
1785
+ function DropdownSelector(props) {
1786
+ const triggerRef = (0, import_react17.useRef)(null);
1787
+ const [isOpen, setIsOpen] = (0, import_react17.useState)(false);
1788
+ const preview = findPreviewRecursive(props.children, props.value);
1789
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(DropdownSelectorRoot, { "aria-disabled": props.disabled, children: [
1790
+ props.showLabel === true && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1791
+ DropdownFieldLabel,
1792
+ {
1793
+ label: props.label,
1794
+ required: props.required,
1795
+ requiredText: props.requiredText ?? defaultRequiredText,
1796
+ subLabel: props.subLabel
1797
+ }
1798
+ ),
1799
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1800
+ DropdownButton,
1801
+ {
1802
+ invalid: props.invalid,
1803
+ disabled: props.disabled,
1804
+ onClick: () => {
1805
+ if (props.disabled === true)
1806
+ return;
1807
+ setIsOpen(true);
1808
+ },
1809
+ ref: triggerRef,
1810
+ children: [
1811
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DropdownButtonText, { children: props.placeholder !== void 0 && preview === void 0 ? props.placeholder : preview }),
1812
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DropdownButtonIcon, { name: "16/Menu" })
1813
+ ]
1814
+ }
1815
+ ),
1816
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1817
+ DropdownPopover,
1818
+ {
1819
+ isOpen,
1820
+ onClose: () => setIsOpen(false),
1821
+ triggerRef,
1822
+ value: props.value,
1823
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1824
+ MenuList,
1825
+ {
1826
+ value: props.value,
1827
+ onChange: (v) => {
1828
+ props.onChange(v);
1829
+ setIsOpen(false);
1830
+ },
1831
+ children: props.children
1832
+ }
1833
+ )
1834
+ }
1835
+ ),
1836
+ props.assistiveText !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(AssertiveText, { invalid: props.invalid, children: props.assistiveText })
1837
+ ] });
1838
+ }
1839
+ var DropdownSelectorRoot = import_styled_components16.default.div`
1687
1840
  display: inline-block;
1688
1841
  width: 100%;
1689
1842
 
@@ -1692,12 +1845,12 @@ var DropdownSelectorRoot = import_styled_components15.default.div`
1692
1845
  ${theme((o) => o.disabled)}
1693
1846
  }
1694
1847
  `;
1695
- var DropdownFieldLabel = (0, import_styled_components15.default)(FieldLabel_default)`
1848
+ var DropdownFieldLabel = (0, import_styled_components16.default)(FieldLabel_default)`
1696
1849
  width: 100%;
1697
1850
 
1698
1851
  ${theme((o) => o.margin.bottom(8))}
1699
1852
  `;
1700
- var DropdownButton = import_styled_components15.default.button`
1853
+ var DropdownButton = import_styled_components16.default.button`
1701
1854
  display: flex;
1702
1855
  justify-content: space-between;
1703
1856
  align-items: center;
@@ -1720,15 +1873,15 @@ var DropdownButton = import_styled_components15.default.button`
1720
1873
  invalid === true && o.outline.assertive
1721
1874
  ])}
1722
1875
  `;
1723
- var DropdownButtonText = import_styled_components15.default.span`
1876
+ var DropdownButtonText = import_styled_components16.default.span`
1724
1877
  text-align: left;
1725
1878
 
1726
1879
  ${theme((o) => [o.typography(14), o.font.text2])}
1727
1880
  `;
1728
- var DropdownButtonIcon = (0, import_styled_components15.default)(Icon_default)`
1881
+ var DropdownButtonIcon = (0, import_styled_components16.default)(Icon_default)`
1729
1882
  ${theme((o) => [o.font.text2])}
1730
1883
  `;
1731
- var AssertiveText = import_styled_components15.default.div`
1884
+ var AssertiveText = import_styled_components16.default.div`
1732
1885
  ${({ invalid }) => theme((o) => [
1733
1886
  o.typography(14),
1734
1887
  o.margin.top(8),
@@ -1736,129 +1889,204 @@ var AssertiveText = import_styled_components15.default.div`
1736
1889
  ])}
1737
1890
  `;
1738
1891
 
1739
- // src/components/DropdownSelector/OptionItem.tsx
1740
- var import_react18 = __toESM(require("react"));
1741
- var import_styled_components16 = __toESM(require("styled-components"));
1742
- var import_utils7 = require("@charcoal-ui/utils");
1892
+ // src/components/DropdownSelector/DropdownMenuItem.tsx
1893
+ var import_styled_components18 = __toESM(require("styled-components"));
1743
1894
 
1744
- // src/components/DropdownSelector/utils/handleFocusByKeyBoard.tsx
1745
- function handleFocusByKeyBoard(element) {
1746
- const parent = element.parentElement;
1747
- if (!parent)
1748
- return;
1749
- const rect = element.getBoundingClientRect();
1750
- const parentRect = parent.getBoundingClientRect();
1751
- if (rect.bottom > parentRect.bottom) {
1752
- parent.scrollTo({
1753
- top: parent.scrollTop + rect.bottom - parentRect.bottom
1754
- });
1755
- } else if (rect.top < parentRect.top) {
1756
- parent.scrollTo({
1757
- top: parent.scrollTop - (parentRect.top - rect.top)
1758
- });
1759
- }
1895
+ // src/components/DropdownSelector/ListItem/index.tsx
1896
+ var import_styled_components17 = __toESM(require("styled-components"));
1897
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1898
+ function ListItem(props) {
1899
+ const { children, ...rest } = props;
1900
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StyledLi, { role: "option", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ItemDiv, { ...rest, children: props.children }) });
1760
1901
  }
1902
+ var StyledLi = import_styled_components17.default.li`
1903
+ list-style: none;
1904
+ `;
1905
+ var ItemDiv = import_styled_components17.default.div`
1906
+ display: flex;
1907
+ align-items: center;
1908
+ min-height: 40px;
1909
+ cursor: pointer;
1910
+ outline: none;
1911
+
1912
+ ${theme((o) => [o.padding.horizontal(16), o.disabled])}
1913
+
1914
+ &[aria-disabled="true"] {
1915
+ cursor: default;
1916
+ }
1917
+
1918
+ :hover,
1919
+ :focus,
1920
+ :focus-within {
1921
+ ${theme((o) => [o.bg.surface3])}
1922
+ }
1923
+ `;
1761
1924
 
1762
- // src/components/DropdownSelector/utils/focusIfHTMLLIElement.tsx
1763
- function focusIfHTMLLIElement(element) {
1764
- if (element instanceof HTMLLIElement) {
1765
- element.focus({ preventScroll: true });
1766
- handleFocusByKeyBoard(element);
1925
+ // src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx
1926
+ var import_react18 = require("react");
1927
+
1928
+ // src/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.tsx
1929
+ function handleFocusByKeyBoard(element, parent) {
1930
+ const isScrollable = parent.scrollHeight > parent.clientHeight;
1931
+ if (isScrollable) {
1932
+ const rect = element.getBoundingClientRect();
1933
+ const parentRect = parent.getBoundingClientRect();
1934
+ if (rect.bottom > parentRect.bottom) {
1935
+ parent.scrollTo({
1936
+ top: parent.scrollTop + rect.bottom - parentRect.bottom
1937
+ });
1938
+ } else if (rect.top < parentRect.top) {
1939
+ parent.scrollTo({
1940
+ top: parent.scrollTop - (parentRect.top - rect.top)
1941
+ });
1942
+ }
1943
+ } else {
1944
+ scrollIfNeeded(element);
1945
+ }
1946
+ }
1947
+ function scrollIfNeeded(element) {
1948
+ const elementRect = element.getBoundingClientRect();
1949
+ const isVisible = elementRect.top >= 0 && elementRect.bottom <= (window.innerHeight || document.documentElement.clientHeight);
1950
+ if (!isVisible) {
1951
+ element.scrollIntoView({
1952
+ block: "nearest"
1953
+ });
1767
1954
  }
1768
1955
  }
1769
1956
 
1770
- // src/components/DropdownSelector/OptionItem.tsx
1771
- function OptionItem(props) {
1772
- const { value, setValue } = (0, import_react18.useContext)(DropdownSelectorContext);
1773
- const isSelected = props.value === value;
1774
- const onSelect = () => {
1775
- setValue(props.value);
1776
- };
1777
- return /* @__PURE__ */ import_react18.default.createElement(
1778
- OptionRoot,
1779
- {
1780
- "data-key": props.value,
1781
- onMouseMove: (e) => {
1782
- e.currentTarget.focus({ preventScroll: true });
1783
- },
1784
- onKeyDown: (e) => {
1785
- if (e.key === "Enter") {
1786
- onSelect();
1787
- } else if (e.key === "ArrowUp") {
1788
- e.preventDefault();
1789
- const prev = e.currentTarget.previousElementSibling;
1790
- if (prev === null) {
1791
- focusIfHTMLLIElement(e.currentTarget.parentElement?.lastChild);
1792
- }
1793
- focusIfHTMLLIElement(prev);
1794
- } else if (e.key === "ArrowDown") {
1795
- e.preventDefault();
1796
- const next = e.currentTarget.nextElementSibling;
1797
- if (next === null) {
1798
- focusIfHTMLLIElement(e.currentTarget.parentElement?.firstChild);
1957
+ // src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx
1958
+ function useMenuItemHandleKeyDown(value) {
1959
+ const { setValue, root, values } = (0, import_react18.useContext)(MenuListContext);
1960
+ const setContextValue = (0, import_react18.useCallback)(() => {
1961
+ if (value !== void 0)
1962
+ setValue(value);
1963
+ }, [value, setValue]);
1964
+ const handleKeyDown = (0, import_react18.useCallback)(
1965
+ (e) => {
1966
+ if (e.key === "Enter") {
1967
+ setContextValue();
1968
+ } else if (e.key === "ArrowUp" || e.key === "ArrowDown") {
1969
+ e.preventDefault();
1970
+ if (!values || value === void 0)
1971
+ return;
1972
+ const index = values.indexOf(value);
1973
+ if (index === -1)
1974
+ return;
1975
+ const focusValue = e.key === "ArrowUp" ? index - 1 < 0 ? values[values.length - 1] : values[index - 1] : index + 1 >= values.length ? values[0] : values[index + 1];
1976
+ const next = root?.current?.querySelector(`[data-key='${focusValue}']`);
1977
+ if (next instanceof HTMLElement) {
1978
+ next.focus({ preventScroll: true });
1979
+ if (root?.current?.parentElement) {
1980
+ handleFocusByKeyBoard(next, root.current.parentElement);
1799
1981
  }
1800
- focusIfHTMLLIElement(next);
1801
- } else if (e.key === " ") {
1802
- e.preventDefault();
1803
1982
  }
1804
- },
1805
- onClick: onSelect,
1806
- tabIndex: -1
1983
+ }
1807
1984
  },
1808
- isSelected && /* @__PURE__ */ import_react18.default.createElement(OptionCheckIcon, { name: "16/Check" }),
1809
- /* @__PURE__ */ import_react18.default.createElement(OptionText, { isSelected }, props.children)
1985
+ [setContextValue, value, root, values]
1810
1986
  );
1987
+ return [handleKeyDown, setContextValue];
1811
1988
  }
1812
- var OptionRoot = import_styled_components16.default.li`
1813
- display: flex;
1814
- align-items: center;
1815
- gap: ${({ theme: theme4 }) => (0, import_utils7.px)(theme4.spacing[4])};
1816
- height: 40px;
1817
- cursor: pointer;
1818
- outline: none;
1819
1989
 
1820
- ${theme((o) => [o.padding.horizontal(8)])}
1990
+ // src/components/DropdownSelector/MenuItem/index.tsx
1991
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1992
+ function MenuItem(props) {
1993
+ const { children, as, ...rest } = props;
1994
+ const [handleKeyDown, setContextValue] = useMenuItemHandleKeyDown(props.value);
1995
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1996
+ ListItem,
1997
+ {
1998
+ ...rest,
1999
+ as,
2000
+ "data-key": props.value,
2001
+ onKeyDown: handleKeyDown,
2002
+ onClick: props.disabled === true ? void 0 : setContextValue,
2003
+ tabIndex: -1,
2004
+ "aria-disabled": props.disabled,
2005
+ children: props.children
2006
+ }
2007
+ );
2008
+ }
1821
2009
 
1822
- :focus {
1823
- ${theme((o) => [o.bg.surface3])}
1824
- }
2010
+ // src/components/DropdownSelector/DropdownMenuItem.tsx
2011
+ var import_react19 = require("react");
2012
+ var import_jsx_runtime21 = require("react/jsx-runtime");
2013
+ function DropdownMenuItem(props) {
2014
+ const { value: ctxValue } = (0, import_react19.useContext)(MenuListContext);
2015
+ const isSelected = props.value === ctxValue;
2016
+ const { children, ...rest } = props;
2017
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(MenuItem, { ...rest, children: [
2018
+ isSelected && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Text2ColorIcon, { name: "16/Check" }),
2019
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(StyledSpan, { isSelected, children: props.children })
2020
+ ] });
2021
+ }
2022
+ var StyledSpan = import_styled_components18.default.span`
2023
+ ${theme((o) => [o.typography(14), o.font.text2])};
2024
+ display: flex;
2025
+ align-items: center;
2026
+ width: 100%;
2027
+ margin-left: ${({ isSelected }) => isSelected === true ? 0 : 20}px;
1825
2028
  `;
1826
- var OptionCheckIcon = (0, import_styled_components16.default)(Icon_default)`
2029
+ var Text2ColorIcon = (0, import_styled_components18.default)(Icon_default)`
1827
2030
  ${theme((o) => [o.font.text2])}
2031
+ padding-right: 4px;
1828
2032
  `;
1829
- var OptionText = import_styled_components16.default.span`
2033
+
2034
+ // src/components/DropdownSelector/MenuItemGroup/index.tsx
2035
+ var import_styled_components19 = __toESM(require("styled-components"));
2036
+ var import_jsx_runtime22 = require("react/jsx-runtime");
2037
+ function MenuItemGroup(props) {
2038
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(StyledLi2, { role: "presentation", children: [
2039
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(TextSpan, { children: props.text }),
2040
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(StyledUl2, { role: "group", children: props.children })
2041
+ ] });
2042
+ }
2043
+ var TextSpan = import_styled_components19.default.span`
2044
+ display: block;
2045
+ color: ${({ theme: theme4 }) => theme4.color.text3};
2046
+ font-size: 12px;
2047
+ font-weight: bold;
2048
+ padding: 12px 0 8px 16px;
2049
+ `;
2050
+ var StyledUl2 = import_styled_components19.default.ul`
2051
+ padding-left: 0;
2052
+ margin: 0;
2053
+ box-sizing: border-box;
2054
+ list-style: none;
2055
+ overflow: hidden;
2056
+ `;
2057
+ var StyledLi2 = import_styled_components19.default.li`
1830
2058
  display: block;
1831
- ${theme((o) => [o.typography(14), o.font.text2])}
1832
- margin-left: ${({ isSelected }) => isSelected === true ? 0 : 20}px;
1833
2059
  `;
1834
2060
 
1835
2061
  // src/components/SegmentedControl/index.tsx
1836
- var import_react20 = __toESM(require("react"));
1837
- var import_react_stately3 = require("react-stately");
2062
+ var import_react21 = require("react");
2063
+ var import_react_stately2 = require("react-stately");
1838
2064
  var import_radio = require("@react-aria/radio");
1839
- var import_styled_components17 = __toESM(require("styled-components"));
1840
- var import_utils8 = require("@charcoal-ui/utils");
2065
+ var import_styled_components20 = __toESM(require("styled-components"));
2066
+ var import_utils7 = require("@charcoal-ui/utils");
1841
2067
 
1842
2068
  // src/components/SegmentedControl/RadioGroupContext.tsx
1843
- var import_react19 = __toESM(require("react"));
1844
- var RadioContext = (0, import_react19.createContext)(null);
2069
+ var import_react20 = require("react");
2070
+ var import_jsx_runtime23 = require("react/jsx-runtime");
2071
+ var RadioContext = (0, import_react20.createContext)(null);
1845
2072
  var RadioProvider = ({
1846
2073
  value,
1847
2074
  children
1848
2075
  }) => {
1849
- return /* @__PURE__ */ import_react19.default.createElement(RadioContext.Provider, { value }, children);
2076
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(RadioContext.Provider, { value, children });
1850
2077
  };
1851
2078
  var useRadioContext = () => {
1852
- const state = (0, import_react19.useContext)(RadioContext);
2079
+ const state = (0, import_react20.useContext)(RadioContext);
1853
2080
  if (state === null)
1854
2081
  throw new Error("`<RadioProvider>` is not likely mounted.");
1855
2082
  return state;
1856
2083
  };
1857
2084
 
1858
2085
  // src/components/SegmentedControl/index.tsx
1859
- var SegmentedControl = (0, import_react20.forwardRef)(
2086
+ var import_jsx_runtime24 = require("react/jsx-runtime");
2087
+ var SegmentedControl = (0, import_react21.forwardRef)(
1860
2088
  function SegmentedControlInner(props, ref) {
1861
- const ariaRadioGroupProps = (0, import_react20.useMemo)(
2089
+ const ariaRadioGroupProps = (0, import_react21.useMemo)(
1862
2090
  () => ({
1863
2091
  ...props,
1864
2092
  isDisabled: props.disabled,
@@ -1868,30 +2096,34 @@ var SegmentedControl = (0, import_react20.forwardRef)(
1868
2096
  }),
1869
2097
  [props]
1870
2098
  );
1871
- const state = (0, import_react_stately3.useRadioGroupState)(ariaRadioGroupProps);
2099
+ const state = (0, import_react_stately2.useRadioGroupState)(ariaRadioGroupProps);
1872
2100
  const { radioGroupProps } = (0, import_radio.useRadioGroup)(ariaRadioGroupProps, state);
1873
- const segmentedControlItems = (0, import_react20.useMemo)(() => {
2101
+ const segmentedControlItems = (0, import_react21.useMemo)(() => {
1874
2102
  return props.data.map(
1875
2103
  (d) => typeof d === "string" ? { value: d, label: d } : d
1876
2104
  );
1877
2105
  }, [props.data]);
1878
- return /* @__PURE__ */ import_react20.default.createElement(SegmentedControlRoot, { ref, ...radioGroupProps }, /* @__PURE__ */ import_react20.default.createElement(RadioProvider, { value: state }, segmentedControlItems.map((item) => /* @__PURE__ */ import_react20.default.createElement(
2106
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SegmentedControlRoot, { ref, ...radioGroupProps, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(RadioProvider, { value: state, children: segmentedControlItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1879
2107
  Segmented,
1880
2108
  {
1881
- key: item.value,
1882
2109
  value: item.value,
1883
- disabled: item.disabled
2110
+ disabled: item.disabled,
2111
+ children: item.label
1884
2112
  },
1885
- item.label
1886
- ))));
2113
+ item.value
2114
+ )) }) });
1887
2115
  }
1888
2116
  );
1889
- var SegmentedControl_default = (0, import_react20.memo)(SegmentedControl);
1890
- var Segmented = ({ children, ...props }) => {
2117
+ var SegmentedControl_default = (0, import_react21.memo)(SegmentedControl);
2118
+ var Segmented = (props) => {
1891
2119
  const state = useRadioContext();
1892
- const ref = (0, import_react20.useRef)(null);
1893
- const ariaRadioProps = (0, import_react20.useMemo)(
1894
- () => ({ ...props, isDisabled: props.disabled }),
2120
+ const ref = (0, import_react21.useRef)(null);
2121
+ const ariaRadioProps = (0, import_react21.useMemo)(
2122
+ () => ({
2123
+ value: props.value,
2124
+ isDisabled: props.disabled,
2125
+ children: props.children
2126
+ }),
1895
2127
  [props]
1896
2128
  );
1897
2129
  const { inputProps, isDisabled, isSelected } = (0, import_radio.useRadio)(
@@ -1899,30 +2131,32 @@ var Segmented = ({ children, ...props }) => {
1899
2131
  state,
1900
2132
  ref
1901
2133
  );
1902
- return /* @__PURE__ */ import_react20.default.createElement(
2134
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
1903
2135
  SegmentedRoot,
1904
2136
  {
1905
2137
  "aria-disabled": isDisabled || state.isReadOnly,
1906
- checked: isSelected
1907
- },
1908
- /* @__PURE__ */ import_react20.default.createElement(SegmentedInput, { ...inputProps, ref }),
1909
- /* @__PURE__ */ import_react20.default.createElement(RadioLabel2, null, /* @__PURE__ */ import_react20.default.createElement(SegmentedLabelInner, null, children))
2138
+ checked: isSelected,
2139
+ children: [
2140
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SegmentedInput, { ...inputProps, ref }),
2141
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(RadioLabel2, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SegmentedLabelInner, { children: props.children }) })
2142
+ ]
2143
+ }
1910
2144
  );
1911
2145
  };
1912
- var SegmentedControlRoot = import_styled_components17.default.div`
2146
+ var SegmentedControlRoot = import_styled_components20.default.div`
1913
2147
  display: inline-flex;
1914
2148
  align-items: center;
1915
2149
 
1916
2150
  ${theme((o) => [o.bg.surface3, o.borderRadius(16)])}
1917
2151
  `;
1918
- var SegmentedRoot = import_styled_components17.default.label`
2152
+ var SegmentedRoot = import_styled_components20.default.label`
1919
2153
  position: relative;
1920
2154
  display: flex;
1921
2155
  align-items: center;
1922
2156
  cursor: pointer;
1923
2157
  height: 32px;
1924
2158
 
1925
- ${import_utils8.disabledSelector} {
2159
+ ${import_utils7.disabledSelector} {
1926
2160
  cursor: default;
1927
2161
  }
1928
2162
 
@@ -1934,7 +2168,7 @@ var SegmentedRoot = import_styled_components17.default.label`
1934
2168
  checked === true ? o.font.text5 : o.font.text2
1935
2169
  ])}
1936
2170
  `;
1937
- var SegmentedInput = import_styled_components17.default.input`
2171
+ var SegmentedInput = import_styled_components20.default.input`
1938
2172
  position: absolute;
1939
2173
 
1940
2174
  height: 0px;
@@ -1948,26 +2182,27 @@ var SegmentedInput = import_styled_components17.default.input`
1948
2182
  white-space: nowrap;
1949
2183
  opacity: 0;
1950
2184
  `;
1951
- var RadioLabel2 = import_styled_components17.default.div`
2185
+ var RadioLabel2 = import_styled_components20.default.div`
1952
2186
  background: transparent;
1953
2187
  display: flex;
1954
2188
  align-items: center;
1955
2189
  height: 22px;
1956
2190
  `;
1957
- var SegmentedLabelInner = import_styled_components17.default.div`
2191
+ var SegmentedLabelInner = import_styled_components20.default.div`
1958
2192
  ${theme((o) => [o.typography(14)])}
1959
2193
  `;
1960
2194
 
1961
2195
  // src/components/Checkbox/index.tsx
1962
- var import_react21 = __toESM(require("react"));
1963
- var import_styled_components18 = __toESM(require("styled-components"));
2196
+ var import_react22 = require("react");
2197
+ var import_styled_components21 = __toESM(require("styled-components"));
1964
2198
  var import_checkbox = require("@react-aria/checkbox");
1965
- var import_utils9 = require("@react-aria/utils");
1966
- var import_react_stately4 = require("react-stately");
1967
- var import_utils10 = require("@charcoal-ui/utils");
1968
- var Checkbox = (0, import_react21.forwardRef)(
2199
+ var import_utils8 = require("@react-aria/utils");
2200
+ var import_react_stately3 = require("react-stately");
2201
+ var import_utils9 = require("@charcoal-ui/utils");
2202
+ var import_jsx_runtime25 = require("react/jsx-runtime");
2203
+ var Checkbox = (0, import_react22.forwardRef)(
1969
2204
  function CheckboxInner(props, ref) {
1970
- const ariaCheckboxProps = (0, import_react21.useMemo)(
2205
+ const ariaCheckboxProps = (0, import_react22.useMemo)(
1971
2206
  () => ({
1972
2207
  ...props,
1973
2208
  isSelected: props.checked,
@@ -1977,33 +2212,39 @@ var Checkbox = (0, import_react21.forwardRef)(
1977
2212
  }),
1978
2213
  [props]
1979
2214
  );
1980
- const state = (0, import_react_stately4.useToggleState)(ariaCheckboxProps);
1981
- const objectRef = (0, import_utils9.useObjectRef)(ref);
2215
+ const state = (0, import_react_stately3.useToggleState)(ariaCheckboxProps);
2216
+ const objectRef = (0, import_utils8.useObjectRef)(ref);
1982
2217
  const { inputProps } = (0, import_checkbox.useCheckbox)(ariaCheckboxProps, state, objectRef);
1983
2218
  const isDisabled = (props.disabled ?? false) || (props.readonly ?? false);
1984
- return /* @__PURE__ */ import_react21.default.createElement(InputRoot, { "aria-disabled": isDisabled }, /* @__PURE__ */ import_react21.default.createElement(CheckboxRoot, null, /* @__PURE__ */ import_react21.default.createElement(CheckboxInput, { type: "checkbox", ...inputProps }), /* @__PURE__ */ import_react21.default.createElement(CheckboxInputOverlay, { "aria-hidden": true, checked: inputProps.checked }, /* @__PURE__ */ import_react21.default.createElement(Icon_default, { name: "24/Check", unsafeNonGuidelineScale: 2 / 3 }))), "children" in props && /* @__PURE__ */ import_react21.default.createElement(InputLabel, null, props.children));
2219
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(InputRoot, { "aria-disabled": isDisabled, children: [
2220
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(CheckboxRoot, { children: [
2221
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(CheckboxInput, { type: "checkbox", ...inputProps }),
2222
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(CheckboxInputOverlay, { "aria-hidden": true, checked: inputProps.checked, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Icon_default, { name: "24/Check", unsafeNonGuidelineScale: 2 / 3 }) })
2223
+ ] }),
2224
+ "children" in props && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(InputLabel, { children: props.children })
2225
+ ] });
1985
2226
  }
1986
2227
  );
1987
- var Checkbox_default = (0, import_react21.memo)(Checkbox);
1988
- var hiddenCss = import_styled_components18.css`
2228
+ var Checkbox_default = (0, import_react22.memo)(Checkbox);
2229
+ var hiddenCss = import_styled_components21.css`
1989
2230
  visibility: hidden;
1990
2231
  `;
1991
- var InputRoot = import_styled_components18.default.label`
2232
+ var InputRoot = import_styled_components21.default.label`
1992
2233
  position: relative;
1993
2234
  display: flex;
1994
2235
 
1995
2236
  cursor: pointer;
1996
- ${import_utils10.disabledSelector} {
2237
+ ${import_utils9.disabledSelector} {
1997
2238
  cursor: default;
1998
2239
  }
1999
2240
 
2000
- gap: ${({ theme: theme4 }) => (0, import_utils10.px)(theme4.spacing[4])};
2241
+ gap: ${({ theme: theme4 }) => (0, import_utils9.px)(theme4.spacing[4])};
2001
2242
  ${theme((o) => [o.disabled])}
2002
2243
  `;
2003
- var CheckboxRoot = import_styled_components18.default.div`
2244
+ var CheckboxRoot = import_styled_components21.default.div`
2004
2245
  position: relative;
2005
2246
  `;
2006
- var CheckboxInput = import_styled_components18.default.input`
2247
+ var CheckboxInput = import_styled_components21.default.input`
2007
2248
  &[type='checkbox'] {
2008
2249
  appearance: none;
2009
2250
  display: block;
@@ -2026,7 +2267,7 @@ var CheckboxInput = import_styled_components18.default.input`
2026
2267
  transition: all 0.2s !important;
2027
2268
  }
2028
2269
  `;
2029
- var CheckboxInputOverlay = import_styled_components18.default.div`
2270
+ var CheckboxInputOverlay = import_styled_components21.default.div`
2030
2271
  position: absolute;
2031
2272
  top: -2px;
2032
2273
  left: -2px;
@@ -2039,7 +2280,7 @@ var CheckboxInputOverlay = import_styled_components18.default.div`
2039
2280
 
2040
2281
  ${({ checked }) => checked !== true && hiddenCss};
2041
2282
  `;
2042
- var InputLabel = import_styled_components18.default.div`
2283
+ var InputLabel = import_styled_components21.default.div`
2043
2284
  ${theme((o) => [o.font.text2])}
2044
2285
 
2045
2286
  font-size: 14px;
@@ -2048,16 +2289,17 @@ var InputLabel = import_styled_components18.default.div`
2048
2289
  `;
2049
2290
 
2050
2291
  // src/components/TagItem/index.tsx
2051
- var import_react22 = __toESM(require("react"));
2052
- var import_utils11 = require("@react-aria/utils");
2053
- var import_styled_components19 = __toESM(require("styled-components"));
2054
- var import_utils12 = require("@charcoal-ui/utils");
2292
+ var import_react23 = require("react");
2293
+ var import_utils10 = require("@react-aria/utils");
2294
+ var import_styled_components22 = __toESM(require("styled-components"));
2295
+ var import_utils11 = require("@charcoal-ui/utils");
2055
2296
  var import_button = require("@react-aria/button");
2297
+ var import_jsx_runtime26 = require("react/jsx-runtime");
2056
2298
  var sizeMap = {
2057
2299
  S: 32,
2058
2300
  M: 40
2059
2301
  };
2060
- var TagItem = (0, import_react22.forwardRef)(
2302
+ var TagItem = (0, import_react23.forwardRef)(
2061
2303
  function TagItemInner({
2062
2304
  label,
2063
2305
  translatedLabel,
@@ -2069,8 +2311,8 @@ var TagItem = (0, import_react22.forwardRef)(
2069
2311
  className,
2070
2312
  ...props
2071
2313
  }, _ref) {
2072
- const ref = (0, import_utils11.useObjectRef)(_ref);
2073
- const ariaButtonProps = (0, import_react22.useMemo)(
2314
+ const ref = (0, import_utils10.useObjectRef)(_ref);
2315
+ const ariaButtonProps = (0, import_react23.useMemo)(
2074
2316
  () => ({
2075
2317
  elementType: "a",
2076
2318
  isDisabled: disabled,
@@ -2080,22 +2322,30 @@ var TagItem = (0, import_react22.forwardRef)(
2080
2322
  );
2081
2323
  const { buttonProps } = (0, import_button.useButton)(ariaButtonProps, ref);
2082
2324
  const hasTranslatedLabel = translatedLabel !== void 0 && translatedLabel.length > 0;
2083
- return /* @__PURE__ */ import_react22.default.createElement(
2325
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2084
2326
  TagItemRoot,
2085
2327
  {
2086
2328
  ref,
2087
2329
  size: hasTranslatedLabel ? "M" : size,
2088
2330
  status,
2089
2331
  ...buttonProps,
2090
- className
2091
- },
2092
- /* @__PURE__ */ import_react22.default.createElement(Background, { bgColor, bgImage, status }),
2093
- /* @__PURE__ */ import_react22.default.createElement(Inner, null, /* @__PURE__ */ import_react22.default.createElement(LabelWrapper, { isTranslate: hasTranslatedLabel }, hasTranslatedLabel && /* @__PURE__ */ import_react22.default.createElement(TranslatedLabel, null, /* @__PURE__ */ import_react22.default.createElement(Label3, null, translatedLabel)), /* @__PURE__ */ import_react22.default.createElement(Label3, null, label)), status === "active" && /* @__PURE__ */ import_react22.default.createElement(Icon_default, { name: "16/Remove" }))
2332
+ className,
2333
+ children: [
2334
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Background, { bgColor, bgImage, status }),
2335
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Inner, { children: [
2336
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(LabelWrapper, { isTranslate: hasTranslatedLabel, children: [
2337
+ hasTranslatedLabel && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(TranslatedLabel, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Label3, { children: translatedLabel }) }),
2338
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Label3, { children: label })
2339
+ ] }),
2340
+ status === "active" && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Icon_default, { name: "16/Remove" })
2341
+ ] })
2342
+ ]
2343
+ }
2094
2344
  );
2095
2345
  }
2096
2346
  );
2097
- var TagItem_default = (0, import_react22.memo)(TagItem);
2098
- var TagItemRoot = import_styled_components19.default.a`
2347
+ var TagItem_default = (0, import_react23.memo)(TagItem);
2348
+ var TagItemRoot = import_styled_components22.default.a`
2099
2349
  isolation: isolate;
2100
2350
  position: relative;
2101
2351
  height: ${({ size }) => sizeMap[size]}px;
@@ -2115,12 +2365,12 @@ var TagItemRoot = import_styled_components19.default.a`
2115
2365
  ...status === "active" ? [o.padding.left(16), o.padding.right(8)] : []
2116
2366
  ])}
2117
2367
 
2118
- ${import_utils12.disabledSelector} {
2368
+ ${import_utils11.disabledSelector} {
2119
2369
  ${theme((o) => [o.disabled])}
2120
2370
  cursor: default;
2121
2371
  }
2122
2372
  `;
2123
- var Background = import_styled_components19.default.div`
2373
+ var Background = import_styled_components22.default.div`
2124
2374
  position: absolute;
2125
2375
  z-index: 1;
2126
2376
  top: 0;
@@ -2131,7 +2381,7 @@ var Background = import_styled_components19.default.div`
2131
2381
  background-color: ${({ bgColor }) => bgColor};
2132
2382
  ${({ status }) => status === "inactive" && theme((o) => o.bg.surface3)}
2133
2383
 
2134
- ${({ bgImage }) => bgImage !== void 0 && import_styled_components19.css`
2384
+ ${({ bgImage }) => bgImage !== void 0 && import_styled_components22.css`
2135
2385
  ${theme((o) => [o.bg.surface4])}
2136
2386
  &::before {
2137
2387
  content: '';
@@ -2147,25 +2397,25 @@ var Background = import_styled_components19.default.div`
2147
2397
  }
2148
2398
  `}
2149
2399
  `;
2150
- var Inner = import_styled_components19.default.div`
2400
+ var Inner = import_styled_components22.default.div`
2151
2401
  display: inline-flex;
2152
- gap: ${({ theme: theme4 }) => (0, import_utils12.px)(theme4.spacing[8])};
2402
+ gap: ${({ theme: theme4 }) => (0, import_utils11.px)(theme4.spacing[8])};
2153
2403
  align-items: center;
2154
2404
  z-index: 2;
2155
2405
  `;
2156
- var labelCSS = import_styled_components19.css`
2406
+ var labelCSS = import_styled_components22.css`
2157
2407
  ${theme((o) => [o.typography(14).bold])}
2158
2408
  `;
2159
- var translateLabelCSS = import_styled_components19.css`
2409
+ var translateLabelCSS = import_styled_components22.css`
2160
2410
  display: flex;
2161
2411
  align-items: center;
2162
2412
  flex-direction: column;
2163
2413
  font-size: 10px;
2164
2414
  `;
2165
- var LabelWrapper = import_styled_components19.default.div`
2415
+ var LabelWrapper = import_styled_components22.default.div`
2166
2416
  ${({ isTranslate }) => isTranslate ?? false ? translateLabelCSS : labelCSS}
2167
2417
  `;
2168
- var Label3 = import_styled_components19.default.span`
2418
+ var Label3 = import_styled_components22.default.span`
2169
2419
  max-width: 152px;
2170
2420
  overflow: hidden;
2171
2421
  text-overflow: ellipsis;
@@ -2174,7 +2424,7 @@ var Label3 = import_styled_components19.default.span`
2174
2424
  color: inherit;
2175
2425
  line-height: inherit;
2176
2426
  `;
2177
- var TranslatedLabel = import_styled_components19.default.div`
2427
+ var TranslatedLabel = import_styled_components22.default.div`
2178
2428
  ${theme((o) => [o.typography(12).bold])}
2179
2429
  `;
2180
2430
  // Annotate the CommonJS export names for ESM import in node:
@@ -2184,11 +2434,13 @@ var TranslatedLabel = import_styled_components19.default.div`
2184
2434
  Checkbox,
2185
2435
  Clickable,
2186
2436
  ComponentAbstraction,
2437
+ DropdownMenuItem,
2187
2438
  DropdownSelector,
2188
2439
  Icon,
2189
2440
  IconButton,
2190
2441
  LoadingSpinner,
2191
2442
  LoadingSpinnerIcon,
2443
+ MenuItemGroup,
2192
2444
  Modal,
2193
2445
  ModalAlign,
2194
2446
  ModalBody,
@@ -2196,7 +2448,6 @@ var TranslatedLabel = import_styled_components19.default.div`
2196
2448
  ModalHeader,
2197
2449
  MultiSelect,
2198
2450
  MultiSelectGroup,
2199
- OptionItem,
2200
2451
  OverlayProvider,
2201
2452
  Radio,
2202
2453
  RadioGroup,