@wistia/ui 0.4.6 → 0.4.7-beta.5aa0e9cf.7fbd46e

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.6
3
+ * @license @wistia/ui v0.4.7-beta.5aa0e9cf.7fbd46e
4
4
  *
5
5
  * Copyright (c) 2024-2025, Wistia, Inc. and its affiliates.
6
6
  *
@@ -5959,17 +5959,17 @@ var Avatar = ({
5959
5959
  onImageLoad,
5960
5960
  ...otherProps
5961
5961
  }) => {
5962
- const [imageLoadState, setImageLoadState] = (0, import_react14.useState)(null);
5962
+ const [imageLoadState, setImageLoadState] = (0, import_react14.useState)("loading");
5963
5963
  (0, import_react14.useEffect)(() => {
5964
- setImageLoadState(null);
5964
+ setImageLoadState("loading");
5965
5965
  }, [imageUrl]);
5966
5966
  const handleImageLoad = () => {
5967
5967
  setImageLoadState("loaded");
5968
- onImageLoad?.("image");
5968
+ onImageLoad?.({ state: "loaded", type: "image" });
5969
5969
  };
5970
5970
  const handleImageLoadError = () => {
5971
5971
  setImageLoadState("error");
5972
- onImageLoad?.("initials");
5972
+ onImageLoad?.({ state: "error", type: "initials" });
5973
5973
  };
5974
5974
  const avatarSize = heightAndWidth ?? avatarSizeMap[size];
5975
5975
  const avatarColor = (0, import_react14.useMemo)(() => chooseColorScheme(name), [name]);
@@ -7483,6 +7483,14 @@ Input.displayName = "Input";
7483
7483
  var import_styled_components39 = __toESM(require("styled-components"));
7484
7484
  var import_react_dropdown_menu = require("@radix-ui/react-dropdown-menu");
7485
7485
  var import_type_guards23 = require("@wistia/type-guards");
7486
+ var import_react31 = require("react");
7487
+
7488
+ // src/components/Menu/MenuContext.tsx
7489
+ var import_react30 = require("react");
7490
+ var MenuContext = (0, import_react30.createContext)({ compact: false });
7491
+ var useMenuContext = () => (0, import_react30.useContext)(MenuContext);
7492
+
7493
+ // src/components/Menu/Menu.tsx
7486
7494
  var import_jsx_runtime187 = require("react/jsx-runtime");
7487
7495
  var open = import_styled_components39.keyframes`
7488
7496
  from {
@@ -7504,6 +7512,28 @@ var close = import_styled_components39.keyframes`
7504
7512
  transform: scale(.97) translateY(-8px);
7505
7513
  }
7506
7514
  `;
7515
+ var menuItemCss = import_styled_components39.css`
7516
+ --menu-label-description-gap: var(--wui-space-01);
7517
+ --menu-item-inner-gap: var(--wui-space-03);
7518
+ --menu-item-left-icon-size: 24px;
7519
+ --menu-item-right-icon-size: 16px;
7520
+ --menu-item-padding: var(--wui-space-02);
7521
+ --menu-label-font-size: var(--wui-typography-label-3-size);
7522
+ --menu-label-font-weight: var(--wui-typography-label-3-weight);
7523
+ --menu-label-line-height: var(--wui-typography-label-3-line-height);
7524
+ --menu-divider-margin: var(--wui-space-02);
7525
+ `;
7526
+ var compactMenuItemCss = import_styled_components39.css`
7527
+ --menu-label-description-gap: 0;
7528
+ --menu-item-inner-gap: var(--wui-space-02);
7529
+ --menu-item-left-icon-size: 16px;
7530
+ --menu-item-right-icon-size: 12px;
7531
+ --menu-item-padding: 6px;
7532
+ --menu-label-font-size: var(--wui-typography-label-4-size);
7533
+ --menu-label-font-weight: var(--wui-typography-label-4-weight);
7534
+ --menu-label-line-height: var(--wui-typography-label-4-line-height);
7535
+ --menu-divider-margin: var(--wui-space-01);
7536
+ `;
7507
7537
  var menuContentCss = import_styled_components39.css`
7508
7538
  --menu-font-family: var(--wui-typography-family-default);
7509
7539
  --menu-bg: var(--wui-color-bg-surface);
@@ -7513,6 +7543,8 @@ var menuContentCss = import_styled_components39.css`
7513
7543
  --menu-min-width: 120px;
7514
7544
  --menu-max-width: 284px;
7515
7545
 
7546
+ ${({ $compact }) => $compact ? compactMenuItemCss : menuItemCss};
7547
+
7516
7548
  animation: ${open}; /* TODO - need easing tokens */
7517
7549
  font-family: var(--menu-font-family);
7518
7550
  background: var(--menu-bg);
@@ -7543,31 +7575,8 @@ var menuContentCss = import_styled_components39.css`
7543
7575
  margin: var(--menu-divider-margin) 0;
7544
7576
  }
7545
7577
  `;
7546
- var menuItemCss = import_styled_components39.css`
7547
- --menu-label-description-gap: var(--wui-space-01);
7548
- --menu-item-inner-gap: var(--wui-space-03);
7549
- --menu-item-left-icon-size: 24px;
7550
- --menu-item-right-icon-size: 16px;
7551
- --menu-item-padding: var(--wui-space-02);
7552
- --menu-label-font-size: var(--wui-typography-label-3-size);
7553
- --menu-label-font-weight: var(--wui-typography-label-3-weight);
7554
- --menu-label-line-height: var(--wui-typography-label-3-line-height);
7555
- --menu-divider-margin: var(--wui-space-02);
7556
- `;
7557
- var compactMenuItemCss = import_styled_components39.css`
7558
- --menu-label-description-gap: 0;
7559
- --menu-item-inner-gap: var(--wui-space-02);
7560
- --menu-item-left-icon-size: 16px;
7561
- --menu-item-right-icon-size: 12px;
7562
- --menu-item-padding: 6px;
7563
- --menu-label-font-size: var(--wui-typography-label-4-size);
7564
- --menu-label-font-weight: var(--wui-typography-label-4-weight);
7565
- --menu-label-line-height: var(--wui-typography-label-4-line-height);
7566
- --menu-divider-margin: var(--wui-space-01);
7567
- `;
7568
7578
  var MenuContent = (0, import_styled_components39.default)(import_react_dropdown_menu.DropdownMenuContent)`
7569
7579
  ${menuContentCss}
7570
- ${({ $compact }) => $compact ? compactMenuItemCss : menuItemCss}
7571
7580
  `;
7572
7581
  var Menu = ({
7573
7582
  align = "start",
@@ -7582,6 +7591,7 @@ var Menu = ({
7582
7591
  onInteractOutside,
7583
7592
  ...props
7584
7593
  }) => {
7594
+ const contextValue = (0, import_react31.useMemo)(() => ({ compact }), [compact]);
7585
7595
  let controlProps = {
7586
7596
  ...(0, import_type_guards23.isNotNil)(onOpenChange) && (0, import_type_guards23.isNotNil)(isOpen) ? { open: isOpen, onOpenChange } : {}
7587
7597
  };
@@ -7591,7 +7601,7 @@ var Menu = ({
7591
7601
  onOpenChange: () => null
7592
7602
  };
7593
7603
  }
7594
- return /* @__PURE__ */ (0, import_jsx_runtime187.jsxs)(
7604
+ return /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(MenuContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime187.jsxs)(
7595
7605
  import_react_dropdown_menu.DropdownMenu,
7596
7606
  {
7597
7607
  modal: false,
@@ -7623,7 +7633,7 @@ var Menu = ({
7623
7633
  ) })
7624
7634
  ]
7625
7635
  }
7626
- );
7636
+ ) });
7627
7637
  };
7628
7638
  Menu.displayName = "Menu";
7629
7639
 
@@ -7655,13 +7665,13 @@ var MenuLabel = ({ children, ...props }) => {
7655
7665
  MenuLabel.displayName = "MenuLabel";
7656
7666
 
7657
7667
  // src/components/Menu/SubMenu.tsx
7658
- var import_react31 = require("react");
7668
+ var import_react33 = require("react");
7659
7669
  var import_styled_components43 = __toESM(require("styled-components"));
7660
7670
  var import_react_dropdown_menu3 = require("@radix-ui/react-dropdown-menu");
7661
7671
  var import_type_guards25 = require("@wistia/type-guards");
7662
7672
 
7663
7673
  // src/components/Menu/MenuItemButton.tsx
7664
- var import_react30 = require("react");
7674
+ var import_react32 = require("react");
7665
7675
  var import_styled_components41 = __toESM(require("styled-components"));
7666
7676
  var import_type_guards24 = require("@wistia/type-guards");
7667
7677
  var import_jsx_runtime189 = require("react/jsx-runtime");
@@ -7733,7 +7743,7 @@ var StyledBadgeContainer = import_styled_components41.default.div`
7733
7743
  font-size: var(--wui-typography-label-4-size);
7734
7744
  color: var(--wui-color-text-secondary);
7735
7745
  `;
7736
- var MenuItemButton = (0, import_react30.forwardRef)(({ children, appearance, command, icon, ...props }, ref) => {
7746
+ var MenuItemButton = (0, import_react32.forwardRef)(({ children, appearance, command, icon, ...props }, ref) => {
7737
7747
  let { colorScheme, badge } = props;
7738
7748
  if (appearance === "dangerous") {
7739
7749
  if ((0, import_type_guards24.isNotUndefined)(colorScheme)) {
@@ -7793,7 +7803,6 @@ var MenuItemDescription = ({ children }) => {
7793
7803
  var import_jsx_runtime191 = require("react/jsx-runtime");
7794
7804
  var SubMenuContent = (0, import_styled_components43.default)(import_react_dropdown_menu3.DropdownMenuSubContent)`
7795
7805
  ${menuContentCss}
7796
- width: 298px;
7797
7806
 
7798
7807
  ${mq.smAndDown} {
7799
7808
  transform: translateX(-100%) !important;
@@ -7829,13 +7838,14 @@ var SubMenu = ({
7829
7838
  ...props
7830
7839
  }) => {
7831
7840
  const { isSmAndUp } = useMq();
7832
- const [isExpanded, setIsExpanded] = (0, import_react31.useState)(false);
7841
+ const [isExpanded, setIsExpanded] = (0, import_react33.useState)(false);
7842
+ const { compact } = useMenuContext();
7833
7843
  return isSmAndUp ? /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)(import_react_dropdown_menu3.DropdownMenuSub, { onOpenChange, children: [
7834
7844
  /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)(SubMenuTrigger, { ...props, children: [
7835
7845
  /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(MenuItemLabel, { children: label }),
7836
7846
  (0, import_type_guards25.isNotNil)(description) ? /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(MenuItemDescription, { children: description }) : null
7837
7847
  ] }),
7838
- /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(import_react_dropdown_menu3.DropdownMenuPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(SubMenuContent, { children }) })
7848
+ /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(import_react_dropdown_menu3.DropdownMenuPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(SubMenuContent, { $compact: compact, children }) })
7839
7849
  ] }) : /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)(import_react_dropdown_menu3.DropdownMenuGroup, { children: [
7840
7850
  /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)(
7841
7851
  SubMenuTrigger,
@@ -7857,10 +7867,10 @@ var SubMenu = ({
7857
7867
  SubMenu.displayName = "SubMenu";
7858
7868
 
7859
7869
  // src/components/Menu/MenuItem.tsx
7860
- var import_react32 = require("react");
7870
+ var import_react34 = require("react");
7861
7871
  var import_react_dropdown_menu4 = require("@radix-ui/react-dropdown-menu");
7862
7872
  var import_jsx_runtime192 = require("react/jsx-runtime");
7863
- var MenuItem = (0, import_react32.forwardRef)(
7873
+ var MenuItem = (0, import_react34.forwardRef)(
7864
7874
  ({ onSelect = () => null, ...props }, ref) => {
7865
7875
  return /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(
7866
7876
  import_react_dropdown_menu4.DropdownMenuItem,
@@ -8010,7 +8020,7 @@ var CheckboxMenuItem = ({
8010
8020
  CheckboxMenuItem.displayName = "CheckboxMenuItem";
8011
8021
 
8012
8022
  // src/components/Modal/Modal.tsx
8013
- var import_react36 = require("react");
8023
+ var import_react38 = require("react");
8014
8024
  var import_styled_components49 = __toESM(require("styled-components"));
8015
8025
  var import_react_dialog4 = require("@radix-ui/react-dialog");
8016
8026
  var import_type_guards28 = require("@wistia/type-guards");
@@ -8093,19 +8103,19 @@ var ModalHeader = ({
8093
8103
  };
8094
8104
 
8095
8105
  // src/components/Modal/ModalContent.tsx
8096
- var import_react34 = require("react");
8106
+ var import_react36 = require("react");
8097
8107
  var import_styled_components47 = __toESM(require("styled-components"));
8098
8108
  var import_react_dialog3 = require("@radix-ui/react-dialog");
8099
8109
 
8100
8110
  // src/private/hooks/useFocusRestore/useFocusRestore.ts
8101
- var import_react33 = require("react");
8111
+ var import_react35 = require("react");
8102
8112
  var import_type_guards27 = require("@wistia/type-guards");
8103
8113
  var useFocusRestore = () => {
8104
- const previouslyFocusedRef = (0, import_react33.useRef)(null);
8105
- (0, import_react33.useEffect)(() => {
8114
+ const previouslyFocusedRef = (0, import_react35.useRef)(null);
8115
+ (0, import_react35.useEffect)(() => {
8106
8116
  previouslyFocusedRef.current = document.activeElement;
8107
8117
  }, []);
8108
- (0, import_react33.useEffect)(() => {
8118
+ (0, import_react35.useEffect)(() => {
8109
8119
  return () => {
8110
8120
  if ((0, import_type_guards27.isNotNil)(previouslyFocusedRef.current)) {
8111
8121
  setTimeout(() => {
@@ -8158,7 +8168,7 @@ var StyledModalContent = (0, import_styled_components47.default)(import_react_di
8158
8168
  }
8159
8169
  }
8160
8170
  `;
8161
- var ModalContent = (0, import_react34.forwardRef)(
8171
+ var ModalContent = (0, import_react36.forwardRef)(
8162
8172
  ({ fullHeight, width, children, ...otherProps }, ref) => {
8163
8173
  useFocusRestore();
8164
8174
  return /* @__PURE__ */ (0, import_jsx_runtime199.jsx)(
@@ -8175,7 +8185,7 @@ var ModalContent = (0, import_react34.forwardRef)(
8175
8185
  );
8176
8186
 
8177
8187
  // src/private/components/Backdrop/Backdrop.tsx
8178
- var import_react35 = require("react");
8188
+ var import_react37 = require("react");
8179
8189
  var import_styled_components48 = __toESM(require("styled-components"));
8180
8190
  var import_jsx_runtime200 = require("react/jsx-runtime");
8181
8191
  var backdropAnimationDuration = 150;
@@ -8213,7 +8223,7 @@ var BackdropComponent = import_styled_components48.default.div`
8213
8223
  }
8214
8224
  }
8215
8225
  `;
8216
- var Backdrop = (0, import_react35.forwardRef)(
8226
+ var Backdrop = (0, import_react37.forwardRef)(
8217
8227
  ({ alignHorizontal = "center", alignVertical = "center", children, ...otherProps }, ref) => /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(
8218
8228
  BackdropComponent,
8219
8229
  {
@@ -8234,7 +8244,7 @@ var ModalBody = import_styled_components49.default.div`
8234
8244
  display: flex;
8235
8245
  order: 2;
8236
8246
  `;
8237
- var Modal = (0, import_react36.forwardRef)(
8247
+ var Modal = (0, import_react38.forwardRef)(
8238
8248
  ({
8239
8249
  children,
8240
8250
  fullHeight = false,
@@ -8295,7 +8305,7 @@ var Modal = (0, import_react36.forwardRef)(
8295
8305
  Modal.displayName = "Modal";
8296
8306
 
8297
8307
  // src/components/Radio/Radio.tsx
8298
- var import_react37 = require("react");
8308
+ var import_react39 = require("react");
8299
8309
  var import_styled_components50 = __toESM(require("styled-components"));
8300
8310
  var import_type_guards29 = require("@wistia/type-guards");
8301
8311
  var import_jsx_runtime202 = require("react/jsx-runtime");
@@ -8369,7 +8379,7 @@ var StyledRadioWrapper = import_styled_components50.default.div`
8369
8379
 
8370
8380
  ${({ disabled }) => disabled && disabledStyle2};
8371
8381
  `;
8372
- var Radio = (0, import_react37.forwardRef)(
8382
+ var Radio = (0, import_react39.forwardRef)(
8373
8383
  ({
8374
8384
  checked,
8375
8385
  disabled = false,
@@ -8382,7 +8392,7 @@ var Radio = (0, import_react37.forwardRef)(
8382
8392
  value = "false",
8383
8393
  ...otherProps
8384
8394
  }, ref) => {
8385
- const generatedId = (0, import_react37.useId)();
8395
+ const generatedId = (0, import_react39.useId)();
8386
8396
  const computedId = (0, import_type_guards29.isNonEmptyString)(id) ? id : `ui-radio-${generatedId}`;
8387
8397
  return /* @__PURE__ */ (0, import_jsx_runtime202.jsxs)(
8388
8398
  StyledRadioWrapper,
@@ -8425,7 +8435,7 @@ var Radio = (0, import_react37.forwardRef)(
8425
8435
  Radio.displayName = "Radio";
8426
8436
 
8427
8437
  // src/components/Tag/Tag.tsx
8428
- var import_react38 = require("react");
8438
+ var import_react40 = require("react");
8429
8439
  var import_styled_components51 = __toESM(require("styled-components"));
8430
8440
  var import_type_guards30 = require("@wistia/type-guards");
8431
8441
  var import_jsx_runtime203 = require("react/jsx-runtime");
@@ -8531,7 +8541,7 @@ var RemoveButton = ({ onClickRemove, onClickRemoveLabel, colorScheme }) => {
8531
8541
  )
8532
8542
  ] });
8533
8543
  };
8534
- var Tag = (0, import_react38.forwardRef)(
8544
+ var Tag = (0, import_react40.forwardRef)(
8535
8545
  ({ onClickRemove, colorScheme = "inherit", href, label, onClickRemoveLabel, ...otherProps }, ref) => {
8536
8546
  const labelProps = (0, import_type_guards30.isNotNil)(href) && (0, import_type_guards30.isNonEmptyString)(href) ? { href, as: "a" } : { as: "span" };
8537
8547
  return /* @__PURE__ */ (0, import_jsx_runtime203.jsxs)(