@wistia/ui 0.4.5 → 0.4.6-beta.11d3718d.4d96ead

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  /*
3
- * @license @wistia/ui v0.4.5
3
+ * @license @wistia/ui v0.4.6-beta.11d3718d.4d96ead
4
4
  *
5
5
  * Copyright (c) 2024-2025, Wistia, Inc. and its affiliates.
6
6
  *
@@ -71,10 +71,13 @@ __export(index_exports, {
71
71
  MenuLabel: () => MenuLabel,
72
72
  MenuRadioGroup: () => MenuRadioGroup,
73
73
  Modal: () => Modal,
74
+ Option: () => Option,
75
+ OptionGroup: () => OptionGroup,
74
76
  Radio: () => Radio,
75
77
  RadioGroup: () => RadioGroup,
76
78
  RadioMenuItem: () => RadioMenuItem,
77
79
  ScreenReaderOnly: () => ScreenReaderOnly,
80
+ Select: () => Select,
78
81
  Stack: () => Stack,
79
82
  SubMenu: () => SubMenu,
80
83
  Tag: () => Tag,
@@ -1640,6 +1643,14 @@ var import_react6 = require("react");
1640
1643
 
1641
1644
  // src/private/hooks/useEvent/useEvent.ts
1642
1645
  var import_react5 = require("react");
1646
+
1647
+ // src/private/helpers/isObjectRef/isObjectRef.ts
1648
+ var import_type_guards4 = require("@wistia/type-guards");
1649
+ var isObjectRef = (value) => {
1650
+ return (0, import_type_guards4.isNotNil)(value) && (0, import_type_guards4.isRecord)(value) && "current" in value;
1651
+ };
1652
+
1653
+ // src/private/hooks/useEvent/useEvent.ts
1643
1654
  var isEventTargetSupported = (eventTarget) => (
1644
1655
  // @ts-expect-error the compiler thinks that addEventListener may not exist on eventTarget, but we still need to check it.
1645
1656
  // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
@@ -1655,7 +1666,8 @@ var useEvent = (eventName, eventHandler, eventTarget = window, eventOptions = {}
1655
1666
  savedEventOptions.current = eventOptions;
1656
1667
  }, [eventOptions]);
1657
1668
  (0, import_react5.useEffect)(() => {
1658
- if (!eventName || !isEventTargetSupported(eventTarget)) {
1669
+ const target = isObjectRef(eventTarget) ? eventTarget.current : eventTarget;
1670
+ if (!eventName || !isEventTargetSupported(target)) {
1659
1671
  return;
1660
1672
  }
1661
1673
  const eventListener = (event) => {
@@ -1665,48 +1677,45 @@ var useEvent = (eventName, eventHandler, eventTarget = window, eventOptions = {}
1665
1677
  return () => {
1666
1678
  };
1667
1679
  };
1668
- eventTarget.addEventListener(eventName, eventListener, savedEventOptions.current);
1680
+ target.addEventListener(eventName, eventListener, savedEventOptions.current);
1669
1681
  return () => {
1670
- eventTarget.removeEventListener(eventName, eventListener, savedEventOptions.current);
1682
+ target.removeEventListener(eventName, eventListener, savedEventOptions.current);
1671
1683
  };
1672
1684
  }, [eventName, eventTarget, savedEventOptions]);
1673
1685
  };
1674
1686
 
1675
1687
  // src/hooks/useKey/useKey.ts
1676
- var createKeyPredicate = (keyFilter) => {
1677
- if (typeof keyFilter === "function") {
1678
- return keyFilter;
1679
- }
1680
- if (typeof keyFilter === "string") {
1681
- return (event) => event.key === keyFilter;
1682
- }
1683
- if (keyFilter !== null && keyFilter !== void 0 && !!keyFilter) {
1684
- return () => true;
1685
- }
1686
- return () => false;
1687
- };
1688
- var useKey = (key, eventHandler, options = {}, dependencies = [key]) => {
1689
- const { eventName = "keydown", eventTarget, eventOptions } = options;
1690
- const memoizedEventHandler = (0, import_react6.useMemo)(() => {
1691
- const predicate = createKeyPredicate(key);
1692
- return (handlerEvent) => {
1688
+ var useKey = (key, eventHandler, { eventName = "keydown", eventTarget, eventOptions } = {}) => {
1689
+ const memoizedEventHandler = (0, import_react6.useCallback)(
1690
+ (handlerEvent) => {
1693
1691
  if (["INPUT", "TEXTAREA", "SELECT"].includes(document.activeElement?.nodeName ?? "") || document.activeElement?.isContentEditable) {
1694
1692
  return;
1695
1693
  }
1696
- if (predicate(handlerEvent)) {
1697
- return eventHandler(handlerEvent);
1694
+ let matchesKey = false;
1695
+ if (typeof key === "function") {
1696
+ matchesKey = key(handlerEvent);
1697
+ } else if (typeof key === "string") {
1698
+ matchesKey = handlerEvent.key === key;
1699
+ } else if (key) {
1700
+ matchesKey = true;
1701
+ } else {
1702
+ matchesKey = false;
1698
1703
  }
1699
- };
1700
- }, dependencies);
1704
+ if (matchesKey) {
1705
+ eventHandler(handlerEvent);
1706
+ }
1707
+ },
1708
+ [key, eventHandler]
1709
+ );
1701
1710
  useEvent(eventName, memoizedEventHandler, eventTarget, eventOptions);
1702
1711
  };
1703
1712
 
1704
1713
  // src/hooks/useAriaLive/useAriaLive.tsx
1705
1714
  var import_react7 = require("react");
1706
- var import_type_guards4 = require("@wistia/type-guards");
1715
+ var import_type_guards5 = require("@wistia/type-guards");
1707
1716
  var useAriaLive = () => {
1708
1717
  const context = (0, import_react7.useContext)(AriaLiveContext);
1709
- if ((0, import_type_guards4.isNil)(context)) {
1718
+ if ((0, import_type_guards5.isNil)(context)) {
1710
1719
  throw new Error("useAriaLive must be used within an AriaLiveProvider");
1711
1720
  }
1712
1721
  return context;
@@ -1719,10 +1728,10 @@ var import_sonner2 = require("sonner");
1719
1728
  // src/private/components/Toast/Toast.tsx
1720
1729
  var import_react8 = require("react");
1721
1730
  var import_styled_components13 = __toESM(require("styled-components"));
1722
- var import_type_guards6 = require("@wistia/type-guards");
1731
+ var import_type_guards7 = require("@wistia/type-guards");
1723
1732
 
1724
1733
  // src/components/Ellipsis/Ellipsis.tsx
1725
- var import_type_guards5 = require("@wistia/type-guards");
1734
+ var import_type_guards6 = require("@wistia/type-guards");
1726
1735
  var import_styled_components11 = __toESM(require("styled-components"));
1727
1736
  var import_jsx_runtime4 = require("react/jsx-runtime");
1728
1737
  var ellipsisStyle = import_styled_components11.css`
@@ -1754,7 +1763,7 @@ var ellipsisFlexParentStyle = import_styled_components11.css`
1754
1763
  var EllipsisComponent = import_styled_components11.default.div`
1755
1764
  ${ellipsisStyle};
1756
1765
  ${({ $lines }) => {
1757
- if ((0, import_type_guards5.isNotNil)($lines)) {
1766
+ if ((0, import_type_guards6.isNotNil)($lines)) {
1758
1767
  return import_styled_components11.css`
1759
1768
  -webkit-box-orient: vertical;
1760
1769
  -webkit-line-clamp: ${$lines};
@@ -1938,7 +1947,7 @@ var StyledToast = import_styled_components13.default.div`
1938
1947
  }
1939
1948
  `;
1940
1949
  var Action = ({ actionButton }) => {
1941
- if ((0, import_type_guards6.isNotNil)(actionButton) && (0, import_react8.isValidElement)(actionButton)) {
1950
+ if ((0, import_type_guards7.isNotNil)(actionButton) && (0, import_react8.isValidElement)(actionButton)) {
1942
1951
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ActionWrapper, { children: (0, import_react8.cloneElement)(actionButton, {
1943
1952
  variant: "soft",
1944
1953
  // force Button variant
@@ -1962,7 +1971,7 @@ var Toast = ({
1962
1971
  $colorScheme: colorScheme,
1963
1972
  children: [
1964
1973
  /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(MessageWrapper, { children: [
1965
- (0, import_type_guards6.isNotNil)(icon) ? icon : null,
1974
+ (0, import_type_guards7.isNotNil)(icon) ? icon : null,
1966
1975
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Message, { lines: 3, children: message })
1967
1976
  ] }),
1968
1977
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Action, { actionButton: action })
@@ -2003,7 +2012,7 @@ var import_styled_components19 = __toESM(require("styled-components"));
2003
2012
  // src/components/Button/Button.tsx
2004
2013
  var import_react12 = require("react");
2005
2014
  var import_styled_components18 = __toESM(require("styled-components"));
2006
- var import_type_guards10 = require("@wistia/type-guards");
2015
+ var import_type_guards11 = require("@wistia/type-guards");
2007
2016
 
2008
2017
  // src/css/buttonResetCss.tsx
2009
2018
  var import_styled_components14 = require("styled-components");
@@ -2206,7 +2215,7 @@ var buttonSizeStyles = {
2206
2215
  };
2207
2216
 
2208
2217
  // src/components/Icon/Icon.tsx
2209
- var import_type_guards8 = require("@wistia/type-guards");
2218
+ var import_type_guards9 = require("@wistia/type-guards");
2210
2219
  var import_styled_components16 = __toESM(require("styled-components"));
2211
2220
 
2212
2221
  // src/components/Icon/icons/AbTestIcon.tsx
@@ -5367,7 +5376,7 @@ var iconMap = {
5367
5376
  };
5368
5377
 
5369
5378
  // src/private/hooks/useResponsiveProp/useResponsiveProp.ts
5370
- var import_type_guards7 = require("@wistia/type-guards");
5379
+ var import_type_guards8 = require("@wistia/type-guards");
5371
5380
  var import_react10 = require("react");
5372
5381
  var isResponsiveObject = (values) => {
5373
5382
  return typeof values === "object" && values !== null && !Array.isArray(values) && "base" in values;
@@ -5375,9 +5384,9 @@ var isResponsiveObject = (values) => {
5375
5384
  var useResponsiveProp = (values) => {
5376
5385
  const activeMediaQueries = useActiveMq();
5377
5386
  return (0, import_react10.useMemo)(() => {
5378
- if ((0, import_type_guards7.isRecord)(values) && isResponsiveObject(values)) {
5387
+ if ((0, import_type_guards8.isRecord)(values) && isResponsiveObject(values)) {
5379
5388
  const mq2 = activeMediaQueries.find((key) => key in values);
5380
- return (0, import_type_guards7.isNotUndefined)(mq2) && (0, import_type_guards7.isNotUndefined)(values[mq2]) ? values[mq2] : values.base;
5389
+ return (0, import_type_guards8.isNotUndefined)(mq2) && (0, import_type_guards8.isNotUndefined)(values[mq2]) ? values[mq2] : values.base;
5381
5390
  }
5382
5391
  return values;
5383
5392
  }, [activeMediaQueries, values]);
@@ -5404,13 +5413,13 @@ var Icon = ({
5404
5413
  ...otherProps
5405
5414
  }) => {
5406
5415
  const responsiveSize = useResponsiveProp(size);
5407
- if ((0, import_type_guards8.isNil)(type)) {
5416
+ if ((0, import_type_guards9.isNil)(type)) {
5408
5417
  throw new Error("An Icon component requires a `type` prop to be provided");
5409
5418
  }
5410
- if ((0, import_type_guards8.isNil)(iconMap[type])) {
5419
+ if ((0, import_type_guards9.isNil)(iconMap[type])) {
5411
5420
  throw new Error(`Type "${type}" does not exist, please update type prop in Icon component.`);
5412
5421
  }
5413
- if ((0, import_type_guards8.isNil)(iconSizeMap[responsiveSize])) {
5422
+ if ((0, import_type_guards9.isNil)(iconSizeMap[responsiveSize])) {
5414
5423
  throw new Error(
5415
5424
  `Size "${responsiveSize}" does not exist, please update size prop in Icon component.`
5416
5425
  );
@@ -5442,12 +5451,12 @@ Icon.displayName = "Icon";
5442
5451
 
5443
5452
  // src/components/Link/Link.tsx
5444
5453
  var import_react11 = require("react");
5445
- var import_type_guards9 = require("@wistia/type-guards");
5454
+ var import_type_guards10 = require("@wistia/type-guards");
5446
5455
  var import_styled_components17 = __toESM(require("styled-components"));
5447
5456
  var import_react_router_dom = require("react-router-dom");
5448
5457
  var import_jsx_runtime161 = require("react/jsx-runtime");
5449
5458
  var generateHref = (href, type, disabled) => {
5450
- if (disabled || (0, import_type_guards9.isNil)(href)) {
5459
+ if (disabled || (0, import_type_guards10.isNil)(href)) {
5451
5460
  return void 0;
5452
5461
  }
5453
5462
  let to = href;
@@ -5459,10 +5468,10 @@ var generateHref = (href, type, disabled) => {
5459
5468
  }
5460
5469
  return to;
5461
5470
  };
5462
- var isButton = (props) => (0, import_type_guards9.isUndefined)(props.href);
5463
- var isLink = (props) => (0, import_type_guards9.isNotUndefined)(props.href);
5471
+ var isButton = (props) => (0, import_type_guards10.isUndefined)(props.href);
5472
+ var isLink = (props) => (0, import_type_guards10.isNotUndefined)(props.href);
5464
5473
  var StyledLink = import_styled_components17.default.a`
5465
- ${({ href }) => (0, import_type_guards9.isNil)(href) && buttonResetCss};
5474
+ ${({ href }) => (0, import_type_guards10.isNil)(href) && buttonResetCss};
5466
5475
  ${({ $colorScheme }) => getColorScheme($colorScheme)}
5467
5476
  cursor: pointer;
5468
5477
  font-family: var(--wui-typography-family-default);
@@ -5493,7 +5502,7 @@ var Link = (0, import_react11.forwardRef)(
5493
5502
  } finally {
5494
5503
  if (routingCallback !== null) {
5495
5504
  routingCallback();
5496
- } else if ((0, import_type_guards9.isNotNil)(to)) {
5505
+ } else if ((0, import_type_guards10.isNotNil)(to)) {
5497
5506
  window.location.assign(to);
5498
5507
  } else {
5499
5508
  }
@@ -5552,7 +5561,7 @@ Link.displayName = "Link";
5552
5561
 
5553
5562
  // src/components/Button/Button.tsx
5554
5563
  var import_jsx_runtime162 = require("react/jsx-runtime");
5555
- var isLink2 = (props) => (0, import_type_guards10.isNotUndefined)(props.href);
5564
+ var isLink2 = (props) => (0, import_type_guards11.isNotUndefined)(props.href);
5556
5565
  var StyledButton = import_styled_components18.default.button`
5557
5566
  ${buttonResetCss}
5558
5567
  ${({ $colorScheme }) => getColorScheme($colorScheme)}
@@ -5593,8 +5602,8 @@ var ButtonContent = ({
5593
5602
  /* @__PURE__ */ (0, import_jsx_runtime162.jsxs)(
5594
5603
  StyledButtonContent,
5595
5604
  {
5596
- $hasLeftIcon: (0, import_type_guards10.isNotNil)(leftIcon),
5597
- $hasRightIcon: (0, import_type_guards10.isNotNil)(rightIcon),
5605
+ $hasLeftIcon: (0, import_type_guards11.isNotNil)(leftIcon),
5606
+ $hasRightIcon: (0, import_type_guards11.isNotNil)(rightIcon),
5598
5607
  $isLoading: isLoading,
5599
5608
  children: [
5600
5609
  leftIcon ?? null,
@@ -5662,7 +5671,7 @@ var Button = (0, import_react12.forwardRef)(
5662
5671
  event.preventDefault();
5663
5672
  return;
5664
5673
  }
5665
- if ((0, import_type_guards10.isNotNil)(onClick)) {
5674
+ if ((0, import_type_guards11.isNotNil)(onClick)) {
5666
5675
  onClick(event);
5667
5676
  }
5668
5677
  };
@@ -5823,7 +5832,7 @@ ActionButton.displayName = "ActionButton";
5823
5832
 
5824
5833
  // src/components/Avatar/Avatar.tsx
5825
5834
  var import_react14 = require("react");
5826
- var import_type_guards12 = require("@wistia/type-guards");
5835
+ var import_type_guards13 = require("@wistia/type-guards");
5827
5836
  var import_styled_components21 = __toESM(require("styled-components"));
5828
5837
 
5829
5838
  // src/components/ColorSchemeWrapper/ColorSchemeWrapper.tsx
@@ -5866,13 +5875,13 @@ var ColorSchemeWrapper = ({
5866
5875
  ColorSchemeWrapper.displayName = "ColorSchemeWrapper";
5867
5876
 
5868
5877
  // src/components/Avatar/formatNameForDisplay.tsx
5869
- var import_type_guards11 = require("@wistia/type-guards");
5878
+ var import_type_guards12 = require("@wistia/type-guards");
5870
5879
  var containsEmojiCharacter = (char) => {
5871
5880
  const emojiRegex = /<a?:.+?:\d{18}>|\p{Extended_Pictographic}/gu;
5872
5881
  return emojiRegex.test(char);
5873
5882
  };
5874
5883
  var formatNameForDisplay = (name) => {
5875
- if ((0, import_type_guards11.isNil)(name) || !(0, import_type_guards11.isString)(name) || (0, import_type_guards11.isEmptyString)(name) || containsEmojiCharacter(name)) {
5884
+ if ((0, import_type_guards12.isNil)(name) || !(0, import_type_guards12.isString)(name) || (0, import_type_guards12.isEmptyString)(name) || containsEmojiCharacter(name)) {
5876
5885
  return "U";
5877
5886
  }
5878
5887
  const firstChar = name.trim().substring(0, 1);
@@ -5934,7 +5943,7 @@ var AvatarWrapper = import_styled_components21.default.div`
5934
5943
  max-height: ${({ $maxHeight }) => $maxHeight}px;
5935
5944
  `;
5936
5945
  var chooseColorScheme = (name) => {
5937
- if ((0, import_type_guards12.isNil)(name) || name === "Anonymous") {
5946
+ if ((0, import_type_guards13.isNil)(name) || name === "Anonymous") {
5938
5947
  return "default";
5939
5948
  }
5940
5949
  const filteredColors = colorSchemeOptions.filter(
@@ -5954,6 +5963,9 @@ var Avatar = ({
5954
5963
  ...otherProps
5955
5964
  }) => {
5956
5965
  const [imageLoadState, setImageLoadState] = (0, import_react14.useState)(null);
5966
+ (0, import_react14.useEffect)(() => {
5967
+ setImageLoadState(null);
5968
+ }, [imageUrl]);
5957
5969
  const handleImageLoad = () => {
5958
5970
  setImageLoadState("loaded");
5959
5971
  onImageLoad?.("image");
@@ -5964,7 +5976,7 @@ var Avatar = ({
5964
5976
  };
5965
5977
  const avatarSize = heightAndWidth ?? avatarSizeMap[size];
5966
5978
  const avatarColor = (0, import_react14.useMemo)(() => chooseColorScheme(name), [name]);
5967
- const showInitials = (0, import_type_guards12.isNil)(imageUrl) || imageLoadState === "error";
5979
+ const showInitials = (0, import_type_guards13.isNil)(imageUrl) || imageLoadState === "error";
5968
5980
  return /* @__PURE__ */ (0, import_jsx_runtime165.jsx)(
5969
5981
  AvatarWrapper,
5970
5982
  {
@@ -5995,7 +6007,7 @@ Avatar.displayName = "Avatar";
5995
6007
  // src/components/Badge/Badge.tsx
5996
6008
  var import_react15 = require("react");
5997
6009
  var import_styled_components22 = __toESM(require("styled-components"));
5998
- var import_type_guards13 = require("@wistia/type-guards");
6010
+ var import_type_guards14 = require("@wistia/type-guards");
5999
6011
  var import_jsx_runtime166 = require("react/jsx-runtime");
6000
6012
  var StyledBadge = import_styled_components22.default.div`
6001
6013
  ${({ $colorScheme }) => getColorScheme($colorScheme)};
@@ -6019,7 +6031,7 @@ var StyledBadge = import_styled_components22.default.div`
6019
6031
  `;
6020
6032
  var Badge = (0, import_react15.forwardRef)(
6021
6033
  ({ colorScheme = "inherit", label, icon, ...otherProps }, ref) => {
6022
- const hasIcon = (0, import_type_guards13.isNotNil)(icon);
6034
+ const hasIcon = (0, import_type_guards14.isNotNil)(icon);
6023
6035
  return /* @__PURE__ */ (0, import_jsx_runtime166.jsxs)(
6024
6036
  StyledBadge,
6025
6037
  {
@@ -6040,12 +6052,12 @@ Badge.displayName = "Badge";
6040
6052
  // src/components/Box/Box.tsx
6041
6053
  var import_react16 = require("react");
6042
6054
  var import_styled_components23 = __toESM(require("styled-components"));
6043
- var import_type_guards14 = require("@wistia/type-guards");
6055
+ var import_type_guards15 = require("@wistia/type-guards");
6044
6056
  var import_jsx_runtime167 = require("react/jsx-runtime");
6045
6057
  var isDev = process.env["NODE_ENV"] === "development" || process.env["NODE_ENV"] === "test";
6046
6058
  var getGapStyle = (gap) => {
6047
- if ((0, import_type_guards14.isNotNil)(gap)) {
6048
- if ((0, import_type_guards14.isRecord)(gap)) {
6059
+ if ((0, import_type_guards15.isNotNil)(gap)) {
6060
+ if ((0, import_type_guards15.isRecord)(gap)) {
6049
6061
  return Object.entries(gap).map(([key, value]) => {
6050
6062
  return `${key}-gap: var(--wui-${value})};`;
6051
6063
  }).join("");
@@ -6088,25 +6100,25 @@ var BoxComponent = import_styled_components23.default.div`
6088
6100
  align-content: ${({ $alignContent }) => $alignContent};
6089
6101
  align-items: ${({ $alignItems }) => $alignItems};
6090
6102
  align-self: ${({ $alignSelf }) => $alignSelf ?? null};
6091
- display: ${({ $inline }) => (0, import_type_guards14.isNotNil)($inline) && $inline ? "inline-flex" : "flex"};
6092
- flex-basis: ${({ $basis }) => (0, import_type_guards14.isNotNil)($basis) ? $basis : null};
6103
+ display: ${({ $inline }) => (0, import_type_guards15.isNotNil)($inline) && $inline ? "inline-flex" : "flex"};
6104
+ flex-basis: ${({ $basis }) => (0, import_type_guards15.isNotNil)($basis) ? $basis : null};
6093
6105
  flex-direction: ${({ $flexDirection }) => $flexDirection};
6094
6106
  ${({ $fillBox: fill }) => getFillStyle(fill)};
6095
6107
  ${({ $fillViewport }) => getFillViewportStyle($fillViewport)};
6096
6108
 
6097
6109
  /* Box children styles */
6098
- flex-grow: ${({ $grow }) => (0, import_type_guards14.isNotNil)($grow) ? $grow : null};
6099
- flex-shrink: ${({ $shrink }) => (0, import_type_guards14.isNotNil)($shrink) ? $shrink : null};
6110
+ flex-grow: ${({ $grow }) => (0, import_type_guards15.isNotNil)($grow) ? $grow : null};
6111
+ flex-shrink: ${({ $shrink }) => (0, import_type_guards15.isNotNil)($shrink) ? $shrink : null};
6100
6112
  flex-wrap: ${({ $wrapItems }) => $wrapItems ? "wrap" : "nowrap"};
6101
6113
  ${({ $gap }) => getGapStyle($gap)};
6102
6114
  justify-content: ${({ $justifyContent }) => $justifyContent};
6103
- order: ${({ $order }) => (0, import_type_guards14.isNotNil)($order) ? $order : null};
6115
+ order: ${({ $order }) => (0, import_type_guards15.isNotNil)($order) ? $order : null};
6104
6116
  `;
6105
6117
  var wrapChildren = (children) => {
6106
- if ((0, import_type_guards14.isNotNil)(children)) {
6118
+ if ((0, import_type_guards15.isNotNil)(children)) {
6107
6119
  if (typeof children === "object" && isDev) {
6108
6120
  return import_react16.Children.map(children, (child) => {
6109
- if ((0, import_type_guards14.isNil)(child)) return null;
6121
+ if ((0, import_type_guards15.isNil)(child)) return null;
6110
6122
  const elementParams = {};
6111
6123
  if (child.type?.displayName === "Box" || child.type?.displayName === "Box_UI") {
6112
6124
  elementParams.hasBoxParent = true;
@@ -6189,11 +6201,12 @@ Breadcrumbs.displayName = "Breadcrumbs";
6189
6201
 
6190
6202
  // src/components/Breadcrumbs/Breadcrumb.tsx
6191
6203
  var import_jsx_runtime169 = require("react/jsx-runtime");
6192
- var Breadcrumb = ({ icon, href, children }) => {
6204
+ var Breadcrumb = ({ icon, href, children, ...props }) => {
6193
6205
  return /* @__PURE__ */ (0, import_jsx_runtime169.jsxs)(import_jsx_runtime169.Fragment, { children: [
6194
6206
  /* @__PURE__ */ (0, import_jsx_runtime169.jsx)(
6195
6207
  Button,
6196
6208
  {
6209
+ ...props,
6197
6210
  href,
6198
6211
  leftIcon: icon,
6199
6212
  variant: "ghost",
@@ -6212,7 +6225,7 @@ var Breadcrumb = ({ icon, href, children }) => {
6212
6225
 
6213
6226
  // src/components/ButtonGroup/ButtonGroup.tsx
6214
6227
  var import_styled_components25 = __toESM(require("styled-components"));
6215
- var import_type_guards15 = require("@wistia/type-guards");
6228
+ var import_type_guards16 = require("@wistia/type-guards");
6216
6229
  var import_jsx_runtime170 = require("react/jsx-runtime");
6217
6230
  var getAlignment = (align) => {
6218
6231
  if (align === "center") {
@@ -6252,7 +6265,7 @@ var ButtonGroup = ({
6252
6265
  fullWidth = false,
6253
6266
  ...otherProps
6254
6267
  }) => {
6255
- if ((0, import_type_guards15.isNil)(children)) {
6268
+ if ((0, import_type_guards16.isNil)(children)) {
6256
6269
  return null;
6257
6270
  }
6258
6271
  return /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(
@@ -6322,7 +6335,7 @@ Card.displayName = "Card";
6322
6335
  var import_react18 = require("react");
6323
6336
  var import_react_checkbox = require("@radix-ui/react-checkbox");
6324
6337
  var import_styled_components30 = __toESM(require("styled-components"));
6325
- var import_type_guards17 = require("@wistia/type-guards");
6338
+ var import_type_guards18 = require("@wistia/type-guards");
6326
6339
 
6327
6340
  // src/components/Label/Label.tsx
6328
6341
  var import_styled_components28 = __toESM(require("styled-components"));
@@ -6509,7 +6522,7 @@ Label.displayName = "Label";
6509
6522
 
6510
6523
  // src/components/Label/LabelDescription.tsx
6511
6524
  var import_styled_components29 = __toESM(require("styled-components"));
6512
- var import_type_guards16 = require("@wistia/type-guards");
6525
+ var import_type_guards17 = require("@wistia/type-guards");
6513
6526
  var import_jsx_runtime174 = require("react/jsx-runtime");
6514
6527
  var StyledLabelDescription = import_styled_components29.default.div`
6515
6528
  color: var(--wui-color-text-secondary);
@@ -6521,7 +6534,7 @@ var LabelDescription = ({
6521
6534
  children,
6522
6535
  ...props
6523
6536
  }) => {
6524
- if ((0, import_type_guards16.isNil)(children)) {
6537
+ if ((0, import_type_guards17.isNil)(children)) {
6525
6538
  return null;
6526
6539
  }
6527
6540
  return /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(StyledLabelDescription, { ...props, children });
@@ -6618,7 +6631,7 @@ var Checkbox = (0, import_react18.forwardRef)(
6618
6631
  ...otherProps
6619
6632
  }, ref) => {
6620
6633
  const generatedId = (0, import_react18.useId)();
6621
- const computedId = (0, import_type_guards17.isNonEmptyString)(id) ? id : `wistia-ui-checkbox-group-${generatedId}`;
6634
+ const computedId = (0, import_type_guards18.isNonEmptyString)(id) ? id : `wistia-ui-checkbox-group-${generatedId}`;
6622
6635
  return /* @__PURE__ */ (0, import_jsx_runtime175.jsxs)(StyledCheckboxWrapper, { children: [
6623
6636
  /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
6624
6637
  StyledCheckboxRoot,
@@ -6711,7 +6724,7 @@ Divider.displayName = "Divider";
6711
6724
  // src/components/Form/Form.tsx
6712
6725
  var import_react20 = require("react");
6713
6726
  var import_styled_components33 = __toESM(require("styled-components"));
6714
- var import_type_guards18 = require("@wistia/type-guards");
6727
+ var import_type_guards19 = require("@wistia/type-guards");
6715
6728
 
6716
6729
  // src/components/Stack/Stack.tsx
6717
6730
  var import_react19 = require("react");
@@ -6765,7 +6778,7 @@ var FormComponent = ({ children, action, values = {}, validate, fullWidth = fals
6765
6778
  const id = props.id ?? autoId;
6766
6779
  const handleValidate = (nextFormData) => {
6767
6780
  const nextData = Object.fromEntries(nextFormData.entries());
6768
- if ((0, import_type_guards18.isUndefined)(validate)) {
6781
+ if ((0, import_type_guards19.isUndefined)(validate)) {
6769
6782
  return {};
6770
6783
  }
6771
6784
  return validate(nextData);
@@ -6775,7 +6788,7 @@ var FormComponent = ({ children, action, values = {}, validate, fullWidth = fals
6775
6788
  props.onBlur(event);
6776
6789
  }
6777
6790
  const formData = new FormData(event.currentTarget);
6778
- if ((0, import_type_guards18.isNotUndefined)(validate)) {
6791
+ if ((0, import_type_guards19.isNotUndefined)(validate)) {
6779
6792
  handleValidate(formData);
6780
6793
  }
6781
6794
  };
@@ -6871,7 +6884,7 @@ var useFormState = (action, initialData = {}) => {
6871
6884
 
6872
6885
  // src/components/Form/FormErrorSummary.tsx
6873
6886
  var import_react22 = require("react");
6874
- var import_type_guards19 = require("@wistia/type-guards");
6887
+ var import_type_guards20 = require("@wistia/type-guards");
6875
6888
  var import_jsx_runtime179 = require("react/jsx-runtime");
6876
6889
  var ErrorItem = ({ name, error, formId }) => {
6877
6890
  return /* @__PURE__ */ (0, import_jsx_runtime179.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(Link, { href: `${formId}-${name}`, children: error }) }, name);
@@ -6885,8 +6898,8 @@ var FormErrorSummary = ({ description }) => {
6885
6898
  }
6886
6899
  return /* @__PURE__ */ (0, import_jsx_runtime179.jsxs)("div", { ref, children: [
6887
6900
  /* @__PURE__ */ (0, import_jsx_runtime179.jsx)("p", { children: description }),
6888
- /* @__PURE__ */ (0, import_jsx_runtime179.jsx)("ul", { children: Object.entries(errors).filter(([, error]) => (0, import_type_guards19.isNotUndefined)(error)).map(
6889
- ([name, error]) => (0, import_type_guards19.isArray)(error) ? error.map((err) => /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(
6901
+ /* @__PURE__ */ (0, import_jsx_runtime179.jsx)("ul", { children: Object.entries(errors).filter(([, error]) => (0, import_type_guards20.isNotUndefined)(error)).map(
6902
+ ([name, error]) => (0, import_type_guards20.isArray)(error) ? error.map((err) => /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(
6890
6903
  ErrorItem,
6891
6904
  {
6892
6905
  error: err,
@@ -6910,7 +6923,7 @@ var FormErrorSummary = ({ description }) => {
6910
6923
  // src/components/FormField/FormField.tsx
6911
6924
  var import_react26 = require("react");
6912
6925
  var import_styled_components36 = __toESM(require("styled-components"));
6913
- var import_type_guards20 = require("@wistia/type-guards");
6926
+ var import_type_guards21 = require("@wistia/type-guards");
6914
6927
 
6915
6928
  // src/components/Text/Text.tsx
6916
6929
  var import_react23 = require("react");
@@ -7165,7 +7178,7 @@ var StyledErrorList = import_styled_components36.default.ul`
7165
7178
  gap: var(--wui-space-01);
7166
7179
  `;
7167
7180
  var ErrorMessages = ({ errors, id }) => {
7168
- const isMultipleErrors = (0, import_type_guards20.isArray)(errors);
7181
+ const isMultipleErrors = (0, import_type_guards21.isArray)(errors);
7169
7182
  return isMultipleErrors ? /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(StyledErrorList, { children: errors.map((error, index) => /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(
7170
7183
  Text,
7171
7184
  {
@@ -7208,19 +7221,19 @@ var FormField = ({
7208
7221
  label: isInlineLabel ? label : void 0,
7209
7222
  ...props
7210
7223
  };
7211
- if ((0, import_type_guards20.isUndefined)(value) && (0, import_type_guards20.isNotUndefined)(defaultValue)) {
7224
+ if ((0, import_type_guards21.isUndefined)(value) && (0, import_type_guards21.isNotUndefined)(defaultValue)) {
7212
7225
  childProps = {
7213
7226
  ...childProps,
7214
7227
  defaultValue
7215
7228
  };
7216
7229
  }
7217
- if ((0, import_type_guards20.isNotNil)(checkboxGroup)) {
7218
- const computedName = (0, import_type_guards20.isNotNil)(checkboxGroup.name) ? `${checkboxGroup.name}[${name}]` : name;
7230
+ if ((0, import_type_guards21.isNotNil)(checkboxGroup)) {
7231
+ const computedName = (0, import_type_guards21.isNotNil)(checkboxGroup.name) ? `${checkboxGroup.name}[${name}]` : name;
7219
7232
  const handleChange = (event) => {
7220
- if ((0, import_type_guards20.isNotUndefined)(props.onChange)) {
7233
+ if ((0, import_type_guards21.isNotUndefined)(props.onChange)) {
7221
7234
  props.onChange(event);
7222
7235
  }
7223
- if ((0, import_type_guards20.isNotUndefined)(checkboxGroup.onChange)) {
7236
+ if ((0, import_type_guards21.isNotUndefined)(checkboxGroup.onChange)) {
7224
7237
  checkboxGroup.onChange(event);
7225
7238
  }
7226
7239
  };
@@ -7228,15 +7241,15 @@ var FormField = ({
7228
7241
  ...childProps,
7229
7242
  name: computedName,
7230
7243
  onChange: handleChange,
7231
- "aria-invalid": (0, import_type_guards20.isNotNil)(error),
7232
- "aria-describedby": (0, import_type_guards20.isNotNil)(error) ? `${id}-error` : void 0
7244
+ "aria-invalid": (0, import_type_guards21.isNotNil)(error),
7245
+ "aria-describedby": (0, import_type_guards21.isNotNil)(error) ? `${id}-error` : void 0
7233
7246
  };
7234
7247
  }
7235
7248
  import_react26.Children.only(children);
7236
7249
  return /* @__PURE__ */ (0, import_jsx_runtime183.jsxs)(StyledFormField, { ...props, children: [
7237
7250
  !isInlineLabel && /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(Label, { htmlFor: id, children: label }),
7238
7251
  (0, import_react26.cloneElement)(children, childProps),
7239
- (0, import_type_guards20.isNotNil)(computedError) ? /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(
7252
+ (0, import_type_guards21.isNotNil)(computedError) ? /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(
7240
7253
  ErrorMessages,
7241
7254
  {
7242
7255
  errors: computedError,
@@ -7309,7 +7322,7 @@ IconButton.displayName = "IconButton";
7309
7322
  // src/components/Input/Input.tsx
7310
7323
  var import_react29 = require("react");
7311
7324
  var import_styled_components38 = __toESM(require("styled-components"));
7312
- var import_type_guards21 = require("@wistia/type-guards");
7325
+ var import_type_guards22 = require("@wistia/type-guards");
7313
7326
  var import_jsx_runtime186 = require("react/jsx-runtime");
7314
7327
  var inputStyles = import_styled_components38.css`
7315
7328
  --wui-input-color-bg: var(--wui-color-bg-surface);
@@ -7397,7 +7410,7 @@ var StyledInputContainer = import_styled_components38.default.div`
7397
7410
  }
7398
7411
  `;
7399
7412
  var isValidRef = (ref) => {
7400
- return typeof ref === "object" && ref !== null && "current" in ref && (0, import_type_guards21.isNotNil)(ref.current);
7413
+ return typeof ref === "object" && ref !== null && "current" in ref && (0, import_type_guards22.isNotNil)(ref.current);
7401
7414
  };
7402
7415
  var Input = (0, import_react29.forwardRef)(
7403
7416
  ({
@@ -7412,24 +7425,24 @@ var Input = (0, import_react29.forwardRef)(
7412
7425
  const internalRef = (0, import_react29.useRef)();
7413
7426
  const ref = isValidRef(externalRef) ? externalRef : internalRef;
7414
7427
  let leftIconToDisplay = leftIcon;
7415
- if ((0, import_type_guards21.isNil)(leftIcon) && type === "search") {
7428
+ if ((0, import_type_guards22.isNil)(leftIcon) && type === "search") {
7416
7429
  leftIconToDisplay = /* @__PURE__ */ (0, import_jsx_runtime186.jsx)(Icon, { type: "search" });
7417
7430
  }
7418
- if ((0, import_type_guards21.isNotNil)(leftIconToDisplay)) {
7431
+ if ((0, import_type_guards22.isNotNil)(leftIconToDisplay)) {
7419
7432
  leftIconToDisplay = (0, import_react29.cloneElement)(leftIconToDisplay, {
7420
7433
  size: "md",
7421
7434
  className: "wui-input-left-icon"
7422
7435
  });
7423
7436
  }
7424
7437
  let rightIconToDisplay = rightIcon;
7425
- if ((0, import_type_guards21.isNotNil)(rightIconToDisplay)) {
7438
+ if ((0, import_type_guards22.isNotNil)(rightIconToDisplay)) {
7426
7439
  rightIconToDisplay = (0, import_react29.cloneElement)(rightIconToDisplay, {
7427
7440
  size: "md",
7428
7441
  className: "wui-input-right-icon"
7429
7442
  });
7430
7443
  }
7431
7444
  const handleFocus = (event) => {
7432
- if ((0, import_type_guards21.isNotNil)(props.onFocus)) {
7445
+ if ((0, import_type_guards22.isNotNil)(props.onFocus)) {
7433
7446
  props.onFocus(event);
7434
7447
  }
7435
7448
  if (autoSelect && ref && "current" in ref) {
@@ -7472,7 +7485,7 @@ Input.displayName = "Input";
7472
7485
  // src/components/Menu/Menu.tsx
7473
7486
  var import_styled_components39 = __toESM(require("styled-components"));
7474
7487
  var import_react_dropdown_menu = require("@radix-ui/react-dropdown-menu");
7475
- var import_type_guards22 = require("@wistia/type-guards");
7488
+ var import_type_guards23 = require("@wistia/type-guards");
7476
7489
  var import_jsx_runtime187 = require("react/jsx-runtime");
7477
7490
  var open = import_styled_components39.keyframes`
7478
7491
  from {
@@ -7573,7 +7586,7 @@ var Menu = ({
7573
7586
  ...props
7574
7587
  }) => {
7575
7588
  let controlProps = {
7576
- ...(0, import_type_guards22.isNotNil)(onOpenChange) && (0, import_type_guards22.isNotNil)(isOpen) ? { open: isOpen, onOpenChange } : {}
7589
+ ...(0, import_type_guards23.isNotNil)(onOpenChange) && (0, import_type_guards23.isNotNil)(isOpen) ? { open: isOpen, onOpenChange } : {}
7577
7590
  };
7578
7591
  if (disabled) {
7579
7592
  controlProps = {
@@ -7587,7 +7600,7 @@ var Menu = ({
7587
7600
  modal: false,
7588
7601
  ...controlProps,
7589
7602
  children: [
7590
- /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_react_dropdown_menu.DropdownMenuTrigger, { asChild: true, children: (0, import_type_guards22.isNotUndefined)(trigger) ? trigger : /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(
7603
+ /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_react_dropdown_menu.DropdownMenuTrigger, { asChild: true, children: (0, import_type_guards23.isNotUndefined)(trigger) ? trigger : /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(
7591
7604
  Button,
7592
7605
  {
7593
7606
  "aria-expanded": isOpen,
@@ -7648,12 +7661,12 @@ MenuLabel.displayName = "MenuLabel";
7648
7661
  var import_react31 = require("react");
7649
7662
  var import_styled_components43 = __toESM(require("styled-components"));
7650
7663
  var import_react_dropdown_menu3 = require("@radix-ui/react-dropdown-menu");
7651
- var import_type_guards24 = require("@wistia/type-guards");
7664
+ var import_type_guards25 = require("@wistia/type-guards");
7652
7665
 
7653
7666
  // src/components/Menu/MenuItemButton.tsx
7654
7667
  var import_react30 = require("react");
7655
7668
  var import_styled_components41 = __toESM(require("styled-components"));
7656
- var import_type_guards23 = require("@wistia/type-guards");
7669
+ var import_type_guards24 = require("@wistia/type-guards");
7657
7670
  var import_jsx_runtime189 = require("react/jsx-runtime");
7658
7671
  var StyledButton3 = (0, import_styled_components41.default)(Button)`
7659
7672
  ${({ colorScheme }) => getColorScheme(colorScheme)};
@@ -7726,7 +7739,7 @@ var StyledBadgeContainer = import_styled_components41.default.div`
7726
7739
  var MenuItemButton = (0, import_react30.forwardRef)(({ children, appearance, command, icon, ...props }, ref) => {
7727
7740
  let { colorScheme, badge } = props;
7728
7741
  if (appearance === "dangerous") {
7729
- if ((0, import_type_guards23.isNotUndefined)(colorScheme)) {
7742
+ if ((0, import_type_guards24.isNotUndefined)(colorScheme)) {
7730
7743
  console.warn("colorScheme prop is ignored when appearance is dangerous");
7731
7744
  }
7732
7745
  colorScheme = "error";
@@ -7756,7 +7769,7 @@ var MenuItemButton = (0, import_react30.forwardRef)(({ children, appearance, com
7756
7769
  children: [
7757
7770
  props.leftIcon ? /* @__PURE__ */ (0, import_jsx_runtime189.jsx)(StyledLeftIconContainer, { children: props.leftIcon }) : null,
7758
7771
  /* @__PURE__ */ (0, import_jsx_runtime189.jsx)(StyledLabelAndDescriptionContainer, { children }),
7759
- (0, import_type_guards23.isNotNil)(badge) || (0, import_type_guards23.isNotNil)(command) ? /* @__PURE__ */ (0, import_jsx_runtime189.jsx)(StyledBadgeContainer, { children: badge ?? command }) : null,
7772
+ (0, import_type_guards24.isNotNil)(badge) || (0, import_type_guards24.isNotNil)(command) ? /* @__PURE__ */ (0, import_jsx_runtime189.jsx)(StyledBadgeContainer, { children: badge ?? command }) : null,
7760
7773
  props.rightIcon ? /* @__PURE__ */ (0, import_jsx_runtime189.jsx)(StyledRightIconContainer, { children: props.rightIcon }) : null
7761
7774
  ]
7762
7775
  }
@@ -7802,8 +7815,8 @@ var StyledSubTrigger = (0, import_styled_components43.default)(import_react_drop
7802
7815
  `;
7803
7816
  var SubMenuTrigger = (props) => {
7804
7817
  const { isSmAndUp } = useMq();
7805
- const Trigger2 = isSmAndUp ? StyledSubTrigger : import_react_dropdown_menu3.DropdownMenuItem;
7806
- return /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(Trigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(
7818
+ const Trigger3 = isSmAndUp ? StyledSubTrigger : import_react_dropdown_menu3.DropdownMenuItem;
7819
+ return /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(Trigger3, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(
7807
7820
  MenuItemButton,
7808
7821
  {
7809
7822
  ...props,
@@ -7823,7 +7836,7 @@ var SubMenu = ({
7823
7836
  return isSmAndUp ? /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)(import_react_dropdown_menu3.DropdownMenuSub, { onOpenChange, children: [
7824
7837
  /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)(SubMenuTrigger, { ...props, children: [
7825
7838
  /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(MenuItemLabel, { children: label }),
7826
- (0, import_type_guards24.isNotNil)(description) ? /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(MenuItemDescription, { children: description }) : null
7839
+ (0, import_type_guards25.isNotNil)(description) ? /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(MenuItemDescription, { children: description }) : null
7827
7840
  ] }),
7828
7841
  /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(import_react_dropdown_menu3.DropdownMenuPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(SubMenuContent, { children }) })
7829
7842
  ] }) : /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)(import_react_dropdown_menu3.DropdownMenuGroup, { children: [
@@ -8003,7 +8016,7 @@ CheckboxMenuItem.displayName = "CheckboxMenuItem";
8003
8016
  var import_react36 = require("react");
8004
8017
  var import_styled_components49 = __toESM(require("styled-components"));
8005
8018
  var import_react_dialog4 = require("@radix-ui/react-dialog");
8006
- var import_type_guards27 = require("@wistia/type-guards");
8019
+ var import_type_guards28 = require("@wistia/type-guards");
8007
8020
 
8008
8021
  // src/components/Modal/ModalHeader.tsx
8009
8022
  var import_styled_components46 = __toESM(require("styled-components"));
@@ -8030,7 +8043,7 @@ var ModalCloseButton = () => {
8030
8043
 
8031
8044
  // src/components/ScreenReaderOnly/ScreenReaderOnly.tsx
8032
8045
  var import_styled_components45 = __toESM(require("styled-components"));
8033
- var import_type_guards25 = require("@wistia/type-guards");
8046
+ var import_type_guards26 = require("@wistia/type-guards");
8034
8047
  var import_jsx_runtime197 = require("react/jsx-runtime");
8035
8048
  var VisuallyHidden = import_styled_components45.default.div({ ...visuallyHiddenStyle });
8036
8049
  var VisuallyHiddenButFocusable = import_styled_components45.default.div({
@@ -8042,7 +8055,7 @@ var ScreenReaderOnly = ({
8042
8055
  focusable = false,
8043
8056
  ...otherProps
8044
8057
  }) => {
8045
- const accessibleText = (0, import_type_guards25.isNotNil)(text) ? text : children;
8058
+ const accessibleText = (0, import_type_guards26.isNotNil)(text) ? text : children;
8046
8059
  if (focusable) {
8047
8060
  return /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(VisuallyHiddenButFocusable, { ...otherProps, children: accessibleText });
8048
8061
  }
@@ -8089,7 +8102,7 @@ var import_react_dialog3 = require("@radix-ui/react-dialog");
8089
8102
 
8090
8103
  // src/private/hooks/useFocusRestore/useFocusRestore.ts
8091
8104
  var import_react33 = require("react");
8092
- var import_type_guards26 = require("@wistia/type-guards");
8105
+ var import_type_guards27 = require("@wistia/type-guards");
8093
8106
  var useFocusRestore = () => {
8094
8107
  const previouslyFocusedRef = (0, import_react33.useRef)(null);
8095
8108
  (0, import_react33.useEffect)(() => {
@@ -8097,7 +8110,7 @@ var useFocusRestore = () => {
8097
8110
  }, []);
8098
8111
  (0, import_react33.useEffect)(() => {
8099
8112
  return () => {
8100
- if ((0, import_type_guards26.isNotNil)(previouslyFocusedRef.current)) {
8113
+ if ((0, import_type_guards27.isNotNil)(previouslyFocusedRef.current)) {
8101
8114
  setTimeout(() => {
8102
8115
  previouslyFocusedRef.current?.focus();
8103
8116
  }, 0);
@@ -8241,7 +8254,7 @@ var Modal = (0, import_react36.forwardRef)(
8241
8254
  import_react_dialog4.Root,
8242
8255
  {
8243
8256
  onOpenChange: (open2) => {
8244
- if (!open2 && (0, import_type_guards27.isNotNil)(onRequestClose)) {
8257
+ if (!open2 && (0, import_type_guards28.isNotNil)(onRequestClose)) {
8245
8258
  onRequestClose();
8246
8259
  }
8247
8260
  },
@@ -8255,7 +8268,7 @@ var Modal = (0, import_react36.forwardRef)(
8255
8268
  "aria-describedby": void 0,
8256
8269
  fullHeight,
8257
8270
  onOpenAutoFocus: (event) => {
8258
- if ((0, import_type_guards27.isNotNil)(initialFocusRef) && initialFocusRef.current) {
8271
+ if ((0, import_type_guards28.isNotNil)(initialFocusRef) && initialFocusRef.current) {
8259
8272
  event.preventDefault();
8260
8273
  requestAnimationFrame(() => {
8261
8274
  initialFocusRef.current?.focus();
@@ -8287,7 +8300,7 @@ Modal.displayName = "Modal";
8287
8300
  // src/components/Radio/Radio.tsx
8288
8301
  var import_react37 = require("react");
8289
8302
  var import_styled_components50 = __toESM(require("styled-components"));
8290
- var import_type_guards28 = require("@wistia/type-guards");
8303
+ var import_type_guards29 = require("@wistia/type-guards");
8291
8304
  var import_jsx_runtime202 = require("react/jsx-runtime");
8292
8305
  var StyledLabelWrapper2 = import_styled_components50.default.div`
8293
8306
  display: flex;
@@ -8373,7 +8386,7 @@ var Radio = (0, import_react37.forwardRef)(
8373
8386
  ...otherProps
8374
8387
  }, ref) => {
8375
8388
  const generatedId = (0, import_react37.useId)();
8376
- const computedId = (0, import_type_guards28.isNonEmptyString)(id) ? id : `ui-radio-${generatedId}`;
8389
+ const computedId = (0, import_type_guards29.isNonEmptyString)(id) ? id : `ui-radio-${generatedId}`;
8377
8390
  return /* @__PURE__ */ (0, import_jsx_runtime202.jsxs)(
8378
8391
  StyledRadioWrapper,
8379
8392
  {
@@ -8417,7 +8430,7 @@ Radio.displayName = "Radio";
8417
8430
  // src/components/Tag/Tag.tsx
8418
8431
  var import_react38 = require("react");
8419
8432
  var import_styled_components51 = __toESM(require("styled-components"));
8420
- var import_type_guards29 = require("@wistia/type-guards");
8433
+ var import_type_guards30 = require("@wistia/type-guards");
8421
8434
  var import_jsx_runtime203 = require("react/jsx-runtime");
8422
8435
  var TagLabel = import_styled_components51.default.a`
8423
8436
  ${({ $colorScheme }) => getColorScheme($colorScheme)};
@@ -8491,10 +8504,10 @@ var StyledTag = import_styled_components51.default.div`
8491
8504
  overflow: hidden;
8492
8505
  `;
8493
8506
  var RemoveButton = ({ onClickRemove, onClickRemoveLabel, colorScheme }) => {
8494
- if ((0, import_type_guards29.isNil)(onClickRemove)) {
8507
+ if ((0, import_type_guards30.isNil)(onClickRemove)) {
8495
8508
  return null;
8496
8509
  }
8497
- if ((0, import_type_guards29.isNil)(onClickRemoveLabel)) {
8510
+ if ((0, import_type_guards30.isNil)(onClickRemoveLabel)) {
8498
8511
  throw new Error(
8499
8512
  "for accessibility, onClickRemoveLabel must be provided if onClickRemove is provided"
8500
8513
  );
@@ -8523,7 +8536,7 @@ var RemoveButton = ({ onClickRemove, onClickRemoveLabel, colorScheme }) => {
8523
8536
  };
8524
8537
  var Tag = (0, import_react38.forwardRef)(
8525
8538
  ({ onClickRemove, colorScheme = "inherit", href, label, onClickRemoveLabel, ...otherProps }, ref) => {
8526
- const labelProps = (0, import_type_guards29.isNotNil)(href) && (0, import_type_guards29.isNonEmptyString)(href) ? { href, as: "a" } : { as: "span" };
8539
+ const labelProps = (0, import_type_guards30.isNotNil)(href) && (0, import_type_guards30.isNonEmptyString)(href) ? { href, as: "a" } : { as: "span" };
8527
8540
  return /* @__PURE__ */ (0, import_jsx_runtime203.jsxs)(
8528
8541
  StyledTag,
8529
8542
  {
@@ -8661,7 +8674,7 @@ Tooltip.displayName = "Tooltip";
8661
8674
 
8662
8675
  // src/components/WistiaLogo/WistiaLogo.tsx
8663
8676
  var import_styled_components53 = __toESM(require("styled-components"));
8664
- var import_type_guards30 = require("@wistia/type-guards");
8677
+ var import_type_guards31 = require("@wistia/type-guards");
8665
8678
  var import_jsx_runtime205 = require("react/jsx-runtime");
8666
8679
  var renderBrandmark = (brandmarkColor, iconOnly) => {
8667
8680
  if (iconOnly) {
@@ -8755,7 +8768,7 @@ var WistiaLogo = ({
8755
8768
  ...otherProps,
8756
8769
  children: [
8757
8770
  /* @__PURE__ */ (0, import_jsx_runtime205.jsx)("title", { children: title }),
8758
- (0, import_type_guards30.isNotNil)(description) ? /* @__PURE__ */ (0, import_jsx_runtime205.jsx)("desc", { children: description }) : null,
8771
+ (0, import_type_guards31.isNotNil)(description) ? /* @__PURE__ */ (0, import_jsx_runtime205.jsx)("desc", { children: description }) : null,
8759
8772
  renderBrandmark(brandmarkColor, iconOnly),
8760
8773
  renderLogotype(logotypeColor, iconOnly)
8761
8774
  ]
@@ -8764,6 +8777,190 @@ var WistiaLogo = ({
8764
8777
  return href !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime205.jsx)("a", { href, children: Logo }) : Logo;
8765
8778
  };
8766
8779
  WistiaLogo.displayName = "WistiaLogo";
8780
+
8781
+ // src/components/Select/Select.tsx
8782
+ var import_react_select = require("@radix-ui/react-select");
8783
+ var import_react39 = require("react");
8784
+ var import_styled_components54 = __toESM(require("styled-components"));
8785
+ var import_jsx_runtime206 = require("react/jsx-runtime");
8786
+ var StyledTrigger = (0, import_styled_components54.default)(import_react_select.Trigger)`
8787
+ ${({ $colorScheme }) => getColorScheme($colorScheme)};
8788
+ --wui-select-color-bg: var(--wui-color-bg-surface);
8789
+ --wui-select-color-bg-disabled: var(--wui-color-bg-surface-disabled);
8790
+ --wui-select-color-border: var(--wui-color-border);
8791
+ --wui-select-color-border-focus: var(--wui-color-border-active);
8792
+ --wui-select-color-border-error: var(--wui-color-border-error);
8793
+ --wui-select-color-border-disabled: var(--wui-color-border-disabled);
8794
+ --wui-select-border-radius: var(--wui-border-radius-rounded);
8795
+ --wui-select-multiline-border-radius: var(--wui-border-radius-02);
8796
+ --wui-select-vertical-padding: var(--wui-space-02);
8797
+ --wui-select-horizontal-padding: var(--wui-space-03);
8798
+ --wui-select-placeholder: var(--wui-gray-10);
8799
+ --wui-select-color-text-error: var(--wui-color-text-error);
8800
+
8801
+ padding: var(--wui-select-vertical-padding) var(--wui-select-horizontal-padding);
8802
+ background-color: var(--wui-select-color-bg);
8803
+ border: 1px solid var(--wui-select-color-border);
8804
+ border-radius: var(--wui-select-border-radius);
8805
+ min-width: 200px;
8806
+ text-align: left;
8807
+ display: inline-flex;
8808
+ align-items: center;
8809
+ justify-content: space-between;
8810
+ width: ${({ $fullWidth = false }) => $fullWidth ? "100%" : "auto"};
8811
+
8812
+ &[aria-expanded='true'],
8813
+ &:focus {
8814
+ outline: 2px solid var(--wui-color-focus-ring);
8815
+ }
8816
+
8817
+ &[aria-invalid='true'] {
8818
+ outline: 2px solid var(--wui-select-color-border-error);
8819
+ color: var(--wui-select-color-text-error);
8820
+ }
8821
+
8822
+ &:disabled {
8823
+ border-color: var(--wui-color-bg-surface-disabled);
8824
+ background-color: var(--wui-color-bg-surface-disabled);
8825
+ }
8826
+ `;
8827
+ var StyledContent2 = (0, import_styled_components54.default)(import_react_select.Content)`
8828
+ --wui-select-content-border: var(--wui-color-border);
8829
+ --wui-select-content-bg: var(--wui-color-bg-surface);
8830
+ --wui-select-content-border-radius: var(--wui-border-radius-02);
8831
+ --wui-select-option-padding: var(--wui-space-02);
8832
+ --wui-select-option-inner-gap: var(--wui-space-03);
8833
+ --wui-select-option-bg-hover: var(--wui-color-bg-surface-hover);
8834
+
8835
+ overflow: hidden;
8836
+ transform: translateY(8px);
8837
+ background-color: var(--wui-select-content-bg);
8838
+ border: 1px solid var(--wui-select-content-border);
8839
+ border-radius: var(--wui-select-content-border-radius);
8840
+ padding: var(--wui-select-option-padding);
8841
+ min-width: 200px;
8842
+ `;
8843
+ var Select = (0, import_react39.forwardRef)(
8844
+ ({
8845
+ colorScheme = "inherit",
8846
+ children,
8847
+ onChange = () => null,
8848
+ placeholder = "Select...",
8849
+ fullWidth = false,
8850
+ ...props
8851
+ }, forwardedRef) => {
8852
+ const responsiveFullWidth = useResponsiveProp(fullWidth);
8853
+ return /* @__PURE__ */ (0, import_jsx_runtime206.jsxs)(
8854
+ import_react_select.Root,
8855
+ {
8856
+ ...props,
8857
+ onValueChange: onChange,
8858
+ children: [
8859
+ /* @__PURE__ */ (0, import_jsx_runtime206.jsxs)(
8860
+ StyledTrigger,
8861
+ {
8862
+ ref: forwardedRef,
8863
+ $colorScheme: colorScheme,
8864
+ $fullWidth: responsiveFullWidth,
8865
+ ...props,
8866
+ children: [
8867
+ /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(import_react_select.Value, { placeholder }),
8868
+ /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(
8869
+ Icon,
8870
+ {
8871
+ size: "md",
8872
+ type: "caret-down"
8873
+ }
8874
+ )
8875
+ ]
8876
+ }
8877
+ ),
8878
+ /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(import_react_select.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime206.jsxs)(StyledContent2, { position: "popper", children: [
8879
+ /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(import_react_select.ScrollUpButton, { children: /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(Icon, { type: "caret-up" }) }),
8880
+ /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(import_react_select.Viewport, { children }),
8881
+ /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(import_react_select.ScrollDownButton, { children: /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(Icon, { type: "caret-down" }) })
8882
+ ] }) })
8883
+ ]
8884
+ }
8885
+ );
8886
+ }
8887
+ );
8888
+ Select.displayName = "Select";
8889
+
8890
+ // src/components/Select/Option.tsx
8891
+ var import_react_select2 = require("@radix-ui/react-select");
8892
+ var import_react40 = require("react");
8893
+ var import_styled_components55 = __toESM(require("styled-components"));
8894
+ var import_jsx_runtime207 = require("react/jsx-runtime");
8895
+ var StyledItem = (0, import_styled_components55.default)(import_react_select2.Item)`
8896
+ ${variantStyleMap2.body3};
8897
+ display: flex;
8898
+ padding: var(--wui-select-option-padding);
8899
+ gap: var(--wui-select-option-inner-gap);
8900
+ font-size: var(--font-size);
8901
+ font-weight: var(--font-weight);
8902
+ border-radius: var(--wui-border-radius-01);
8903
+
8904
+ &:hover,
8905
+ &:focus-visible {
8906
+ background-color: var(--wui-select-option-bg-hover);
8907
+ outline: none;
8908
+ }
8909
+
8910
+ &[aria-disabled='true'] {
8911
+ color: var(--wui-color-text-disabled);
8912
+ }
8913
+
8914
+ &[aria-disabled='true']:hover {
8915
+ background-color: transparent;
8916
+ }
8917
+ `;
8918
+ var StyledIconContainer = import_styled_components55.default.span`
8919
+ width: 12px;
8920
+ `;
8921
+ var Option = (0, import_react40.forwardRef)(
8922
+ ({ children, ...props }, forwardedRef) => {
8923
+ return /* @__PURE__ */ (0, import_jsx_runtime207.jsxs)(
8924
+ StyledItem,
8925
+ {
8926
+ ...props,
8927
+ ref: forwardedRef,
8928
+ children: [
8929
+ /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(StyledIconContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(import_react_select2.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(
8930
+ Icon,
8931
+ {
8932
+ size: "sm",
8933
+ type: "checkmark"
8934
+ }
8935
+ ) }) }),
8936
+ /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(import_react_select2.ItemText, { children })
8937
+ ]
8938
+ }
8939
+ );
8940
+ }
8941
+ );
8942
+ Option.displayName = "Option";
8943
+
8944
+ // src/components/Select/OptionGroup.tsx
8945
+ var import_react_select3 = require("@radix-ui/react-select");
8946
+ var import_styled_components56 = __toESM(require("styled-components"));
8947
+ var import_jsx_runtime208 = require("react/jsx-runtime");
8948
+ var StyledLabel3 = (0, import_styled_components56.default)(import_react_select3.Label)`
8949
+ padding: var(--wui-select-option-padding);
8950
+ `;
8951
+ var OptionGroup = ({ children, label, ...props }) => {
8952
+ return /* @__PURE__ */ (0, import_jsx_runtime208.jsxs)(import_react_select3.Group, { ...props, children: [
8953
+ /* @__PURE__ */ (0, import_jsx_runtime208.jsx)(StyledLabel3, { children: /* @__PURE__ */ (0, import_jsx_runtime208.jsx)(
8954
+ Text,
8955
+ {
8956
+ prominence: "secondary",
8957
+ variant: "body3",
8958
+ children: label
8959
+ }
8960
+ ) }),
8961
+ children
8962
+ ] });
8963
+ };
8767
8964
  // Annotate the CommonJS export names for ESM import in node:
8768
8965
  0 && (module.exports = {
8769
8966
  ActionButton,
@@ -8798,10 +8995,13 @@ WistiaLogo.displayName = "WistiaLogo";
8798
8995
  MenuLabel,
8799
8996
  MenuRadioGroup,
8800
8997
  Modal,
8998
+ Option,
8999
+ OptionGroup,
8801
9000
  Radio,
8802
9001
  RadioGroup,
8803
9002
  RadioMenuItem,
8804
9003
  ScreenReaderOnly,
9004
+ Select,
8805
9005
  Stack,
8806
9006
  SubMenu,
8807
9007
  Tag,