@wistia/ui 0.8.3-beta.e5caab02.ee46837 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +112 -88
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.mjs +71 -47
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1160,9 +1160,9 @@ type EditableHeadingProps = {
|
|
|
1160
1160
|
ariaLabel?: string;
|
|
1161
1161
|
/**
|
|
1162
1162
|
* Force editing state for testing purposes
|
|
1163
|
-
*
|
|
1163
|
+
*
|
|
1164
1164
|
*/
|
|
1165
|
-
|
|
1165
|
+
forceEditing?: boolean;
|
|
1166
1166
|
/**
|
|
1167
1167
|
* When true, prevents the heading from entering edit mode
|
|
1168
1168
|
* @default false
|
|
@@ -1175,7 +1175,7 @@ type EditableHeadingProps = {
|
|
|
1175
1175
|
* an accessible button that enables editing mode. The component handles empty values, keyboard
|
|
1176
1176
|
* navigation (Enter to save, Escape to cancel), and provides callbacks for value and state changes.
|
|
1177
1177
|
*/
|
|
1178
|
-
declare const EditableHeading: ({ children, onValueChange, onEditingChange, tooltipText, ariaLabel,
|
|
1178
|
+
declare const EditableHeading: ({ children, onValueChange, onEditingChange, tooltipText, ariaLabel, forceEditing, editingDisabled, }: EditableHeadingProps) => JSX.Element;
|
|
1179
1179
|
|
|
1180
1180
|
type EllipsisProps = ComponentPropsWithoutRef<'span'> & {
|
|
1181
1181
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -1160,9 +1160,9 @@ type EditableHeadingProps = {
|
|
|
1160
1160
|
ariaLabel?: string;
|
|
1161
1161
|
/**
|
|
1162
1162
|
* Force editing state for testing purposes
|
|
1163
|
-
*
|
|
1163
|
+
*
|
|
1164
1164
|
*/
|
|
1165
|
-
|
|
1165
|
+
forceEditing?: boolean;
|
|
1166
1166
|
/**
|
|
1167
1167
|
* When true, prevents the heading from entering edit mode
|
|
1168
1168
|
* @default false
|
|
@@ -1175,7 +1175,7 @@ type EditableHeadingProps = {
|
|
|
1175
1175
|
* an accessible button that enables editing mode. The component handles empty values, keyboard
|
|
1176
1176
|
* navigation (Enter to save, Escape to cancel), and provides callbacks for value and state changes.
|
|
1177
1177
|
*/
|
|
1178
|
-
declare const EditableHeading: ({ children, onValueChange, onEditingChange, tooltipText, ariaLabel,
|
|
1178
|
+
declare const EditableHeading: ({ children, onValueChange, onEditingChange, tooltipText, ariaLabel, forceEditing, editingDisabled, }: EditableHeadingProps) => JSX.Element;
|
|
1179
1179
|
|
|
1180
1180
|
type EllipsisProps = ComponentPropsWithoutRef<'span'> & {
|
|
1181
1181
|
/**
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
/*
|
|
3
|
-
* @license @wistia/ui v0.8.3
|
|
3
|
+
* @license @wistia/ui v0.8.3
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) 2024-2025, Wistia, Inc. and its affiliates.
|
|
6
6
|
*
|
|
@@ -9022,7 +9022,6 @@ import { isNil as isNil13, isNotNil as isNotNil16, isRecord as isRecord4 } from
|
|
|
9022
9022
|
// src/css/sharedStyles/inputCssVariables.ts
|
|
9023
9023
|
import { css as css24 } from "styled-components";
|
|
9024
9024
|
var inputCssVariables = css24`
|
|
9025
|
-
/* Colors */
|
|
9026
9025
|
--wui-input-color-bg: var(--wui-color-bg-surface);
|
|
9027
9026
|
--wui-input-color-bg-disabled: var(--wui-color-bg-surface-disabled);
|
|
9028
9027
|
--wui-input-color-border: var(--wui-color-border-secondary);
|
|
@@ -9030,20 +9029,13 @@ var inputCssVariables = css24`
|
|
|
9030
9029
|
--wui-input-color-border-error: var(--wui-color-invalid-indicator);
|
|
9031
9030
|
--wui-input-color-border-disabled: var(--wui-color-border-disabled);
|
|
9032
9031
|
--wui-input-color-text: var(--wui-color-text);
|
|
9033
|
-
|
|
9034
|
-
/* Border */
|
|
9035
9032
|
--wui-input-border-radius: var(--wui-border-radius-03);
|
|
9036
9033
|
--wui-input-multiline-border-radius: var(--wui-border-radius-02);
|
|
9037
|
-
|
|
9038
|
-
/* Padding */
|
|
9039
9034
|
--wui-input-vertical-padding: var(--wui-space-02);
|
|
9040
9035
|
--wui-input-horizontal-padding: var(--wui-space-03);
|
|
9041
|
-
|
|
9042
|
-
/* Typography */
|
|
9043
9036
|
--wui-input-placeholder: var(--wui-gray-10);
|
|
9044
9037
|
--wui-input-font-size: var(--wui-typography-body-3-size);
|
|
9045
9038
|
--wui-input-line-height: 16px;
|
|
9046
|
-
--wui-input-font-weight: var(--wui-typography-weight-body);
|
|
9047
9039
|
`;
|
|
9048
9040
|
|
|
9049
9041
|
// src/components/Input/Input.tsx
|
|
@@ -9060,7 +9052,7 @@ var inputStyles = css25`
|
|
|
9060
9052
|
border-radius: var(--wui-input-border-radius);
|
|
9061
9053
|
font-size: var(--wui-input-font-size);
|
|
9062
9054
|
line-height: var(--wui-input-line-height);
|
|
9063
|
-
font-weight: var(--wui-
|
|
9055
|
+
font-weight: var(--wui-typography-weight-body);
|
|
9064
9056
|
color: var(--wui-input-color-text);
|
|
9065
9057
|
|
|
9066
9058
|
&::placeholder {
|
|
@@ -9230,12 +9222,15 @@ var StyledInput = styled31(Input)`
|
|
|
9230
9222
|
min-height: unset;
|
|
9231
9223
|
}
|
|
9232
9224
|
|
|
9233
|
-
|
|
9234
|
-
|
|
9235
|
-
|
|
9236
|
-
|
|
9225
|
+
resize: vertical;
|
|
9226
|
+
font-size: var(--wui-typography-heading-1-size);
|
|
9227
|
+
font-weight: var(--wui-typography-heading-1-weight);
|
|
9228
|
+
line-height: var(--wui-typography-heading-1-line-height);
|
|
9229
|
+
font-family: var(--wui-typography-heading-1-family);
|
|
9230
|
+
outline: 2px solid var(--wui-color-focus-ring);
|
|
9231
|
+
outline-offset: -2px;
|
|
9237
9232
|
|
|
9238
|
-
|
|
9233
|
+
&& {
|
|
9239
9234
|
width: 100%;
|
|
9240
9235
|
padding: var(--wui-space-02);
|
|
9241
9236
|
border: none;
|
|
@@ -9266,7 +9261,7 @@ var EditableHeading = ({
|
|
|
9266
9261
|
onEditingChange,
|
|
9267
9262
|
tooltipText = "Click to edit title",
|
|
9268
9263
|
ariaLabel = "Edit title",
|
|
9269
|
-
|
|
9264
|
+
forceEditing = false,
|
|
9270
9265
|
editingDisabled = false
|
|
9271
9266
|
}) => {
|
|
9272
9267
|
const [isEditing, setIsEditing] = useState6(false);
|
|
@@ -9319,7 +9314,7 @@ var EditableHeading = ({
|
|
|
9319
9314
|
if (editingDisabled) {
|
|
9320
9315
|
return HeadingComponent2;
|
|
9321
9316
|
}
|
|
9322
|
-
if (isEditing ||
|
|
9317
|
+
if (isEditing || forceEditing) {
|
|
9323
9318
|
return /* @__PURE__ */ jsx220(
|
|
9324
9319
|
StyledInput,
|
|
9325
9320
|
{
|
|
@@ -11042,42 +11037,37 @@ import styled52, { css as css31 } from "styled-components";
|
|
|
11042
11037
|
import { Root as ToggleGroupRoot } from "@radix-ui/react-toggle-group";
|
|
11043
11038
|
import { isNil as isNil14 } from "@wistia/type-guards";
|
|
11044
11039
|
|
|
11045
|
-
// src/components/SegmentedControl/
|
|
11040
|
+
// src/components/SegmentedControl/useSelectedItemMeasurements.tsx
|
|
11046
11041
|
import { createContext as createContext6, useContext as useContext5, useMemo as useMemo8, useState as useState10 } from "react";
|
|
11047
11042
|
import { jsx as jsx247 } from "react/jsx-runtime";
|
|
11048
|
-
var
|
|
11049
|
-
|
|
11043
|
+
var SelectedItemMeasurementsContext = createContext6(
|
|
11044
|
+
null
|
|
11045
|
+
);
|
|
11046
|
+
var SelectedItemMeasurementsProvider = ({
|
|
11050
11047
|
children
|
|
11051
11048
|
}) => {
|
|
11052
11049
|
const [selectedItemMeasurements, setSelectedItemMeasurements] = useState10(null);
|
|
11053
|
-
const selectedItemIndicatorStyle = useMemo8(
|
|
11054
|
-
() => selectedItemMeasurements != null ? {
|
|
11055
|
-
height: `${selectedItemMeasurements.offsetHeight}px`,
|
|
11056
|
-
transform: `translateX(${selectedItemMeasurements.offsetLeft}px) translateY(-50%)`,
|
|
11057
|
-
width: `${selectedItemMeasurements.offsetWidth}px`
|
|
11058
|
-
} : {
|
|
11059
|
-
transform: "translateY(-50%)"
|
|
11060
|
-
},
|
|
11061
|
-
[selectedItemMeasurements]
|
|
11062
|
-
);
|
|
11063
11050
|
const contextValue = useMemo8(
|
|
11064
11051
|
() => ({
|
|
11065
11052
|
setSelectedItemMeasurements,
|
|
11066
|
-
|
|
11053
|
+
selectedItemMeasurements
|
|
11067
11054
|
}),
|
|
11068
|
-
[
|
|
11055
|
+
[selectedItemMeasurements]
|
|
11069
11056
|
);
|
|
11070
|
-
return /* @__PURE__ */ jsx247(
|
|
11057
|
+
return /* @__PURE__ */ jsx247(SelectedItemMeasurementsContext.Provider, { value: contextValue, children });
|
|
11071
11058
|
};
|
|
11072
|
-
var
|
|
11073
|
-
const context = useContext5(
|
|
11059
|
+
var useSelectedItemMeasurements = () => {
|
|
11060
|
+
const context = useContext5(SelectedItemMeasurementsContext);
|
|
11074
11061
|
if (context === null) {
|
|
11075
|
-
throw new Error(
|
|
11062
|
+
throw new Error(
|
|
11063
|
+
"useSelectedItemMeasurements must be used within a SelectedItemMeasurementsProvider"
|
|
11064
|
+
);
|
|
11076
11065
|
}
|
|
11077
11066
|
return context;
|
|
11078
11067
|
};
|
|
11079
11068
|
|
|
11080
11069
|
// src/components/SegmentedControl/SelectedItemIndicator.tsx
|
|
11070
|
+
import { useMemo as useMemo9 } from "react";
|
|
11081
11071
|
import styled51 from "styled-components";
|
|
11082
11072
|
|
|
11083
11073
|
// src/components/SegmentedControl/useSegmentedControlValue.tsx
|
|
@@ -11099,7 +11089,7 @@ var SelectedItemIndicatorDiv = styled51.div`
|
|
|
11099
11089
|
border-radius: var(--wui-border-radius-rounded);
|
|
11100
11090
|
left: 0;
|
|
11101
11091
|
position: absolute;
|
|
11102
|
-
top:
|
|
11092
|
+
top: 0;
|
|
11103
11093
|
box-shadow: var(--wui-elevation-01);
|
|
11104
11094
|
transition:
|
|
11105
11095
|
transform var(--wui-motion-duration-02) var(--wui-motion-ease-out),
|
|
@@ -11108,11 +11098,28 @@ var SelectedItemIndicatorDiv = styled51.div`
|
|
|
11108
11098
|
`;
|
|
11109
11099
|
var SelectedItemIndicator = () => {
|
|
11110
11100
|
const selectedValue = useSegmentedControlValue();
|
|
11111
|
-
const {
|
|
11101
|
+
const { selectedItemMeasurements } = useSelectedItemMeasurements();
|
|
11102
|
+
const selectedItemIndicatorStyle = useMemo9(
|
|
11103
|
+
() => selectedItemMeasurements != null ? {
|
|
11104
|
+
height: `${selectedItemMeasurements.offsetHeight}px`,
|
|
11105
|
+
transform: `translateX(${selectedItemMeasurements.offsetLeft}px)`,
|
|
11106
|
+
width: `${selectedItemMeasurements.offsetWidth}px`
|
|
11107
|
+
} : {},
|
|
11108
|
+
[selectedItemMeasurements]
|
|
11109
|
+
);
|
|
11112
11110
|
if (!selectedValue) {
|
|
11113
11111
|
return null;
|
|
11114
11112
|
}
|
|
11115
|
-
return /* @__PURE__ */ jsx248(
|
|
11113
|
+
return /* @__PURE__ */ jsx248(
|
|
11114
|
+
SelectedItemIndicatorDiv,
|
|
11115
|
+
{
|
|
11116
|
+
style: {
|
|
11117
|
+
width: selectedItemIndicatorStyle.width,
|
|
11118
|
+
transform: selectedItemIndicatorStyle.transform,
|
|
11119
|
+
height: selectedItemIndicatorStyle.height
|
|
11120
|
+
}
|
|
11121
|
+
}
|
|
11122
|
+
);
|
|
11116
11123
|
};
|
|
11117
11124
|
|
|
11118
11125
|
// src/components/SegmentedControl/SegmentedControl.tsx
|
|
@@ -11121,10 +11128,9 @@ var segmentedControlStyles = css31`
|
|
|
11121
11128
|
display: inline-flex;
|
|
11122
11129
|
background-color: var(--wui-color-bg-surface-secondary);
|
|
11123
11130
|
border-radius: var(--wui-border-radius-rounded);
|
|
11131
|
+
border: 2px solid var(--wui-color-bg-surface-secondary);
|
|
11124
11132
|
gap: var(--wui-space-01);
|
|
11125
11133
|
isolation: isolate;
|
|
11126
|
-
overflow: hidden;
|
|
11127
|
-
padding: 2px;
|
|
11128
11134
|
position: relative;
|
|
11129
11135
|
width: ${({ $fullWidth }) => $fullWidth ? "100%" : "auto"};
|
|
11130
11136
|
`;
|
|
@@ -11155,7 +11161,7 @@ var SegmentedControl = forwardRef20(
|
|
|
11155
11161
|
type: "single",
|
|
11156
11162
|
value: selectedValue,
|
|
11157
11163
|
...props,
|
|
11158
|
-
children: /* @__PURE__ */ jsx249(SegmentedControlValueProvider, { value: selectedValue, children: /* @__PURE__ */ jsxs35(
|
|
11164
|
+
children: /* @__PURE__ */ jsx249(SegmentedControlValueProvider, { value: selectedValue, children: /* @__PURE__ */ jsxs35(SelectedItemMeasurementsProvider, { children: [
|
|
11159
11165
|
/* @__PURE__ */ jsx249(SelectedItemIndicator, {}),
|
|
11160
11166
|
children
|
|
11161
11167
|
] }) })
|
|
@@ -11237,7 +11243,7 @@ var StyledSegmentedControlItem = styled53(ToggleGroupItem)`
|
|
|
11237
11243
|
var SegmentedControlItem = forwardRef21(
|
|
11238
11244
|
({ disabled, icon, label, "aria-label": ariaLabel, value }, forwardedRef) => {
|
|
11239
11245
|
const selectedValue = useSegmentedControlValue();
|
|
11240
|
-
const { setSelectedItemMeasurements } =
|
|
11246
|
+
const { setSelectedItemMeasurements } = useSelectedItemMeasurements();
|
|
11241
11247
|
const buttonRef = useRef10(null);
|
|
11242
11248
|
const combinedRef = mergeRefs([buttonRef, forwardedRef]);
|
|
11243
11249
|
const handleClick = (event) => {
|
|
@@ -11845,7 +11851,7 @@ var StyledTabItem = styled66(RadixTab)`
|
|
|
11845
11851
|
var TabItem = forwardRef25(
|
|
11846
11852
|
({ disabled = false, icon, label, "aria-label": ariaLabel, value }, forwardedRef) => {
|
|
11847
11853
|
const selectedValue = useTabsValue();
|
|
11848
|
-
const { setSelectedItemMeasurements } =
|
|
11854
|
+
const { setSelectedItemMeasurements } = useSelectedItemMeasurements();
|
|
11849
11855
|
const buttonRef = useRef11(null);
|
|
11850
11856
|
const combinedRef = mergeRefs([buttonRef, forwardedRef]);
|
|
11851
11857
|
useEffect9(() => {
|
|
@@ -11914,6 +11920,7 @@ var extractTabItems = (children) => {
|
|
|
11914
11920
|
};
|
|
11915
11921
|
|
|
11916
11922
|
// src/components/Tabs/SelectedItemIndicator.tsx
|
|
11923
|
+
import { useMemo as useMemo10 } from "react";
|
|
11917
11924
|
import styled67 from "styled-components";
|
|
11918
11925
|
import { jsx as jsx262 } from "react/jsx-runtime";
|
|
11919
11926
|
var TabsSelectedItemIndicatorDiv = styled67(SelectedItemIndicatorDiv)`
|
|
@@ -11922,12 +11929,29 @@ var TabsSelectedItemIndicatorDiv = styled67(SelectedItemIndicatorDiv)`
|
|
|
11922
11929
|
}
|
|
11923
11930
|
`;
|
|
11924
11931
|
var SelectedItemIndicator2 = () => {
|
|
11925
|
-
const {
|
|
11932
|
+
const { selectedItemMeasurements } = useSelectedItemMeasurements();
|
|
11926
11933
|
const selectedValue = useTabsValue();
|
|
11934
|
+
const selectedItemIndicatorStyle = useMemo10(
|
|
11935
|
+
() => selectedItemMeasurements != null ? {
|
|
11936
|
+
height: `${selectedItemMeasurements.offsetHeight}px`,
|
|
11937
|
+
transform: `translateX(${selectedItemMeasurements.offsetLeft}px)`,
|
|
11938
|
+
width: `${selectedItemMeasurements.offsetWidth}px`
|
|
11939
|
+
} : {},
|
|
11940
|
+
[selectedItemMeasurements]
|
|
11941
|
+
);
|
|
11927
11942
|
if (selectedValue == null) {
|
|
11928
11943
|
return null;
|
|
11929
11944
|
}
|
|
11930
|
-
return /* @__PURE__ */ jsx262(
|
|
11945
|
+
return /* @__PURE__ */ jsx262(
|
|
11946
|
+
TabsSelectedItemIndicatorDiv,
|
|
11947
|
+
{
|
|
11948
|
+
style: {
|
|
11949
|
+
width: selectedItemIndicatorStyle.width,
|
|
11950
|
+
transform: selectedItemIndicatorStyle.transform,
|
|
11951
|
+
height: selectedItemIndicatorStyle.height
|
|
11952
|
+
}
|
|
11953
|
+
}
|
|
11954
|
+
);
|
|
11931
11955
|
};
|
|
11932
11956
|
|
|
11933
11957
|
// src/components/Tabs/Tabs.tsx
|
|
@@ -11974,7 +11998,7 @@ var Tabs = forwardRef26(
|
|
|
11974
11998
|
activationMode: "automatic",
|
|
11975
11999
|
...props,
|
|
11976
12000
|
...modeProps,
|
|
11977
|
-
children: /* @__PURE__ */ jsx263(TabsValueProvider, { value: currentValue, children: /* @__PURE__ */ jsxs42(
|
|
12001
|
+
children: /* @__PURE__ */ jsx263(TabsValueProvider, { value: currentValue, children: /* @__PURE__ */ jsxs42(SelectedItemMeasurementsProvider, { children: [
|
|
11978
12002
|
/* @__PURE__ */ jsxs42(
|
|
11979
12003
|
TabList,
|
|
11980
12004
|
{
|