@wistia/ui 1.4.0 → 1.4.1-beta.00bbf92d.6138863
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.ts +2075 -2476
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +263 -141
- package/dist/index.js.map +1 -1
- package/package.json +25 -27
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
/*
|
|
3
|
-
* @license @wistia/ui v1.4.
|
|
3
|
+
* @license @wistia/ui v1.4.1-beta.00bbf92d.6138863
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) 2024-2026, Wistia, Inc. and its affiliates.
|
|
6
6
|
*
|
|
@@ -13,12 +13,6 @@ import { createGlobalStyle, css, keyframes, styled } from "styled-components";
|
|
|
13
13
|
import { isArray, isBoolean, isDate, isEmptyString, isFunction, isNil, isNonEmptyArray, isNonEmptyString, isNotNil, isNotUndefined, isNumber, isRecord, isString, isUndefined } from "@wistia/type-guards";
|
|
14
14
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
15
15
|
import { Toaster, toast } from "sonner";
|
|
16
|
-
import { isPast } from "date-fns/isPast";
|
|
17
|
-
import { isValid } from "date-fns/isValid";
|
|
18
|
-
import { parse } from "date-fns/parse";
|
|
19
|
-
import { startOfDay } from "date-fns/startOfDay";
|
|
20
|
-
import { startOfToday } from "date-fns/startOfToday";
|
|
21
|
-
import { startOfTomorrow } from "date-fns/startOfTomorrow";
|
|
22
16
|
import { getValueAndUnit } from "polished";
|
|
23
17
|
import { useFilePicker as useFilePicker$1, useImperativeFilePicker as useImperativeFilePicker$1 } from "use-file-picker";
|
|
24
18
|
import { FileAmountLimitValidator, FileSizeValidator, FileTypeValidator, ImageDimensionsValidator, PersistentFileAmountLimitValidator } from "use-file-picker/validators";
|
|
@@ -74,11 +68,8 @@ const clickRegionGlobalStyles = css`
|
|
|
74
68
|
//#region src/css/designTokens/index.tsx
|
|
75
69
|
const designTokens = css`
|
|
76
70
|
${"/* -------------------------------------------\n * Autogenerated by ⛋ Terrazzo. DO NOT EDIT!\n * ------------------------------------------- */\n\n:root,\n[data-wui-theme='true'] {\n--wui-app-background: #fff;\n --wui-blue-1: #fdfdfe;\n --wui-blue-2: #f6f9ff;\n --wui-blue-3: #ecf2ff;\n --wui-blue-4: #ddeaff;\n --wui-blue-5: #cddfff;\n --wui-blue-6: #b8d1ff;\n --wui-blue-7: #a1beff;\n --wui-blue-8: #81a4fe;\n --wui-blue-9: #2949e5;\n --wui-blue-10: #1f36d3;\n --wui-blue-11: #3154dc;\n --wui-blue-12: #192b65;\n --wui-blue-alpha-1: #00008003;\n --wui-blue-alpha-2: #0055ff0a;\n --wui-blue-alpha-3: #0051ff12;\n --wui-blue-alpha-4: #0062ff21;\n --wui-blue-alpha-5: #005cff33;\n --wui-blue-alpha-6: #005aff47;\n --wui-blue-alpha-7: #004fff5e;\n --wui-blue-alpha-8: #0047fd7d;\n --wui-blue-alpha-9: #0026e0d6;\n --wui-blue-alpha-10: #001acde0;\n --wui-blue-alpha-11: #002bd4cf;\n --wui-blue-alpha-12: #001454e5;\n --wui-blue-contrast: #fff;\n --wui-blue-surface: #f4f8ffcc;\n --wui-border-radius-00: 0px;\n --wui-border-radius-01: 4px;\n --wui-border-radius-02: 8px;\n --wui-border-radius-03: 16px;\n --wui-border-radius-04: 20px;\n --wui-border-radius-05: 24px;\n --wui-border-radius-rounded: 1000px;\n --wui-color-accent-1: var(--wui-blue-1);\n --wui-color-accent-2: var(--wui-blue-2);\n --wui-color-accent-3: var(--wui-blue-3);\n --wui-color-accent-4: var(--wui-blue-4);\n --wui-color-accent-5: var(--wui-blue-5);\n --wui-color-accent-6: var(--wui-blue-6);\n --wui-color-accent-7: var(--wui-blue-7);\n --wui-color-accent-8: var(--wui-blue-8);\n --wui-color-accent-9: var(--wui-blue-9);\n --wui-color-accent-10: var(--wui-blue-10);\n --wui-color-accent-11: var(--wui-blue-11);\n --wui-color-accent-12: var(--wui-blue-12);\n --wui-color-accent-contrast: var(--wui-blue-contrast);\n --wui-color-backdrop: var(--wui-gray-alpha-9);\n --wui-color-base-1: var(--wui-gray-1);\n --wui-color-base-2: var(--wui-gray-2);\n --wui-color-base-3: var(--wui-gray-3);\n --wui-color-base-4: var(--wui-gray-4);\n --wui-color-base-5: var(--wui-gray-5);\n --wui-color-base-6: var(--wui-gray-6);\n --wui-color-base-7: var(--wui-gray-7);\n --wui-color-base-8: var(--wui-gray-8);\n --wui-color-base-9: var(--wui-gray-9);\n --wui-color-base-10: var(--wui-gray-10);\n --wui-color-base-11: var(--wui-gray-11);\n --wui-color-base-12: var(--wui-gray-12);\n --wui-color-base-contrast: var(--wui-gray-contrast);\n --wui-color-bg-app: #fff;\n --wui-color-bg-fill: var(--wui-color-accent-9);\n --wui-color-bg-fill-active: var(--wui-color-accent-11);\n --wui-color-bg-fill-active-blue: var(--wui-blue-11);\n --wui-color-bg-fill-active-error: var(--wui-error-11);\n --wui-color-bg-fill-active-green: var(--wui-green-11);\n --wui-color-bg-fill-active-info: var(--wui-blue-11);\n --wui-color-bg-fill-active-orange: var(--wui-orange-11);\n --wui-color-bg-fill-active-pink: var(--wui-pink-11);\n --wui-color-bg-fill-active-purple: var(--wui-purple-11);\n --wui-color-bg-fill-active-success: var(--wui-success-11);\n --wui-color-bg-fill-active-warning: var(--wui-warning-11);\n --wui-color-bg-fill-active-yellow: var(--wui-yellow-11);\n --wui-color-bg-fill-blue: var(--wui-blue-9);\n --wui-color-bg-fill-error: var(--wui-error-9);\n --wui-color-bg-fill-green: var(--wui-green-9);\n --wui-color-bg-fill-hover: var(--wui-color-accent-10);\n --wui-color-bg-fill-hover-blue: var(--wui-blue-10);\n --wui-color-bg-fill-hover-error: var(--wui-error-10);\n --wui-color-bg-fill-hover-green: var(--wui-green-10);\n --wui-color-bg-fill-hover-info: var(--wui-blue-10);\n --wui-color-bg-fill-hover-orange: var(--wui-orange-10);\n --wui-color-bg-fill-hover-pink: var(--wui-pink-10);\n --wui-color-bg-fill-hover-purple: var(--wui-purple-10);\n --wui-color-bg-fill-hover-success: var(--wui-success-10);\n --wui-color-bg-fill-hover-warning: var(--wui-warning-10);\n --wui-color-bg-fill-hover-yellow: var(--wui-yellow-10);\n --wui-color-bg-fill-info: var(--wui-blue-9);\n --wui-color-bg-fill-orange: var(--wui-orange-9);\n --wui-color-bg-fill-pink: var(--wui-pink-9);\n --wui-color-bg-fill-purple: var(--wui-purple-9);\n --wui-color-bg-fill-success: var(--wui-success-9);\n --wui-color-bg-fill-warning: var(--wui-warning-9);\n --wui-color-bg-fill-white: #fff;\n --wui-color-bg-fill-yellow: var(--wui-yellow-9);\n --wui-color-bg-surface: var(--wui-color-surface-token);\n --wui-color-bg-surface-active: var(--wui-color-base-4);\n --wui-color-bg-surface-active-blue: var(--wui-blue-4);\n --wui-color-bg-surface-active-error: var(--wui-error-4);\n --wui-color-bg-surface-active-green: var(--wui-green-4);\n --wui-color-bg-surface-active-info: var(--wui-blue-4);\n --wui-color-bg-surface-active-orange: var(--wui-orange-4);\n --wui-color-bg-surface-active-pink: var(--wui-pink-4);\n --wui-color-bg-surface-active-purple: var(--wui-purple-4);\n --wui-color-bg-surface-active-success: var(--wui-success-4);\n --wui-color-bg-surface-active-warning: var(--wui-warning-4);\n --wui-color-bg-surface-active-yellow: var(--wui-yellow-4);\n --wui-color-bg-surface-blue: var(--wui-blue-2);\n --wui-color-bg-surface-disabled: #f0f0f3;\n --wui-color-bg-surface-error: var(--wui-error-2);\n --wui-color-bg-surface-green: var(--wui-green-2);\n --wui-color-bg-surface-hover: var(--wui-color-base-3);\n --wui-color-bg-surface-hover-blue: var(--wui-blue-3);\n --wui-color-bg-surface-hover-error: var(--wui-error-3);\n --wui-color-bg-surface-hover-green: var(--wui-green-3);\n --wui-color-bg-surface-hover-info: var(--wui-blue-3);\n --wui-color-bg-surface-hover-orange: var(--wui-orange-3);\n --wui-color-bg-surface-hover-pink: var(--wui-pink-3);\n --wui-color-bg-surface-hover-purple: var(--wui-purple-3);\n --wui-color-bg-surface-hover-success: var(--wui-success-3);\n --wui-color-bg-surface-hover-warning: var(--wui-warning-3);\n --wui-color-bg-surface-hover-yellow: var(--wui-yellow-3);\n --wui-color-bg-surface-info: var(--wui-blue-2);\n --wui-color-bg-surface-orange: var(--wui-orange-2);\n --wui-color-bg-surface-pink: var(--wui-pink-2);\n --wui-color-bg-surface-purple: var(--wui-purple-2);\n --wui-color-bg-surface-secondary: var(--wui-color-base-3);\n --wui-color-bg-surface-secondary-active: var(--wui-color-base-5);\n --wui-color-bg-surface-secondary-active-blue: var(--wui-blue-5);\n --wui-color-bg-surface-secondary-active-error: var(--wui-error-5);\n --wui-color-bg-surface-secondary-active-green: var(--wui-green-5);\n --wui-color-bg-surface-secondary-active-info: var(--wui-blue-5);\n --wui-color-bg-surface-secondary-active-orange: var(--wui-orange-5);\n --wui-color-bg-surface-secondary-active-pink: var(--wui-pink-5);\n --wui-color-bg-surface-secondary-active-purple: var(--wui-purple-5);\n --wui-color-bg-surface-secondary-active-success: var(--wui-success-5);\n --wui-color-bg-surface-secondary-active-warning: var(--wui-warning-5);\n --wui-color-bg-surface-secondary-active-yellow: var(--wui-yellow-5);\n --wui-color-bg-surface-secondary-blue: var(--wui-blue-3);\n --wui-color-bg-surface-secondary-error: var(--wui-error-3);\n --wui-color-bg-surface-secondary-green: var(--wui-green-3);\n --wui-color-bg-surface-secondary-hover: var(--wui-color-base-4);\n --wui-color-bg-surface-secondary-hover-blue: var(--wui-blue-4);\n --wui-color-bg-surface-secondary-hover-error: var(--wui-error-4);\n --wui-color-bg-surface-secondary-hover-green: var(--wui-green-4);\n --wui-color-bg-surface-secondary-hover-info: var(--wui-blue-4);\n --wui-color-bg-surface-secondary-hover-orange: var(--wui-orange-4);\n --wui-color-bg-surface-secondary-hover-pink: var(--wui-pink-4);\n --wui-color-bg-surface-secondary-hover-purple: var(--wui-purple-4);\n --wui-color-bg-surface-secondary-hover-success: var(--wui-success-4);\n --wui-color-bg-surface-secondary-hover-warning: var(--wui-warning-4);\n --wui-color-bg-surface-secondary-hover-yellow: var(--wui-yellow-4);\n --wui-color-bg-surface-secondary-info: var(--wui-blue-3);\n --wui-color-bg-surface-secondary-orange: var(--wui-orange-3);\n --wui-color-bg-surface-secondary-pink: var(--wui-pink-3);\n --wui-color-bg-surface-secondary-purple: var(--wui-purple-3);\n --wui-color-bg-surface-secondary-success: var(--wui-success-3);\n --wui-color-bg-surface-secondary-warning: var(--wui-warning-3);\n --wui-color-bg-surface-secondary-yellow: var(--wui-yellow-3);\n --wui-color-bg-surface-selected: var(--wui-blue-3);\n --wui-color-bg-surface-selected-active: var(--wui-blue-5);\n --wui-color-bg-surface-selected-hover: var(--wui-blue-4);\n --wui-color-bg-surface-success: var(--wui-success-2);\n --wui-color-bg-surface-tertiary: var(--wui-color-base-5);\n --wui-color-bg-surface-tertiary-blue: var(--wui-blue-5);\n --wui-color-bg-surface-tertiary-error: var(--wui-error-5);\n --wui-color-bg-surface-tertiary-green: var(--wui-green-5);\n --wui-color-bg-surface-tertiary-info: var(--wui-blue-6);\n --wui-color-bg-surface-tertiary-orange: var(--wui-orange-5);\n --wui-color-bg-surface-tertiary-pink: var(--wui-pink-5);\n --wui-color-bg-surface-tertiary-purple: var(--wui-purple-5);\n --wui-color-bg-surface-tertiary-success: var(--wui-success-5);\n --wui-color-bg-surface-tertiary-warning: var(--wui-warning-5);\n --wui-color-bg-surface-tertiary-yellow: var(--wui-yellow-5);\n --wui-color-bg-surface-warning: var(--wui-warning-2);\n --wui-color-bg-surface-yellow: var(--wui-yellow-2);\n --wui-color-bg-tooltip: #242528;\n --wui-color-border: var(--wui-color-base-6);\n --wui-color-border-active: var(--wui-color-base-9);\n --wui-color-border-active-blue: var(--wui-blue-9);\n --wui-color-border-active-error: var(--wui-error-9);\n --wui-color-border-active-green: var(--wui-green-9);\n --wui-color-border-active-info: var(--wui-blue-9);\n --wui-color-border-active-orange: var(--wui-orange-9);\n --wui-color-border-active-pink: var(--wui-pink-9);\n --wui-color-border-active-purple: var(--wui-purple-9);\n --wui-color-border-active-selected: #2949e5;\n --wui-color-border-active-success: var(--wui-success-9);\n --wui-color-border-active-warning: var(--wui-warning-9);\n --wui-color-border-active-yellow: var(--wui-yellow-9);\n --wui-color-border-blue: var(--wui-blue-6);\n --wui-color-border-disabled: var(--wui-gray-4);\n --wui-color-border-error: var(--wui-error-6);\n --wui-color-border-green: var(--wui-green-6);\n --wui-color-border-hover: var(--wui-color-base-8);\n --wui-color-border-hover-blue: var(--wui-blue-8);\n --wui-color-border-hover-green: var(--wui-green-8);\n --wui-color-border-hover-info: var(--wui-blue-8);\n --wui-color-border-hover-orange: var(--wui-orange-8);\n --wui-color-border-hover-pink: var(--wui-pink-8);\n --wui-color-border-hover-purple: var(--wui-purple-8);\n --wui-color-border-hover-selected: #81a4fe;\n --wui-color-border-hover-success: var(--wui-success-8);\n --wui-color-border-hover-warning: var(--wui-warning-8);\n --wui-color-border-hover-yellow: var(--wui-yellow-8);\n --wui-color-border-info: var(--wui-blue-6);\n --wui-color-border-orange: var(--wui-orange-6);\n --wui-color-border-pink: var(--wui-pink-6);\n --wui-color-border-purple: var(--wui-purple-6);\n --wui-color-border-secondary: var(--wui-color-base-8);\n --wui-color-border-secondary-active: var(--wui-color-base-11);\n --wui-color-border-secondary-active-blue: var(--wui-blue-11);\n --wui-color-border-secondary-active-error: var(--wui-error-11);\n --wui-color-border-secondary-active-green: var(--wui-green-11);\n --wui-color-border-secondary-active-info: var(--wui-blue-11);\n --wui-color-border-secondary-active-orange: var(--wui-orange-11);\n --wui-color-border-secondary-active-pink: var(--wui-pink-11);\n --wui-color-border-secondary-active-purple: var(--wui-purple-11);\n --wui-color-border-secondary-active-success: var(--wui-success-11);\n --wui-color-border-secondary-active-warning: var(--wui-warning-11);\n --wui-color-border-secondary-active-yellow: var(--wui-yellow-11);\n --wui-color-border-secondary-blue: var(--wui-blue-8);\n --wui-color-border-secondary-error: var(--wui-error-8);\n --wui-color-border-secondary-green: var(--wui-green-8);\n --wui-color-border-secondary-hover: var(--wui-color-base-10);\n --wui-color-border-secondary-hover-blue: var(--wui-blue-10);\n --wui-color-border-secondary-hover-error: var(--wui-error-10);\n --wui-color-border-secondary-hover-green: var(--wui-green-10);\n --wui-color-border-secondary-hover-info: var(--wui-blue-10);\n --wui-color-border-secondary-hover-orange: var(--wui-orange-10);\n --wui-color-border-secondary-hover-pink: var(--wui-pink-10);\n --wui-color-border-secondary-hover-purple: var(--wui-purple-10);\n --wui-color-border-secondary-hover-success: var(--wui-success-10);\n --wui-color-border-secondary-hover-warning: var(--wui-warning-10);\n --wui-color-border-secondary-hover-yellow: var(--wui-yellow-10);\n --wui-color-border-secondary-info: var(--wui-blue-8);\n --wui-color-border-secondary-orange: var(--wui-orange-8);\n --wui-color-border-secondary-pink: var(--wui-pink-8);\n --wui-color-border-secondary-purple: var(--wui-purple-8);\n --wui-color-border-secondary-success: var(--wui-success-8);\n --wui-color-border-secondary-warning: var(--wui-warning-8);\n --wui-color-border-secondary-yellow: var(--wui-yellow-8);\n --wui-color-border-selected: #b8d1ff;\n --wui-color-border-success: var(--wui-success-6);\n --wui-color-border-warning: var(--wui-warning-6);\n --wui-color-border-yellow: var(--wui-yellow-6);\n --wui-color-drop-shadow: #1f33991a;\n --wui-color-focus-color: var(--wui-blue-9);\n --wui-color-focus-ring: var(--wui-color-accent-9);\n --wui-color-focus-ring-blue: var(--wui-blue-9);\n --wui-color-focus-ring-disabled: var(--wui-gray-6);\n --wui-color-focus-ring-error: var(--wui-error-9);\n --wui-color-focus-ring-green: var(--wui-green-9);\n --wui-color-focus-ring-info: var(--wui-blue-9);\n --wui-color-focus-ring-orange: var(--wui-orange-9);\n --wui-color-focus-ring-pink: var(--wui-pink-9);\n --wui-color-focus-ring-purple: var(--wui-purple-9);\n --wui-color-focus-ring-success: var(--wui-success-9);\n --wui-color-focus-ring-warning: var(--wui-warning-9);\n --wui-color-focus-ring-yellow: var(--wui-yellow-9);\n --wui-color-icon: var(--wui-color-base-11);\n --wui-color-icon-blue: var(--wui-blue-11);\n --wui-color-icon-disabled: var(--wui-gray-8);\n --wui-color-icon-error: var(--wui-error-11);\n --wui-color-icon-green: var(--wui-green-11);\n --wui-color-icon-info: var(--wui-blue-11);\n --wui-color-icon-on-fill: var(--wui-color-accent-contrast);\n --wui-color-icon-on-fill-blue: var(--wui-blue-contrast);\n --wui-color-icon-on-fill-error: var(--wui-error-contrast);\n --wui-color-icon-on-fill-green: var(--wui-green-contrast);\n --wui-color-icon-on-fill-info: var(--wui-blue-contrast);\n --wui-color-icon-on-fill-orange: var(--wui-orange-contrast);\n --wui-color-icon-on-fill-pink: var(--wui-pink-contrast);\n --wui-color-icon-on-fill-purple: var(--wui-purple-contrast);\n --wui-color-icon-on-fill-success: var(--wui-success-contrast);\n --wui-color-icon-on-fill-warning: var(--wui-warning-2);\n --wui-color-icon-on-fill-yellow: var(--wui-yellow-contrast);\n --wui-color-icon-orange: var(--wui-orange-11);\n --wui-color-icon-pink: var(--wui-pink-11);\n --wui-color-icon-purple: var(--wui-purple-11);\n --wui-color-icon-selected: var(--wui-blue-9);\n --wui-color-icon-success: var(--wui-success-11);\n --wui-color-icon-warning: var(--wui-warning-11);\n --wui-color-icon-yellow: var(--wui-yellow-11);\n --wui-color-invalid-indicator: var(--wui-error-9);\n --wui-color-notification-pill-color: var(--wui-pink-9);\n --wui-color-segmented-color-text-override: var(--wui-color-text-selected);\n --wui-color-segmented-control-checked-background: var(--wui-color-bg-app);\n --wui-color-surface-token: var(--wui-gray-1);\n --wui-color-text: var(--wui-color-base-12);\n --wui-color-text-blue: var(--wui-blue-12);\n --wui-color-text-button: var(--wui-color-text-button-token);\n --wui-color-text-button-blue: var(--wui-blue-11);\n --wui-color-text-button-error: var(--wui-error-11);\n --wui-color-text-button-green: var(--wui-green-11);\n --wui-color-text-button-info: var(--wui-blue-11);\n --wui-color-text-button-orange: var(--wui-orange-11);\n --wui-color-text-button-pink: var(--wui-pink-11);\n --wui-color-text-button-purple: var(--wui-purple-11);\n --wui-color-text-button-success: var(--wui-success-11);\n --wui-color-text-button-token: var(--wui-gray-12);\n --wui-color-text-button-warning: var(--wui-warning-11);\n --wui-color-text-button-yellow: var(--wui-yellow-12);\n --wui-color-text-disabled: var(--wui-gray-10);\n --wui-color-text-error: var(--wui-error-11);\n --wui-color-text-green: var(--wui-green-12);\n --wui-color-text-info: var(--wui-blue-12);\n --wui-color-text-link: var(--wui-color-text-link-token);\n --wui-color-text-link-blue: var(--wui-blue-9);\n --wui-color-text-link-error: var(--wui-error-11);\n --wui-color-text-link-green: var(--wui-green-11);\n --wui-color-text-link-info: var(--wui-blue-9);\n --wui-color-text-link-orange: var(--wui-orange-11);\n --wui-color-text-link-pink: var(--wui-pink-11);\n --wui-color-text-link-purple: var(--wui-purple-11);\n --wui-color-text-link-success: var(--wui-success-9);\n --wui-color-text-link-token: var(--wui-color-accent-9);\n --wui-color-text-link-warning: var(--wui-warning-11);\n --wui-color-text-link-yellow: var(--wui-yellow-11);\n --wui-color-text-on-fill: var(--wui-color-accent-contrast);\n --wui-color-text-on-fill-blue: var(--wui-blue-2);\n --wui-color-text-on-fill-error: var(--wui-error-contrast);\n --wui-color-text-on-fill-green: var(--wui-green-contrast);\n --wui-color-text-on-fill-info: var(--wui-blue-contrast);\n --wui-color-text-on-fill-orange: var(--wui-orange-contrast);\n --wui-color-text-on-fill-pink: var(--wui-pink-contrast);\n --wui-color-text-on-fill-purple: var(--wui-purple-contrast);\n --wui-color-text-on-fill-success: var(--wui-success-contrast);\n --wui-color-text-on-fill-warning: var(--wui-warning-contrast);\n --wui-color-text-on-fill-white-selected: var(--wui-blue-9);\n --wui-color-text-on-fill-yellow: var(--wui-yellow-contrast);\n --wui-color-text-orange: var(--wui-orange-12);\n --wui-color-text-pink: var(--wui-pink-12);\n --wui-color-text-purple: var(--wui-purple-12);\n --wui-color-text-secondary: var(--wui-color-base-11);\n --wui-color-text-secondary-blue: var(--wui-blue-5);\n --wui-color-text-secondary-error: var(--wui-error-11);\n --wui-color-text-secondary-green: var(--wui-green-10);\n --wui-color-text-secondary-info: var(--wui-blue-11);\n --wui-color-text-secondary-orange: var(--wui-orange-10);\n --wui-color-text-secondary-pink: var(--wui-pink-10);\n --wui-color-text-secondary-purple: var(--wui-purple-11);\n --wui-color-text-secondary-success: var(--wui-success-11);\n --wui-color-text-secondary-warning: var(--wui-warning-11);\n --wui-color-text-secondary-yellow: var(--wui-yellow-10);\n --wui-color-text-selected: var(--wui-blue-9);\n --wui-color-text-success: var(--wui-success-12);\n --wui-color-text-warning: var(--wui-warning-12);\n --wui-color-text-yellow: var(--wui-yellow-11);\n --wui-elevation-01: 0px 4px 8px 0px var(--wui-color-drop-shadow);\n --wui-elevation-02: 0px 4px 24px 0px var(--wui-color-drop-shadow);\n --wui-error-1: #fffcfc;\n --wui-error-2: #fff7f7;\n --wui-error-3: #ffebea;\n --wui-error-4: #ffdcd9;\n --wui-error-5: #ffcdca;\n --wui-error-6: #febdb9;\n --wui-error-7: #f5a9a5;\n --wui-error-8: #eb8f8b;\n --wui-error-9: #e5484d;\n --wui-error-10: #d73840;\n --wui-error-11: #cc2e39;\n --wui-error-12: #64181b;\n --wui-error-alpha-1: #ff000003;\n --wui-error-alpha-2: #ff000008;\n --wui-error-alpha-3: #ff0d0014;\n --wui-error-alpha-4: #ff150026;\n --wui-error-alpha-5: #ff0f0036;\n --wui-error-alpha-6: #fc0f0045;\n --wui-error-alpha-7: #e30c0159;\n --wui-error-alpha-8: #d4090073;\n --wui-error-alpha-9: #db0007b8;\n --wui-error-alpha-10: #cc000ac7;\n --wui-error-alpha-11: #c1000ed1;\n --wui-error-alpha-12: #540003e8;\n --wui-error-contrast: #fff;\n --wui-error-surface: #fff5f5cc;\n --wui-gray-1: #fcfcfd;\n --wui-gray-2: #f9f9fb;\n --wui-gray-3: #f0f0f3;\n --wui-gray-4: #e8e8ec;\n --wui-gray-5: #e0e0e5;\n --wui-gray-6: #d9d9de;\n --wui-gray-7: #ceced5;\n --wui-gray-8: #bbbbc4;\n --wui-gray-9: #8d8d95;\n --wui-gray-10: #82828a;\n --wui-gray-11: #64646a;\n --wui-gray-12: #202024;\n --wui-gray-alpha-1: #00005503;\n --wui-gray-alpha-2: #00005505;\n --wui-gray-alpha-3: #0000330f;\n --wui-gray-alpha-4: #00002d17;\n --wui-gray-alpha-5: #00002a1f;\n --wui-gray-alpha-6: #00002226;\n --wui-gray-alpha-7: #00002530;\n --wui-gray-alpha-8: #00002245;\n --wui-gray-alpha-9: #00001273;\n --wui-gray-alpha-10: #0000117d;\n --wui-gray-alpha-11: #00000a9c;\n --wui-gray-alpha-12: #000005de;\n --wui-gray-contrast: #fff;\n --wui-gray-surface: #fffc;\n --wui-green-1: #fbfefa;\n --wui-green-2: #f5fbf4;\n --wui-green-3: #e7f8e5;\n --wui-green-4: #d8f2d4;\n --wui-green-5: #c6ebc0;\n --wui-green-6: #afe0a6;\n --wui-green-7: #8fd185;\n --wui-green-8: #5fbd51;\n --wui-green-9: #268713;\n --wui-green-10: #117900;\n --wui-green-11: #1e8106;\n --wui-green-12: #1e3d19;\n --wui-green-alpha-1: #33cc0005;\n --wui-green-alpha-2: #18a3000b;\n --wui-green-alpha-3: #14bb001a;\n --wui-green-alpha-4: #18b2012b;\n --wui-green-alpha-5: #19af003f;\n --wui-green-alpha-6: #1aa70059;\n --wui-green-alpha-7: #159f017a;\n --wui-green-alpha-8: #189f00b0;\n --wui-green-alpha-9: #159f00ae;\n --wui-green-alpha-10: #157d00ec;\n --wui-green-alpha-11: #117900;\n --wui-green-alpha-12: #197e00f9;\n --wui-green-contrast: #fff;\n --wui-green-surface: #f3faf1cc;\n --wui-motion-duration-01: 70ms;\n --wui-motion-duration-02: 110ms;\n --wui-motion-duration-03: 150ms;\n --wui-motion-duration-04: 240ms;\n --wui-motion-duration-05: 400ms;\n --wui-motion-duration-06: 700ms;\n --wui-motion-ease: cubic-bezier(0.25, 0.1, 0.25, 1);\n --wui-motion-ease-in: cubic-bezier(0.42, 0, 1, 1);\n --wui-motion-ease-in-out: cubic-bezier(0.42, 0, 0.58, 1);\n --wui-motion-ease-out: cubic-bezier(0.19, 0.91, 0.38, 1);\n --wui-motion-linear: cubic-bezier(0, 0, 1, 1);\n --wui-orange-1: #fffcfb;\n --wui-orange-2: #fff7f5;\n --wui-orange-3: #ffebe6;\n --wui-orange-4: #ffdbce;\n --wui-orange-5: #fcbfcb;\n --wui-orange-6: #ffbdaa;\n --wui-orange-7: #f4aa95;\n --wui-orange-8: #ea9178;\n --wui-orange-9: #d1451a;\n --wui-orange-10: #c23600;\n --wui-orange-11: #ce4216;\n --wui-orange-12: #592b1e;\n --wui-orange-alpha-1: #ff400005;\n --wui-orange-alpha-2: #ff33000a;\n --wui-orange-alpha-3: #ff33001a;\n --wui-orange-alpha-4: #ff440030;\n --wui-orange-alpha-5: #ff400045;\n --wui-orange-alpha-6: #ff390054;\n --wui-orange-alpha-7: #e533016b;\n --wui-orange-alpha-8: #d8300087;\n --wui-orange-alpha-9: #cc3000e5;\n --wui-orange-alpha-10: #c23600;\n --wui-orange-alpha-11: #c93000e8;\n --wui-orange-alpha-12: #430f00e0;\n --wui-orange-contrast: #fff;\n --wui-orange-surface: #fff5f3cc;\n --wui-pink-1: #fffcfd;\n --wui-pink-2: #fff7fa;\n --wui-pink-3: #ffe8f3;\n --wui-pink-4: #ffdaeb;\n --wui-pink-5: #fdcbe2;\n --wui-pink-6: #f7bcd8;\n --wui-pink-7: #efa8ca;\n --wui-pink-8: #e68eba;\n --wui-pink-9: #ff40b3;\n --wui-pink-10: #f12fa7;\n --wui-pink-11: #cd0089;\n --wui-pink-12: #680445;\n --wui-pink-alpha-1: #ff005503;\n --wui-pink-alpha-2: #ff006008;\n --wui-pink-alpha-3: #ff007a17;\n --wui-pink-alpha-4: #ff007626;\n --wui-pink-alpha-5: #f6007133;\n --wui-pink-alpha-6: #e1006b42;\n --wui-pink-alpha-7: #d1006457;\n --wui-pink-alpha-8: #c7006470;\n --wui-pink-alpha-9: #ff009abf;\n --wui-pink-alpha-10: #ee0093d1;\n --wui-pink-alpha-11: #cd0089;\n --wui-pink-alpha-12: #660042fa;\n --wui-pink-contrast: #fff;\n --wui-pink-surface: #fff5f9cc;\n --wui-purple-1: #fefcff;\n --wui-purple-2: #fdf7ff;\n --wui-purple-3: #fbeaff;\n --wui-purple-4: #f7ddff;\n --wui-purple-5: #f2ceff;\n --wui-purple-6: #eabdff;\n --wui-purple-7: #e0a5fc;\n --wui-purple-8: #d285f7;\n --wui-purple-9: #ac12e0;\n --wui-purple-10: #9a09c9;\n --wui-purple-11: #9b0bca;\n --wui-purple-12: #550072;\n --wui-purple-alpha-1: #aa00ff03;\n --wui-purple-alpha-2: #c000ff08;\n --wui-purple-alpha-3: #cf00ff14;\n --wui-purple-alpha-4: #c300ff21;\n --wui-purple-alpha-5: #bc00ff30;\n --wui-purple-alpha-6: #ae00ff42;\n --wui-purple-alpha-7: #a801f759;\n --wui-purple-alpha-8: #a101ef7a;\n --wui-purple-alpha-9: #a600deed;\n --wui-purple-alpha-10: #9600c7f5;\n --wui-purple-alpha-11: #9700c8f5;\n --wui-purple-alpha-12: #550072;\n --wui-purple-contrast: #fff;\n --wui-purple-surface: #fdf5ffcc;\n --wui-red-1: #fffcfc;\n --wui-red-2: #fff7f7;\n --wui-red-3: #ffe9e9;\n --wui-red-4: #ffd9d9;\n --wui-red-5: #ffcaca;\n --wui-red-6: #ffbaba;\n --wui-red-7: #fca5a6;\n --wui-red-8: #f5898c;\n --wui-red-9: #ff2b51;\n --wui-red-10: #f10845;\n --wui-red-11: #db0035;\n --wui-red-12: #6d021a;\n --wui-red-alpha-1: #ff000003;\n --wui-red-alpha-2: #ff000008;\n --wui-red-alpha-3: #ff000017;\n --wui-red-alpha-4: #ff000026;\n --wui-red-alpha-5: #ff000036;\n --wui-red-alpha-6: #ff000045;\n --wui-red-alpha-7: #f7010359;\n --wui-red-alpha-8: #ea000775;\n --wui-red-alpha-9: #ff002ed4;\n --wui-red-alpha-10: #f1003ff7;\n --wui-red-alpha-11: #db0035;\n --wui-red-alpha-12: #6c0018fc;\n --wui-red-contrast: #fff;\n --wui-red-surface: #fff5f5cc;\n --wui-space-00: 0px;\n --wui-space-01: 4px;\n --wui-space-02: 8px;\n --wui-space-03: 12px;\n --wui-space-04: 16px;\n --wui-space-05: 24px;\n --wui-space-06: 32px;\n --wui-space-07: 40px;\n --wui-space-08: 48px;\n --wui-space-09: 64px;\n --wui-success-1: #fbfefc;\n --wui-success-2: #f4fbf7;\n --wui-success-3: #e5f6eb;\n --wui-success-4: #d6f1df;\n --wui-success-5: #c4e8d1;\n --wui-success-6: #adddc0;\n --wui-success-7: #8fcea8;\n --wui-success-8: #60b887;\n --wui-success-9: #30a46c;\n --wui-success-10: #289662;\n --wui-success-11: #00814c;\n --wui-success-12: #1d3b2a;\n --wui-success-alpha-1: #00c04005;\n --wui-success-alpha-2: #00a3460a;\n --wui-success-alpha-3: #00a73b1a;\n --wui-success-alpha-4: #00a83829;\n --wui-success-alpha-5: #019c393b;\n --wui-success-alpha-6: #00963c52;\n --wui-success-alpha-7: #00903970;\n --wui-success-alpha-8: #008d3f9e;\n --wui-success-alpha-9: #008f4acf;\n --wui-success-alpha-10: #008345d6;\n --wui-success-alpha-11: #00814c;\n --wui-success-alpha-12: #00220fe3;\n --wui-success-contrast: #fff;\n --wui-success-surface: #f1faf5cc;\n --wui-typography-body-1: var(--wui-typography-body-1-font-weight) var(--wui-typography-body-1-font-size)/var(--wui-typography-body-1-line-height) var(--wui-typography-body-1-font-family);\n --wui-typography-body-1-font-family: var(--wui-typography-family-default);\n --wui-typography-body-1-font-size: 20px;\n --wui-typography-body-1-font-weight: var(--wui-typography-weight-body);\n --wui-typography-body-1-letter-spacing: 0px;\n --wui-typography-body-1-line-height: 30px;\n --wui-typography-body-1-paragraph-spacing: 16px;\n --wui-typography-body-2: var(--wui-typography-body-2-font-weight) var(--wui-typography-body-2-font-size)/var(--wui-typography-body-2-line-height) var(--wui-typography-body-2-font-family);\n --wui-typography-body-2-font-family: var(--wui-typography-family-default);\n --wui-typography-body-2-font-size: 16px;\n --wui-typography-body-2-font-weight: var(--wui-typography-weight-body);\n --wui-typography-body-2-letter-spacing: 0px;\n --wui-typography-body-2-line-height: 26px;\n --wui-typography-body-2-paragraph-spacing: 12px;\n --wui-typography-body-3: var(--wui-typography-body-3-font-weight) var(--wui-typography-body-3-font-size)/var(--wui-typography-body-3-line-height) var(--wui-typography-body-3-font-family);\n --wui-typography-body-3-font-family: var(--wui-typography-family-default);\n --wui-typography-body-3-font-size: 14px;\n --wui-typography-body-3-font-weight: var(--wui-typography-weight-body);\n --wui-typography-body-3-letter-spacing: 0px;\n --wui-typography-body-3-line-height: 22px;\n --wui-typography-body-3-paragraph-spacing: 8px;\n --wui-typography-body-4: var(--wui-typography-body-4-font-weight) var(--wui-typography-body-4-font-size)/var(--wui-typography-body-4-line-height) var(--wui-typography-body-4-font-family);\n --wui-typography-body-4-font-family: var(--wui-typography-family-default);\n --wui-typography-body-4-font-size: 12px;\n --wui-typography-body-4-font-weight: var(--wui-typography-weight-body);\n --wui-typography-body-4-letter-spacing: 0px;\n --wui-typography-body-4-line-height: 18px;\n --wui-typography-body-4-paragraph-spacing: 8px;\n --wui-typography-family-brand: \"GT Walsheim\", sans-serif;\n --wui-typography-family-default: intervariable, sans-serif;\n --wui-typography-family-mono: \"IBM Plex Mono\", monospace;\n --wui-typography-heading-1: var(--wui-typography-heading-1-font-weight) var(--wui-typography-heading-1-font-size)/var(--wui-typography-heading-1-line-height) var(--wui-typography-heading-1-font-family);\n --wui-typography-heading-1-font-family: var(--wui-typography-family-brand);\n --wui-typography-heading-1-font-size: 36px;\n --wui-typography-heading-1-font-weight: var(--wui-typography-weight-brand-black);\n --wui-typography-heading-1-letter-spacing: 0px;\n --wui-typography-heading-1-line-height: 44px;\n --wui-typography-heading-2: var(--wui-typography-heading-2-font-weight) var(--wui-typography-heading-2-font-size)/var(--wui-typography-heading-2-line-height) var(--wui-typography-heading-2-font-family);\n --wui-typography-heading-2-font-family: var(--wui-typography-family-brand);\n --wui-typography-heading-2-font-size: 32px;\n --wui-typography-heading-2-font-weight: var(--wui-typography-weight-brand-black);\n --wui-typography-heading-2-letter-spacing: 0px;\n --wui-typography-heading-2-line-height: 38px;\n --wui-typography-heading-3: var(--wui-typography-heading-3-font-weight) var(--wui-typography-heading-3-font-size)/var(--wui-typography-heading-3-line-height) var(--wui-typography-heading-3-font-family);\n --wui-typography-heading-3-font-family: var(--wui-typography-family-brand);\n --wui-typography-heading-3-font-size: 24px;\n --wui-typography-heading-3-font-weight: var(--wui-typography-weight-brand-bold);\n --wui-typography-heading-3-letter-spacing: 0px;\n --wui-typography-heading-3-line-height: 30px;\n --wui-typography-heading-4: var(--wui-typography-heading-4-font-weight) var(--wui-typography-heading-4-font-size)/var(--wui-typography-heading-4-line-height) var(--wui-typography-heading-4-font-family);\n --wui-typography-heading-4-font-family: var(--wui-typography-family-brand);\n --wui-typography-heading-4-font-size: 18px;\n --wui-typography-heading-4-font-weight: var(--wui-typography-weight-brand-bold);\n --wui-typography-heading-4-letter-spacing: 0px;\n --wui-typography-heading-4-line-height: 24px;\n --wui-typography-heading-5: var(--wui-typography-heading-5-font-weight) var(--wui-typography-heading-5-font-size)/var(--wui-typography-heading-5-line-height) var(--wui-typography-heading-5-font-family);\n --wui-typography-heading-5-font-family: var(--wui-typography-family-brand);\n --wui-typography-heading-5-font-size: 16px;\n --wui-typography-heading-5-font-weight: var(--wui-typography-weight-brand-bold);\n --wui-typography-heading-5-letter-spacing: 0px;\n --wui-typography-heading-5-line-height: 22px;\n --wui-typography-heading-6: var(--wui-typography-heading-6-font-weight) var(--wui-typography-heading-6-font-size)/var(--wui-typography-heading-6-line-height) var(--wui-typography-heading-6-font-family);\n --wui-typography-heading-6-font-family: var(--wui-typography-family-brand);\n --wui-typography-heading-6-font-size: 14px;\n --wui-typography-heading-6-font-weight: var(--wui-typography-weight-brand-bold);\n --wui-typography-heading-6-letter-spacing: 0px;\n --wui-typography-heading-6-line-height: 18px;\n --wui-typography-heading-hero: var(--wui-typography-heading-hero-font-weight) var(--wui-typography-heading-hero-font-size)/var(--wui-typography-heading-hero-line-height) var(--wui-typography-heading-hero-font-family);\n --wui-typography-heading-hero-font-family: var(--wui-typography-family-brand);\n --wui-typography-heading-hero-font-size: 48px;\n --wui-typography-heading-hero-font-weight: var(--wui-typography-weight-brand-black);\n --wui-typography-heading-hero-letter-spacing: 0px;\n --wui-typography-heading-hero-line-height: 58px;\n --wui-typography-label-1: var(--wui-typography-label-1-font-weight) var(--wui-typography-label-1-font-size)/var(--wui-typography-label-1-line-height) var(--wui-typography-label-1-font-family);\n --wui-typography-label-1-font-family: var(--wui-typography-family-default);\n --wui-typography-label-1-font-size: 18px;\n --wui-typography-label-1-font-weight: var(--wui-typography-weight-label);\n --wui-typography-label-1-letter-spacing: 0px;\n --wui-typography-label-1-line-height: 24px;\n --wui-typography-label-2: var(--wui-typography-label-2-font-weight) var(--wui-typography-label-2-font-size)/var(--wui-typography-label-2-line-height) var(--wui-typography-label-2-font-family);\n --wui-typography-label-2-font-family: var(--wui-typography-family-default);\n --wui-typography-label-2-font-size: 16px;\n --wui-typography-label-2-font-weight: var(--wui-typography-weight-label);\n --wui-typography-label-2-letter-spacing: 0px;\n --wui-typography-label-2-line-height: 18px;\n --wui-typography-label-3: var(--wui-typography-label-3-font-weight) var(--wui-typography-label-3-font-size)/var(--wui-typography-label-3-line-height) var(--wui-typography-label-3-font-family);\n --wui-typography-label-3-font-family: var(--wui-typography-family-default);\n --wui-typography-label-3-font-size: 14px;\n --wui-typography-label-3-font-weight: var(--wui-typography-weight-label);\n --wui-typography-label-3-letter-spacing: 0px;\n --wui-typography-label-3-line-height: 16px;\n --wui-typography-label-4: var(--wui-typography-label-4-font-weight) var(--wui-typography-label-4-font-size)/var(--wui-typography-label-4-line-height) var(--wui-typography-label-4-font-family);\n --wui-typography-label-4-font-family: var(--wui-typography-family-default);\n --wui-typography-label-4-font-size: 12px;\n --wui-typography-label-4-font-weight: var(--wui-typography-weight-label);\n --wui-typography-label-4-letter-spacing: 0px;\n --wui-typography-label-4-line-height: 14px;\n --wui-typography-weight-body: 425;\n --wui-typography-weight-body-bold: 700;\n --wui-typography-weight-brand-black: 700;\n --wui-typography-weight-brand-bold: 600;\n --wui-typography-weight-label: 475;\n --wui-typography-weight-label-bold: 600;\n --wui-vendor-hubspot-1: #fefcfb;\n --wui-vendor-hubspot-2: #fff5f2;\n --wui-vendor-hubspot-3: #ffe9e2;\n --wui-vendor-hubspot-4: #ffd7c9;\n --wui-vendor-hubspot-5: #ffc8b7;\n --wui-vendor-hubspot-6: #ffb8a3;\n --wui-vendor-hubspot-7: #ffa48d;\n --wui-vendor-hubspot-8: #f68a70;\n --wui-vendor-hubspot-9: #ff5c36;\n --wui-vendor-hubspot-10: #f24d25;\n --wui-vendor-hubspot-11: #d93a0f;\n --wui-vendor-hubspot-12: #5b2a1e;\n --wui-vendor-hubspot-contrast: #fff;\n --wui-vendor-hubspot-surface: #fff3efcc;\n --wui-vendor-marketo-1: #fdfdff;\n --wui-vendor-marketo-2: #f7f8ff;\n --wui-vendor-marketo-3: #eff2ff;\n --wui-vendor-marketo-4: #e3e8ff;\n --wui-vendor-marketo-5: #d5ddff;\n --wui-vendor-marketo-6: #c5cfff;\n --wui-vendor-marketo-7: #b0bcfa;\n --wui-vendor-marketo-8: #93a0f2;\n --wui-vendor-marketo-9: #4c50cc;\n --wui-vendor-marketo-10: #4040bb;\n --wui-vendor-marketo-11: #4f55c7;\n --wui-vendor-marketo-12: #252a62;\n --wui-vendor-marketo-contrast: #fff;\n --wui-vendor-marketo-surface: #f5f6ffcc;\n --wui-vendor-pardot-1: #fafdff;\n --wui-vendor-pardot-2: #f3fafe;\n --wui-vendor-pardot-3: #e1f5ff;\n --wui-vendor-pardot-4: #ceeeff;\n --wui-vendor-pardot-5: #bae5ff;\n --wui-vendor-pardot-6: #a4d9fa;\n --wui-vendor-pardot-7: #85c9f1;\n --wui-vendor-pardot-8: #4fb3e8;\n --wui-vendor-pardot-9: #00a1e0;\n --wui-vendor-pardot-10: #0094cf;\n --wui-vendor-pardot-11: #0079b5;\n --wui-vendor-pardot-12: #0c3a51;\n --wui-vendor-pardot-contrast: #fff;\n --wui-vendor-pardot-surface: #f0f9fecc;\n --wui-warning-1: #fdfdfa;\n --wui-warning-2: #fefceb;\n --wui-warning-3: #fff9bf;\n --wui-warning-4: #fef29f;\n --wui-warning-5: #f8e981;\n --wui-warning-6: #e9da79;\n --wui-warning-7: #d8cb75;\n --wui-warning-8: #c4b54f;\n --wui-warning-9: #ffe62a;\n --wui-warning-10: #f3dd45;\n --wui-warning-11: #897a00;\n --wui-warning-12: #413d23;\n --wui-warning-alpha-1: #99990005;\n --wui-warning-alpha-2: #f3d90014;\n --wui-warning-alpha-3: #ffe80040;\n --wui-warning-alpha-4: #fddd0061;\n --wui-warning-alpha-5: #f1d3007d;\n --wui-warning-alpha-6: #d6b90087;\n --wui-warning-alpha-7: #b79f008a;\n --wui-warning-alpha-8: #aa9400b0;\n --wui-warning-alpha-9: #ffe100d6;\n --wui-warning-alpha-10: #efd100ba;\n --wui-warning-alpha-11: #897a00;\n --wui-warning-alpha-12: #231e00db;\n --wui-warning-contrast: #262209;\n --wui-warning-surface: #fefbe6cc;\n --wui-yellow-1: #fdfdf8;\n --wui-yellow-2: #fbfcea;\n --wui-yellow-3: #f6fbb8;\n --wui-yellow-4: #f0f491;\n --wui-yellow-5: #e7eb6d;\n --wui-yellow-6: #d8dd5d;\n --wui-yellow-7: #c8cc52;\n --wui-yellow-8: #b3b600;\n --wui-yellow-9: #bcbf19;\n --wui-yellow-10: #b1b400;\n --wui-yellow-11: #7a7b00;\n --wui-yellow-12: #3e3f14;\n --wui-yellow-alpha-1: #b7b70008;\n --wui-yellow-alpha-2: #cfdb0014;\n --wui-yellow-alpha-3: #dff10047;\n --wui-yellow-alpha-4: #dde6006e;\n --wui-yellow-alpha-5: #d5dc0091;\n --wui-yellow-alpha-6: #c2ca00a3;\n --wui-yellow-alpha-7: #aeb400ad;\n --wui-yellow-alpha-8: #b3b600;\n --wui-yellow-alpha-9: #b5b800e5;\n --wui-yellow-alpha-10: #b1b400;\n --wui-yellow-alpha-11: #7a7b00;\n --wui-yellow-alpha-12: #2e2f00eb;\n --wui-yellow-contrast: #22230b;\n --wui-yellow-surface: #fafbe5cc;\n --wui-zindex-backdrop: 500;\n --wui-zindex-menu: 500;\n --wui-zindex-modal: 500;\n --wui-zindex-popover: 500;\n --wui-zindex-select: 500;\n --wui-zindex-tooltip: 500;\n --wui-zindex-under: -1;\n}\n"}
|
|
77
|
-
:root
|
|
78
|
-
[data-wui-theme='true'] {
|
|
79
|
-
${"/*\n * Typography weight overlay\n *\n * Reintroduces the var-with-fallback override hooks for heading weights. These\n * vars are part of the @wistia/ui public surface (see CustomizableThemeWrapper)\n * and consumers override them at any cascade level. DTCG aliases compile to a\n * single resolved value, so the fallback pattern can't live in the generated\n * tokens.css.\n *\n * Order matters: this file MUST follow the generated tokens.css so its\n * declarations win the cascade, and MUST precede typographyLegacyAliases.css so\n * the override hook propagates through any legacy `*-weight` alias as well.\n */\n--wui-typography-heading-hero-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-black)\n);\n--wui-typography-heading-1-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-black)\n);\n--wui-typography-heading-2-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-black)\n);\n--wui-typography-heading-3-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-bold)\n);\n--wui-typography-heading-4-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-bold)\n);\n--wui-typography-heading-5-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-bold)\n);\n--wui-typography-heading-6-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-bold)\n);\n"}
|
|
80
|
-
${"/*\n * Legacy typography sub-property aliases\n *\n * Terrazzo's plugin-css emits typography composite sub-properties using DTCG\n * names verbatim (kebab-cased):\n * --wui-typography-<style>-font-family\n * --wui-typography-<style>-font-size\n * --wui-typography-<style>-font-weight\n *\n * Prior versions of @wistia/ui exposed shortened legacy names:\n * --wui-typography-<style>-family\n * --wui-typography-<style>-size\n * --wui-typography-<style>-weight\n *\n * These aliases preserve that surface so downstream apps (notably wistia/wistia)\n * keep working unchanged after the Terrazzo migration. Once all known consumers\n * have migrated to the DTCG names, delete this file and remove the import from\n * designTokens/index.tsx.\n *\n * Note: `line-height` and `paragraph-spacing` sub-properties are unchanged\n * between DTCG and the prior surface, so no aliases are required for those.\n *\n * --------------------------------------------------------------------------\n * Migrating consumers in wistia/wistia (run from the VMA repo root):\n *\n * # 1. List every legacy reference site:\n * grep -rnE --include='*.ts' --include='*.tsx' --include='*.css' \\\n * '--wui-typography-(heading-hero|heading-[0-9]|body-[0-9]|label-[0-9])-(family|size|weight)' \\\n * frontend\n *\n * # 2. Apply the rename in-place (BSD sed on macOS):\n * grep -rlE --include='*.ts' --include='*.tsx' --include='*.css' \\\n * '--wui-typography-(heading-hero|heading-[0-9]|body-[0-9]|label-[0-9])-(family|size|weight)' \\\n * frontend \\\n * | xargs sed -i '' -E \\\n * 's/(--wui-typography-(heading-hero|heading-[0-9]|body-[0-9]|label-[0-9]))-(family|size|weight)/\\1-font-\\3/g'\n *\n * # 3. (GNU sed / Linux variant — drop the empty '' after -i):\n * # ... | xargs sed -i -E '...'\n *\n * Special case: frontend/authentication/css/redesign/wistia-ui/design-tokens/\n * typography.css *defines* the legacy names itself (not consumed from\n * @wistia/ui). It will keep working post-rename, but should be migrated for\n * consistency.\n * --------------------------------------------------------------------------\n */\n--wui-typography-heading-hero-family: var(--wui-typography-heading-hero-font-family);\n--wui-typography-heading-hero-size: var(--wui-typography-heading-hero-font-size);\n--wui-typography-heading-hero-weight: var(--wui-typography-heading-hero-font-weight);\n--wui-typography-heading-1-family: var(--wui-typography-heading-1-font-family);\n--wui-typography-heading-1-size: var(--wui-typography-heading-1-font-size);\n--wui-typography-heading-1-weight: var(--wui-typography-heading-1-font-weight);\n--wui-typography-heading-2-family: var(--wui-typography-heading-2-font-family);\n--wui-typography-heading-2-size: var(--wui-typography-heading-2-font-size);\n--wui-typography-heading-2-weight: var(--wui-typography-heading-2-font-weight);\n--wui-typography-heading-3-family: var(--wui-typography-heading-3-font-family);\n--wui-typography-heading-3-size: var(--wui-typography-heading-3-font-size);\n--wui-typography-heading-3-weight: var(--wui-typography-heading-3-font-weight);\n--wui-typography-heading-4-family: var(--wui-typography-heading-4-font-family);\n--wui-typography-heading-4-size: var(--wui-typography-heading-4-font-size);\n--wui-typography-heading-4-weight: var(--wui-typography-heading-4-font-weight);\n--wui-typography-heading-5-family: var(--wui-typography-heading-5-font-family);\n--wui-typography-heading-5-size: var(--wui-typography-heading-5-font-size);\n--wui-typography-heading-5-weight: var(--wui-typography-heading-5-font-weight);\n--wui-typography-heading-6-family: var(--wui-typography-heading-6-font-family);\n--wui-typography-heading-6-size: var(--wui-typography-heading-6-font-size);\n--wui-typography-heading-6-weight: var(--wui-typography-heading-6-font-weight);\n--wui-typography-body-1-family: var(--wui-typography-body-1-font-family);\n--wui-typography-body-1-size: var(--wui-typography-body-1-font-size);\n--wui-typography-body-1-weight: var(--wui-typography-body-1-font-weight);\n--wui-typography-body-2-family: var(--wui-typography-body-2-font-family);\n--wui-typography-body-2-size: var(--wui-typography-body-2-font-size);\n--wui-typography-body-2-weight: var(--wui-typography-body-2-font-weight);\n--wui-typography-body-3-family: var(--wui-typography-body-3-font-family);\n--wui-typography-body-3-size: var(--wui-typography-body-3-font-size);\n--wui-typography-body-3-weight: var(--wui-typography-body-3-font-weight);\n--wui-typography-body-4-family: var(--wui-typography-body-4-font-family);\n--wui-typography-body-4-size: var(--wui-typography-body-4-font-size);\n--wui-typography-body-4-weight: var(--wui-typography-body-4-font-weight);\n--wui-typography-label-1-family: var(--wui-typography-label-1-font-family);\n--wui-typography-label-1-size: var(--wui-typography-label-1-font-size);\n--wui-typography-label-1-weight: var(--wui-typography-label-1-font-weight);\n--wui-typography-label-2-family: var(--wui-typography-label-2-font-family);\n--wui-typography-label-2-size: var(--wui-typography-label-2-font-size);\n--wui-typography-label-2-weight: var(--wui-typography-label-2-font-weight);\n--wui-typography-label-3-family: var(--wui-typography-label-3-font-family);\n--wui-typography-label-3-size: var(--wui-typography-label-3-font-size);\n--wui-typography-label-3-weight: var(--wui-typography-label-3-font-weight);\n--wui-typography-label-4-family: var(--wui-typography-label-4-font-family);\n--wui-typography-label-4-size: var(--wui-typography-label-4-font-size);\n--wui-typography-label-4-weight: var(--wui-typography-label-4-font-weight);\n"}
|
|
81
|
-
}
|
|
71
|
+
${"/*\n * Typography weight overlay\n *\n * Reintroduces the var-with-fallback override hooks for heading weights. These\n * vars are part of the @wistia/ui public surface (see CustomizableThemeWrapper)\n * and consumers override them at any cascade level. DTCG aliases compile to a\n * single resolved value, so the fallback pattern can't live in the generated\n * tokens.css.\n *\n * Order matters: this file MUST follow the generated tokens.css so its\n * declarations win the cascade, and MUST precede typographyLegacyAliases.css so\n * the override hook propagates through any legacy `*-weight` alias as well.\n */\n:root,\n[data-wui-theme='true'] {\n --wui-typography-heading-hero-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-black)\n );\n --wui-typography-heading-1-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-black)\n );\n --wui-typography-heading-2-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-black)\n );\n --wui-typography-heading-3-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-bold)\n );\n --wui-typography-heading-4-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-bold)\n );\n --wui-typography-heading-5-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-bold)\n );\n --wui-typography-heading-6-font-weight: var(\n --wui-typography-weight-heading,\n var(--wui-typography-weight-brand-bold)\n );\n}\n"}
|
|
72
|
+
${"/*\n * Legacy typography sub-property aliases\n *\n * Terrazzo's plugin-css emits typography composite sub-properties using DTCG\n * names verbatim (kebab-cased):\n * --wui-typography-<style>-font-family\n * --wui-typography-<style>-font-size\n * --wui-typography-<style>-font-weight\n *\n * Prior versions of @wistia/ui exposed shortened legacy names:\n * --wui-typography-<style>-family\n * --wui-typography-<style>-size\n * --wui-typography-<style>-weight\n *\n * These aliases preserve that surface so downstream apps (notably wistia/wistia)\n * keep working unchanged after the Terrazzo migration. Once all known consumers\n * have migrated to the DTCG names, delete this file and remove the import from\n * designTokens/index.tsx.\n *\n * Note: `line-height` and `paragraph-spacing` sub-properties are unchanged\n * between DTCG and the prior surface, so no aliases are required for those.\n *\n * --------------------------------------------------------------------------\n * Migrating consumers in wistia/wistia (run from the VMA repo root):\n *\n * # 1. List every legacy reference site:\n * grep -rnE --include='*.ts' --include='*.tsx' --include='*.css' \\\n * '--wui-typography-(heading-hero|heading-[0-9]|body-[0-9]|label-[0-9])-(family|size|weight)' \\\n * frontend\n *\n * # 2. Apply the rename in-place (BSD sed on macOS):\n * grep -rlE --include='*.ts' --include='*.tsx' --include='*.css' \\\n * '--wui-typography-(heading-hero|heading-[0-9]|body-[0-9]|label-[0-9])-(family|size|weight)' \\\n * frontend \\\n * | xargs sed -i '' -E \\\n * 's/(--wui-typography-(heading-hero|heading-[0-9]|body-[0-9]|label-[0-9]))-(family|size|weight)/\\1-font-\\3/g'\n *\n * # 3. (GNU sed / Linux variant — drop the empty '' after -i):\n * # ... | xargs sed -i -E '...'\n *\n * Special case: frontend/authentication/css/redesign/wistia-ui/design-tokens/\n * typography.css *defines* the legacy names itself (not consumed from\n * @wistia/ui). It will keep working post-rename, but should be migrated for\n * consistency.\n * --------------------------------------------------------------------------\n */\n:root,\n[data-wui-theme='true'] {\n --wui-typography-heading-hero-family: var(--wui-typography-heading-hero-font-family);\n --wui-typography-heading-hero-size: var(--wui-typography-heading-hero-font-size);\n --wui-typography-heading-hero-weight: var(--wui-typography-heading-hero-font-weight);\n --wui-typography-heading-1-family: var(--wui-typography-heading-1-font-family);\n --wui-typography-heading-1-size: var(--wui-typography-heading-1-font-size);\n --wui-typography-heading-1-weight: var(--wui-typography-heading-1-font-weight);\n --wui-typography-heading-2-family: var(--wui-typography-heading-2-font-family);\n --wui-typography-heading-2-size: var(--wui-typography-heading-2-font-size);\n --wui-typography-heading-2-weight: var(--wui-typography-heading-2-font-weight);\n --wui-typography-heading-3-family: var(--wui-typography-heading-3-font-family);\n --wui-typography-heading-3-size: var(--wui-typography-heading-3-font-size);\n --wui-typography-heading-3-weight: var(--wui-typography-heading-3-font-weight);\n --wui-typography-heading-4-family: var(--wui-typography-heading-4-font-family);\n --wui-typography-heading-4-size: var(--wui-typography-heading-4-font-size);\n --wui-typography-heading-4-weight: var(--wui-typography-heading-4-font-weight);\n --wui-typography-heading-5-family: var(--wui-typography-heading-5-font-family);\n --wui-typography-heading-5-size: var(--wui-typography-heading-5-font-size);\n --wui-typography-heading-5-weight: var(--wui-typography-heading-5-font-weight);\n --wui-typography-heading-6-family: var(--wui-typography-heading-6-font-family);\n --wui-typography-heading-6-size: var(--wui-typography-heading-6-font-size);\n --wui-typography-heading-6-weight: var(--wui-typography-heading-6-font-weight);\n --wui-typography-body-1-family: var(--wui-typography-body-1-font-family);\n --wui-typography-body-1-size: var(--wui-typography-body-1-font-size);\n --wui-typography-body-1-weight: var(--wui-typography-body-1-font-weight);\n --wui-typography-body-2-family: var(--wui-typography-body-2-font-family);\n --wui-typography-body-2-size: var(--wui-typography-body-2-font-size);\n --wui-typography-body-2-weight: var(--wui-typography-body-2-font-weight);\n --wui-typography-body-3-family: var(--wui-typography-body-3-font-family);\n --wui-typography-body-3-size: var(--wui-typography-body-3-font-size);\n --wui-typography-body-3-weight: var(--wui-typography-body-3-font-weight);\n --wui-typography-body-4-family: var(--wui-typography-body-4-font-family);\n --wui-typography-body-4-size: var(--wui-typography-body-4-font-size);\n --wui-typography-body-4-weight: var(--wui-typography-body-4-font-weight);\n --wui-typography-label-1-family: var(--wui-typography-label-1-font-family);\n --wui-typography-label-1-size: var(--wui-typography-label-1-font-size);\n --wui-typography-label-1-weight: var(--wui-typography-label-1-font-weight);\n --wui-typography-label-2-family: var(--wui-typography-label-2-font-family);\n --wui-typography-label-2-size: var(--wui-typography-label-2-font-size);\n --wui-typography-label-2-weight: var(--wui-typography-label-2-font-weight);\n --wui-typography-label-3-family: var(--wui-typography-label-3-font-family);\n --wui-typography-label-3-size: var(--wui-typography-label-3-font-size);\n --wui-typography-label-3-weight: var(--wui-typography-label-3-font-weight);\n --wui-typography-label-4-family: var(--wui-typography-label-4-font-family);\n --wui-typography-label-4-size: var(--wui-typography-label-4-font-size);\n --wui-typography-label-4-weight: var(--wui-typography-label-4-font-weight);\n}\n"}
|
|
82
73
|
`;
|
|
83
74
|
//#endregion
|
|
84
75
|
//#region src/css/GlobalStyle.tsx
|
|
@@ -736,17 +727,69 @@ const MONTH_NAMES = [
|
|
|
736
727
|
"November",
|
|
737
728
|
"December"
|
|
738
729
|
];
|
|
739
|
-
const
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
730
|
+
const MONTH_ABBREVIATIONS = MONTH_NAMES.map((name) => name.slice(0, 3));
|
|
731
|
+
const startOfDay = (date) => {
|
|
732
|
+
const result = new Date(date);
|
|
733
|
+
result.setHours(0, 0, 0, 0);
|
|
734
|
+
return result;
|
|
735
|
+
};
|
|
736
|
+
const startOfToday = () => startOfDay(/* @__PURE__ */ new Date());
|
|
737
|
+
const startOfTomorrow = () => {
|
|
738
|
+
const tomorrow = startOfToday();
|
|
739
|
+
tomorrow.setDate(tomorrow.getDate() + 1);
|
|
740
|
+
return tomorrow;
|
|
741
|
+
};
|
|
742
|
+
const monthIndexIn = (names, value) => names.findIndex((name) => name.toLowerCase() === value.toLowerCase());
|
|
743
|
+
const toNumberOrUndefined = (value) => value === void 0 ? void 0 : Number(value);
|
|
744
|
+
const DATE_PATTERNS = [
|
|
745
|
+
{
|
|
746
|
+
regex: new RegExp(`^(${MONTH_ABBREVIATIONS.join("|")}) (\\d{1,2})(?:, (\\d{1,4}))?$`, "i"),
|
|
747
|
+
toParts: ([, month, day, year]) => ({
|
|
748
|
+
monthIndex: monthIndexIn(MONTH_ABBREVIATIONS, month ?? ""),
|
|
749
|
+
day: Number(day),
|
|
750
|
+
year: toNumberOrUndefined(year)
|
|
751
|
+
})
|
|
752
|
+
},
|
|
753
|
+
{
|
|
754
|
+
regex: new RegExp(`^(${MONTH_NAMES.join("|")}) (\\d{1,2})(?:, (\\d{1,4}))?$`, "i"),
|
|
755
|
+
toParts: ([, month, day, year]) => ({
|
|
756
|
+
monthIndex: monthIndexIn(MONTH_NAMES, month ?? ""),
|
|
757
|
+
day: Number(day),
|
|
758
|
+
year: toNumberOrUndefined(year)
|
|
759
|
+
})
|
|
760
|
+
},
|
|
761
|
+
{
|
|
762
|
+
regex: /^(\d{1,2})\/(\d{1,2})(?:\/(\d{1,4}))?$/,
|
|
763
|
+
toParts: ([, month, day, year]) => ({
|
|
764
|
+
monthIndex: Number(month) - 1,
|
|
765
|
+
day: Number(day),
|
|
766
|
+
year: toNumberOrUndefined(year)
|
|
767
|
+
})
|
|
768
|
+
},
|
|
769
|
+
{
|
|
770
|
+
regex: /^(\d{1,2})-(\d{1,2})(?:-(\d{1,4}))?$/,
|
|
771
|
+
toParts: ([, month, day, year]) => ({
|
|
772
|
+
monthIndex: Number(month) - 1,
|
|
773
|
+
day: Number(day),
|
|
774
|
+
year: toNumberOrUndefined(year)
|
|
775
|
+
})
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
regex: /^(\d{1,4})-(\d{1,2})-(\d{1,2})$/,
|
|
779
|
+
toParts: ([, year, month, day]) => ({
|
|
780
|
+
monthIndex: Number(month) - 1,
|
|
781
|
+
day: Number(day),
|
|
782
|
+
year: Number(year)
|
|
783
|
+
})
|
|
784
|
+
}
|
|
749
785
|
];
|
|
786
|
+
const toValidDate = ({ monthIndex, day, year }, referenceDate) => {
|
|
787
|
+
if (year === 0) return null;
|
|
788
|
+
const resolvedYear = year ?? referenceDate.getFullYear();
|
|
789
|
+
const date = new Date(referenceDate.getFullYear(), 0, 1);
|
|
790
|
+
date.setFullYear(resolvedYear, monthIndex, day);
|
|
791
|
+
return date.getFullYear() === resolvedYear && date.getMonth() === monthIndex && date.getDate() === day ? date : null;
|
|
792
|
+
};
|
|
750
793
|
const parseDateString = (str) => {
|
|
751
794
|
const trimmed = str.trim();
|
|
752
795
|
if (!trimmed) return null;
|
|
@@ -757,14 +800,19 @@ const parseDateString = (str) => {
|
|
|
757
800
|
if (monthIndex !== -1) {
|
|
758
801
|
const today = startOfToday();
|
|
759
802
|
let date = new Date(today.getFullYear(), monthIndex, 1);
|
|
760
|
-
if (
|
|
761
|
-
return
|
|
803
|
+
if (date.getTime() < Date.now()) date = new Date(today.getFullYear() + 1, monthIndex, 1);
|
|
804
|
+
return date;
|
|
762
805
|
}
|
|
763
806
|
const referenceDate = /* @__PURE__ */ new Date();
|
|
764
|
-
|
|
765
|
-
|
|
807
|
+
for (const { regex, toParts } of DATE_PATTERNS) {
|
|
808
|
+
const match = trimmed.match(regex);
|
|
809
|
+
if (match) {
|
|
810
|
+
const parsed = toValidDate(toParts(match), referenceDate);
|
|
811
|
+
if (parsed !== null) return parsed;
|
|
812
|
+
}
|
|
813
|
+
}
|
|
766
814
|
const native = new Date(trimmed);
|
|
767
|
-
if (
|
|
815
|
+
if (!Number.isNaN(native.getTime())) return startOfDay(native);
|
|
768
816
|
return null;
|
|
769
817
|
};
|
|
770
818
|
//#endregion
|
|
@@ -811,7 +859,7 @@ const getLocalDateParts = (date) => {
|
|
|
811
859
|
//#region src/helpers/dateTime/differenceInCalendarDays.ts
|
|
812
860
|
/**
|
|
813
861
|
* Returns the difference in calendar days between two dates in local time,
|
|
814
|
-
* ignoring the time of day.
|
|
862
|
+
* ignoring the time of day.
|
|
815
863
|
*
|
|
816
864
|
* @param {Date|number} dateLeft - The later date (or timestamp).
|
|
817
865
|
* @param {Date|number} dateRight - The earlier date (or timestamp).
|
|
@@ -1426,7 +1474,7 @@ const useFocusTrap = (active = true, options = {}) => {
|
|
|
1426
1474
|
setTimeout(() => {
|
|
1427
1475
|
if (node.ownerDocument) processNode(node);
|
|
1428
1476
|
if (!node.ownerDocument) console.warn("[useFocusTrap]: The focus trap is not part of the DOM yet, so it is unable to correctly set focus. Make sure to render the ref node.", node);
|
|
1429
|
-
});
|
|
1477
|
+
}, 0);
|
|
1430
1478
|
ref.current = node;
|
|
1431
1479
|
} else ref.current = null;
|
|
1432
1480
|
}, [
|
|
@@ -5347,6 +5395,9 @@ const IconComponent = ({ useInlineStyles = true, invertColor, colorScheme = "inh
|
|
|
5347
5395
|
});
|
|
5348
5396
|
};
|
|
5349
5397
|
IconComponent.displayName = "Icon_UI";
|
|
5398
|
+
/**
|
|
5399
|
+
* An `Icon` displays a visual symbol to represent an action, concept, or entity, rendering the SVG registered for its `type` at a fixed or responsive `size`.
|
|
5400
|
+
*/
|
|
5350
5401
|
const Icon = IconComponent;
|
|
5351
5402
|
//#endregion
|
|
5352
5403
|
//#region src/components/Link/Link.tsx
|
|
@@ -5449,12 +5500,15 @@ const Link = ({ beforeAction, children, type, disabled = false, colorScheme = "i
|
|
|
5449
5500
|
as: "a",
|
|
5450
5501
|
href: to
|
|
5451
5502
|
};
|
|
5452
|
-
|
|
5503
|
+
const combinedProps = {
|
|
5453
5504
|
ref,
|
|
5454
5505
|
...props,
|
|
5455
5506
|
...commonProps,
|
|
5456
5507
|
...externalLinkProps,
|
|
5457
|
-
...routerSpecificProps
|
|
5508
|
+
...routerSpecificProps
|
|
5509
|
+
};
|
|
5510
|
+
return /* @__PURE__ */ jsxs(StyledLink, {
|
|
5511
|
+
...combinedProps,
|
|
5458
5512
|
role: role ?? (disabled ? "link" : void 0),
|
|
5459
5513
|
children: [
|
|
5460
5514
|
leftIcon ?? null,
|
|
@@ -5928,6 +5982,9 @@ const StyledImage = styled.img`
|
|
|
5928
5982
|
object-fit: ${({ $objFit }) => $objFit};
|
|
5929
5983
|
object-position: ${({ $objPosition }) => $objPosition};
|
|
5930
5984
|
`;
|
|
5985
|
+
/**
|
|
5986
|
+
* An `Image` displays a photo or graphic inline, with controls for border radius, object fit, and how it fills its container. It lazy-loads by default via the native `loading` attribute.
|
|
5987
|
+
*/
|
|
5931
5988
|
const Image = ({ src, alt, borderRadius, fill: fillContainer = false, fit: objFit, loading = "lazy", position: objPosition, onLoad, onError, ...props }) => /* @__PURE__ */ jsx(StyledImage, {
|
|
5932
5989
|
$borderRadius: borderRadius,
|
|
5933
5990
|
$fillContainer: fillContainer,
|
|
@@ -6058,8 +6115,9 @@ const Avatar = ({ imageUrl, heightAndWidth, name, size = "md", onImageLoad, ...p
|
|
|
6058
6115
|
});
|
|
6059
6116
|
};
|
|
6060
6117
|
const avatarSize = heightAndWidth ?? avatarSizeMap[size];
|
|
6118
|
+
const avatarColor = useMemo(() => chooseColorScheme(name), [name]);
|
|
6061
6119
|
return /* @__PURE__ */ jsxs(AvatarWrapper, {
|
|
6062
|
-
$colorScheme:
|
|
6120
|
+
$colorScheme: avatarColor,
|
|
6063
6121
|
$heightAndWidth: avatarSize,
|
|
6064
6122
|
...props,
|
|
6065
6123
|
children: [/* @__PURE__ */ jsx(Initial, { initial: formatNameForDisplay(name) }), isNotNil(imageUrl) && imageLoadState !== "error" && /* @__PURE__ */ jsx(Image, {
|
|
@@ -7002,13 +7060,16 @@ const StyledStack = styled.div`
|
|
|
7002
7060
|
const StackComponent = ({ ref, renderAs, direction = "vertical", gap = "space-02", alignItems = "stretch", padding, ...props }) => {
|
|
7003
7061
|
const responsiveGap = useResponsiveProp(gap);
|
|
7004
7062
|
const responsiveDirection = useResponsiveProp(direction);
|
|
7063
|
+
const responsiveAlignItems = useResponsiveProp(alignItems);
|
|
7064
|
+
const responsivePaddingX = useResponsiveProp(padding?.x);
|
|
7065
|
+
const responsivePaddingY = useResponsiveProp(padding?.y);
|
|
7005
7066
|
return /* @__PURE__ */ jsx(StyledStack, {
|
|
7006
7067
|
ref,
|
|
7007
|
-
$alignItems:
|
|
7068
|
+
$alignItems: responsiveAlignItems,
|
|
7008
7069
|
$direction: responsiveDirection,
|
|
7009
7070
|
$gap: responsiveGap,
|
|
7010
|
-
$paddingX:
|
|
7011
|
-
$paddingY:
|
|
7071
|
+
$paddingX: responsivePaddingX,
|
|
7072
|
+
$paddingY: responsivePaddingY,
|
|
7012
7073
|
as: renderAs ?? DEFAULT_ELEMENT$1,
|
|
7013
7074
|
...props
|
|
7014
7075
|
});
|
|
@@ -7083,22 +7144,23 @@ const Form = ({ children, action, values = DEFAULT_VALUES, labelPosition = "bloc
|
|
|
7083
7144
|
if (props.onReset) props.onReset(event);
|
|
7084
7145
|
if (action) action(null);
|
|
7085
7146
|
};
|
|
7086
|
-
|
|
7087
|
-
|
|
7088
|
-
return {
|
|
7089
|
-
values,
|
|
7090
|
-
errors,
|
|
7091
|
-
hasSubmitted,
|
|
7092
|
-
formId: id,
|
|
7093
|
-
labelPosition
|
|
7094
|
-
};
|
|
7095
|
-
}, [
|
|
7096
|
-
labelPosition,
|
|
7147
|
+
const context = useMemo(() => {
|
|
7148
|
+
return {
|
|
7097
7149
|
values,
|
|
7098
7150
|
errors,
|
|
7099
|
-
|
|
7100
|
-
|
|
7101
|
-
|
|
7151
|
+
hasSubmitted,
|
|
7152
|
+
formId: id,
|
|
7153
|
+
labelPosition
|
|
7154
|
+
};
|
|
7155
|
+
}, [
|
|
7156
|
+
labelPosition,
|
|
7157
|
+
values,
|
|
7158
|
+
errors,
|
|
7159
|
+
id,
|
|
7160
|
+
hasSubmitted
|
|
7161
|
+
]);
|
|
7162
|
+
return /* @__PURE__ */ jsx(FormContext, {
|
|
7163
|
+
value: context,
|
|
7102
7164
|
children: /* @__PURE__ */ jsx(Stack, {
|
|
7103
7165
|
...props,
|
|
7104
7166
|
ref,
|
|
@@ -7168,18 +7230,19 @@ const useCheckboxGroup = () => {
|
|
|
7168
7230
|
const CheckboxGroup = ({ children, name, onChange, value, ...props }) => {
|
|
7169
7231
|
const formState = useContext(FormContext);
|
|
7170
7232
|
const derivedValue = isArray(formState.values[name]) ? formState.values[name] : value;
|
|
7233
|
+
const context = useMemo(() => {
|
|
7234
|
+
return {
|
|
7235
|
+
name: `${name}[]`,
|
|
7236
|
+
onChange,
|
|
7237
|
+
value: derivedValue
|
|
7238
|
+
};
|
|
7239
|
+
}, [
|
|
7240
|
+
name,
|
|
7241
|
+
derivedValue,
|
|
7242
|
+
onChange
|
|
7243
|
+
]);
|
|
7171
7244
|
return /* @__PURE__ */ jsx(CheckboxGroupContext, {
|
|
7172
|
-
value:
|
|
7173
|
-
return {
|
|
7174
|
-
name: `${name}[]`,
|
|
7175
|
-
onChange,
|
|
7176
|
-
value: derivedValue
|
|
7177
|
-
};
|
|
7178
|
-
}, [
|
|
7179
|
-
name,
|
|
7180
|
-
derivedValue,
|
|
7181
|
-
onChange
|
|
7182
|
-
]),
|
|
7245
|
+
value: context,
|
|
7183
7246
|
children: /* @__PURE__ */ jsx(FormGroup, {
|
|
7184
7247
|
...props,
|
|
7185
7248
|
children
|
|
@@ -7285,6 +7348,9 @@ const StyledHiddenCheckboxInput = styled.input`
|
|
|
7285
7348
|
${visuallyHiddenStyle}
|
|
7286
7349
|
position: relative;
|
|
7287
7350
|
`;
|
|
7351
|
+
/**
|
|
7352
|
+
* A `Checkbox` lets users select one or more options from a set, or toggle a single option on or off. It supports both standalone controlled usage and grouped usage via `CheckboxGroup`.
|
|
7353
|
+
*/
|
|
7288
7354
|
const Checkbox = ({ checked, disabled = false, id, label, description, name, onChange, size = "md", value, required = false, hideLabel = false, ref, ...props }) => {
|
|
7289
7355
|
const generatedId = useId();
|
|
7290
7356
|
const computedId = isNonEmptyString(id) ? id : `wistia-ui-checkbox-${generatedId}`;
|
|
@@ -7599,7 +7665,8 @@ const getAccessibleColorByValueChannelChange = ({ originalColor, colorForCompari
|
|
|
7599
7665
|
let searchHigh = highValue;
|
|
7600
7666
|
let bestSoFar = extremeVariant;
|
|
7601
7667
|
for (let i = 0; i < maxIterations; i++) {
|
|
7602
|
-
const
|
|
7668
|
+
const rawMidValue = (searchLow + searchHigh) / 2;
|
|
7669
|
+
const midValue = snapValueToEdges(rawMidValue);
|
|
7603
7670
|
const candidateHsv = {
|
|
7604
7671
|
h: originalHsv.h ?? 0,
|
|
7605
7672
|
s: originalHsv.s,
|
|
@@ -7705,26 +7772,29 @@ const getAccessibleColorInDirection = ({ originalColor, colorForComparison, minC
|
|
|
7705
7772
|
* brighter and darker variants and choosing the one with the smallest change in value.
|
|
7706
7773
|
*/
|
|
7707
7774
|
const getAccessibleColor = ({ originalColor, colorForComparison, minContrast, maxIterations = 50, opacityForContrastCalculation }) => {
|
|
7775
|
+
const originalColorAsHsv = convertToHsv(originalColor);
|
|
7708
7776
|
if (calculateContrast({
|
|
7709
|
-
backgroundColor: formatHex(
|
|
7777
|
+
backgroundColor: formatHex(originalColorAsHsv),
|
|
7710
7778
|
foregroundColor: colorForComparison,
|
|
7711
7779
|
backgroundOpacity: opacityForContrastCalculation
|
|
7712
7780
|
}) >= minContrast) return convertToHsv(originalColor);
|
|
7713
|
-
const
|
|
7781
|
+
const brighterOption = getAccessibleColorInDirection({
|
|
7714
7782
|
originalColor,
|
|
7715
7783
|
colorForComparison,
|
|
7716
7784
|
minContrast,
|
|
7717
7785
|
maxIterations,
|
|
7718
7786
|
direction: "brighter",
|
|
7719
7787
|
opacityForContrastCalculation
|
|
7720
|
-
})
|
|
7788
|
+
});
|
|
7789
|
+
const darkerOption = getAccessibleColorInDirection({
|
|
7721
7790
|
originalColor,
|
|
7722
7791
|
colorForComparison,
|
|
7723
7792
|
minContrast,
|
|
7724
7793
|
maxIterations,
|
|
7725
7794
|
direction: "darker",
|
|
7726
7795
|
opacityForContrastCalculation
|
|
7727
|
-
})
|
|
7796
|
+
});
|
|
7797
|
+
const result = chooseClosestDerivativeToOriginal(brighterOption, darkerOption, originalColor);
|
|
7728
7798
|
if (result == null) throw new Error(`Unable to get accessible derivative for ${formatHex(originalColor)} at minimum contrast ratio ${minContrast}`);
|
|
7729
7799
|
return result;
|
|
7730
7800
|
};
|
|
@@ -7733,8 +7803,9 @@ const getAccessibleColor = ({ originalColor, colorForComparison, minContrast, ma
|
|
|
7733
7803
|
* Returns true if at least one accessible color can be found by going brighter or darker.
|
|
7734
7804
|
*/
|
|
7735
7805
|
const hasAccessibleDerivatives = ({ originalColor, colorForComparison, minContrast, opacityForContrastCalculation }) => {
|
|
7806
|
+
const originalColorAsHsv = convertToHsv(originalColor);
|
|
7736
7807
|
if (calculateContrast({
|
|
7737
|
-
backgroundColor: formatHex(
|
|
7808
|
+
backgroundColor: formatHex(originalColorAsHsv),
|
|
7738
7809
|
foregroundColor: colorForComparison,
|
|
7739
7810
|
backgroundOpacity: opacityForContrastCalculation
|
|
7740
7811
|
}) >= minContrast) return true;
|
|
@@ -7778,7 +7849,8 @@ const transitionBetweenColors = (fromHsv, toHsv, onColorStep, onTransitionEnd) =
|
|
|
7778
7849
|
return;
|
|
7779
7850
|
}
|
|
7780
7851
|
if (now - lastTime >= intervalMs) {
|
|
7781
|
-
|
|
7852
|
+
const animationProgress = count / steps;
|
|
7853
|
+
onColorStep(interpolator(animationProgress));
|
|
7782
7854
|
count++;
|
|
7783
7855
|
lastTime = now;
|
|
7784
7856
|
}
|
|
@@ -7876,42 +7948,43 @@ const ColorPickerProvider = ({ children, colorForComparison, minimumContrastRati
|
|
|
7876
7948
|
valueAsHsvConvertedToHex,
|
|
7877
7949
|
whatValueAsHexShouldBe
|
|
7878
7950
|
]);
|
|
7951
|
+
const contextValue = useMemo(() => ({
|
|
7952
|
+
colorForComparison,
|
|
7953
|
+
commitValue,
|
|
7954
|
+
currentContrastRatio,
|
|
7955
|
+
getAccessibleDerivativeColor,
|
|
7956
|
+
hasAccessibleDerivatives: hasAccessibleDerivativesValue,
|
|
7957
|
+
isDragging,
|
|
7958
|
+
isTransitioning,
|
|
7959
|
+
minimumContrastRatio,
|
|
7960
|
+
nonDerivedValueAsHex: formatHex(nonDerivedValueAsHsv),
|
|
7961
|
+
nonDerivedValueAsHsv,
|
|
7962
|
+
onChangeNonDerivedValueAsHsv,
|
|
7963
|
+
opacityForContrastCalculation,
|
|
7964
|
+
setIsDragging,
|
|
7965
|
+
setShouldEnforceMinContrast: setShouldEnforceMinContrastWrapped,
|
|
7966
|
+
shouldEnforceMinContrast,
|
|
7967
|
+
valueAsHex,
|
|
7968
|
+
valueAsHsv
|
|
7969
|
+
}), [
|
|
7970
|
+
colorForComparison,
|
|
7971
|
+
commitValue,
|
|
7972
|
+
currentContrastRatio,
|
|
7973
|
+
getAccessibleDerivativeColor,
|
|
7974
|
+
hasAccessibleDerivativesValue,
|
|
7975
|
+
isDragging,
|
|
7976
|
+
isTransitioning,
|
|
7977
|
+
minimumContrastRatio,
|
|
7978
|
+
nonDerivedValueAsHsv,
|
|
7979
|
+
onChangeNonDerivedValueAsHsv,
|
|
7980
|
+
opacityForContrastCalculation,
|
|
7981
|
+
setShouldEnforceMinContrastWrapped,
|
|
7982
|
+
shouldEnforceMinContrast,
|
|
7983
|
+
valueAsHex,
|
|
7984
|
+
valueAsHsv
|
|
7985
|
+
]);
|
|
7879
7986
|
return /* @__PURE__ */ jsx(ColorPickerContext, {
|
|
7880
|
-
value:
|
|
7881
|
-
colorForComparison,
|
|
7882
|
-
commitValue,
|
|
7883
|
-
currentContrastRatio,
|
|
7884
|
-
getAccessibleDerivativeColor,
|
|
7885
|
-
hasAccessibleDerivatives: hasAccessibleDerivativesValue,
|
|
7886
|
-
isDragging,
|
|
7887
|
-
isTransitioning,
|
|
7888
|
-
minimumContrastRatio,
|
|
7889
|
-
nonDerivedValueAsHex: formatHex(nonDerivedValueAsHsv),
|
|
7890
|
-
nonDerivedValueAsHsv,
|
|
7891
|
-
onChangeNonDerivedValueAsHsv,
|
|
7892
|
-
opacityForContrastCalculation,
|
|
7893
|
-
setIsDragging,
|
|
7894
|
-
setShouldEnforceMinContrast: setShouldEnforceMinContrastWrapped,
|
|
7895
|
-
shouldEnforceMinContrast,
|
|
7896
|
-
valueAsHex,
|
|
7897
|
-
valueAsHsv
|
|
7898
|
-
}), [
|
|
7899
|
-
colorForComparison,
|
|
7900
|
-
commitValue,
|
|
7901
|
-
currentContrastRatio,
|
|
7902
|
-
getAccessibleDerivativeColor,
|
|
7903
|
-
hasAccessibleDerivativesValue,
|
|
7904
|
-
isDragging,
|
|
7905
|
-
isTransitioning,
|
|
7906
|
-
minimumContrastRatio,
|
|
7907
|
-
nonDerivedValueAsHsv,
|
|
7908
|
-
onChangeNonDerivedValueAsHsv,
|
|
7909
|
-
opacityForContrastCalculation,
|
|
7910
|
-
setShouldEnforceMinContrastWrapped,
|
|
7911
|
-
shouldEnforceMinContrast,
|
|
7912
|
-
valueAsHex,
|
|
7913
|
-
valueAsHsv
|
|
7914
|
-
]),
|
|
7987
|
+
value: contextValue,
|
|
7915
7988
|
children
|
|
7916
7989
|
});
|
|
7917
7990
|
};
|
|
@@ -7945,7 +8018,10 @@ const ItemsContainer$1 = styled(RadioGroup$1)`
|
|
|
7945
8018
|
const ColorGrid = ({ children, label }) => {
|
|
7946
8019
|
const { valueAsHex, onChangeNonDerivedValueAsHsv } = useColorPickerState();
|
|
7947
8020
|
const onValueChange = useCallback((value) => {
|
|
7948
|
-
if (typeof value === "string")
|
|
8021
|
+
if (typeof value === "string") {
|
|
8022
|
+
const hsv = convertToHsv(value);
|
|
8023
|
+
onChangeNonDerivedValueAsHsv(hsv);
|
|
8024
|
+
}
|
|
7949
8025
|
}, [onChangeNonDerivedValueAsHsv]);
|
|
7950
8026
|
return /* @__PURE__ */ jsxs(Container$9, { children: [label != null && /* @__PURE__ */ jsx(LabelContainer$1, { children: /* @__PURE__ */ jsx(Label, { children: label }) }), /* @__PURE__ */ jsx(ItemsContainer$1, {
|
|
7951
8027
|
onValueChange,
|
|
@@ -8205,12 +8281,14 @@ const Container$7 = styled(ToggleGroup)`
|
|
|
8205
8281
|
*/
|
|
8206
8282
|
const ColorList = ({ children }) => {
|
|
8207
8283
|
const { valueAsHex, onChangeNonDerivedValueAsHsv } = useColorPickerState();
|
|
8284
|
+
const onValueChange = useCallback((newValue) => {
|
|
8285
|
+
const value = newValue[0];
|
|
8286
|
+
if (value === void 0 || value === "") return;
|
|
8287
|
+
const hsv = convertToHsv(value);
|
|
8288
|
+
onChangeNonDerivedValueAsHsv(hsv);
|
|
8289
|
+
}, [onChangeNonDerivedValueAsHsv]);
|
|
8208
8290
|
return /* @__PURE__ */ jsx(Container$7, {
|
|
8209
|
-
onValueChange
|
|
8210
|
-
const value = newValue[0];
|
|
8211
|
-
if (value === void 0 || value === "") return;
|
|
8212
|
-
onChangeNonDerivedValueAsHsv(convertToHsv(value));
|
|
8213
|
-
}, [onChangeNonDerivedValueAsHsv]),
|
|
8291
|
+
onValueChange,
|
|
8214
8292
|
value: [valueAsHex],
|
|
8215
8293
|
children
|
|
8216
8294
|
});
|
|
@@ -8550,6 +8628,9 @@ const StyledSwitchThumb = styled.div`
|
|
|
8550
8628
|
const StyledHiddenSwitchInput = styled.input`
|
|
8551
8629
|
${visuallyHiddenStyle}
|
|
8552
8630
|
`;
|
|
8631
|
+
/**
|
|
8632
|
+
* A `Switch` allows users to toggle between two mutually exclusive states, such as on and off.
|
|
8633
|
+
*/
|
|
8553
8634
|
const Switch = ({ align = "left", checked, disabled = false, id, label, description, name, onChange, size = "md", value, required = false, hideLabel = false, ref, ...props }) => {
|
|
8554
8635
|
const generatedId = useId();
|
|
8555
8636
|
const computedId = isNonEmptyString(id) ? id : `wistia-ui-switch-${generatedId}`;
|
|
@@ -8946,7 +9027,8 @@ const HexColorInput = ({ autoFocus = true }) => {
|
|
|
8946
9027
|
setTextInputValue(newValue);
|
|
8947
9028
|
if (!Boolean(parseHex(newValue))) return;
|
|
8948
9029
|
if (newValue.length < SIX_DIGIT_HEX_CODE_LENGTH) return;
|
|
8949
|
-
|
|
9030
|
+
const newValueAsHsv = convertToHsv(newValue);
|
|
9031
|
+
onChangeNonDerivedValueAsHsv(newValueAsHsv);
|
|
8950
9032
|
commitValue(newValue);
|
|
8951
9033
|
}, [onChangeNonDerivedValueAsHsv, commitValue]);
|
|
8952
9034
|
const onCopy = useCallback((event) => {
|
|
@@ -8975,10 +9057,11 @@ const HexColorInput = ({ autoFocus = true }) => {
|
|
|
8975
9057
|
const currentHsv = convertToHsv(valueAsHex);
|
|
8976
9058
|
const saturationNudge = .02;
|
|
8977
9059
|
const newSaturation = Math.max(0, Math.min(1, key === "ArrowUp" ? currentHsv.s + saturationNudge : currentHsv.s - saturationNudge));
|
|
8978
|
-
|
|
9060
|
+
const newHsv = {
|
|
8979
9061
|
...nonDerivedValueAsHsv,
|
|
8980
9062
|
s: newSaturation
|
|
8981
|
-
}
|
|
9063
|
+
};
|
|
9064
|
+
onChangeNonDerivedValueAsHsv(newHsv);
|
|
8982
9065
|
return;
|
|
8983
9066
|
}
|
|
8984
9067
|
if (key.length > 1) return;
|
|
@@ -8994,11 +9077,13 @@ const HexColorInput = ({ autoFocus = true }) => {
|
|
|
8994
9077
|
]);
|
|
8995
9078
|
const onPaste = useCallback((event) => {
|
|
8996
9079
|
event.preventDefault();
|
|
8997
|
-
const
|
|
9080
|
+
const pastedText = event.clipboardData.getData("text");
|
|
9081
|
+
const normalizedValue = normalizeHexInput(pastedText);
|
|
8998
9082
|
const isValidHexValue = Boolean(parseHex(normalizedValue));
|
|
8999
9083
|
setTextInputValue(normalizedValue);
|
|
9000
9084
|
if (!isValidHexValue) return;
|
|
9001
|
-
|
|
9085
|
+
const newValueAsHsv = convertToHsv(normalizedValue);
|
|
9086
|
+
onChangeNonDerivedValueAsHsv(newValueAsHsv);
|
|
9002
9087
|
commitValue(normalizedValue);
|
|
9003
9088
|
}, [commitValue, onChangeNonDerivedValueAsHsv]);
|
|
9004
9089
|
const selectAllButTheHash = useCallback(() => {
|
|
@@ -9766,6 +9851,9 @@ const defaultDisplayValues = (values, onRemove) => {
|
|
|
9766
9851
|
onClickRemoveLabel: `Remove ${selectedValue}`
|
|
9767
9852
|
}, selectedValue));
|
|
9768
9853
|
};
|
|
9854
|
+
/**
|
|
9855
|
+
* A `Combobox` is a searchable single- or multi-select input. Users can filter options by typing, and selected values in multi-select mode are displayed as removable `Tag` components.
|
|
9856
|
+
*/
|
|
9769
9857
|
const Combobox = ({ placeholder, value, onChange, searchValue, onSearchValueChange, displayValues = defaultDisplayValues, children, flipPopover = true, fullWidth = true }) => {
|
|
9770
9858
|
const [isOpen, setIsOpen] = useState(false);
|
|
9771
9859
|
const [isPending, startTransition] = useTransition();
|
|
@@ -9991,13 +10079,13 @@ const ContextMenuPopup = styled(Menu$1.Popup)`
|
|
|
9991
10079
|
${menuContentCss}
|
|
9992
10080
|
outline: none;
|
|
9993
10081
|
`;
|
|
10082
|
+
const NOOP$4 = () => null;
|
|
9994
10083
|
/**
|
|
9995
10084
|
* The ContextMenu is an extended implementation of the [Menu](/components/Menu) component that allows for right-click context menus.
|
|
9996
10085
|
* It can be used in two ways:
|
|
9997
10086
|
* 1. By providing a `triggerRef`, which will render the menu when the referenced element is right-clicked.
|
|
9998
10087
|
* 2. By providing a `position` prop, which will render the menu at the specified coordinates.
|
|
9999
10088
|
*/
|
|
10000
|
-
const NOOP$4 = () => null;
|
|
10001
10089
|
const ContextMenu = ({ position, triggerRef, children, side = "bottom", onRequestClose = NOOP$4, compact = false }) => {
|
|
10002
10090
|
const [isRightClicked, setIsRightClicked] = useState(false);
|
|
10003
10091
|
const [menuPosition, setMenuPosition] = useState(position ?? {
|
|
@@ -11484,8 +11572,9 @@ const DividerComponent = styled.div`
|
|
|
11484
11572
|
*/
|
|
11485
11573
|
const Divider = ({ orientation = "horizontal", inset = "space-00", ...props }) => {
|
|
11486
11574
|
const responsiveOrientation = useResponsiveProp(orientation);
|
|
11575
|
+
const responsiveInset = useResponsiveProp(inset);
|
|
11487
11576
|
return /* @__PURE__ */ jsx(DividerComponent, {
|
|
11488
|
-
$inset:
|
|
11577
|
+
$inset: responsiveInset,
|
|
11489
11578
|
$orientation: responsiveOrientation,
|
|
11490
11579
|
"aria-orientation": responsiveOrientation,
|
|
11491
11580
|
role: "separator",
|
|
@@ -11754,6 +11843,7 @@ const StyledEditableTextDisplay = styled.div`
|
|
|
11754
11843
|
}
|
|
11755
11844
|
}
|
|
11756
11845
|
`;
|
|
11846
|
+
const StyledHiddenTriggerButton = styled.button({ ...visuallyHiddenStyle });
|
|
11757
11847
|
const EditableTextDisplayComponent = ({ ref, asTrigger, renderAs, ...props }) => {
|
|
11758
11848
|
const context = useContext(EditableTextContext);
|
|
11759
11849
|
if (!context) throw new Error("EditableTextDisplay must be used within an EditableTextRoot context");
|
|
@@ -11776,10 +11866,9 @@ const EditableTextDisplayComponent = ({ ref, asTrigger, renderAs, ...props }) =>
|
|
|
11776
11866
|
as: elementType,
|
|
11777
11867
|
"data-wui-editable-text-display": isPlaceholderVisible ? "placeholder" : "value",
|
|
11778
11868
|
...props,
|
|
11779
|
-
children: [displayText, /* @__PURE__ */ jsx(
|
|
11869
|
+
children: [displayText, /* @__PURE__ */ jsx(StyledHiddenTriggerButton, {
|
|
11780
11870
|
ref: triggerButtonRef,
|
|
11781
11871
|
onClick: handleTriggerClick,
|
|
11782
|
-
style: { ...visuallyHiddenStyle },
|
|
11783
11872
|
type: "button",
|
|
11784
11873
|
children: "Edit text"
|
|
11785
11874
|
})]
|
|
@@ -12191,7 +12280,8 @@ const useFormState = (action, initialData = {}) => {
|
|
|
12191
12280
|
const nextData = serializeFormData(nextFormData);
|
|
12192
12281
|
setIsPending(true);
|
|
12193
12282
|
try {
|
|
12194
|
-
|
|
12283
|
+
const result = await action(data, nextData);
|
|
12284
|
+
setData(result);
|
|
12195
12285
|
} catch (err) {
|
|
12196
12286
|
setError(err instanceof Error ? err : new Error(String(err)));
|
|
12197
12287
|
} finally {
|
|
@@ -12426,18 +12516,19 @@ const useRadioGroup = () => {
|
|
|
12426
12516
|
const RadioGroup = ({ children, name, onChange, value, ...props }) => {
|
|
12427
12517
|
const formState = useContext(FormContext);
|
|
12428
12518
|
const derivedValue = typeof formState.values[name] === "string" ? formState.values[name] : value;
|
|
12429
|
-
|
|
12430
|
-
|
|
12431
|
-
return {
|
|
12432
|
-
name,
|
|
12433
|
-
onChange,
|
|
12434
|
-
value: derivedValue
|
|
12435
|
-
};
|
|
12436
|
-
}, [
|
|
12519
|
+
const context = useMemo(() => {
|
|
12520
|
+
return {
|
|
12437
12521
|
name,
|
|
12438
|
-
|
|
12439
|
-
|
|
12440
|
-
|
|
12522
|
+
onChange,
|
|
12523
|
+
value: derivedValue
|
|
12524
|
+
};
|
|
12525
|
+
}, [
|
|
12526
|
+
name,
|
|
12527
|
+
derivedValue,
|
|
12528
|
+
onChange
|
|
12529
|
+
]);
|
|
12530
|
+
return /* @__PURE__ */ jsx(RadioGroupContext, {
|
|
12531
|
+
value: context,
|
|
12441
12532
|
children: /* @__PURE__ */ jsx(FormGroup, {
|
|
12442
12533
|
...props,
|
|
12443
12534
|
role: "radiogroup",
|
|
@@ -12494,18 +12585,23 @@ const GridComponent = ({ ref, children, columns = "auto", minChildWidth = "auto"
|
|
|
12494
12585
|
column: responsiveGap,
|
|
12495
12586
|
row: responsiveGap
|
|
12496
12587
|
};
|
|
12588
|
+
const responsiveColumns = useResponsiveProp(columns);
|
|
12589
|
+
const responsiveMinChildWidth = useResponsiveProp(minChildWidth);
|
|
12497
12590
|
return /* @__PURE__ */ jsx(StyledGrid, {
|
|
12498
12591
|
ref,
|
|
12499
12592
|
$columnGap: column,
|
|
12500
12593
|
$expandItems: expandItems,
|
|
12501
|
-
$maxColumns:
|
|
12502
|
-
$minChildWidth:
|
|
12594
|
+
$maxColumns: responsiveColumns,
|
|
12595
|
+
$minChildWidth: responsiveMinChildWidth,
|
|
12503
12596
|
$rowGap: row,
|
|
12504
12597
|
as: renderAs ?? DEFAULT_ELEMENT,
|
|
12505
12598
|
...props,
|
|
12506
12599
|
children
|
|
12507
12600
|
});
|
|
12508
12601
|
};
|
|
12602
|
+
/**
|
|
12603
|
+
* A `Grid` arranges its children in a CSS grid layout with configurable `columns`, `gap`, and responsive breakpoint support.
|
|
12604
|
+
*/
|
|
12509
12605
|
const Grid = makePolymorphic(GridComponent);
|
|
12510
12606
|
//#endregion
|
|
12511
12607
|
//#region src/components/PreviewCard/PreviewCard.tsx
|
|
@@ -13124,10 +13220,11 @@ const useInputDuration = ({ decimalUnitLength, maxSeconds, minSeconds, onChangeV
|
|
|
13124
13220
|
if (anyKeyIsDownRef.current) return;
|
|
13125
13221
|
const { selectionStart, selectionEnd } = event.currentTarget;
|
|
13126
13222
|
if (selectionStart === null || selectionEnd === null) return;
|
|
13127
|
-
|
|
13223
|
+
const unitToSelect = getUnitForSelectionIndices({
|
|
13128
13224
|
selectionStart,
|
|
13129
13225
|
selectionEnd
|
|
13130
|
-
})
|
|
13226
|
+
});
|
|
13227
|
+
selectUnit(unitToSelect);
|
|
13131
13228
|
}, [getUnitForSelectionIndices, selectUnit]);
|
|
13132
13229
|
const onFocus = useCallback(() => {
|
|
13133
13230
|
const selectFirstUnitIfAllTextIsSelected = () => {
|
|
@@ -13514,6 +13611,9 @@ const keyToString = (key) => {
|
|
|
13514
13611
|
default: return key.toUpperCase();
|
|
13515
13612
|
}
|
|
13516
13613
|
};
|
|
13614
|
+
/**
|
|
13615
|
+
* A `KeyboardShortcut` displays one or more keyboard keys with an optional label, rendering each key in a styled `kbd` element. Platform-specific keys like `Cmd`/`Meta` are rendered with the appropriate symbol for the detected operating system.
|
|
13616
|
+
*/
|
|
13517
13617
|
const KeyboardShortcut = ({ label, keyboardKeys, fullWidth = false, ...otherProps }) => /* @__PURE__ */ jsxs(StyledKeyboardShortcut, {
|
|
13518
13618
|
$fullWidth: fullWidth,
|
|
13519
13619
|
...otherProps,
|
|
@@ -13625,15 +13725,19 @@ const renderListComponent = (listItems, variant, { ...otherProps }) => {
|
|
|
13625
13725
|
};
|
|
13626
13726
|
const renderListFromArray = (listItems, variant, otherProps) => {
|
|
13627
13727
|
let itemCount = 0;
|
|
13628
|
-
|
|
13728
|
+
const items = listItems.map((listItem, i) => {
|
|
13629
13729
|
const item = listItem;
|
|
13630
13730
|
const nextItem = listItems[i + 1];
|
|
13631
13731
|
const key = `item-${itemCount += 1}`;
|
|
13632
13732
|
if (Array.isArray(nextItem)) return /* @__PURE__ */ jsxs(ListItem, { children: [item, renderListFromArray(nextItem, variant, otherProps)] }, key);
|
|
13633
13733
|
if (Array.isArray(item)) return null;
|
|
13634
13734
|
return /* @__PURE__ */ jsx(ListItem, { children: item }, key);
|
|
13635
|
-
})
|
|
13735
|
+
});
|
|
13736
|
+
return renderListComponent(items, variant, otherProps);
|
|
13636
13737
|
};
|
|
13738
|
+
/**
|
|
13739
|
+
* A `List` groups related items in bulleted, ordered, or separator-based layouts, composed with `ListItem` children or a flat/nested `items` array.
|
|
13740
|
+
*/
|
|
13637
13741
|
const List = ({ children, items, variant, ...otherProps }) => {
|
|
13638
13742
|
const listVariant = variant ?? "bullets";
|
|
13639
13743
|
if (isNotNil(children)) {
|
|
@@ -13798,8 +13902,9 @@ const StyledMarkdownWrapper = styled.div`
|
|
|
13798
13902
|
* This is a simple wrapper around `react-markdown` that applies some basic styles.
|
|
13799
13903
|
*/
|
|
13800
13904
|
const Markdown = ({ children, textSize = "body2", ...otherProps }) => {
|
|
13905
|
+
const responsiveTextSize = useResponsiveProp(textSize);
|
|
13801
13906
|
return /* @__PURE__ */ jsx(StyledMarkdownWrapper, {
|
|
13802
|
-
$textSize:
|
|
13907
|
+
$textSize: responsiveTextSize,
|
|
13803
13908
|
...otherProps,
|
|
13804
13909
|
children: /* @__PURE__ */ jsx(ReactMarkdown, { children })
|
|
13805
13910
|
});
|
|
@@ -14749,6 +14854,9 @@ const StyledRadioInput = styled.div`
|
|
|
14749
14854
|
const StyledHiddenRadioInput = styled.input`
|
|
14750
14855
|
${visuallyHiddenStyle}
|
|
14751
14856
|
`;
|
|
14857
|
+
/**
|
|
14858
|
+
* A `Radio` lets users select exactly one option from a visible set of choices.
|
|
14859
|
+
*/
|
|
14752
14860
|
const Radio = ({ checked, disabled = false, id, label, description, name, onChange, size = "md", value = "false", required = false, hideLabel = false, ref, ...props }) => {
|
|
14753
14861
|
const generatedId = useId();
|
|
14754
14862
|
const computedId = isNonEmptyString(id) ? id : `wistia-ui-radio-${generatedId}`;
|
|
@@ -15032,6 +15140,9 @@ const RadioCardDefaultLayout = ({ icon, label, description, showIndicator = true
|
|
|
15032
15140
|
RadioCardDefaultLayout.displayName = "RadioCardDefaultLayout_UI";
|
|
15033
15141
|
//#endregion
|
|
15034
15142
|
//#region src/components/RadioCard/RadioCard.tsx
|
|
15143
|
+
/**
|
|
15144
|
+
* A `RadioCard` lets users select exactly one option from a set of visually rich, card-based choices.
|
|
15145
|
+
*/
|
|
15035
15146
|
const RadioCard = ({ icon, label, description, showIndicator, isGated, children, ref, ...rootProps }) => {
|
|
15036
15147
|
return /* @__PURE__ */ jsx(RadioCardRoot, {
|
|
15037
15148
|
ref,
|
|
@@ -15182,11 +15293,12 @@ const SelectedItemStyleProvider = ({ children }) => {
|
|
|
15182
15293
|
transform: `translateX(${selectedItemMeasurements.offsetLeft}px) translateY(-50%)`,
|
|
15183
15294
|
width: `${selectedItemMeasurements.offsetWidth}px`
|
|
15184
15295
|
} : void 0, [selectedItemMeasurements]);
|
|
15296
|
+
const contextValue = useMemo(() => ({
|
|
15297
|
+
setSelectedItemMeasurements,
|
|
15298
|
+
selectedItemIndicatorStyle
|
|
15299
|
+
}), [selectedItemIndicatorStyle]);
|
|
15185
15300
|
return /* @__PURE__ */ jsx(SelectedItemStyleContext, {
|
|
15186
|
-
value:
|
|
15187
|
-
setSelectedItemMeasurements,
|
|
15188
|
-
selectedItemIndicatorStyle
|
|
15189
|
-
}), [selectedItemIndicatorStyle]),
|
|
15301
|
+
value: contextValue,
|
|
15190
15302
|
children
|
|
15191
15303
|
});
|
|
15192
15304
|
};
|
|
@@ -15652,6 +15764,9 @@ const StyledSidebar = styled.nav`
|
|
|
15652
15764
|
overflow: hidden;
|
|
15653
15765
|
border-right: 1px solid var(--wui-color-border);
|
|
15654
15766
|
`;
|
|
15767
|
+
/**
|
|
15768
|
+
* The `Sidebar` provides vertical navigation with a composable header, scrollable content area, and footer.
|
|
15769
|
+
*/
|
|
15655
15770
|
const Sidebar = ({ children, ref, ...props }) => {
|
|
15656
15771
|
return /* @__PURE__ */ jsx(StyledSidebar, {
|
|
15657
15772
|
ref,
|
|
@@ -15895,6 +16010,9 @@ const StyledSliderThumb = styled(Slider$1.Thumb)`
|
|
|
15895
16010
|
}
|
|
15896
16011
|
`;
|
|
15897
16012
|
const DEFAULT_INITIAL_VALUE = [0];
|
|
16013
|
+
/**
|
|
16014
|
+
* A `Slider` lets users select a value or range from a continuous scale via a draggable thumb.
|
|
16015
|
+
*/
|
|
15898
16016
|
const Slider = ({ "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, disabled = false, initialValue = DEFAULT_INITIAL_VALUE, max = 100, min = 0, onChange, onValueCommitted, step = 1, value, "data-testid": dataTestId = "ui-slider", ...otherProps }) => {
|
|
15899
16017
|
if (!(isNonEmptyString(ariaLabel) || isNonEmptyString(ariaLabelledby))) throw new Error("UI Slider: Sliders should have an accessible name. Add a label using the aria-label or aria-labelledby prop.");
|
|
15900
16018
|
const values = value ?? initialValue;
|
|
@@ -16122,6 +16240,9 @@ const useTabsValue = () => {
|
|
|
16122
16240
|
};
|
|
16123
16241
|
//#endregion
|
|
16124
16242
|
//#region src/components/Tabs/Tabs.tsx
|
|
16243
|
+
/**
|
|
16244
|
+
* The `Tabs` component lets users switch between panels of content. It is composed from the `TabsList`, `TabsTrigger`, and `TabsContent` subcomponents.
|
|
16245
|
+
*/
|
|
16125
16246
|
const Tabs = ({ children, value: valueProp, onValueChange: onValueChangeProp, defaultValue, ...props }) => {
|
|
16126
16247
|
const [internalValue, setInternalValue] = useState(valueProp ?? defaultValue);
|
|
16127
16248
|
const isControlled = isNotNil(valueProp);
|
|
@@ -16317,7 +16438,8 @@ const ThumbnailStoryboardViewer = ({ storyboardUrl, storyboardHeight, storyboard
|
|
|
16317
16438
|
};
|
|
16318
16439
|
const { scaledHeight, scaledWidth } = getScaledDimensions(originalAspectRatio, effectiveTargetAspectRatio, viewerDimensions.viewerWidth, viewerDimensions.viewerHeight);
|
|
16319
16440
|
const coverProps = getCoverProps(viewerDimensions.viewerWidth, viewerDimensions.viewerHeight, scaledWidth, scaledHeight);
|
|
16320
|
-
const
|
|
16441
|
+
const frameIndex = Math.floor(percent * frameCount);
|
|
16442
|
+
const backgroundPosition = getFramePosition(frameIndex, framesPerRow, coverProps.width, coverProps.height, scaleFactor, frameCount, calculatedHeight);
|
|
16321
16443
|
const scaleFactorFromAspectRatioFit = coverProps.height / frameHeight;
|
|
16322
16444
|
const backgroundSize = `${storyboardWidth * scaleFactorFromAspectRatioFit * scaleFactor}px ${Math.floor(storyboardHeight * scaleFactorFromAspectRatioFit * scaleFactor)}px`;
|
|
16323
16445
|
const backgroundImage = `url(${storyboardUrl})`;
|