@charcoal-ui/react 3.4.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/components/Button/index.d.ts.map +1 -1
  2. package/dist/components/Checkbox/index.d.ts.map +1 -1
  3. package/dist/components/Checkbox/index.story.d.ts +1 -0
  4. package/dist/components/Checkbox/index.story.d.ts.map +1 -1
  5. package/dist/components/DropdownSelector/DropdownMenuItem.d.ts.map +1 -1
  6. package/dist/components/DropdownSelector/ListItem/index.d.ts.map +1 -1
  7. package/dist/components/DropdownSelector/Popover/index.d.ts.map +1 -1
  8. package/dist/components/DropdownSelector/index.d.ts.map +1 -1
  9. package/dist/components/FieldLabel/index.d.ts.map +1 -1
  10. package/dist/components/IconButton/index.d.ts.map +1 -1
  11. package/dist/components/LoadingSpinner/index.d.ts.map +1 -1
  12. package/dist/components/Modal/ModalPlumbing.d.ts.map +1 -1
  13. package/dist/components/Modal/index.d.ts.map +1 -1
  14. package/dist/components/Modal/index.story.d.ts +1 -0
  15. package/dist/components/Modal/index.story.d.ts.map +1 -1
  16. package/dist/components/MultiSelect/index.d.ts.map +1 -1
  17. package/dist/components/MultiSelect/index.story.d.ts +2 -0
  18. package/dist/components/MultiSelect/index.story.d.ts.map +1 -1
  19. package/dist/components/Radio/index.d.ts.map +1 -1
  20. package/dist/components/SegmentedControl/index.d.ts.map +1 -1
  21. package/dist/components/Switch/index.d.ts.map +1 -1
  22. package/dist/components/TagItem/index.d.ts.map +1 -1
  23. package/dist/components/TextArea/index.d.ts.map +1 -1
  24. package/dist/components/TextField/TextField.story.d.ts.map +1 -1
  25. package/dist/components/TextField/index.d.ts +4 -0
  26. package/dist/components/TextField/index.d.ts.map +1 -1
  27. package/dist/components/TextField/useFocusWithClick.d.ts +3 -0
  28. package/dist/components/TextField/useFocusWithClick.d.ts.map +1 -0
  29. package/dist/index.cjs.js +935 -494
  30. package/dist/index.cjs.js.map +1 -1
  31. package/dist/index.esm.js +863 -422
  32. package/dist/index.esm.js.map +1 -1
  33. package/dist/styled.d.ts +4 -4
  34. package/package.json +9 -9
  35. package/src/components/Button/__snapshots__/index.story.storyshot +312 -592
  36. package/src/components/Button/index.tsx +50 -14
  37. package/src/components/Checkbox/__snapshots__/index.story.storyshot +209 -40
  38. package/src/components/Checkbox/__snapshots__/snapshot.test.tsx.snap +410 -80
  39. package/src/components/Checkbox/index.story.tsx +24 -0
  40. package/src/components/Checkbox/index.tsx +47 -17
  41. package/src/components/Clickable/__snapshots__/index.story.storyshot +4 -0
  42. package/src/components/Clickable/index.tsx +1 -0
  43. package/src/components/DropdownSelector/DropdownMenuItem.tsx +19 -3
  44. package/src/components/DropdownSelector/ListItem/__snapshots__/index.story.storyshot +3 -10
  45. package/src/components/DropdownSelector/ListItem/index.tsx +6 -4
  46. package/src/components/DropdownSelector/MenuItemGroup/index.tsx +1 -1
  47. package/src/components/DropdownSelector/MenuList/__snapshots__/index.story.storyshot +4 -13
  48. package/src/components/DropdownSelector/Popover/__snapshots__/index.story.storyshot +20 -37
  49. package/src/components/DropdownSelector/Popover/index.tsx +5 -8
  50. package/src/components/DropdownSelector/__snapshots__/index.story.storyshot +60 -191
  51. package/src/components/DropdownSelector/index.tsx +70 -20
  52. package/src/components/FieldLabel/index.tsx +77 -12
  53. package/src/components/IconButton/__snapshots__/index.story.storyshot +30 -54
  54. package/src/components/IconButton/index.tsx +51 -26
  55. package/src/components/LoadingSpinner/index.tsx +3 -6
  56. package/src/components/Modal/Dialog/index.tsx +1 -1
  57. package/src/components/Modal/ModalPlumbing.tsx +26 -5
  58. package/src/components/Modal/__snapshots__/index.story.storyshot +2454 -108
  59. package/src/components/Modal/index.story.tsx +27 -0
  60. package/src/components/Modal/index.tsx +19 -4
  61. package/src/components/MultiSelect/__snapshots__/index.story.storyshot +528 -25
  62. package/src/components/MultiSelect/index.story.tsx +60 -0
  63. package/src/components/MultiSelect/index.tsx +82 -22
  64. package/src/components/Radio/__snapshots__/index.story.storyshot +32 -49
  65. package/src/components/Radio/index.tsx +71 -23
  66. package/src/components/SegmentedControl/__snapshots__/index.story.storyshot +18 -19
  67. package/src/components/SegmentedControl/index.tsx +35 -15
  68. package/src/components/Switch/__snapshots__/index.story.storyshot +6 -18
  69. package/src/components/Switch/index.tsx +10 -15
  70. package/src/components/TagItem/__snapshots__/index.story.storyshot +39 -158
  71. package/src/components/TagItem/index.tsx +84 -19
  72. package/src/components/TextArea/__snapshots__/TextArea.story.storyshot +126 -321
  73. package/src/components/TextArea/index.tsx +38 -43
  74. package/src/components/TextField/TextField.story.tsx +35 -19
  75. package/src/components/TextField/__snapshots__/TextField.story.storyshot +309 -563
  76. package/src/components/TextField/index.tsx +85 -84
  77. package/src/components/TextField/useFocusWithClick.tsx +22 -0
package/dist/index.cjs.js CHANGED
@@ -110,7 +110,7 @@ function CharcoalProvider({
110
110
 
111
111
  // src/components/Button/index.tsx
112
112
  var import_react2 = require("react");
113
- var import_styled_components4 = __toESM(require("styled-components"));
113
+ var import_styled_components3 = __toESM(require("styled-components"));
114
114
 
115
115
  // src/_lib/index.ts
116
116
  function unreachable(value) {
@@ -134,14 +134,9 @@ function countCodePointsInString(string) {
134
134
  return Array.from(string).length;
135
135
  }
136
136
 
137
- // src/styled.ts
138
- var import_styled_components2 = __toESM(require("styled-components"));
139
- var import_styled2 = require("@charcoal-ui/styled");
140
- var theme = (0, import_styled2.createTheme)(import_styled_components2.default);
141
-
142
137
  // src/components/Clickable/index.tsx
143
138
  var React2 = __toESM(require("react"));
144
- var import_styled_components3 = __toESM(require("styled-components"));
139
+ var import_styled_components2 = __toESM(require("styled-components"));
145
140
  var import_utils = require("@charcoal-ui/utils");
146
141
  var import_jsx_runtime3 = require("react/jsx-runtime");
147
142
  var Clickable = React2.forwardRef(
@@ -167,7 +162,7 @@ var Clickable = React2.forwardRef(
167
162
  }
168
163
  );
169
164
  var Clickable_default = Clickable;
170
- var StyledClickableDiv = import_styled_components3.default.div`
165
+ var StyledClickableDiv = import_styled_components2.default.div`
171
166
  cursor: pointer;
172
167
 
173
168
  ${import_utils.disabledSelector} {
@@ -184,6 +179,7 @@ var StyledClickableDiv = import_styled_components3.default.div`
184
179
  text-rendering: inherit;
185
180
  letter-spacing: inherit;
186
181
  word-spacing: inherit;
182
+ text-decoration: none;
187
183
 
188
184
  &:focus {
189
185
  outline: none;
@@ -223,7 +219,8 @@ var Button = (0, import_react2.forwardRef)(function Button2({
223
219
  {
224
220
  ...rest,
225
221
  disabled,
226
- $variant: variant,
222
+ $background: variantToBackground(variant),
223
+ $color: variantToFont(variant),
227
224
  $size: size,
228
225
  $fullWidth: fixed,
229
226
  ref,
@@ -232,7 +229,15 @@ var Button = (0, import_react2.forwardRef)(function Button2({
232
229
  );
233
230
  });
234
231
  var Button_default = Button;
235
- var StyledButton = (0, import_styled_components4.default)(Clickable_default)`
232
+ var horizontalPaddingSmall = import_styled_components3.css`
233
+ padding-right: 16px;
234
+ padding-left: 16px;
235
+ `;
236
+ var horizontalPaddingMedium = import_styled_components3.css`
237
+ padding-right: 24px;
238
+ padding-left: 24px;
239
+ `;
240
+ var StyledButton = (0, import_styled_components3.default)(Clickable_default)`
236
241
  width: ${(p) => p.$fullWidth ? "stretch" : "min-content"};
237
242
  display: inline-grid;
238
243
  align-items: center;
@@ -240,16 +245,40 @@ var StyledButton = (0, import_styled_components4.default)(Clickable_default)`
240
245
  cursor: pointer;
241
246
  user-select: none;
242
247
  white-space: nowrap;
248
+ border-radius: 999999px;
249
+ font-size: 14px;
250
+ line-height: 22px;
251
+ font-weight: bold;
252
+
253
+ ${(p) => p.$size === "M" ? horizontalPaddingMedium : horizontalPaddingSmall}
243
254
 
244
- ${(p) => theme((o) => [
245
- o.font[variantToFont(p.$variant)].hover.press,
246
- o.bg[variantToBackground(p.$variant)].hover.press,
247
- o.typography(14).bold.preserveHalfLeading,
248
- o.padding.horizontal(p.$size === "M" ? 24 : 16),
249
- o.disabled,
250
- o.borderRadius("oval"),
251
- o.outline.default.focus
252
- ])}
255
+ color: var(--charcoal-${(p) => p.$color});
256
+ background-color: var(--charcoal-${(p) => p.$background});
257
+ transition: 0.2s color, 0.2s background-color, 0.2s box-shadow;
258
+
259
+ &:not(:disabled):not([aria-disabled]),
260
+ &[aria-disabled='false'] {
261
+ &:active,
262
+ &:focus,
263
+ &:focus-visible {
264
+ outline: none;
265
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
266
+ }
267
+
268
+ &:hover {
269
+ color: var(--charcoal-${(p) => p.$color}-hover);
270
+ background-color: var(--charcoal-${(p) => p.$background}-hover);
271
+ }
272
+ &:active {
273
+ color: var(--charcoal-${(p) => p.$color}-press);
274
+ background-color: var(--charcoal-${(p) => p.$background}-press);
275
+ }
276
+ }
277
+
278
+ &:disabled,
279
+ &[aria-disabled]:not([aria-disabled='false']) {
280
+ opacity: 0.32;
281
+ }
253
282
 
254
283
  /* よく考えたらheight=32って定義が存在しないな... */
255
284
  height: ${(p) => p.$size === "M" ? 40 : 32}px;
@@ -289,63 +318,83 @@ function variantToFont(variant) {
289
318
 
290
319
  // src/components/IconButton/index.tsx
291
320
  var import_react3 = require("react");
292
- var import_styled_components5 = __toESM(require("styled-components"));
321
+ var import_styled_components4 = __toESM(require("styled-components"));
293
322
  var import_jsx_runtime5 = require("react/jsx-runtime");
294
323
  var IconButton = (0, import_react3.forwardRef)(
295
324
  function IconButtonInner({ variant = "Default", size = "M", icon, ...rest }, ref) {
296
325
  validateIconSize(size, icon);
297
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(StyledIconButton, { ...rest, ref, variant, size, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("pixiv-icon", { name: icon }) });
326
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(StyledIconButton, { ...rest, ref, $size: size, $variant: variant, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("pixiv-icon", { name: icon }) });
298
327
  }
299
328
  );
300
329
  var IconButton_default = IconButton;
301
- var StyledIconButton = (0, import_styled_components5.default)(Clickable_default).attrs(styledProps)`
330
+ var StyledIconButton = (0, import_styled_components4.default)(Clickable_default).attrs(styledProps)`
302
331
  user-select: none;
303
332
 
304
- width: ${(p) => p.width}px;
305
- height: ${(p) => p.height}px;
333
+ width: ${(p) => p.$width}px;
334
+ height: ${(p) => p.$height}px;
306
335
  display: flex;
307
336
  align-items: center;
308
337
  justify-content: center;
338
+ color: var(${({ $font }) => `--charcoal-${$font}`});
339
+ background-color: var(${({ $background }) => `--charcoal-${$background}`});
340
+ border-radius: 999999px;
341
+ transition: 0.2s background-color, 0.2s box-shadow;
342
+
343
+ &:not(:disabled):not([aria-disabled]),
344
+ &[aria-disabled='false'] {
345
+ &:hover {
346
+ background-color: var(
347
+ ${({ $background }) => `--charcoal-${$background}-hover`}
348
+ );
349
+ }
350
+ &:active {
351
+ background-color: var(
352
+ ${({ $background }) => `--charcoal-${$background}-press`}
353
+ );
354
+ }
355
+ &:focus,
356
+ &:active,
357
+ &:focus-visible {
358
+ outline: none;
359
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
360
+ }
361
+ }
309
362
 
310
- ${({ font, background }) => theme((o) => [
311
- o.font[font],
312
- o.bg[background].hover.press,
313
- o.disabled,
314
- o.borderRadius("oval"),
315
- o.outline.default.focus
316
- ])}
363
+ &:disabled,
364
+ &[aria-disabled]:not([aria-disabled='false']) {
365
+ opacity: 0.32;
366
+ }
317
367
  `;
318
- function styledProps(props) {
368
+ function styledProps({ $size, $variant }) {
319
369
  return {
320
- ...props,
321
- ...variantToProps(props.variant),
322
- ...sizeToProps(props.size)
370
+ ...variantToProps($variant),
371
+ ...sizeToProps($size)
323
372
  };
324
373
  }
325
374
  function variantToProps(variant) {
326
375
  switch (variant) {
327
376
  case "Default":
328
- return { font: "text3", background: "transparent" };
377
+ return { $font: "text3", $background: "transparent" };
329
378
  case "Overlay":
330
- return { font: "text5", background: "surface4" };
379
+ return { $font: "text5", $background: "surface4" };
331
380
  }
332
381
  }
333
382
  function sizeToProps(size) {
334
383
  switch (size) {
335
384
  case "XS":
336
385
  return {
337
- width: 20,
338
- height: 20
386
+ $width: 20,
387
+ $height: 20
339
388
  };
340
389
  case "S":
341
390
  return {
342
- width: 32,
343
- height: 32
391
+ $width: 32,
392
+ $height: 32
344
393
  };
345
394
  case "M":
346
395
  return {
347
- width: 40,
348
- height: 40
396
+ $width: 40,
397
+ $height: 40
349
398
  };
350
399
  }
351
400
  }
@@ -375,9 +424,8 @@ function validateIconSize(size, icon) {
375
424
  // src/components/Radio/index.tsx
376
425
  var import_react4 = require("react");
377
426
  var React3 = __toESM(require("react"));
378
- var import_styled_components6 = __toESM(require("styled-components"));
427
+ var import_styled_components5 = __toESM(require("styled-components"));
379
428
  var import_warning = __toESM(require("warning"));
380
- var import_utils2 = require("@charcoal-ui/utils");
381
429
  var import_jsx_runtime6 = require("react/jsx-runtime");
382
430
  var Radio = (0, import_react4.forwardRef)(function RadioInner({ value, disabled = false, children, className }, ref) {
383
431
  const {
@@ -418,16 +466,19 @@ var Radio = (0, import_react4.forwardRef)(function RadioInner({ value, disabled
418
466
  ] });
419
467
  });
420
468
  var Radio_default = (0, import_react4.memo)(Radio);
421
- var RadioRoot = import_styled_components6.default.label`
469
+ var RadioRoot = import_styled_components5.default.label`
422
470
  display: grid;
423
471
  grid-template-columns: auto 1fr;
424
- grid-gap: ${({ theme: theme3 }) => (0, import_utils2.px)(theme3.spacing[4])};
472
+ grid-gap: 4px;
425
473
  align-items: center;
426
474
  cursor: pointer;
427
475
 
428
- ${theme((o) => [o.disabled])}
476
+ &:disabled,
477
+ &[aria-disabled]:not([aria-disabled='false']) {
478
+ opacity: 0.32;
479
+ }
429
480
  `;
430
- var RadioInput = import_styled_components6.default.input.attrs({ type: "radio" })`
481
+ var RadioInput = import_styled_components5.default.input.attrs({ type: "radio" })`
431
482
  /** Make prior to browser default style */
432
483
  &[type='radio'] {
433
484
  appearance: none;
@@ -440,46 +491,92 @@ var RadioInput = import_styled_components6.default.input.attrs({ type: "radio" }
440
491
  width: 20px;
441
492
  height: 20px;
442
493
  cursor: pointer;
494
+ border-radius: 999999px;
495
+ background-color: var(--charcoal-surface1);
496
+ transition: 0.2s background-color, 0.2s box-shadow;
497
+
498
+ &:not(:disabled):not([aria-disabled]),
499
+ &[aria-disabled='false'] {
500
+ ${({ invalid = false }) => invalid && import_styled_components5.css`
501
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
502
+ `}
443
503
 
444
- ${({ invalid = false }) => theme((o) => [
445
- o.borderRadius("oval"),
446
- o.bg.surface1.hover.press,
447
- invalid && o.outline.assertive
448
- ])};
504
+ &:hover {
505
+ background-color: var(--charcoal-surface1-hover);
506
+ }
507
+ &:active {
508
+ background-color: var(--charcoal-surface1-press);
509
+ }
510
+ &:focus,
511
+ &:active,
512
+ &:focus-visible {
513
+ outline: none;
514
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
515
+ }
516
+ }
449
517
 
450
518
  &:not(:checked) {
451
519
  border-width: 2px;
452
520
  border-style: solid;
453
- border-color: ${({ theme: theme3 }) => theme3.color.text3};
521
+ border-color: var(--charcoal-text3);
454
522
  }
455
523
 
456
524
  &:checked {
457
- ${theme((o) => o.bg.brand.hover.press)}
458
-
525
+ background-color: var(--charcoal-brand);
459
526
  &::after {
460
527
  content: '';
461
528
  display: block;
462
529
  width: 8px;
463
530
  height: 8px;
464
531
  pointer-events: none;
532
+ background-color: var(--charcoal-text5);
533
+ border-radius: 999999px;
534
+ transition: 0.2s background-color, 0.2s box-shadow;
535
+ }
465
536
 
466
- ${theme((o) => [o.bg.text5.hover.press, o.borderRadius("oval")])}
537
+ &:not(:disabled):not([aria-disabled]),
538
+ &[aria-disabled='false'] {
539
+ &:hover {
540
+ background-color: var(--charcoal-brand-hover);
541
+ &::after {
542
+ background-color: var(--charcoal-text5-hover);
543
+ }
544
+ }
545
+ &:active {
546
+ background-color: var(--charcoal-brand-press);
547
+ &::after {
548
+ background-color: var(--charcoal-text5-press);
549
+ }
550
+ }
467
551
  }
468
552
  }
469
-
470
- ${theme((o) => o.outline.default.focus)}
471
-
472
- /* FIXME: o.outline.default.focus の transition に o.bg.brand の transition が打ち消されてしまう */
473
- transition: all 0.2s !important;
474
553
  }
475
554
  `;
476
- var RadioLabel = import_styled_components6.default.div`
477
- ${theme((o) => [o.typography(14), o.font.text2])}
555
+ var RadioLabel = import_styled_components5.default.div`
556
+ font-size: 14px;
557
+ line-height: 22px;
558
+ display: flow-root;
559
+ color: var(--charcoal-text2);
560
+
561
+ &::before {
562
+ display: block;
563
+ width: 0;
564
+ height: 0;
565
+ content: '';
566
+ margin-top: -4px;
567
+ }
568
+ &::after {
569
+ display: block;
570
+ width: 0;
571
+ height: 0;
572
+ content: '';
573
+ margin-bottom: -4px;
574
+ }
478
575
  `;
479
- var StyledRadioGroup = import_styled_components6.default.div`
576
+ var StyledRadioGroup = import_styled_components5.default.div`
480
577
  display: grid;
481
578
  grid-template-columns: 1fr;
482
- grid-gap: ${({ theme: theme3 }) => (0, import_utils2.px)(theme3.spacing[8])};
579
+ grid-gap: 8px;
483
580
  `;
484
581
  var RadioGroupContext = React3.createContext({
485
582
  name: void 0,
@@ -538,9 +635,9 @@ function RadioGroup({
538
635
 
539
636
  // src/components/MultiSelect/index.tsx
540
637
  var import_react6 = require("react");
541
- var import_styled_components7 = __toESM(require("styled-components"));
638
+ var import_styled_components6 = __toESM(require("styled-components"));
542
639
  var import_warning2 = __toESM(require("warning"));
543
- var import_utils3 = require("@charcoal-ui/utils");
640
+ var import_utils2 = require("@charcoal-ui/utils");
544
641
 
545
642
  // src/components/MultiSelect/context.ts
546
643
  var import_react5 = require("react");
@@ -624,44 +721,96 @@ var MultiSelect = (0, import_react6.forwardRef)(
624
721
  }
625
722
  );
626
723
  var MultiSelect_default = (0, import_react6.memo)(MultiSelect);
627
- var MultiSelectRoot = import_styled_components7.default.label`
724
+ var MultiSelectRoot = import_styled_components6.default.label`
628
725
  display: grid;
629
726
  grid-template-columns: auto 1fr;
630
727
  align-items: center;
631
728
  position: relative;
632
729
  cursor: pointer;
633
- ${import_utils3.disabledSelector} {
730
+ gap: ${({ theme }) => (0, import_utils2.px)(theme.spacing[4])};
731
+ &:disabled,
732
+ &[aria-disabled]:not([aria-disabled='false']) {
733
+ opacity: 0.32;
634
734
  cursor: default;
635
735
  }
636
- gap: ${({ theme: theme3 }) => (0, import_utils3.px)(theme3.spacing[4])};
637
- ${theme((o) => o.disabled)}
638
736
  `;
639
- var MultiSelectLabel = import_styled_components7.default.div`
737
+ var MultiSelectLabel = import_styled_components6.default.div`
640
738
  display: flex;
641
739
  align-items: center;
642
- ${theme((o) => [o.typography(14), o.font.text2])}
740
+ font-size: 14px;
741
+ line-height: 22px;
742
+ display: flow-root;
743
+ color: var(--charcoal-text2);
744
+
745
+ &::before {
746
+ display: block;
747
+ width: 0;
748
+ height: 0;
749
+ content: '';
750
+ margin-top: -4px;
751
+ }
752
+ &::after {
753
+ display: block;
754
+ width: 0;
755
+ height: 0;
756
+ content: '';
757
+ margin-bottom: -4px;
758
+ }
643
759
  `;
644
- var MultiSelectInput = import_styled_components7.default.input.attrs({ type: "checkbox" })`
760
+ var MultiSelectInput = import_styled_components6.default.input.attrs({ type: "checkbox" })`
645
761
  &[type='checkbox'] {
646
762
  appearance: none;
647
763
  display: block;
648
764
  width: 20px;
649
765
  height: 20px;
650
766
  margin: 0;
767
+ background-color: var(--charcoal-text3);
768
+ border-radius: 999999px;
769
+ transition: 0.2s background-color, 0.2s box-shadow;
651
770
 
652
771
  &:checked {
653
- ${theme((o) => o.bg.brand.hover.press)}
772
+ background-color: var(--charcoal-brand);
773
+ &:hover {
774
+ &:not(:disabled):not([aria-disabled]),
775
+ &[aria-disabled='false'] {
776
+ background-color: var(--charcoal-brand-hover);
777
+ }
778
+ }
779
+
780
+ &:active {
781
+ &:not(:disabled):not([aria-disabled]),
782
+ &[aria-disabled='false'] {
783
+ background-color: var(--charcoal-brand-press);
784
+ }
785
+ }
786
+ }
787
+
788
+ &:hover {
789
+ &:not(:disabled):not([aria-disabled]),
790
+ &[aria-disabled='false'] {
791
+ background-color: var(--charcoal-text3-hover);
792
+ }
654
793
  }
655
794
 
656
- ${({ invalid, overlay }) => theme((o) => [
657
- o.bg.text3.hover.press,
658
- o.borderRadius("oval"),
659
- invalid && !overlay && o.outline.assertive,
660
- overlay && o.bg.surface4
661
- ])};
795
+ &:active {
796
+ &:not(:disabled):not([aria-disabled]),
797
+ &[aria-disabled='false'] {
798
+ background-color: var(--charcoal-text3-press);
799
+ }
800
+ }
801
+
802
+ ${({ invalid, overlay }) => invalid && !overlay && import_styled_components6.css`
803
+ &:not(:disabled):not([aria-disabled]),
804
+ &[aria-disabled='false'] {
805
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
806
+ }
807
+ `}
808
+ ${({ overlay }) => overlay && import_styled_components6.css`
809
+ background-color: var(--charcoal-surface4);
810
+ `}
662
811
  }
663
812
  `;
664
- var MultiSelectInputOverlay = import_styled_components7.default.div`
813
+ var MultiSelectInputOverlay = import_styled_components6.default.div`
665
814
  position: absolute;
666
815
  top: -2px;
667
816
  left: -2px;
@@ -669,17 +818,20 @@ var MultiSelectInputOverlay = import_styled_components7.default.div`
669
818
  display: flex;
670
819
  align-items: center;
671
820
  justify-content: center;
821
+ width: 24px;
822
+ height: 24px;
823
+ border-radius: 999999px;
824
+ color: var(--charcoal-text5);
825
+ transition: 0.2s box-shadow;
826
+ ${({ invalid, overlay }) => invalid && overlay && import_styled_components6.css`
827
+ &:not(:disabled):not([aria-disabled]),
828
+ &[aria-disabled='false'] {
829
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
830
+ }
831
+ `}
672
832
 
673
- ${({ invalid, overlay }) => theme((o) => [
674
- o.width.px(24),
675
- o.height.px(24),
676
- o.borderRadius("oval"),
677
- o.font.text5,
678
- invalid && overlay && o.outline.assertive
679
- ])}
680
-
681
- ${({ overlay }) => overlay && import_styled_components7.css`
682
- border-color: ${({ theme: theme3 }) => theme3.color.text5};
833
+ ${({ overlay }) => overlay && import_styled_components6.css`
834
+ border-color: var(--charcoal-text5);
683
835
  border-width: 2px;
684
836
  border-style: solid;
685
837
  `}
@@ -730,9 +882,8 @@ function MultiSelectGroup({
730
882
  var import_switch = require("@react-aria/switch");
731
883
  var import_react7 = require("react");
732
884
  var import_react_stately = require("react-stately");
733
- var import_styled_components8 = __toESM(require("styled-components"));
734
- var import_utils4 = require("@charcoal-ui/utils");
735
- var import_utils5 = require("@react-aria/utils");
885
+ var import_styled_components7 = __toESM(require("styled-components"));
886
+ var import_utils3 = require("@react-aria/utils");
736
887
  var import_jsx_runtime8 = require("react/jsx-runtime");
737
888
  var SwitchCheckbox = (0, import_react7.forwardRef)(
738
889
  function SwitchCheckboxInner(props, external) {
@@ -747,7 +898,7 @@ var SwitchCheckbox = (0, import_react7.forwardRef)(
747
898
  [props]
748
899
  );
749
900
  const state = (0, import_react_stately.useToggleState)(ariaSwitchProps);
750
- const ref = (0, import_utils5.useObjectRef)(external);
901
+ const ref = (0, import_utils3.useObjectRef)(external);
751
902
  const {
752
903
  inputProps: { className: _className, type: _type, ...rest }
753
904
  } = (0, import_switch.useSwitch)(ariaSwitchProps, state, ref);
@@ -758,33 +909,30 @@ var SwitchCheckbox = (0, import_react7.forwardRef)(
758
909
  }
759
910
  );
760
911
  var Switch_default = (0, import_react7.memo)(SwitchCheckbox);
761
- var Label = import_styled_components8.default.label`
912
+ var Label = import_styled_components7.default.label`
762
913
  display: inline-grid;
763
914
  grid-template-columns: auto 1fr;
764
915
  align-items: center;
765
916
  cursor: pointer;
766
917
  outline: 0;
767
918
 
768
- ${theme((o) => o.disabled)}
919
+ &:disabled,
920
+ &[aria-disabled]:not([aria-disabled='false']) {
921
+ opacity: 0.32;
922
+ cursor: default;
923
+ }
769
924
 
770
925
  :active > input {
771
926
  box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
772
927
  }
773
-
774
- ${import_utils4.disabledSelector} {
775
- cursor: default;
776
- }
777
928
  `;
778
- var LabelInner = import_styled_components8.default.div`
779
- ${theme((o) => [
780
- o.typography(14).preserveHalfLeading,
781
- o.font.text2,
782
- o.margin.left(4)
783
- ])}
929
+ var LabelInner = import_styled_components7.default.div`
930
+ font-size: 14px;
931
+ line-height: 22px;
932
+ color: var(--charcoal-text2);
933
+ margin-left: 4px;
784
934
  `;
785
- var SwitchInput = import_styled_components8.default.input.attrs({
786
- type: "checkbox"
787
- })`
935
+ var SwitchInput = import_styled_components7.default.input.attrs({ type: "checkbox" })`
788
936
  appearance: none;
789
937
  display: inline-flex;
790
938
  position: relative;
@@ -849,14 +997,13 @@ var SwitchInput = import_styled_components8.default.input.attrs({
849
997
  // src/components/TextField/index.tsx
850
998
  var import_textfield = require("@react-aria/textfield");
851
999
  var import_visually_hidden = require("@react-aria/visually-hidden");
852
- var import_react8 = require("react");
1000
+ var import_react9 = require("react");
853
1001
  var React5 = __toESM(require("react"));
854
- var import_styled_components10 = __toESM(require("styled-components"));
1002
+ var import_styled_components9 = __toESM(require("styled-components"));
855
1003
 
856
1004
  // src/components/FieldLabel/index.tsx
857
1005
  var React4 = __toESM(require("react"));
858
- var import_styled_components9 = __toESM(require("styled-components"));
859
- var import_styled8 = require("@charcoal-ui/styled");
1006
+ var import_styled_components8 = __toESM(require("styled-components"));
860
1007
  var import_jsx_runtime9 = require("react/jsx-runtime");
861
1008
  var FieldLabel = React4.forwardRef(
862
1009
  function FieldLabel2({
@@ -876,33 +1023,119 @@ var FieldLabel = React4.forwardRef(
876
1023
  }
877
1024
  );
878
1025
  var FieldLabel_default = FieldLabel;
879
- var theme2 = (0, import_styled8.createTheme)(import_styled_components9.default);
880
- var Label2 = import_styled_components9.default.label`
881
- ${theme2((o) => [o.typography(14).bold, o.font.text1])}
1026
+ var Label2 = import_styled_components8.default.label`
1027
+ font-size: 14px;
1028
+ line-height: 22px;
1029
+ font-weight: bold;
1030
+ display: flow-root;
1031
+ color: var(--charcoal-text1);
1032
+
1033
+ &::before {
1034
+ display: block;
1035
+ width: 0;
1036
+ height: 0;
1037
+ content: '';
1038
+ margin-top: -4px;
1039
+ }
1040
+ &::after {
1041
+ display: block;
1042
+ width: 0;
1043
+ height: 0;
1044
+ content: '';
1045
+ margin-bottom: -4px;
1046
+ }
882
1047
  `;
883
- var RequiredText = import_styled_components9.default.span`
884
- ${theme2((o) => [o.typography(14), o.font.text2])}
1048
+ var RequiredText = import_styled_components8.default.span`
1049
+ font-size: 14px;
1050
+ line-height: 22px;
1051
+ display: flow-root;
1052
+ color: var(--charcoal-text2);
1053
+
1054
+ &::before {
1055
+ display: block;
1056
+ width: 0;
1057
+ height: 0;
1058
+ content: '';
1059
+ margin-top: -4px;
1060
+ }
1061
+ &::after {
1062
+ display: block;
1063
+ width: 0;
1064
+ height: 0;
1065
+ content: '';
1066
+ margin-bottom: -4px;
1067
+ }
885
1068
  `;
886
- var SubLabelClickable = import_styled_components9.default.div`
887
- ${theme2((o) => [
888
- o.typography(14),
889
- o.font.text3.hover.press,
890
- o.outline.default.focus
891
- ])}
1069
+ var SubLabelClickable = import_styled_components8.default.div`
1070
+ font-size: 14px;
1071
+ line-height: 22px;
1072
+ display: flow-root;
1073
+ color: var(--charcoal-text3);
1074
+ transition: 0.2s color, 0.2s box-shadow;
1075
+
1076
+ &::before {
1077
+ display: block;
1078
+ width: 0;
1079
+ height: 0;
1080
+ content: '';
1081
+ margin-top: -4px;
1082
+ }
1083
+ &::after {
1084
+ display: block;
1085
+ width: 0;
1086
+ height: 0;
1087
+ content: '';
1088
+ margin-bottom: -4px;
1089
+ }
1090
+
1091
+ &:not(:disabled):not([aria-disabled]),
1092
+ &[aria-disabled='false'] {
1093
+ &:hover {
1094
+ color: var(--charcoal-text3-hover);
1095
+ }
1096
+ &:active {
1097
+ color: var(--charcoal-text3-press);
1098
+ }
1099
+ &:active,
1100
+ &:focus,
1101
+ &:focus-visible {
1102
+ outline: none;
1103
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1104
+ }
1105
+ }
892
1106
  `;
893
- var FieldLabelWrapper = import_styled_components9.default.div`
1107
+ var FieldLabelWrapper = import_styled_components8.default.div`
894
1108
  display: inline-flex;
895
1109
  align-items: center;
896
1110
 
897
1111
  > ${RequiredText} {
898
- ${theme2((o) => o.margin.left(4))}
1112
+ margin-left: 4px;
899
1113
  }
900
1114
 
901
1115
  > ${SubLabelClickable} {
902
- ${theme2((o) => o.margin.left("auto"))}
1116
+ margin-left: auto;
903
1117
  }
904
1118
  `;
905
1119
 
1120
+ // src/components/TextField/useFocusWithClick.tsx
1121
+ var import_react8 = require("react");
1122
+ function useFocusWithClick(containerRef, inputRef) {
1123
+ (0, import_react8.useEffect)(() => {
1124
+ const el = containerRef.current;
1125
+ if (el) {
1126
+ const handleDown = (e) => {
1127
+ if (e.target !== inputRef.current) {
1128
+ inputRef.current?.focus();
1129
+ }
1130
+ };
1131
+ el.addEventListener("click", handleDown);
1132
+ return () => {
1133
+ el.removeEventListener("click", handleDown);
1134
+ };
1135
+ }
1136
+ });
1137
+ }
1138
+
906
1139
  // src/components/TextField/index.tsx
907
1140
  var import_jsx_runtime10 = require("react/jsx-runtime");
908
1141
  var TextField = React5.forwardRef(
@@ -923,16 +1156,12 @@ var TextField = React5.forwardRef(
923
1156
  suffix = null
924
1157
  } = props;
925
1158
  const { visuallyHiddenProps } = (0, import_visually_hidden.useVisuallyHidden)();
926
- const ariaRef = (0, import_react8.useRef)(null);
927
- const prefixRef = (0, import_react8.useRef)(null);
928
- const suffixRef = (0, import_react8.useRef)(null);
929
- const [count, setCount] = (0, import_react8.useState)(
1159
+ const ariaRef = (0, import_react9.useRef)(null);
1160
+ const [count, setCount] = (0, import_react9.useState)(
930
1161
  countCodePointsInString(props.value ?? "")
931
1162
  );
932
- const [prefixWidth, setPrefixWidth] = (0, import_react8.useState)(0);
933
- const [suffixWidth, setSuffixWidth] = (0, import_react8.useState)(0);
934
1163
  const nonControlled = props.value === void 0;
935
- const handleChange = (0, import_react8.useCallback)(
1164
+ const handleChange = (0, import_react9.useCallback)(
936
1165
  (value) => {
937
1166
  const count2 = countCodePointsInString(value);
938
1167
  if (maxLength !== void 0 && count2 > maxLength) {
@@ -945,7 +1174,7 @@ var TextField = React5.forwardRef(
945
1174
  },
946
1175
  [maxLength, nonControlled, onChange]
947
1176
  );
948
- (0, import_react8.useEffect)(() => {
1177
+ (0, import_react9.useEffect)(() => {
949
1178
  setCount(countCodePointsInString(props.value ?? ""));
950
1179
  }, [props.value]);
951
1180
  const { inputProps, labelProps, descriptionProps, errorMessageProps } = (0, import_textfield.useTextField)(
@@ -961,24 +1190,8 @@ var TextField = React5.forwardRef(
961
1190
  },
962
1191
  ariaRef
963
1192
  );
964
- (0, import_react8.useEffect)(() => {
965
- const prefixObserver = new ResizeObserver((entries) => {
966
- setPrefixWidth(entries[0].contentRect.width);
967
- });
968
- const suffixObserver = new ResizeObserver((entries) => {
969
- setSuffixWidth(entries[0].contentRect.width);
970
- });
971
- if (prefixRef.current !== null) {
972
- prefixObserver.observe(prefixRef.current);
973
- }
974
- if (suffixRef.current !== null) {
975
- suffixObserver.observe(suffixRef.current);
976
- }
977
- return () => {
978
- suffixObserver.disconnect();
979
- prefixObserver.disconnect();
980
- };
981
- }, []);
1193
+ const containerRef = (0, import_react9.useRef)(null);
1194
+ useFocusWithClick(containerRef, ariaRef);
982
1195
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(TextFieldRoot, { className, isDisabled: disabled, children: [
983
1196
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
984
1197
  TextFieldLabel,
@@ -991,23 +1204,31 @@ var TextField = React5.forwardRef(
991
1204
  ...!showLabel ? visuallyHiddenProps : {}
992
1205
  }
993
1206
  ),
994
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(StyledInputContainer, { children: [
995
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(PrefixContainer, { ref: prefixRef, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Affix, { children: prefix }) }),
996
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
997
- StyledInput,
998
- {
999
- ref: mergeRefs(forwardRef18, ariaRef),
1000
- invalid,
1001
- extraLeftPadding: prefixWidth,
1002
- extraRightPadding: suffixWidth,
1003
- ...inputProps
1004
- }
1005
- ),
1006
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(SuffixContainer, { ref: suffixRef, children: [
1007
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Affix, { children: suffix }),
1008
- showCount && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SingleLineCounter, { children: maxLength !== void 0 ? `${count}/${maxLength}` : count })
1009
- ] })
1010
- ] }),
1207
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
1208
+ StyledInputContainer,
1209
+ {
1210
+ ref: containerRef,
1211
+ invalid,
1212
+ "aria-disabled": disabled === true ? true : void 0,
1213
+ hasPrefix: prefix != null,
1214
+ hasSuffix: suffix != null || showCount,
1215
+ children: [
1216
+ prefix && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(PrefixContainer, { children: prefix }),
1217
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1218
+ StyledInput,
1219
+ {
1220
+ ref: mergeRefs(forwardRef18, ariaRef),
1221
+ invalid,
1222
+ ...inputProps
1223
+ }
1224
+ ),
1225
+ (suffix || showCount) && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(SuffixContainer, { children: [
1226
+ suffix,
1227
+ showCount && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SingleLineCounter, { children: maxLength !== void 0 ? `${count}/${maxLength}` : count })
1228
+ ] })
1229
+ ]
1230
+ }
1231
+ ),
1011
1232
  assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1012
1233
  AssistiveText,
1013
1234
  {
@@ -1020,42 +1241,60 @@ var TextField = React5.forwardRef(
1020
1241
  }
1021
1242
  );
1022
1243
  var TextField_default = TextField;
1023
- var TextFieldRoot = import_styled_components10.default.div`
1244
+ var TextFieldRoot = import_styled_components9.default.div`
1024
1245
  display: flex;
1025
1246
  flex-direction: column;
1026
1247
 
1027
1248
  ${(p) => p.isDisabled && { opacity: p.theme.elementEffect.disabled.opacity }}
1028
1249
  `;
1029
- var TextFieldLabel = (0, import_styled_components10.default)(FieldLabel_default)`
1030
- ${theme((o) => o.margin.bottom(8))}
1250
+ var TextFieldLabel = (0, import_styled_components9.default)(FieldLabel_default)`
1251
+ margin-bottom: 8px;
1031
1252
  `;
1032
- var StyledInputContainer = import_styled_components10.default.div`
1033
- height: 40px;
1253
+ var StyledInputContainer = import_styled_components9.default.div`
1034
1254
  display: grid;
1035
- position: relative;
1255
+ grid-template-columns: ${(p) => [p.hasPrefix && "auto", "1fr", p.hasSuffix && "auto"].filter(Boolean).join(" ")};
1256
+ height: 40px;
1257
+ transition: 0.2s background-color, 0.2s box-shadow;
1258
+ color: var(--charcoal-text2);
1259
+ background-color: var(--charcoal-surface3);
1260
+ border-radius: 4px;
1261
+ gap: 4px;
1262
+ padding: 0 8px;
1263
+ line-height: 22px;
1264
+ font-size: 14px;
1265
+
1266
+ :not(:disabled):not([aria-disabled]):hover,
1267
+ [aria-disabled='false']:hover {
1268
+ background-color: var(--charcoal-surface3-hover);
1269
+ }
1270
+
1271
+ :not(:disabled):not([aria-disabled]):active,
1272
+ [aria-disabled='false']:active {
1273
+ outline: none;
1274
+ box-shadow: 0 0 0 4px
1275
+ ${(p) => p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`};
1276
+ }
1277
+
1278
+ :focus-within {
1279
+ outline: none;
1280
+ box-shadow: 0 0 0 4px
1281
+ ${(p) => p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`};
1282
+ }
1283
+
1284
+ ${(p) => p.invalid && import_styled_components9.css`
1285
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
1286
+ `}
1036
1287
  `;
1037
- var PrefixContainer = import_styled_components10.default.span`
1038
- position: absolute;
1039
- top: 50%;
1040
- left: 8px;
1041
- transform: translateY(-50%);
1042
- z-index: 1;
1288
+ var PrefixContainer = import_styled_components9.default.div`
1289
+ display: flex;
1290
+ align-items: center;
1043
1291
  `;
1044
- var SuffixContainer = import_styled_components10.default.span`
1045
- position: absolute;
1046
- top: 50%;
1047
- right: 8px;
1048
- transform: translateY(-50%);
1049
-
1292
+ var SuffixContainer = import_styled_components9.default.span`
1050
1293
  display: flex;
1294
+ align-items: center;
1051
1295
  gap: 8px;
1052
1296
  `;
1053
- var Affix = import_styled_components10.default.span`
1054
- user-select: none;
1055
-
1056
- ${theme((o) => [o.typography(14).preserveHalfLeading, o.font.text2])}
1057
- `;
1058
- var StyledInput = import_styled_components10.default.input`
1297
+ var StyledInput = import_styled_components9.default.input`
1059
1298
  border: none;
1060
1299
  box-sizing: border-box;
1061
1300
  outline: none;
@@ -1068,43 +1307,39 @@ var StyledInput = import_styled_components10.default.input`
1068
1307
  height: calc(100% / 0.875);
1069
1308
  font-size: calc(14px / 0.875);
1070
1309
  line-height: calc(22px / 0.875);
1071
- padding-left: calc((8px + ${(p) => p.extraLeftPadding}px) / 0.875);
1072
- padding-right: calc((8px + ${(p) => p.extraRightPadding}px) / 0.875);
1310
+ padding-left: 0;
1311
+ padding-right: 0;
1073
1312
  border-radius: calc(4px / 0.875);
1074
1313
 
1075
1314
  /* Display box-shadow for iOS Safari */
1076
1315
  appearance: none;
1316
+ background: transparent;
1077
1317
 
1078
- ${(p) => theme((o) => [
1079
- o.bg.surface3.hover,
1080
- o.outline.default.focus,
1081
- p.invalid && o.outline.assertive,
1082
- o.font.text2
1083
- ])}
1084
-
1318
+ color: var(--charcoal-text2);
1085
1319
  &::placeholder {
1086
- ${theme((o) => o.font.text3)}
1320
+ color: var(--charcoal-text3);
1087
1321
  }
1088
1322
  `;
1089
- var SingleLineCounter = import_styled_components10.default.span`
1090
- ${theme((o) => [o.typography(14).preserveHalfLeading, o.font.text3])}
1323
+ var SingleLineCounter = import_styled_components9.default.span`
1324
+ line-height: 22px;
1325
+ font-size: 14px;
1326
+ color: var(--charcoal-text3);
1091
1327
  `;
1092
- var AssistiveText = import_styled_components10.default.p`
1093
- ${(p) => theme((o) => [
1094
- o.typography(14),
1095
- o.margin.top(8),
1096
- o.margin.bottom(0),
1097
- o.font[p.invalid ? "assertive" : "text1"]
1098
- ])}
1328
+ var AssistiveText = import_styled_components9.default.p`
1329
+ font-size: 14px;
1330
+ line-height: 22px;
1331
+ margin-top: 4px;
1332
+ margin-bottom: -4px;
1333
+ color: ${(p) => `var(--charcoal-${p.invalid ? `assertive` : `text2`})`};
1099
1334
  `;
1100
1335
 
1101
1336
  // src/components/TextArea/index.tsx
1102
1337
  var import_textfield2 = require("@react-aria/textfield");
1103
1338
  var import_visually_hidden2 = require("@react-aria/visually-hidden");
1104
- var import_react9 = require("react");
1105
- var import_styled_components11 = __toESM(require("styled-components"));
1339
+ var import_react10 = require("react");
1340
+ var import_styled_components10 = __toESM(require("styled-components"));
1106
1341
  var import_jsx_runtime11 = require("react/jsx-runtime");
1107
- var TextArea = (0, import_react9.forwardRef)(
1342
+ var TextArea = (0, import_react10.forwardRef)(
1108
1343
  function TextAreaInner({ onChange, ...props }, forwardRef18) {
1109
1344
  const {
1110
1345
  className,
@@ -1122,13 +1357,13 @@ var TextArea = (0, import_react9.forwardRef)(
1122
1357
  rows: initialRows = 4
1123
1358
  } = props;
1124
1359
  const { visuallyHiddenProps } = (0, import_visually_hidden2.useVisuallyHidden)();
1125
- const textareaRef = (0, import_react9.useRef)(null);
1126
- const ariaRef = (0, import_react9.useRef)(null);
1127
- const [count, setCount] = (0, import_react9.useState)(
1360
+ const textareaRef = (0, import_react10.useRef)(null);
1361
+ const ariaRef = (0, import_react10.useRef)(null);
1362
+ const [count, setCount] = (0, import_react10.useState)(
1128
1363
  countCodePointsInString(props.value ?? "")
1129
1364
  );
1130
- const [rows, setRows] = (0, import_react9.useState)(initialRows);
1131
- const syncHeight = (0, import_react9.useCallback)(
1365
+ const [rows, setRows] = (0, import_react10.useState)(initialRows);
1366
+ const syncHeight = (0, import_react10.useCallback)(
1132
1367
  (textarea) => {
1133
1368
  const rows2 = (`${textarea.value}
1134
1369
  `.match(/\n/gu)?.length ?? 0) || 1;
@@ -1137,7 +1372,7 @@ var TextArea = (0, import_react9.forwardRef)(
1137
1372
  [initialRows]
1138
1373
  );
1139
1374
  const nonControlled = props.value === void 0;
1140
- const handleChange = (0, import_react9.useCallback)(
1375
+ const handleChange = (0, import_react10.useCallback)(
1141
1376
  (value) => {
1142
1377
  const count2 = countCodePointsInString(value);
1143
1378
  if (maxLength !== void 0 && count2 > maxLength) {
@@ -1153,7 +1388,7 @@ var TextArea = (0, import_react9.forwardRef)(
1153
1388
  },
1154
1389
  [autoHeight, maxLength, nonControlled, onChange, syncHeight]
1155
1390
  );
1156
- (0, import_react9.useEffect)(() => {
1391
+ (0, import_react10.useEffect)(() => {
1157
1392
  setCount(countCodePointsInString(props.value ?? ""));
1158
1393
  }, [props.value]);
1159
1394
  const { inputProps, labelProps, descriptionProps, errorMessageProps } = (0, import_textfield2.useTextField)(
@@ -1169,14 +1404,16 @@ var TextArea = (0, import_react9.forwardRef)(
1169
1404
  },
1170
1405
  ariaRef
1171
1406
  );
1172
- (0, import_react9.useEffect)(() => {
1407
+ (0, import_react10.useEffect)(() => {
1173
1408
  if (autoHeight && textareaRef.current !== null) {
1174
1409
  syncHeight(textareaRef.current);
1175
1410
  }
1176
1411
  }, [autoHeight, syncHeight]);
1412
+ const containerRef = (0, import_react10.useRef)(null);
1413
+ useFocusWithClick(containerRef, ariaRef);
1177
1414
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(TextFieldRoot2, { className, isDisabled: disabled, children: [
1178
1415
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1179
- TextFieldLabel2,
1416
+ TextFieldLabel,
1180
1417
  {
1181
1418
  label,
1182
1419
  requiredText,
@@ -1189,8 +1426,10 @@ var TextArea = (0, import_react9.forwardRef)(
1189
1426
  /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1190
1427
  StyledTextareaContainer,
1191
1428
  {
1429
+ ref: containerRef,
1192
1430
  invalid,
1193
1431
  rows: showCount ? rows + 1 : rows,
1432
+ "aria-disabled": disabled === true ? "true" : void 0,
1194
1433
  children: [
1195
1434
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1196
1435
  StyledTextarea,
@@ -1206,7 +1445,7 @@ var TextArea = (0, import_react9.forwardRef)(
1206
1445
  }
1207
1446
  ),
1208
1447
  assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1209
- AssistiveText2,
1448
+ AssistiveText,
1210
1449
  {
1211
1450
  invalid,
1212
1451
  ...invalid ? errorMessageProps : descriptionProps,
@@ -1217,42 +1456,46 @@ var TextArea = (0, import_react9.forwardRef)(
1217
1456
  }
1218
1457
  );
1219
1458
  var TextArea_default = TextArea;
1220
- var TextFieldRoot2 = import_styled_components11.default.div`
1459
+ var TextFieldRoot2 = import_styled_components10.default.div`
1221
1460
  display: flex;
1222
1461
  flex-direction: column;
1223
1462
 
1224
1463
  ${(p) => p.isDisabled && { opacity: p.theme.elementEffect.disabled.opacity }}
1225
1464
  `;
1226
- var TextFieldLabel2 = (0, import_styled_components11.default)(FieldLabel_default)`
1227
- ${theme((o) => o.margin.bottom(8))}
1228
- `;
1229
- var StyledTextareaContainer = import_styled_components11.default.div`
1465
+ var StyledTextareaContainer = import_styled_components10.default.div`
1230
1466
  position: relative;
1231
1467
  overflow: hidden;
1232
- padding: 0 8px;
1233
-
1234
- ${(p) => theme((o) => [
1235
- o.bg.surface3.hover,
1236
- o.outline.default.focus,
1237
- p.invalid && o.outline.assertive,
1238
- o.font.text2,
1239
- o.borderRadius(4)
1240
- ])}
1241
1468
 
1242
- &:focus-within {
1243
- ${(p) => theme((o) => p.invalid ? o.outline.assertive : o.outline.default)}
1244
- }
1469
+ color: var(--charcoal-text2);
1470
+ background-color: var(--charcoal-surface3);
1471
+ border-radius: 4px;
1472
+ transition: 0.2s background-color, 0.2s box-shadow;
1245
1473
 
1246
- ${({ rows }) => import_styled_components11.css`
1474
+ ${({ rows }) => import_styled_components10.css`
1247
1475
  height: calc(22px * ${rows} + 18px);
1248
1476
  `};
1477
+
1478
+ :not([aria-disabled]):hover,
1479
+ [aria-disabled='false']:hover {
1480
+ background-color: var(--charcoal-surface3-hover);
1481
+ }
1482
+ :focus-within {
1483
+ outline: none;
1484
+ box-shadow: 0 0 0 4px
1485
+ ${(p) => p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`};
1486
+ }
1487
+
1488
+ ${(p) => p.invalid && import_styled_components10.css`
1489
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
1490
+ `}
1249
1491
  `;
1250
- var StyledTextarea = import_styled_components11.default.textarea`
1492
+ var StyledTextarea = import_styled_components10.default.textarea`
1251
1493
  border: none;
1252
1494
  outline: none;
1253
1495
  resize: none;
1254
1496
  font-family: inherit;
1255
1497
  color: inherit;
1498
+ box-sizing: border-box;
1256
1499
 
1257
1500
  /* Prevent zooming for iOS Safari */
1258
1501
  transform-origin: top left;
@@ -1260,10 +1503,11 @@ var StyledTextarea = import_styled_components11.default.textarea`
1260
1503
  width: calc(100% / 0.875);
1261
1504
  font-size: calc(14px / 0.875);
1262
1505
  line-height: calc(22px / 0.875);
1263
- padding: calc(9px / 0.875) 0 ${(p) => p.noBottomPadding ? 0 : ""};
1506
+ padding: calc(9px / 0.875) calc(8px / 0.875)
1507
+ ${(p) => p.noBottomPadding ? 0 : ""};
1264
1508
 
1265
- ${({ rows = 1 }) => import_styled_components11.css`
1266
- height: calc(22px / 0.875 * ${rows});
1509
+ ${({ rows = 1, noBottomPadding }) => import_styled_components10.css`
1510
+ height: calc(22px / 0.875 * ${rows} + ${noBottomPadding ? 9 : 20}px);
1267
1511
  `};
1268
1512
 
1269
1513
  /* Display box-shadow for iOS Safari */
@@ -1272,31 +1516,17 @@ var StyledTextarea = import_styled_components11.default.textarea`
1272
1516
  background: none;
1273
1517
 
1274
1518
  &::placeholder {
1275
- ${theme((o) => o.font.text3)}
1276
- }
1277
-
1278
- /* Hide scrollbar for Chrome, Safari and Opera */
1279
- &::-webkit-scrollbar {
1280
- display: none;
1519
+ color: var(--charcoal-text3);
1281
1520
  }
1282
- /* Hide scrollbar for IE, Edge and Firefox */
1283
- -ms-overflow-style: none; /* IE and Edge */
1284
- scrollbar-width: none; /* Firefox */
1285
1521
  `;
1286
- var MultiLineCounter = import_styled_components11.default.span`
1522
+ var MultiLineCounter = import_styled_components10.default.span`
1287
1523
  position: absolute;
1288
1524
  bottom: 9px;
1289
1525
  right: 8px;
1290
1526
 
1291
- ${theme((o) => [o.typography(14).preserveHalfLeading, o.font.text3])}
1292
- `;
1293
- var AssistiveText2 = import_styled_components11.default.p`
1294
- ${(p) => theme((o) => [
1295
- o.typography(14),
1296
- o.margin.top(8),
1297
- o.margin.bottom(0),
1298
- o.font[p.invalid ? "assertive" : "text1"]
1299
- ])}
1527
+ line-height: 22px;
1528
+ font-size: 14px;
1529
+ color: var(--charcoal-text3);
1300
1530
  `;
1301
1531
 
1302
1532
  // src/components/Icon/index.tsx
@@ -1319,18 +1549,18 @@ var Icon = React6.forwardRef(function IconInner({ name, scale, unsafeNonGuidelin
1319
1549
  var Icon_default = Icon;
1320
1550
 
1321
1551
  // src/components/Modal/index.tsx
1322
- var import_react11 = require("react");
1552
+ var import_react12 = require("react");
1323
1553
  var React9 = __toESM(require("react"));
1324
1554
  var import_overlays2 = require("@react-aria/overlays");
1325
- var import_styled_components13 = __toESM(require("styled-components"));
1326
- var import_utils7 = require("@charcoal-ui/utils");
1327
- var import_styled12 = require("@charcoal-ui/styled");
1555
+ var import_styled_components12 = __toESM(require("styled-components"));
1556
+ var import_utils5 = require("@charcoal-ui/utils");
1557
+ var import_styled2 = require("@charcoal-ui/styled");
1328
1558
  var import_react_spring2 = require("react-spring");
1329
- var import_utils8 = require("@react-aria/utils");
1559
+ var import_utils6 = require("@react-aria/utils");
1330
1560
 
1331
1561
  // src/components/Modal/Dialog/index.tsx
1332
- var import_react10 = require("react");
1333
- var import_styled_components12 = __toESM(require("styled-components"));
1562
+ var import_react11 = require("react");
1563
+ var import_styled_components11 = __toESM(require("styled-components"));
1334
1564
  var import_dialog = require("@react-aria/dialog");
1335
1565
 
1336
1566
  // ../foundation/src/grid.ts
@@ -1341,7 +1571,7 @@ function columnSystem(span, column, gutter) {
1341
1571
  }
1342
1572
 
1343
1573
  // src/components/Modal/Dialog/index.tsx
1344
- var import_utils6 = require("@charcoal-ui/utils");
1574
+ var import_utils4 = require("@charcoal-ui/utils");
1345
1575
  var import_react_spring = require("react-spring");
1346
1576
 
1347
1577
  // src/_lib/useForwardedRef.tsx
@@ -1362,7 +1592,7 @@ function useForwardedRef(ref) {
1362
1592
 
1363
1593
  // src/components/Modal/Dialog/index.tsx
1364
1594
  var import_jsx_runtime13 = require("react/jsx-runtime");
1365
- var Dialog = (0, import_react10.forwardRef)(function Dialog2(props, forwardRef18) {
1595
+ var Dialog = (0, import_react11.forwardRef)(function Dialog2(props, forwardRef18) {
1366
1596
  const ref = useForwardedRef(forwardRef18);
1367
1597
  const { dialogProps } = (0, import_dialog.useDialog)(
1368
1598
  {
@@ -1382,7 +1612,7 @@ var Dialog = (0, import_react10.forwardRef)(function Dialog2(props, forwardRef18
1382
1612
  }
1383
1613
  );
1384
1614
  });
1385
- var AnimatedStyledDialogDiv = (0, import_react_spring.animated)(import_styled_components12.default.div`
1615
+ var AnimatedStyledDialogDiv = (0, import_react_spring.animated)(import_styled_components11.default.div`
1386
1616
  margin: auto;
1387
1617
  position: relative;
1388
1618
  height: fit-content;
@@ -1403,18 +1633,18 @@ var AnimatedStyledDialogDiv = (0, import_react_spring.animated)(import_styled_co
1403
1633
  }
1404
1634
  }}px;
1405
1635
 
1406
- background-color: ${({ theme: theme3 }) => theme3.color.background1};
1636
+ background-color: var(--charcoal-surface1);
1407
1637
  border-radius: 24px;
1408
1638
 
1409
- @media ${({ theme: theme3 }) => (0, import_utils6.maxWidth)(theme3.breakpoint.screen1)} {
1639
+ @media ${({ theme }) => (0, import_utils4.maxWidth)(theme.breakpoint.screen1)} {
1410
1640
  max-width: 440px;
1411
1641
  width: calc(100% - 48px);
1412
- ${(p) => p.bottomSheet !== false && import_styled_components12.css`
1642
+ ${(p) => p.bottomSheet !== false && import_styled_components11.css`
1413
1643
  max-width: unset;
1414
1644
  width: 100%;
1415
1645
  border-radius: 0;
1416
1646
  margin: auto 0 0 0;
1417
- ${p.bottomSheet === "full" && import_styled_components12.css`
1647
+ ${p.bottomSheet === "full" && import_styled_components11.css`
1418
1648
  min-height: 100%;
1419
1649
  `}
1420
1650
  `}
@@ -1433,7 +1663,7 @@ var ModalBackgroundContext = React8.createContext(
1433
1663
  // src/components/Modal/index.tsx
1434
1664
  var import_jsx_runtime14 = require("react/jsx-runtime");
1435
1665
  var DEFAULT_Z_INDEX = 10;
1436
- var Modal = (0, import_react11.forwardRef)(function ModalInner({ children, zIndex = DEFAULT_Z_INDEX, portalContainer, ...props }, external) {
1666
+ var Modal = (0, import_react12.forwardRef)(function ModalInner({ children, zIndex = DEFAULT_Z_INDEX, portalContainer, ...props }, external) {
1437
1667
  const {
1438
1668
  title,
1439
1669
  size = "M",
@@ -1443,9 +1673,12 @@ var Modal = (0, import_react11.forwardRef)(function ModalInner({ children, zInde
1443
1673
  className,
1444
1674
  isOpen = false
1445
1675
  } = props;
1446
- const ref = (0, import_utils8.useObjectRef)(external);
1676
+ const ref = (0, import_utils6.useObjectRef)(external);
1447
1677
  const { modalProps, underlayProps } = (0, import_overlays2.useModalOverlay)(
1448
- props,
1678
+ {
1679
+ ...props,
1680
+ isKeyboardDismissDisabled: isDismissable === void 0 || isDismissable === false
1681
+ },
1449
1682
  {
1450
1683
  close: onClose,
1451
1684
  isOpen,
@@ -1458,8 +1691,8 @@ var Modal = (0, import_react11.forwardRef)(function ModalInner({ children, zInde
1458
1691
  },
1459
1692
  ref
1460
1693
  );
1461
- const theme3 = (0, import_styled_components13.useTheme)();
1462
- const isMobile = (0, import_styled12.useMedia)((0, import_utils7.maxWidth)(theme3.breakpoint.screen1)) ?? false;
1694
+ const theme = (0, import_styled_components12.useTheme)();
1695
+ const isMobile = (0, import_styled2.useMedia)((0, import_utils5.maxWidth)(theme.breakpoint.screen1)) ?? false;
1463
1696
  const transitionEnabled = isMobile && bottomSheet !== false;
1464
1697
  const showDismiss = !isMobile || bottomSheet !== true;
1465
1698
  const transition = (0, import_react_spring2.useTransition)(isOpen, {
@@ -1530,7 +1763,7 @@ var Modal = (0, import_react11.forwardRef)(function ModalInner({ children, zInde
1530
1763
  ) })
1531
1764
  );
1532
1765
  });
1533
- var Modal_default = (0, import_react11.memo)(Modal);
1766
+ var Modal_default = (0, import_react12.memo)(Modal);
1534
1767
  var ModalContext = React9.createContext({
1535
1768
  titleProps: {},
1536
1769
  title: "",
@@ -1538,7 +1771,7 @@ var ModalContext = React9.createContext({
1538
1771
  showDismiss: true,
1539
1772
  bottomSheet: false
1540
1773
  });
1541
- var ModalBackground = (0, import_react_spring2.animated)(import_styled_components13.default.div`
1774
+ var ModalBackground = (0, import_react_spring2.animated)(import_styled_components12.default.div`
1542
1775
  z-index: ${({ zIndex }) => zIndex};
1543
1776
  overflow: auto;
1544
1777
  display: flex;
@@ -1552,73 +1785,106 @@ var ModalBackground = (0, import_react_spring2.animated)(import_styled_component
1552
1785
  padding: 40px 0;
1553
1786
  box-sizing: border-box;
1554
1787
 
1555
- background-color: ${({ theme: theme3 }) => theme3.color.surface4};
1788
+ background-color: var(--charcoal-surface4);
1556
1789
 
1557
- @media ${({ theme: theme3 }) => (0, import_utils7.maxWidth)(theme3.breakpoint.screen1)} {
1558
- ${(p) => p.$bottomSheet !== false && import_styled_components13.css`
1790
+ @media ${({ theme }) => (0, import_utils5.maxWidth)(theme.breakpoint.screen1)} {
1791
+ ${(p) => p.$bottomSheet !== false && import_styled_components12.css`
1559
1792
  padding: 0;
1560
1793
  `}
1561
1794
  }
1562
1795
  `);
1563
- var ModalCrossButton = (0, import_styled_components13.default)(IconButton_default)`
1796
+ var ModalCrossButton = (0, import_styled_components12.default)(IconButton_default)`
1564
1797
  position: absolute;
1565
1798
  top: 8px;
1566
1799
  right: 8px;
1567
1800
 
1568
- ${theme((o) => [o.font.text3.hover.press])}
1801
+ color: var(--charcoal-text3);
1802
+ transition: 0.2s color;
1803
+
1804
+ &:not(:disabled):not([aria-disabled]),
1805
+ &[aria-disabled='false'] {
1806
+ &:hover {
1807
+ color: var(--charcoal-text3-hover);
1808
+ }
1809
+ &:active {
1810
+ color: var(--charcoal-text3-press);
1811
+ }
1812
+ }
1569
1813
  `;
1570
1814
  function ModalTitle(props) {
1571
- const { titleProps, title } = (0, import_react11.useContext)(ModalContext);
1815
+ const { titleProps, title } = (0, import_react12.useContext)(ModalContext);
1572
1816
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ModalHeading, { ...titleProps, ...props, children: title });
1573
1817
  }
1574
- var ModalHeading = import_styled_components13.default.h3`
1818
+ var ModalHeading = import_styled_components12.default.h3`
1575
1819
  margin: 0;
1576
1820
  font-weight: inherit;
1577
1821
  font-size: inherit;
1578
1822
  `;
1579
1823
 
1580
1824
  // src/components/Modal/ModalPlumbing.tsx
1581
- var import_styled_components14 = __toESM(require("styled-components"));
1582
- var import_react12 = require("react");
1583
- var import_utils9 = require("@charcoal-ui/utils");
1825
+ var import_styled_components13 = __toESM(require("styled-components"));
1826
+ var import_react13 = require("react");
1827
+ var import_utils7 = require("@charcoal-ui/utils");
1584
1828
  var import_jsx_runtime15 = require("react/jsx-runtime");
1585
1829
  function ModalHeader() {
1586
- const modalCtx = (0, import_react12.useContext)(ModalContext);
1830
+ const modalCtx = (0, import_react13.useContext)(ModalContext);
1587
1831
  return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ModalHeaderRoot, { $bottomSheet: modalCtx.bottomSheet, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(StyledModalTitle, {}) });
1588
1832
  }
1589
- var ModalHeaderRoot = import_styled_components14.default.div`
1833
+ var ModalHeaderRoot = import_styled_components13.default.div`
1590
1834
  height: 64px;
1591
1835
  display: grid;
1592
1836
  align-content: center;
1593
1837
  justify-content: center;
1594
- @media ${({ theme: theme3 }) => (0, import_utils9.maxWidth)(theme3.breakpoint.screen1)} {
1595
- ${(p) => p.$bottomSheet !== false && import_styled_components14.css`
1838
+ @media ${({ theme }) => (0, import_utils7.maxWidth)(theme.breakpoint.screen1)} {
1839
+ ${(p) => p.$bottomSheet !== false && import_styled_components13.css`
1596
1840
  height: 48px;
1597
1841
  `}
1598
1842
  }
1599
1843
  `;
1600
- var StyledModalTitle = (0, import_styled_components14.default)(ModalTitle)`
1601
- ${theme((o) => [o.font.text1, o.typography(16).bold])}
1844
+ var StyledModalTitle = (0, import_styled_components13.default)(ModalTitle)`
1845
+ color: var(--charcoal-text1);
1846
+ font-size: 16px;
1847
+ line-height: 24px;
1848
+ font-weight: bold;
1849
+ display: flow-root;
1850
+
1851
+ &::before {
1852
+ display: block;
1853
+ width: 0;
1854
+ height: 0;
1855
+ content: '';
1856
+ margin-top: -4px;
1857
+ }
1858
+ &::after {
1859
+ display: block;
1860
+ width: 0;
1861
+ height: 0;
1862
+ content: '';
1863
+ margin-bottom: -4px;
1864
+ }
1602
1865
  `;
1603
- var ModalAlign = import_styled_components14.default.div`
1604
- ${theme((o) => [o.padding.horizontal(16)])}
1866
+ var ModalAlign = import_styled_components13.default.div`
1867
+ padding-left: 16px;
1868
+ padding-right: 16px;
1605
1869
  `;
1606
- var ModalBody = import_styled_components14.default.div`
1607
- ${theme((o) => [o.padding.bottom(40)])}
1870
+ var ModalBody = import_styled_components13.default.div`
1871
+ padding-bottom: 40px;
1608
1872
  `;
1609
- var ModalButtons = import_styled_components14.default.div`
1873
+ var ModalButtons = import_styled_components13.default.div`
1610
1874
  display: grid;
1611
1875
  grid-auto-flow: row;
1612
1876
  grid-row-gap: 8px;
1613
1877
 
1614
- ${theme((o) => [o.padding.horizontal(16).top(16)])}
1878
+ padding-top: 16px;
1879
+ padding-left: 16px;
1880
+ padding-right: 16px;
1615
1881
  `;
1616
1882
 
1617
1883
  // src/components/LoadingSpinner/index.tsx
1618
- var import_react13 = require("react");
1619
- var import_styled_components15 = __toESM(require("styled-components"));
1884
+ var import_react14 = require("react");
1885
+ var import_styled_components14 = __toESM(require("styled-components"));
1620
1886
  var import_jsx_runtime16 = require("react/jsx-runtime");
1621
- var LoadingSpinner = (0, import_react13.forwardRef)(
1887
+ var LoadingSpinner = (0, import_react14.forwardRef)(
1622
1888
  function LoadingSpinnerInner({ size = 48, padding = 16, transparent = false, className }, ref) {
1623
1889
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1624
1890
  LoadingSpinnerRoot,
@@ -1633,8 +1899,8 @@ var LoadingSpinner = (0, import_react13.forwardRef)(
1633
1899
  );
1634
1900
  }
1635
1901
  );
1636
- var LoadingSpinner_default = (0, import_react13.memo)(LoadingSpinner);
1637
- var LoadingSpinnerRoot = import_styled_components15.default.div.attrs({ role: "progressbar" })`
1902
+ var LoadingSpinner_default = (0, import_react14.memo)(LoadingSpinner);
1903
+ var LoadingSpinnerRoot = import_styled_components14.default.div.attrs({ role: "progressbar" })`
1638
1904
  box-sizing: content-box;
1639
1905
  margin: auto;
1640
1906
  padding: ${(props) => props.padding}px;
@@ -1643,12 +1909,10 @@ var LoadingSpinnerRoot = import_styled_components15.default.div.attrs({ role: "p
1643
1909
  width: ${(props) => props.size}px;
1644
1910
  height: ${(props) => props.size}px;
1645
1911
  opacity: 0.84;
1646
- ${({ transparent }) => theme((o) => [
1647
- o.font.text4,
1648
- transparent ? o.bg.transparent : o.bg.background1
1649
- ])}
1912
+ color: var(--charcoal-text4);
1913
+ background-color: ${({ transparent }) => `var(--charcoal-${transparent ? "transparent" : "background1"})`};
1650
1914
  `;
1651
- var scaleOut = import_styled_components15.keyframes`
1915
+ var scaleOut = import_styled_components14.keyframes`
1652
1916
  from {
1653
1917
  transform: scale(0);
1654
1918
  opacity: 1;
@@ -1659,7 +1923,7 @@ var scaleOut = import_styled_components15.keyframes`
1659
1923
  opacity: 0;
1660
1924
  }
1661
1925
  `;
1662
- var Icon2 = import_styled_components15.default.div.attrs({ role: "presentation" })`
1926
+ var Icon2 = import_styled_components14.default.div.attrs({ role: "presentation" })`
1663
1927
  width: 1em;
1664
1928
  height: 1em;
1665
1929
  border-radius: 1em;
@@ -1671,10 +1935,10 @@ var Icon2 = import_styled_components15.default.div.attrs({ role: "presentation"
1671
1935
  animation: none;
1672
1936
  }
1673
1937
  `;
1674
- var LoadingSpinnerIcon = (0, import_react13.forwardRef)(
1938
+ var LoadingSpinnerIcon = (0, import_react14.forwardRef)(
1675
1939
  function LoadingSpinnerIcon2({ once = false }, ref) {
1676
- const iconRef = (0, import_react13.useRef)(null);
1677
- (0, import_react13.useImperativeHandle)(ref, () => ({
1940
+ const iconRef = (0, import_react14.useRef)(null);
1941
+ (0, import_react14.useImperativeHandle)(ref, () => ({
1678
1942
  restart: () => {
1679
1943
  if (!iconRef.current) {
1680
1944
  return;
@@ -1689,22 +1953,22 @@ var LoadingSpinnerIcon = (0, import_react13.forwardRef)(
1689
1953
  );
1690
1954
 
1691
1955
  // src/components/DropdownSelector/index.tsx
1692
- var import_react19 = require("react");
1693
- var import_styled_components18 = __toESM(require("styled-components"));
1694
- var import_utils10 = require("@charcoal-ui/utils");
1956
+ var import_react20 = require("react");
1957
+ var import_styled_components17 = __toESM(require("styled-components"));
1958
+ var import_utils8 = require("@charcoal-ui/utils");
1695
1959
 
1696
1960
  // src/components/DropdownSelector/DropdownPopover.tsx
1697
- var import_react16 = require("react");
1961
+ var import_react17 = require("react");
1698
1962
 
1699
1963
  // src/components/DropdownSelector/Popover/index.tsx
1700
- var import_react15 = require("react");
1964
+ var import_react16 = require("react");
1701
1965
  var import_overlays3 = require("@react-aria/overlays");
1702
- var import_styled_components16 = __toESM(require("styled-components"));
1966
+ var import_styled_components15 = __toESM(require("styled-components"));
1703
1967
 
1704
1968
  // src/components/DropdownSelector/Popover/usePreventScroll.tsx
1705
- var import_react14 = require("react");
1969
+ var import_react15 = require("react");
1706
1970
  function usePreventScroll(element, isOpen) {
1707
- (0, import_react14.useEffect)(() => {
1971
+ (0, import_react15.useEffect)(() => {
1708
1972
  if (isOpen && element) {
1709
1973
  const defaultPaddingRight = element.style.paddingRight;
1710
1974
  const defaultOverflow = element.style.overflow;
@@ -1722,7 +1986,7 @@ function usePreventScroll(element, isOpen) {
1722
1986
  var import_jsx_runtime17 = require("react/jsx-runtime");
1723
1987
  var _empty = () => null;
1724
1988
  function Popover(props) {
1725
- const defaultPopoverRef = (0, import_react15.useRef)(null);
1989
+ const defaultPopoverRef = (0, import_react16.useRef)(null);
1726
1990
  const finalPopoverRef = props.popoverRef === void 0 ? defaultPopoverRef : props.popoverRef;
1727
1991
  const { popoverProps, underlayProps } = (0, import_overlays3.usePopover)(
1728
1992
  {
@@ -1738,7 +2002,7 @@ function Popover(props) {
1738
2002
  toggle: _empty
1739
2003
  }
1740
2004
  );
1741
- const modalBackground = (0, import_react15.useContext)(ModalBackgroundContext);
2005
+ const modalBackground = (0, import_react16.useContext)(ModalBackgroundContext);
1742
2006
  usePreventScroll(modalBackground, props.isOpen);
1743
2007
  if (!props.isOpen)
1744
2008
  return null;
@@ -1761,30 +2025,28 @@ function Popover(props) {
1761
2025
  ] })
1762
2026
  ] });
1763
2027
  }
1764
- var DropdownPopoverDiv = import_styled_components16.default.div`
2028
+ var DropdownPopoverDiv = import_styled_components15.default.div`
1765
2029
  margin: 4px 0;
1766
2030
  list-style: none;
1767
2031
  overflow: auto;
1768
2032
  max-height: inherit;
1769
-
1770
- ${theme((o) => [
1771
- o.bg.background1,
1772
- o.border.default,
1773
- o.borderRadius(8),
1774
- o.padding.vertical(8)
1775
- ])}
2033
+ background-color: var(--charcoal-background1);
2034
+ border: solid 1px var(--charcoal-border-default);
2035
+ border-radius: 8px;
2036
+ padding-top: 8px;
2037
+ padding-bottom: 8px;
1776
2038
  `;
1777
2039
 
1778
2040
  // src/components/DropdownSelector/DropdownPopover.tsx
1779
2041
  var import_jsx_runtime18 = require("react/jsx-runtime");
1780
2042
  function DropdownPopover({ children, ...props }) {
1781
- const ref = (0, import_react16.useRef)(null);
1782
- (0, import_react16.useEffect)(() => {
2043
+ const ref = (0, import_react17.useRef)(null);
2044
+ (0, import_react17.useEffect)(() => {
1783
2045
  if (props.isOpen && ref.current && props.triggerRef.current) {
1784
2046
  ref.current.style.width = `${props.triggerRef.current.clientWidth}px`;
1785
2047
  }
1786
2048
  }, [props.triggerRef, props.isOpen]);
1787
- (0, import_react16.useEffect)(() => {
2049
+ (0, import_react17.useEffect)(() => {
1788
2050
  if (props.isOpen && props.value !== void 0) {
1789
2051
  const windowScrollY = window.scrollY;
1790
2052
  const windowScrollX = window.scrollX;
@@ -1835,12 +2097,12 @@ function findPreviewRecursive(children, value) {
1835
2097
  }
1836
2098
 
1837
2099
  // src/components/DropdownSelector/MenuList/index.tsx
1838
- var import_react18 = require("react");
1839
- var import_styled_components17 = __toESM(require("styled-components"));
2100
+ var import_react19 = require("react");
2101
+ var import_styled_components16 = __toESM(require("styled-components"));
1840
2102
 
1841
2103
  // src/components/DropdownSelector/MenuList/MenuListContext.ts
1842
- var import_react17 = require("react");
1843
- var MenuListContext = (0, import_react17.createContext)({
2104
+ var import_react18 = require("react");
2105
+ var MenuListContext = (0, import_react18.createContext)({
1844
2106
  root: void 0,
1845
2107
  value: "",
1846
2108
  values: [],
@@ -1870,7 +2132,7 @@ function getValuesRecursive(children, values = []) {
1870
2132
  // src/components/DropdownSelector/MenuList/index.tsx
1871
2133
  var import_jsx_runtime19 = require("react/jsx-runtime");
1872
2134
  function MenuList(props) {
1873
- const root = (0, import_react18.useRef)(null);
2135
+ const root = (0, import_react19.useRef)(null);
1874
2136
  const values = [];
1875
2137
  getValuesRecursive(props.children, values);
1876
2138
  return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StyledUl, { ref: root, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
@@ -1888,7 +2150,7 @@ function MenuList(props) {
1888
2150
  }
1889
2151
  ) });
1890
2152
  }
1891
- var StyledUl = import_styled_components17.default.ul`
2153
+ var StyledUl = import_styled_components16.default.ul`
1892
2154
  padding: 0;
1893
2155
  margin: 0;
1894
2156
  `;
@@ -1897,8 +2159,8 @@ var StyledUl = import_styled_components17.default.ul`
1897
2159
  var import_jsx_runtime20 = require("react/jsx-runtime");
1898
2160
  var defaultRequiredText = "*\u5FC5\u9808";
1899
2161
  function DropdownSelector(props) {
1900
- const triggerRef = (0, import_react19.useRef)(null);
1901
- const [isOpen, setIsOpen] = (0, import_react19.useState)(false);
2162
+ const triggerRef = (0, import_react20.useRef)(null);
2163
+ const [isOpen, setIsOpen] = (0, import_react20.useState)(false);
1902
2164
  const preview = findPreviewRecursive(props.children, props.value);
1903
2165
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(DropdownSelectorRoot, { "aria-disabled": props.disabled, children: [
1904
2166
  props.showLabel === true && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
@@ -1951,21 +2213,20 @@ function DropdownSelector(props) {
1951
2213
  props.assistiveText !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(AssertiveText, { invalid: props.invalid, children: props.assistiveText })
1952
2214
  ] });
1953
2215
  }
1954
- var DropdownSelectorRoot = import_styled_components18.default.div`
2216
+ var DropdownSelectorRoot = import_styled_components17.default.div`
1955
2217
  display: inline-block;
1956
2218
  width: 100%;
1957
2219
 
1958
- ${import_utils10.disabledSelector} {
2220
+ ${import_utils8.disabledSelector} {
1959
2221
  cursor: default;
1960
- ${theme((o) => o.disabled)}
2222
+ opacity: 0.32;
1961
2223
  }
1962
2224
  `;
1963
- var DropdownFieldLabel = (0, import_styled_components18.default)(FieldLabel_default)`
2225
+ var DropdownFieldLabel = (0, import_styled_components17.default)(FieldLabel_default)`
1964
2226
  width: 100%;
1965
-
1966
- ${theme((o) => o.margin.bottom(8))}
2227
+ margin-bottom: 8px;
1967
2228
  `;
1968
- var DropdownButton = import_styled_components18.default.button`
2229
+ var DropdownButton = import_styled_components17.default.button`
1969
2230
  display: flex;
1970
2231
  justify-content: space-between;
1971
2232
  align-items: center;
@@ -1976,69 +2237,122 @@ var DropdownButton = import_styled_components18.default.button`
1976
2237
  border: none;
1977
2238
  cursor: pointer;
1978
2239
 
1979
- ${import_utils10.disabledSelector} {
2240
+ ${import_utils8.disabledSelector} {
1980
2241
  cursor: default;
1981
2242
  }
1982
2243
 
1983
- ${({ invalid }) => theme((o) => [
1984
- o.padding.horizontal(8),
1985
- o.outline.default.focus,
1986
- o.bg.surface3,
1987
- o.borderRadius(4),
1988
- invalid === true && o.outline.assertive
1989
- ])}
2244
+ padding-right: 8px;
2245
+ padding-left: 8px;
2246
+ background-color: var(--charcoal-surface3);
2247
+ border-radius: 4px;
2248
+
2249
+ transition: 0.2s box-shadow;
2250
+
2251
+ &:not(:disabled):not([aria-disabled]),
2252
+ &[aria-disabled='false'] {
2253
+ &:focus,
2254
+ &:active,
2255
+ &:focus-visible {
2256
+ outline: none;
2257
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
2258
+ }
2259
+ }
2260
+
2261
+ ${({ invalid }) => invalid === true && import_styled_components17.css`
2262
+ &:not(:disabled):not([aria-disabled]),
2263
+ &[aria-disabled='false'] {
2264
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
2265
+ }
2266
+ `}
1990
2267
  `;
1991
- var DropdownButtonText = import_styled_components18.default.span`
2268
+ var DropdownButtonText = import_styled_components17.default.span`
1992
2269
  text-align: left;
1993
-
1994
- ${theme((o) => [o.typography(14), o.font.text2])}
2270
+ font-size: 14px;
2271
+ line-height: 22px;
2272
+ display: flow-root;
2273
+ color: var(--charcoal-text2);
2274
+ &::before {
2275
+ display: block;
2276
+ width: 0;
2277
+ height: 0;
2278
+ content: '';
2279
+ margin-top: -4px;
2280
+ }
2281
+ &::after {
2282
+ display: block;
2283
+ width: 0;
2284
+ height: 0;
2285
+ content: '';
2286
+ margin-bottom: -4px;
2287
+ }
1995
2288
  `;
1996
- var DropdownButtonIcon = (0, import_styled_components18.default)(Icon_default)`
1997
- ${theme((o) => [o.font.text2])}
2289
+ var DropdownButtonIcon = (0, import_styled_components17.default)(Icon_default)`
2290
+ color: var(--charcoal-text2);
1998
2291
  `;
1999
- var AssertiveText = import_styled_components18.default.div`
2000
- ${({ invalid }) => theme((o) => [
2001
- o.typography(14),
2002
- o.margin.top(8),
2003
- invalid === true ? o.font.assertive : o.font.text2
2004
- ])}
2292
+ var AssertiveText = import_styled_components17.default.div`
2293
+ margin-top: 8px;
2294
+ font-size: 14px;
2295
+ color: var(--charcoal-text2);
2296
+ line-height: 22px;
2297
+ display: flow-root;
2298
+ &::before {
2299
+ display: block;
2300
+ width: 0;
2301
+ height: 0;
2302
+ content: '';
2303
+ margin-top: -4px;
2304
+ }
2305
+ &::after {
2306
+ display: block;
2307
+ width: 0;
2308
+ height: 0;
2309
+ content: '';
2310
+ margin-bottom: -4px;
2311
+ }
2312
+
2313
+ ${({ invalid }) => invalid === true && import_styled_components17.css`
2314
+ color: var(--charcoal-assertive);
2315
+ `}
2005
2316
  `;
2006
2317
 
2007
2318
  // src/components/DropdownSelector/DropdownMenuItem.tsx
2008
- var import_styled_components20 = __toESM(require("styled-components"));
2319
+ var import_styled_components19 = __toESM(require("styled-components"));
2009
2320
 
2010
2321
  // src/components/DropdownSelector/ListItem/index.tsx
2011
- var import_styled_components19 = __toESM(require("styled-components"));
2322
+ var import_styled_components18 = __toESM(require("styled-components"));
2012
2323
  var import_jsx_runtime21 = require("react/jsx-runtime");
2013
2324
  function ListItem(props) {
2014
2325
  const { children, ...rest } = props;
2015
2326
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(StyledLi, { role: "option", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ItemDiv, { ...rest, children: props.children }) });
2016
2327
  }
2017
- var StyledLi = import_styled_components19.default.li`
2328
+ var StyledLi = import_styled_components18.default.li`
2018
2329
  list-style: none;
2019
2330
  `;
2020
- var ItemDiv = import_styled_components19.default.div`
2331
+ var ItemDiv = import_styled_components18.default.div`
2021
2332
  display: flex;
2022
2333
  align-items: center;
2023
2334
  min-height: 40px;
2024
2335
  cursor: pointer;
2025
2336
  outline: none;
2026
2337
 
2027
- ${theme((o) => [o.padding.horizontal(16), o.disabled])}
2338
+ padding-right: 16px;
2339
+ padding-left: 16px;
2028
2340
 
2029
- &[aria-disabled="true"] {
2341
+ &:disabled,
2342
+ &[aria-disabled]:not([aria-disabled='false']) {
2343
+ opacity: 0.32;
2030
2344
  cursor: default;
2031
2345
  }
2032
2346
 
2033
2347
  :hover,
2034
2348
  :focus,
2035
2349
  :focus-within {
2036
- ${theme((o) => [o.bg.surface3])}
2350
+ background-color: var(--charcoal-surface3);
2037
2351
  }
2038
2352
  `;
2039
2353
 
2040
2354
  // src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx
2041
- var import_react20 = require("react");
2355
+ var import_react21 = require("react");
2042
2356
 
2043
2357
  // src/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.tsx
2044
2358
  function handleFocusByKeyBoard(element, parent) {
@@ -2071,12 +2385,12 @@ function scrollIfNeeded(element) {
2071
2385
 
2072
2386
  // src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx
2073
2387
  function useMenuItemHandleKeyDown(value) {
2074
- const { setValue, root, values } = (0, import_react20.useContext)(MenuListContext);
2075
- const setContextValue = (0, import_react20.useCallback)(() => {
2388
+ const { setValue, root, values } = (0, import_react21.useContext)(MenuListContext);
2389
+ const setContextValue = (0, import_react21.useCallback)(() => {
2076
2390
  if (value !== void 0)
2077
2391
  setValue(value);
2078
2392
  }, [value, setValue]);
2079
- const handleKeyDown = (0, import_react20.useCallback)(
2393
+ const handleKeyDown = (0, import_react21.useCallback)(
2080
2394
  (e) => {
2081
2395
  if (e.key === "Enter") {
2082
2396
  setContextValue();
@@ -2123,10 +2437,10 @@ function MenuItem(props) {
2123
2437
  }
2124
2438
 
2125
2439
  // src/components/DropdownSelector/DropdownMenuItem.tsx
2126
- var import_react21 = require("react");
2440
+ var import_react22 = require("react");
2127
2441
  var import_jsx_runtime23 = require("react/jsx-runtime");
2128
2442
  function DropdownMenuItem(props) {
2129
- const { value: ctxValue } = (0, import_react21.useContext)(MenuListContext);
2443
+ const { value: ctxValue } = (0, import_react22.useContext)(MenuListContext);
2130
2444
  const isSelected = props.value === ctxValue;
2131
2445
  const { children, ...rest } = props;
2132
2446
  return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(MenuItem, { ...rest, children: [
@@ -2134,20 +2448,37 @@ function DropdownMenuItem(props) {
2134
2448
  /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(StyledSpan, { isSelected, children: props.children })
2135
2449
  ] });
2136
2450
  }
2137
- var StyledSpan = import_styled_components20.default.span`
2138
- ${theme((o) => [o.typography(14), o.font.text2])};
2451
+ var StyledSpan = import_styled_components19.default.span`
2452
+ font-size: 14px;
2453
+ line-height: 22px;
2454
+ color: var(--charcoal-text2);
2455
+ &::before {
2456
+ display: block;
2457
+ width: 0;
2458
+ height: 0;
2459
+ content: '';
2460
+ margin-top: -4px;
2461
+ }
2462
+ &::after {
2463
+ display: block;
2464
+ width: 0;
2465
+ height: 0;
2466
+ content: '';
2467
+ margin-bottom: -4px;
2468
+ }
2469
+
2139
2470
  display: flex;
2140
2471
  align-items: center;
2141
2472
  width: 100%;
2142
2473
  margin-left: ${({ isSelected }) => isSelected === true ? 0 : 20}px;
2143
2474
  `;
2144
- var Text2ColorIcon = (0, import_styled_components20.default)(Icon_default)`
2145
- ${theme((o) => [o.font.text2])}
2475
+ var Text2ColorIcon = (0, import_styled_components19.default)(Icon_default)`
2476
+ color: var(--charcoal-text2);
2146
2477
  padding-right: 4px;
2147
2478
  `;
2148
2479
 
2149
2480
  // src/components/DropdownSelector/MenuItemGroup/index.tsx
2150
- var import_styled_components21 = __toESM(require("styled-components"));
2481
+ var import_styled_components20 = __toESM(require("styled-components"));
2151
2482
  var import_jsx_runtime24 = require("react/jsx-runtime");
2152
2483
  function MenuItemGroup(props) {
2153
2484
  return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(StyledLi2, { role: "presentation", children: [
@@ -2155,35 +2486,34 @@ function MenuItemGroup(props) {
2155
2486
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(StyledUl2, { role: "group", children: props.children })
2156
2487
  ] });
2157
2488
  }
2158
- var TextSpan = import_styled_components21.default.span`
2489
+ var TextSpan = import_styled_components20.default.span`
2159
2490
  display: block;
2160
- color: ${({ theme: theme3 }) => theme3.color.text3};
2491
+ color: var(--charcoal-text3);
2161
2492
  font-size: 12px;
2162
2493
  font-weight: bold;
2163
2494
  padding: 12px 0 8px 16px;
2164
2495
  `;
2165
- var StyledUl2 = import_styled_components21.default.ul`
2496
+ var StyledUl2 = import_styled_components20.default.ul`
2166
2497
  padding-left: 0;
2167
2498
  margin: 0;
2168
2499
  box-sizing: border-box;
2169
2500
  list-style: none;
2170
2501
  overflow: hidden;
2171
2502
  `;
2172
- var StyledLi2 = import_styled_components21.default.li`
2503
+ var StyledLi2 = import_styled_components20.default.li`
2173
2504
  display: block;
2174
2505
  `;
2175
2506
 
2176
2507
  // src/components/SegmentedControl/index.tsx
2177
- var import_react23 = require("react");
2508
+ var import_react24 = require("react");
2178
2509
  var import_react_stately2 = require("react-stately");
2179
2510
  var import_radio = require("@react-aria/radio");
2180
- var import_styled_components22 = __toESM(require("styled-components"));
2181
- var import_utils11 = require("@charcoal-ui/utils");
2511
+ var import_styled_components21 = __toESM(require("styled-components"));
2182
2512
 
2183
2513
  // src/components/SegmentedControl/RadioGroupContext.tsx
2184
- var import_react22 = require("react");
2514
+ var import_react23 = require("react");
2185
2515
  var import_jsx_runtime25 = require("react/jsx-runtime");
2186
- var RadioContext = (0, import_react22.createContext)(null);
2516
+ var RadioContext = (0, import_react23.createContext)(null);
2187
2517
  var RadioProvider = ({
2188
2518
  value,
2189
2519
  children
@@ -2191,7 +2521,7 @@ var RadioProvider = ({
2191
2521
  return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(RadioContext.Provider, { value, children });
2192
2522
  };
2193
2523
  var useRadioContext = () => {
2194
- const state = (0, import_react22.useContext)(RadioContext);
2524
+ const state = (0, import_react23.useContext)(RadioContext);
2195
2525
  if (state === null)
2196
2526
  throw new Error("`<RadioProvider>` is not likely mounted.");
2197
2527
  return state;
@@ -2199,9 +2529,9 @@ var useRadioContext = () => {
2199
2529
 
2200
2530
  // src/components/SegmentedControl/index.tsx
2201
2531
  var import_jsx_runtime26 = require("react/jsx-runtime");
2202
- var SegmentedControl = (0, import_react23.forwardRef)(
2532
+ var SegmentedControl = (0, import_react24.forwardRef)(
2203
2533
  function SegmentedControlInner(props, ref) {
2204
- const ariaRadioGroupProps = (0, import_react23.useMemo)(
2534
+ const ariaRadioGroupProps = (0, import_react24.useMemo)(
2205
2535
  () => ({
2206
2536
  ...props,
2207
2537
  isDisabled: props.disabled,
@@ -2213,7 +2543,7 @@ var SegmentedControl = (0, import_react23.forwardRef)(
2213
2543
  );
2214
2544
  const state = (0, import_react_stately2.useRadioGroupState)(ariaRadioGroupProps);
2215
2545
  const { radioGroupProps } = (0, import_radio.useRadioGroup)(ariaRadioGroupProps, state);
2216
- const segmentedControlItems = (0, import_react23.useMemo)(() => {
2546
+ const segmentedControlItems = (0, import_react24.useMemo)(() => {
2217
2547
  return props.data.map(
2218
2548
  (d) => typeof d === "string" ? { value: d, label: d } : d
2219
2549
  );
@@ -2237,11 +2567,11 @@ var SegmentedControl = (0, import_react23.forwardRef)(
2237
2567
  );
2238
2568
  }
2239
2569
  );
2240
- var SegmentedControl_default = (0, import_react23.memo)(SegmentedControl);
2570
+ var SegmentedControl_default = (0, import_react24.memo)(SegmentedControl);
2241
2571
  var Segmented = (props) => {
2242
2572
  const state = useRadioContext();
2243
- const ref = (0, import_react23.useRef)(null);
2244
- const ariaRadioProps = (0, import_react23.useMemo)(
2573
+ const ref = (0, import_react24.useRef)(null);
2574
+ const ariaRadioProps = (0, import_react24.useMemo)(
2245
2575
  () => ({
2246
2576
  value: props.value,
2247
2577
  isDisabled: props.disabled,
@@ -2266,32 +2596,36 @@ var Segmented = (props) => {
2266
2596
  }
2267
2597
  );
2268
2598
  };
2269
- var SegmentedControlRoot = import_styled_components22.default.div`
2599
+ var SegmentedControlRoot = import_styled_components21.default.div`
2270
2600
  display: inline-flex;
2271
2601
  align-items: center;
2272
2602
 
2273
- ${theme((o) => [o.bg.surface3, o.borderRadius(16)])}
2603
+ background-color: var(--charcoal-surface3);
2604
+ border-radius: 16px;
2274
2605
  `;
2275
- var SegmentedRoot = import_styled_components22.default.label`
2606
+ var SegmentedRoot = import_styled_components21.default.label`
2276
2607
  position: relative;
2277
2608
  display: flex;
2278
2609
  align-items: center;
2279
2610
  cursor: pointer;
2280
2611
  height: 32px;
2281
2612
 
2282
- ${import_utils11.disabledSelector} {
2613
+ padding-right: 16px;
2614
+ padding-left: 16px;
2615
+ border-radius: 16px;
2616
+ &:disabled,
2617
+ &[aria-disabled]:not([aria-disabled='false']) {
2283
2618
  cursor: default;
2619
+ opacity: 0.32;
2284
2620
  }
2621
+ color: var(--charcoal-text2);
2285
2622
 
2286
- ${({ checked }) => theme((o) => [
2287
- o.padding.horizontal(16),
2288
- o.borderRadius(16),
2289
- o.disabled,
2290
- checked === true && o.bg.brand,
2291
- checked === true ? o.font.text5 : o.font.text2
2292
- ])}
2623
+ ${({ checked = false }) => checked && import_styled_components21.css`
2624
+ background-color: var(--charcoal-brand);
2625
+ color: var(--charcoal-text5);
2626
+ `}
2293
2627
  `;
2294
- var SegmentedInput = import_styled_components22.default.input`
2628
+ var SegmentedInput = import_styled_components21.default.input`
2295
2629
  position: absolute;
2296
2630
 
2297
2631
  height: 0px;
@@ -2305,29 +2639,47 @@ var SegmentedInput = import_styled_components22.default.input`
2305
2639
  white-space: nowrap;
2306
2640
  opacity: 0;
2307
2641
  `;
2308
- var RadioLabel2 = import_styled_components22.default.div`
2642
+ var RadioLabel2 = import_styled_components21.default.div`
2309
2643
  background: transparent;
2310
2644
  display: flex;
2311
2645
  align-items: center;
2312
2646
  height: 22px;
2313
2647
  `;
2314
- var SegmentedLabelInner = import_styled_components22.default.div`
2315
- ${theme((o) => [o.typography(14)])}
2648
+ var SegmentedLabelInner = import_styled_components21.default.div`
2649
+ font-size: 14px;
2650
+ line-height: 22px;
2651
+ display: flow-root;
2652
+
2653
+ &::before {
2654
+ display: block;
2655
+ width: 0;
2656
+ height: 0;
2657
+ content: '';
2658
+ margin-top: -4px;
2659
+ }
2660
+ &::after {
2661
+ display: block;
2662
+ width: 0;
2663
+ height: 0;
2664
+ content: '';
2665
+ margin-bottom: -4px;
2666
+ }
2316
2667
  `;
2317
2668
 
2318
2669
  // src/components/Checkbox/index.tsx
2319
- var import_react24 = require("react");
2320
- var import_styled_components23 = __toESM(require("styled-components"));
2670
+ var import_react25 = require("react");
2671
+ var import_styled_components22 = __toESM(require("styled-components"));
2321
2672
  var import_checkbox = require("@react-aria/checkbox");
2322
- var import_utils12 = require("@react-aria/utils");
2673
+ var import_utils9 = require("@react-aria/utils");
2323
2674
  var import_react_stately3 = require("react-stately");
2324
- var import_utils13 = require("@charcoal-ui/utils");
2675
+ var import_utils10 = require("@charcoal-ui/utils");
2325
2676
  var import_jsx_runtime27 = require("react/jsx-runtime");
2326
- var Checkbox = (0, import_react24.forwardRef)(
2677
+ var Checkbox = (0, import_react25.forwardRef)(
2327
2678
  function CheckboxInner({ invalid = false, ...props }, ref) {
2328
- const ariaCheckboxProps = (0, import_react24.useMemo)(
2679
+ const ariaCheckboxProps = (0, import_react25.useMemo)(
2329
2680
  () => ({
2330
2681
  ...props,
2682
+ isInValid: invalid,
2331
2683
  isSelected: props.checked,
2332
2684
  defaultSelected: props.defaultChecked,
2333
2685
  validationState: invalid ? "invalid" : "valid",
@@ -2337,38 +2689,41 @@ var Checkbox = (0, import_react24.forwardRef)(
2337
2689
  [invalid, props]
2338
2690
  );
2339
2691
  const state = (0, import_react_stately3.useToggleState)(ariaCheckboxProps);
2340
- const objectRef = (0, import_utils12.useObjectRef)(ref);
2692
+ const objectRef = (0, import_utils9.useObjectRef)(ref);
2341
2693
  const { inputProps } = (0, import_checkbox.useCheckbox)(ariaCheckboxProps, state, objectRef);
2342
2694
  const isDisabled = (props.disabled ?? false) || (props.readonly ?? false);
2343
2695
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(InputRoot, { "aria-disabled": isDisabled, className: props.className, children: [
2344
2696
  /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(CheckboxRoot, { children: [
2345
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CheckboxInput, { type: "checkbox", ...inputProps, invalid }),
2697
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CheckboxInput, { type: "checkbox", ...inputProps }),
2346
2698
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CheckboxInputOverlay, { "aria-hidden": true, checked: inputProps.checked, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Icon_default, { name: "24/Check", unsafeNonGuidelineScale: 2 / 3 }) })
2347
2699
  ] }),
2348
2700
  "children" in props && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(InputLabel, { children: props.children })
2349
2701
  ] });
2350
2702
  }
2351
2703
  );
2352
- var Checkbox_default = (0, import_react24.memo)(Checkbox);
2353
- var hiddenCss = import_styled_components23.css`
2704
+ var Checkbox_default = (0, import_react25.memo)(Checkbox);
2705
+ var hiddenCss = import_styled_components22.css`
2354
2706
  visibility: hidden;
2355
2707
  `;
2356
- var InputRoot = import_styled_components23.default.label`
2708
+ var InputRoot = import_styled_components22.default.label`
2357
2709
  position: relative;
2358
2710
  display: flex;
2359
2711
 
2360
2712
  cursor: pointer;
2361
- ${import_utils13.disabledSelector} {
2713
+ ${import_utils10.disabledSelector} {
2362
2714
  cursor: default;
2363
2715
  }
2364
2716
 
2365
- gap: ${({ theme: theme3 }) => (0, import_utils13.px)(theme3.spacing[4])};
2366
- ${theme((o) => [o.disabled])}
2717
+ gap: 4px;
2718
+ &:disabled,
2719
+ &[aria-disabled]:not([aria-disabled='false']) {
2720
+ opacity: 0.32;
2721
+ }
2367
2722
  `;
2368
- var CheckboxRoot = import_styled_components23.default.div`
2723
+ var CheckboxRoot = import_styled_components22.default.div`
2369
2724
  position: relative;
2370
2725
  `;
2371
- var CheckboxInput = import_styled_components23.default.input`
2726
+ var CheckboxInput = import_styled_components22.default.input`
2372
2727
  &[type='checkbox'] {
2373
2728
  appearance: none;
2374
2729
  display: block;
@@ -2376,23 +2731,50 @@ var CheckboxInput = import_styled_components23.default.input`
2376
2731
  margin: 0;
2377
2732
  width: 20px;
2378
2733
  height: 20px;
2734
+ border-radius: 4px;
2735
+ transition: 0.2s box-shadow, 0.2s background-color;
2379
2736
 
2380
2737
  &:checked {
2381
- ${theme((o) => o.bg.brand.hover.press)}
2738
+ background-color: var(--charcoal-brand);
2739
+
2740
+ &:not(:disabled):not([aria-disabled]),
2741
+ &[aria-disabled='false'] {
2742
+ &:hover {
2743
+ background-color: var(--charcoal-brand-hover);
2744
+ }
2745
+ &:active {
2746
+ background-color: var(--charcoal-brand-press);
2747
+ }
2748
+ }
2749
+ }
2750
+
2751
+ &:not(:disabled):not([aria-disabled]),
2752
+ &[aria-disabled='false'] {
2753
+ &:focus,
2754
+ &:active {
2755
+ outline: none;
2756
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
2757
+ &:not(:focus-visible) {
2758
+ outline: none;
2759
+ }
2760
+ }
2761
+ &:focus-visible {
2762
+ outline: none;
2763
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
2764
+ }
2765
+ &[aria-invalid='true'] {
2766
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
2767
+ }
2382
2768
  }
2769
+
2383
2770
  &:not(:checked) {
2384
2771
  border-width: 2px;
2385
2772
  border-style: solid;
2386
- border-color: ${({ theme: theme3 }) => theme3.color.text4};
2773
+ border-color: var(--charcoal-text4);
2387
2774
  }
2388
- ${theme((o) => [o.outline.default.focus, o.borderRadius(4)])}
2389
- ${(p) => p.invalid && theme((o) => [o.outline.assertive])}
2390
-
2391
- /* FIXME: o.outline.default.focus の transition に o.bg.brand の transition が打ち消されてしまう */
2392
- transition: all 0.2s !important;
2393
2775
  }
2394
2776
  `;
2395
- var CheckboxInputOverlay = import_styled_components23.default.div`
2777
+ var CheckboxInputOverlay = import_styled_components22.default.div`
2396
2778
  position: absolute;
2397
2779
  top: -2px;
2398
2780
  left: -2px;
@@ -2400,31 +2782,31 @@ var CheckboxInputOverlay = import_styled_components23.default.div`
2400
2782
  display: flex;
2401
2783
  align-items: center;
2402
2784
  justify-content: center;
2403
-
2404
- ${theme((o) => [o.width.px(24), o.height.px(24), o.font.text5])}
2785
+ width: 24px;
2786
+ height: 24px;
2787
+ color: var(--charcoal-text5);
2405
2788
 
2406
2789
  ${({ checked }) => checked !== true && hiddenCss};
2407
2790
  `;
2408
- var InputLabel = import_styled_components23.default.div`
2409
- ${theme((o) => [o.font.text2])}
2410
-
2791
+ var InputLabel = import_styled_components22.default.div`
2792
+ color: var(--charcoal-text2);
2411
2793
  font-size: 14px;
2412
2794
  /** checkbox の height が 20px なのでcheckbox と text が揃っているように見せるために行ボックスの高さを 20px にしている */
2413
2795
  line-height: 20px;
2414
2796
  `;
2415
2797
 
2416
2798
  // src/components/TagItem/index.tsx
2417
- var import_react25 = require("react");
2418
- var import_utils14 = require("@react-aria/utils");
2419
- var import_styled_components24 = __toESM(require("styled-components"));
2420
- var import_utils15 = require("@charcoal-ui/utils");
2799
+ var import_react26 = require("react");
2800
+ var import_utils11 = require("@react-aria/utils");
2801
+ var import_styled_components23 = __toESM(require("styled-components"));
2802
+ var import_utils12 = require("@charcoal-ui/utils");
2421
2803
  var import_button = require("@react-aria/button");
2422
2804
  var import_jsx_runtime28 = require("react/jsx-runtime");
2423
2805
  var sizeMap = {
2424
2806
  S: 32,
2425
2807
  M: 40
2426
2808
  };
2427
- var TagItem = (0, import_react25.forwardRef)(
2809
+ var TagItem = (0, import_react26.forwardRef)(
2428
2810
  function TagItemInner({
2429
2811
  label,
2430
2812
  translatedLabel,
@@ -2436,8 +2818,8 @@ var TagItem = (0, import_react25.forwardRef)(
2436
2818
  className,
2437
2819
  ...props
2438
2820
  }, _ref) {
2439
- const ref = (0, import_utils14.useObjectRef)(_ref);
2440
- const ariaButtonProps = (0, import_react25.useMemo)(
2821
+ const ref = (0, import_utils11.useObjectRef)(_ref);
2822
+ const ariaButtonProps = (0, import_react26.useMemo)(
2441
2823
  () => ({
2442
2824
  elementType: "a",
2443
2825
  isDisabled: disabled,
@@ -2469,8 +2851,21 @@ var TagItem = (0, import_react25.forwardRef)(
2469
2851
  );
2470
2852
  }
2471
2853
  );
2472
- var TagItem_default = (0, import_react25.memo)(TagItem);
2473
- var TagItemRoot = import_styled_components24.default.a`
2854
+ var TagItem_default = (0, import_react26.memo)(TagItem);
2855
+ var horizontalPadding = ({ left, right }) => import_styled_components23.css`
2856
+ padding-right: ${(0, import_utils12.px)(right)};
2857
+ padding-left: ${(0, import_utils12.px)(left)};
2858
+ `;
2859
+ var tagItemRootSize = (size) => {
2860
+ switch (size) {
2861
+ case "M":
2862
+ return horizontalPadding({ left: 24, right: 24 });
2863
+ case "S":
2864
+ return horizontalPadding({ left: 16, right: 16 });
2865
+ }
2866
+ };
2867
+ var activeTagItemRoot = horizontalPadding({ left: 16, right: 8 });
2868
+ var TagItemRoot = import_styled_components23.default.a`
2474
2869
  isolation: isolate;
2475
2870
  position: relative;
2476
2871
  height: ${({ size }) => sizeMap[size]}px;
@@ -2480,22 +2875,30 @@ var TagItemRoot = import_styled_components24.default.a`
2480
2875
  text-decoration: none;
2481
2876
  cursor: pointer;
2482
2877
  overflow: hidden;
2878
+ border-radius: 4px;
2879
+ ${({ size, status }) => status !== "active" && tagItemRootSize(size)}
2880
+ ${({ status }) => status === "active" && activeTagItemRoot}
2881
+ color: ${({ status }) => status === "inactive" ? "var(--charcoal-text2)" : "var(--charcoal-text5)"};
2882
+
2883
+ transition: 0.2s box-shadow;
2884
+
2885
+ &:not(:disabled):not([aria-disabled]),
2886
+ &[aria-disabled='false'] {
2887
+ &:focus,
2888
+ &:active,
2889
+ &:focus-visible {
2890
+ outline: none;
2891
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
2892
+ }
2893
+ }
2483
2894
 
2484
- ${({ size, status }) => theme((o) => [
2485
- o.outline.default.focus,
2486
- o.borderRadius(4),
2487
- status !== "active" && size === "M" && o.padding.horizontal(24),
2488
- status !== "active" && size === "S" && o.padding.horizontal(16),
2489
- status === "inactive" ? o.font.text2 : o.font.text5,
2490
- ...status === "active" ? [o.padding.left(16), o.padding.right(8)] : []
2491
- ])}
2492
-
2493
- ${import_utils15.disabledSelector} {
2494
- ${theme((o) => [o.disabled])}
2895
+ &:disabled,
2896
+ &[aria-disabled]:not([aria-disabled='false']) {
2897
+ opacity: 0.32;
2495
2898
  cursor: default;
2496
2899
  }
2497
2900
  `;
2498
- var Background = import_styled_components24.default.div`
2901
+ var Background = import_styled_components23.default.div`
2499
2902
  position: absolute;
2500
2903
  z-index: 1;
2501
2904
  top: 0;
@@ -2504,10 +2907,13 @@ var Background = import_styled_components24.default.div`
2504
2907
  height: 100%;
2505
2908
 
2506
2909
  background-color: ${({ bgColor }) => bgColor};
2507
- ${({ status }) => status === "inactive" && theme((o) => o.bg.surface3)}
2910
+ ${({ status }) => status === "inactive" && import_styled_components23.css`
2911
+ background-color: var(--charcoal-surface3);
2912
+ `}
2913
+
2914
+ ${({ bgImage }) => bgImage !== void 0 && import_styled_components23.css`
2915
+ background-color: var(--charcoal-surface4);
2508
2916
 
2509
- ${({ bgImage }) => bgImage !== void 0 && import_styled_components24.css`
2510
- ${theme((o) => [o.bg.surface4])}
2511
2917
  &::before {
2512
2918
  content: '';
2513
2919
  position: absolute;
@@ -2522,25 +2928,43 @@ var Background = import_styled_components24.default.div`
2522
2928
  }
2523
2929
  `}
2524
2930
  `;
2525
- var Inner = import_styled_components24.default.div`
2931
+ var Inner = import_styled_components23.default.div`
2526
2932
  display: inline-flex;
2527
- gap: ${({ theme: theme3 }) => (0, import_utils15.px)(theme3.spacing[8])};
2933
+ gap: 8px;
2528
2934
  align-items: center;
2529
2935
  z-index: 2;
2530
2936
  `;
2531
- var labelCSS = import_styled_components24.css`
2532
- ${theme((o) => [o.typography(14).bold])}
2937
+ var labelCSS = import_styled_components23.css`
2938
+ font-size: 14px;
2939
+ line-height: 22px;
2940
+ font-weight: bold;
2941
+ display: flow-root;
2942
+
2943
+ &::before {
2944
+ display: block;
2945
+ width: 0;
2946
+ height: 0;
2947
+ content: '';
2948
+ margin-top: -4px;
2949
+ }
2950
+ &::after {
2951
+ display: block;
2952
+ width: 0;
2953
+ height: 0;
2954
+ content: '';
2955
+ margin-bottom: -4px;
2956
+ }
2533
2957
  `;
2534
- var translateLabelCSS = import_styled_components24.css`
2958
+ var translateLabelCSS = import_styled_components23.css`
2535
2959
  display: flex;
2536
2960
  align-items: center;
2537
2961
  flex-direction: column;
2538
2962
  font-size: 10px;
2539
2963
  `;
2540
- var LabelWrapper = import_styled_components24.default.div`
2964
+ var LabelWrapper = import_styled_components23.default.div`
2541
2965
  ${({ isTranslate }) => isTranslate ?? false ? translateLabelCSS : labelCSS}
2542
2966
  `;
2543
- var Label3 = import_styled_components24.default.span`
2967
+ var Label3 = import_styled_components23.default.span`
2544
2968
  max-width: 152px;
2545
2969
  overflow: hidden;
2546
2970
  text-overflow: ellipsis;
@@ -2549,8 +2973,25 @@ var Label3 = import_styled_components24.default.span`
2549
2973
  color: inherit;
2550
2974
  line-height: inherit;
2551
2975
  `;
2552
- var TranslatedLabel = import_styled_components24.default.div`
2553
- ${theme((o) => [o.typography(12).bold])}
2976
+ var TranslatedLabel = import_styled_components23.default.div`
2977
+ font-size: 12px;
2978
+ line-height: 20px;
2979
+ font-weight: bold;
2980
+ display: flow-root;
2981
+ &::before {
2982
+ display: block;
2983
+ width: 0;
2984
+ height: 0;
2985
+ content: '';
2986
+ margin-top: -4px;
2987
+ }
2988
+ &::after {
2989
+ display: block;
2990
+ width: 0;
2991
+ height: 0;
2992
+ content: '';
2993
+ margin-bottom: -4px;
2994
+ }
2554
2995
  `;
2555
2996
  // Annotate the CommonJS export names for ESM import in node:
2556
2997
  0 && (module.exports = {