@charcoal-ui/react 3.8.0 → 3.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/components/Checkbox/index.d.ts.map +1 -1
  2. package/dist/components/Modal/index.d.ts.map +1 -1
  3. package/dist/components/Modal/index.story.d.ts +1 -0
  4. package/dist/components/Modal/index.story.d.ts.map +1 -1
  5. package/dist/components/Modal/useCustomModalOverlay.d.ts +12 -0
  6. package/dist/components/Modal/useCustomModalOverlay.d.ts.map +1 -0
  7. package/dist/components/Radio/index.d.ts.map +1 -1
  8. package/dist/components/TextArea/index.d.ts.map +1 -1
  9. package/dist/components/TextField/TextField.story.d.ts +1 -0
  10. package/dist/components/TextField/TextField.story.d.ts.map +1 -1
  11. package/dist/components/TextField/index.d.ts.map +1 -1
  12. package/dist/index.cjs.js +1001 -2226
  13. package/dist/index.cjs.js.map +1 -1
  14. package/dist/index.esm.js +995 -2226
  15. package/dist/index.esm.js.map +1 -1
  16. package/package.json +7 -6
  17. package/src/components/Checkbox/__snapshots__/index.story.storyshot +43 -15
  18. package/src/components/Checkbox/index.tsx +13 -5
  19. package/src/components/DropdownSelector/__snapshots__/index.story.storyshot +3 -0
  20. package/src/components/IconButton/__snapshots__/index.story.storyshot +5 -0
  21. package/src/components/IconButton/index.tsx +4 -1
  22. package/src/components/Modal/__snapshots__/index.story.storyshot +926 -0
  23. package/src/components/Modal/index.story.tsx +23 -0
  24. package/src/components/Modal/index.tsx +15 -20
  25. package/src/components/Modal/useCustomModalOverlay.tsx +47 -0
  26. package/src/components/Radio/__snapshots__/index.story.storyshot +25 -5
  27. package/src/components/Radio/index.tsx +5 -1
  28. package/src/components/TextArea/index.tsx +22 -14
  29. package/src/components/TextField/TextField.story.tsx +20 -0
  30. package/src/components/TextField/__snapshots__/TextField.story.storyshot +277 -0
  31. package/src/components/TextField/index.tsx +22 -14
package/dist/index.esm.js CHANGED
@@ -2,23 +2,25 @@
2
2
  import { useContext } from "react";
3
3
  import * as React from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
- var DefaultLink = React.forwardRef(
6
- function DefaultLink2({ to, children, ...rest }, ref) {
7
- return /* @__PURE__ */ jsx("a", { href: to, ref, ...rest, children });
8
- }
9
- );
5
+ var DefaultLink = React.forwardRef(function DefaultLink2({
6
+ to,
7
+ children,
8
+ ...rest
9
+ }, ref) {
10
+ return /* @__PURE__ */ jsx("a", { href: to, ref, ...rest, children });
11
+ });
10
12
  var DefaultValue = {
11
13
  Link: DefaultLink
12
14
  };
13
15
  var ComponentAbstractionContext = React.createContext(DefaultValue);
14
- function ComponentAbstraction({ children, components }) {
15
- return /* @__PURE__ */ jsx(
16
- ComponentAbstractionContext.Provider,
17
- {
18
- value: { ...DefaultValue, ...components },
19
- children
20
- }
21
- );
16
+ function ComponentAbstraction({
17
+ children,
18
+ components
19
+ }) {
20
+ return /* @__PURE__ */ jsx(ComponentAbstractionContext.Provider, { value: {
21
+ ...DefaultValue,
22
+ ...components
23
+ }, children });
22
24
  }
23
25
  function useComponentAbstraction() {
24
26
  return useContext(ComponentAbstractionContext);
@@ -53,9 +55,7 @@ import { forwardRef as forwardRef3 } from "react";
53
55
 
54
56
  // src/_lib/index.ts
55
57
  function unreachable(value) {
56
- throw new Error(
57
- arguments.length === 0 ? "unreachable" : `unreachable (${JSON.stringify(value)})`
58
- );
58
+ throw new Error(arguments.length === 0 ? "unreachable" : `unreachable (${JSON.stringify(value)})`);
59
59
  }
60
60
  function mergeRefs(...refs) {
61
61
  return (value) => {
@@ -117,124 +117,39 @@ import * as React2 from "react";
117
117
  import styled from "styled-components";
118
118
  import { disabledSelector } from "@charcoal-ui/utils";
119
119
  import { jsx as jsx3 } from "react/jsx-runtime";
120
- var Clickable = React2.forwardRef(
121
- function Clickable2(props, ref) {
122
- const { Link } = useComponentAbstraction();
123
- const isLink = "to" in props;
124
- const as = isLink ? Link : "button";
125
- const ariaDisabled = isLink && props.disabled === true ? true : void 0;
126
- let rest = props;
127
- if (isLink) {
128
- const { disabled, ..._rest } = props;
129
- rest = _rest;
130
- }
131
- return /* @__PURE__ */ jsx3(
132
- StyledClickableDiv,
133
- {
134
- ...rest,
135
- ref,
136
- as,
137
- "aria-disabled": ariaDisabled
138
- }
139
- );
120
+ var Clickable = React2.forwardRef(function Clickable2(props, ref) {
121
+ const {
122
+ Link
123
+ } = useComponentAbstraction();
124
+ const isLink = "to" in props;
125
+ const as = isLink ? Link : "button";
126
+ const ariaDisabled = isLink && props.disabled === true ? true : void 0;
127
+ let rest = props;
128
+ if (isLink) {
129
+ const {
130
+ disabled,
131
+ ..._rest
132
+ } = props;
133
+ rest = _rest;
140
134
  }
141
- );
135
+ return /* @__PURE__ */ jsx3(StyledClickableDiv, { ...rest, ref, as, "aria-disabled": ariaDisabled });
136
+ });
142
137
  var Clickable_default = Clickable;
143
- var StyledClickableDiv = styled.div`
144
- cursor: pointer;
145
-
146
- ${disabledSelector} {
147
- cursor: default;
148
- }
149
-
150
- /* Reset button appearance */
151
- appearance: none;
152
- background: transparent;
153
- padding: 0;
154
- border-style: none;
155
- outline: none;
156
- color: inherit;
157
- text-rendering: inherit;
158
- letter-spacing: inherit;
159
- word-spacing: inherit;
160
- text-decoration: none;
161
-
162
- &:focus {
163
- outline: none;
164
- }
165
-
166
- /* Change the font styles in all browsers. */
167
- font: inherit;
168
-
169
- /* Remove the margin in Firefox and Safari. */
170
- margin: 0;
171
-
172
- /* Show the overflow in Edge. */
173
- overflow: visible;
174
-
175
- /* Remove the inheritance of text transform in Firefox. */
176
- text-transform: none;
177
-
178
- /* Remove the inner border and padding in Firefox. */
179
- &::-moz-focus-inner {
180
- border-style: none;
181
- padding: 0;
182
- }
183
- `;
138
+ var StyledClickableDiv = styled.div.withConfig({
139
+ componentId: "ccl__sc-1lxyknw-0"
140
+ })(["cursor:pointer;", "{cursor:default;}appearance:none;background:transparent;padding:0;border-style:none;outline:none;color:inherit;text-rendering:inherit;letter-spacing:inherit;word-spacing:inherit;text-decoration:none;&:focus{outline:none;}font:inherit;margin:0;overflow:visible;text-transform:none;&::-moz-focus-inner{border-style:none;padding:0;}"], disabledSelector);
184
141
 
185
142
  // src/components/Button/StyledButton.tsx
186
143
  import { focusVisibleFocusRingCss } from "@charcoal-ui/styled";
187
- var horizontalPaddingSmall = css`
188
- padding-right: 16px;
189
- padding-left: 16px;
190
- `;
191
- var horizontalPaddingMedium = css`
192
- padding-right: 24px;
193
- padding-left: 24px;
194
- `;
195
- var StyledButton = styled2(Clickable_default)`
196
- width: ${(p) => p.$fullWidth ? "stretch" : "min-content"};
197
- display: inline-grid;
198
- align-items: center;
199
- justify-content: center;
200
- cursor: pointer;
201
- user-select: none;
202
- white-space: nowrap;
203
- border-radius: 999999px;
204
- font-size: 14px;
205
- line-height: 22px;
206
- font-weight: bold;
207
-
208
- ${(p) => p.$size === "M" ? horizontalPaddingMedium : horizontalPaddingSmall}
209
- color: var(--charcoal-${(p) => p.$color});
210
- background-color: var(--charcoal-${(p) => p.$background});
211
- transition: 0.2s color, 0.2s background-color, 0.2s box-shadow;
212
-
213
- &:not(:disabled):not([aria-disabled]),
214
- &[aria-disabled='false'] {
215
- ${focusVisibleFocusRingCss}
216
-
217
- ${({ $isActive: $active, $color, $background }) => $active ? css`
218
- color: var(--charcoal-${$color}-press);
219
- background-color: var(--charcoal-${$background}-press);
220
- ` : css`
221
- &:hover {
222
- color: var(--charcoal-${$color}-hover);
223
- background-color: var(--charcoal-${$background}-hover);
224
- }
225
- &:active {
226
- color: var(--charcoal-${$color}-press);
227
- background-color: var(--charcoal-${$background}-press);
228
- }
229
- `}
230
- }
231
-
232
- &:disabled,
233
- &[aria-disabled]:not([aria-disabled='false']) {
234
- opacity: 0.32;
235
- }
236
- height: ${(p) => p.$size === "M" ? 40 : 32}px;
237
- `;
144
+ var horizontalPaddingSmall = css(["padding-right:16px;padding-left:16px;"]);
145
+ var horizontalPaddingMedium = css(["padding-right:24px;padding-left:24px;"]);
146
+ var StyledButton = styled2(Clickable_default).withConfig({
147
+ componentId: "ccl__sc-19qkngs-0"
148
+ })(["width:", ";display:inline-grid;align-items:center;justify-content:center;cursor:pointer;user-select:none;white-space:nowrap;border-radius:999999px;font-size:14px;line-height:22px;font-weight:bold;", " color:var(--charcoal-", ");background-color:var(--charcoal-", ");transition:0.2s color,0.2s background-color,0.2s box-shadow;&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{", " ", "}&:disabled,&[aria-disabled]:not([aria-disabled='false']){opacity:0.32;}height:", "px;"], (p) => p.$fullWidth ? "stretch" : "min-content", (p) => p.$size === "M" ? horizontalPaddingMedium : horizontalPaddingSmall, (p) => p.$color, (p) => p.$background, focusVisibleFocusRingCss, ({
149
+ $isActive: $active,
150
+ $color,
151
+ $background
152
+ }) => $active ? css(["color:var(--charcoal-", "-press);background-color:var(--charcoal-", "-press);"], $color, $background) : css(["&:hover{color:var(--charcoal-", "-hover);background-color:var(--charcoal-", "-hover);}&:active{color:var(--charcoal-", "-press);background-color:var(--charcoal-", "-press);}"], $color, $background, $color, $background), (p) => p.$size === "M" ? 40 : 32);
238
153
 
239
154
  // src/components/Button/index.tsx
240
155
  import { jsx as jsx4 } from "react/jsx-runtime";
@@ -247,20 +162,7 @@ var Button = forwardRef3(function Button2({
247
162
  isActive = false,
248
163
  ...rest
249
164
  }, ref) {
250
- return /* @__PURE__ */ jsx4(
251
- StyledButton,
252
- {
253
- ...rest,
254
- disabled,
255
- $background: variantToBackground(variant),
256
- $color: variantToFont(variant),
257
- $size: size,
258
- $fullWidth: fixed,
259
- $isActive: isActive,
260
- ref,
261
- children
262
- }
263
- );
165
+ return /* @__PURE__ */ jsx4(StyledButton, { ...rest, disabled, $background: variantToBackground(variant), $color: variantToFont(variant), $size: size, $fullWidth: fixed, $isActive: isActive, ref, children });
264
166
  });
265
167
  var Button_default = Button;
266
168
 
@@ -269,63 +171,32 @@ import { forwardRef as forwardRef4 } from "react";
269
171
  import styled3, { css as css2 } from "styled-components";
270
172
  import { focusVisibleFocusRingCss as focusVisibleFocusRingCss2 } from "@charcoal-ui/styled";
271
173
  import { jsx as jsx5 } from "react/jsx-runtime";
272
- var IconButton = forwardRef4(
273
- function IconButtonInner({
274
- variant = "Default",
275
- size = "M",
276
- icon,
277
- isActive = false,
278
- ...rest
279
- }, ref) {
280
- validateIconSize(size, icon);
281
- return /* @__PURE__ */ jsx5(
282
- StyledIconButton,
283
- {
284
- ...rest,
285
- ref,
286
- $size: size,
287
- $variant: variant,
288
- $isActive: isActive,
289
- children: /* @__PURE__ */ jsx5("pixiv-icon", { name: icon })
290
- }
291
- );
292
- }
293
- );
174
+ var IconButton = forwardRef4(function IconButtonInner({
175
+ variant = "Default",
176
+ size = "M",
177
+ icon,
178
+ isActive = false,
179
+ ...rest
180
+ }, ref) {
181
+ validateIconSize(size, icon);
182
+ return /* @__PURE__ */ jsx5(StyledIconButton, { ...rest, ref, $size: size, $variant: variant, $isActive: isActive, children: /* @__PURE__ */ jsx5("pixiv-icon", { name: icon }) });
183
+ });
294
184
  var IconButton_default = IconButton;
295
- var StyledIconButton = styled3(Clickable_default).attrs(styledProps)`
296
- user-select: none;
297
-
298
- width: ${(p) => p.$width}px;
299
- height: ${(p) => p.$height}px;
300
- display: flex;
301
- align-items: center;
302
- justify-content: center;
303
- color: var(${({ $font }) => `--charcoal-${$font}`});
304
- background-color: var(${({ $background }) => `--charcoal-${$background}`});
305
- border-radius: 999999px;
306
- transition: 0.2s background-color, 0.2s box-shadow;
307
-
308
- &:not(:disabled):not([aria-disabled]),
309
- &[aria-disabled='false'] {
310
- ${({ $isActive, $background }) => $isActive ? css2`
311
- background-color: var(--charcoal-${$background}-press);
312
- ` : css2`
313
- &:hover {
314
- background-color: var(--charcoal-${$background}-hover);
315
- }
316
- &:active {
317
- background-color: var(--charcoal-${$background}-press);
318
- }
319
- `}
320
- ${focusVisibleFocusRingCss2}
321
- }
322
-
323
- &:disabled,
324
- &[aria-disabled]:not([aria-disabled='false']) {
325
- opacity: 0.32;
326
- }
327
- `;
328
- function styledProps({ $size, $variant }) {
185
+ var StyledIconButton = styled3(Clickable_default).attrs(styledProps).withConfig({
186
+ componentId: "ccl__sc-zssehl-0"
187
+ })(["user-select:none;width:", "px;height:", "px;display:flex;align-items:center;justify-content:center;color:var(", ");background-color:var(", ");border-radius:999999px;transition:0.2s background-color,0.2s box-shadow;&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{", " ", "}&:disabled,&[aria-disabled]:not([aria-disabled='false']){opacity:0.32;}"], (p) => p.$width, (p) => p.$height, ({
188
+ $font
189
+ }) => `--charcoal-${$font}`, ({
190
+ $background
191
+ }) => `--charcoal-${$background}`, ({
192
+ $isActive,
193
+ $background,
194
+ $font
195
+ }) => $isActive ? css2(["color:var(--charcoal-", "-press);background-color:var(--charcoal-", "-press);"], $font, $background) : css2(["&:hover{color:var(--charcoal-", "-hover);background-color:var(--charcoal-", "-hover);}&:active{color:var(--charcoal-", "-press);background-color:var(--charcoal-", "-press);}"], $font, $background, $font, $background), focusVisibleFocusRingCss2);
196
+ function styledProps({
197
+ $size,
198
+ $variant
199
+ }) {
329
200
  return {
330
201
  ...variantToProps($variant),
331
202
  ...sizeToProps($size)
@@ -334,9 +205,15 @@ function styledProps({ $size, $variant }) {
334
205
  function variantToProps(variant) {
335
206
  switch (variant) {
336
207
  case "Default":
337
- return { $font: "text3", $background: "transparent" };
208
+ return {
209
+ $font: "text3",
210
+ $background: "transparent"
211
+ };
338
212
  case "Overlay":
339
- return { $font: "text5", $background: "surface4" };
213
+ return {
214
+ $font: "text5",
215
+ $background: "surface4"
216
+ };
340
217
  }
341
218
  }
342
219
  function sizeToProps(size) {
@@ -375,9 +252,7 @@ function validateIconSize(size, icon) {
375
252
  }
376
253
  const [iconSize] = result;
377
254
  if (iconSize !== requiredIconSize) {
378
- console.warn(
379
- `IconButton with size "${size}" expect icon size "${requiredIconSize}, but got "${iconSize}"`
380
- );
255
+ console.warn(`IconButton with size "${size}" expect icon size "${requiredIconSize}, but got "${iconSize}"`);
381
256
  }
382
257
  }
383
258
 
@@ -388,7 +263,12 @@ import styled4 from "styled-components";
388
263
  import warning from "warning";
389
264
  import { focusVisibleFocusRingCss as focusVisibleFocusRingCss3 } from "@charcoal-ui/styled";
390
265
  import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
391
- var Radio = forwardRef5(function RadioInner({ value, disabled = false, children, className }, ref) {
266
+ var Radio = forwardRef5(function RadioInner({
267
+ value,
268
+ disabled = false,
269
+ children,
270
+ className
271
+ }, ref) {
392
272
  const {
393
273
  name,
394
274
  selected,
@@ -404,138 +284,29 @@ var Radio = forwardRef5(function RadioInner({ value, disabled = false, children,
404
284
  const isSelected = value === selected;
405
285
  const isDisabled = disabled || isParentDisabled;
406
286
  const isReadonly = readonly && !isSelected;
407
- const handleChange = useCallback(
408
- (e) => {
409
- onChange(e.currentTarget.value);
410
- },
411
- [onChange]
412
- );
287
+ const handleChange = useCallback((e) => {
288
+ onChange(e.currentTarget.value);
289
+ }, [onChange]);
413
290
  return /* @__PURE__ */ jsxs2(RadioRoot, { "aria-disabled": isDisabled || isReadonly, className, children: [
414
- /* @__PURE__ */ jsx6(
415
- RadioInput,
416
- {
417
- name,
418
- value,
419
- checked: isSelected,
420
- "aria-invalid": invalid,
421
- onChange: handleChange,
422
- disabled: isDisabled || isReadonly,
423
- ref
424
- }
425
- ),
291
+ /* @__PURE__ */ jsx6(RadioInput, { name, value, checked: isSelected, "aria-invalid": invalid, onChange: handleChange, disabled: isDisabled || isReadonly, ref }),
426
292
  children != null && /* @__PURE__ */ jsx6(RadioLabel, { children })
427
293
  ] });
428
294
  });
429
295
  var Radio_default = memo(Radio);
430
- var RadioRoot = styled4.label`
431
- display: grid;
432
- grid-template-columns: auto 1fr;
433
- grid-gap: 4px;
434
- align-items: center;
435
- cursor: pointer;
436
-
437
- &:disabled,
438
- &[aria-disabled]:not([aria-disabled='false']) {
439
- opacity: 0.32;
440
- }
441
- `;
442
- var RadioInput = styled4.input.attrs({ type: "radio" })`
443
- /** Make prior to browser default style */
444
- &[type='radio'] {
445
- appearance: none;
446
- display: block;
447
- box-sizing: border-box;
448
-
449
- margin: 0;
450
- padding: 6px;
451
-
452
- width: 20px;
453
- height: 20px;
454
- cursor: pointer;
455
- border-radius: 999999px;
456
- background-color: var(--charcoal-surface1);
457
- transition: 0.2s background-color, 0.2s box-shadow;
458
-
459
- &:not(:disabled):not([aria-disabled]),
460
- &[aria-disabled='false'] {
461
- &:hover {
462
- background-color: var(--charcoal-surface1-hover);
463
- }
464
- &:active {
465
- background-color: var(--charcoal-surface1-press);
466
- }
467
- ${focusVisibleFocusRingCss3}
468
- &[aria-invalid='true'] {
469
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
470
- &:focus {
471
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
472
- }
473
- }
474
- }
475
-
476
- &:not(:checked) {
477
- border-width: 2px;
478
- border-style: solid;
479
- border-color: var(--charcoal-text3);
480
- }
481
-
482
- &:checked {
483
- background-color: var(--charcoal-brand);
484
- &::after {
485
- content: '';
486
- display: block;
487
- width: 8px;
488
- height: 8px;
489
- pointer-events: none;
490
- background-color: var(--charcoal-text5);
491
- border-radius: 999999px;
492
- transition: 0.2s background-color, 0.2s box-shadow;
493
- }
494
-
495
- &:not(:disabled):not([aria-disabled]),
496
- &[aria-disabled='false'] {
497
- &:hover {
498
- background-color: var(--charcoal-brand-hover);
499
- &::after {
500
- background-color: var(--charcoal-text5-hover);
501
- }
502
- }
503
- &:active {
504
- background-color: var(--charcoal-brand-press);
505
- &::after {
506
- background-color: var(--charcoal-text5-press);
507
- }
508
- }
509
- }
510
- }
511
- }
512
- `;
513
- var RadioLabel = styled4.div`
514
- font-size: 14px;
515
- line-height: 22px;
516
- display: flow-root;
517
- color: var(--charcoal-text2);
518
-
519
- &::before {
520
- display: block;
521
- width: 0;
522
- height: 0;
523
- content: '';
524
- margin-top: -4px;
525
- }
526
- &::after {
527
- display: block;
528
- width: 0;
529
- height: 0;
530
- content: '';
531
- margin-bottom: -4px;
532
- }
533
- `;
534
- var StyledRadioGroup = styled4.div`
535
- display: grid;
536
- grid-template-columns: 1fr;
537
- grid-gap: 8px;
538
- `;
296
+ var RadioRoot = styled4.label.withConfig({
297
+ componentId: "ccl__sc-1hitkzn-0"
298
+ })(["display:grid;grid-template-columns:auto 1fr;grid-gap:4px;align-items:center;cursor:pointer;&[aria-disabled]:not([aria-disabled='false']){opacity:0.32;cursor:default;}"]);
299
+ var RadioInput = styled4.input.attrs({
300
+ type: "radio"
301
+ }).withConfig({
302
+ componentId: "ccl__sc-1hitkzn-1"
303
+ })(["&[type='radio']{appearance:none;display:block;box-sizing:border-box;margin:0;padding:6px;width:20px;height:20px;cursor:pointer;border-radius:999999px;background-color:var(--charcoal-surface1);transition:0.2s background-color,0.2s box-shadow;:disabled{cursor:default;}&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{&:hover{background-color:var(--charcoal-surface1-hover);}&:active{background-color:var(--charcoal-surface1-press);}", " &[aria-invalid='true']{box-shadow:0 0 0 4px rgba(255,43,0,0.32);&:focus{box-shadow:0 0 0 4px rgba(255,43,0,0.32);}}}&:not(:checked){border-width:2px;border-style:solid;border-color:var(--charcoal-text3);}&:checked{background-color:var(--charcoal-brand);&::after{content:'';display:block;width:8px;height:8px;pointer-events:none;background-color:var(--charcoal-text5);border-radius:999999px;transition:0.2s background-color,0.2s box-shadow;}&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{&:hover{background-color:var(--charcoal-brand-hover);&::after{background-color:var(--charcoal-text5-hover);}}&:active{background-color:var(--charcoal-brand-press);&::after{background-color:var(--charcoal-text5-press);}}}}}"], focusVisibleFocusRingCss3);
304
+ var RadioLabel = styled4.div.withConfig({
305
+ componentId: "ccl__sc-1hitkzn-2"
306
+ })(["font-size:14px;line-height:22px;display:flow-root;color:var(--charcoal-text2);&::before{display:block;width:0;height:0;content:'';margin-top:-4px;}&::after{display:block;width:0;height:0;content:'';margin-bottom:-4px;}"]);
307
+ var StyledRadioGroup = styled4.div.withConfig({
308
+ componentId: "ccl__sc-1hitkzn-3"
309
+ })(["display:grid;grid-template-columns:1fr;grid-gap:8px;"]);
539
310
  var RadioGroupContext = React3.createContext({
540
311
  name: void 0,
541
312
  selected: void 0,
@@ -543,9 +314,7 @@ var RadioGroupContext = React3.createContext({
543
314
  readonly: false,
544
315
  invalid: false,
545
316
  onChange() {
546
- throw new Error(
547
- "Cannot find onChange() handler. Perhaps you forgot to wrap with <RadioGroup> ?"
548
- );
317
+ throw new Error("Cannot find onChange() handler. Perhaps you forgot to wrap with <RadioGroup> ?");
549
318
  }
550
319
  });
551
320
  function RadioGroup({
@@ -559,36 +328,17 @@ function RadioGroup({
559
328
  invalid,
560
329
  children
561
330
  }) {
562
- const handleChange = useCallback(
563
- (next) => {
564
- onChange(next);
565
- },
566
- [onChange]
567
- );
568
- return /* @__PURE__ */ jsx6(
569
- RadioGroupContext.Provider,
570
- {
571
- value: {
572
- name,
573
- selected: value,
574
- disabled: disabled ?? false,
575
- readonly: readonly ?? false,
576
- invalid: invalid ?? false,
577
- onChange: handleChange
578
- },
579
- children: /* @__PURE__ */ jsx6(
580
- StyledRadioGroup,
581
- {
582
- role: "radiogroup",
583
- "aria-orientation": "vertical",
584
- "aria-label": label,
585
- "aria-invalid": invalid,
586
- className,
587
- children
588
- }
589
- )
590
- }
591
- );
331
+ const handleChange = useCallback((next) => {
332
+ onChange(next);
333
+ }, [onChange]);
334
+ return /* @__PURE__ */ jsx6(RadioGroupContext.Provider, { value: {
335
+ name,
336
+ selected: value,
337
+ disabled: disabled ?? false,
338
+ readonly: readonly ?? false,
339
+ invalid: invalid ?? false,
340
+ onChange: handleChange
341
+ }, children: /* @__PURE__ */ jsx6(StyledRadioGroup, { role: "radiogroup", "aria-orientation": "vertical", "aria-label": label, "aria-invalid": invalid, className, children }) });
592
342
  }
593
343
 
594
344
  // src/components/MultiSelect/index.tsx
@@ -606,197 +356,86 @@ var MultiSelectGroupContext = createContext3({
606
356
  readonly: false,
607
357
  invalid: false,
608
358
  onChange() {
609
- throw new Error(
610
- "Cannot find `onChange()` handler. Perhaps you forgot to wrap it with `<MultiSelectGroup />` ?"
611
- );
359
+ throw new Error("Cannot find `onChange()` handler. Perhaps you forgot to wrap it with `<MultiSelectGroup />` ?");
612
360
  }
613
361
  });
614
362
 
615
363
  // src/components/MultiSelect/index.tsx
616
364
  import { focusVisibleFocusRingCss as focusVisibleFocusRingCss4 } from "@charcoal-ui/styled";
617
365
  import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
618
- var MultiSelect = forwardRef6(
619
- function MultiSelectInner({
620
- value,
621
- disabled = false,
622
- onChange,
623
- variant = "default",
624
- className,
625
- children
626
- }, ref) {
627
- const {
366
+ var MultiSelect = forwardRef6(function MultiSelectInner({
367
+ value,
368
+ disabled = false,
369
+ onChange,
370
+ variant = "default",
371
+ className,
372
+ children
373
+ }, ref) {
374
+ const {
375
+ name,
376
+ selected,
377
+ disabled: parentDisabled,
378
+ readonly,
379
+ invalid,
380
+ onChange: parentOnChange
381
+ } = useContext3(MultiSelectGroupContext);
382
+ warning2(
383
+ name !== void 0,
384
+ `"name" is not Provided for <MultiSelect>. Perhaps you forgot to wrap with <MultiSelectGroup> ?`
385
+ );
386
+ const isSelected = selected.includes(value);
387
+ const isDisabled = disabled || parentDisabled || readonly;
388
+ const handleChange = useCallback2((event) => {
389
+ if (!(event.currentTarget instanceof HTMLInputElement)) {
390
+ return;
391
+ }
392
+ if (onChange)
393
+ onChange({
394
+ value,
395
+ selected: event.currentTarget.checked
396
+ });
397
+ parentOnChange({
398
+ value,
399
+ selected: event.currentTarget.checked
400
+ });
401
+ }, [onChange, parentOnChange, value]);
402
+ return /* @__PURE__ */ jsxs3(MultiSelectRoot, { "aria-disabled": isDisabled, className, children: [
403
+ /* @__PURE__ */ jsx7(MultiSelectInput, { ...{
628
404
  name,
629
- selected,
630
- disabled: parentDisabled,
631
- readonly,
632
- invalid,
633
- onChange: parentOnChange
634
- } = useContext3(MultiSelectGroupContext);
635
- warning2(
636
- name !== void 0,
637
- `"name" is not Provided for <MultiSelect>. Perhaps you forgot to wrap with <MultiSelectGroup> ?`
638
- );
639
- const isSelected = selected.includes(value);
640
- const isDisabled = disabled || parentDisabled || readonly;
641
- const handleChange = useCallback2(
642
- (event) => {
643
- if (!(event.currentTarget instanceof HTMLInputElement)) {
644
- return;
645
- }
646
- if (onChange)
647
- onChange({ value, selected: event.currentTarget.checked });
648
- parentOnChange({ value, selected: event.currentTarget.checked });
649
- },
650
- [onChange, parentOnChange, value]
651
- );
652
- return /* @__PURE__ */ jsxs3(MultiSelectRoot, { "aria-disabled": isDisabled, className, children: [
653
- /* @__PURE__ */ jsx7(
654
- MultiSelectInput,
655
- {
656
- ...{
657
- name,
658
- value,
659
- invalid
660
- },
661
- checked: isSelected,
662
- disabled: isDisabled,
663
- onChange: handleChange,
664
- overlay: variant === "overlay",
665
- "aria-invalid": invalid,
666
- ref
667
- }
668
- ),
669
- /* @__PURE__ */ jsx7(
670
- MultiSelectInputOverlay,
671
- {
672
- overlay: variant === "overlay",
673
- invalid,
674
- "aria-hidden": true,
675
- children: /* @__PURE__ */ jsx7("pixiv-icon", { name: "24/Check", "unsafe-non-guideline-scale": 16 / 24 })
676
- }
677
- ),
678
- Boolean(children) && /* @__PURE__ */ jsx7(MultiSelectLabel, { children })
679
- ] });
680
- }
681
- );
405
+ value,
406
+ invalid
407
+ }, checked: isSelected, disabled: isDisabled, onChange: handleChange, overlay: variant === "overlay", "aria-invalid": invalid, ref }),
408
+ /* @__PURE__ */ jsx7(MultiSelectInputOverlay, { overlay: variant === "overlay", invalid, "aria-hidden": true, children: /* @__PURE__ */ jsx7("pixiv-icon", { name: "24/Check", "unsafe-non-guideline-scale": 16 / 24 }) }),
409
+ Boolean(children) && /* @__PURE__ */ jsx7(MultiSelectLabel, { children })
410
+ ] });
411
+ });
682
412
  var MultiSelect_default = memo2(MultiSelect);
683
- var MultiSelectRoot = styled5.label`
684
- display: grid;
685
- grid-template-columns: auto 1fr;
686
- align-items: center;
687
- position: relative;
688
- cursor: pointer;
689
- gap: ${({ theme }) => px(theme.spacing[4])};
690
- &:disabled,
691
- &[aria-disabled]:not([aria-disabled='false']) {
692
- opacity: 0.32;
693
- cursor: default;
694
- }
695
- `;
696
- var MultiSelectLabel = styled5.div`
697
- display: flex;
698
- align-items: center;
699
- font-size: 14px;
700
- line-height: 22px;
701
- display: flow-root;
702
- color: var(--charcoal-text2);
703
-
704
- &::before {
705
- display: block;
706
- width: 0;
707
- height: 0;
708
- content: '';
709
- margin-top: -4px;
710
- }
711
- &::after {
712
- display: block;
713
- width: 0;
714
- height: 0;
715
- content: '';
716
- margin-bottom: -4px;
717
- }
718
- `;
719
- var MultiSelectInput = styled5.input.attrs({ type: "checkbox" })`
720
- &[type='checkbox'] {
721
- appearance: none;
722
- display: block;
723
- width: 20px;
724
- height: 20px;
725
- margin: 0;
726
- background-color: var(--charcoal-text3);
727
- border-radius: 999999px;
728
- transition: 0.2s background-color, 0.2s box-shadow;
729
-
730
- &:checked {
731
- background-color: var(--charcoal-brand);
732
- &:hover {
733
- &:not(:disabled):not([aria-disabled]),
734
- &[aria-disabled='false'] {
735
- background-color: var(--charcoal-brand-hover);
736
- }
737
- }
738
-
739
- &:active {
740
- &:not(:disabled):not([aria-disabled]),
741
- &[aria-disabled='false'] {
742
- background-color: var(--charcoal-brand-press);
743
- }
744
- }
745
- }
746
-
747
- &:hover {
748
- &:not(:disabled):not([aria-disabled]),
749
- &[aria-disabled='false'] {
750
- background-color: var(--charcoal-text3-hover);
751
- }
752
- }
753
-
754
- &:active {
755
- &:not(:disabled):not([aria-disabled]),
756
- &[aria-disabled='false'] {
757
- background-color: var(--charcoal-text3-press);
758
- }
759
- }
760
-
761
- ${focusVisibleFocusRingCss4}
762
-
763
- ${({ invalid, overlay }) => invalid && !overlay && css3`
764
- &:not(:disabled):not([aria-disabled]),
765
- &[aria-disabled='false'] {
766
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
767
- }
768
- `}
769
- ${({ overlay }) => overlay && css3`
770
- background-color: var(--charcoal-surface4);
771
- `}
772
- }
773
- `;
774
- var MultiSelectInputOverlay = styled5.div`
775
- position: absolute;
776
- top: -2px;
777
- left: -2px;
778
- box-sizing: border-box;
779
- display: flex;
780
- align-items: center;
781
- justify-content: center;
782
- width: 24px;
783
- height: 24px;
784
- border-radius: 999999px;
785
- color: var(--charcoal-text5);
786
- transition: 0.2s box-shadow;
787
- ${({ invalid, overlay }) => invalid && overlay && css3`
788
- &:not(:disabled):not([aria-disabled]),
789
- &[aria-disabled='false'] {
790
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
791
- }
792
- `}
793
-
794
- ${({ overlay }) => overlay && css3`
795
- border-color: var(--charcoal-text5);
796
- border-width: 2px;
797
- border-style: solid;
798
- `}
799
- `;
413
+ var MultiSelectRoot = styled5.label.withConfig({
414
+ componentId: "ccl__sc-wpr5y9-0"
415
+ })(["display:grid;grid-template-columns:auto 1fr;align-items:center;position:relative;cursor:pointer;gap:", ";&:disabled,&[aria-disabled]:not([aria-disabled='false']){opacity:0.32;cursor:default;}"], ({
416
+ theme
417
+ }) => px(theme.spacing[4]));
418
+ var MultiSelectLabel = styled5.div.withConfig({
419
+ componentId: "ccl__sc-wpr5y9-1"
420
+ })(["display:flex;align-items:center;font-size:14px;line-height:22px;display:flow-root;color:var(--charcoal-text2);&::before{display:block;width:0;height:0;content:'';margin-top:-4px;}&::after{display:block;width:0;height:0;content:'';margin-bottom:-4px;}"]);
421
+ var MultiSelectInput = styled5.input.attrs({
422
+ type: "checkbox"
423
+ }).withConfig({
424
+ componentId: "ccl__sc-wpr5y9-2"
425
+ })(["&[type='checkbox']{appearance:none;display:block;width:20px;height:20px;margin:0;background-color:var(--charcoal-text3);border-radius:999999px;transition:0.2s background-color,0.2s box-shadow;&:checked{background-color:var(--charcoal-brand);&:hover{&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{background-color:var(--charcoal-brand-hover);}}&:active{&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{background-color:var(--charcoal-brand-press);}}}&:hover{&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{background-color:var(--charcoal-text3-hover);}}&:active{&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{background-color:var(--charcoal-text3-press);}}", " ", " ", "}"], focusVisibleFocusRingCss4, ({
426
+ invalid,
427
+ overlay
428
+ }) => invalid && !overlay && css3(["&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{box-shadow:0 0 0 4px rgba(255,43,0,0.32);}"]), ({
429
+ overlay
430
+ }) => overlay && css3(["background-color:var(--charcoal-surface4);"]));
431
+ var MultiSelectInputOverlay = styled5.div.withConfig({
432
+ componentId: "ccl__sc-wpr5y9-3"
433
+ })(["position:absolute;top:-2px;left:-2px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:999999px;color:var(--charcoal-text5);transition:0.2s box-shadow;", " ", ""], ({
434
+ invalid,
435
+ overlay
436
+ }) => invalid && overlay && css3(["&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{box-shadow:0 0 0 4px rgba(255,43,0,0.32);}"]), ({
437
+ overlay
438
+ }) => overlay && css3(["border-color:var(--charcoal-text5);border-width:2px;border-style:solid;"]));
800
439
  function MultiSelectGroup({
801
440
  className,
802
441
  name,
@@ -808,35 +447,26 @@ function MultiSelectGroup({
808
447
  invalid = false,
809
448
  children
810
449
  }) {
811
- const handleChange = useCallback2(
812
- (payload) => {
813
- const index = selected.indexOf(payload.value);
814
- if (payload.selected) {
815
- if (index < 0) {
816
- onChange([...selected, payload.value]);
817
- }
818
- } else {
819
- if (index >= 0) {
820
- onChange([...selected.slice(0, index), ...selected.slice(index + 1)]);
821
- }
450
+ const handleChange = useCallback2((payload) => {
451
+ const index = selected.indexOf(payload.value);
452
+ if (payload.selected) {
453
+ if (index < 0) {
454
+ onChange([...selected, payload.value]);
455
+ }
456
+ } else {
457
+ if (index >= 0) {
458
+ onChange([...selected.slice(0, index), ...selected.slice(index + 1)]);
822
459
  }
823
- },
824
- [onChange, selected]
825
- );
826
- return /* @__PURE__ */ jsx7(
827
- MultiSelectGroupContext.Provider,
828
- {
829
- value: {
830
- name,
831
- selected: Array.from(new Set(selected)),
832
- disabled,
833
- readonly,
834
- invalid,
835
- onChange: handleChange
836
- },
837
- children: /* @__PURE__ */ jsx7("div", { className, "aria-label": label, "data-testid": "SelectGroup", children })
838
460
  }
839
- );
461
+ }, [onChange, selected]);
462
+ return /* @__PURE__ */ jsx7(MultiSelectGroupContext.Provider, { value: {
463
+ name,
464
+ selected: Array.from(new Set(selected)),
465
+ disabled,
466
+ readonly,
467
+ invalid,
468
+ onChange: handleChange
469
+ }, children: /* @__PURE__ */ jsx7("div", { className, "aria-label": label, "data-testid": "SelectGroup", children }) });
840
470
  }
841
471
 
842
472
  // src/components/Switch/index.tsx
@@ -847,108 +477,43 @@ import styled6 from "styled-components";
847
477
  import { useObjectRef } from "@react-aria/utils";
848
478
  import { focusVisibleFocusRingCss as focusVisibleFocusRingCss5 } from "@charcoal-ui/styled";
849
479
  import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
850
- var SwitchCheckbox = forwardRef7(
851
- function SwitchCheckboxInner(props, external) {
852
- const { disabled, className } = props;
853
- const ariaSwitchProps = useMemo(
854
- () => ({
855
- ...props,
856
- "aria-label": "children" in props ? void 0 : props.label,
857
- isDisabled: props.disabled,
858
- isSelected: props.checked
859
- }),
860
- [props]
861
- );
862
- const state = useToggleState(ariaSwitchProps);
863
- const ref = useObjectRef(external);
864
- const {
865
- inputProps: { className: _className, type: _type, ...rest }
866
- } = useSwitch(ariaSwitchProps, state, ref);
867
- return /* @__PURE__ */ jsxs4(Label, { className, "aria-disabled": disabled, children: [
868
- /* @__PURE__ */ jsx8(SwitchInput, { ...rest, ref }),
869
- "children" in props ? /* @__PURE__ */ jsx8(LabelInner, { children: props.children }) : void 0
870
- ] });
871
- }
872
- );
873
- var Switch_default = memo3(SwitchCheckbox);
874
- var Label = styled6.label`
875
- display: inline-grid;
876
- grid-template-columns: auto 1fr;
877
- align-items: center;
878
- cursor: pointer;
879
- outline: 0;
880
-
881
- &:disabled,
882
- &[aria-disabled]:not([aria-disabled='false']) {
883
- opacity: 0.32;
884
- cursor: default;
885
- }
886
- `;
887
- var LabelInner = styled6.div`
888
- font-size: 14px;
889
- line-height: 22px;
890
- color: var(--charcoal-text2);
891
- margin-left: 4px;
892
- `;
893
- var SwitchInput = styled6.input.attrs({ type: "checkbox" })`
894
- appearance: none;
895
- display: inline-flex;
896
- position: relative;
897
- box-sizing: border-box;
898
- width: 28px;
899
- border: 2px solid transparent;
900
-
901
- transition-property: background-color, box-shadow;
902
- transition-duration: 0.2s;
903
- cursor: inherit;
904
-
905
- outline: none;
906
- border-radius: 16px;
907
- height: 16px;
908
- margin: 0;
909
- background-color: var(--charcoal-text4);
910
- :hover {
911
- background-color: var(--charcoal-text4-hover);
912
- }
913
- :active {
914
- background-color: var(--charcoal-text4-press);
915
- }
916
- ${focusVisibleFocusRingCss5}
917
-
918
- &::after {
919
- content: '';
920
- position: absolute;
921
- display: block;
922
- top: 0;
923
- left: 0;
924
- width: 12px;
925
- height: 12px;
926
- transform: translateX(0);
927
- transition: transform 0.2s;
928
- border-radius: 1024px;
929
- background-color: var(--charcoal-text5);
930
- :hover {
931
- background-color: var(--charcoal-text5-hover);
932
- }
933
- :active {
934
- background-color: var(--charcoal-text5-press);
935
- }
936
- }
937
-
938
- &:checked {
939
- background-color: var(--charcoal-brand);
940
- :hover {
941
- background-color: var(--charcoal-brand-hover);
942
- }
943
- :active {
944
- background-color: var(--charcoal-brand-press);
945
- }
946
- &::after {
947
- transform: translateX(12px);
948
- transition: transform 0.2s;
480
+ var SwitchCheckbox = forwardRef7(function SwitchCheckboxInner(props, external) {
481
+ const {
482
+ disabled,
483
+ className
484
+ } = props;
485
+ const ariaSwitchProps = useMemo(() => ({
486
+ ...props,
487
+ "aria-label": "children" in props ? void 0 : props.label,
488
+ isDisabled: props.disabled,
489
+ isSelected: props.checked
490
+ }), [props]);
491
+ const state = useToggleState(ariaSwitchProps);
492
+ const ref = useObjectRef(external);
493
+ const {
494
+ inputProps: {
495
+ className: _className,
496
+ type: _type,
497
+ ...rest
949
498
  }
950
- }
951
- `;
499
+ } = useSwitch(ariaSwitchProps, state, ref);
500
+ return /* @__PURE__ */ jsxs4(Label, { className, "aria-disabled": disabled, children: [
501
+ /* @__PURE__ */ jsx8(SwitchInput, { ...rest, ref }),
502
+ "children" in props ? /* @__PURE__ */ jsx8(LabelInner, { children: props.children }) : void 0
503
+ ] });
504
+ });
505
+ var Switch_default = memo3(SwitchCheckbox);
506
+ var Label = styled6.label.withConfig({
507
+ componentId: "ccl__sc-1wy6z5h-0"
508
+ })(["display:inline-grid;grid-template-columns:auto 1fr;align-items:center;cursor:pointer;outline:0;&:disabled,&[aria-disabled]:not([aria-disabled='false']){opacity:0.32;cursor:default;}"]);
509
+ var LabelInner = styled6.div.withConfig({
510
+ componentId: "ccl__sc-1wy6z5h-1"
511
+ })(["font-size:14px;line-height:22px;color:var(--charcoal-text2);margin-left:4px;"]);
512
+ var SwitchInput = styled6.input.attrs({
513
+ type: "checkbox"
514
+ }).withConfig({
515
+ componentId: "ccl__sc-1wy6z5h-2"
516
+ })(["appearance:none;display:inline-flex;position:relative;box-sizing:border-box;width:28px;border:2px solid transparent;transition-property:background-color,box-shadow;transition-duration:0.2s;cursor:inherit;outline:none;border-radius:16px;height:16px;margin:0;background-color:var(--charcoal-text4);:hover{background-color:var(--charcoal-text4-hover);}:active{background-color:var(--charcoal-text4-press);}", " &::after{content:'';position:absolute;display:block;top:0;left:0;width:12px;height:12px;transform:translateX(0);transition:transform 0.2s;border-radius:1024px;background-color:var(--charcoal-text5);:hover{background-color:var(--charcoal-text5-hover);}:active{background-color:var(--charcoal-text5-press);}}&:checked{background-color:var(--charcoal-brand);:hover{background-color:var(--charcoal-brand-hover);}:active{background-color:var(--charcoal-brand-press);}&::after{transform:translateX(12px);transition:transform 0.2s;}}"], focusVisibleFocusRingCss5);
952
517
 
953
518
  // src/components/TextField/index.tsx
954
519
  import { useTextField } from "@react-aria/textfield";
@@ -961,117 +526,34 @@ import styled8, { css as css4 } from "styled-components";
961
526
  import * as React4 from "react";
962
527
  import styled7 from "styled-components";
963
528
  import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
964
- var FieldLabel = React4.forwardRef(
965
- function FieldLabel2({
966
- style,
967
- className,
968
- label,
969
- required = false,
970
- requiredText,
971
- subLabel,
972
- ...labelProps
973
- }, ref) {
974
- return /* @__PURE__ */ jsxs5(FieldLabelWrapper, { style, className, children: [
975
- /* @__PURE__ */ jsx9(Label2, { ref, ...labelProps, children: label }),
976
- required && /* @__PURE__ */ jsx9(RequiredText, { children: requiredText }),
977
- /* @__PURE__ */ jsx9(SubLabelClickable, { children: /* @__PURE__ */ jsx9("span", { children: subLabel }) })
978
- ] });
979
- }
980
- );
529
+ var FieldLabel = React4.forwardRef(function FieldLabel2({
530
+ style,
531
+ className,
532
+ label,
533
+ required = false,
534
+ requiredText,
535
+ subLabel,
536
+ ...labelProps
537
+ }, ref) {
538
+ return /* @__PURE__ */ jsxs5(FieldLabelWrapper, { style, className, children: [
539
+ /* @__PURE__ */ jsx9(Label2, { ref, ...labelProps, children: label }),
540
+ required && /* @__PURE__ */ jsx9(RequiredText, { children: requiredText }),
541
+ /* @__PURE__ */ jsx9(SubLabelClickable, { children: /* @__PURE__ */ jsx9("span", { children: subLabel }) })
542
+ ] });
543
+ });
981
544
  var FieldLabel_default = FieldLabel;
982
- var Label2 = styled7.label`
983
- font-size: 14px;
984
- line-height: 22px;
985
- font-weight: bold;
986
- display: flow-root;
987
- color: var(--charcoal-text1);
988
-
989
- &::before {
990
- display: block;
991
- width: 0;
992
- height: 0;
993
- content: '';
994
- margin-top: -4px;
995
- }
996
- &::after {
997
- display: block;
998
- width: 0;
999
- height: 0;
1000
- content: '';
1001
- margin-bottom: -4px;
1002
- }
1003
- `;
1004
- var RequiredText = styled7.span`
1005
- font-size: 14px;
1006
- line-height: 22px;
1007
- display: flow-root;
1008
- color: var(--charcoal-text2);
1009
-
1010
- &::before {
1011
- display: block;
1012
- width: 0;
1013
- height: 0;
1014
- content: '';
1015
- margin-top: -4px;
1016
- }
1017
- &::after {
1018
- display: block;
1019
- width: 0;
1020
- height: 0;
1021
- content: '';
1022
- margin-bottom: -4px;
1023
- }
1024
- `;
1025
- var SubLabelClickable = styled7.div`
1026
- font-size: 14px;
1027
- line-height: 22px;
1028
- display: flow-root;
1029
- color: var(--charcoal-text3);
1030
- transition: 0.2s color, 0.2s box-shadow;
1031
-
1032
- &::before {
1033
- display: block;
1034
- width: 0;
1035
- height: 0;
1036
- content: '';
1037
- margin-top: -4px;
1038
- }
1039
- &::after {
1040
- display: block;
1041
- width: 0;
1042
- height: 0;
1043
- content: '';
1044
- margin-bottom: -4px;
1045
- }
1046
-
1047
- &:not(:disabled):not([aria-disabled]),
1048
- &[aria-disabled='false'] {
1049
- &:hover {
1050
- color: var(--charcoal-text3-hover);
1051
- }
1052
- &:active {
1053
- color: var(--charcoal-text3-press);
1054
- }
1055
- &:active,
1056
- &:focus,
1057
- &:focus-visible {
1058
- outline: none;
1059
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1060
- }
1061
- }
1062
- `;
1063
- var FieldLabelWrapper = styled7.div`
1064
- display: inline-flex;
1065
- align-items: center;
1066
-
1067
- > ${RequiredText} {
1068
- margin-left: 4px;
1069
- }
1070
-
1071
- > ${SubLabelClickable} {
1072
- margin-left: auto;
1073
- }
1074
- `;
545
+ var Label2 = styled7.label.withConfig({
546
+ componentId: "ccl__sc-1iotshb-0"
547
+ })(["font-size:14px;line-height:22px;font-weight:bold;display:flow-root;color:var(--charcoal-text1);&::before{display:block;width:0;height:0;content:'';margin-top:-4px;}&::after{display:block;width:0;height:0;content:'';margin-bottom:-4px;}"]);
548
+ var RequiredText = styled7.span.withConfig({
549
+ componentId: "ccl__sc-1iotshb-1"
550
+ })(["font-size:14px;line-height:22px;display:flow-root;color:var(--charcoal-text2);&::before{display:block;width:0;height:0;content:'';margin-top:-4px;}&::after{display:block;width:0;height:0;content:'';margin-bottom:-4px;}"]);
551
+ var SubLabelClickable = styled7.div.withConfig({
552
+ componentId: "ccl__sc-1iotshb-2"
553
+ })(["font-size:14px;line-height:22px;display:flow-root;color:var(--charcoal-text3);transition:0.2s color,0.2s box-shadow;&::before{display:block;width:0;height:0;content:'';margin-top:-4px;}&::after{display:block;width:0;height:0;content:'';margin-bottom:-4px;}&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{&:hover{color:var(--charcoal-text3-hover);}&:active{color:var(--charcoal-text3-press);}&:active,&:focus,&:focus-visible{outline:none;box-shadow:0 0 0 4px rgba(0,150,250,0.32);}}"]);
554
+ var FieldLabelWrapper = styled7.div.withConfig({
555
+ componentId: "ccl__sc-1iotshb-3"
556
+ })(["display:inline-flex;align-items:center;> ", "{margin-left:4px;}> ", "{margin-left:auto;}"], RequiredText, SubLabelClickable);
1075
557
 
1076
558
  // src/components/TextField/useFocusWithClick.tsx
1077
559
  import { useEffect } from "react";
@@ -1093,417 +575,234 @@ function useFocusWithClick(containerRef, inputRef) {
1093
575
  }
1094
576
 
1095
577
  // src/components/TextField/index.tsx
578
+ import { mergeProps } from "@react-aria/utils";
1096
579
  import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
1097
- var TextField = React5.forwardRef(
1098
- function SingleLineTextFieldInner({ onChange, ...props }, forwardRef18) {
1099
- const {
1100
- className,
1101
- showLabel = false,
1102
- showCount = false,
1103
- label,
1104
- requiredText,
1105
- subLabel,
1106
- disabled = false,
1107
- required,
1108
- invalid = false,
1109
- assistiveText,
1110
- maxLength,
1111
- prefix = null,
1112
- suffix = null
1113
- } = props;
1114
- const { visuallyHiddenProps } = useVisuallyHidden();
1115
- const ariaRef = useRef(null);
1116
- const [count, setCount] = useState(
1117
- countCodePointsInString(props.value ?? "")
1118
- );
1119
- const nonControlled = props.value === void 0;
1120
- const handleChange = useCallback3(
1121
- (value) => {
1122
- const count2 = countCodePointsInString(value);
1123
- if (maxLength !== void 0 && count2 > maxLength) {
1124
- return;
1125
- }
1126
- if (nonControlled) {
1127
- setCount(count2);
1128
- }
1129
- onChange?.(value);
1130
- },
1131
- [maxLength, nonControlled, onChange]
1132
- );
1133
- useEffect2(() => {
1134
- setCount(countCodePointsInString(props.value ?? ""));
1135
- }, [props.value]);
1136
- const { inputProps, labelProps, descriptionProps, errorMessageProps } = useTextField(
1137
- {
1138
- inputElementType: "input",
1139
- isDisabled: disabled,
1140
- isRequired: required,
1141
- validationState: invalid ? "invalid" : "valid",
1142
- description: !invalid && assistiveText,
1143
- errorMessage: invalid && assistiveText,
1144
- onChange: handleChange,
1145
- ...props
1146
- },
1147
- ariaRef
1148
- );
1149
- const containerRef = useRef(null);
1150
- useFocusWithClick(containerRef, ariaRef);
1151
- return /* @__PURE__ */ jsxs6(TextFieldRoot, { className, isDisabled: disabled, children: [
1152
- /* @__PURE__ */ jsx10(
1153
- TextFieldLabel,
1154
- {
1155
- label,
1156
- requiredText,
1157
- required,
1158
- subLabel,
1159
- ...labelProps,
1160
- ...!showLabel ? visuallyHiddenProps : {}
1161
- }
1162
- ),
1163
- /* @__PURE__ */ jsxs6(
1164
- StyledInputContainer,
1165
- {
1166
- ref: containerRef,
1167
- invalid,
1168
- "aria-disabled": disabled === true ? true : void 0,
1169
- hasPrefix: prefix != null,
1170
- hasSuffix: suffix != null || showCount,
1171
- children: [
1172
- prefix && /* @__PURE__ */ jsx10(PrefixContainer, { children: prefix }),
1173
- /* @__PURE__ */ jsx10(
1174
- StyledInput,
1175
- {
1176
- ref: mergeRefs(forwardRef18, ariaRef),
1177
- invalid,
1178
- ...inputProps
1179
- }
1180
- ),
1181
- (suffix || showCount) && /* @__PURE__ */ jsxs6(SuffixContainer, { children: [
1182
- suffix,
1183
- showCount && /* @__PURE__ */ jsx10(SingleLineCounter, { children: maxLength !== void 0 ? `${count}/${maxLength}` : count })
1184
- ] })
1185
- ]
1186
- }
1187
- ),
1188
- assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ jsx10(
1189
- AssistiveText,
1190
- {
1191
- invalid,
1192
- ...invalid ? errorMessageProps : descriptionProps,
1193
- children: assistiveText
1194
- }
1195
- )
1196
- ] });
1197
- }
1198
- );
580
+ var TextField = React5.forwardRef(function SingleLineTextFieldInner({
581
+ onChange,
582
+ ...props
583
+ }, forwardRef18) {
584
+ const {
585
+ className,
586
+ showLabel = false,
587
+ showCount = false,
588
+ label,
589
+ requiredText,
590
+ subLabel,
591
+ disabled = false,
592
+ required,
593
+ invalid = false,
594
+ assistiveText,
595
+ maxLength,
596
+ prefix = null,
597
+ suffix = null,
598
+ ...restProps
599
+ } = props;
600
+ const {
601
+ visuallyHiddenProps
602
+ } = useVisuallyHidden();
603
+ const ariaRef = useRef(null);
604
+ const [count, setCount] = useState(countCodePointsInString(props.value ?? ""));
605
+ const nonControlled = props.value === void 0;
606
+ const handleChange = useCallback3((value) => {
607
+ const count2 = countCodePointsInString(value);
608
+ if (maxLength !== void 0 && count2 > maxLength) {
609
+ return;
610
+ }
611
+ if (nonControlled) {
612
+ setCount(count2);
613
+ }
614
+ onChange?.(value);
615
+ }, [maxLength, nonControlled, onChange]);
616
+ useEffect2(() => {
617
+ setCount(countCodePointsInString(props.value ?? ""));
618
+ }, [props.value]);
619
+ const {
620
+ inputProps: ariaInputProps,
621
+ labelProps,
622
+ descriptionProps,
623
+ errorMessageProps
624
+ } = useTextField({
625
+ inputElementType: "input",
626
+ isDisabled: disabled,
627
+ isRequired: required,
628
+ validationState: invalid ? "invalid" : "valid",
629
+ description: !invalid && assistiveText,
630
+ errorMessage: invalid && assistiveText,
631
+ onChange: handleChange,
632
+ ...props
633
+ }, ariaRef);
634
+ const containerRef = useRef(null);
635
+ useFocusWithClick(containerRef, ariaRef);
636
+ const inputProps = mergeProps(restProps, ariaInputProps);
637
+ return /* @__PURE__ */ jsxs6(TextFieldRoot, { className, isDisabled: disabled, children: [
638
+ /* @__PURE__ */ jsx10(TextFieldLabel, { label, requiredText, required, subLabel, ...labelProps, ...!showLabel ? visuallyHiddenProps : {} }),
639
+ /* @__PURE__ */ jsxs6(StyledInputContainer, { ref: containerRef, invalid, "aria-disabled": disabled === true ? true : void 0, hasPrefix: prefix != null, hasSuffix: suffix != null || showCount, children: [
640
+ prefix && /* @__PURE__ */ jsx10(PrefixContainer, { children: prefix }),
641
+ /* @__PURE__ */ jsx10(StyledInput, { ref: mergeRefs(forwardRef18, ariaRef), invalid, ...inputProps }),
642
+ (suffix || showCount) && /* @__PURE__ */ jsxs6(SuffixContainer, { children: [
643
+ suffix,
644
+ showCount && /* @__PURE__ */ jsx10(SingleLineCounter, { children: maxLength !== void 0 ? `${count}/${maxLength}` : count })
645
+ ] })
646
+ ] }),
647
+ assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ jsx10(AssistiveText, { invalid, ...invalid ? errorMessageProps : descriptionProps, children: assistiveText })
648
+ ] });
649
+ });
1199
650
  var TextField_default = TextField;
1200
- var TextFieldRoot = styled8.div`
1201
- display: flex;
1202
- flex-direction: column;
1203
-
1204
- ${(p) => p.isDisabled && { opacity: p.theme.elementEffect.disabled.opacity }}
1205
- `;
1206
- var TextFieldLabel = styled8(FieldLabel_default)`
1207
- margin-bottom: 8px;
1208
- `;
1209
- var StyledInputContainer = styled8.div`
1210
- display: grid;
1211
- grid-template-columns: ${(p) => [p.hasPrefix && "auto", "1fr", p.hasSuffix && "auto"].filter(Boolean).join(" ")};
1212
- height: 40px;
1213
- transition: 0.2s background-color, 0.2s box-shadow;
1214
- color: var(--charcoal-text2);
1215
- background-color: var(--charcoal-surface3);
1216
- border-radius: 4px;
1217
- gap: 4px;
1218
- padding: 0 8px;
1219
- line-height: 22px;
1220
- font-size: 14px;
1221
-
1222
- :not(:disabled):not([aria-disabled]):hover,
1223
- [aria-disabled='false']:hover {
1224
- background-color: var(--charcoal-surface3-hover);
1225
- }
1226
-
1227
- :focus-within {
1228
- outline: none;
1229
- box-shadow: 0 0 0 4px
1230
- ${(p) => p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`};
1231
- }
1232
-
1233
- ${(p) => p.invalid && css4`
1234
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
1235
- `}
1236
- `;
1237
- var PrefixContainer = styled8.div`
1238
- display: flex;
1239
- align-items: center;
1240
- `;
1241
- var SuffixContainer = styled8.span`
1242
- display: flex;
1243
- align-items: center;
1244
- gap: 8px;
1245
- `;
1246
- var StyledInput = styled8.input`
1247
- border: none;
1248
- box-sizing: border-box;
1249
- outline: none;
1250
- font-family: inherit;
1251
-
1252
- /* Prevent zooming for iOS Safari */
1253
- transform-origin: top left;
1254
- transform: scale(0.875);
1255
- width: calc(100% / 0.875);
1256
- height: calc(100% / 0.875);
1257
- font-size: calc(14px / 0.875);
1258
- line-height: calc(22px / 0.875);
1259
- padding-left: 0;
1260
- padding-right: 0;
1261
- border-radius: calc(4px / 0.875);
1262
-
1263
- /* Display box-shadow for iOS Safari */
1264
- appearance: none;
1265
- background: transparent;
1266
-
1267
- color: var(--charcoal-text2);
1268
- &::placeholder {
1269
- color: var(--charcoal-text3);
1270
- }
1271
- `;
1272
- var SingleLineCounter = styled8.span`
1273
- line-height: 22px;
1274
- font-size: 14px;
1275
- color: var(--charcoal-text3);
1276
- `;
1277
- var AssistiveText = styled8.p`
1278
- font-size: 14px;
1279
- line-height: 22px;
1280
- margin-top: 4px;
1281
- margin-bottom: -4px;
1282
- color: ${(p) => `var(--charcoal-${p.invalid ? `assertive` : `text2`})`};
1283
- `;
651
+ var TextFieldRoot = styled8.div.withConfig({
652
+ componentId: "ccl__sc-3dd0tt-0"
653
+ })(["display:flex;flex-direction:column;", ""], (p) => p.isDisabled && {
654
+ opacity: p.theme.elementEffect.disabled.opacity
655
+ });
656
+ var TextFieldLabel = styled8(FieldLabel_default).withConfig({
657
+ componentId: "ccl__sc-3dd0tt-1"
658
+ })(["margin-bottom:8px;"]);
659
+ var StyledInputContainer = styled8.div.withConfig({
660
+ componentId: "ccl__sc-3dd0tt-2"
661
+ })(["display:grid;grid-template-columns:", ";height:40px;transition:0.2s background-color,0.2s box-shadow;color:var(--charcoal-text2);background-color:var(--charcoal-surface3);border-radius:4px;gap:4px;padding:0 8px;line-height:22px;font-size:14px;:not(:disabled):not([aria-disabled]):hover,[aria-disabled='false']:hover{background-color:var(--charcoal-surface3-hover);}:focus-within{outline:none;box-shadow:0 0 0 4px ", ";}", ""], (p) => [p.hasPrefix && "auto", "1fr", p.hasSuffix && "auto"].filter(Boolean).join(" "), (p) => p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`, (p) => p.invalid && css4(["box-shadow:0 0 0 4px rgba(255,43,0,0.32);"]));
662
+ var PrefixContainer = styled8.div.withConfig({
663
+ componentId: "ccl__sc-3dd0tt-3"
664
+ })(["display:flex;align-items:center;"]);
665
+ var SuffixContainer = styled8.span.withConfig({
666
+ componentId: "ccl__sc-3dd0tt-4"
667
+ })(["display:flex;align-items:center;gap:8px;"]);
668
+ var StyledInput = styled8.input.withConfig({
669
+ componentId: "ccl__sc-3dd0tt-5"
670
+ })(["border:none;box-sizing:border-box;outline:none;font-family:inherit;transform-origin:top left;transform:scale(0.875);width:calc(100% / 0.875);height:calc(100% / 0.875);font-size:calc(14px / 0.875);line-height:calc(22px / 0.875);padding-left:0;padding-right:0;border-radius:calc(4px / 0.875);appearance:none;background:transparent;color:var(--charcoal-text2);&::placeholder{color:var(--charcoal-text3);}"]);
671
+ var SingleLineCounter = styled8.span.withConfig({
672
+ componentId: "ccl__sc-3dd0tt-6"
673
+ })(["line-height:22px;font-size:14px;color:var(--charcoal-text3);"]);
674
+ var AssistiveText = styled8.p.withConfig({
675
+ componentId: "ccl__sc-3dd0tt-7"
676
+ })(["font-size:14px;line-height:22px;margin-top:4px;margin-bottom:-4px;color:", ";"], (p) => `var(--charcoal-${p.invalid ? `assertive` : `text2`})`);
1284
677
 
1285
678
  // src/components/TextArea/index.tsx
1286
679
  import { useTextField as useTextField2 } from "@react-aria/textfield";
1287
680
  import { useVisuallyHidden as useVisuallyHidden2 } from "@react-aria/visually-hidden";
1288
681
  import { forwardRef as forwardRef10, useCallback as useCallback4, useEffect as useEffect3, useRef as useRef2, useState as useState2 } from "react";
1289
682
  import styled9, { css as css5 } from "styled-components";
683
+ import { mergeProps as mergeProps2 } from "@react-aria/utils";
1290
684
  import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
1291
- var TextArea = forwardRef10(
1292
- function TextAreaInner({ onChange, ...props }, forwardRef18) {
1293
- const {
1294
- className,
1295
- showCount = false,
1296
- showLabel = false,
1297
- label,
1298
- requiredText,
1299
- subLabel,
1300
- disabled = false,
1301
- required,
1302
- invalid = false,
1303
- assistiveText,
1304
- maxLength,
1305
- autoHeight = false,
1306
- rows: initialRows = 4
1307
- } = props;
1308
- const { visuallyHiddenProps } = useVisuallyHidden2();
1309
- const textareaRef = useRef2(null);
1310
- const ariaRef = useRef2(null);
1311
- const [count, setCount] = useState2(
1312
- countCodePointsInString(props.value ?? "")
1313
- );
1314
- const [rows, setRows] = useState2(initialRows);
1315
- const syncHeight = useCallback4(
1316
- (textarea) => {
1317
- const rows2 = (`${textarea.value}
685
+ var TextArea = forwardRef10(function TextAreaInner({
686
+ onChange,
687
+ ...props
688
+ }, forwardRef18) {
689
+ const {
690
+ className,
691
+ showCount = false,
692
+ showLabel = false,
693
+ label,
694
+ requiredText,
695
+ subLabel,
696
+ disabled = false,
697
+ required,
698
+ invalid = false,
699
+ assistiveText,
700
+ maxLength,
701
+ autoHeight = false,
702
+ rows: initialRows = 4,
703
+ ...restProps
704
+ } = props;
705
+ const {
706
+ visuallyHiddenProps
707
+ } = useVisuallyHidden2();
708
+ const textareaRef = useRef2(null);
709
+ const ariaRef = useRef2(null);
710
+ const [count, setCount] = useState2(countCodePointsInString(props.value ?? ""));
711
+ const [rows, setRows] = useState2(initialRows);
712
+ const syncHeight = useCallback4((textarea) => {
713
+ const rows2 = (`${textarea.value}
1318
714
  `.match(/\n/gu)?.length ?? 0) || 1;
1319
- setRows(initialRows <= rows2 ? rows2 : initialRows);
1320
- },
1321
- [initialRows]
1322
- );
1323
- const nonControlled = props.value === void 0;
1324
- const handleChange = useCallback4(
1325
- (value) => {
1326
- const count2 = countCodePointsInString(value);
1327
- if (maxLength !== void 0 && count2 > maxLength) {
1328
- return;
1329
- }
1330
- if (nonControlled) {
1331
- setCount(count2);
1332
- }
1333
- if (autoHeight && textareaRef.current !== null) {
1334
- syncHeight(textareaRef.current);
1335
- }
1336
- onChange?.(value);
1337
- },
1338
- [autoHeight, maxLength, nonControlled, onChange, syncHeight]
1339
- );
1340
- useEffect3(() => {
1341
- setCount(countCodePointsInString(props.value ?? ""));
1342
- }, [props.value]);
1343
- const { inputProps, labelProps, descriptionProps, errorMessageProps } = useTextField2(
1344
- {
1345
- inputElementType: "textarea",
1346
- isDisabled: disabled,
1347
- isRequired: required,
1348
- validationState: invalid ? "invalid" : "valid",
1349
- description: !invalid && assistiveText,
1350
- errorMessage: invalid && assistiveText,
1351
- onChange: handleChange,
1352
- ...props
1353
- },
1354
- ariaRef
1355
- );
1356
- useEffect3(() => {
1357
- if (autoHeight && textareaRef.current !== null) {
1358
- syncHeight(textareaRef.current);
1359
- }
1360
- }, [autoHeight, syncHeight]);
1361
- const containerRef = useRef2(null);
1362
- useFocusWithClick(containerRef, ariaRef);
1363
- return /* @__PURE__ */ jsxs7(TextFieldRoot2, { className, isDisabled: disabled, children: [
1364
- /* @__PURE__ */ jsx11(
1365
- TextFieldLabel,
1366
- {
1367
- label,
1368
- requiredText,
1369
- required,
1370
- subLabel,
1371
- ...labelProps,
1372
- ...!showLabel ? visuallyHiddenProps : {}
1373
- }
1374
- ),
1375
- /* @__PURE__ */ jsxs7(
1376
- StyledTextareaContainer,
1377
- {
1378
- ref: containerRef,
1379
- invalid,
1380
- rows: showCount ? rows + 1 : rows,
1381
- "aria-disabled": disabled === true ? "true" : void 0,
1382
- children: [
1383
- /* @__PURE__ */ jsx11(
1384
- StyledTextarea,
1385
- {
1386
- ref: mergeRefs(textareaRef, forwardRef18, ariaRef),
1387
- rows,
1388
- noBottomPadding: showCount,
1389
- ...inputProps
1390
- }
1391
- ),
1392
- showCount && /* @__PURE__ */ jsx11(MultiLineCounter, { children: maxLength !== void 0 ? `${count}/${maxLength}` : count })
1393
- ]
1394
- }
1395
- ),
1396
- assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ jsx11(
1397
- AssistiveText,
1398
- {
1399
- invalid,
1400
- ...invalid ? errorMessageProps : descriptionProps,
1401
- children: assistiveText
1402
- }
1403
- )
1404
- ] });
1405
- }
1406
- );
715
+ setRows(initialRows <= rows2 ? rows2 : initialRows);
716
+ }, [initialRows]);
717
+ const nonControlled = props.value === void 0;
718
+ const handleChange = useCallback4((value) => {
719
+ const count2 = countCodePointsInString(value);
720
+ if (maxLength !== void 0 && count2 > maxLength) {
721
+ return;
722
+ }
723
+ if (nonControlled) {
724
+ setCount(count2);
725
+ }
726
+ if (autoHeight && textareaRef.current !== null) {
727
+ syncHeight(textareaRef.current);
728
+ }
729
+ onChange?.(value);
730
+ }, [autoHeight, maxLength, nonControlled, onChange, syncHeight]);
731
+ useEffect3(() => {
732
+ setCount(countCodePointsInString(props.value ?? ""));
733
+ }, [props.value]);
734
+ const {
735
+ inputProps: ariaInputProps,
736
+ labelProps,
737
+ descriptionProps,
738
+ errorMessageProps
739
+ } = useTextField2({
740
+ inputElementType: "textarea",
741
+ isDisabled: disabled,
742
+ isRequired: required,
743
+ validationState: invalid ? "invalid" : "valid",
744
+ description: !invalid && assistiveText,
745
+ errorMessage: invalid && assistiveText,
746
+ onChange: handleChange,
747
+ ...props
748
+ }, ariaRef);
749
+ useEffect3(() => {
750
+ if (autoHeight && textareaRef.current !== null) {
751
+ syncHeight(textareaRef.current);
752
+ }
753
+ }, [autoHeight, syncHeight]);
754
+ const containerRef = useRef2(null);
755
+ useFocusWithClick(containerRef, ariaRef);
756
+ const inputProps = mergeProps2(restProps, ariaInputProps);
757
+ return /* @__PURE__ */ jsxs7(TextFieldRoot2, { className, isDisabled: disabled, children: [
758
+ /* @__PURE__ */ jsx11(TextFieldLabel, { label, requiredText, required, subLabel, ...labelProps, ...!showLabel ? visuallyHiddenProps : {} }),
759
+ /* @__PURE__ */ jsxs7(StyledTextareaContainer, { ref: containerRef, invalid, rows: showCount ? rows + 1 : rows, "aria-disabled": disabled === true ? "true" : void 0, children: [
760
+ /* @__PURE__ */ jsx11(StyledTextarea, { ref: mergeRefs(textareaRef, forwardRef18, ariaRef), rows, noBottomPadding: showCount, ...inputProps }),
761
+ showCount && /* @__PURE__ */ jsx11(MultiLineCounter, { children: maxLength !== void 0 ? `${count}/${maxLength}` : count })
762
+ ] }),
763
+ assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ jsx11(AssistiveText, { invalid, ...invalid ? errorMessageProps : descriptionProps, children: assistiveText })
764
+ ] });
765
+ });
1407
766
  var TextArea_default = TextArea;
1408
- var TextFieldRoot2 = styled9.div`
1409
- display: flex;
1410
- flex-direction: column;
1411
-
1412
- ${(p) => p.isDisabled && { opacity: p.theme.elementEffect.disabled.opacity }}
1413
- `;
1414
- var StyledTextareaContainer = styled9.div`
1415
- position: relative;
1416
- overflow: hidden;
1417
-
1418
- color: var(--charcoal-text2);
1419
- background-color: var(--charcoal-surface3);
1420
- border-radius: 4px;
1421
- transition: 0.2s background-color, 0.2s box-shadow;
1422
-
1423
- ${({ rows }) => css5`
1424
- height: calc(22px * ${rows} + 18px);
1425
- `};
1426
-
1427
- :not([aria-disabled]):hover,
1428
- [aria-disabled='false']:hover {
1429
- background-color: var(--charcoal-surface3-hover);
1430
- }
1431
- :focus-within {
1432
- outline: none;
1433
- box-shadow: 0 0 0 4px
1434
- ${(p) => p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`};
1435
- }
1436
-
1437
- ${(p) => p.invalid && css5`
1438
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
1439
- `}
1440
- `;
1441
- var StyledTextarea = styled9.textarea`
1442
- border: none;
1443
- outline: none;
1444
- resize: none;
1445
- font-family: inherit;
1446
- color: inherit;
1447
- box-sizing: border-box;
1448
-
1449
- /* Prevent zooming for iOS Safari */
1450
- transform-origin: top left;
1451
- transform: scale(0.875);
1452
- width: calc(100% / 0.875);
1453
- font-size: calc(14px / 0.875);
1454
- line-height: calc(22px / 0.875);
1455
- padding: calc(9px / 0.875) calc(8px / 0.875)
1456
- ${(p) => p.noBottomPadding ? 0 : ""};
1457
-
1458
- ${({ rows = 1, noBottomPadding }) => css5`
1459
- height: calc(22px / 0.875 * ${rows} + ${noBottomPadding ? 9 : 20}px);
1460
- `};
1461
-
1462
- /* Display box-shadow for iOS Safari */
1463
- appearance: none;
1464
-
1465
- background: none;
1466
-
1467
- &::placeholder {
1468
- color: var(--charcoal-text3);
1469
- }
1470
- `;
1471
- var MultiLineCounter = styled9.span`
1472
- position: absolute;
1473
- bottom: 9px;
1474
- right: 8px;
1475
-
1476
- line-height: 22px;
1477
- font-size: 14px;
1478
- color: var(--charcoal-text3);
1479
- `;
767
+ var TextFieldRoot2 = styled9.div.withConfig({
768
+ componentId: "ccl__sc-58waht-0"
769
+ })(["display:flex;flex-direction:column;", ""], (p) => p.isDisabled && {
770
+ opacity: p.theme.elementEffect.disabled.opacity
771
+ });
772
+ var StyledTextareaContainer = styled9.div.withConfig({
773
+ componentId: "ccl__sc-58waht-1"
774
+ })(["position:relative;overflow:hidden;color:var(--charcoal-text2);background-color:var(--charcoal-surface3);border-radius:4px;transition:0.2s background-color,0.2s box-shadow;", ";:not([aria-disabled]):hover,[aria-disabled='false']:hover{background-color:var(--charcoal-surface3-hover);}:focus-within{outline:none;box-shadow:0 0 0 4px ", ";}", ""], ({
775
+ rows
776
+ }) => css5(["height:calc(22px * ", " + 18px);"], rows), (p) => p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`, (p) => p.invalid && css5(["box-shadow:0 0 0 4px rgba(255,43,0,0.32);"]));
777
+ var StyledTextarea = styled9.textarea.withConfig({
778
+ componentId: "ccl__sc-58waht-2"
779
+ })(["border:none;outline:none;resize:none;font-family:inherit;color:inherit;box-sizing:border-box;transform-origin:top left;transform:scale(0.875);width:calc(100% / 0.875);font-size:calc(14px / 0.875);line-height:calc(22px / 0.875);padding:calc(9px / 0.875) calc(8px / 0.875) ", ";", ";appearance:none;background:none;&::placeholder{color:var(--charcoal-text3);}"], (p) => p.noBottomPadding ? 0 : "", ({
780
+ rows = 1,
781
+ noBottomPadding
782
+ }) => css5(["height:calc(22px / 0.875 * ", " + ", "px);"], rows, noBottomPadding ? 9 : 20));
783
+ var MultiLineCounter = styled9.span.withConfig({
784
+ componentId: "ccl__sc-58waht-3"
785
+ })(["position:absolute;bottom:9px;right:8px;line-height:22px;font-size:14px;color:var(--charcoal-text3);"]);
1480
786
 
1481
787
  // src/components/Icon/index.tsx
1482
788
  import * as React6 from "react";
1483
789
  import "@charcoal-ui/icons";
1484
790
  import { jsx as jsx12 } from "react/jsx-runtime";
1485
- var Icon = React6.forwardRef(function IconInner({ name, scale, unsafeNonGuidelineScale, className, ...rest }, ref) {
1486
- return /* @__PURE__ */ jsx12(
1487
- "pixiv-icon",
1488
- {
1489
- ref,
1490
- name,
1491
- scale,
1492
- "unsafe-non-guideline-scale": unsafeNonGuidelineScale,
1493
- class: className,
1494
- ...rest
1495
- }
1496
- );
791
+ var Icon = React6.forwardRef(function IconInner({
792
+ name,
793
+ scale,
794
+ unsafeNonGuidelineScale,
795
+ className,
796
+ ...rest
797
+ }, ref) {
798
+ return /* @__PURE__ */ jsx12("pixiv-icon", { ref, name, scale, "unsafe-non-guideline-scale": unsafeNonGuidelineScale, class: className, ...rest });
1497
799
  });
1498
800
  var Icon_default = Icon;
1499
801
 
1500
802
  // src/components/Modal/index.tsx
1501
803
  import { useContext as useContext4, forwardRef as forwardRef13, memo as memo4 } from "react";
1502
- import * as React9 from "react";
1503
- import {
1504
- Overlay,
1505
- useModalOverlay
1506
- } from "@react-aria/overlays";
804
+ import * as React10 from "react";
805
+ import { Overlay } from "@react-aria/overlays";
1507
806
  import styled11, { css as css7, useTheme } from "styled-components";
1508
807
  import { maxWidth as maxWidth2 } from "@charcoal-ui/utils";
1509
808
  import { useMedia } from "@charcoal-ui/styled";
@@ -1546,29 +845,16 @@ function useForwardedRef(ref) {
1546
845
  import { jsx as jsx13 } from "react/jsx-runtime";
1547
846
  var Dialog = forwardRef12(function Dialog2(props, forwardRef18) {
1548
847
  const ref = useForwardedRef(forwardRef18);
1549
- const { dialogProps } = useDialog(
1550
- {
1551
- role: "dialog"
1552
- },
1553
- ref
1554
- );
1555
- return /* @__PURE__ */ jsx13(
1556
- AnimatedStyledDialogDiv,
1557
- {
1558
- ...props,
1559
- role: dialogProps.role,
1560
- tabIndex: dialogProps.tabIndex,
1561
- "aria-labelledby": dialogProps["aria-labelledby"],
1562
- onBlur: dialogProps.onBlur,
1563
- ref
1564
- }
1565
- );
848
+ const {
849
+ dialogProps
850
+ } = useDialog({
851
+ role: "dialog"
852
+ }, ref);
853
+ return /* @__PURE__ */ jsx13(AnimatedStyledDialogDiv, { ...props, role: dialogProps.role, tabIndex: dialogProps.tabIndex, "aria-labelledby": dialogProps["aria-labelledby"], onBlur: dialogProps.onBlur, ref });
1566
854
  });
1567
- var AnimatedStyledDialogDiv = animated(styled10.div`
1568
- margin: auto;
1569
- position: relative;
1570
- height: fit-content;
1571
- width: ${(p) => {
855
+ var AnimatedStyledDialogDiv = animated(styled10.div.withConfig({
856
+ componentId: "ccl__sc-1ep4f6v-0"
857
+ })(["margin:auto;position:relative;height:fit-content;width:", "px;background-color:var(--charcoal-surface1);border-radius:24px;@media ", "{max-width:440px;width:calc(100% - 48px);", "}:focus{outline:none;}"], (p) => {
1572
858
  switch (p.size) {
1573
859
  case "S": {
1574
860
  return columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
@@ -1583,39 +869,51 @@ var AnimatedStyledDialogDiv = animated(styled10.div`
1583
869
  return unreachable(p.size);
1584
870
  }
1585
871
  }
1586
- }}px;
1587
-
1588
- background-color: var(--charcoal-surface1);
1589
- border-radius: 24px;
1590
-
1591
- @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {
1592
- max-width: 440px;
1593
- width: calc(100% - 48px);
1594
- ${(p) => p.bottomSheet !== false && css6`
1595
- max-width: unset;
1596
- width: 100%;
1597
- border-radius: 0;
1598
- margin: auto 0 0 0;
1599
- ${p.bottomSheet === "full" && css6`
1600
- min-height: 100%;
1601
- `}
1602
- `}
1603
- }
1604
- :focus {
1605
- outline: none;
1606
- }
1607
- `);
872
+ }, ({
873
+ theme
874
+ }) => maxWidth(theme.breakpoint.screen1), (p) => p.bottomSheet !== false && css6(["max-width:unset;width:100%;border-radius:0;margin:auto 0 0 0;", ""], p.bottomSheet === "full" && css6(["min-height:100%;"]))));
1608
875
 
1609
876
  // src/components/Modal/ModalBackgroundContext.tsx
1610
877
  import * as React8 from "react";
1611
- var ModalBackgroundContext = React8.createContext(
1612
- null
1613
- );
878
+ var ModalBackgroundContext = React8.createContext(null);
879
+
880
+ // src/components/Modal/useCustomModalOverlay.tsx
881
+ import * as React9 from "react";
882
+ import { ariaHideOutside, useOverlay, useOverlayFocusContain, usePreventScroll } from "@react-aria/overlays";
883
+ function useCharcoalModalOverlay(props, state, ref) {
884
+ const {
885
+ overlayProps,
886
+ underlayProps
887
+ } = useOverlay({
888
+ ...props,
889
+ isOpen: state.isOpen,
890
+ onClose: state.onClose,
891
+ shouldCloseOnInteractOutside: () => false
892
+ }, ref);
893
+ usePreventScroll({
894
+ isDisabled: !state.isOpen
895
+ });
896
+ useOverlayFocusContain();
897
+ React9.useEffect(() => {
898
+ if (state.isOpen && ref.current) {
899
+ return ariaHideOutside([ref.current]);
900
+ }
901
+ }, [state.isOpen, ref]);
902
+ return {
903
+ modalProps: overlayProps,
904
+ underlayProps
905
+ };
906
+ }
1614
907
 
1615
908
  // src/components/Modal/index.tsx
1616
909
  import { jsx as jsx14, jsxs as jsxs8 } from "react/jsx-runtime";
1617
910
  var DEFAULT_Z_INDEX = 10;
1618
- var Modal = forwardRef13(function ModalInner({ children, zIndex = DEFAULT_Z_INDEX, portalContainer, ...props }, external) {
911
+ var Modal = forwardRef13(function ModalInner({
912
+ children,
913
+ zIndex = DEFAULT_Z_INDEX,
914
+ portalContainer,
915
+ ...props
916
+ }, external) {
1619
917
  const {
1620
918
  title,
1621
919
  size = "M",
@@ -1626,23 +924,16 @@ var Modal = forwardRef13(function ModalInner({ children, zIndex = DEFAULT_Z_INDE
1626
924
  isOpen = false
1627
925
  } = props;
1628
926
  const ref = useObjectRef2(external);
1629
- const { modalProps, underlayProps } = useModalOverlay(
1630
- {
1631
- ...props,
1632
- isKeyboardDismissDisabled: isDismissable === void 0 || isDismissable === false
1633
- },
1634
- {
1635
- close: onClose,
1636
- isOpen,
1637
- open: () => {
1638
- },
1639
- setOpen: () => {
1640
- },
1641
- toggle: () => {
1642
- }
1643
- },
1644
- ref
1645
- );
927
+ const {
928
+ modalProps,
929
+ underlayProps
930
+ } = useCharcoalModalOverlay({
931
+ ...props,
932
+ isKeyboardDismissDisabled: isDismissable === void 0 || isDismissable === false
933
+ }, {
934
+ onClose,
935
+ isOpen
936
+ }, ref);
1646
937
  const theme = useTheme();
1647
938
  const isMobile = useMedia(maxWidth2(theme.breakpoint.screen1)) ?? false;
1648
939
  const transitionEnabled = isMobile && bottomSheet !== false;
@@ -1665,113 +956,67 @@ var Modal = forwardRef13(function ModalInner({ children, zIndex = DEFAULT_Z_INDE
1665
956
  backgroundColor: "rgba(0, 0, 0, 0)",
1666
957
  overflow: "hidden"
1667
958
  },
1668
- config: transitionEnabled ? { duration: 400, easing: easings.easeOutQuart } : { duration: 0 }
959
+ config: transitionEnabled ? {
960
+ duration: 400,
961
+ easing: easings.easeOutQuart
962
+ } : {
963
+ duration: 0
964
+ }
1669
965
  });
1670
- const bgRef = React9.useRef(null);
1671
- return transition(
1672
- ({ backgroundColor, overflow, transform }, item) => item && /* @__PURE__ */ jsx14(Overlay, { portalContainer, children: /* @__PURE__ */ jsx14(
1673
- ModalBackground,
1674
- {
1675
- ref: bgRef,
1676
- zIndex,
1677
- ...underlayProps,
1678
- style: transitionEnabled ? { backgroundColor, overflow } : {},
1679
- $bottomSheet: bottomSheet,
1680
- children: /* @__PURE__ */ jsx14(ModalBackgroundContext.Provider, { value: bgRef.current, children: /* @__PURE__ */ jsx14(
1681
- Dialog,
1682
- {
1683
- ref,
1684
- ...modalProps,
1685
- style: transitionEnabled ? { transform } : {},
1686
- size,
1687
- bottomSheet,
1688
- className,
1689
- children: /* @__PURE__ */ jsxs8(
1690
- ModalContext.Provider,
1691
- {
1692
- value: {
1693
- titleProps: {},
1694
- title,
1695
- close: onClose,
1696
- showDismiss,
1697
- bottomSheet
1698
- },
1699
- children: [
1700
- children,
1701
- isDismissable === true && /* @__PURE__ */ jsx14(
1702
- ModalCrossButton,
1703
- {
1704
- size: "S",
1705
- icon: "24/Close",
1706
- onClick: onClose
1707
- }
1708
- )
1709
- ]
1710
- }
1711
- )
1712
- }
1713
- ) })
1714
- }
1715
- ) })
1716
- );
966
+ const bgRef = React10.useRef(null);
967
+ const handleClick = React10.useCallback((e) => {
968
+ if (e.currentTarget === e.target) {
969
+ onClose();
970
+ }
971
+ }, [onClose]);
972
+ return transition(({
973
+ backgroundColor,
974
+ overflow,
975
+ transform
976
+ }, item) => item && /* @__PURE__ */ jsx14(Overlay, { portalContainer, children: /* @__PURE__ */ jsx14(ModalBackground, { ref: bgRef, zIndex, ...underlayProps, style: transitionEnabled ? {
977
+ backgroundColor,
978
+ overflow
979
+ } : {}, $bottomSheet: bottomSheet, onClick: handleClick, children: /* @__PURE__ */ jsx14(ModalBackgroundContext.Provider, { value: bgRef.current, children: /* @__PURE__ */ jsx14(Dialog, { ref, ...modalProps, style: transitionEnabled ? {
980
+ transform
981
+ } : {}, size, bottomSheet, className, children: /* @__PURE__ */ jsxs8(ModalContext.Provider, { value: {
982
+ titleProps: {},
983
+ title,
984
+ close: onClose,
985
+ showDismiss,
986
+ bottomSheet
987
+ }, children: [
988
+ children,
989
+ isDismissable === true && /* @__PURE__ */ jsx14(ModalCrossButton, { size: "S", icon: "24/Close", onClick: onClose })
990
+ ] }) }) }) }) }));
1717
991
  });
1718
992
  var Modal_default = memo4(Modal);
1719
- var ModalContext = React9.createContext({
993
+ var ModalContext = React10.createContext({
1720
994
  titleProps: {},
1721
995
  title: "",
1722
996
  close: void 0,
1723
997
  showDismiss: true,
1724
998
  bottomSheet: false
1725
999
  });
1726
- var ModalBackground = animated2(styled11.div`
1727
- z-index: ${({ zIndex }) => zIndex};
1728
- overflow: auto;
1729
- display: flex;
1730
- position: fixed;
1731
- top: 0;
1732
- left: 0;
1733
- width: -webkit-fill-available;
1734
- width: -moz-available;
1735
- height: 100%;
1736
- justify-content: center;
1737
- padding: 40px 0;
1738
- box-sizing: border-box;
1739
-
1740
- background-color: var(--charcoal-surface4);
1741
-
1742
- @media ${({ theme }) => maxWidth2(theme.breakpoint.screen1)} {
1743
- ${(p) => p.$bottomSheet !== false && css7`
1744
- padding: 0;
1745
- `}
1746
- }
1747
- `);
1748
- var ModalCrossButton = styled11(IconButton_default)`
1749
- position: absolute;
1750
- top: 8px;
1751
- right: 8px;
1752
-
1753
- color: var(--charcoal-text3);
1754
- transition: 0.2s color;
1755
-
1756
- &:not(:disabled):not([aria-disabled]),
1757
- &[aria-disabled='false'] {
1758
- &:hover {
1759
- color: var(--charcoal-text3-hover);
1760
- }
1761
- &:active {
1762
- color: var(--charcoal-text3-press);
1763
- }
1764
- }
1765
- `;
1000
+ var ModalBackground = animated2(styled11.div.withConfig({
1001
+ componentId: "ccl__sc-h2bc55-0"
1002
+ })(["z-index:", ";overflow:auto;display:flex;position:fixed;top:0;left:0;width:-webkit-fill-available;width:-moz-available;height:100%;justify-content:center;padding:40px 0;box-sizing:border-box;background-color:var(--charcoal-surface4);@media ", "{", "}"], ({
1003
+ zIndex
1004
+ }) => zIndex, ({
1005
+ theme
1006
+ }) => maxWidth2(theme.breakpoint.screen1), (p) => p.$bottomSheet !== false && css7(["padding:0;"])));
1007
+ var ModalCrossButton = styled11(IconButton_default).withConfig({
1008
+ componentId: "ccl__sc-h2bc55-1"
1009
+ })(["position:absolute;top:8px;right:8px;color:var(--charcoal-text3);transition:0.2s color;&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{&:hover{color:var(--charcoal-text3-hover);}&:active{color:var(--charcoal-text3-press);}}"]);
1766
1010
  function ModalTitle(props) {
1767
- const { titleProps, title } = useContext4(ModalContext);
1011
+ const {
1012
+ titleProps,
1013
+ title
1014
+ } = useContext4(ModalContext);
1768
1015
  return /* @__PURE__ */ jsx14(ModalHeading, { ...titleProps, ...props, children: title });
1769
1016
  }
1770
- var ModalHeading = styled11.h3`
1771
- margin: 0;
1772
- font-weight: inherit;
1773
- font-size: inherit;
1774
- `;
1017
+ var ModalHeading = styled11.h3.withConfig({
1018
+ componentId: "ccl__sc-h2bc55-2"
1019
+ })(["margin:0;font-weight:inherit;font-size:inherit;"]);
1775
1020
 
1776
1021
  // src/components/Modal/ModalPlumbing.tsx
1777
1022
  import styled12, { css as css8 } from "styled-components";
@@ -1782,127 +1027,66 @@ function ModalHeader() {
1782
1027
  const modalCtx = useContext5(ModalContext);
1783
1028
  return /* @__PURE__ */ jsx15(ModalHeaderRoot, { $bottomSheet: modalCtx.bottomSheet, children: /* @__PURE__ */ jsx15(StyledModalTitle, {}) });
1784
1029
  }
1785
- var ModalHeaderRoot = styled12.div`
1786
- height: 64px;
1787
- display: grid;
1788
- align-content: center;
1789
- justify-content: center;
1790
- @media ${({ theme }) => maxWidth3(theme.breakpoint.screen1)} {
1791
- ${(p) => p.$bottomSheet !== false && css8`
1792
- height: 48px;
1793
- `}
1794
- }
1795
- `;
1796
- var StyledModalTitle = styled12(ModalTitle)`
1797
- color: var(--charcoal-text1);
1798
- font-size: 16px;
1799
- line-height: 24px;
1800
- font-weight: bold;
1801
- display: flow-root;
1802
-
1803
- &::before {
1804
- display: block;
1805
- width: 0;
1806
- height: 0;
1807
- content: '';
1808
- margin-top: -4px;
1809
- }
1810
- &::after {
1811
- display: block;
1812
- width: 0;
1813
- height: 0;
1814
- content: '';
1815
- margin-bottom: -4px;
1816
- }
1817
- `;
1818
- var ModalAlign = styled12.div`
1819
- padding-left: 16px;
1820
- padding-right: 16px;
1821
- `;
1822
- var ModalBody = styled12.div`
1823
- padding-bottom: 40px;
1824
- `;
1825
- var ModalButtons = styled12.div`
1826
- display: grid;
1827
- grid-auto-flow: row;
1828
- grid-row-gap: 8px;
1829
-
1830
- padding-top: 16px;
1831
- padding-left: 16px;
1832
- padding-right: 16px;
1833
- `;
1030
+ var ModalHeaderRoot = styled12.div.withConfig({
1031
+ componentId: "ccl__sc-1k33wze-0"
1032
+ })(["height:64px;display:grid;align-content:center;justify-content:center;@media ", "{", "}"], ({
1033
+ theme
1034
+ }) => maxWidth3(theme.breakpoint.screen1), (p) => p.$bottomSheet !== false && css8(["height:48px;"]));
1035
+ var StyledModalTitle = styled12(ModalTitle).withConfig({
1036
+ componentId: "ccl__sc-1k33wze-1"
1037
+ })(["color:var(--charcoal-text1);font-size:16px;line-height:24px;font-weight:bold;display:flow-root;&::before{display:block;width:0;height:0;content:'';margin-top:-4px;}&::after{display:block;width:0;height:0;content:'';margin-bottom:-4px;}"]);
1038
+ var ModalAlign = styled12.div.withConfig({
1039
+ componentId: "ccl__sc-1k33wze-2"
1040
+ })(["padding-left:16px;padding-right:16px;"]);
1041
+ var ModalBody = styled12.div.withConfig({
1042
+ componentId: "ccl__sc-1k33wze-3"
1043
+ })(["padding-bottom:40px;"]);
1044
+ var ModalButtons = styled12.div.withConfig({
1045
+ componentId: "ccl__sc-1k33wze-4"
1046
+ })(["display:grid;grid-auto-flow:row;grid-row-gap:8px;padding-top:16px;padding-left:16px;padding-right:16px;"]);
1834
1047
 
1835
1048
  // src/components/LoadingSpinner/index.tsx
1836
1049
  import { forwardRef as forwardRef14, useImperativeHandle, useRef as useRef5, memo as memo5 } from "react";
1837
1050
  import styled13, { keyframes } from "styled-components";
1838
1051
  import { jsx as jsx16 } from "react/jsx-runtime";
1839
- var LoadingSpinner = forwardRef14(
1840
- function LoadingSpinnerInner({ size = 48, padding = 16, transparent = false, className }, ref) {
1841
- return /* @__PURE__ */ jsx16(
1842
- LoadingSpinnerRoot,
1843
- {
1844
- size,
1845
- padding,
1846
- transparent,
1847
- className,
1848
- ref,
1849
- children: /* @__PURE__ */ jsx16(LoadingSpinnerIcon, {})
1850
- }
1851
- );
1852
- }
1853
- );
1052
+ var LoadingSpinner = forwardRef14(function LoadingSpinnerInner({
1053
+ size = 48,
1054
+ padding = 16,
1055
+ transparent = false,
1056
+ className
1057
+ }, ref) {
1058
+ return /* @__PURE__ */ jsx16(LoadingSpinnerRoot, { size, padding, transparent, className, ref, children: /* @__PURE__ */ jsx16(LoadingSpinnerIcon, {}) });
1059
+ });
1854
1060
  var LoadingSpinner_default = memo5(LoadingSpinner);
1855
- var LoadingSpinnerRoot = styled13.div.attrs({ role: "progressbar" })`
1856
- box-sizing: content-box;
1857
- margin: auto;
1858
- padding: ${(props) => props.padding}px;
1859
- border-radius: 8px;
1860
- font-size: ${(props) => props.size}px;
1861
- width: ${(props) => props.size}px;
1862
- height: ${(props) => props.size}px;
1863
- opacity: 0.84;
1864
- color: var(--charcoal-text4);
1865
- background-color: ${({ transparent }) => `var(--charcoal-${transparent ? "transparent" : "background1"})`};
1866
- `;
1867
- var scaleOut = keyframes`
1868
- from {
1869
- transform: scale(0);
1870
- opacity: 1;
1871
- }
1872
-
1873
- to {
1874
- transform: scale(1);
1875
- opacity: 0;
1876
- }
1877
- `;
1878
- var Icon2 = styled13.div.attrs({ role: "presentation" })`
1879
- width: 1em;
1880
- height: 1em;
1881
- border-radius: 1em;
1882
- background-color: currentColor;
1883
- animation: ${scaleOut} 1s both ease-out;
1884
- animation-iteration-count: ${(p) => p.once ? 1 : "infinite"};
1885
-
1886
- &[data-reset-animation] {
1887
- animation: none;
1888
- }
1889
- `;
1890
- var LoadingSpinnerIcon = forwardRef14(
1891
- function LoadingSpinnerIcon2({ once = false }, ref) {
1892
- const iconRef = useRef5(null);
1893
- useImperativeHandle(ref, () => ({
1894
- restart: () => {
1895
- if (!iconRef.current) {
1896
- return;
1897
- }
1898
- iconRef.current.dataset.resetAnimation = "true";
1899
- void iconRef.current.offsetWidth;
1900
- delete iconRef.current.dataset.resetAnimation;
1061
+ var LoadingSpinnerRoot = styled13.div.attrs({
1062
+ role: "progressbar"
1063
+ }).withConfig({
1064
+ componentId: "ccl__sc-1id6yz4-0"
1065
+ })(["box-sizing:content-box;margin:auto;padding:", "px;border-radius:8px;font-size:", "px;width:", "px;height:", "px;opacity:0.84;color:var(--charcoal-text4);background-color:", ";"], (props) => props.padding, (props) => props.size, (props) => props.size, (props) => props.size, ({
1066
+ transparent
1067
+ }) => `var(--charcoal-${transparent ? "transparent" : "background1"})`);
1068
+ var scaleOut = keyframes(["from{transform:scale(0);opacity:1;}to{transform:scale(1);opacity:0;}"]);
1069
+ var Icon2 = styled13.div.attrs({
1070
+ role: "presentation"
1071
+ }).withConfig({
1072
+ componentId: "ccl__sc-1id6yz4-1"
1073
+ })(["width:1em;height:1em;border-radius:1em;background-color:currentColor;animation:", " 1s both ease-out;animation-iteration-count:", ";&[data-reset-animation]{animation:none;}"], scaleOut, (p) => p.once ? 1 : "infinite");
1074
+ var LoadingSpinnerIcon = forwardRef14(function LoadingSpinnerIcon2({
1075
+ once = false
1076
+ }, ref) {
1077
+ const iconRef = useRef5(null);
1078
+ useImperativeHandle(ref, () => ({
1079
+ restart: () => {
1080
+ if (!iconRef.current) {
1081
+ return;
1901
1082
  }
1902
- }));
1903
- return /* @__PURE__ */ jsx16(Icon2, { ref: iconRef, once });
1904
- }
1905
- );
1083
+ iconRef.current.dataset.resetAnimation = "true";
1084
+ void iconRef.current.offsetWidth;
1085
+ delete iconRef.current.dataset.resetAnimation;
1086
+ }
1087
+ }));
1088
+ return /* @__PURE__ */ jsx16(Icon2, { ref: iconRef, once });
1089
+ });
1906
1090
 
1907
1091
  // src/components/DropdownSelector/index.tsx
1908
1092
  import { useState as useState3, useRef as useRef9 } from "react";
@@ -1910,7 +1094,7 @@ import styled16, { css as css9 } from "styled-components";
1910
1094
  import { disabledSelector as disabledSelector2 } from "@charcoal-ui/utils";
1911
1095
 
1912
1096
  // src/components/DropdownSelector/DropdownPopover.tsx
1913
- import { useEffect as useEffect6, useRef as useRef7 } from "react";
1097
+ import { useEffect as useEffect7, useRef as useRef7 } from "react";
1914
1098
 
1915
1099
  // src/components/DropdownSelector/Popover/index.tsx
1916
1100
  import { useContext as useContext6, useRef as useRef6 } from "react";
@@ -1918,9 +1102,9 @@ import { DismissButton, Overlay as Overlay2, usePopover } from "@react-aria/over
1918
1102
  import styled14 from "styled-components";
1919
1103
 
1920
1104
  // src/components/DropdownSelector/Popover/usePreventScroll.tsx
1921
- import { useEffect as useEffect5 } from "react";
1922
- function usePreventScroll(element, isOpen) {
1923
- useEffect5(() => {
1105
+ import { useEffect as useEffect6 } from "react";
1106
+ function usePreventScroll2(element, isOpen) {
1107
+ useEffect6(() => {
1924
1108
  if (isOpen && element) {
1925
1109
  const defaultPaddingRight = element.style.paddingRight;
1926
1110
  const defaultOverflow = element.style.overflow;
@@ -1940,36 +1124,30 @@ var _empty = () => null;
1940
1124
  function Popover(props) {
1941
1125
  const defaultPopoverRef = useRef6(null);
1942
1126
  const finalPopoverRef = props.popoverRef === void 0 ? defaultPopoverRef : props.popoverRef;
1943
- const { popoverProps, underlayProps } = usePopover(
1944
- {
1945
- triggerRef: props.triggerRef,
1946
- popoverRef: finalPopoverRef,
1947
- containerPadding: 16
1948
- },
1949
- {
1950
- close: props.onClose,
1951
- isOpen: props.isOpen,
1952
- open: _empty,
1953
- setOpen: _empty,
1954
- toggle: _empty
1955
- }
1956
- );
1127
+ const {
1128
+ popoverProps,
1129
+ underlayProps
1130
+ } = usePopover({
1131
+ triggerRef: props.triggerRef,
1132
+ popoverRef: finalPopoverRef,
1133
+ containerPadding: 16
1134
+ }, {
1135
+ close: props.onClose,
1136
+ isOpen: props.isOpen,
1137
+ open: _empty,
1138
+ setOpen: _empty,
1139
+ toggle: _empty
1140
+ });
1957
1141
  const modalBackground = useContext6(ModalBackgroundContext);
1958
- usePreventScroll(modalBackground, props.isOpen);
1142
+ usePreventScroll2(modalBackground, props.isOpen);
1959
1143
  if (!props.isOpen)
1960
1144
  return null;
1961
1145
  return /* @__PURE__ */ jsxs9(Overlay2, { portalContainer: document.body, children: [
1962
- /* @__PURE__ */ jsx17(
1963
- "div",
1964
- {
1965
- ...underlayProps,
1966
- style: {
1967
- position: "fixed",
1968
- zIndex: typeof popoverProps.style?.zIndex === "number" ? popoverProps.style.zIndex - 1 : 99999,
1969
- inset: 0
1970
- }
1971
- }
1972
- ),
1146
+ /* @__PURE__ */ jsx17("div", { ...underlayProps, style: {
1147
+ position: "fixed",
1148
+ zIndex: typeof popoverProps.style?.zIndex === "number" ? popoverProps.style.zIndex - 1 : 99999,
1149
+ inset: 0
1150
+ } }),
1973
1151
  /* @__PURE__ */ jsxs9(DropdownPopoverDiv, { ...popoverProps, ref: finalPopoverRef, children: [
1974
1152
  /* @__PURE__ */ jsx17(DismissButton, { onDismiss: () => props.onClose() }),
1975
1153
  props.children,
@@ -1977,57 +1155,41 @@ function Popover(props) {
1977
1155
  ] })
1978
1156
  ] });
1979
1157
  }
1980
- var DropdownPopoverDiv = styled14.div`
1981
- margin: 4px 0;
1982
- list-style: none;
1983
- overflow: auto;
1984
- max-height: inherit;
1985
- background-color: var(--charcoal-background1);
1986
- border: solid 1px var(--charcoal-border-default);
1987
- border-radius: 8px;
1988
- padding-top: 8px;
1989
- padding-bottom: 8px;
1990
- `;
1158
+ var DropdownPopoverDiv = styled14.div.withConfig({
1159
+ componentId: "ccl__sc-jwnoy6-0"
1160
+ })(["margin:4px 0;list-style:none;overflow:auto;max-height:inherit;background-color:var(--charcoal-background1);border:solid 1px var(--charcoal-border-default);border-radius:8px;padding-top:8px;padding-bottom:8px;"]);
1991
1161
 
1992
1162
  // src/components/DropdownSelector/DropdownPopover.tsx
1993
1163
  import { jsx as jsx18 } from "react/jsx-runtime";
1994
- function DropdownPopover({ children, ...props }) {
1164
+ function DropdownPopover({
1165
+ children,
1166
+ ...props
1167
+ }) {
1995
1168
  const ref = useRef7(null);
1996
- useEffect6(() => {
1169
+ useEffect7(() => {
1997
1170
  if (props.isOpen && ref.current && props.triggerRef.current) {
1998
1171
  ref.current.style.width = `${props.triggerRef.current.clientWidth}px`;
1999
1172
  }
2000
1173
  }, [props.triggerRef, props.isOpen]);
2001
- useEffect6(() => {
1174
+ useEffect7(() => {
2002
1175
  if (props.isOpen && props.value !== void 0) {
2003
1176
  const windowScrollY = window.scrollY;
2004
1177
  const windowScrollX = window.scrollX;
2005
- const selectedElement = document.querySelector(
2006
- `[data-key="${props.value.toString()}"]`
2007
- );
1178
+ const selectedElement = document.querySelector(`[data-key="${props.value.toString()}"]`);
2008
1179
  selectedElement?.focus();
2009
1180
  window.scrollTo(windowScrollX, windowScrollY);
2010
1181
  }
2011
1182
  }, [props.value, props.isOpen]);
2012
- return /* @__PURE__ */ jsx18(
2013
- Popover,
2014
- {
2015
- isOpen: props.isOpen,
2016
- onClose: props.onClose,
2017
- popoverRef: ref,
2018
- triggerRef: props.triggerRef,
2019
- children
2020
- }
2021
- );
1183
+ return /* @__PURE__ */ jsx18(Popover, { isOpen: props.isOpen, onClose: props.onClose, popoverRef: ref, triggerRef: props.triggerRef, children });
2022
1184
  }
2023
1185
 
2024
1186
  // src/components/DropdownSelector/utils/findPreviewRecursive.tsx
2025
- import * as React10 from "react";
1187
+ import * as React11 from "react";
2026
1188
  function findPreviewRecursive(children, value) {
2027
- const childArray = React10.Children.toArray(children);
1189
+ const childArray = React11.Children.toArray(children);
2028
1190
  for (let i = 0; i < childArray.length; i++) {
2029
1191
  const child = childArray[i];
2030
- if (React10.isValidElement(child)) {
1192
+ if (React11.isValidElement(child)) {
2031
1193
  if ("value" in child.props) {
2032
1194
  const childValue = child.props.value;
2033
1195
  if (childValue === value && "children" in child.props) {
@@ -2036,10 +1198,7 @@ function findPreviewRecursive(children, value) {
2036
1198
  }
2037
1199
  }
2038
1200
  if ("children" in child.props) {
2039
- const children2 = findPreviewRecursive(
2040
- child.props.children,
2041
- value
2042
- );
1201
+ const children2 = findPreviewRecursive(child.props.children, value);
2043
1202
  if (children2 !== void 0) {
2044
1203
  return children2;
2045
1204
  }
@@ -2063,12 +1222,12 @@ var MenuListContext = createContext6({
2063
1222
  });
2064
1223
 
2065
1224
  // src/components/DropdownSelector/MenuList/internals/getValuesRecursive.tsx
2066
- import * as React11 from "react";
1225
+ import * as React12 from "react";
2067
1226
  function getValuesRecursive(children, values = []) {
2068
- const childArray = React11.Children.toArray(children);
1227
+ const childArray = React12.Children.toArray(children);
2069
1228
  for (let i = 0; i < childArray.length; i++) {
2070
1229
  const child = childArray[i];
2071
- if (React11.isValidElement(child)) {
1230
+ if (React12.isValidElement(child)) {
2072
1231
  const props = child.props;
2073
1232
  if ("value" in props && typeof props.value === "string") {
2074
1233
  const childValue = props.value;
@@ -2087,25 +1246,18 @@ function MenuList(props) {
2087
1246
  const root = useRef8(null);
2088
1247
  const values = [];
2089
1248
  getValuesRecursive(props.children, values);
2090
- return /* @__PURE__ */ jsx19(StyledUl, { ref: root, children: /* @__PURE__ */ jsx19(
2091
- MenuListContext.Provider,
2092
- {
2093
- value: {
2094
- value: props.value ?? "",
2095
- root,
2096
- values,
2097
- setValue: (v) => {
2098
- props.onChange?.(v);
2099
- }
2100
- },
2101
- children: props.children
1249
+ return /* @__PURE__ */ jsx19(StyledUl, { ref: root, children: /* @__PURE__ */ jsx19(MenuListContext.Provider, { value: {
1250
+ value: props.value ?? "",
1251
+ root,
1252
+ values,
1253
+ setValue: (v) => {
1254
+ props.onChange?.(v);
2102
1255
  }
2103
- ) });
1256
+ }, children: props.children }) });
2104
1257
  }
2105
- var StyledUl = styled15.ul`
2106
- padding: 0;
2107
- margin: 0;
2108
- `;
1258
+ var StyledUl = styled15.ul.withConfig({
1259
+ componentId: "ccl__sc-1y72v02-0"
1260
+ })(["padding:0;margin:0;"]);
2109
1261
 
2110
1262
  // src/components/DropdownSelector/index.tsx
2111
1263
  import { focusVisibleFocusRingCss as focusVisibleFocusRingCss6 } from "@charcoal-ui/styled";
@@ -2116,153 +1268,46 @@ function DropdownSelector(props) {
2116
1268
  const [isOpen, setIsOpen] = useState3(false);
2117
1269
  const preview = findPreviewRecursive(props.children, props.value);
2118
1270
  return /* @__PURE__ */ jsxs10(DropdownSelectorRoot, { "aria-disabled": props.disabled, children: [
2119
- props.showLabel === true && /* @__PURE__ */ jsx20(
2120
- DropdownFieldLabel,
2121
- {
2122
- label: props.label,
2123
- required: props.required,
2124
- requiredText: props.requiredText ?? defaultRequiredText,
2125
- subLabel: props.subLabel
2126
- }
2127
- ),
2128
- /* @__PURE__ */ jsxs10(
2129
- DropdownButton,
2130
- {
2131
- invalid: props.invalid,
2132
- disabled: props.disabled,
2133
- onClick: () => {
2134
- if (props.disabled === true)
2135
- return;
2136
- setIsOpen(true);
2137
- },
2138
- ref: triggerRef,
2139
- type: "button",
2140
- $active: isOpen,
2141
- children: [
2142
- /* @__PURE__ */ jsx20(DropdownButtonText, { children: props.placeholder !== void 0 && preview === void 0 ? props.placeholder : preview }),
2143
- /* @__PURE__ */ jsx20(DropdownButtonIcon, { name: "16/Menu" })
2144
- ]
2145
- }
2146
- ),
2147
- isOpen && /* @__PURE__ */ jsx20(
2148
- DropdownPopover,
2149
- {
2150
- isOpen,
2151
- onClose: () => setIsOpen(false),
2152
- triggerRef,
2153
- value: props.value,
2154
- children: /* @__PURE__ */ jsx20(
2155
- MenuList,
2156
- {
2157
- value: props.value,
2158
- onChange: (v) => {
2159
- props.onChange(v);
2160
- setIsOpen(false);
2161
- },
2162
- children: props.children
2163
- }
2164
- )
2165
- }
2166
- ),
1271
+ props.showLabel === true && /* @__PURE__ */ jsx20(DropdownFieldLabel, { label: props.label, required: props.required, requiredText: props.requiredText ?? defaultRequiredText, subLabel: props.subLabel }),
1272
+ /* @__PURE__ */ jsxs10(DropdownButton, { invalid: props.invalid, disabled: props.disabled, onClick: () => {
1273
+ if (props.disabled === true)
1274
+ return;
1275
+ setIsOpen(true);
1276
+ }, ref: triggerRef, type: "button", $active: isOpen, children: [
1277
+ /* @__PURE__ */ jsx20(DropdownButtonText, { children: props.placeholder !== void 0 && preview === void 0 ? props.placeholder : preview }),
1278
+ /* @__PURE__ */ jsx20(DropdownButtonIcon, { name: "16/Menu" })
1279
+ ] }),
1280
+ isOpen && /* @__PURE__ */ jsx20(DropdownPopover, { isOpen, onClose: () => setIsOpen(false), triggerRef, value: props.value, children: /* @__PURE__ */ jsx20(MenuList, { value: props.value, onChange: (v) => {
1281
+ props.onChange(v);
1282
+ setIsOpen(false);
1283
+ }, children: props.children }) }),
2167
1284
  props.assistiveText !== void 0 && /* @__PURE__ */ jsx20(AssertiveText, { invalid: props.invalid, children: props.assistiveText })
2168
1285
  ] });
2169
1286
  }
2170
- var DropdownSelectorRoot = styled16.div`
2171
- display: inline-block;
2172
- width: 100%;
2173
-
2174
- ${disabledSelector2} {
2175
- cursor: default;
2176
- opacity: 0.32;
2177
- }
2178
- `;
2179
- var DropdownFieldLabel = styled16(FieldLabel_default)`
2180
- width: 100%;
2181
- margin-bottom: 8px;
2182
- `;
2183
- var DropdownButton = styled16.button`
2184
- display: flex;
2185
- justify-content: space-between;
2186
- align-items: center;
2187
-
2188
- height: 40px;
2189
- width: 100%;
2190
- box-sizing: border-box;
2191
- border: none;
2192
- cursor: pointer;
2193
- gap: 4px;
2194
-
2195
- ${disabledSelector2} {
2196
- cursor: default;
2197
- }
2198
-
2199
- padding-right: 8px;
2200
- padding-left: 8px;
2201
- background-color: var(--charcoal-surface3);
2202
- border-radius: 4px;
2203
-
2204
- transition: 0.2s box-shadow, 0.2s background-color;
2205
-
2206
- &:not(:disabled):not([aria-disabled]),
2207
- &[aria-disabled='false'] {
2208
- ${focusVisibleFocusRingCss6}
2209
- ${({ $active }) => $active === true ? css9`
2210
- background-color: var(--charcoal-surface3-press);
2211
- ` : css9`
2212
- &:hover {
2213
- background-color: var(--charcoal-surface3-hover);
2214
- }
2215
- &:active {
2216
- background-color: var(--charcoal-surface3-press);
2217
- }
2218
- `}
2219
- }
2220
-
2221
- ${({ invalid }) => invalid === true && css9`
2222
- &:not(:disabled):not([aria-disabled]),
2223
- &[aria-disabled='false'] {
2224
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
2225
- }
2226
- `}
2227
- `;
2228
- var DropdownButtonText = styled16.span`
2229
- text-align: left;
2230
- font-size: 14px;
2231
- line-height: 22px;
2232
- display: flow-root;
2233
- color: var(--charcoal-text2);
2234
- overflow: hidden;
2235
- text-overflow: ellipsis;
2236
- white-space: nowrap;
2237
- `;
2238
- var DropdownButtonIcon = styled16(Icon_default)`
2239
- color: var(--charcoal-text2);
2240
- `;
2241
- var AssertiveText = styled16.div`
2242
- margin-top: 8px;
2243
- font-size: 14px;
2244
- color: var(--charcoal-text2);
2245
- line-height: 22px;
2246
- display: flow-root;
2247
- &::before {
2248
- display: block;
2249
- width: 0;
2250
- height: 0;
2251
- content: '';
2252
- margin-top: -4px;
2253
- }
2254
- &::after {
2255
- display: block;
2256
- width: 0;
2257
- height: 0;
2258
- content: '';
2259
- margin-bottom: -4px;
2260
- }
2261
-
2262
- ${({ invalid }) => invalid === true && css9`
2263
- color: var(--charcoal-assertive);
2264
- `}
2265
- `;
1287
+ var DropdownSelectorRoot = styled16.div.withConfig({
1288
+ componentId: "ccl__sc-1vnxmc8-0"
1289
+ })(["display:inline-block;width:100%;", "{cursor:default;opacity:0.32;}"], disabledSelector2);
1290
+ var DropdownFieldLabel = styled16(FieldLabel_default).withConfig({
1291
+ componentId: "ccl__sc-1vnxmc8-1"
1292
+ })(["width:100%;margin-bottom:8px;"]);
1293
+ var DropdownButton = styled16.button.withConfig({
1294
+ componentId: "ccl__sc-1vnxmc8-2"
1295
+ })(["display:flex;justify-content:space-between;align-items:center;height:40px;width:100%;box-sizing:border-box;border:none;cursor:pointer;gap:4px;", "{cursor:default;}padding-right:8px;padding-left:8px;background-color:var(--charcoal-surface3);border-radius:4px;transition:0.2s box-shadow,0.2s background-color;&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{", " ", "}", ""], disabledSelector2, focusVisibleFocusRingCss6, ({
1296
+ $active
1297
+ }) => $active === true ? css9(["background-color:var(--charcoal-surface3-press);"]) : css9(["&:hover{background-color:var(--charcoal-surface3-hover);}&:active{background-color:var(--charcoal-surface3-press);}"]), ({
1298
+ invalid
1299
+ }) => invalid === true && css9(["&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{box-shadow:0 0 0 4px rgba(255,43,0,0.32);}"]));
1300
+ var DropdownButtonText = styled16.span.withConfig({
1301
+ componentId: "ccl__sc-1vnxmc8-3"
1302
+ })(["text-align:left;font-size:14px;line-height:22px;display:flow-root;color:var(--charcoal-text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;"]);
1303
+ var DropdownButtonIcon = styled16(Icon_default).withConfig({
1304
+ componentId: "ccl__sc-1vnxmc8-4"
1305
+ })(["color:var(--charcoal-text2);"]);
1306
+ var AssertiveText = styled16.div.withConfig({
1307
+ componentId: "ccl__sc-1vnxmc8-5"
1308
+ })(["margin-top:8px;font-size:14px;color:var(--charcoal-text2);line-height:22px;display:flow-root;&::before{display:block;width:0;height:0;content:'';margin-top:-4px;}&::after{display:block;width:0;height:0;content:'';margin-bottom:-4px;}", ""], ({
1309
+ invalid
1310
+ }) => invalid === true && css9(["color:var(--charcoal-assertive);"]));
2266
1311
 
2267
1312
  // src/components/DropdownSelector/DropdownMenuItem.tsx
2268
1313
  import styled18 from "styled-components";
@@ -2271,37 +1316,21 @@ import styled18 from "styled-components";
2271
1316
  import styled17 from "styled-components";
2272
1317
  import { jsx as jsx21 } from "react/jsx-runtime";
2273
1318
  function ListItem(props) {
2274
- const { children, ...rest } = props;
1319
+ const {
1320
+ children,
1321
+ ...rest
1322
+ } = props;
2275
1323
  return /* @__PURE__ */ jsx21(StyledLi, { role: "option", children: /* @__PURE__ */ jsx21(ItemDiv, { ...rest, children: props.children }) });
2276
1324
  }
2277
- var StyledLi = styled17.li`
2278
- list-style: none;
2279
- `;
2280
- var ItemDiv = styled17.div`
2281
- display: flex;
2282
- align-items: center;
2283
- min-height: 40px;
2284
- cursor: pointer;
2285
- outline: none;
2286
-
2287
- padding-right: 16px;
2288
- padding-left: 16px;
2289
-
2290
- &:disabled,
2291
- &[aria-disabled]:not([aria-disabled='false']) {
2292
- opacity: 0.32;
2293
- cursor: default;
2294
- }
2295
-
2296
- :hover,
2297
- :focus,
2298
- :focus-within {
2299
- background-color: var(--charcoal-surface3);
2300
- }
2301
- `;
1325
+ var StyledLi = styled17.li.withConfig({
1326
+ componentId: "ccl__sc-p1vs75-0"
1327
+ })(["list-style:none;"]);
1328
+ var ItemDiv = styled17.div.withConfig({
1329
+ componentId: "ccl__sc-p1vs75-1"
1330
+ })(["display:flex;align-items:center;min-height:40px;cursor:pointer;outline:none;padding-right:16px;padding-left:16px;&:disabled,&[aria-disabled]:not([aria-disabled='false']){opacity:0.32;cursor:default;}:hover,:focus,:focus-within{background-color:var(--charcoal-surface3);}"]);
2302
1331
 
2303
1332
  // src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx
2304
- import { useCallback as useCallback5, useContext as useContext7 } from "react";
1333
+ import { useCallback as useCallback6, useContext as useContext7 } from "react";
2305
1334
 
2306
1335
  // src/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.tsx
2307
1336
  function handleFocusByKeyBoard(element, parent) {
@@ -2334,84 +1363,77 @@ function scrollIfNeeded(element) {
2334
1363
 
2335
1364
  // src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx
2336
1365
  function useMenuItemHandleKeyDown(value) {
2337
- const { setValue, root, values } = useContext7(MenuListContext);
2338
- const setContextValue = useCallback5(() => {
1366
+ const {
1367
+ setValue,
1368
+ root,
1369
+ values
1370
+ } = useContext7(MenuListContext);
1371
+ const setContextValue = useCallback6(() => {
2339
1372
  if (value !== void 0)
2340
1373
  setValue(value);
2341
1374
  }, [value, setValue]);
2342
- const handleKeyDown = useCallback5(
2343
- (e) => {
2344
- if (e.key === "Enter") {
2345
- setContextValue();
2346
- } else if (e.key === "ArrowUp" || e.key === "ArrowDown") {
2347
- e.preventDefault();
2348
- if (!values || value === void 0)
2349
- return;
2350
- const index = values.indexOf(value);
2351
- if (index === -1)
2352
- return;
2353
- const focusValue = e.key === "ArrowUp" ? index - 1 < 0 ? values[values.length - 1] : values[index - 1] : index + 1 >= values.length ? values[0] : values[index + 1];
2354
- const next = root?.current?.querySelector(`[data-key='${focusValue}']`);
2355
- if (next instanceof HTMLElement) {
2356
- next.focus({ preventScroll: true });
2357
- if (root?.current?.parentElement) {
2358
- handleFocusByKeyBoard(next, root.current.parentElement);
2359
- }
1375
+ const handleKeyDown = useCallback6((e) => {
1376
+ if (e.key === "Enter") {
1377
+ setContextValue();
1378
+ } else if (e.key === "ArrowUp" || e.key === "ArrowDown") {
1379
+ e.preventDefault();
1380
+ if (!values || value === void 0)
1381
+ return;
1382
+ const index = values.indexOf(value);
1383
+ if (index === -1)
1384
+ return;
1385
+ const focusValue = e.key === "ArrowUp" ? index - 1 < 0 ? values[values.length - 1] : values[index - 1] : index + 1 >= values.length ? values[0] : values[index + 1];
1386
+ const next = root?.current?.querySelector(`[data-key='${focusValue}']`);
1387
+ if (next instanceof HTMLElement) {
1388
+ next.focus({
1389
+ preventScroll: true
1390
+ });
1391
+ if (root?.current?.parentElement) {
1392
+ handleFocusByKeyBoard(next, root.current.parentElement);
2360
1393
  }
2361
1394
  }
2362
- },
2363
- [setContextValue, value, root, values]
2364
- );
1395
+ }
1396
+ }, [setContextValue, value, root, values]);
2365
1397
  return [handleKeyDown, setContextValue];
2366
1398
  }
2367
1399
 
2368
1400
  // src/components/DropdownSelector/MenuItem/index.tsx
2369
1401
  import { jsx as jsx22 } from "react/jsx-runtime";
2370
1402
  function MenuItem(props) {
2371
- const { children, as, ...rest } = props;
1403
+ const {
1404
+ children,
1405
+ as,
1406
+ ...rest
1407
+ } = props;
2372
1408
  const [handleKeyDown, setContextValue] = useMenuItemHandleKeyDown(props.value);
2373
- return /* @__PURE__ */ jsx22(
2374
- ListItem,
2375
- {
2376
- ...rest,
2377
- as,
2378
- "data-key": props.value,
2379
- onKeyDown: handleKeyDown,
2380
- onClick: props.disabled === true ? void 0 : setContextValue,
2381
- tabIndex: -1,
2382
- "aria-disabled": props.disabled,
2383
- children: props.children
2384
- }
2385
- );
1409
+ return /* @__PURE__ */ jsx22(ListItem, { ...rest, as, "data-key": props.value, onKeyDown: handleKeyDown, onClick: props.disabled === true ? void 0 : setContextValue, tabIndex: -1, "aria-disabled": props.disabled, children: props.children });
2386
1410
  }
2387
1411
 
2388
1412
  // src/components/DropdownSelector/DropdownMenuItem.tsx
2389
1413
  import { useContext as useContext8 } from "react";
2390
1414
  import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
2391
1415
  function DropdownMenuItem(props) {
2392
- const { value: ctxValue } = useContext8(MenuListContext);
1416
+ const {
1417
+ value: ctxValue
1418
+ } = useContext8(MenuListContext);
2393
1419
  const isSelected = props.value === ctxValue;
2394
- const { children, ...rest } = props;
1420
+ const {
1421
+ children,
1422
+ ...rest
1423
+ } = props;
2395
1424
  return /* @__PURE__ */ jsxs11(MenuItem, { ...rest, children: [
2396
1425
  isSelected && /* @__PURE__ */ jsx23(Text2ColorIcon, { name: "16/Check" }),
2397
1426
  /* @__PURE__ */ jsx23(StyledSpan, { isSelected, children: props.children })
2398
1427
  ] });
2399
1428
  }
2400
- var StyledSpan = styled18.span`
2401
- font-size: 14px;
2402
- line-height: 22px;
2403
- color: var(--charcoal-text2);
2404
- padding: 9px 0;
2405
-
2406
- display: flex;
2407
- align-items: center;
2408
- width: 100%;
2409
- margin-left: ${({ isSelected }) => isSelected === true ? 0 : 20}px;
2410
- `;
2411
- var Text2ColorIcon = styled18(Icon_default)`
2412
- color: var(--charcoal-text2);
2413
- padding-right: 4px;
2414
- `;
1429
+ var StyledSpan = styled18.span.withConfig({
1430
+ componentId: "ccl__sc-108wg2j-0"
1431
+ })(["font-size:14px;line-height:22px;color:var(--charcoal-text2);padding:9px 0;display:flex;align-items:center;width:100%;margin-left:", "px;"], ({
1432
+ isSelected
1433
+ }) => isSelected === true ? 0 : 20);
1434
+ var Text2ColorIcon = styled18(Icon_default).withConfig({
1435
+ componentId: "ccl__sc-108wg2j-1"
1436
+ })(["color:var(--charcoal-text2);padding-right:4px;"]);
2415
1437
 
2416
1438
  // src/components/DropdownSelector/MenuItemGroup/index.tsx
2417
1439
  import styled19 from "styled-components";
@@ -2422,23 +1444,15 @@ function MenuItemGroup(props) {
2422
1444
  /* @__PURE__ */ jsx24(StyledUl2, { role: "group", children: props.children })
2423
1445
  ] });
2424
1446
  }
2425
- var TextSpan = styled19.span`
2426
- display: block;
2427
- color: var(--charcoal-text3);
2428
- font-size: 12px;
2429
- font-weight: bold;
2430
- padding: 12px 0 8px 16px;
2431
- `;
2432
- var StyledUl2 = styled19.ul`
2433
- padding-left: 0;
2434
- margin: 0;
2435
- box-sizing: border-box;
2436
- list-style: none;
2437
- overflow: hidden;
2438
- `;
2439
- var StyledLi2 = styled19.li`
2440
- display: block;
2441
- `;
1447
+ var TextSpan = styled19.span.withConfig({
1448
+ componentId: "ccl__sc-1ubjfz7-0"
1449
+ })(["display:block;color:var(--charcoal-text3);font-size:12px;font-weight:bold;padding:12px 0 8px 16px;"]);
1450
+ var StyledUl2 = styled19.ul.withConfig({
1451
+ componentId: "ccl__sc-1ubjfz7-1"
1452
+ })(["padding-left:0;margin:0;box-sizing:border-box;list-style:none;overflow:hidden;"]);
1453
+ var StyledLi2 = styled19.li.withConfig({
1454
+ componentId: "ccl__sc-1ubjfz7-2"
1455
+ })(["display:block;"]);
2442
1456
 
2443
1457
  // src/components/SegmentedControl/index.tsx
2444
1458
  import { forwardRef as forwardRef15, memo as memo6, useMemo as useMemo2, useRef as useRef10 } from "react";
@@ -2472,7 +1486,13 @@ var $e5be200c675c3b3a$export$571b5131b7e65c11 = (0, $jcIOw$createContext)({});
2472
1486
  var $e5be200c675c3b3a$export$a763b9476acd3eb = "__formValidationState" + Date.now();
2473
1487
  function $e5be200c675c3b3a$export$fc1a364ae1f3ff10(props) {
2474
1488
  if (props[$e5be200c675c3b3a$export$a763b9476acd3eb]) {
2475
- let { realtimeValidation, displayValidation, updateValidation, resetValidation, commitValidation } = props[$e5be200c675c3b3a$export$a763b9476acd3eb];
1489
+ let {
1490
+ realtimeValidation,
1491
+ displayValidation,
1492
+ updateValidation,
1493
+ resetValidation,
1494
+ commitValidation
1495
+ } = props[$e5be200c675c3b3a$export$a763b9476acd3eb];
2476
1496
  return {
2477
1497
  realtimeValidation,
2478
1498
  displayValidation,
@@ -2484,7 +1504,15 @@ function $e5be200c675c3b3a$export$fc1a364ae1f3ff10(props) {
2484
1504
  return $e5be200c675c3b3a$var$useFormValidationStateImpl(props);
2485
1505
  }
2486
1506
  function $e5be200c675c3b3a$var$useFormValidationStateImpl(props) {
2487
- let { isInvalid, validationState, name, value, builtinValidation, validate, validationBehavior = "aria" } = props;
1507
+ let {
1508
+ isInvalid,
1509
+ validationState,
1510
+ name,
1511
+ value,
1512
+ builtinValidation,
1513
+ validate,
1514
+ validationBehavior = "aria"
1515
+ } = props;
2488
1516
  if (validationState)
2489
1517
  isInvalid || (isInvalid = validationState === "invalid");
2490
1518
  let controlledError = isInvalid ? {
@@ -2492,10 +1520,7 @@ function $e5be200c675c3b3a$var$useFormValidationStateImpl(props) {
2492
1520
  validationErrors: [],
2493
1521
  validationDetails: $e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE
2494
1522
  } : null;
2495
- let clientError = (0, $jcIOw$useMemo)(() => $e5be200c675c3b3a$var$getValidationResult($e5be200c675c3b3a$var$runValidate(validate, value)), [
2496
- validate,
2497
- value
2498
- ]);
1523
+ let clientError = (0, $jcIOw$useMemo)(() => $e5be200c675c3b3a$var$getValidationResult($e5be200c675c3b3a$var$runValidate(validate, value)), [validate, value]);
2499
1524
  if (builtinValidation === null || builtinValidation === void 0 ? void 0 : builtinValidation.validationDetails.valid)
2500
1525
  builtinValidation = null;
2501
1526
  let serverErrors = (0, $jcIOw$useContext)($e5be200c675c3b3a$export$571b5131b7e65c11);
@@ -2503,20 +1528,14 @@ function $e5be200c675c3b3a$var$useFormValidationStateImpl(props) {
2503
1528
  if (name)
2504
1529
  return Array.isArray(name) ? name.flatMap((name2) => $e5be200c675c3b3a$var$asArray(serverErrors[name2])) : $e5be200c675c3b3a$var$asArray(serverErrors[name]);
2505
1530
  return [];
2506
- }, [
2507
- serverErrors,
2508
- name
2509
- ]);
1531
+ }, [serverErrors, name]);
2510
1532
  let [lastServerErrors, setLastServerErrors] = (0, $jcIOw$useState)(serverErrors);
2511
1533
  let [isServerErrorCleared, setServerErrorCleared] = (0, $jcIOw$useState)(false);
2512
1534
  if (serverErrors !== lastServerErrors) {
2513
1535
  setLastServerErrors(serverErrors);
2514
1536
  setServerErrorCleared(false);
2515
1537
  }
2516
- let serverError = (0, $jcIOw$useMemo)(() => $e5be200c675c3b3a$var$getValidationResult(isServerErrorCleared ? [] : serverErrorMessages), [
2517
- isServerErrorCleared,
2518
- serverErrorMessages
2519
- ]);
1538
+ let serverError = (0, $jcIOw$useMemo)(() => $e5be200c675c3b3a$var$getValidationResult(isServerErrorCleared ? [] : serverErrorMessages), [isServerErrorCleared, serverErrorMessages]);
2520
1539
  let nextValidation = (0, $jcIOw$useRef)($e5be200c675c3b3a$export$dad6ae84456c676a);
2521
1540
  let [currentValidity, setCurrentValidity] = (0, $jcIOw$useState)($e5be200c675c3b3a$export$dad6ae84456c676a);
2522
1541
  let lastError = (0, $jcIOw$useRef)($e5be200c675c3b3a$export$dad6ae84456c676a);
@@ -2563,9 +1582,7 @@ function $e5be200c675c3b3a$var$useFormValidationStateImpl(props) {
2563
1582
  function $e5be200c675c3b3a$var$asArray(v) {
2564
1583
  if (!v)
2565
1584
  return [];
2566
- return Array.isArray(v) ? v : [
2567
- v
2568
- ];
1585
+ return Array.isArray(v) ? v : [v];
2569
1586
  }
2570
1587
  function $e5be200c675c3b3a$var$runValidate(validate, value) {
2571
1588
  if (typeof validate === "function") {
@@ -2599,9 +1616,7 @@ function $458b0a5536c1a7cf$export$40bfa8c7b0832715(value, defaultValue, onChange
2599
1616
  if (wasControlled !== isControlled)
2600
1617
  console.warn(`WARN: A component changed from ${wasControlled ? "controlled" : "uncontrolled"} to ${isControlled ? "controlled" : "uncontrolled"}.`);
2601
1618
  isControlledRef.current = isControlled;
2602
- }, [
2603
- isControlled
2604
- ]);
1619
+ }, [isControlled]);
2605
1620
  let currentValue = isControlled ? value : stateValue;
2606
1621
  let setValue = (0, $6imuh$useCallback)((value2, ...args) => {
2607
1622
  let onChangeCaller = (value3, ...onChangeArgs) => {
@@ -2627,15 +1642,8 @@ function $458b0a5536c1a7cf$export$40bfa8c7b0832715(value, defaultValue, onChange
2627
1642
  setStateValue(value2);
2628
1643
  onChangeCaller(value2, ...args);
2629
1644
  }
2630
- }, [
2631
- isControlled,
2632
- currentValue,
2633
- onChange
2634
- ]);
2635
- return [
2636
- currentValue,
2637
- setValue
2638
- ];
1645
+ }, [isControlled, currentValue, onChange]);
1646
+ return [currentValue, setValue];
2639
1647
  }
2640
1648
 
2641
1649
  // ../../node_modules/@react-stately/radio/dist/import.mjs
@@ -2643,9 +1651,7 @@ import { useMemo as $fQ2SF$useMemo, useState as $fQ2SF$useState } from "react";
2643
1651
  var $a54cdc5c1942b639$var$instance = Math.round(Math.random() * 1e10);
2644
1652
  var $a54cdc5c1942b639$var$i = 0;
2645
1653
  function $a54cdc5c1942b639$export$bca9d026f8e704eb(props) {
2646
- let name = (0, $fQ2SF$useMemo)(() => props.name || `radio-group-${$a54cdc5c1942b639$var$instance}-${++$a54cdc5c1942b639$var$i}`, [
2647
- props.name
2648
- ]);
1654
+ let name = (0, $fQ2SF$useMemo)(() => props.name || `radio-group-${$a54cdc5c1942b639$var$instance}-${++$a54cdc5c1942b639$var$i}`, [props.name]);
2649
1655
  var _props_defaultValue;
2650
1656
  let [selectedValue, setSelected] = (0, $458b0a5536c1a7cf$export$40bfa8c7b0832715)(props.value, (_props_defaultValue = props.defaultValue) !== null && _props_defaultValue !== void 0 ? _props_defaultValue : null, props.onChange);
2651
1657
  let [lastFocusedValue, setLastFocusedValue] = (0, $fQ2SF$useState)(null);
@@ -2676,10 +1682,7 @@ function $a54cdc5c1942b639$export$bca9d026f8e704eb(props) {
2676
1682
  }
2677
1683
 
2678
1684
  // src/components/SegmentedControl/index.tsx
2679
- import {
2680
- useRadio,
2681
- useRadioGroup
2682
- } from "@react-aria/radio";
1685
+ import { useRadio, useRadioGroup } from "@react-aria/radio";
2683
1686
  import styled20, { css as css10 } from "styled-components";
2684
1687
 
2685
1688
  // src/components/SegmentedControl/RadioGroupContext.tsx
@@ -2701,142 +1704,62 @@ var useRadioContext = () => {
2701
1704
 
2702
1705
  // src/components/SegmentedControl/index.tsx
2703
1706
  import { jsx as jsx26, jsxs as jsxs13 } from "react/jsx-runtime";
2704
- var SegmentedControl = forwardRef15(
2705
- function SegmentedControlInner(props, ref) {
2706
- const ariaRadioGroupProps = useMemo2(
2707
- () => ({
2708
- ...props,
2709
- isDisabled: props.disabled,
2710
- isReadOnly: props.readonly,
2711
- isRequired: props.required,
2712
- "aria-label": props.name
2713
- }),
2714
- [props]
2715
- );
2716
- const state = $a54cdc5c1942b639$export$bca9d026f8e704eb(ariaRadioGroupProps);
2717
- const { radioGroupProps } = useRadioGroup(ariaRadioGroupProps, state);
2718
- const segmentedControlItems = useMemo2(() => {
2719
- return props.data.map(
2720
- (d) => typeof d === "string" ? { value: d, label: d } : d
2721
- );
2722
- }, [props.data]);
2723
- return /* @__PURE__ */ jsx26(
2724
- SegmentedControlRoot,
2725
- {
2726
- ref,
2727
- ...radioGroupProps,
2728
- className: props.className,
2729
- children: /* @__PURE__ */ jsx26(RadioProvider, { value: state, children: segmentedControlItems.map((item) => /* @__PURE__ */ jsx26(
2730
- Segmented,
2731
- {
2732
- value: item.value,
2733
- disabled: item.disabled,
2734
- children: item.label
2735
- },
2736
- item.value
2737
- )) })
2738
- }
2739
- );
2740
- }
2741
- );
1707
+ var SegmentedControl = forwardRef15(function SegmentedControlInner(props, ref) {
1708
+ const ariaRadioGroupProps = useMemo2(() => ({
1709
+ ...props,
1710
+ isDisabled: props.disabled,
1711
+ isReadOnly: props.readonly,
1712
+ isRequired: props.required,
1713
+ "aria-label": props.name
1714
+ }), [props]);
1715
+ const state = $a54cdc5c1942b639$export$bca9d026f8e704eb(ariaRadioGroupProps);
1716
+ const {
1717
+ radioGroupProps
1718
+ } = useRadioGroup(ariaRadioGroupProps, state);
1719
+ const segmentedControlItems = useMemo2(() => {
1720
+ return props.data.map((d) => typeof d === "string" ? {
1721
+ value: d,
1722
+ label: d
1723
+ } : d);
1724
+ }, [props.data]);
1725
+ return /* @__PURE__ */ jsx26(SegmentedControlRoot, { ref, ...radioGroupProps, className: props.className, children: /* @__PURE__ */ jsx26(RadioProvider, { value: state, children: segmentedControlItems.map((item) => /* @__PURE__ */ jsx26(Segmented, { value: item.value, disabled: item.disabled, children: item.label }, item.value)) }) });
1726
+ });
2742
1727
  var SegmentedControl_default = memo6(SegmentedControl);
2743
1728
  var Segmented = (props) => {
2744
1729
  const state = useRadioContext();
2745
1730
  const ref = useRef10(null);
2746
- const ariaRadioProps = useMemo2(
2747
- () => ({
2748
- value: props.value,
2749
- isDisabled: props.disabled,
2750
- children: props.children
2751
- }),
2752
- [props]
2753
- );
2754
- const { inputProps, isDisabled, isSelected } = useRadio(
2755
- ariaRadioProps,
2756
- state,
2757
- ref
2758
- );
2759
- return /* @__PURE__ */ jsxs13(
2760
- SegmentedRoot,
2761
- {
2762
- "aria-disabled": isDisabled || state.isReadOnly,
2763
- checked: isSelected,
2764
- children: [
2765
- /* @__PURE__ */ jsx26(SegmentedInput, { ...inputProps, ref }),
2766
- /* @__PURE__ */ jsx26(RadioLabel2, { children: /* @__PURE__ */ jsx26(SegmentedLabelInner, { children: props.children }) })
2767
- ]
2768
- }
2769
- );
1731
+ const ariaRadioProps = useMemo2(() => ({
1732
+ value: props.value,
1733
+ isDisabled: props.disabled,
1734
+ children: props.children
1735
+ }), [props]);
1736
+ const {
1737
+ inputProps,
1738
+ isDisabled,
1739
+ isSelected
1740
+ } = useRadio(ariaRadioProps, state, ref);
1741
+ return /* @__PURE__ */ jsxs13(SegmentedRoot, { "aria-disabled": isDisabled || state.isReadOnly, checked: isSelected, children: [
1742
+ /* @__PURE__ */ jsx26(SegmentedInput, { ...inputProps, ref }),
1743
+ /* @__PURE__ */ jsx26(RadioLabel2, { children: /* @__PURE__ */ jsx26(SegmentedLabelInner, { children: props.children }) })
1744
+ ] });
2770
1745
  };
2771
- var SegmentedControlRoot = styled20.div`
2772
- display: inline-flex;
2773
- align-items: center;
2774
-
2775
- background-color: var(--charcoal-surface3);
2776
- border-radius: 16px;
2777
- `;
2778
- var SegmentedRoot = styled20.label`
2779
- position: relative;
2780
- display: flex;
2781
- align-items: center;
2782
- cursor: pointer;
2783
- height: 32px;
2784
-
2785
- padding-right: 16px;
2786
- padding-left: 16px;
2787
- border-radius: 16px;
2788
- &:disabled,
2789
- &[aria-disabled]:not([aria-disabled='false']) {
2790
- cursor: default;
2791
- opacity: 0.32;
2792
- }
2793
- color: var(--charcoal-text2);
2794
-
2795
- ${({ checked = false }) => checked && css10`
2796
- background-color: var(--charcoal-brand);
2797
- color: var(--charcoal-text5);
2798
- `}
2799
- `;
2800
- var SegmentedInput = styled20.input`
2801
- position: absolute;
2802
-
2803
- height: 0px;
2804
- width: 0px;
2805
- padding: 0;
2806
- margin: 0;
2807
-
2808
- appearance: none;
2809
- box-sizing: border-box;
2810
- overflow: hidden;
2811
- white-space: nowrap;
2812
- opacity: 0;
2813
- `;
2814
- var RadioLabel2 = styled20.div`
2815
- background: transparent;
2816
- display: flex;
2817
- align-items: center;
2818
- height: 22px;
2819
- `;
2820
- var SegmentedLabelInner = styled20.div`
2821
- font-size: 14px;
2822
- line-height: 22px;
2823
- display: flow-root;
2824
-
2825
- &::before {
2826
- display: block;
2827
- width: 0;
2828
- height: 0;
2829
- content: '';
2830
- margin-top: -4px;
2831
- }
2832
- &::after {
2833
- display: block;
2834
- width: 0;
2835
- height: 0;
2836
- content: '';
2837
- margin-bottom: -4px;
2838
- }
2839
- `;
1746
+ var SegmentedControlRoot = styled20.div.withConfig({
1747
+ componentId: "ccl__sc-1xmkkqt-0"
1748
+ })(["display:inline-flex;align-items:center;background-color:var(--charcoal-surface3);border-radius:16px;"]);
1749
+ var SegmentedRoot = styled20.label.withConfig({
1750
+ componentId: "ccl__sc-1xmkkqt-1"
1751
+ })(["position:relative;display:flex;align-items:center;cursor:pointer;height:32px;padding-right:16px;padding-left:16px;border-radius:16px;&:disabled,&[aria-disabled]:not([aria-disabled='false']){cursor:default;opacity:0.32;}color:var(--charcoal-text2);", ""], ({
1752
+ checked = false
1753
+ }) => checked && css10(["background-color:var(--charcoal-brand);color:var(--charcoal-text5);"]));
1754
+ var SegmentedInput = styled20.input.withConfig({
1755
+ componentId: "ccl__sc-1xmkkqt-2"
1756
+ })(["position:absolute;height:0px;width:0px;padding:0;margin:0;appearance:none;box-sizing:border-box;overflow:hidden;white-space:nowrap;opacity:0;"]);
1757
+ var RadioLabel2 = styled20.div.withConfig({
1758
+ componentId: "ccl__sc-1xmkkqt-3"
1759
+ })(["background:transparent;display:flex;align-items:center;height:22px;"]);
1760
+ var SegmentedLabelInner = styled20.div.withConfig({
1761
+ componentId: "ccl__sc-1xmkkqt-4"
1762
+ })(["font-size:14px;line-height:22px;display:flow-root;&::before{display:block;width:0;height:0;content:'';margin-top:-4px;}&::after{display:block;width:0;height:0;content:'';margin-bottom:-4px;}"]);
2840
1763
 
2841
1764
  // src/components/Checkbox/index.tsx
2842
1765
  import { forwardRef as forwardRef16, memo as memo7, useMemo as useMemo3 } from "react";
@@ -2844,118 +1767,54 @@ import styled21, { css as css11 } from "styled-components";
2844
1767
  import { useCheckbox } from "@react-aria/checkbox";
2845
1768
  import { useObjectRef as useObjectRef3 } from "@react-aria/utils";
2846
1769
  import { useToggleState as useToggleState2 } from "react-stately";
2847
- import { disabledSelector as disabledSelector3 } from "@charcoal-ui/utils";
2848
1770
  import { focusVisibleFocusRingCss as focusVisibleFocusRingCss7 } from "@charcoal-ui/styled";
2849
1771
  import { jsx as jsx27, jsxs as jsxs14 } from "react/jsx-runtime";
2850
- var Checkbox = forwardRef16(
2851
- function CheckboxInner({ invalid = false, ...props }, ref) {
2852
- const ariaCheckboxProps = useMemo3(
2853
- () => ({
2854
- ...props,
2855
- isInValid: invalid,
2856
- isSelected: props.checked,
2857
- defaultSelected: props.defaultChecked,
2858
- validationState: invalid ? "invalid" : "valid",
2859
- "aria-label": "children" in props ? void 0 : props.label,
2860
- isDisabled: props.disabled
2861
- }),
2862
- [invalid, props]
2863
- );
2864
- const state = useToggleState2(ariaCheckboxProps);
2865
- const objectRef = useObjectRef3(ref);
2866
- const { inputProps } = useCheckbox(ariaCheckboxProps, state, objectRef);
2867
- const isDisabled = (props.disabled ?? false) || (props.readonly ?? false);
2868
- return /* @__PURE__ */ jsxs14(InputRoot, { "aria-disabled": isDisabled, className: props.className, children: [
2869
- /* @__PURE__ */ jsxs14(CheckboxRoot, { children: [
2870
- /* @__PURE__ */ jsx27(CheckboxInput, { type: "checkbox", ...inputProps }),
2871
- /* @__PURE__ */ jsx27(CheckboxInputOverlay, { "aria-hidden": true, checked: inputProps.checked, children: /* @__PURE__ */ jsx27(Icon_default, { name: "24/Check", unsafeNonGuidelineScale: 2 / 3 }) })
2872
- ] }),
2873
- "children" in props && /* @__PURE__ */ jsx27(InputLabel, { children: props.children })
2874
- ] });
2875
- }
2876
- );
1772
+ var Checkbox = forwardRef16(function CheckboxInner({
1773
+ invalid = false,
1774
+ ...props
1775
+ }, ref) {
1776
+ const ariaCheckboxProps = useMemo3(() => ({
1777
+ ...props,
1778
+ isInValid: invalid,
1779
+ isSelected: props.checked,
1780
+ defaultSelected: props.defaultChecked,
1781
+ validationState: invalid ? "invalid" : "valid",
1782
+ "aria-label": "children" in props ? void 0 : props.label,
1783
+ isDisabled: props.disabled
1784
+ }), [invalid, props]);
1785
+ const state = useToggleState2(ariaCheckboxProps);
1786
+ const objectRef = useObjectRef3(ref);
1787
+ const {
1788
+ inputProps
1789
+ } = useCheckbox(ariaCheckboxProps, state, objectRef);
1790
+ const isDisabled = (props.disabled ?? false) || (props.readonly ?? false);
1791
+ return /* @__PURE__ */ jsxs14(InputRoot, { "aria-disabled": isDisabled, className: props.className, children: [
1792
+ /* @__PURE__ */ jsxs14(CheckboxRoot, { children: [
1793
+ /* @__PURE__ */ jsx27(CheckboxInput, { type: "checkbox", ...inputProps, readOnly: props.readonly }),
1794
+ /* @__PURE__ */ jsx27(CheckboxInputOverlay, { "aria-hidden": true, checked: inputProps.checked, children: /* @__PURE__ */ jsx27(Icon_default, { name: "24/Check", unsafeNonGuidelineScale: 2 / 3 }) })
1795
+ ] }),
1796
+ "children" in props && /* @__PURE__ */ jsx27(InputLabel, { children: props.children })
1797
+ ] });
1798
+ });
2877
1799
  var Checkbox_default = memo7(Checkbox);
2878
- var hiddenCss = css11`
2879
- visibility: hidden;
2880
- `;
2881
- var InputRoot = styled21.label`
2882
- position: relative;
2883
- display: flex;
2884
-
2885
- cursor: pointer;
2886
- ${disabledSelector3} {
2887
- cursor: default;
2888
- }
2889
-
2890
- gap: 4px;
2891
- &:disabled,
2892
- &[aria-disabled]:not([aria-disabled='false']) {
2893
- opacity: 0.32;
2894
- }
2895
- `;
2896
- var CheckboxRoot = styled21.div`
2897
- position: relative;
2898
- `;
2899
- var CheckboxInput = styled21.input`
2900
- &[type='checkbox'] {
2901
- appearance: none;
2902
- display: block;
2903
- cursor: pointer;
2904
- margin: 0;
2905
- width: 20px;
2906
- height: 20px;
2907
- border-radius: 4px;
2908
- transition: 0.2s box-shadow, 0.2s background-color;
2909
-
2910
- &:checked {
2911
- background-color: var(--charcoal-brand);
2912
-
2913
- &:not(:disabled):not([aria-disabled]),
2914
- &[aria-disabled='false'] {
2915
- &:hover {
2916
- background-color: var(--charcoal-brand-hover);
2917
- }
2918
- &:active {
2919
- background-color: var(--charcoal-brand-press);
2920
- }
2921
- }
2922
- }
2923
-
2924
- &:not(:disabled):not([aria-disabled]),
2925
- &[aria-disabled='false'] {
2926
- ${focusVisibleFocusRingCss7}
2927
- &[aria-invalid='true'] {
2928
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
2929
- }
2930
- }
2931
-
2932
- &:not(:checked) {
2933
- border-width: 2px;
2934
- border-style: solid;
2935
- border-color: var(--charcoal-text4);
2936
- }
2937
- }
2938
- `;
2939
- var CheckboxInputOverlay = styled21.div`
2940
- position: absolute;
2941
- top: -2px;
2942
- left: -2px;
2943
- box-sizing: border-box;
2944
- display: flex;
2945
- align-items: center;
2946
- justify-content: center;
2947
- width: 24px;
2948
- height: 24px;
2949
- color: var(--charcoal-text5);
2950
-
2951
- ${({ checked }) => checked !== true && hiddenCss};
2952
- `;
2953
- var InputLabel = styled21.div`
2954
- color: var(--charcoal-text2);
2955
- font-size: 14px;
2956
- /** checkbox の height が 20px なのでcheckbox と text が揃っているように見せるために行ボックスの高さを 20px にしている */
2957
- line-height: 20px;
2958
- `;
1800
+ var hiddenCss = css11(["visibility:hidden;"]);
1801
+ var InputRoot = styled21.label.withConfig({
1802
+ componentId: "ccl__sc-wrdmwj-0"
1803
+ })(["position:relative;display:flex;cursor:pointer;gap:4px;&:disabled,&[aria-disabled]:not([aria-disabled='false']){cursor:default;opacity:0.32;}"]);
1804
+ var CheckboxRoot = styled21.div.withConfig({
1805
+ componentId: "ccl__sc-wrdmwj-1"
1806
+ })(["position:relative;"]);
1807
+ var CheckboxInput = styled21.input.withConfig({
1808
+ componentId: "ccl__sc-wrdmwj-2"
1809
+ })(["&[type='checkbox']{appearance:none;display:block;cursor:pointer;margin:0;width:20px;height:20px;border-radius:4px;transition:0.2s box-shadow,0.2s background-color;&:disabled{cursor:default;}&:read-only{cursor:default;}&:checked{background-color:var(--charcoal-brand);&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{&:hover{background-color:var(--charcoal-brand-hover);}&:active{background-color:var(--charcoal-brand-press);}}}&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{", " &[aria-invalid='true']{box-shadow:0 0 0 4px rgba(255,43,0,0.32);}}&:not(:checked){border-width:2px;border-style:solid;border-color:var(--charcoal-text4);}}"], focusVisibleFocusRingCss7);
1810
+ var CheckboxInputOverlay = styled21.div.withConfig({
1811
+ componentId: "ccl__sc-wrdmwj-3"
1812
+ })(["position:absolute;top:-2px;left:-2px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--charcoal-text5);", ";"], ({
1813
+ checked
1814
+ }) => checked !== true && hiddenCss);
1815
+ var InputLabel = styled21.div.withConfig({
1816
+ componentId: "ccl__sc-wrdmwj-4"
1817
+ })(["color:var(--charcoal-text2);font-size:14px;line-height:20px;"]);
2959
1818
 
2960
1819
  // src/components/TagItem/index.tsx
2961
1820
  import { forwardRef as forwardRef17, memo as memo8, useMemo as useMemo4 } from "react";
@@ -2969,188 +1828,98 @@ var sizeMap = {
2969
1828
  S: 32,
2970
1829
  M: 40
2971
1830
  };
2972
- var TagItem = forwardRef17(
2973
- function TagItemInner({
2974
- label,
2975
- translatedLabel,
2976
- bgColor = "#7ACCB1",
2977
- bgImage,
2978
- size = "M",
2979
- disabled,
2980
- status = "default",
2981
- className,
1831
+ var TagItem = forwardRef17(function TagItemInner({
1832
+ label,
1833
+ translatedLabel,
1834
+ bgColor = "#7ACCB1",
1835
+ bgImage,
1836
+ size = "M",
1837
+ disabled,
1838
+ status = "default",
1839
+ className,
1840
+ ...props
1841
+ }, _ref) {
1842
+ const ref = useObjectRef4(_ref);
1843
+ const ariaButtonProps = useMemo4(() => ({
1844
+ elementType: "a",
1845
+ isDisabled: disabled,
2982
1846
  ...props
2983
- }, _ref) {
2984
- const ref = useObjectRef4(_ref);
2985
- const ariaButtonProps = useMemo4(
2986
- () => ({
2987
- elementType: "a",
2988
- isDisabled: disabled,
2989
- ...props
2990
- }),
2991
- [disabled, props]
2992
- );
2993
- const { buttonProps } = useButton(ariaButtonProps, ref);
2994
- const hasTranslatedLabel = translatedLabel !== void 0 && translatedLabel.length > 0;
2995
- return /* @__PURE__ */ jsxs15(
2996
- TagItemRoot,
2997
- {
2998
- ref,
2999
- size: hasTranslatedLabel ? "M" : size,
3000
- status,
3001
- ...buttonProps,
3002
- className,
3003
- children: [
3004
- /* @__PURE__ */ jsx28(Background, { bgColor, bgImage, status }),
3005
- /* @__PURE__ */ jsxs15(Inner, { children: [
3006
- /* @__PURE__ */ jsxs15(LabelWrapper, { isTranslate: hasTranslatedLabel, children: [
3007
- hasTranslatedLabel && /* @__PURE__ */ jsx28(TranslatedLabel, { children: /* @__PURE__ */ jsx28(Label3, { children: translatedLabel }) }),
3008
- /* @__PURE__ */ jsx28(Label3, { children: label })
3009
- ] }),
3010
- status === "active" && /* @__PURE__ */ jsx28(Icon_default, { name: "16/Remove" })
3011
- ] })
3012
- ]
3013
- }
3014
- );
3015
- }
3016
- );
1847
+ }), [disabled, props]);
1848
+ const {
1849
+ buttonProps
1850
+ } = useButton(ariaButtonProps, ref);
1851
+ const hasTranslatedLabel = translatedLabel !== void 0 && translatedLabel.length > 0;
1852
+ return /* @__PURE__ */ jsxs15(TagItemRoot, { ref, size: hasTranslatedLabel ? "M" : size, status, ...buttonProps, className, children: [
1853
+ /* @__PURE__ */ jsx28(Background, { bgColor, bgImage, status }),
1854
+ /* @__PURE__ */ jsxs15(Inner, { children: [
1855
+ /* @__PURE__ */ jsxs15(LabelWrapper, { isTranslate: hasTranslatedLabel, children: [
1856
+ hasTranslatedLabel && /* @__PURE__ */ jsx28(TranslatedLabel, { children: /* @__PURE__ */ jsx28(Label3, { children: translatedLabel }) }),
1857
+ /* @__PURE__ */ jsx28(Label3, { children: label })
1858
+ ] }),
1859
+ status === "active" && /* @__PURE__ */ jsx28(Icon_default, { name: "16/Remove" })
1860
+ ] })
1861
+ ] });
1862
+ });
3017
1863
  var TagItem_default = memo8(TagItem);
3018
- var horizontalPadding = ({ left, right }) => css12`
3019
- padding-right: ${px2(right)};
3020
- padding-left: ${px2(left)};
3021
- `;
1864
+ var horizontalPadding = ({
1865
+ left,
1866
+ right
1867
+ }) => css12(["padding-right:", ";padding-left:", ";"], px2(right), px2(left));
3022
1868
  var tagItemRootSize = (size) => {
3023
1869
  switch (size) {
3024
1870
  case "M":
3025
- return horizontalPadding({ left: 24, right: 24 });
1871
+ return horizontalPadding({
1872
+ left: 24,
1873
+ right: 24
1874
+ });
3026
1875
  case "S":
3027
- return horizontalPadding({ left: 16, right: 16 });
1876
+ return horizontalPadding({
1877
+ left: 16,
1878
+ right: 16
1879
+ });
3028
1880
  }
3029
1881
  };
3030
- var activeTagItemRoot = horizontalPadding({ left: 16, right: 8 });
3031
- var TagItemRoot = styled22.a`
3032
- isolation: isolate;
3033
- position: relative;
3034
- height: ${({ size }) => sizeMap[size]}px;
3035
- display: inline-flex;
3036
- align-items: center;
3037
- justify-content: center;
3038
- text-decoration: none;
3039
- cursor: pointer;
3040
- overflow: hidden;
3041
- border-radius: 4px;
3042
- ${({ size, status }) => status !== "active" && tagItemRootSize(size)}
3043
- ${({ status }) => status === "active" && activeTagItemRoot}
3044
- color: ${({ status }) => status === "inactive" ? "var(--charcoal-text2)" : "var(--charcoal-text5)"};
3045
-
3046
- transition: 0.2s box-shadow;
3047
-
3048
- &:not(:disabled):not([aria-disabled]),
3049
- &[aria-disabled='false'] {
3050
- ${focusVisibleFocusRingCss8}
3051
- }
3052
-
3053
- &:disabled,
3054
- &[aria-disabled]:not([aria-disabled='false']) {
3055
- opacity: 0.32;
3056
- cursor: default;
3057
- }
3058
- `;
3059
- var Background = styled22.div`
3060
- position: absolute;
3061
- z-index: 1;
3062
- top: 0;
3063
- left: 0;
3064
- width: 100%;
3065
- height: 100%;
3066
-
3067
- background-color: ${({ bgColor }) => bgColor};
3068
- ${({ status }) => status === "inactive" && css12`
3069
- background-color: var(--charcoal-surface3);
3070
- `}
3071
-
3072
- ${({ bgImage }) => bgImage !== void 0 && css12`
3073
- background-color: var(--charcoal-surface4);
3074
-
3075
- &::before {
3076
- content: '';
3077
- position: absolute;
3078
- top: 0;
3079
- left: 0;
3080
- width: 100%;
3081
- height: 100%;
3082
- background-position: center;
3083
- background-size: cover;
3084
- background-image: url(${bgImage});
3085
- mix-blend-mode: overlay;
3086
- }
3087
- `}
3088
- `;
3089
- var Inner = styled22.div`
3090
- display: inline-flex;
3091
- gap: 8px;
3092
- align-items: center;
3093
- z-index: 2;
3094
- `;
3095
- var labelCSS = css12`
3096
- font-size: 14px;
3097
- line-height: 22px;
3098
- font-weight: bold;
3099
- display: flow-root;
3100
-
3101
- &::before {
3102
- display: block;
3103
- width: 0;
3104
- height: 0;
3105
- content: '';
3106
- margin-top: -4px;
3107
- }
3108
- &::after {
3109
- display: block;
3110
- width: 0;
3111
- height: 0;
3112
- content: '';
3113
- margin-bottom: -4px;
3114
- }
3115
- `;
3116
- var translateLabelCSS = css12`
3117
- display: flex;
3118
- align-items: center;
3119
- flex-direction: column;
3120
- font-size: 10px;
3121
- `;
3122
- var LabelWrapper = styled22.div`
3123
- ${({ isTranslate }) => isTranslate ?? false ? translateLabelCSS : labelCSS}
3124
- `;
3125
- var Label3 = styled22.span`
3126
- max-width: 152px;
3127
- overflow: hidden;
3128
- text-overflow: ellipsis;
3129
- white-space: nowrap;
3130
- font-size: inherit;
3131
- color: inherit;
3132
- line-height: inherit;
3133
- `;
3134
- var TranslatedLabel = styled22.div`
3135
- font-size: 12px;
3136
- line-height: 20px;
3137
- font-weight: bold;
3138
- display: flow-root;
3139
- &::before {
3140
- display: block;
3141
- width: 0;
3142
- height: 0;
3143
- content: '';
3144
- margin-top: -4px;
3145
- }
3146
- &::after {
3147
- display: block;
3148
- width: 0;
3149
- height: 0;
3150
- content: '';
3151
- margin-bottom: -4px;
3152
- }
3153
- `;
1882
+ var activeTagItemRoot = horizontalPadding({
1883
+ left: 16,
1884
+ right: 8
1885
+ });
1886
+ var TagItemRoot = styled22.a.withConfig({
1887
+ componentId: "ccl__sc-11j9pu2-0"
1888
+ })(["isolation:isolate;position:relative;height:", "px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;cursor:pointer;overflow:hidden;border-radius:4px;", " ", " color:", ";transition:0.2s box-shadow;&:not(:disabled):not([aria-disabled]),&[aria-disabled='false']{", "}&:disabled,&[aria-disabled]:not([aria-disabled='false']){opacity:0.32;cursor:default;}"], ({
1889
+ size
1890
+ }) => sizeMap[size], ({
1891
+ size,
1892
+ status
1893
+ }) => status !== "active" && tagItemRootSize(size), ({
1894
+ status
1895
+ }) => status === "active" && activeTagItemRoot, ({
1896
+ status
1897
+ }) => status === "inactive" ? "var(--charcoal-text2)" : "var(--charcoal-text5)", focusVisibleFocusRingCss8);
1898
+ var Background = styled22.div.withConfig({
1899
+ componentId: "ccl__sc-11j9pu2-1"
1900
+ })(["position:absolute;z-index:1;top:0;left:0;width:100%;height:100%;background-color:", ";", " ", ""], ({
1901
+ bgColor
1902
+ }) => bgColor, ({
1903
+ status
1904
+ }) => status === "inactive" && css12(["background-color:var(--charcoal-surface3);"]), ({
1905
+ bgImage
1906
+ }) => bgImage !== void 0 && css12(["background-color:var(--charcoal-surface4);&::before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background-position:center;background-size:cover;background-image:url(", ");mix-blend-mode:overlay;}"], bgImage));
1907
+ var Inner = styled22.div.withConfig({
1908
+ componentId: "ccl__sc-11j9pu2-2"
1909
+ })(["display:inline-flex;gap:8px;align-items:center;z-index:2;"]);
1910
+ var labelCSS = css12(["font-size:14px;line-height:22px;font-weight:bold;display:flow-root;&::before{display:block;width:0;height:0;content:'';margin-top:-4px;}&::after{display:block;width:0;height:0;content:'';margin-bottom:-4px;}"]);
1911
+ var translateLabelCSS = css12(["display:flex;align-items:center;flex-direction:column;font-size:10px;"]);
1912
+ var LabelWrapper = styled22.div.withConfig({
1913
+ componentId: "ccl__sc-11j9pu2-3"
1914
+ })(["", ""], ({
1915
+ isTranslate
1916
+ }) => isTranslate ?? false ? translateLabelCSS : labelCSS);
1917
+ var Label3 = styled22.span.withConfig({
1918
+ componentId: "ccl__sc-11j9pu2-4"
1919
+ })(["max-width:152px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:inherit;color:inherit;line-height:inherit;"]);
1920
+ var TranslatedLabel = styled22.div.withConfig({
1921
+ componentId: "ccl__sc-11j9pu2-5"
1922
+ })(["font-size:12px;line-height:20px;font-weight:bold;display:flow-root;&::before{display:block;width:0;height:0;content:'';margin-top:-4px;}&::after{display:block;width:0;height:0;content:'';margin-bottom:-4px;}"]);
3154
1923
  export {
3155
1924
  Button_default as Button,
3156
1925
  CharcoalProvider,