@wistia/ui 0.6.40 → 0.6.41-beta.c3bbd05d.43de7c7

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.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  /*
3
- * @license @wistia/ui v0.6.40
3
+ * @license @wistia/ui v0.6.41-beta.c3bbd05d.43de7c7
4
4
  *
5
5
  * Copyright (c) 2024-2025, Wistia, Inc. and its affiliates.
6
6
  *
@@ -1110,6 +1110,7 @@ var colorAliasTokens = css3`
1110
1110
  /* --- Misc --- */
1111
1111
  --wui-color-bg-fill-white: #ffffff;
1112
1112
  --wui-color-focus-color: var(--wui-blue-9);
1113
+ --wui-color-invalid-indicator: var(--wui-error-9);
1113
1114
  --wui-color-notification-pill-color: var(--wui-pink-9);
1114
1115
  --wui-color-backdrop: var(--wui-gray-alpha-9);
1115
1116
  --wui-color-segmented-control-checked-background: var(--wui-bg-app);
@@ -1121,7 +1122,7 @@ var colorAliasTokens = css3`
1121
1122
 
1122
1123
  /* Disabled */
1123
1124
  --wui-color-bg-surface-disabled: var(--wui-gray-3);
1124
- --wui-color-bg-border-disabled: var(--wui-gray-4);
1125
+ --wui-color-border-disabled: var(--wui-gray-4);
1125
1126
  --wui-color-icon-disabled: var(--wui-gray-8);
1126
1127
  --wui-color-text-disabled: var(--wui-gray-10);
1127
1128
  --wui-color-focus-ring-disabled: var(--wui-gray-6);
@@ -8104,7 +8105,7 @@ var StyledCheckboxInput = styled19.div`
8104
8105
  align-self: flex-start;
8105
8106
  border-width: 1px;
8106
8107
  border-style: solid;
8107
- border-color: ${({ $disabled }) => $disabled ? "var(--wui-color-bg-border-disabled)" : "var(--wui-color-border)"};
8108
+ border-color: ${({ $disabled }) => $disabled ? "var(--wui-color-border-disabled)" : "var(--wui-color-border)"};
8108
8109
  background-color: ${({ $disabled }) => $disabled ? "var(--wui-color-bg-surface-disabled)" : "var(--wui-color-bg-surface)"};
8109
8110
 
8110
8111
  /* checkmark icon */
@@ -8811,7 +8812,7 @@ var Divider = ({
8811
8812
  Divider.displayName = "Divider";
8812
8813
 
8813
8814
  // src/components/EditableHeading/EditableHeading.tsx
8814
- import styled30, { css as css26 } from "styled-components";
8815
+ import styled30, { css as css27 } from "styled-components";
8815
8816
  import { useState as useState6, useRef as useRef5 } from "react";
8816
8817
 
8817
8818
  // src/components/Tooltip/Tooltip.tsx
@@ -8928,29 +8929,43 @@ Tooltip.displayName = "Tooltip";
8928
8929
 
8929
8930
  // src/components/Input/Input.tsx
8930
8931
  import { forwardRef as forwardRef10, cloneElement as cloneElement4, useRef as useRef4 } from "react";
8931
- import styled29, { css as css25 } from "styled-components";
8932
+ import styled29, { css as css26 } from "styled-components";
8932
8933
  import { isNil as isNil13, isNotNil as isNotNil12, isRecord as isRecord4 } from "@wistia/type-guards";
8933
- import { jsx as jsx218, jsxs as jsxs19 } from "react/jsx-runtime";
8934
- var inputStyles = css25`
8934
+
8935
+ // src/css/sharedStyles/inputCssVariables.ts
8936
+ import { css as css25 } from "styled-components";
8937
+ var inputCssVariables = css25`
8935
8938
  --wui-input-color-bg: var(--wui-color-bg-surface);
8936
8939
  --wui-input-color-bg-disabled: var(--wui-color-bg-surface-disabled);
8937
- --wui-input-color-border: var(--wui-color-border);
8938
- --wui-input-color-border-focus: var(--wui-color-border-active);
8939
- --wui-input-color-border-error: var(--wui-color-border-error);
8940
+ --wui-input-color-border: var(--wui-color-border-secondary);
8941
+ --wui-input-color-border-focus: var(--wui-color-focus-ring);
8942
+ --wui-input-color-border-error: var(--wui-color-invalid-indicator);
8940
8943
  --wui-input-color-border-disabled: var(--wui-color-border-disabled);
8941
- --wui-input-border-radius: var(--wui-border-radius-rounded);
8944
+ --wui-input-border-radius: var(--wui-border-radius-03);
8942
8945
  --wui-input-multiline-border-radius: var(--wui-border-radius-02);
8943
8946
  --wui-input-vertical-padding: var(--wui-space-02);
8944
8947
  --wui-input-horizontal-padding: var(--wui-space-03);
8945
8948
  --wui-input-placeholder: var(--wui-gray-10);
8946
- --wui-input-color-text-error: var(--wui-color-text-error);
8949
+ --wui-input-font-size: var(--wui-typography-body-3-size);
8950
+ --wui-input-line-height: 16px;
8951
+ `;
8947
8952
 
8953
+ // src/components/Input/Input.tsx
8954
+ import { jsx as jsx218, jsxs as jsxs19 } from "react/jsx-runtime";
8955
+ var inputStyles = css26`
8956
+ ${inputCssVariables}
8948
8957
  input,
8949
8958
  textarea {
8950
8959
  padding: var(--wui-input-vertical-padding) var(--wui-input-horizontal-padding);
8951
8960
  background-color: var(--wui-input-color-bg);
8952
- border: 1px solid var(--wui-input-color-border);
8961
+ border: none;
8962
+ outline: 1px solid var(--wui-input-color-border);
8963
+ outline-offset: -1px;
8953
8964
  border-radius: var(--wui-input-border-radius);
8965
+ font-size: var(--wui-input-font-size);
8966
+ line-height: var(--wui-input-line-height);
8967
+ font-weight: var(--wui-typography-weight-body);
8968
+ color: var(--wui-color-text-primary);
8954
8969
 
8955
8970
  &::placeholder {
8956
8971
  color: var(--wui-input-placeholder);
@@ -8958,16 +8973,16 @@ var inputStyles = css25`
8958
8973
  }
8959
8974
 
8960
8975
  &:focus {
8961
- border-color: var(--wui-input-color-border-focus);
8976
+ outline: 2px solid var(--wui-input-color-border-focus);
8977
+ outline-offset: -2px;
8962
8978
  }
8963
8979
 
8964
8980
  &[aria-invalid='true'] {
8965
- border-color: var(--wui-input-color-border-error);
8966
- color: var(--wui-input-color-text-error);
8981
+ outline-color: var(--wui-input-color-border-error);
8967
8982
  }
8968
8983
 
8969
8984
  &:disabled {
8970
- border-color: var(--wui-color-bg-surface-disabled);
8985
+ outline-color: var(--wui-color-border-disabled);
8971
8986
  background-color: var(--wui-color-bg-surface-disabled);
8972
8987
  }
8973
8988
  }
@@ -8986,6 +9001,29 @@ var StyledInputContainer = styled29.div`
8986
9001
 
8987
9002
  textarea {
8988
9003
  border-radius: var(--wui-input-multiline-border-radius);
9004
+
9005
+ --wui-input-line-height: var(--wui-typography-body-3-line-height);
9006
+ }
9007
+
9008
+ [type='search'] {
9009
+ &::-webkit-search-cancel-button {
9010
+ appearance: none;
9011
+ height: 16px;
9012
+ width: 16px;
9013
+ margin-right: -4px;
9014
+
9015
+ /* css vars don't work in data URLs, so the stroke color value is hardcoded. if we support dark mode, we'll need to swap the background image based on the users preferred color scheme */
9016
+ background-image: url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 4L4 12M4 4L12 12' stroke='%2364646a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
9017
+ background-position: center;
9018
+ background-repeat: no-repeat;
9019
+ cursor: pointer;
9020
+ background-color: var(--wui-color-bg-surface-secondary);
9021
+ border-radius: var(--wui-border-radius-rounded);
9022
+
9023
+ &:hover {
9024
+ background-color: var(--wui-color-bg-surface-secondary-hover);
9025
+ }
9026
+ }
8989
9027
  }
8990
9028
 
8991
9029
  .wui-input-left-icon {
@@ -9111,7 +9149,7 @@ var StyledInput = styled30(Input)`
9111
9149
  height: ${({ $height }) => `${$height}px`};
9112
9150
  }
9113
9151
  `;
9114
- var editableStyles = css26`
9152
+ var editableStyles = css27`
9115
9153
  &:has(+ :focus-within) {
9116
9154
  background: var(--wui-color-bg-surface-hover);
9117
9155
  }
@@ -9445,9 +9483,9 @@ import styled35 from "styled-components";
9445
9483
  import { isArray as isArray2, isNotNil as isNotNil13, isNotUndefined as isNotUndefined9, isUndefined as isUndefined4 } from "@wistia/type-guards";
9446
9484
 
9447
9485
  // src/components/Label/Label.tsx
9448
- import styled33, { css as css27 } from "styled-components";
9486
+ import styled33, { css as css28 } from "styled-components";
9449
9487
  import { jsx as jsx223 } from "react/jsx-runtime";
9450
- var requiredStyle = css27`
9488
+ var requiredStyle = css28`
9451
9489
  &::after {
9452
9490
  color: var(--wui-color-text-error);
9453
9491
  display: inline;
@@ -9455,7 +9493,7 @@ var requiredStyle = css27`
9455
9493
  content: '*';
9456
9494
  }
9457
9495
  `;
9458
- var disabledStyle3 = css27`
9496
+ var disabledStyle3 = css28`
9459
9497
  color: var(--wui-color-text-disabled);
9460
9498
  `;
9461
9499
  var StyledLabel3 = styled33.label`
@@ -9810,7 +9848,7 @@ var Image = ({
9810
9848
  Image.displayName = "Image";
9811
9849
 
9812
9850
  // src/components/Menu/Menu.tsx
9813
- import styled38, { css as css28, keyframes as keyframes2 } from "styled-components";
9851
+ import styled38, { css as css29, keyframes as keyframes2 } from "styled-components";
9814
9852
  import {
9815
9853
  DropdownMenu,
9816
9854
  DropdownMenuTrigger,
@@ -9847,7 +9885,7 @@ var close = keyframes2`
9847
9885
  transform: scale(.97) translateY(-8px);
9848
9886
  }
9849
9887
  `;
9850
- var menuItemCss = css28`
9888
+ var menuItemCss = css29`
9851
9889
  --menu-label-description-gap: var(--wui-space-01);
9852
9890
  --menu-item-inner-gap: var(--wui-space-03);
9853
9891
  --menu-item-left-icon-size: 24px;
@@ -9858,7 +9896,7 @@ var menuItemCss = css28`
9858
9896
  --menu-label-line-height: var(--wui-typography-label-3-line-height);
9859
9897
  --menu-divider-margin: var(--wui-space-02);
9860
9898
  `;
9861
- var compactMenuItemCss = css28`
9899
+ var compactMenuItemCss = css29`
9862
9900
  --menu-label-description-gap: 0;
9863
9901
  --menu-item-inner-gap: var(--wui-space-02);
9864
9902
  --menu-item-left-icon-size: 16px;
@@ -9869,7 +9907,7 @@ var compactMenuItemCss = css28`
9869
9907
  --menu-label-line-height: var(--wui-typography-label-4-line-height);
9870
9908
  --menu-divider-margin: var(--wui-space-01);
9871
9909
  `;
9872
- var menuContentCss = css28`
9910
+ var menuContentCss = css29`
9873
9911
  --menu-font-family: var(--wui-typography-family-default);
9874
9912
  --menu-bg: var(--wui-color-bg-surface);
9875
9913
  --menu-shadow: var(--wui-elevation-01);
@@ -10641,7 +10679,7 @@ Modal.displayName = "Modal";
10641
10679
 
10642
10680
  // src/components/Popover/Popover.tsx
10643
10681
  import { Root as Root2, Trigger as Trigger2, Portal, Content as Content2, Close } from "@radix-ui/react-popover";
10644
- import styled48, { css as css29 } from "styled-components";
10682
+ import styled48, { css as css30 } from "styled-components";
10645
10683
 
10646
10684
  // src/private/helpers/getControls/getControlProps.tsx
10647
10685
  import { isNotNil as isNotNil20 } from "@wistia/type-guards";
@@ -10652,13 +10690,15 @@ var getControlProps = (isOpen, onOpenChange) => {
10652
10690
  // src/components/Popover/Popover.tsx
10653
10691
  import { jsx as jsx244, jsxs as jsxs31 } from "react/jsx-runtime";
10654
10692
  var StyledContent2 = styled48(Content2)`
10655
- ${({ $unstyled }) => !$unstyled && css29`
10693
+ ${({ $unstyled }) => !$unstyled && css30`
10656
10694
  border-radius: var(--wui-border-radius-02);
10657
10695
  padding: var(--wui-space-04);
10658
- max-width: 320px;
10696
+ max-width: var(--wui-popover-max-width, 320px);
10697
+ max-height: var(--wui-popover-max-height, auto);
10659
10698
  background-color: var(--wui-color-bg-surface);
10660
10699
  box-shadow: var(--wui-elevation-01);
10661
10700
  border: 1px solid var(--wui-color-border);
10701
+ overflow: auto;
10662
10702
  `}
10663
10703
 
10664
10704
  [data-wui-popover-close] {
@@ -10672,10 +10712,16 @@ var Popover = ({
10672
10712
  trigger,
10673
10713
  isOpen = false,
10674
10714
  hideCloseButton = false,
10715
+ maxWidth = "320px",
10716
+ maxHeight = "auto",
10675
10717
  onOpenChange,
10676
10718
  unstyled = false,
10677
10719
  ...props
10678
10720
  }) => {
10721
+ const style = {
10722
+ "--wui-popover-max-width": maxWidth,
10723
+ "--wui-popover-max-height": maxHeight
10724
+ };
10679
10725
  return /* @__PURE__ */ jsxs31(Root2, { ...getControlProps(isOpen, onOpenChange), children: [
10680
10726
  /* @__PURE__ */ jsx244(Trigger2, { asChild: true, children: trigger }),
10681
10727
  /* @__PURE__ */ jsx244(Portal, { children: /* @__PURE__ */ jsxs31(
@@ -10684,6 +10730,7 @@ var Popover = ({
10684
10730
  sideOffset: 8,
10685
10731
  ...props,
10686
10732
  $unstyled: unstyled,
10733
+ style,
10687
10734
  children: [
10688
10735
  !hideCloseButton && /* @__PURE__ */ jsx244(Close, { asChild: true, children: /* @__PURE__ */ jsx244(
10689
10736
  IconButton,
@@ -10783,7 +10830,7 @@ ProgressBar.displayName = "ProgressBar";
10783
10830
 
10784
10831
  // src/components/Radio/Radio.tsx
10785
10832
  import { forwardRef as forwardRef19, useId as useId3 } from "react";
10786
- import styled50, { css as css30 } from "styled-components";
10833
+ import styled50, { css as css31 } from "styled-components";
10787
10834
  import { isNonEmptyString as isNonEmptyString3 } from "@wistia/type-guards";
10788
10835
  import { jsx as jsx246, jsxs as jsxs33 } from "react/jsx-runtime";
10789
10836
  var RadioIcon = () => /* @__PURE__ */ jsx246(
@@ -10805,7 +10852,7 @@ var RadioIcon = () => /* @__PURE__ */ jsx246(
10805
10852
  )
10806
10853
  }
10807
10854
  );
10808
- var sizeSmall2 = css30`
10855
+ var sizeSmall2 = css31`
10809
10856
  width: 14px;
10810
10857
  height: 14px;
10811
10858
  min-width: 14px;
@@ -10816,7 +10863,7 @@ var sizeSmall2 = css30`
10816
10863
  height: 7px;
10817
10864
  }
10818
10865
  `;
10819
- var sizeMedium2 = css30`
10866
+ var sizeMedium2 = css31`
10820
10867
  width: 16px;
10821
10868
  height: 16px;
10822
10869
  min-width: 16px;
@@ -10827,7 +10874,7 @@ var sizeMedium2 = css30`
10827
10874
  height: 8px;
10828
10875
  }
10829
10876
  `;
10830
- var sizeLarge2 = css30`
10877
+ var sizeLarge2 = css31`
10831
10878
  width: 20px;
10832
10879
  height: 20px;
10833
10880
  min-width: 20px;
@@ -10860,7 +10907,7 @@ var StyledRadioInput = styled50.div`
10860
10907
  align-self: flex-start;
10861
10908
  border-width: 1px;
10862
10909
  border-style: solid;
10863
- border-color: ${({ $disabled }) => $disabled ? "var(--wui-color-bg-border-disabled)" : "var(--wui-color-border)"};
10910
+ border-color: ${({ $disabled }) => $disabled ? "var(--wui-color-border-disabled)" : "var(--wui-color-border)"};
10864
10911
  background-color: ${({ $disabled }) => $disabled ? "var(--wui-color-bg-surface-disabled)" : "var(--wui-color-bg-surface)"};
10865
10912
 
10866
10913
  /* radio button circle icon */
@@ -10877,7 +10924,7 @@ var StyledHiddenRadioInput = styled50.input`
10877
10924
 
10878
10925
  /* toggles display of faux-input border-color */
10879
10926
  &:checked + label [data-wui-faux-input='true'] {
10880
- border-color: ${({ disabled }) => disabled ? "var(--wui-color-bg-border-disabled)" : "var(--wui-color-bg-fill)"};
10927
+ border-color: ${({ disabled }) => disabled ? "var(--wui-color-border-disabled)" : "var(--wui-color-bg-fill)"};
10881
10928
  }
10882
10929
 
10883
10930
  /* toggles display of RadioIcon */
@@ -10951,7 +10998,7 @@ Radio.displayName = "Radio";
10951
10998
 
10952
10999
  // src/components/SegmentedControl/SegmentedControl.tsx
10953
11000
  import { forwardRef as forwardRef20 } from "react";
10954
- import styled52, { css as css31 } from "styled-components";
11001
+ import styled52, { css as css32 } from "styled-components";
10955
11002
  import { Root as ToggleGroupRoot } from "@radix-ui/react-toggle-group";
10956
11003
  import { isNil as isNil14 } from "@wistia/type-guards";
10957
11004
 
@@ -11042,7 +11089,7 @@ var SelectedItemIndicator = () => {
11042
11089
 
11043
11090
  // src/components/SegmentedControl/SegmentedControl.tsx
11044
11091
  import { jsx as jsx249, jsxs as jsxs34 } from "react/jsx-runtime";
11045
- var segmentedControlStyles = css31`
11092
+ var segmentedControlStyles = css32`
11046
11093
  display: inline-flex;
11047
11094
  background-color: var(--wui-color-bg-surface-secondary);
11048
11095
  border-radius: var(--wui-border-radius-rounded);
@@ -11091,11 +11138,11 @@ SegmentedControl.displayName = "SegmentedControl";
11091
11138
 
11092
11139
  // src/components/SegmentedControl/SegmentedControlItem.tsx
11093
11140
  import { forwardRef as forwardRef21, useEffect as useEffect8, useRef as useRef10 } from "react";
11094
- import styled53, { css as css32 } from "styled-components";
11141
+ import styled53, { css as css33 } from "styled-components";
11095
11142
  import { Item as ToggleGroupItem } from "@radix-ui/react-toggle-group";
11096
11143
  import { isNotNil as isNotNil22 } from "@wistia/type-guards";
11097
11144
  import { jsxs as jsxs35 } from "react/jsx-runtime";
11098
- var segmentedControlItemStyles = css32`
11145
+ var segmentedControlItemStyles = css33`
11099
11146
  all: unset; /* ToggleGroupItem is a button element */
11100
11147
  align-items: center;
11101
11148
  border-radius: var(--wui-border-radius-rounded);
@@ -11231,23 +11278,13 @@ import styled54 from "styled-components";
11231
11278
  import { jsx as jsx250, jsxs as jsxs36 } from "react/jsx-runtime";
11232
11279
  var StyledTrigger = styled54(Trigger3)`
11233
11280
  ${({ $colorScheme }) => getColorScheme($colorScheme)};
11234
- --wui-select-color-bg: var(--wui-color-bg-surface);
11235
- --wui-select-color-bg-disabled: var(--wui-color-bg-surface-disabled);
11236
- --wui-select-color-border: var(--wui-color-border);
11237
- --wui-select-color-border-focus: var(--wui-color-border-active);
11238
- --wui-select-color-border-error: var(--wui-color-border-error);
11239
- --wui-select-color-border-disabled: var(--wui-color-border-disabled);
11240
- --wui-select-border-radius: var(--wui-border-radius-rounded);
11241
- --wui-select-multiline-border-radius: var(--wui-border-radius-02);
11242
- --wui-select-vertical-padding: var(--wui-space-02);
11243
- --wui-select-horizontal-padding: var(--wui-space-03);
11244
- --wui-select-placeholder: var(--wui-gray-10);
11245
- --wui-select-color-text-error: var(--wui-color-text-error);
11246
-
11247
- padding: var(--wui-select-vertical-padding) var(--wui-select-horizontal-padding);
11248
- background-color: var(--wui-select-color-bg);
11249
- border: 1px solid var(--wui-select-color-border);
11250
- border-radius: var(--wui-select-border-radius);
11281
+ ${inputCssVariables};
11282
+ padding: var(--wui-input-vertical-padding) var(--wui-input-horizontal-padding);
11283
+ background-color: var(--wui-input-color-bg);
11284
+ border: none;
11285
+ outline: 1px solid var(--wui-input-color-border);
11286
+ outline-offset: -2px;
11287
+ border-radius: var(--wui-input-border-radius);
11251
11288
  min-width: 200px;
11252
11289
  text-align: left;
11253
11290
  display: inline-flex;
@@ -11255,6 +11292,9 @@ var StyledTrigger = styled54(Trigger3)`
11255
11292
  justify-content: space-between;
11256
11293
  max-width: 100%;
11257
11294
  width: ${({ $fullWidth = false }) => $fullWidth ? "100%" : "auto"};
11295
+ color: var(--wui-input-color-text);
11296
+ font-size: var(--wui-input-font-size);
11297
+ line-height: var(--wui-input-line-height);
11258
11298
 
11259
11299
  > span {
11260
11300
  white-space: nowrap;
@@ -11268,14 +11308,17 @@ var StyledTrigger = styled54(Trigger3)`
11268
11308
  }
11269
11309
 
11270
11310
  &[aria-invalid='true'] {
11271
- outline: 2px solid var(--wui-select-color-border-error);
11272
- color: var(--wui-select-color-text-error);
11311
+ outline: 2px solid var(--wui-input-color-border-error);
11273
11312
  }
11274
11313
 
11275
11314
  &:disabled {
11276
- border-color: var(--wui-color-bg-surface-disabled);
11315
+ outline-color: var(--wui-color-border-disabled);
11277
11316
  background-color: var(--wui-color-bg-surface-disabled);
11278
11317
  }
11318
+
11319
+ [data-placeholder] {
11320
+ color: var(--wui-input-placeholder);
11321
+ }
11279
11322
  `;
11280
11323
  var StyledContent3 = styled54(Content3)`
11281
11324
  --wui-select-content-border: var(--wui-color-border);
@@ -11319,7 +11362,13 @@ var Select = forwardRef22(
11319
11362
  $fullWidth: responsiveFullWidth,
11320
11363
  ...props,
11321
11364
  children: [
11322
- /* @__PURE__ */ jsx250(Value, { placeholder }),
11365
+ /* @__PURE__ */ jsx250(
11366
+ Value,
11367
+ {
11368
+ "data-placeholder": placeholder,
11369
+ placeholder
11370
+ }
11371
+ ),
11323
11372
  /* @__PURE__ */ jsx250(
11324
11373
  Icon,
11325
11374
  {
@@ -11355,6 +11404,7 @@ var StyledItem = styled55(Item)`
11355
11404
  font-size: var(--font-size);
11356
11405
  font-weight: var(--font-weight);
11357
11406
  border-radius: var(--wui-border-radius-01);
11407
+ cursor: pointer;
11358
11408
 
11359
11409
  &:hover,
11360
11410
  &:focus-visible {
@@ -11419,10 +11469,10 @@ var SelectOptionGroup = ({ children, label, ...props }) => {
11419
11469
 
11420
11470
  // src/components/Switch/Switch.tsx
11421
11471
  import { forwardRef as forwardRef24, useId as useId4 } from "react";
11422
- import styled57, { css as css33 } from "styled-components";
11472
+ import styled57, { css as css34 } from "styled-components";
11423
11473
  import { isNonEmptyString as isNonEmptyString4 } from "@wistia/type-guards";
11424
11474
  import { jsx as jsx253, jsxs as jsxs39 } from "react/jsx-runtime";
11425
- var sizeSmall3 = css33`
11475
+ var sizeSmall3 = css34`
11426
11476
  --wui-size-small-width: 24px;
11427
11477
  --wui-size-small-height: 14px;
11428
11478
 
@@ -11437,7 +11487,7 @@ var sizeSmall3 = css33`
11437
11487
  height: calc(var(--wui-size-small-width) / 2);
11438
11488
  }
11439
11489
  `;
11440
- var sizeMedium3 = css33`
11490
+ var sizeMedium3 = css34`
11441
11491
  --wui-size-medium-width: 32px;
11442
11492
  --wui-size-medium-height: 18px;
11443
11493
 
@@ -11452,7 +11502,7 @@ var sizeMedium3 = css33`
11452
11502
  height: calc(var(--wui-size-medium-width) / 2);
11453
11503
  }
11454
11504
  `;
11455
- var sizeLarge3 = css33`
11505
+ var sizeLarge3 = css34`
11456
11506
  --wui-size-large-width: 40px;
11457
11507
  --wui-size-large-height: 22px;
11458
11508
 
@@ -11490,7 +11540,7 @@ var StyledSwitchInput = styled57.div`
11490
11540
  transition: all 0.2s ease-in-out;
11491
11541
  border-width: 1px;
11492
11542
  border-style: solid;
11493
- border-color: ${({ $disabled }) => $disabled ? "var(--wui-color-bg-border-disabled)" : "var(--wui-color-border)"}; /* "off state" border */
11543
+ border-color: ${({ $disabled }) => $disabled ? "var(--wui-color-border-disabled)" : "var(--wui-color-border)"}; /* "off state" border */
11494
11544
 
11495
11545
  background-color: ${({ $disabled }) => $disabled ? "var(--wui-color-bg-surface-disabled)" : "var(--wui-color-bg-surface-secondary)"}; /* "off state" background */
11496
11546
 
@@ -11581,19 +11631,19 @@ var Switch = forwardRef24(
11581
11631
  Switch.displayName = "Switch";
11582
11632
 
11583
11633
  // src/components/Table/Table.tsx
11584
- import styled58, { css as css34 } from "styled-components";
11634
+ import styled58, { css as css35 } from "styled-components";
11585
11635
  import { jsx as jsx254 } from "react/jsx-runtime";
11586
11636
  var StyledTable = styled58.table`
11587
11637
  width: 100%;
11588
11638
  border-collapse: collapse;
11589
11639
 
11590
- ${({ $striped }) => $striped && css34`
11640
+ ${({ $striped }) => $striped && css35`
11591
11641
  tbody tr:nth-child(even) {
11592
11642
  background-color: var(--wui-color-bg-surface-secondary);
11593
11643
  }
11594
11644
  `}
11595
11645
 
11596
- ${({ $divided }) => $divided && css34`
11646
+ ${({ $divided }) => $divided && css35`
11597
11647
  tr {
11598
11648
  border-bottom: 1px solid var(--wui-color-border);
11599
11649
  }
@@ -11632,9 +11682,9 @@ var TableBody = ({ children, ...props }) => {
11632
11682
 
11633
11683
  // src/components/Table/TableCell.tsx
11634
11684
  import { useContext as useContext7 } from "react";
11635
- import styled60, { css as css35 } from "styled-components";
11685
+ import styled60, { css as css36 } from "styled-components";
11636
11686
  import { jsx as jsx256 } from "react/jsx-runtime";
11637
- var sharedStyles = css35`
11687
+ var sharedStyles = css36`
11638
11688
  color: var(--wui-color-text);
11639
11689
  padding: var(--wui-space-02);
11640
11690
  text-align: left;
@@ -12158,7 +12208,7 @@ var Tag = forwardRef28(
12158
12208
  Tag.displayName = "Tag";
12159
12209
 
12160
12210
  // src/components/WistiaLogo/WistiaLogo.tsx
12161
- import styled70, { css as css36 } from "styled-components";
12211
+ import styled70, { css as css37 } from "styled-components";
12162
12212
  import { isNotNil as isNotNil26 } from "@wistia/type-guards";
12163
12213
  import { jsx as jsx266, jsxs as jsxs43 } from "react/jsx-runtime";
12164
12214
  var renderBrandmark = (brandmarkColor, iconOnly) => {
@@ -12216,12 +12266,12 @@ var WistiaLogoComponent = styled70.svg`
12216
12266
  ${({ $opticallyCentered, $iconOnly }) => {
12217
12267
  if ($opticallyCentered) {
12218
12268
  if ($iconOnly) {
12219
- return css36`
12269
+ return css37`
12220
12270
  aspect-ratio: 1;
12221
12271
  padding: 11.85% 3.12% 13.91%;
12222
12272
  `;
12223
12273
  }
12224
- return css36`
12274
+ return css37`
12225
12275
  aspect-ratio: 127 / 32;
12226
12276
  `;
12227
12277
  }
@@ -12281,6 +12331,257 @@ var WistiaLogo = ({
12281
12331
  return href !== void 0 ? /* @__PURE__ */ jsx266("a", { href, children: Logo }) : Logo;
12282
12332
  };
12283
12333
  WistiaLogo.displayName = "WistiaLogo";
12334
+
12335
+ // src/components/Thumbnail/ThumbnailBadge.tsx
12336
+ import styled71 from "styled-components";
12337
+ import { isNotNil as isNotNil27 } from "@wistia/type-guards";
12338
+ import { jsx as jsx267, jsxs as jsxs44 } from "react/jsx-runtime";
12339
+ var StyledThumbnailBadge = styled71.div`
12340
+ align-items: center;
12341
+ background-color: rgb(0 0 0 / 50%);
12342
+ border-radius: var(--wui-border-radius-01);
12343
+ bottom: var(--wui-space-01);
12344
+ color: var(--wui-color-text-on-fill);
12345
+ display: flex;
12346
+ font-size: var(--wui-typography-body-4-size);
12347
+ font-weight: var(--wui-typography-weight-body-bold);
12348
+ gap: var(--wui-space-01);
12349
+ padding: 0 var(--wui-space-01);
12350
+ position: absolute;
12351
+ right: var(--wui-space-01);
12352
+ z-index: 1;
12353
+
12354
+ svg {
12355
+ height: 12px;
12356
+ width: 12px;
12357
+
12358
+ path {
12359
+ color: var(--wui-color-icon-on-fill);
12360
+ }
12361
+ }
12362
+ `;
12363
+ var ThumbnailBadge = ({
12364
+ icon,
12365
+ label,
12366
+ ...otherProps
12367
+ }) => {
12368
+ return /* @__PURE__ */ jsxs44(StyledThumbnailBadge, { ...otherProps, children: [
12369
+ isNotNil27(icon) && icon,
12370
+ /* @__PURE__ */ jsx267("span", { children: label })
12371
+ ] });
12372
+ };
12373
+ ThumbnailBadge.displayName = "ThumbnailBadge";
12374
+
12375
+ // src/components/Thumbnail/Thumbnail.tsx
12376
+ import { forwardRef as forwardRef29 } from "react";
12377
+ import styled72 from "styled-components";
12378
+ import { isNotNil as isNotNil29 } from "@wistia/type-guards";
12379
+
12380
+ // src/private/helpers/getBackgroundGradient/getBackgroundGradient.ts
12381
+ import { isNotNil as isNotNil28 } from "@wistia/type-guards";
12382
+ import { css as css38 } from "styled-components";
12383
+ var gradients = {
12384
+ defaultDarkOne: css38`
12385
+ background-color: #222d66;
12386
+ background-image:
12387
+ radial-gradient(farthest-corner at top right, #222d66, transparent 70%),
12388
+ radial-gradient(farthest-corner at bottom right, #2949e5, transparent 50%),
12389
+ radial-gradient(farthest-corner at bottom left, #6b84ff, transparent 57%),
12390
+ radial-gradient(farthest-corner at top left, #2949e5, transparent 68%);
12391
+ `,
12392
+ defaultDarkTwo: css38`
12393
+ background-color: #222d66;
12394
+ background-image:
12395
+ radial-gradient(farthest-corner at top left, #6b84ff, transparent 100%),
12396
+ radial-gradient(farthest-corner at bottom left, #222d66, transparent 57%),
12397
+ radial-gradient(farthest-corner at bottom right, #2949e5, transparent 50%),
12398
+ radial-gradient(farthest-corner at top right, #2949e5, transparent 70%);
12399
+ `,
12400
+ defaultLightOne: css38`
12401
+ background-color: #ccd5ff;
12402
+ background-image:
12403
+ radial-gradient(farthest-corner at bottom right, #ccd5ff, transparent 55%),
12404
+ radial-gradient(farthest-corner at top left, #ccd5ff, transparent 65%),
12405
+ radial-gradient(farthest-corner at top right, #6b84ff, transparent 50%),
12406
+ radial-gradient(farthest-corner at bottom left, #f7f8ff, transparent 50%);
12407
+ `,
12408
+ defaultLightTwo: css38`
12409
+ background-color: #ccd5ff;
12410
+ background-image:
12411
+ radial-gradient(ellipse at top, #ccd5ff, transparent),
12412
+ radial-gradient(ellipse at bottom, #6b84ff, transparent);
12413
+ `,
12414
+ defaultMidOne: css38`
12415
+ background-color: #6b84ff;
12416
+ background-image:
12417
+ radial-gradient(farthest-corner at top right, #2949e5, transparent 70%),
12418
+ radial-gradient(farthest-corner at bottom right, #2949e5, transparent 50%),
12419
+ radial-gradient(farthest-corner at top left, #6b84ff, transparent 80%),
12420
+ radial-gradient(farthest-corner at bottom left, #222d66, transparent 57%);
12421
+ `,
12422
+ defaultMidTwo: css38`
12423
+ background-color: #6b84ff;
12424
+ background-image:
12425
+ radial-gradient(ellipse at top, #2949e5, transparent),
12426
+ radial-gradient(ellipse at bottom, #ccd5ff, transparent);
12427
+ `,
12428
+ green: css38`
12429
+ background-color: #fafffa;
12430
+ background-image:
12431
+ radial-gradient(farthest-corner at bottom left, #b0e5a5, transparent 50%),
12432
+ radial-gradient(farthest-corner at top right, #268713, transparent 50%),
12433
+ radial-gradient(farthest-corner at top left, #44b62d, transparent 65%),
12434
+ radial-gradient(farthest-corner at bottom right, #44b62d, transparent 55%);
12435
+ `,
12436
+ greenWithPop: css38`
12437
+ background-color: #fafffa;
12438
+ background-image:
12439
+ radial-gradient(farthest-corner at bottom left, #b0e5a5, transparent 50%),
12440
+ radial-gradient(farthest-corner at top right, #2949e5, transparent 50%),
12441
+ radial-gradient(farthest-corner at top left, #44b62d, transparent 65%),
12442
+ radial-gradient(farthest-corner at bottom right, #44b62d, transparent 55%);
12443
+ `,
12444
+ pink: css38`
12445
+ background-color: #fffff0;
12446
+ background-image:
12447
+ radial-gradient(farthest-corner at bottom left, #ffc7e8, transparent 50%),
12448
+ radial-gradient(farthest-corner at top right, #e0128e, transparent 70%),
12449
+ radial-gradient(farthest-corner at top left, #ff40b3, transparent 65%),
12450
+ radial-gradient(farthest-corner at bottom right, #ff40b3, transparent 55%);
12451
+ `,
12452
+ pinkWithPop: css38`
12453
+ background-color: #fffff0;
12454
+ background-image:
12455
+ radial-gradient(farthest-corner at top right, #e0128e, transparent 70%),
12456
+ radial-gradient(farthest-corner at top left, #ff40b3, transparent 65%),
12457
+ radial-gradient(farthest-corner at bottom right, #ff40b3, transparent 55%),
12458
+ radial-gradient(farthest-corner at bottom left, #2949e5, transparent 50%);
12459
+ `,
12460
+ playfulGradientOne: css38`
12461
+ background-color: #f7f8ff;
12462
+ background-image:
12463
+ radial-gradient(farthest-corner at top left, #d65cff, transparent 68%),
12464
+ radial-gradient(farthest-corner at bottom right, #2949e5, transparent 50%),
12465
+ radial-gradient(farthest-corner at bottom left, #ffc7e8, transparent 57%),
12466
+ radial-gradient(farthest-corner at top right, #ffcaba, transparent 70%);
12467
+ `,
12468
+ playfulGradientTwo: css38`
12469
+ background-color: #f7f8ff;
12470
+ background-image:
12471
+ radial-gradient(farthest-corner at top left, #44b62d, transparent 68%),
12472
+ radial-gradient(farthest-corner at bottom right, #eff18d, transparent 50%),
12473
+ radial-gradient(farthest-corner at bottom left, #ccd5ff, transparent 57%),
12474
+ radial-gradient(farthest-corner at top right, #2949e5, transparent 70%);
12475
+ `,
12476
+ purple: css38`
12477
+ background-color: #f2caff;
12478
+ background-image:
12479
+ radial-gradient(ellipse at 0% 100%, #f9e5ff, transparent 50%),
12480
+ radial-gradient(ellipse at 100% 0%, #e093fa, transparent 70%);
12481
+ `,
12482
+ purpleWithPop: css38`
12483
+ background-color: #f2caff;
12484
+ background-image:
12485
+ radial-gradient(farthest-corner at bottom left, #f2caff, transparent 50%),
12486
+ radial-gradient(farthest-corner at top left, #d65cff, transparent 65%),
12487
+ radial-gradient(farthest-corner at bottom right, #d65cff, transparent 55%),
12488
+ radial-gradient(farthest-corner at top right, #2949e5, transparent 70%);
12489
+ `,
12490
+ yellow: css38`
12491
+ background-color: #fffff0;
12492
+ background-image:
12493
+ radial-gradient(farthest-corner at bottom left, #eff18d, transparent 50%),
12494
+ radial-gradient(farthest-corner at top right, #bcbf19, transparent 70%),
12495
+ radial-gradient(farthest-corner at top left, #e8ec1e, transparent 65%),
12496
+ radial-gradient(farthest-corner at bottom right, #e8ec1e, transparent 55%);
12497
+ `,
12498
+ yellowWithPop: css38`
12499
+ background-color: #fffff0;
12500
+ background-image:
12501
+ radial-gradient(farthest-corner at bottom left, #eff18d, transparent 50%),
12502
+ radial-gradient(farthest-corner at top right, #bcbf19, transparent 70%),
12503
+ radial-gradient(farthest-corner at top left, #e8ec1e, transparent 65%),
12504
+ radial-gradient(farthest-corner at bottom right, #2949e5, transparent 55%);
12505
+ `
12506
+ };
12507
+ var gradientMap = Object.keys(gradients);
12508
+ var getBackgroundGradient = (gradientName = void 0) => {
12509
+ return isNotNil28(gradientName) ? gradients[gradientName] : gradients.defaultDarkOne;
12510
+ };
12511
+
12512
+ // src/components/Thumbnail/Thumbnail.tsx
12513
+ import { jsx as jsx268, jsxs as jsxs45 } from "react/jsx-runtime";
12514
+ var WideThumbnailImage = styled72.img`
12515
+ height: 100%;
12516
+ object-fit: cover;
12517
+ width: 100%;
12518
+ `;
12519
+ var SquareThumbnailImage = styled72.img`
12520
+ backdrop-filter: blur(8px);
12521
+ object-fit: contain;
12522
+ width: 100%;
12523
+ `;
12524
+ var ThumbnailImage = ({ thumbnailImageType, thumbnailUrl }) => {
12525
+ if (thumbnailImageType === "wide") {
12526
+ return /* @__PURE__ */ jsx268(
12527
+ WideThumbnailImage,
12528
+ {
12529
+ alt: "",
12530
+ src: thumbnailUrl
12531
+ }
12532
+ );
12533
+ }
12534
+ return /* @__PURE__ */ jsx268(
12535
+ SquareThumbnailImage,
12536
+ {
12537
+ alt: "",
12538
+ src: thumbnailUrl
12539
+ }
12540
+ );
12541
+ };
12542
+ var StyledThumbnail = styled72.div`
12543
+ ${({ $gradientBackground }) => getBackgroundGradient($gradientBackground)};
12544
+ aspect-ratio: 16 / 9;
12545
+ background: ${({ $backgroundUrl }) => isNotNil29($backgroundUrl) ? `url('${$backgroundUrl}') center / cover` : void 0};
12546
+ border-radius: 4px;
12547
+ display: flex;
12548
+ overflow: hidden;
12549
+ position: relative;
12550
+ width: ${({ $width }) => $width};
12551
+ `;
12552
+ var Thumbnail = forwardRef29(
12553
+ ({
12554
+ gradientBackground = "defaultMidOne",
12555
+ thumbnailImageType = "square",
12556
+ thumbnailUrl,
12557
+ width = "100%",
12558
+ children,
12559
+ ...otherProps
12560
+ }, ref) => {
12561
+ const backgroundUrl = thumbnailImageType === "square" && isNotNil29(thumbnailUrl) ? thumbnailUrl : void 0;
12562
+ return /* @__PURE__ */ jsxs45(
12563
+ StyledThumbnail,
12564
+ {
12565
+ ref,
12566
+ $backgroundUrl: backgroundUrl,
12567
+ $gradientBackground: gradientBackground,
12568
+ $width: width,
12569
+ ...otherProps,
12570
+ children: [
12571
+ isNotNil29(children) && children,
12572
+ isNotNil29(thumbnailUrl) && /* @__PURE__ */ jsx268(
12573
+ ThumbnailImage,
12574
+ {
12575
+ thumbnailImageType,
12576
+ thumbnailUrl
12577
+ }
12578
+ )
12579
+ ]
12580
+ }
12581
+ );
12582
+ }
12583
+ );
12584
+ Thumbnail.displayName = "Thumbnail";
12284
12585
  export {
12285
12586
  ActionButton,
12286
12587
  Avatar,
@@ -12353,6 +12654,8 @@ export {
12353
12654
  Tabs,
12354
12655
  Tag,
12355
12656
  Text,
12657
+ Thumbnail,
12658
+ ThumbnailBadge,
12356
12659
  Tooltip,
12357
12660
  UIProvider,
12358
12661
  WistiaLogo,