@wistia/ui 0.6.40 → 0.6.41-beta.6ac76817.3cea22c

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.6.40
3
+ * @license @wistia/ui v0.6.41-beta.6ac76817.3cea22c
4
4
  *
5
5
  * Copyright (c) 2024-2025, Wistia, Inc. and its affiliates.
6
6
  *
@@ -110,6 +110,8 @@ __export(index_exports, {
110
110
  Tabs: () => Tabs,
111
111
  Tag: () => Tag,
112
112
  Text: () => Text,
113
+ Thumbnail: () => Thumbnail,
114
+ ThumbnailBadge: () => ThumbnailBadge,
113
115
  Tooltip: () => Tooltip,
114
116
  UIProvider: () => UIProvider,
115
117
  WistiaLogo: () => WistiaLogo,
@@ -10754,10 +10756,12 @@ var StyledContent2 = (0, import_styled_components63.default)(import_react_popove
10754
10756
  ${({ $unstyled }) => !$unstyled && import_styled_components63.css`
10755
10757
  border-radius: var(--wui-border-radius-02);
10756
10758
  padding: var(--wui-space-04);
10757
- max-width: 320px;
10759
+ max-width: var(--wui-popover-max-width, 320px);
10760
+ max-height: var(--wui-popover-max-height, auto);
10758
10761
  background-color: var(--wui-color-bg-surface);
10759
10762
  box-shadow: var(--wui-elevation-01);
10760
10763
  border: 1px solid var(--wui-color-border);
10764
+ overflow: auto;
10761
10765
  `}
10762
10766
 
10763
10767
  [data-wui-popover-close] {
@@ -10771,10 +10775,16 @@ var Popover = ({
10771
10775
  trigger,
10772
10776
  isOpen = false,
10773
10777
  hideCloseButton = false,
10778
+ maxWidth = "320px",
10779
+ maxHeight = "auto",
10774
10780
  onOpenChange,
10775
10781
  unstyled = false,
10776
10782
  ...props
10777
10783
  }) => {
10784
+ const style = {
10785
+ "--wui-popover-max-width": maxWidth,
10786
+ "--wui-popover-max-height": maxHeight
10787
+ };
10778
10788
  return /* @__PURE__ */ (0, import_jsx_runtime244.jsxs)(import_react_popover.Root, { ...getControlProps(isOpen, onOpenChange), children: [
10779
10789
  /* @__PURE__ */ (0, import_jsx_runtime244.jsx)(import_react_popover.Trigger, { asChild: true, children: trigger }),
10780
10790
  /* @__PURE__ */ (0, import_jsx_runtime244.jsx)(import_react_popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime244.jsxs)(
@@ -10783,6 +10793,7 @@ var Popover = ({
10783
10793
  sideOffset: 8,
10784
10794
  ...props,
10785
10795
  $unstyled: unstyled,
10796
+ style,
10786
10797
  children: [
10787
10798
  !hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime244.jsx)(import_react_popover.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime244.jsx)(
10788
10799
  IconButton,
@@ -11049,42 +11060,47 @@ var Radio = (0, import_react48.forwardRef)(
11049
11060
  Radio.displayName = "Radio";
11050
11061
 
11051
11062
  // src/components/SegmentedControl/SegmentedControl.tsx
11052
- var import_react52 = require("react");
11063
+ var import_react51 = require("react");
11053
11064
  var import_styled_components67 = __toESM(require("styled-components"));
11054
11065
  var import_react_toggle_group = require("@radix-ui/react-toggle-group");
11055
11066
  var import_type_guards41 = require("@wistia/type-guards");
11056
11067
 
11057
- // src/components/SegmentedControl/useSelectedItemMeasurements.tsx
11068
+ // src/components/SegmentedControl/useSelectedItemStyle.tsx
11058
11069
  var import_react49 = require("react");
11059
11070
  var import_jsx_runtime247 = require("react/jsx-runtime");
11060
- var SelectedItemMeasurementsContext = (0, import_react49.createContext)(
11061
- null
11062
- );
11063
- var SelectedItemMeasurementsProvider = ({
11071
+ var SelectedItemStyleContext = (0, import_react49.createContext)(null);
11072
+ var SelectedItemStyleProvider = ({
11064
11073
  children
11065
11074
  }) => {
11066
11075
  const [selectedItemMeasurements, setSelectedItemMeasurements] = (0, import_react49.useState)(null);
11076
+ const selectedItemIndicatorStyle = (0, import_react49.useMemo)(
11077
+ () => selectedItemMeasurements != null ? {
11078
+ height: `${selectedItemMeasurements.offsetHeight}px`,
11079
+ transform: `translateX(${selectedItemMeasurements.offsetLeft}px) translateY(-50%)`,
11080
+ width: `${selectedItemMeasurements.offsetWidth}px`
11081
+ } : {
11082
+ transform: "translateY(-50%)"
11083
+ },
11084
+ [selectedItemMeasurements]
11085
+ );
11067
11086
  const contextValue = (0, import_react49.useMemo)(
11068
11087
  () => ({
11069
11088
  setSelectedItemMeasurements,
11070
- selectedItemMeasurements
11089
+ selectedItemIndicatorStyle
11071
11090
  }),
11072
- [selectedItemMeasurements]
11091
+ [selectedItemIndicatorStyle]
11073
11092
  );
11074
- return /* @__PURE__ */ (0, import_jsx_runtime247.jsx)(SelectedItemMeasurementsContext.Provider, { value: contextValue, children });
11093
+ return /* @__PURE__ */ (0, import_jsx_runtime247.jsx)(SelectedItemStyleContext.Provider, { value: contextValue, children });
11075
11094
  };
11076
- var useSelectedItemMeasurements = () => {
11077
- const context = (0, import_react49.useContext)(SelectedItemMeasurementsContext);
11095
+ var useSelectedItemStyle = () => {
11096
+ const context = (0, import_react49.useContext)(SelectedItemStyleContext);
11078
11097
  if (context === null) {
11079
- throw new Error(
11080
- "useSelectedItemMeasurements must be used within a SelectedItemMeasurementsProvider"
11081
- );
11098
+ throw new Error("useSelectedItemStyle must be used within a SelectedItemStyleProvider");
11082
11099
  }
11083
11100
  return context;
11084
11101
  };
11085
11102
 
11086
11103
  // src/components/SegmentedControl/SelectedItemIndicator.tsx
11087
- var import_react51 = require("react");
11088
11104
  var import_styled_components66 = __toESM(require("styled-components"));
11089
11105
 
11090
11106
  // src/components/SegmentedControl/useSegmentedControlValue.tsx
@@ -11106,7 +11122,7 @@ var SelectedItemIndicatorDiv = import_styled_components66.default.div`
11106
11122
  border-radius: var(--wui-border-radius-rounded);
11107
11123
  left: 0;
11108
11124
  position: absolute;
11109
- top: 0;
11125
+ top: 50%;
11110
11126
  box-shadow: var(--wui-elevation-01);
11111
11127
  transition:
11112
11128
  transform var(--wui-motion-duration-02) var(--wui-motion-ease-out),
@@ -11115,28 +11131,11 @@ var SelectedItemIndicatorDiv = import_styled_components66.default.div`
11115
11131
  `;
11116
11132
  var SelectedItemIndicator = () => {
11117
11133
  const selectedValue = useSegmentedControlValue();
11118
- const { selectedItemMeasurements } = useSelectedItemMeasurements();
11119
- const selectedItemIndicatorStyle = (0, import_react51.useMemo)(
11120
- () => selectedItemMeasurements != null ? {
11121
- height: `${selectedItemMeasurements.offsetHeight}px`,
11122
- transform: `translateX(${selectedItemMeasurements.offsetLeft}px)`,
11123
- width: `${selectedItemMeasurements.offsetWidth}px`
11124
- } : {},
11125
- [selectedItemMeasurements]
11126
- );
11134
+ const { selectedItemIndicatorStyle } = useSelectedItemStyle();
11127
11135
  if (!selectedValue) {
11128
11136
  return null;
11129
11137
  }
11130
- return /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(
11131
- SelectedItemIndicatorDiv,
11132
- {
11133
- style: {
11134
- width: selectedItemIndicatorStyle.width,
11135
- transform: selectedItemIndicatorStyle.transform,
11136
- height: selectedItemIndicatorStyle.height
11137
- }
11138
- }
11139
- );
11138
+ return /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(SelectedItemIndicatorDiv, { style: selectedItemIndicatorStyle });
11140
11139
  };
11141
11140
 
11142
11141
  // src/components/SegmentedControl/SegmentedControl.tsx
@@ -11145,16 +11144,17 @@ var segmentedControlStyles = import_styled_components67.css`
11145
11144
  display: inline-flex;
11146
11145
  background-color: var(--wui-color-bg-surface-secondary);
11147
11146
  border-radius: var(--wui-border-radius-rounded);
11148
- border: 2px solid var(--wui-color-bg-surface-secondary);
11149
11147
  gap: var(--wui-space-01);
11150
11148
  isolation: isolate;
11149
+ overflow: hidden;
11150
+ padding: 2px;
11151
11151
  position: relative;
11152
11152
  width: ${({ $fullWidth }) => $fullWidth ? "100%" : "auto"};
11153
11153
  `;
11154
11154
  var StyledSegmentedControl = (0, import_styled_components67.default)(import_react_toggle_group.Root)`
11155
11155
  ${segmentedControlStyles}
11156
11156
  `;
11157
- var SegmentedControl = (0, import_react52.forwardRef)(
11157
+ var SegmentedControl = (0, import_react51.forwardRef)(
11158
11158
  ({
11159
11159
  children,
11160
11160
  disabled = false,
@@ -11178,7 +11178,7 @@ var SegmentedControl = (0, import_react52.forwardRef)(
11178
11178
  type: "single",
11179
11179
  value: selectedValue,
11180
11180
  ...props,
11181
- children: /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(SegmentedControlValueProvider, { value: selectedValue, children: /* @__PURE__ */ (0, import_jsx_runtime249.jsxs)(SelectedItemMeasurementsProvider, { children: [
11181
+ children: /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(SegmentedControlValueProvider, { value: selectedValue, children: /* @__PURE__ */ (0, import_jsx_runtime249.jsxs)(SelectedItemStyleProvider, { children: [
11182
11182
  /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(SelectedItemIndicator, {}),
11183
11183
  children
11184
11184
  ] }) })
@@ -11189,7 +11189,7 @@ var SegmentedControl = (0, import_react52.forwardRef)(
11189
11189
  SegmentedControl.displayName = "SegmentedControl";
11190
11190
 
11191
11191
  // src/components/SegmentedControl/SegmentedControlItem.tsx
11192
- var import_react53 = require("react");
11192
+ var import_react52 = require("react");
11193
11193
  var import_styled_components68 = __toESM(require("styled-components"));
11194
11194
  var import_react_toggle_group2 = require("@radix-ui/react-toggle-group");
11195
11195
  var import_type_guards42 = require("@wistia/type-guards");
@@ -11257,11 +11257,11 @@ var segmentedControlItemStyles = import_styled_components68.css`
11257
11257
  var StyledSegmentedControlItem = (0, import_styled_components68.default)(import_react_toggle_group2.Item)`
11258
11258
  ${segmentedControlItemStyles}
11259
11259
  `;
11260
- var SegmentedControlItem = (0, import_react53.forwardRef)(
11260
+ var SegmentedControlItem = (0, import_react52.forwardRef)(
11261
11261
  ({ disabled, icon, label, "aria-label": ariaLabel, value }, forwardedRef) => {
11262
11262
  const selectedValue = useSegmentedControlValue();
11263
- const { setSelectedItemMeasurements } = useSelectedItemMeasurements();
11264
- const buttonRef = (0, import_react53.useRef)(null);
11263
+ const { setSelectedItemMeasurements } = useSelectedItemStyle();
11264
+ const buttonRef = (0, import_react52.useRef)(null);
11265
11265
  const combinedRef = mergeRefs([buttonRef, forwardedRef]);
11266
11266
  const handleClick = (event) => {
11267
11267
  const target = event.target;
@@ -11270,7 +11270,7 @@ var SegmentedControlItem = (0, import_react53.forwardRef)(
11270
11270
  event.preventDefault();
11271
11271
  }
11272
11272
  };
11273
- (0, import_react53.useEffect)(() => {
11273
+ (0, import_react52.useEffect)(() => {
11274
11274
  const buttonElem = buttonRef.current;
11275
11275
  if (!buttonElem) {
11276
11276
  return void 0;
@@ -11316,7 +11316,7 @@ SegmentedControlItem.displayName = "SegmentedControlItem";
11316
11316
 
11317
11317
  // src/components/Select/Select.tsx
11318
11318
  var import_react_select = require("@radix-ui/react-select");
11319
- var import_react54 = require("react");
11319
+ var import_react53 = require("react");
11320
11320
  var import_styled_components69 = __toESM(require("styled-components"));
11321
11321
  var import_jsx_runtime251 = require("react/jsx-runtime");
11322
11322
  var StyledTrigger = (0, import_styled_components69.default)(import_react_select.Trigger)`
@@ -11385,7 +11385,7 @@ var StyledContent3 = (0, import_styled_components69.default)(import_react_select
11385
11385
  max-height: var(--radix-select-content-available-height);
11386
11386
  z-index: var(--wui-zindex-select);
11387
11387
  `;
11388
- var Select = (0, import_react54.forwardRef)(
11388
+ var Select = (0, import_react53.forwardRef)(
11389
11389
  ({
11390
11390
  colorScheme = "inherit",
11391
11391
  children,
@@ -11434,7 +11434,7 @@ Select.displayName = "Select";
11434
11434
 
11435
11435
  // src/components/Select/SelectOption.tsx
11436
11436
  var import_react_select2 = require("@radix-ui/react-select");
11437
- var import_react55 = require("react");
11437
+ var import_react54 = require("react");
11438
11438
  var import_styled_components70 = __toESM(require("styled-components"));
11439
11439
  var import_jsx_runtime252 = require("react/jsx-runtime");
11440
11440
  var StyledItem = (0, import_styled_components70.default)(import_react_select2.Item)`
@@ -11463,7 +11463,7 @@ var StyledItem = (0, import_styled_components70.default)(import_react_select2.It
11463
11463
  var StyledIconContainer = import_styled_components70.default.span`
11464
11464
  width: 12px;
11465
11465
  `;
11466
- var SelectOption = (0, import_react55.forwardRef)(
11466
+ var SelectOption = (0, import_react54.forwardRef)(
11467
11467
  ({ children, ...props }, forwardedRef) => {
11468
11468
  return /* @__PURE__ */ (0, import_jsx_runtime252.jsxs)(
11469
11469
  StyledItem,
@@ -11508,7 +11508,7 @@ var SelectOptionGroup = ({ children, label, ...props }) => {
11508
11508
  };
11509
11509
 
11510
11510
  // src/components/Switch/Switch.tsx
11511
- var import_react56 = require("react");
11511
+ var import_react55 = require("react");
11512
11512
  var import_styled_components72 = __toESM(require("styled-components"));
11513
11513
  var import_type_guards43 = require("@wistia/type-guards");
11514
11514
  var import_jsx_runtime254 = require("react/jsx-runtime");
@@ -11613,7 +11613,7 @@ var StyledHiddenSwitchInput = import_styled_components72.default.input`
11613
11613
  }
11614
11614
  }
11615
11615
  `;
11616
- var Switch = (0, import_react56.forwardRef)(
11616
+ var Switch = (0, import_react55.forwardRef)(
11617
11617
  ({
11618
11618
  checked,
11619
11619
  disabled = false,
@@ -11628,7 +11628,7 @@ var Switch = (0, import_react56.forwardRef)(
11628
11628
  hideLabel = false,
11629
11629
  ...props
11630
11630
  }, ref) => {
11631
- const generatedId = (0, import_react56.useId)();
11631
+ const generatedId = (0, import_react55.useId)();
11632
11632
  const computedId = (0, import_type_guards43.isNonEmptyString)(id) ? id : `wistia-ui-switch-${generatedId}`;
11633
11633
  return /* @__PURE__ */ (0, import_jsx_runtime254.jsxs)(StyledSwitchWrapper, { $disabled: disabled, children: [
11634
11634
  /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(
@@ -11710,8 +11710,8 @@ var Table = ({
11710
11710
  var import_styled_components74 = __toESM(require("styled-components"));
11711
11711
 
11712
11712
  // src/components/Table/TableSectionContext.ts
11713
- var import_react57 = require("react");
11714
- var TableSectionContext = (0, import_react57.createContext)(null);
11713
+ var import_react56 = require("react");
11714
+ var TableSectionContext = (0, import_react56.createContext)(null);
11715
11715
 
11716
11716
  // src/components/Table/TableBody.tsx
11717
11717
  var import_jsx_runtime256 = require("react/jsx-runtime");
@@ -11721,7 +11721,7 @@ var TableBody = ({ children, ...props }) => {
11721
11721
  };
11722
11722
 
11723
11723
  // src/components/Table/TableCell.tsx
11724
- var import_react58 = require("react");
11724
+ var import_react57 = require("react");
11725
11725
  var import_styled_components75 = __toESM(require("styled-components"));
11726
11726
  var import_jsx_runtime257 = require("react/jsx-runtime");
11727
11727
  var sharedStyles = import_styled_components75.css`
@@ -11742,7 +11742,7 @@ var StyledTd = import_styled_components75.default.td`
11742
11742
  line-height: var(--wui-typography-body-2-line-height);
11743
11743
  `;
11744
11744
  var TableCell = ({ children, ...props }) => {
11745
- const section = (0, import_react58.useContext)(TableSectionContext);
11745
+ const section = (0, import_react57.useContext)(TableSectionContext);
11746
11746
  if (section === "head") {
11747
11747
  return /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(StyledTh, { ...props, children });
11748
11748
  }
@@ -11774,7 +11774,7 @@ var TableRow = ({ children, ...props }) => {
11774
11774
  };
11775
11775
 
11776
11776
  // src/components/Tabs/Tabs.tsx
11777
- var import_react63 = require("react");
11777
+ var import_react61 = require("react");
11778
11778
  var import_react_tabs4 = require("@radix-ui/react-tabs");
11779
11779
  var import_type_guards45 = require("@wistia/type-guards");
11780
11780
  var import_styled_components83 = __toESM(require("styled-components"));
@@ -11829,17 +11829,17 @@ var TabList = ({
11829
11829
  TabList.displayName = "TabList";
11830
11830
 
11831
11831
  // src/components/Tabs/TabItem.tsx
11832
- var import_react60 = require("react");
11832
+ var import_react59 = require("react");
11833
11833
  var import_styled_components81 = __toESM(require("styled-components"));
11834
11834
  var import_react_tabs3 = require("@radix-ui/react-tabs");
11835
11835
  var import_type_guards44 = require("@wistia/type-guards");
11836
11836
 
11837
11837
  // src/components/Tabs/useTabsValue.tsx
11838
- var import_react59 = require("react");
11839
- var TabsValueContext = (0, import_react59.createContext)(null);
11838
+ var import_react58 = require("react");
11839
+ var TabsValueContext = (0, import_react58.createContext)(null);
11840
11840
  var TabsValueProvider = TabsValueContext.Provider;
11841
11841
  var useTabsValue = () => {
11842
- const context = (0, import_react59.useContext)(TabsValueContext);
11842
+ const context = (0, import_react58.useContext)(TabsValueContext);
11843
11843
  if (context === null) {
11844
11844
  throw new Error("useTabsValue must be used within a TabsValueProvider");
11845
11845
  }
@@ -11855,13 +11855,13 @@ var StyledTabItem = (0, import_styled_components81.default)(import_react_tabs3.T
11855
11855
  outline: none;
11856
11856
  }
11857
11857
  `;
11858
- var TabItem = (0, import_react60.forwardRef)(
11858
+ var TabItem = (0, import_react59.forwardRef)(
11859
11859
  ({ disabled = false, icon, label, "aria-label": ariaLabel, value }, forwardedRef) => {
11860
11860
  const selectedValue = useTabsValue();
11861
- const { setSelectedItemMeasurements } = useSelectedItemMeasurements();
11862
- const buttonRef = (0, import_react60.useRef)(null);
11861
+ const { setSelectedItemMeasurements } = useSelectedItemStyle();
11862
+ const buttonRef = (0, import_react59.useRef)(null);
11863
11863
  const combinedRef = mergeRefs([buttonRef, forwardedRef]);
11864
- (0, import_react60.useEffect)(() => {
11864
+ (0, import_react59.useEffect)(() => {
11865
11865
  const buttonElem = buttonRef.current;
11866
11866
  if (!buttonElem) {
11867
11867
  return void 0;
@@ -11905,16 +11905,16 @@ var TabItem = (0, import_react60.forwardRef)(
11905
11905
  TabItem.displayName = "TabItem";
11906
11906
 
11907
11907
  // src/components/Tabs/extractTabItems.ts
11908
- var import_react61 = require("react");
11908
+ var import_react60 = require("react");
11909
11909
  var extractTabItems = (children) => {
11910
11910
  const tabItems = [];
11911
- import_react61.Children.forEach(children, (child) => {
11912
- if (!(0, import_react61.isValidElement)(child)) {
11911
+ import_react60.Children.forEach(children, (child) => {
11912
+ if (!(0, import_react60.isValidElement)(child)) {
11913
11913
  return;
11914
11914
  }
11915
11915
  if (typeof child.type !== "string" && child.type.displayName === "Tab") {
11916
11916
  tabItems.push(child);
11917
- } else if (child.type === import_react61.Fragment) {
11917
+ } else if (child.type === import_react60.Fragment) {
11918
11918
  const fragmentElement = child;
11919
11919
  tabItems.push(...extractTabItems(fragmentElement.props.children));
11920
11920
  } else if ((child.props.children ?? null) != null) {
@@ -11927,7 +11927,6 @@ var extractTabItems = (children) => {
11927
11927
  };
11928
11928
 
11929
11929
  // src/components/Tabs/SelectedItemIndicator.tsx
11930
- var import_react62 = require("react");
11931
11930
  var import_styled_components82 = __toESM(require("styled-components"));
11932
11931
  var import_jsx_runtime264 = require("react/jsx-runtime");
11933
11932
  var TabsSelectedItemIndicatorDiv = (0, import_styled_components82.default)(SelectedItemIndicatorDiv)`
@@ -11936,29 +11935,12 @@ var TabsSelectedItemIndicatorDiv = (0, import_styled_components82.default)(Selec
11936
11935
  }
11937
11936
  `;
11938
11937
  var SelectedItemIndicator2 = () => {
11939
- const { selectedItemMeasurements } = useSelectedItemMeasurements();
11938
+ const { selectedItemIndicatorStyle } = useSelectedItemStyle();
11940
11939
  const selectedValue = useTabsValue();
11941
- const selectedItemIndicatorStyle = (0, import_react62.useMemo)(
11942
- () => selectedItemMeasurements != null ? {
11943
- height: `${selectedItemMeasurements.offsetHeight}px`,
11944
- transform: `translateX(${selectedItemMeasurements.offsetLeft}px)`,
11945
- width: `${selectedItemMeasurements.offsetWidth}px`
11946
- } : {},
11947
- [selectedItemMeasurements]
11948
- );
11949
11940
  if (selectedValue == null) {
11950
11941
  return null;
11951
11942
  }
11952
- return /* @__PURE__ */ (0, import_jsx_runtime264.jsx)(
11953
- TabsSelectedItemIndicatorDiv,
11954
- {
11955
- style: {
11956
- width: selectedItemIndicatorStyle.width,
11957
- transform: selectedItemIndicatorStyle.transform,
11958
- height: selectedItemIndicatorStyle.height
11959
- }
11960
- }
11961
- );
11943
+ return /* @__PURE__ */ (0, import_jsx_runtime264.jsx)(TabsSelectedItemIndicatorDiv, { style: selectedItemIndicatorStyle });
11962
11944
  };
11963
11945
 
11964
11946
  // src/components/Tabs/Tabs.tsx
@@ -11979,7 +11961,7 @@ var StyledTabsRoot = (0, import_styled_components83.default)(import_react_tabs4.
11979
11961
  flex-direction: column;
11980
11962
  height: ${({ $stickyHeaders }) => $stickyHeaders ? "100%" : "auto"};
11981
11963
  `;
11982
- var Tabs = (0, import_react63.forwardRef)(
11964
+ var Tabs = (0, import_react61.forwardRef)(
11983
11965
  ({
11984
11966
  children,
11985
11967
  fullWidth = true,
@@ -11991,7 +11973,7 @@ var Tabs = (0, import_react63.forwardRef)(
11991
11973
  ...otherProps
11992
11974
  }, ref) => {
11993
11975
  const tabItems = extractTabItems(children);
11994
- const [internalSelectedValue, setInternalSelectedValue] = (0, import_react63.useState)(defaultSelectedValue);
11976
+ const [internalSelectedValue, setInternalSelectedValue] = (0, import_react61.useState)(defaultSelectedValue);
11995
11977
  const modeProps = defaultSelectedValue !== void 0 ? {
11996
11978
  defaultValue: defaultSelectedValue,
11997
11979
  onValueChange: setInternalSelectedValue
@@ -12005,7 +11987,7 @@ var Tabs = (0, import_react63.forwardRef)(
12005
11987
  activationMode: "automatic",
12006
11988
  ...otherProps,
12007
11989
  ...modeProps,
12008
- children: /* @__PURE__ */ (0, import_jsx_runtime265.jsx)(TabsValueProvider, { value: currentValue, children: /* @__PURE__ */ (0, import_jsx_runtime265.jsxs)(SelectedItemMeasurementsProvider, { children: [
11990
+ children: /* @__PURE__ */ (0, import_jsx_runtime265.jsx)(TabsValueProvider, { value: currentValue, children: /* @__PURE__ */ (0, import_jsx_runtime265.jsxs)(SelectedItemStyleProvider, { children: [
12009
11991
  /* @__PURE__ */ (0, import_jsx_runtime265.jsxs)(
12010
11992
  TabList,
12011
11993
  {
@@ -12077,15 +12059,15 @@ var Tabs = (0, import_react63.forwardRef)(
12077
12059
  Tabs.displayName = "Tabs";
12078
12060
 
12079
12061
  // src/components/Tabs/Tab.tsx
12080
- var import_react64 = require("react");
12062
+ var import_react62 = require("react");
12081
12063
  var import_jsx_runtime266 = require("react/jsx-runtime");
12082
- var Tab = (0, import_react64.forwardRef)(({ children }, ref) => {
12064
+ var Tab = (0, import_react62.forwardRef)(({ children }, ref) => {
12083
12065
  return /* @__PURE__ */ (0, import_jsx_runtime266.jsx)("div", { ref, children });
12084
12066
  });
12085
12067
  Tab.displayName = "Tab";
12086
12068
 
12087
12069
  // src/components/Tag/Tag.tsx
12088
- var import_react65 = require("react");
12070
+ var import_react63 = require("react");
12089
12071
  var import_styled_components84 = __toESM(require("styled-components"));
12090
12072
  var import_type_guards46 = require("@wistia/type-guards");
12091
12073
  var import_jsx_runtime267 = require("react/jsx-runtime");
@@ -12202,7 +12184,7 @@ var RemoveButton = ({ onClickRemove, onClickRemoveLabel, colorScheme }) => {
12202
12184
  )
12203
12185
  ] });
12204
12186
  };
12205
- var Tag = (0, import_react65.forwardRef)(
12187
+ var Tag = (0, import_react63.forwardRef)(
12206
12188
  ({
12207
12189
  onClickRemove,
12208
12190
  colorScheme = "inherit",
@@ -12371,6 +12353,257 @@ var WistiaLogo = ({
12371
12353
  return href !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime268.jsx)("a", { href, children: Logo }) : Logo;
12372
12354
  };
12373
12355
  WistiaLogo.displayName = "WistiaLogo";
12356
+
12357
+ // src/components/Thumbnail/ThumbnailBadge.tsx
12358
+ var import_styled_components86 = __toESM(require("styled-components"));
12359
+ var import_type_guards48 = require("@wistia/type-guards");
12360
+ var import_jsx_runtime269 = require("react/jsx-runtime");
12361
+ var StyledThumbnailBadge = import_styled_components86.default.div`
12362
+ align-items: center;
12363
+ background-color: rgb(0 0 0 / 50%);
12364
+ border-radius: var(--wui-border-radius-01);
12365
+ bottom: var(--wui-space-01);
12366
+ color: var(--wui-color-text-on-fill);
12367
+ display: flex;
12368
+ font-size: var(--wui-typography-body-4-size);
12369
+ font-weight: var(--wui-typography-weight-body-bold);
12370
+ gap: var(--wui-space-01);
12371
+ padding: 0 var(--wui-space-01);
12372
+ position: absolute;
12373
+ right: var(--wui-space-01);
12374
+ z-index: 1;
12375
+
12376
+ svg {
12377
+ height: 12px;
12378
+ width: 12px;
12379
+
12380
+ path {
12381
+ color: var(--wui-color-icon-on-fill);
12382
+ }
12383
+ }
12384
+ `;
12385
+ var ThumbnailBadge = ({
12386
+ icon,
12387
+ label,
12388
+ ...otherProps
12389
+ }) => {
12390
+ return /* @__PURE__ */ (0, import_jsx_runtime269.jsxs)(StyledThumbnailBadge, { ...otherProps, children: [
12391
+ (0, import_type_guards48.isNotNil)(icon) && icon,
12392
+ /* @__PURE__ */ (0, import_jsx_runtime269.jsx)("span", { children: label })
12393
+ ] });
12394
+ };
12395
+ ThumbnailBadge.displayName = "ThumbnailBadge";
12396
+
12397
+ // src/components/Thumbnail/Thumbnail.tsx
12398
+ var import_react64 = require("react");
12399
+ var import_styled_components88 = __toESM(require("styled-components"));
12400
+ var import_type_guards50 = require("@wistia/type-guards");
12401
+
12402
+ // src/private/helpers/getBackgroundGradient/getBackgroundGradient.ts
12403
+ var import_type_guards49 = require("@wistia/type-guards");
12404
+ var import_styled_components87 = require("styled-components");
12405
+ var gradients = {
12406
+ defaultDarkOne: import_styled_components87.css`
12407
+ background-color: #222d66;
12408
+ background-image:
12409
+ radial-gradient(farthest-corner at top right, #222d66, transparent 70%),
12410
+ radial-gradient(farthest-corner at bottom right, #2949e5, transparent 50%),
12411
+ radial-gradient(farthest-corner at bottom left, #6b84ff, transparent 57%),
12412
+ radial-gradient(farthest-corner at top left, #2949e5, transparent 68%);
12413
+ `,
12414
+ defaultDarkTwo: import_styled_components87.css`
12415
+ background-color: #222d66;
12416
+ background-image:
12417
+ radial-gradient(farthest-corner at top left, #6b84ff, transparent 100%),
12418
+ radial-gradient(farthest-corner at bottom left, #222d66, transparent 57%),
12419
+ radial-gradient(farthest-corner at bottom right, #2949e5, transparent 50%),
12420
+ radial-gradient(farthest-corner at top right, #2949e5, transparent 70%);
12421
+ `,
12422
+ defaultLightOne: import_styled_components87.css`
12423
+ background-color: #ccd5ff;
12424
+ background-image:
12425
+ radial-gradient(farthest-corner at bottom right, #ccd5ff, transparent 55%),
12426
+ radial-gradient(farthest-corner at top left, #ccd5ff, transparent 65%),
12427
+ radial-gradient(farthest-corner at top right, #6b84ff, transparent 50%),
12428
+ radial-gradient(farthest-corner at bottom left, #f7f8ff, transparent 50%);
12429
+ `,
12430
+ defaultLightTwo: import_styled_components87.css`
12431
+ background-color: #ccd5ff;
12432
+ background-image:
12433
+ radial-gradient(ellipse at top, #ccd5ff, transparent),
12434
+ radial-gradient(ellipse at bottom, #6b84ff, transparent);
12435
+ `,
12436
+ defaultMidOne: import_styled_components87.css`
12437
+ background-color: #6b84ff;
12438
+ background-image:
12439
+ radial-gradient(farthest-corner at top right, #2949e5, transparent 70%),
12440
+ radial-gradient(farthest-corner at bottom right, #2949e5, transparent 50%),
12441
+ radial-gradient(farthest-corner at top left, #6b84ff, transparent 80%),
12442
+ radial-gradient(farthest-corner at bottom left, #222d66, transparent 57%);
12443
+ `,
12444
+ defaultMidTwo: import_styled_components87.css`
12445
+ background-color: #6b84ff;
12446
+ background-image:
12447
+ radial-gradient(ellipse at top, #2949e5, transparent),
12448
+ radial-gradient(ellipse at bottom, #ccd5ff, transparent);
12449
+ `,
12450
+ green: import_styled_components87.css`
12451
+ background-color: #fafffa;
12452
+ background-image:
12453
+ radial-gradient(farthest-corner at bottom left, #b0e5a5, transparent 50%),
12454
+ radial-gradient(farthest-corner at top right, #268713, transparent 50%),
12455
+ radial-gradient(farthest-corner at top left, #44b62d, transparent 65%),
12456
+ radial-gradient(farthest-corner at bottom right, #44b62d, transparent 55%);
12457
+ `,
12458
+ greenWithPop: import_styled_components87.css`
12459
+ background-color: #fafffa;
12460
+ background-image:
12461
+ radial-gradient(farthest-corner at bottom left, #b0e5a5, transparent 50%),
12462
+ radial-gradient(farthest-corner at top right, #2949e5, transparent 50%),
12463
+ radial-gradient(farthest-corner at top left, #44b62d, transparent 65%),
12464
+ radial-gradient(farthest-corner at bottom right, #44b62d, transparent 55%);
12465
+ `,
12466
+ pink: import_styled_components87.css`
12467
+ background-color: #fffff0;
12468
+ background-image:
12469
+ radial-gradient(farthest-corner at bottom left, #ffc7e8, transparent 50%),
12470
+ radial-gradient(farthest-corner at top right, #e0128e, transparent 70%),
12471
+ radial-gradient(farthest-corner at top left, #ff40b3, transparent 65%),
12472
+ radial-gradient(farthest-corner at bottom right, #ff40b3, transparent 55%);
12473
+ `,
12474
+ pinkWithPop: import_styled_components87.css`
12475
+ background-color: #fffff0;
12476
+ background-image:
12477
+ radial-gradient(farthest-corner at top right, #e0128e, transparent 70%),
12478
+ radial-gradient(farthest-corner at top left, #ff40b3, transparent 65%),
12479
+ radial-gradient(farthest-corner at bottom right, #ff40b3, transparent 55%),
12480
+ radial-gradient(farthest-corner at bottom left, #2949e5, transparent 50%);
12481
+ `,
12482
+ playfulGradientOne: import_styled_components87.css`
12483
+ background-color: #f7f8ff;
12484
+ background-image:
12485
+ radial-gradient(farthest-corner at top left, #d65cff, transparent 68%),
12486
+ radial-gradient(farthest-corner at bottom right, #2949e5, transparent 50%),
12487
+ radial-gradient(farthest-corner at bottom left, #ffc7e8, transparent 57%),
12488
+ radial-gradient(farthest-corner at top right, #ffcaba, transparent 70%);
12489
+ `,
12490
+ playfulGradientTwo: import_styled_components87.css`
12491
+ background-color: #f7f8ff;
12492
+ background-image:
12493
+ radial-gradient(farthest-corner at top left, #44b62d, transparent 68%),
12494
+ radial-gradient(farthest-corner at bottom right, #eff18d, transparent 50%),
12495
+ radial-gradient(farthest-corner at bottom left, #ccd5ff, transparent 57%),
12496
+ radial-gradient(farthest-corner at top right, #2949e5, transparent 70%);
12497
+ `,
12498
+ purple: import_styled_components87.css`
12499
+ background-color: #f2caff;
12500
+ background-image:
12501
+ radial-gradient(ellipse at 0% 100%, #f9e5ff, transparent 50%),
12502
+ radial-gradient(ellipse at 100% 0%, #e093fa, transparent 70%);
12503
+ `,
12504
+ purpleWithPop: import_styled_components87.css`
12505
+ background-color: #f2caff;
12506
+ background-image:
12507
+ radial-gradient(farthest-corner at bottom left, #f2caff, transparent 50%),
12508
+ radial-gradient(farthest-corner at top left, #d65cff, transparent 65%),
12509
+ radial-gradient(farthest-corner at bottom right, #d65cff, transparent 55%),
12510
+ radial-gradient(farthest-corner at top right, #2949e5, transparent 70%);
12511
+ `,
12512
+ yellow: import_styled_components87.css`
12513
+ background-color: #fffff0;
12514
+ background-image:
12515
+ radial-gradient(farthest-corner at bottom left, #eff18d, transparent 50%),
12516
+ radial-gradient(farthest-corner at top right, #bcbf19, transparent 70%),
12517
+ radial-gradient(farthest-corner at top left, #e8ec1e, transparent 65%),
12518
+ radial-gradient(farthest-corner at bottom right, #e8ec1e, transparent 55%);
12519
+ `,
12520
+ yellowWithPop: import_styled_components87.css`
12521
+ background-color: #fffff0;
12522
+ background-image:
12523
+ radial-gradient(farthest-corner at bottom left, #eff18d, transparent 50%),
12524
+ radial-gradient(farthest-corner at top right, #bcbf19, transparent 70%),
12525
+ radial-gradient(farthest-corner at top left, #e8ec1e, transparent 65%),
12526
+ radial-gradient(farthest-corner at bottom right, #2949e5, transparent 55%);
12527
+ `
12528
+ };
12529
+ var gradientMap = Object.keys(gradients);
12530
+ var getBackgroundGradient = (gradientName = void 0) => {
12531
+ return (0, import_type_guards49.isNotNil)(gradientName) ? gradients[gradientName] : gradients.defaultDarkOne;
12532
+ };
12533
+
12534
+ // src/components/Thumbnail/Thumbnail.tsx
12535
+ var import_jsx_runtime270 = require("react/jsx-runtime");
12536
+ var WideThumbnailImage = import_styled_components88.default.img`
12537
+ height: 100%;
12538
+ object-fit: cover;
12539
+ width: 100%;
12540
+ `;
12541
+ var SquareThumbnailImage = import_styled_components88.default.img`
12542
+ backdrop-filter: blur(8px);
12543
+ object-fit: contain;
12544
+ width: 100%;
12545
+ `;
12546
+ var ThumbnailImage = ({ thumbnailImageType, thumbnailUrl }) => {
12547
+ if (thumbnailImageType === "wide") {
12548
+ return /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(
12549
+ WideThumbnailImage,
12550
+ {
12551
+ alt: "",
12552
+ src: thumbnailUrl
12553
+ }
12554
+ );
12555
+ }
12556
+ return /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(
12557
+ SquareThumbnailImage,
12558
+ {
12559
+ alt: "",
12560
+ src: thumbnailUrl
12561
+ }
12562
+ );
12563
+ };
12564
+ var StyledThumbnail = import_styled_components88.default.div`
12565
+ ${({ $gradientBackground }) => getBackgroundGradient($gradientBackground)};
12566
+ aspect-ratio: 16 / 9;
12567
+ background: ${({ $backgroundUrl }) => (0, import_type_guards50.isNotNil)($backgroundUrl) ? `url('${$backgroundUrl}') center / cover` : void 0};
12568
+ border-radius: 4px;
12569
+ display: flex;
12570
+ overflow: hidden;
12571
+ position: relative;
12572
+ width: ${({ $width }) => $width};
12573
+ `;
12574
+ var Thumbnail = (0, import_react64.forwardRef)(
12575
+ ({
12576
+ gradientBackground = "defaultMidOne",
12577
+ thumbnailImageType = "square",
12578
+ thumbnailUrl,
12579
+ width = "100%",
12580
+ children,
12581
+ ...otherProps
12582
+ }, ref) => {
12583
+ const backgroundUrl = thumbnailImageType === "square" && (0, import_type_guards50.isNotNil)(thumbnailUrl) ? thumbnailUrl : void 0;
12584
+ return /* @__PURE__ */ (0, import_jsx_runtime270.jsxs)(
12585
+ StyledThumbnail,
12586
+ {
12587
+ ref,
12588
+ $backgroundUrl: backgroundUrl,
12589
+ $gradientBackground: gradientBackground,
12590
+ $width: width,
12591
+ ...otherProps,
12592
+ children: [
12593
+ (0, import_type_guards50.isNotNil)(children) && children,
12594
+ (0, import_type_guards50.isNotNil)(thumbnailUrl) && /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(
12595
+ ThumbnailImage,
12596
+ {
12597
+ thumbnailImageType,
12598
+ thumbnailUrl
12599
+ }
12600
+ )
12601
+ ]
12602
+ }
12603
+ );
12604
+ }
12605
+ );
12606
+ Thumbnail.displayName = "Thumbnail";
12374
12607
  // Annotate the CommonJS export names for ESM import in node:
12375
12608
  0 && (module.exports = {
12376
12609
  ActionButton,
@@ -12444,6 +12677,8 @@ WistiaLogo.displayName = "WistiaLogo";
12444
12677
  Tabs,
12445
12678
  Tag,
12446
12679
  Text,
12680
+ Thumbnail,
12681
+ ThumbnailBadge,
12447
12682
  Tooltip,
12448
12683
  UIProvider,
12449
12684
  WistiaLogo,