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

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 (41) hide show
  1. package/dist/components/Button/index.d.ts.map +1 -1
  2. package/dist/components/DropdownSelector/DropdownPopover.d.ts.map +1 -1
  3. package/dist/components/DropdownSelector/OptionItem.d.ts +7 -0
  4. package/dist/components/DropdownSelector/OptionItem.d.ts.map +1 -0
  5. package/dist/components/DropdownSelector/index.d.ts +22 -29
  6. package/dist/components/DropdownSelector/index.d.ts.map +1 -1
  7. package/dist/components/DropdownSelector/index.story.d.ts +5 -18
  8. package/dist/components/DropdownSelector/index.story.d.ts.map +1 -1
  9. package/dist/components/DropdownSelector/utils/focusIfHTMLLIElement.d.ts +6 -0
  10. package/dist/components/DropdownSelector/utils/focusIfHTMLLIElement.d.ts.map +1 -0
  11. package/dist/components/DropdownSelector/utils/handleFocusByKeyBoard.d.ts +6 -0
  12. package/dist/components/DropdownSelector/utils/handleFocusByKeyBoard.d.ts.map +1 -0
  13. package/dist/components/LoadingSpinner/index.d.ts.map +1 -1
  14. package/dist/components/Modal/index.d.ts +5 -2
  15. package/dist/components/Modal/index.d.ts.map +1 -1
  16. package/dist/components/Radio/index.d.ts.map +1 -1
  17. package/dist/components/SegmentedControl/index.d.ts.map +1 -1
  18. package/dist/components/SegmentedControl/index.story.d.ts.map +1 -1
  19. package/dist/index.cjs.js +313 -336
  20. package/dist/index.cjs.js.map +1 -1
  21. package/dist/index.d.ts +3 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.esm.js +296 -319
  24. package/dist/index.esm.js.map +1 -1
  25. package/package.json +6 -6
  26. package/src/components/DropdownSelector/DropdownPopover.tsx +9 -15
  27. package/src/components/DropdownSelector/OptionItem.tsx +85 -0
  28. package/src/components/DropdownSelector/index.story.tsx +69 -156
  29. package/src/components/DropdownSelector/index.tsx +110 -140
  30. package/src/components/DropdownSelector/utils/focusIfHTMLLIElement.tsx +12 -0
  31. package/src/components/DropdownSelector/utils/handleFocusByKeyBoard.tsx +20 -0
  32. package/src/components/LoadingSpinner/index.tsx +1 -0
  33. package/src/components/Modal/index.tsx +79 -61
  34. package/src/components/Radio/index.tsx +2 -0
  35. package/src/components/SegmentedControl/index.story.tsx +2 -0
  36. package/src/components/SegmentedControl/index.tsx +1 -0
  37. package/src/components/TextField/index.tsx +1 -0
  38. package/src/index.ts +7 -2
  39. package/src/components/DropdownSelector/ListBoxSection.tsx +0 -60
  40. package/src/components/DropdownSelector/Listbox.tsx +0 -67
  41. package/src/components/DropdownSelector/Option.tsx +0 -66
package/dist/index.cjs.js CHANGED
@@ -31,8 +31,7 @@ __export(src_exports, {
31
31
  Checkbox: () => Checkbox_default,
32
32
  Clickable: () => Clickable_default,
33
33
  ComponentAbstraction: () => ComponentAbstraction,
34
- DropdownSelector: () => DropdownSelector_default,
35
- DropdownSelectorItem: () => DropdownSelectorItem,
34
+ DropdownSelector: () => DropdownSelector,
36
35
  Icon: () => Icon_default,
37
36
  IconButton: () => IconButton_default,
38
37
  LoadingSpinner: () => LoadingSpinner,
@@ -44,6 +43,7 @@ __export(src_exports, {
44
43
  ModalHeader: () => ModalHeader,
45
44
  MultiSelect: () => MultiSelect,
46
45
  MultiSelectGroup: () => MultiSelectGroup,
46
+ OptionItem: () => OptionItem,
47
47
  OverlayProvider: () => import_overlays.OverlayProvider,
48
48
  Radio: () => Radio,
49
49
  RadioGroup: () => RadioGroup,
@@ -437,6 +437,8 @@ var RadioInput = import_styled_components6.default.input.attrs({ type: "radio" }
437
437
  width: 20px;
438
438
  height: 20px;
439
439
 
440
+ cursor: pointer;
441
+
440
442
  ${({ hasError = false }) => theme((o) => [
441
443
  o.borderRadius("oval"),
442
444
  o.bg.surface1.hover.press,
@@ -1128,6 +1130,7 @@ var PrefixContainer = import_styled_components10.default.span`
1128
1130
  top: 50%;
1129
1131
  left: 8px;
1130
1132
  transform: translateY(-50%);
1133
+ z-index: 1;
1131
1134
  `;
1132
1135
  var SuffixContainer = import_styled_components10.default.span`
1133
1136
  position: absolute;
@@ -1351,7 +1354,7 @@ function Modal({
1351
1354
  ...underlayProps,
1352
1355
  style: transitionEnabled ? { backgroundColor } : {}
1353
1356
  },
1354
- /* @__PURE__ */ import_react13.default.createElement(import_focus.FocusScope, { contain: true, restoreFocus: true, autoFocus: true }, /* @__PURE__ */ import_react13.default.createElement(
1357
+ /* @__PURE__ */ import_react13.default.createElement(import_focus.FocusScope, { contain: true, restoreFocus: true, autoFocus: true }, /* @__PURE__ */ import_react13.default.createElement(DialogContainer, { bottomSheet, size }, /* @__PURE__ */ import_react13.default.createElement(
1355
1358
  ModalDialog,
1356
1359
  {
1357
1360
  ref,
@@ -1377,7 +1380,7 @@ function Modal({
1377
1380
  }
1378
1381
  )
1379
1382
  )
1380
- ))
1383
+ )))
1381
1384
  ))
1382
1385
  );
1383
1386
  }
@@ -1389,6 +1392,8 @@ var ModalContext = import_react13.default.createContext({
1389
1392
  });
1390
1393
  var ModalBackground = (0, import_react_spring.animated)(import_styled_components11.default.div`
1391
1394
  z-index: ${({ zIndex }) => zIndex};
1395
+ overflow: scroll;
1396
+ display: flex;
1392
1397
  position: fixed;
1393
1398
  top: 0;
1394
1399
  left: 0;
@@ -1397,34 +1402,52 @@ var ModalBackground = (0, import_react_spring.animated)(import_styled_components
1397
1402
 
1398
1403
  ${theme((o) => [o.bg.surface4])}
1399
1404
  `);
1405
+ var DialogContainer = import_styled_components11.default.div`
1406
+ position: relative;
1407
+ margin: auto;
1408
+ padding: 24px 0;
1409
+ width: ${(p) => {
1410
+ switch (p.size) {
1411
+ case "S": {
1412
+ return columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
1413
+ }
1414
+ case "M": {
1415
+ return columnSystem(4, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
1416
+ }
1417
+ case "L": {
1418
+ return columnSystem(6, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
1419
+ }
1420
+ default: {
1421
+ return unreachable(p.size);
1422
+ }
1423
+ }
1424
+ }}px;
1425
+
1426
+ @media ${({ theme: theme4 }) => (0, import_utils5.maxWidth)(theme4.breakpoint.screen1)} {
1427
+ width: calc(100% - 48px);
1428
+ ${(p) => p.bottomSheet !== false && import_styled_components11.css`
1429
+ margin: 0;
1430
+ padding: 0;
1431
+ bottom: 0;
1432
+ position: absolute;
1433
+ width: 100%;
1434
+ ${p.bottomSheet === "full" ? "height: 100%" : ""};
1435
+ `}
1436
+ }
1437
+ `;
1400
1438
  var ModalDialog = (0, import_react_spring.animated)(import_styled_components11.default.div`
1401
- position: absolute;
1402
- top: 50%;
1403
- left: 50%;
1404
- transform: translate(-50%, -50%);
1405
- width: ${(p) => p.size === "S" ? columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2 : p.size === "M" ? columnSystem(4, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2 : p.size === "L" ? columnSystem(6, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2 : unreachable(p.size)}px;
1439
+ position: relative;
1440
+ margin: auto;
1441
+ padding: 24px 0;
1406
1442
 
1407
1443
  ${theme((o) => [o.bg.background1, o.borderRadius(24)])}
1408
-
1409
1444
  @media ${({ theme: theme4 }) => (0, import_utils5.maxWidth)(theme4.breakpoint.screen1)} {
1410
- ${(p) => p.bottomSheet === "full" ? import_styled_components11.css`
1411
- top: auto;
1412
- bottom: 0;
1413
- left: 0;
1414
- transform: none;
1415
- border-radius: 0;
1416
- width: 100%;
1417
- height: 100%;
1418
- ` : p.bottomSheet ? import_styled_components11.css`
1419
- top: auto;
1420
- bottom: 0;
1421
- left: 0;
1422
- transform: none;
1423
- border-radius: 0;
1424
- width: 100%;
1425
- ` : import_styled_components11.css`
1426
- width: calc(100% - 48px);
1427
- `}
1445
+ ${(p) => p.bottomSheet !== false && import_styled_components11.css`
1446
+ border-radius: 0;
1447
+ ${p.bottomSheet === "full" && import_styled_components11.css`
1448
+ height: 100%;
1449
+ `}
1450
+ `}
1428
1451
  }
1429
1452
  `);
1430
1453
  var ModalCrossButton = (0, import_styled_components11.default)(IconButton_default)`
@@ -1484,6 +1507,7 @@ function LoadingSpinner({
1484
1507
  return /* @__PURE__ */ import_react15.default.createElement(LoadingSpinnerRoot, { size, padding, transparent }, /* @__PURE__ */ import_react15.default.createElement(LoadingSpinnerIcon, null));
1485
1508
  }
1486
1509
  var LoadingSpinnerRoot = import_styled_components13.default.div.attrs({ role: "progressbar" })`
1510
+ box-sizing: content-box;
1487
1511
  margin: auto;
1488
1512
  padding: ${(props) => props.padding}px;
1489
1513
  border-radius: 8px;
@@ -1535,156 +1559,21 @@ var LoadingSpinnerIcon = import_react15.default.forwardRef(function LoadingSpinn
1535
1559
  });
1536
1560
 
1537
1561
  // src/components/DropdownSelector/index.tsx
1538
- var import_react20 = __toESM(require("react"));
1539
- var import_styled_components19 = __toESM(require("styled-components"));
1540
- var import_react_stately2 = require("react-stately");
1541
- var import_utils8 = require("@charcoal-ui/utils");
1542
- var import_visually_hidden2 = require("@react-aria/visually-hidden");
1543
- var import_select = require("@react-aria/select");
1544
- var import_button = require("@react-aria/button");
1545
-
1546
- // src/components/DropdownSelector/Listbox.tsx
1547
- var import_react18 = __toESM(require("react"));
1548
- var import_styled_components17 = __toESM(require("styled-components"));
1549
- var import_listbox3 = require("@react-aria/listbox");
1550
-
1551
- // src/components/DropdownSelector/ListBoxSection.tsx
1552
- var import_listbox2 = require("@react-aria/listbox");
1553
- var import_separator = require("@react-aria/separator");
1554
1562
  var import_react17 = __toESM(require("react"));
1555
- var import_styled_components16 = __toESM(require("styled-components"));
1556
-
1557
- // src/components/DropdownSelector/Option.tsx
1558
- var import_react16 = __toESM(require("react"));
1559
- var import_styled_components14 = __toESM(require("styled-components"));
1560
- var import_listbox = require("@react-aria/listbox");
1561
- var import_utils6 = require("@react-aria/utils");
1562
- var import_focus2 = require("@react-aria/focus");
1563
- var import_utils7 = require("@charcoal-ui/utils");
1564
- function Option({ item, state, mode }) {
1565
- const ref = (0, import_react16.useRef)(null);
1566
- const { optionProps, isSelected } = (0, import_listbox.useOption)(item, state, ref);
1567
- const { focusProps } = (0, import_focus2.useFocusRing)();
1568
- return /* @__PURE__ */ import_react16.default.createElement(OptionRoot, { ...(0, import_utils6.mergeProps)(optionProps, focusProps), ref, mode }, /* @__PURE__ */ import_react16.default.createElement(OptionCheckIcon, { name: "16/Check", isSelected }), /* @__PURE__ */ import_react16.default.createElement(OptionText, null, item.rendered));
1569
- }
1570
- var OptionRoot = import_styled_components14.default.li`
1571
- display: flex;
1572
- align-items: center;
1573
- gap: ${({ theme: theme4 }) => (0, import_utils7.px)(theme4.spacing[4])};
1574
- height: 40px;
1575
- cursor: pointer;
1576
- outline: none;
1577
-
1578
- ${({ mode }) => theme((o) => [
1579
- o.padding.horizontal(8),
1580
- mode === "separator" && o.padding.vertical(4)
1581
- ])}
1582
-
1583
- &:focus {
1584
- ${theme((o) => [o.bg.surface3])}
1585
- }
1586
- `;
1587
- var OptionCheckIcon = (0, import_styled_components14.default)(Icon_default)`
1588
- visibility: hidden;
1589
- ${theme((o) => [o.font.text2])}
1590
-
1591
- ${({ isSelected }) => isSelected && import_styled_components14.css`
1592
- visibility: visible;
1593
- `}
1594
- `;
1595
- var OptionText = import_styled_components14.default.span`
1596
- display: block;
1597
- ${theme((o) => [o.typography(14), o.font.text2])}
1598
- `;
1599
-
1600
- // src/components/DropdownSelector/Divider.tsx
1601
1563
  var import_styled_components15 = __toESM(require("styled-components"));
1602
- var Divider = import_styled_components15.default.div.attrs({ role: "separator" })`
1603
- display: flex;
1604
-
1605
- &:before {
1606
- content: '';
1607
- display: block;
1608
- width: 100%;
1609
- height: 1px;
1610
- background: #00000014;
1611
- }
1612
- `;
1613
-
1614
- // src/components/DropdownSelector/ListBoxSection.tsx
1615
- function ListBoxSection(props) {
1616
- const { state } = props;
1617
- const { itemProps, headingProps, groupProps } = (0, import_listbox2.useListBoxSection)({
1618
- heading: props.section.rendered,
1619
- "aria-label": props.section["aria-label"]
1620
- });
1621
- const { separatorProps } = (0, import_separator.useSeparator)({
1622
- elementType: "li"
1623
- });
1624
- return /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, props.section.key !== props.state.collection.getFirstKey() && /* @__PURE__ */ import_react17.default.createElement(Divider, { ...separatorProps, role: "separator" }), /* @__PURE__ */ import_react17.default.createElement(StyledLi, { ...itemProps }, props.section.rendered != null && /* @__PURE__ */ import_react17.default.createElement(SectionSpan, { ...headingProps }, props.section.rendered), /* @__PURE__ */ import_react17.default.createElement(StyledUl, { ...groupProps }, [...props.section.childNodes].map((node) => /* @__PURE__ */ import_react17.default.createElement(Option, { key: node.key, item: node, state })))));
1625
- }
1626
- var SectionSpan = import_styled_components16.default.span`
1627
- ${theme((o) => [
1628
- o.font.text3,
1629
- o.typography(12).bold,
1630
- o.margin.bottom(8).left(16).top(16)
1631
- ])}
1632
- `;
1633
- var StyledUl = import_styled_components16.default.ul`
1634
- padding-left: 0;
1635
- margin: 0;
1636
- box-sizing: border-box;
1637
- list-style: none;
1638
- overflow: hidden;
1639
- `;
1640
- var StyledLi = import_styled_components16.default.li``;
1641
-
1642
- // src/components/DropdownSelector/Listbox.tsx
1643
- var Listbox = ({
1644
- state,
1645
- mode = "default",
1646
- ...props
1647
- }) => {
1648
- const ref = (0, import_react18.useRef)(null);
1649
- const { listBoxProps } = (0, import_listbox3.useListBox)(props, state, ref);
1650
- const collection = (0, import_react18.useMemo)(
1651
- () => [...state.collection].map((node, index, self) => ({
1652
- node,
1653
- first: index === 0,
1654
- last: index === self.length - 1
1655
- })),
1656
- [state.collection]
1657
- );
1658
- return /* @__PURE__ */ import_react18.default.createElement(ListboxRoot, { ref, ...listBoxProps }, collection.map(({ node, last }) => /* @__PURE__ */ import_react18.default.createElement(import_react18.Fragment, { key: node.key }, node.type === "section" ? /* @__PURE__ */ import_react18.default.createElement(ListBoxSection, { section: node, state }) : /* @__PURE__ */ import_react18.default.createElement(Option, { item: node, state, mode }), !last && mode === "separator" && /* @__PURE__ */ import_react18.default.createElement(Divider, null))));
1659
- };
1660
- var Listbox_default = (0, import_react18.memo)(Listbox);
1661
- var ListboxRoot = import_styled_components17.default.ul`
1662
- padding-left: 0;
1663
- margin: 0;
1664
- box-sizing: border-box;
1665
- list-style: none;
1666
- overflow: auto;
1667
- max-height: inherit;
1668
-
1669
- ${theme((o) => [
1670
- o.bg.background1,
1671
- o.border.default,
1672
- o.borderRadius(8),
1673
- o.padding.vertical(8),
1674
- o.outline.default.focus
1675
- ])}
1676
- `;
1564
+ var import_react_stately2 = require("react-stately");
1565
+ var import_utils6 = require("@charcoal-ui/utils");
1677
1566
 
1678
1567
  // src/components/DropdownSelector/DropdownPopover.tsx
1679
- var import_react19 = __toESM(require("react"));
1568
+ var import_react16 = __toESM(require("react"));
1680
1569
  var import_overlays3 = require("@react-aria/overlays");
1681
- var import_styled_components18 = __toESM(require("styled-components"));
1682
- var DropdownPopoverDiv = import_styled_components18.default.div`
1570
+ var import_styled_components14 = __toESM(require("styled-components"));
1571
+ var DropdownPopoverDiv = import_styled_components14.default.div`
1683
1572
  width: 100%;
1684
1573
  ${theme((o) => o.margin.top(4).bottom(4))}
1685
1574
  `;
1686
1575
  function DropdownPopover({ children, state, ...props }) {
1687
- const ref = (0, import_react19.useRef)(null);
1576
+ const ref = (0, import_react16.useRef)(null);
1688
1577
  const { popoverProps, underlayProps } = (0, import_overlays3.usePopover)(
1689
1578
  {
1690
1579
  ...props,
@@ -1693,131 +1582,122 @@ function DropdownPopover({ children, state, ...props }) {
1693
1582
  },
1694
1583
  state
1695
1584
  );
1696
- (0, import_react19.useEffect)(() => {
1585
+ (0, import_react16.useEffect)(() => {
1697
1586
  if (ref.current && props.triggerRef.current) {
1698
1587
  ref.current.style.width = `${props.triggerRef.current.clientWidth}px`;
1699
1588
  }
1700
1589
  }, [props.triggerRef]);
1701
- (0, import_react19.useEffect)(() => {
1590
+ (0, import_react16.useEffect)(() => {
1702
1591
  if (state.isOpen && props.value !== void 0) {
1703
- window.requestAnimationFrame(() => {
1704
- if (props.value === void 0)
1705
- return;
1706
- const windowScrollY = window.scrollY;
1707
- const windowScrollX = window.scrollX;
1708
- const selectedElement = document.querySelector(
1709
- `[data-key="${props.value.toString()}"]`
1710
- );
1711
- selectedElement?.scrollIntoView({ block: "center" });
1712
- window.scrollTo(windowScrollX, windowScrollY);
1713
- });
1592
+ const windowScrollY = window.scrollY;
1593
+ const windowScrollX = window.scrollX;
1594
+ const selectedElement = document.querySelector(
1595
+ `[data-key="${props.value.toString()}"]`
1596
+ );
1597
+ selectedElement?.scrollIntoView({ block: "center" });
1598
+ selectedElement?.focus();
1599
+ window.scrollTo(windowScrollX, windowScrollY);
1714
1600
  }
1715
1601
  }, [props.value, state.isOpen]);
1716
- return /* @__PURE__ */ import_react19.default.createElement(import_overlays3.Overlay, { portalContainer: document.body }, /* @__PURE__ */ import_react19.default.createElement("div", { ...underlayProps, style: { position: "fixed", inset: 0 } }), /* @__PURE__ */ import_react19.default.createElement(DropdownPopoverDiv, { ...popoverProps, ref }, /* @__PURE__ */ import_react19.default.createElement(import_overlays3.DismissButton, { onDismiss: () => state.close() }), children, /* @__PURE__ */ import_react19.default.createElement(import_overlays3.DismissButton, { onDismiss: () => state.close() })));
1602
+ return /* @__PURE__ */ import_react16.default.createElement(import_overlays3.Overlay, { portalContainer: document.body }, /* @__PURE__ */ import_react16.default.createElement("div", { ...underlayProps, style: { position: "fixed", inset: 0 } }), /* @__PURE__ */ import_react16.default.createElement(DropdownPopoverDiv, { ...popoverProps, ref }, /* @__PURE__ */ import_react16.default.createElement(import_overlays3.DismissButton, { onDismiss: () => state.close() }), children, /* @__PURE__ */ import_react16.default.createElement(import_overlays3.DismissButton, { onDismiss: () => state.close() })));
1717
1603
  }
1718
1604
 
1719
1605
  // src/components/DropdownSelector/index.tsx
1720
- var DropdownSelector = ({
1721
- open,
1722
- className,
1723
- label = "",
1724
- requiredText = "",
1725
- subLabel,
1726
- assertiveText,
1727
- autoComplete,
1728
- invalid = false,
1729
- disabled = false,
1730
- required = false,
1731
- showLabel = false,
1732
- mode = "default",
1733
- ...props
1734
- }) => {
1735
- const { visuallyHiddenProps } = (0, import_visually_hidden2.useVisuallyHidden)();
1736
- const triggerRef = (0, import_react20.useRef)(null);
1737
- const selectProps = (0, import_react20.useMemo)(
1738
- () => ({
1739
- ...props,
1740
- label,
1741
- isOpen: open,
1742
- isDisabled: disabled,
1743
- isRequired: required,
1744
- errorMessage: invalid && assertiveText,
1745
- validationState: invalid ? "invalid" : "valid",
1746
- onSelectionChange: props.onChange,
1747
- selectedKey: props.value,
1748
- defaultSelectedKey: props.defaultValue
1749
- }),
1750
- [assertiveText, disabled, invalid, label, open, props, required]
1751
- );
1752
- const state = (0, import_react_stately2.useSelectState)(selectProps);
1753
- const {
1754
- labelProps,
1755
- triggerProps,
1756
- valueProps,
1757
- menuProps,
1758
- errorMessageProps,
1759
- descriptionProps
1760
- } = (0, import_select.useSelect)(selectProps, state, triggerRef);
1761
- const { buttonProps } = (0, import_button.useButton)(triggerProps, triggerRef);
1762
- const hasAssertiveText = assertiveText !== void 0 && assertiveText.length > 0;
1763
- return /* @__PURE__ */ import_react20.default.createElement(DropdownSelectorRoot, { "aria-disabled": disabled, className }, /* @__PURE__ */ import_react20.default.createElement(
1606
+ var DropdownSelectorContext = (0, import_react17.createContext)({
1607
+ value: "",
1608
+ setValue: (_v) => {
1609
+ }
1610
+ });
1611
+ var defaultRequiredText = "*\u5FC5\u9808";
1612
+ function DropdownSelector(props) {
1613
+ const triggerRef = (0, import_react17.useRef)(null);
1614
+ const state = (0, import_react_stately2.useOverlayTriggerState)({});
1615
+ let preview;
1616
+ const childArray = import_react17.default.Children.toArray(props.children);
1617
+ for (let i = 0; i < childArray.length; i++) {
1618
+ const child = childArray[i];
1619
+ if (import_react17.default.isValidElement(child) && "value" in child.props) {
1620
+ const find = child.props.value === props.value;
1621
+ if (find && "children" in child.props) {
1622
+ preview = child.props.children;
1623
+ break;
1624
+ }
1625
+ }
1626
+ }
1627
+ return /* @__PURE__ */ import_react17.default.createElement(DropdownSelectorRoot, { "aria-disabled": props.disabled }, props.showLabel === true && /* @__PURE__ */ import_react17.default.createElement(
1764
1628
  DropdownFieldLabel,
1765
1629
  {
1766
- label,
1767
- required,
1768
- requiredText,
1769
- subLabel,
1770
- ...labelProps,
1771
- ...!showLabel ? visuallyHiddenProps : {}
1630
+ label: props.label,
1631
+ required: props.required,
1632
+ requiredText: props.requiredText ?? defaultRequiredText,
1633
+ subLabel: props.subLabel
1772
1634
  }
1773
- ), /* @__PURE__ */ import_react20.default.createElement(
1774
- import_select.HiddenSelect,
1635
+ ), /* @__PURE__ */ import_react17.default.createElement(
1636
+ DropdownButton,
1775
1637
  {
1776
- state,
1777
- triggerRef,
1778
- label,
1779
- name: props.name,
1780
- isDisabled: disabled,
1781
- autoComplete
1782
- }
1783
- ), /* @__PURE__ */ import_react20.default.createElement(DropdownButtonWrapper, null, /* @__PURE__ */ import_react20.default.createElement(DropdownButton, { ...buttonProps, ref: triggerRef, invalid }, /* @__PURE__ */ import_react20.default.createElement(DropdownButtonText, { ...valueProps }, state.selectedItem ? state.selectedItem.rendered : props.placeholder), /* @__PURE__ */ import_react20.default.createElement(DropdownButtonIcon, { name: "16/Menu" })), state.isOpen && /* @__PURE__ */ import_react20.default.createElement(
1638
+ invalid: props.invalid,
1639
+ disabled: props.disabled,
1640
+ onClick: () => {
1641
+ if (props.disabled === true)
1642
+ return;
1643
+ state.open();
1644
+ },
1645
+ ref: triggerRef
1646
+ },
1647
+ /* @__PURE__ */ import_react17.default.createElement(DropdownButtonText, null, props.placeholder !== void 0 && preview === void 0 ? props.placeholder : preview),
1648
+ /* @__PURE__ */ import_react17.default.createElement(DropdownButtonIcon, { name: "16/Menu" })
1649
+ ), state.isOpen && /* @__PURE__ */ import_react17.default.createElement(
1784
1650
  DropdownPopover,
1785
1651
  {
1786
1652
  state,
1787
1653
  triggerRef,
1788
- value: props.value ?? props.defaultValue
1654
+ value: props.value
1789
1655
  },
1790
- /* @__PURE__ */ import_react20.default.createElement(Listbox_default, { ...menuProps, state, mode })
1791
- )), hasAssertiveText && /* @__PURE__ */ import_react20.default.createElement(
1792
- AssertiveText,
1793
- {
1794
- invalid,
1795
- ...invalid ? errorMessageProps : descriptionProps
1796
- },
1797
- assertiveText
1798
- ));
1799
- };
1800
- var DropdownSelector_default = DropdownSelector;
1801
- var DropdownSelectorItem = import_react_stately2.Item;
1802
- var DropdownSelectorRoot = import_styled_components19.default.div`
1803
- position: relative;
1656
+ /* @__PURE__ */ import_react17.default.createElement(ListboxRoot, null, /* @__PURE__ */ import_react17.default.createElement(
1657
+ DropdownSelectorContext.Provider,
1658
+ {
1659
+ value: {
1660
+ value: props.value,
1661
+ setValue: (v) => {
1662
+ props.onChange(v);
1663
+ state.close();
1664
+ }
1665
+ }
1666
+ },
1667
+ props.children
1668
+ ))
1669
+ ), props.assistiveText !== void 0 && /* @__PURE__ */ import_react17.default.createElement(AssertiveText, { invalid: props.invalid }, props.assistiveText));
1670
+ }
1671
+ var ListboxRoot = import_styled_components15.default.ul`
1672
+ padding-left: 0;
1673
+ margin: 0;
1674
+ box-sizing: border-box;
1675
+ list-style: none;
1676
+ overflow: auto;
1677
+ max-height: inherit;
1678
+
1679
+ ${theme((o) => [
1680
+ o.bg.background1,
1681
+ o.border.default,
1682
+ o.borderRadius(8),
1683
+ o.padding.vertical(8)
1684
+ ])}
1685
+ `;
1686
+ var DropdownSelectorRoot = import_styled_components15.default.div`
1804
1687
  display: inline-block;
1805
1688
  width: 100%;
1806
1689
 
1807
- ${import_utils8.disabledSelector} {
1690
+ ${import_utils6.disabledSelector} {
1808
1691
  cursor: default;
1809
1692
  ${theme((o) => o.disabled)}
1810
1693
  }
1811
1694
  `;
1812
- var DropdownFieldLabel = (0, import_styled_components19.default)(FieldLabel_default)`
1695
+ var DropdownFieldLabel = (0, import_styled_components15.default)(FieldLabel_default)`
1813
1696
  width: 100%;
1814
1697
 
1815
1698
  ${theme((o) => o.margin.bottom(8))}
1816
1699
  `;
1817
- var DropdownButtonWrapper = import_styled_components19.default.div`
1818
- position: relative;
1819
- `;
1820
- var DropdownButton = import_styled_components19.default.button`
1700
+ var DropdownButton = import_styled_components15.default.button`
1821
1701
  display: flex;
1822
1702
  justify-content: space-between;
1823
1703
  align-items: center;
@@ -1827,7 +1707,7 @@ var DropdownButton = import_styled_components19.default.button`
1827
1707
  box-sizing: border-box;
1828
1708
  cursor: pointer;
1829
1709
 
1830
- ${import_utils8.disabledSelector} {
1710
+ ${import_utils6.disabledSelector} {
1831
1711
  cursor: default;
1832
1712
  }
1833
1713
 
@@ -1837,68 +1717,165 @@ var DropdownButton = import_styled_components19.default.button`
1837
1717
  o.outline.default.focus,
1838
1718
  o.bg.surface3,
1839
1719
  o.borderRadius(4),
1840
- invalid && o.outline.assertive
1720
+ invalid === true && o.outline.assertive
1841
1721
  ])}
1842
1722
  `;
1843
- var DropdownButtonText = import_styled_components19.default.span`
1723
+ var DropdownButtonText = import_styled_components15.default.span`
1844
1724
  text-align: left;
1845
1725
 
1846
1726
  ${theme((o) => [o.typography(14), o.font.text2])}
1847
1727
  `;
1848
- var DropdownButtonIcon = (0, import_styled_components19.default)(Icon_default)`
1728
+ var DropdownButtonIcon = (0, import_styled_components15.default)(Icon_default)`
1849
1729
  ${theme((o) => [o.font.text2])}
1850
1730
  `;
1851
- var AssertiveText = import_styled_components19.default.div`
1731
+ var AssertiveText = import_styled_components15.default.div`
1852
1732
  ${({ invalid }) => theme((o) => [
1853
1733
  o.typography(14),
1854
1734
  o.margin.top(8),
1855
- invalid ? o.font.assertive : o.font.text2
1735
+ invalid === true ? o.font.assertive : o.font.text2
1856
1736
  ])}
1857
1737
  `;
1858
1738
 
1739
+ // src/components/DropdownSelector/OptionItem.tsx
1740
+ var import_react18 = __toESM(require("react"));
1741
+ var import_styled_components16 = __toESM(require("styled-components"));
1742
+ var import_utils7 = require("@charcoal-ui/utils");
1743
+
1744
+ // src/components/DropdownSelector/utils/handleFocusByKeyBoard.tsx
1745
+ function handleFocusByKeyBoard(element) {
1746
+ const parent = element.parentElement;
1747
+ if (!parent)
1748
+ return;
1749
+ const rect = element.getBoundingClientRect();
1750
+ const parentRect = parent.getBoundingClientRect();
1751
+ if (rect.bottom > parentRect.bottom) {
1752
+ parent.scrollTo({
1753
+ top: parent.scrollTop + rect.bottom - parentRect.bottom
1754
+ });
1755
+ } else if (rect.top < parentRect.top) {
1756
+ parent.scrollTo({
1757
+ top: parent.scrollTop - (parentRect.top - rect.top)
1758
+ });
1759
+ }
1760
+ }
1761
+
1762
+ // src/components/DropdownSelector/utils/focusIfHTMLLIElement.tsx
1763
+ function focusIfHTMLLIElement(element) {
1764
+ if (element instanceof HTMLLIElement) {
1765
+ element.focus({ preventScroll: true });
1766
+ handleFocusByKeyBoard(element);
1767
+ }
1768
+ }
1769
+
1770
+ // src/components/DropdownSelector/OptionItem.tsx
1771
+ function OptionItem(props) {
1772
+ const { value, setValue } = (0, import_react18.useContext)(DropdownSelectorContext);
1773
+ const isSelected = props.value === value;
1774
+ const onSelect = () => {
1775
+ setValue(props.value);
1776
+ };
1777
+ return /* @__PURE__ */ import_react18.default.createElement(
1778
+ OptionRoot,
1779
+ {
1780
+ "data-key": props.value,
1781
+ onMouseMove: (e) => {
1782
+ e.currentTarget.focus({ preventScroll: true });
1783
+ },
1784
+ onKeyDown: (e) => {
1785
+ if (e.key === "Enter") {
1786
+ onSelect();
1787
+ } else if (e.key === "ArrowUp") {
1788
+ e.preventDefault();
1789
+ const prev = e.currentTarget.previousElementSibling;
1790
+ if (prev === null) {
1791
+ focusIfHTMLLIElement(e.currentTarget.parentElement?.lastChild);
1792
+ }
1793
+ focusIfHTMLLIElement(prev);
1794
+ } else if (e.key === "ArrowDown") {
1795
+ e.preventDefault();
1796
+ const next = e.currentTarget.nextElementSibling;
1797
+ if (next === null) {
1798
+ focusIfHTMLLIElement(e.currentTarget.parentElement?.firstChild);
1799
+ }
1800
+ focusIfHTMLLIElement(next);
1801
+ } else if (e.key === " ") {
1802
+ e.preventDefault();
1803
+ }
1804
+ },
1805
+ onClick: onSelect,
1806
+ tabIndex: -1
1807
+ },
1808
+ isSelected && /* @__PURE__ */ import_react18.default.createElement(OptionCheckIcon, { name: "16/Check" }),
1809
+ /* @__PURE__ */ import_react18.default.createElement(OptionText, { isSelected }, props.children)
1810
+ );
1811
+ }
1812
+ var OptionRoot = import_styled_components16.default.li`
1813
+ display: flex;
1814
+ align-items: center;
1815
+ gap: ${({ theme: theme4 }) => (0, import_utils7.px)(theme4.spacing[4])};
1816
+ height: 40px;
1817
+ cursor: pointer;
1818
+ outline: none;
1819
+
1820
+ ${theme((o) => [o.padding.horizontal(8)])}
1821
+
1822
+ :focus {
1823
+ ${theme((o) => [o.bg.surface3])}
1824
+ }
1825
+ `;
1826
+ var OptionCheckIcon = (0, import_styled_components16.default)(Icon_default)`
1827
+ ${theme((o) => [o.font.text2])}
1828
+ `;
1829
+ var OptionText = import_styled_components16.default.span`
1830
+ display: block;
1831
+ ${theme((o) => [o.typography(14), o.font.text2])}
1832
+ margin-left: ${({ isSelected }) => isSelected === true ? 0 : 20}px;
1833
+ `;
1834
+
1859
1835
  // src/components/SegmentedControl/index.tsx
1860
- var import_react22 = __toESM(require("react"));
1836
+ var import_react20 = __toESM(require("react"));
1861
1837
  var import_react_stately3 = require("react-stately");
1862
1838
  var import_radio = require("@react-aria/radio");
1863
- var import_styled_components20 = __toESM(require("styled-components"));
1864
- var import_utils9 = require("@charcoal-ui/utils");
1839
+ var import_styled_components17 = __toESM(require("styled-components"));
1840
+ var import_utils8 = require("@charcoal-ui/utils");
1865
1841
 
1866
1842
  // src/components/SegmentedControl/RadioGroupContext.tsx
1867
- var import_react21 = __toESM(require("react"));
1868
- var RadioContext = (0, import_react21.createContext)(null);
1843
+ var import_react19 = __toESM(require("react"));
1844
+ var RadioContext = (0, import_react19.createContext)(null);
1869
1845
  var RadioProvider = ({
1870
1846
  value,
1871
1847
  children
1872
1848
  }) => {
1873
- return /* @__PURE__ */ import_react21.default.createElement(RadioContext.Provider, { value }, children);
1849
+ return /* @__PURE__ */ import_react19.default.createElement(RadioContext.Provider, { value }, children);
1874
1850
  };
1875
1851
  var useRadioContext = () => {
1876
- const state = (0, import_react21.useContext)(RadioContext);
1852
+ const state = (0, import_react19.useContext)(RadioContext);
1877
1853
  if (state === null)
1878
1854
  throw new Error("`<RadioProvider>` is not likely mounted.");
1879
1855
  return state;
1880
1856
  };
1881
1857
 
1882
1858
  // src/components/SegmentedControl/index.tsx
1883
- var SegmentedControl = (0, import_react22.forwardRef)(
1859
+ var SegmentedControl = (0, import_react20.forwardRef)(
1884
1860
  function SegmentedControlInner(props, ref) {
1885
- const ariaRadioGroupProps = (0, import_react22.useMemo)(
1861
+ const ariaRadioGroupProps = (0, import_react20.useMemo)(
1886
1862
  () => ({
1887
1863
  ...props,
1888
1864
  isDisabled: props.disabled,
1889
1865
  isReadOnly: props.readonly,
1890
- isRequired: props.required
1866
+ isRequired: props.required,
1867
+ "aria-label": props.name
1891
1868
  }),
1892
1869
  [props]
1893
1870
  );
1894
1871
  const state = (0, import_react_stately3.useRadioGroupState)(ariaRadioGroupProps);
1895
1872
  const { radioGroupProps } = (0, import_radio.useRadioGroup)(ariaRadioGroupProps, state);
1896
- const segmentedControlItems = (0, import_react22.useMemo)(() => {
1873
+ const segmentedControlItems = (0, import_react20.useMemo)(() => {
1897
1874
  return props.data.map(
1898
1875
  (d) => typeof d === "string" ? { value: d, label: d } : d
1899
1876
  );
1900
1877
  }, [props.data]);
1901
- return /* @__PURE__ */ import_react22.default.createElement(SegmentedControlRoot, { ref, ...radioGroupProps }, /* @__PURE__ */ import_react22.default.createElement(RadioProvider, { value: state }, segmentedControlItems.map((item) => /* @__PURE__ */ import_react22.default.createElement(
1878
+ return /* @__PURE__ */ import_react20.default.createElement(SegmentedControlRoot, { ref, ...radioGroupProps }, /* @__PURE__ */ import_react20.default.createElement(RadioProvider, { value: state }, segmentedControlItems.map((item) => /* @__PURE__ */ import_react20.default.createElement(
1902
1879
  Segmented,
1903
1880
  {
1904
1881
  key: item.value,
@@ -1909,11 +1886,11 @@ var SegmentedControl = (0, import_react22.forwardRef)(
1909
1886
  ))));
1910
1887
  }
1911
1888
  );
1912
- var SegmentedControl_default = (0, import_react22.memo)(SegmentedControl);
1889
+ var SegmentedControl_default = (0, import_react20.memo)(SegmentedControl);
1913
1890
  var Segmented = ({ children, ...props }) => {
1914
1891
  const state = useRadioContext();
1915
- const ref = (0, import_react22.useRef)(null);
1916
- const ariaRadioProps = (0, import_react22.useMemo)(
1892
+ const ref = (0, import_react20.useRef)(null);
1893
+ const ariaRadioProps = (0, import_react20.useMemo)(
1917
1894
  () => ({ ...props, isDisabled: props.disabled }),
1918
1895
  [props]
1919
1896
  );
@@ -1922,30 +1899,30 @@ var Segmented = ({ children, ...props }) => {
1922
1899
  state,
1923
1900
  ref
1924
1901
  );
1925
- return /* @__PURE__ */ import_react22.default.createElement(
1902
+ return /* @__PURE__ */ import_react20.default.createElement(
1926
1903
  SegmentedRoot,
1927
1904
  {
1928
1905
  "aria-disabled": isDisabled || state.isReadOnly,
1929
1906
  checked: isSelected
1930
1907
  },
1931
- /* @__PURE__ */ import_react22.default.createElement(SegmentedInput, { ...inputProps, ref }),
1932
- /* @__PURE__ */ import_react22.default.createElement(RadioLabel2, null, /* @__PURE__ */ import_react22.default.createElement(SegmentedLabelInner, null, children))
1908
+ /* @__PURE__ */ import_react20.default.createElement(SegmentedInput, { ...inputProps, ref }),
1909
+ /* @__PURE__ */ import_react20.default.createElement(RadioLabel2, null, /* @__PURE__ */ import_react20.default.createElement(SegmentedLabelInner, null, children))
1933
1910
  );
1934
1911
  };
1935
- var SegmentedControlRoot = import_styled_components20.default.div`
1912
+ var SegmentedControlRoot = import_styled_components17.default.div`
1936
1913
  display: inline-flex;
1937
1914
  align-items: center;
1938
1915
 
1939
1916
  ${theme((o) => [o.bg.surface3, o.borderRadius(16)])}
1940
1917
  `;
1941
- var SegmentedRoot = import_styled_components20.default.label`
1918
+ var SegmentedRoot = import_styled_components17.default.label`
1942
1919
  position: relative;
1943
1920
  display: flex;
1944
1921
  align-items: center;
1945
1922
  cursor: pointer;
1946
1923
  height: 32px;
1947
1924
 
1948
- ${import_utils9.disabledSelector} {
1925
+ ${import_utils8.disabledSelector} {
1949
1926
  cursor: default;
1950
1927
  }
1951
1928
 
@@ -1957,7 +1934,7 @@ var SegmentedRoot = import_styled_components20.default.label`
1957
1934
  checked === true ? o.font.text5 : o.font.text2
1958
1935
  ])}
1959
1936
  `;
1960
- var SegmentedInput = import_styled_components20.default.input`
1937
+ var SegmentedInput = import_styled_components17.default.input`
1961
1938
  position: absolute;
1962
1939
 
1963
1940
  height: 0px;
@@ -1971,26 +1948,26 @@ var SegmentedInput = import_styled_components20.default.input`
1971
1948
  white-space: nowrap;
1972
1949
  opacity: 0;
1973
1950
  `;
1974
- var RadioLabel2 = import_styled_components20.default.div`
1951
+ var RadioLabel2 = import_styled_components17.default.div`
1975
1952
  background: transparent;
1976
1953
  display: flex;
1977
1954
  align-items: center;
1978
1955
  height: 22px;
1979
1956
  `;
1980
- var SegmentedLabelInner = import_styled_components20.default.div`
1957
+ var SegmentedLabelInner = import_styled_components17.default.div`
1981
1958
  ${theme((o) => [o.typography(14)])}
1982
1959
  `;
1983
1960
 
1984
1961
  // src/components/Checkbox/index.tsx
1985
- var import_react23 = __toESM(require("react"));
1986
- var import_styled_components21 = __toESM(require("styled-components"));
1962
+ var import_react21 = __toESM(require("react"));
1963
+ var import_styled_components18 = __toESM(require("styled-components"));
1987
1964
  var import_checkbox = require("@react-aria/checkbox");
1988
- var import_utils10 = require("@react-aria/utils");
1965
+ var import_utils9 = require("@react-aria/utils");
1989
1966
  var import_react_stately4 = require("react-stately");
1990
- var import_utils11 = require("@charcoal-ui/utils");
1991
- var Checkbox = (0, import_react23.forwardRef)(
1967
+ var import_utils10 = require("@charcoal-ui/utils");
1968
+ var Checkbox = (0, import_react21.forwardRef)(
1992
1969
  function CheckboxInner(props, ref) {
1993
- const ariaCheckboxProps = (0, import_react23.useMemo)(
1970
+ const ariaCheckboxProps = (0, import_react21.useMemo)(
1994
1971
  () => ({
1995
1972
  ...props,
1996
1973
  isSelected: props.checked,
@@ -2001,32 +1978,32 @@ var Checkbox = (0, import_react23.forwardRef)(
2001
1978
  [props]
2002
1979
  );
2003
1980
  const state = (0, import_react_stately4.useToggleState)(ariaCheckboxProps);
2004
- const objectRef = (0, import_utils10.useObjectRef)(ref);
1981
+ const objectRef = (0, import_utils9.useObjectRef)(ref);
2005
1982
  const { inputProps } = (0, import_checkbox.useCheckbox)(ariaCheckboxProps, state, objectRef);
2006
1983
  const isDisabled = (props.disabled ?? false) || (props.readonly ?? false);
2007
- return /* @__PURE__ */ import_react23.default.createElement(InputRoot, { "aria-disabled": isDisabled }, /* @__PURE__ */ import_react23.default.createElement(CheckboxRoot, null, /* @__PURE__ */ import_react23.default.createElement(CheckboxInput, { type: "checkbox", ...inputProps }), /* @__PURE__ */ import_react23.default.createElement(CheckboxInputOverlay, { "aria-hidden": true, checked: inputProps.checked }, /* @__PURE__ */ import_react23.default.createElement(Icon_default, { name: "24/Check", unsafeNonGuidelineScale: 2 / 3 }))), "children" in props && /* @__PURE__ */ import_react23.default.createElement(InputLabel, null, props.children));
1984
+ return /* @__PURE__ */ import_react21.default.createElement(InputRoot, { "aria-disabled": isDisabled }, /* @__PURE__ */ import_react21.default.createElement(CheckboxRoot, null, /* @__PURE__ */ import_react21.default.createElement(CheckboxInput, { type: "checkbox", ...inputProps }), /* @__PURE__ */ import_react21.default.createElement(CheckboxInputOverlay, { "aria-hidden": true, checked: inputProps.checked }, /* @__PURE__ */ import_react21.default.createElement(Icon_default, { name: "24/Check", unsafeNonGuidelineScale: 2 / 3 }))), "children" in props && /* @__PURE__ */ import_react21.default.createElement(InputLabel, null, props.children));
2008
1985
  }
2009
1986
  );
2010
- var Checkbox_default = (0, import_react23.memo)(Checkbox);
2011
- var hiddenCss = import_styled_components21.css`
1987
+ var Checkbox_default = (0, import_react21.memo)(Checkbox);
1988
+ var hiddenCss = import_styled_components18.css`
2012
1989
  visibility: hidden;
2013
1990
  `;
2014
- var InputRoot = import_styled_components21.default.label`
1991
+ var InputRoot = import_styled_components18.default.label`
2015
1992
  position: relative;
2016
1993
  display: flex;
2017
1994
 
2018
1995
  cursor: pointer;
2019
- ${import_utils11.disabledSelector} {
1996
+ ${import_utils10.disabledSelector} {
2020
1997
  cursor: default;
2021
1998
  }
2022
1999
 
2023
- gap: ${({ theme: theme4 }) => (0, import_utils11.px)(theme4.spacing[4])};
2000
+ gap: ${({ theme: theme4 }) => (0, import_utils10.px)(theme4.spacing[4])};
2024
2001
  ${theme((o) => [o.disabled])}
2025
2002
  `;
2026
- var CheckboxRoot = import_styled_components21.default.div`
2003
+ var CheckboxRoot = import_styled_components18.default.div`
2027
2004
  position: relative;
2028
2005
  `;
2029
- var CheckboxInput = import_styled_components21.default.input`
2006
+ var CheckboxInput = import_styled_components18.default.input`
2030
2007
  &[type='checkbox'] {
2031
2008
  appearance: none;
2032
2009
  display: block;
@@ -2049,7 +2026,7 @@ var CheckboxInput = import_styled_components21.default.input`
2049
2026
  transition: all 0.2s !important;
2050
2027
  }
2051
2028
  `;
2052
- var CheckboxInputOverlay = import_styled_components21.default.div`
2029
+ var CheckboxInputOverlay = import_styled_components18.default.div`
2053
2030
  position: absolute;
2054
2031
  top: -2px;
2055
2032
  left: -2px;
@@ -2062,7 +2039,7 @@ var CheckboxInputOverlay = import_styled_components21.default.div`
2062
2039
 
2063
2040
  ${({ checked }) => checked !== true && hiddenCss};
2064
2041
  `;
2065
- var InputLabel = import_styled_components21.default.div`
2042
+ var InputLabel = import_styled_components18.default.div`
2066
2043
  ${theme((o) => [o.font.text2])}
2067
2044
 
2068
2045
  font-size: 14px;
@@ -2071,16 +2048,16 @@ var InputLabel = import_styled_components21.default.div`
2071
2048
  `;
2072
2049
 
2073
2050
  // src/components/TagItem/index.tsx
2074
- var import_react24 = __toESM(require("react"));
2075
- var import_utils12 = require("@react-aria/utils");
2076
- var import_styled_components22 = __toESM(require("styled-components"));
2077
- var import_utils13 = require("@charcoal-ui/utils");
2078
- var import_button2 = require("@react-aria/button");
2051
+ var import_react22 = __toESM(require("react"));
2052
+ var import_utils11 = require("@react-aria/utils");
2053
+ var import_styled_components19 = __toESM(require("styled-components"));
2054
+ var import_utils12 = require("@charcoal-ui/utils");
2055
+ var import_button = require("@react-aria/button");
2079
2056
  var sizeMap = {
2080
2057
  S: 32,
2081
2058
  M: 40
2082
2059
  };
2083
- var TagItem = (0, import_react24.forwardRef)(
2060
+ var TagItem = (0, import_react22.forwardRef)(
2084
2061
  function TagItemInner({
2085
2062
  label,
2086
2063
  translatedLabel,
@@ -2092,8 +2069,8 @@ var TagItem = (0, import_react24.forwardRef)(
2092
2069
  className,
2093
2070
  ...props
2094
2071
  }, _ref) {
2095
- const ref = (0, import_utils12.useObjectRef)(_ref);
2096
- const ariaButtonProps = (0, import_react24.useMemo)(
2072
+ const ref = (0, import_utils11.useObjectRef)(_ref);
2073
+ const ariaButtonProps = (0, import_react22.useMemo)(
2097
2074
  () => ({
2098
2075
  elementType: "a",
2099
2076
  isDisabled: disabled,
@@ -2101,9 +2078,9 @@ var TagItem = (0, import_react24.forwardRef)(
2101
2078
  }),
2102
2079
  [disabled, props]
2103
2080
  );
2104
- const { buttonProps } = (0, import_button2.useButton)(ariaButtonProps, ref);
2081
+ const { buttonProps } = (0, import_button.useButton)(ariaButtonProps, ref);
2105
2082
  const hasTranslatedLabel = translatedLabel !== void 0 && translatedLabel.length > 0;
2106
- return /* @__PURE__ */ import_react24.default.createElement(
2083
+ return /* @__PURE__ */ import_react22.default.createElement(
2107
2084
  TagItemRoot,
2108
2085
  {
2109
2086
  ref,
@@ -2112,13 +2089,13 @@ var TagItem = (0, import_react24.forwardRef)(
2112
2089
  ...buttonProps,
2113
2090
  className
2114
2091
  },
2115
- /* @__PURE__ */ import_react24.default.createElement(Background, { bgColor, bgImage, status }),
2116
- /* @__PURE__ */ import_react24.default.createElement(Inner, null, /* @__PURE__ */ import_react24.default.createElement(LabelWrapper, { isTranslate: hasTranslatedLabel }, hasTranslatedLabel && /* @__PURE__ */ import_react24.default.createElement(TranslatedLabel, null, /* @__PURE__ */ import_react24.default.createElement(Label3, null, translatedLabel)), /* @__PURE__ */ import_react24.default.createElement(Label3, null, label)), status === "active" && /* @__PURE__ */ import_react24.default.createElement(Icon_default, { name: "16/Remove" }))
2092
+ /* @__PURE__ */ import_react22.default.createElement(Background, { bgColor, bgImage, status }),
2093
+ /* @__PURE__ */ import_react22.default.createElement(Inner, null, /* @__PURE__ */ import_react22.default.createElement(LabelWrapper, { isTranslate: hasTranslatedLabel }, hasTranslatedLabel && /* @__PURE__ */ import_react22.default.createElement(TranslatedLabel, null, /* @__PURE__ */ import_react22.default.createElement(Label3, null, translatedLabel)), /* @__PURE__ */ import_react22.default.createElement(Label3, null, label)), status === "active" && /* @__PURE__ */ import_react22.default.createElement(Icon_default, { name: "16/Remove" }))
2117
2094
  );
2118
2095
  }
2119
2096
  );
2120
- var TagItem_default = (0, import_react24.memo)(TagItem);
2121
- var TagItemRoot = import_styled_components22.default.a`
2097
+ var TagItem_default = (0, import_react22.memo)(TagItem);
2098
+ var TagItemRoot = import_styled_components19.default.a`
2122
2099
  isolation: isolate;
2123
2100
  position: relative;
2124
2101
  height: ${({ size }) => sizeMap[size]}px;
@@ -2138,12 +2115,12 @@ var TagItemRoot = import_styled_components22.default.a`
2138
2115
  ...status === "active" ? [o.padding.left(16), o.padding.right(8)] : []
2139
2116
  ])}
2140
2117
 
2141
- ${import_utils13.disabledSelector} {
2118
+ ${import_utils12.disabledSelector} {
2142
2119
  ${theme((o) => [o.disabled])}
2143
2120
  cursor: default;
2144
2121
  }
2145
2122
  `;
2146
- var Background = import_styled_components22.default.div`
2123
+ var Background = import_styled_components19.default.div`
2147
2124
  position: absolute;
2148
2125
  z-index: 1;
2149
2126
  top: 0;
@@ -2154,7 +2131,7 @@ var Background = import_styled_components22.default.div`
2154
2131
  background-color: ${({ bgColor }) => bgColor};
2155
2132
  ${({ status }) => status === "inactive" && theme((o) => o.bg.surface3)}
2156
2133
 
2157
- ${({ bgImage }) => bgImage !== void 0 && import_styled_components22.css`
2134
+ ${({ bgImage }) => bgImage !== void 0 && import_styled_components19.css`
2158
2135
  ${theme((o) => [o.bg.surface4])}
2159
2136
  &::before {
2160
2137
  content: '';
@@ -2170,25 +2147,25 @@ var Background = import_styled_components22.default.div`
2170
2147
  }
2171
2148
  `}
2172
2149
  `;
2173
- var Inner = import_styled_components22.default.div`
2150
+ var Inner = import_styled_components19.default.div`
2174
2151
  display: inline-flex;
2175
- gap: ${({ theme: theme4 }) => (0, import_utils13.px)(theme4.spacing[8])};
2152
+ gap: ${({ theme: theme4 }) => (0, import_utils12.px)(theme4.spacing[8])};
2176
2153
  align-items: center;
2177
2154
  z-index: 2;
2178
2155
  `;
2179
- var labelCSS = import_styled_components22.css`
2156
+ var labelCSS = import_styled_components19.css`
2180
2157
  ${theme((o) => [o.typography(14).bold])}
2181
2158
  `;
2182
- var translateLabelCSS = import_styled_components22.css`
2159
+ var translateLabelCSS = import_styled_components19.css`
2183
2160
  display: flex;
2184
2161
  align-items: center;
2185
2162
  flex-direction: column;
2186
2163
  font-size: 10px;
2187
2164
  `;
2188
- var LabelWrapper = import_styled_components22.default.div`
2165
+ var LabelWrapper = import_styled_components19.default.div`
2189
2166
  ${({ isTranslate }) => isTranslate ?? false ? translateLabelCSS : labelCSS}
2190
2167
  `;
2191
- var Label3 = import_styled_components22.default.span`
2168
+ var Label3 = import_styled_components19.default.span`
2192
2169
  max-width: 152px;
2193
2170
  overflow: hidden;
2194
2171
  text-overflow: ellipsis;
@@ -2197,7 +2174,7 @@ var Label3 = import_styled_components22.default.span`
2197
2174
  color: inherit;
2198
2175
  line-height: inherit;
2199
2176
  `;
2200
- var TranslatedLabel = import_styled_components22.default.div`
2177
+ var TranslatedLabel = import_styled_components19.default.div`
2201
2178
  ${theme((o) => [o.typography(12).bold])}
2202
2179
  `;
2203
2180
  // Annotate the CommonJS export names for ESM import in node:
@@ -2208,7 +2185,6 @@ var TranslatedLabel = import_styled_components22.default.div`
2208
2185
  Clickable,
2209
2186
  ComponentAbstraction,
2210
2187
  DropdownSelector,
2211
- DropdownSelectorItem,
2212
2188
  Icon,
2213
2189
  IconButton,
2214
2190
  LoadingSpinner,
@@ -2220,6 +2196,7 @@ var TranslatedLabel = import_styled_components22.default.div`
2220
2196
  ModalHeader,
2221
2197
  MultiSelect,
2222
2198
  MultiSelectGroup,
2199
+ OptionItem,
2223
2200
  OverlayProvider,
2224
2201
  Radio,
2225
2202
  RadioGroup,