@wistia/ui 0.19.0-beta.e04d42c5.ec25c59 → 0.19.1-beta.b5f9943f.e933a21

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.d.mts CHANGED
@@ -471,6 +471,11 @@ type ActionButtonProps = {
471
471
  * Disables the button
472
472
  */
473
473
  disabled?: boolean;
474
+ /**
475
+ * @ignore
476
+ * Force a button into a particular css state (for debugging)
477
+ */
478
+ forceState?: 'focus' | 'hover' | undefined;
474
479
  /**
475
480
  * Set the [color scheme](../?path=/docs/docs-color-schemes--docs) of the `ActionButton` when hovered. By default, it will inherit the `colorScheme` prop.
476
481
  */
@@ -499,6 +504,11 @@ declare const ActionButton: react.ForwardRefExoticComponent<(Omit<{
499
504
  * Disables the button
500
505
  */
501
506
  disabled?: boolean;
507
+ /**
508
+ * @ignore
509
+ * Force a button into a particular css state (for debugging)
510
+ */
511
+ forceState?: "focus" | "hover" | undefined;
502
512
  /**
503
513
  * Set the [color scheme](../?path=/docs/docs-color-schemes--docs) of the `ActionButton` when hovered. By default, it will inherit the `colorScheme` prop.
504
514
  */
@@ -523,6 +533,11 @@ declare const ActionButton: react.ForwardRefExoticComponent<(Omit<{
523
533
  * Disables the button
524
534
  */
525
535
  disabled?: boolean;
536
+ /**
537
+ * @ignore
538
+ * Force a button into a particular css state (for debugging)
539
+ */
540
+ forceState?: "focus" | "hover" | undefined;
526
541
  /**
527
542
  * Set the [color scheme](../?path=/docs/docs-color-schemes--docs) of the `ActionButton` when hovered. By default, it will inherit the `colorScheme` prop.
528
543
  */
@@ -1726,17 +1741,21 @@ type DataCardsProps = ComponentPropsWithoutRef<'div'> & {
1726
1741
  /**
1727
1742
  * String to pass to the `max-width` property of its children. [View the syntax on MDN →](https://developer.mozilla.org/en-US/docs/Web/CSS/max-width#syntax)
1728
1743
  */
1729
- cardMaxWidth?: string;
1744
+ cardMaxWidth?: ResponsiveObject<string> | string;
1730
1745
  /**
1731
1746
  * Sets the color scheme of the cards, can be overriden at the card level
1732
1747
  */
1733
1748
  colorScheme?: ColorSchemeTypes;
1749
+ /**
1750
+ * Desired number of columns to display.
1751
+ */
1752
+ columns?: ResponsiveObject<number | 'auto'> | number | 'auto';
1734
1753
  };
1735
1754
  /**
1736
1755
  * Displays a series of cards tailor made for displaying analytics data
1737
1756
  */
1738
1757
  declare const DataCards: {
1739
- ({ children, cardMaxWidth, colorScheme, ...props }: DataCardsProps): JSX.Element;
1758
+ ({ children, cardMaxWidth, colorScheme, columns, ...props }: DataCardsProps): JSX.Element;
1740
1759
  displayName: string;
1741
1760
  };
1742
1761
 
@@ -4214,17 +4233,13 @@ type ThumbnailCollageProps = {
4214
4233
  * The type of gradient to show if no `Thumbnail`s are provided
4215
4234
  */
4216
4235
  gradientBackground?: GradientNameType;
4217
- /**
4218
- * If the collage should have a background or not.
4219
- */
4220
- hasBackground?: boolean;
4221
4236
  };
4222
4237
  /**
4223
4238
  * A `ThumbnailCollage` is a component that displays multiple `Thumbnail` components in a responsive grid layout.
4224
4239
  * It supports up to 3 thumbnails arranged in different configurations based on the number of children provided.
4225
4240
  * If no thumbnails are provided, it displays a fallback thumbnail with a gradient background.
4226
4241
  */
4227
- declare const ThumbnailCollage: ({ children, gradientBackground, hasBackground, ...props }: ThumbnailCollageProps) => JSX.Element;
4242
+ declare const ThumbnailCollage: ({ children, gradientBackground, ...props }: ThumbnailCollageProps) => JSX.Element;
4228
4243
 
4229
4244
  type TooltipProps = {
4230
4245
  /**
package/dist/index.d.ts CHANGED
@@ -471,6 +471,11 @@ type ActionButtonProps = {
471
471
  * Disables the button
472
472
  */
473
473
  disabled?: boolean;
474
+ /**
475
+ * @ignore
476
+ * Force a button into a particular css state (for debugging)
477
+ */
478
+ forceState?: 'focus' | 'hover' | undefined;
474
479
  /**
475
480
  * Set the [color scheme](../?path=/docs/docs-color-schemes--docs) of the `ActionButton` when hovered. By default, it will inherit the `colorScheme` prop.
476
481
  */
@@ -499,6 +504,11 @@ declare const ActionButton: react.ForwardRefExoticComponent<(Omit<{
499
504
  * Disables the button
500
505
  */
501
506
  disabled?: boolean;
507
+ /**
508
+ * @ignore
509
+ * Force a button into a particular css state (for debugging)
510
+ */
511
+ forceState?: "focus" | "hover" | undefined;
502
512
  /**
503
513
  * Set the [color scheme](../?path=/docs/docs-color-schemes--docs) of the `ActionButton` when hovered. By default, it will inherit the `colorScheme` prop.
504
514
  */
@@ -523,6 +533,11 @@ declare const ActionButton: react.ForwardRefExoticComponent<(Omit<{
523
533
  * Disables the button
524
534
  */
525
535
  disabled?: boolean;
536
+ /**
537
+ * @ignore
538
+ * Force a button into a particular css state (for debugging)
539
+ */
540
+ forceState?: "focus" | "hover" | undefined;
526
541
  /**
527
542
  * Set the [color scheme](../?path=/docs/docs-color-schemes--docs) of the `ActionButton` when hovered. By default, it will inherit the `colorScheme` prop.
528
543
  */
@@ -1726,17 +1741,21 @@ type DataCardsProps = ComponentPropsWithoutRef<'div'> & {
1726
1741
  /**
1727
1742
  * String to pass to the `max-width` property of its children. [View the syntax on MDN →](https://developer.mozilla.org/en-US/docs/Web/CSS/max-width#syntax)
1728
1743
  */
1729
- cardMaxWidth?: string;
1744
+ cardMaxWidth?: ResponsiveObject<string> | string;
1730
1745
  /**
1731
1746
  * Sets the color scheme of the cards, can be overriden at the card level
1732
1747
  */
1733
1748
  colorScheme?: ColorSchemeTypes;
1749
+ /**
1750
+ * Desired number of columns to display.
1751
+ */
1752
+ columns?: ResponsiveObject<number | 'auto'> | number | 'auto';
1734
1753
  };
1735
1754
  /**
1736
1755
  * Displays a series of cards tailor made for displaying analytics data
1737
1756
  */
1738
1757
  declare const DataCards: {
1739
- ({ children, cardMaxWidth, colorScheme, ...props }: DataCardsProps): JSX.Element;
1758
+ ({ children, cardMaxWidth, colorScheme, columns, ...props }: DataCardsProps): JSX.Element;
1740
1759
  displayName: string;
1741
1760
  };
1742
1761
 
@@ -4214,17 +4233,13 @@ type ThumbnailCollageProps = {
4214
4233
  * The type of gradient to show if no `Thumbnail`s are provided
4215
4234
  */
4216
4235
  gradientBackground?: GradientNameType;
4217
- /**
4218
- * If the collage should have a background or not.
4219
- */
4220
- hasBackground?: boolean;
4221
4236
  };
4222
4237
  /**
4223
4238
  * A `ThumbnailCollage` is a component that displays multiple `Thumbnail` components in a responsive grid layout.
4224
4239
  * It supports up to 3 thumbnails arranged in different configurations based on the number of children provided.
4225
4240
  * If no thumbnails are provided, it displays a fallback thumbnail with a gradient background.
4226
4241
  */
4227
- declare const ThumbnailCollage: ({ children, gradientBackground, hasBackground, ...props }: ThumbnailCollageProps) => JSX.Element;
4242
+ declare const ThumbnailCollage: ({ children, gradientBackground, ...props }: ThumbnailCollageProps) => JSX.Element;
4228
4243
 
4229
4244
  type TooltipProps = {
4230
4245
  /**
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  /*
3
- * @license @wistia/ui v0.19.0-beta.e04d42c5.ec25c59
3
+ * @license @wistia/ui v0.19.1-beta.b5f9943f.e933a21
4
4
  *
5
5
  * Copyright (c) 2024-2025, Wistia, Inc. and its affiliates.
6
6
  *
@@ -3363,8 +3363,8 @@ var buttonExtraLargeStyles = css17`
3363
3363
  `;
3364
3364
  var ghostButtonVariant = css17`
3365
3365
  --button-color-bg-override: transparent;
3366
- --button-color-bg-hover: var(--wui-color-bg-surface-hover);
3367
- --button-color-bg-active: var(--wui-color-bg-surface-active);
3366
+ --button-color-bg-hover: var(--wui-color-bg-surface-secondary-hover);
3367
+ --button-color-bg-active: var(--wui-color-bg-surface-secondary-active);
3368
3368
  --button-color-text: var(--wui-color-text-button);
3369
3369
  --button-color-icon: var(--wui-color-icon);
3370
3370
  `;
@@ -3404,6 +3404,24 @@ var pressedButtonVariant = css17`
3404
3404
  --button-color-icon: var(--wui-color-icon-selected);
3405
3405
  --button-color-border: var(--wui-color-border-selected);
3406
3406
  `;
3407
+ var buttonFocusStyles = css17`
3408
+ &:focus {
3409
+ outline: none;
3410
+ }
3411
+
3412
+ &:focus-visible,
3413
+ &.force-state-focus {
3414
+ --wui-button-focus-color: var(--wui-color-focus-ring);
3415
+
3416
+ box-shadow:
3417
+ inset 0 0 0 2px var(--wui-button-focus-color),
3418
+ inset 0 0 0 3px var(--wui-color-bg-app);
3419
+
3420
+ &[aria-disabled='true'] {
3421
+ --wui-button-focus-color: var(--wui-color-focus-ring-disabled);
3422
+ }
3423
+ }
3424
+ `;
3407
3425
  var buttonBaseStyles = css17`
3408
3426
  border-radius: var(--wui-border-radius-rounded);
3409
3427
  font-family: var(--button-typography-family);
@@ -3441,12 +3459,14 @@ var buttonBaseStyles = css17`
3441
3459
 
3442
3460
  &:focus-visible,
3443
3461
  &.force-state-focus {
3444
- outline: 2px solid var(--wui-color-focus-ring);
3445
- outline-offset: 2px;
3446
- background: var(--button-color-bg-hover);
3462
+ --wui-button-focus-color: var(--wui-color-focus-ring);
3463
+
3464
+ box-shadow:
3465
+ inset 0 0 0 2px var(--wui-button-focus-color),
3466
+ inset 0 0 0 3px var(--wui-color-bg-app);
3447
3467
 
3448
3468
  &[aria-disabled='true'] {
3449
- outline-color: var(--wui-color-border-disabled);
3469
+ --wui-button-focus-color: var(--wui-color-focus-ring-disabled);
3450
3470
  }
3451
3471
  }
3452
3472
 
@@ -8080,22 +8100,20 @@ var StyledActionButton = styled7(Button)`
8080
8100
  }
8081
8101
 
8082
8102
  &:hover,
8083
- &:focus-visible {
8103
+ &:focus-visible,
8104
+ &.force-state-hover,
8105
+ &.force-state-focus {
8084
8106
  --wui-color-text: var(--wui-color-text-button);
8085
8107
 
8086
8108
  ${({ $hoverColorScheme }) => getColorScheme($hoverColorScheme)};
8087
8109
  background: var(--wui-color-bg-surface-tertiary);
8088
8110
  }
8089
8111
 
8090
- &:focus-visible {
8091
- outline: 2px solid var(--wui-color-focus-ring);
8092
- outline-offset: 2px;
8093
- }
8112
+ ${buttonFocusStyles}
8094
8113
 
8095
8114
  &[aria-disabled='true'] {
8096
8115
  background: var(--wui-color-bg-surface-disabled);
8097
8116
  color: var(--wui-color-text-disabled);
8098
- outline-color: var(--wui-color-focus-ring-disabled);
8099
8117
  cursor: not-allowed;
8100
8118
 
8101
8119
  && {
@@ -8133,7 +8151,9 @@ var StyledSecondaryIcon = styled7.div`
8133
8151
  opacity: 0;
8134
8152
  transform: translateX(-16px);
8135
8153
  ${StyledActionButton}:hover:not([aria-disabled="true"]) &,
8136
- ${StyledActionButton}:focus-visible:not([aria-disabled="true"]) & {
8154
+ ${StyledActionButton}:focus-visible:not([aria-disabled="true"]) &,
8155
+ ${StyledActionButton}.force-state-hover:not([aria-disabled="true"]) &,
8156
+ ${StyledActionButton}.force-state-focus:not([aria-disabled="true"]) & {
8137
8157
  transform: translateX(0);
8138
8158
  opacity: 1;
8139
8159
  }
@@ -8162,6 +8182,7 @@ var ActionButton = forwardRef3(
8162
8182
  icon,
8163
8183
  colorScheme = "standard",
8164
8184
  disabled = false,
8185
+ forceState,
8165
8186
  hoverColorScheme,
8166
8187
  variant = "default",
8167
8188
  children,
@@ -8182,6 +8203,7 @@ var ActionButton = forwardRef3(
8182
8203
  $colorScheme: colorScheme,
8183
8204
  $hoverColorScheme: resolvedHoverColorScheme,
8184
8205
  disabled,
8206
+ forceState,
8185
8207
  unstyled: true,
8186
8208
  children: [
8187
8209
  /* @__PURE__ */ jsx210(StyledMainIcon, { children: icon }),
@@ -14059,6 +14081,10 @@ var StyledLabel3 = styled58(Heading)`
14059
14081
  &[data-wui-data-card-skeleton='true'] {
14060
14082
  width: 80px;
14061
14083
  }
14084
+
14085
+ button {
14086
+ text-align: left;
14087
+ }
14062
14088
  `;
14063
14089
  var StyledValue = styled58(Heading)`
14064
14090
  grid-area: value;
@@ -14100,7 +14126,7 @@ var DataCardInner = ({
14100
14126
  StyledLabel3,
14101
14127
  {
14102
14128
  "data-wui-data-card-skeleton": isLoading,
14103
- renderAs: "dt",
14129
+ renderAs: "div",
14104
14130
  variant: "heading6",
14105
14131
  children: label
14106
14132
  }
@@ -14109,7 +14135,7 @@ var DataCardInner = ({
14109
14135
  StyledValue,
14110
14136
  {
14111
14137
  "data-wui-data-card-skeleton": isLoading,
14112
- renderAs: "dd",
14138
+ renderAs: "div",
14113
14139
  variant: "heading3",
14114
14140
  children: value
14115
14141
  }
@@ -14162,9 +14188,16 @@ import { styled as styled59 } from "styled-components";
14162
14188
  import { jsx as jsx279 } from "react/jsx-runtime";
14163
14189
  var StyledDataCards = styled59(Box)`
14164
14190
  ${({ $colorScheme }) => getColorScheme($colorScheme)};
14191
+ --wui-data-cards-column-count: ${({ $columns }) => $columns === "auto" ? void 0 : $columns};
14192
+ --wui-data-cards-total-column-gap-width: calc(var(--wui-data-cards-column-count) - 1) *
14193
+ var(--wui-space-02);
14194
+ --wui-data-cards-column-width: calc(
14195
+ (100% - var(--wui-data-cards-total-column-gap-width)) / var(--wui-data-cards-column-count)
14196
+ );
14165
14197
 
14166
14198
  > * {
14167
14199
  min-width: 120px;
14200
+ flex-basis: var(--wui-data-cards-column-width, 0);
14168
14201
  max-width: ${({ $cardMaxWidth }) => $cardMaxWidth};
14169
14202
  }
14170
14203
  `;
@@ -14172,19 +14205,22 @@ var DataCards = ({
14172
14205
  children,
14173
14206
  cardMaxWidth = "none",
14174
14207
  colorScheme = "inherit",
14208
+ columns = "auto",
14175
14209
  ...props
14176
14210
  }) => {
14211
+ const responsiveCardMaxWidth = useResponsiveProp(cardMaxWidth);
14212
+ const responsiveColumns = useResponsiveProp(columns);
14177
14213
  return /* @__PURE__ */ jsx279(
14178
14214
  StyledDataCards,
14179
14215
  {
14180
14216
  ...props,
14181
- $cardMaxWidth: cardMaxWidth,
14217
+ $cardMaxWidth: responsiveCardMaxWidth,
14182
14218
  $colorScheme: colorScheme,
14219
+ $columns: responsiveColumns,
14183
14220
  alignItems: "stretch",
14184
14221
  direction: "row",
14185
14222
  fill: "horizontal",
14186
14223
  gap: "space-02",
14187
- renderAs: "dl",
14188
14224
  wrapItems: true,
14189
14225
  children
14190
14226
  }
@@ -18456,8 +18492,8 @@ var Thumbnail = forwardRef37(
18456
18492
  Thumbnail.displayName = "Thumbnail_UI";
18457
18493
 
18458
18494
  // src/components/ThumbnailCollage/ThumbnailCollage.tsx
18459
- import React from "react";
18460
- import { css as css51, styled as styled109 } from "styled-components";
18495
+ import { cloneElement as cloneElement9, Children as Children11 } from "react";
18496
+ import { styled as styled109 } from "styled-components";
18461
18497
  import { isNonEmptyArray } from "@wistia/type-guards";
18462
18498
  import { jsx as jsx336 } from "react/jsx-runtime";
18463
18499
  var ThumbnailCollageContainer = styled109.div`
@@ -18467,20 +18503,12 @@ var ThumbnailCollageContainer = styled109.div`
18467
18503
  display: flex;
18468
18504
  `;
18469
18505
  var StyledThumbnailCollage = styled109.div`
18470
- --wui-thumbnail-collage-spacing: var(--wui-space-01);
18471
- border-radius: clamp(var(--wui-border-radius-01), 8cqh, var(--wui-border-radius-05));
18472
18506
  display: grid;
18473
- gap: var(--wui-thumbnail-collage-spacing);
18507
+ gap: var(--wui-space-01);
18474
18508
  width: 100%;
18475
18509
  grid-template-columns: 3fr 2fr;
18476
18510
  grid-template-rows: 1fr 1fr;
18477
18511
 
18478
- ${({ $hasBackground }) => $hasBackground && css51`
18479
- background-color: var(--wui-color-bg-surface-secondary);
18480
- border: 1px solid rgba(0, 0, 0, 0.05);
18481
- padding: var(--wui-thumbnail-collage-spacing);
18482
- `}
18483
-
18484
18512
  &:has(:nth-child(1)) {
18485
18513
  grid-template-areas:
18486
18514
  'a a'
@@ -18517,21 +18545,16 @@ var StyledThumbnailCollage = styled109.div`
18517
18545
  height: 100%;
18518
18546
  width: 100%;
18519
18547
  }
18520
-
18521
- @container (min-width: 200px) {
18522
- --wui-thumbnail-collage-spacing: var(--wui-space-02);
18523
- }
18524
18548
  `;
18525
18549
  var ThumbnailCollage = ({
18526
18550
  children = [],
18527
18551
  gradientBackground = "defaultMidOne",
18528
- hasBackground = false,
18529
18552
  ...props
18530
18553
  }) => {
18531
- const thumbnailArray = React.Children.toArray(children);
18554
+ const thumbnailArray = Children11.toArray(children);
18532
18555
  const truncatedThumbnails = thumbnailArray.slice(0, 3);
18533
18556
  const thumbnails = isNonEmptyArray(thumbnailArray) ? truncatedThumbnails.map((child) => {
18534
- return React.cloneElement(child, {
18557
+ return cloneElement9(child, {
18535
18558
  ...child.props,
18536
18559
  children: void 0
18537
18560
  });
@@ -18550,7 +18573,6 @@ var ThumbnailCollage = ({
18550
18573
  StyledThumbnailCollage,
18551
18574
  {
18552
18575
  $gradientBackground: gradientBackground,
18553
- $hasBackground: hasBackground,
18554
18576
  "data-wui-thumbnail-collage": true,
18555
18577
  ...props,
18556
18578
  children: thumbnails
@@ -18559,7 +18581,7 @@ var ThumbnailCollage = ({
18559
18581
  };
18560
18582
 
18561
18583
  // src/components/WistiaLogo/WistiaLogo.tsx
18562
- import { styled as styled110, css as css52 } from "styled-components";
18584
+ import { styled as styled110, css as css51 } from "styled-components";
18563
18585
  import { isNotNil as isNotNil44 } from "@wistia/type-guards";
18564
18586
  import { jsx as jsx337, jsxs as jsxs71 } from "react/jsx-runtime";
18565
18587
  var renderBrandmark = (brandmarkColor, iconOnly) => {
@@ -18617,12 +18639,12 @@ var WistiaLogoComponent = styled110.svg`
18617
18639
  ${({ $opticallyCentered, $iconOnly }) => {
18618
18640
  if ($opticallyCentered) {
18619
18641
  if ($iconOnly) {
18620
- return css52`
18642
+ return css51`
18621
18643
  aspect-ratio: 1;
18622
18644
  padding: 11.85% 3.12% 13.91%;
18623
18645
  `;
18624
18646
  }
18625
- return css52`
18647
+ return css51`
18626
18648
  aspect-ratio: 127 / 32;
18627
18649
  `;
18628
18650
  }
@@ -18686,7 +18708,7 @@ WistiaLogo.displayName = "WistiaLogo_UI";
18686
18708
  // src/components/SplitButton/SplitButton.tsx
18687
18709
  import { styled as styled111 } from "styled-components";
18688
18710
  import { isNotNil as isNotNil45 } from "@wistia/type-guards";
18689
- import { cloneElement as cloneElement9 } from "react";
18711
+ import { cloneElement as cloneElement10 } from "react";
18690
18712
  import { jsx as jsx338, jsxs as jsxs72 } from "react/jsx-runtime";
18691
18713
  var StyledSplitButton = styled111.span`
18692
18714
  ${({ $colorScheme }) => getColorScheme($colorScheme)};
@@ -18751,7 +18773,7 @@ var SplitButton = ({
18751
18773
  children: menuItems
18752
18774
  }
18753
18775
  ),
18754
- isNotNil45(secondaryAction) && cloneElement9(secondaryAction, { disabled, size, unstyled, variant, colorScheme })
18776
+ isNotNil45(secondaryAction) && cloneElement10(secondaryAction, { disabled, size, unstyled, variant, colorScheme })
18755
18777
  ] });
18756
18778
  };
18757
18779
  SplitButton.displayName = "SplitButton_UI";