@yahoo/uds-mobile 2.21.2 → 2.23.0
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/README.md +2 -0
- package/dist/bin/automated-config/dist/generated/generatedConfigs.mjs +3127 -452
- package/dist/bin/uds-mobile.mjs +7 -7
- package/dist/components/IconButton.cjs +24 -21
- package/dist/components/IconButton.js +25 -22
- package/dist/components/IconButton.js.map +1 -1
- package/dist/components/Select/Select.cjs +194 -0
- package/dist/components/Select/Select.d.cts +47 -0
- package/dist/components/Select/Select.d.cts.map +1 -0
- package/dist/components/Select/Select.d.ts +47 -0
- package/dist/components/Select/Select.d.ts.map +1 -0
- package/dist/components/Select/Select.js +194 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/SelectContent.cjs +148 -0
- package/dist/components/Select/SelectContent.d.cts +31 -0
- package/dist/components/Select/SelectContent.d.cts.map +1 -0
- package/dist/components/Select/SelectContent.d.ts +31 -0
- package/dist/components/Select/SelectContent.d.ts.map +1 -0
- package/dist/components/Select/SelectContent.js +147 -0
- package/dist/components/Select/SelectContent.js.map +1 -0
- package/dist/components/Select/SelectItem.cjs +138 -0
- package/dist/components/Select/SelectItem.d.cts +24 -0
- package/dist/components/Select/SelectItem.d.cts.map +1 -0
- package/dist/components/Select/SelectItem.d.ts +24 -0
- package/dist/components/Select/SelectItem.d.ts.map +1 -0
- package/dist/components/Select/SelectItem.js +137 -0
- package/dist/components/Select/SelectItem.js.map +1 -0
- package/dist/components/Select/SelectTrigger.cjs +140 -0
- package/dist/components/Select/SelectTrigger.d.cts +13 -0
- package/dist/components/Select/SelectTrigger.d.cts.map +1 -0
- package/dist/components/Select/SelectTrigger.d.ts +13 -0
- package/dist/components/Select/SelectTrigger.d.ts.map +1 -0
- package/dist/components/Select/SelectTrigger.js +139 -0
- package/dist/components/Select/SelectTrigger.js.map +1 -0
- package/dist/components/Select/index.cjs +8 -0
- package/dist/components/Select/index.d.cts +5 -0
- package/dist/components/Select/index.d.ts +5 -0
- package/dist/components/Select/index.js +5 -0
- package/dist/components/Select/selectContext.cjs +22 -0
- package/dist/components/Select/selectContext.d.cts +12 -0
- package/dist/components/Select/selectContext.d.cts.map +1 -0
- package/dist/components/Select/selectContext.d.ts +12 -0
- package/dist/components/Select/selectContext.d.ts.map +1 -0
- package/dist/components/Select/selectContext.js +19 -0
- package/dist/components/Select/selectContext.js.map +1 -0
- package/dist/components/Select/selectItemTheme.cjs +39 -0
- package/dist/components/Select/selectItemTheme.d.cts +19 -0
- package/dist/components/Select/selectItemTheme.d.cts.map +1 -0
- package/dist/components/Select/selectItemTheme.d.ts +19 -0
- package/dist/components/Select/selectItemTheme.d.ts.map +1 -0
- package/dist/components/Select/selectItemTheme.js +39 -0
- package/dist/components/Select/selectItemTheme.js.map +1 -0
- package/dist/components/Select/types.cjs +1 -0
- package/dist/components/Select/types.d.cts +43 -0
- package/dist/components/Select/types.d.cts.map +1 -0
- package/dist/components/Select/types.d.ts +43 -0
- package/dist/components/Select/types.d.ts.map +1 -0
- package/dist/components/Select/types.js +1 -0
- package/dist/components/Switch.cjs +34 -12
- package/dist/components/Switch.d.cts.map +1 -1
- package/dist/components/Switch.d.ts.map +1 -1
- package/dist/components/Switch.js +36 -14
- package/dist/components/Switch.js.map +1 -1
- package/dist/components/UDSGestureProvider.cjs +4 -0
- package/dist/components/UDSGestureProvider.d.cts +3 -0
- package/dist/components/UDSGestureProvider.d.ts +3 -0
- package/dist/components/UDSGestureProvider.js +3 -0
- package/dist/components/UDSProvider.cjs +10 -5
- package/dist/components/UDSProvider.d.cts +15 -7
- package/dist/components/UDSProvider.d.cts.map +1 -1
- package/dist/components/UDSProvider.d.ts +15 -7
- package/dist/components/UDSProvider.d.ts.map +1 -1
- package/dist/components/UDSProvider.js +10 -6
- package/dist/components/UDSProvider.js.map +1 -1
- package/dist/components/internal/Overlay/OverlayPortal.js.map +1 -1
- package/dist/components/internal/Overlay/index.cjs +2 -0
- package/dist/components/internal/Overlay/index.d.cts +2 -1
- package/dist/components/internal/Overlay/index.d.ts +2 -1
- package/dist/components/internal/Overlay/index.js +2 -1
- package/dist/components/internal/Overlay/measureTrigger.cjs +35 -0
- package/dist/components/internal/Overlay/measureTrigger.d.cts +9 -0
- package/dist/components/internal/Overlay/measureTrigger.d.cts.map +1 -0
- package/dist/components/internal/Overlay/measureTrigger.d.ts +9 -0
- package/dist/components/internal/Overlay/measureTrigger.d.ts.map +1 -0
- package/dist/components/internal/Overlay/measureTrigger.js +36 -0
- package/dist/components/internal/Overlay/measureTrigger.js.map +1 -0
- package/dist/jest/mocks/styles.cjs +68 -10
- package/dist/jest/mocks/styles.d.cts +5 -2
- package/dist/jest/mocks/styles.d.cts.map +1 -1
- package/dist/jest/mocks/styles.d.ts +5 -2
- package/dist/jest/mocks/styles.d.ts.map +1 -1
- package/dist/jest/mocks/styles.js +66 -11
- package/dist/jest/mocks/styles.js.map +1 -1
- package/dist/jest/mocks/unistyles.cjs +16 -1
- package/dist/jest/mocks/unistyles.d.cts +56 -2
- package/dist/jest/mocks/unistyles.d.cts.map +1 -1
- package/dist/jest/mocks/unistyles.d.ts +56 -2
- package/dist/jest/mocks/unistyles.d.ts.map +1 -1
- package/dist/jest/mocks/unistyles.js +16 -1
- package/dist/jest/mocks/unistyles.js.map +1 -1
- package/dist/portal.cjs +1 -1
- package/dist/portal.js +1 -1
- package/dist/portal.js.map +1 -1
- package/dist/types/dist/index.d.cts +28 -1
- package/dist/types/dist/index.d.cts.map +1 -1
- package/dist/types/dist/index.d.ts +28 -1
- package/dist/types/dist/index.d.ts.map +1 -1
- package/generated/styles.cjs +125 -0
- package/generated/styles.d.ts +39 -0
- package/generated/styles.mjs +125 -0
- package/generated/unistyles.d.ts +108 -8
- package/package.json +21 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectTrigger.js","names":["RNPressable","RNView","RNText"],"sources":["../../../src/components/Select/SelectTrigger.tsx"],"sourcesContent":["import { memo, useCallback, useMemo } from 'react';\nimport type { View } from 'react-native';\nimport { Pressable as RNPressable, Text as RNText, View as RNView } from 'react-native';\nimport Animated, {\n Easing,\n useAnimatedStyle,\n useDerivedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { inputStyles } from '../../../generated/styles';\nimport type { IconSlotType } from '../IconSlot';\nimport { IconSlot } from '../IconSlot';\nimport { measureTrigger } from '../internal/Overlay';\nimport { useSelectContext, useSelectFieldContext } from './selectContext';\n\ninterface SelectTriggerProps {\n startIcon?: IconSlotType;\n endIcon?: IconSlotType;\n}\n\nconst SelectTrigger = memo(function SelectTrigger({ startIcon, endIcon }: SelectTriggerProps) {\n const {\n value,\n open,\n setOpen,\n triggerRef,\n triggerRect,\n setTriggerRect,\n getItemLabel,\n setHighlightedValue,\n reduceMotion,\n } = useSelectContext();\n const { size, disabled, readOnly, hasError, placeholder, uid, width } = useSelectFieldContext();\n\n const hasValue = value.length > 0;\n const valueState = hasValue ? 'filled' : 'empty';\n const isInteractive = !readOnly && !disabled;\n const useAnimatedChevron = endIcon === undefined;\n const displayText = hasValue ? (getItemLabel(value) ?? value) : (placeholder ?? '');\n\n inputStyles.useVariants({\n size,\n value: valueState,\n pressed: open,\n readonly: readOnly,\n invalid: hasError,\n });\n\n const inputWrapperStyle = useMemo(\n () => [\n inputStyles.inputWrapper,\n inputStyles.inputWrapperStatic,\n inputStyles.inputWrapperDynamic,\n {\n flexDirection: 'row' as const,\n alignItems: 'center' as const,\n width,\n alignSelf: 'stretch' as const,\n },\n ],\n [\n inputStyles.inputWrapper,\n inputStyles.inputWrapperDynamic,\n inputStyles.inputWrapperStatic,\n width,\n ],\n );\n\n const textContainerStyle = useMemo(\n () => [\n {\n flex: 1,\n justifyContent: 'center' as const,\n },\n typeof inputStyles.input.height === 'number' ? { minHeight: inputStyles.input.height } : null,\n ],\n [inputStyles.input],\n );\n\n const textInputStyle = useMemo(\n () => [\n {\n fontFamily: inputStyles.inputWrapperStatic.fontFamily,\n fontSize: inputStyles.inputWrapperStatic.fontSize,\n letterSpacing: inputStyles.inputWrapperStatic.letterSpacing,\n // Match TextInput vertical centering: wrapper lineHeight is for layout, not single-line text.\n lineHeight: inputStyles.inputWrapperStatic.fontSize,\n paddingVertical: 0,\n },\n inputStyles.input,\n { height: undefined },\n !hasValue ? inputStyles.inputPlaceholder : null,\n ],\n [hasValue, inputStyles.input, inputStyles.inputPlaceholder, inputStyles.inputWrapperStatic],\n );\n\n const chevronProgress = useDerivedValue(\n () =>\n withTiming(open ? 1 : 0, {\n duration: reduceMotion ? 0 : 200,\n easing: Easing.out(Easing.ease),\n }),\n [open, reduceMotion],\n );\n\n const chevronAnimatedStyle = useAnimatedStyle(() => ({\n transform: [{ rotate: `${chevronProgress.value * 180}deg` }],\n }));\n\n const handleRef = useCallback(\n (node: View | null) => {\n triggerRef.current = node;\n },\n [triggerRef],\n );\n\n const handlePress = useCallback(() => {\n if (!isInteractive) {\n return;\n }\n\n if (open) {\n setOpen(false);\n setHighlightedValue(null);\n return;\n }\n\n measureTrigger(triggerRef.current, triggerRect, setTriggerRect);\n setHighlightedValue(null);\n setOpen(true);\n }, [isInteractive, open, setHighlightedValue, setOpen, setTriggerRect, triggerRect, triggerRef]);\n\n return (\n <RNPressable\n ref={handleRef}\n testID=\"select-trigger\"\n onPress={handlePress}\n disabled={!isInteractive}\n style={{ width, alignSelf: 'stretch' }}\n accessibilityRole=\"button\"\n accessibilityLabel={displayText || uid}\n accessibilityState={{\n disabled: !isInteractive,\n expanded: open,\n selected: hasValue,\n }}\n >\n <RNView style={inputWrapperStyle} pointerEvents=\"none\">\n {startIcon ? (\n <IconSlot icon={startIcon} variant=\"outline\" style={inputStyles.startIcon} />\n ) : null}\n\n <RNView style={textContainerStyle}>\n <RNText numberOfLines={1} style={textInputStyle}>\n {displayText}\n </RNText>\n </RNView>\n\n {useAnimatedChevron || endIcon ? (\n <Animated.View\n style={useAnimatedChevron ? chevronAnimatedStyle : undefined}\n testID=\"select-chevron\"\n >\n <IconSlot\n icon={useAnimatedChevron ? 'ChevronDown' : endIcon!}\n size=\"sm\"\n variant=\"outline\"\n style={inputStyles.endIcon}\n />\n </Animated.View>\n ) : null}\n </RNView>\n </RNPressable>\n );\n});\n\nSelectTrigger.displayName = 'SelectTrigger';\n\nexport { SelectTrigger, type SelectTriggerProps };\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const require_components_Select_Select = require("./Select.cjs");
|
|
4
|
+
const require_components_Select_SelectContent = require("./SelectContent.cjs");
|
|
5
|
+
const require_components_Select_SelectItem = require("./SelectItem.cjs");
|
|
6
|
+
exports.Select = require_components_Select_Select.Select;
|
|
7
|
+
exports.SelectContent = require_components_Select_SelectContent.SelectContent;
|
|
8
|
+
exports.SelectItem = require_components_Select_SelectItem.SelectItem;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
import { Select, SelectProps } from "./Select.cjs";
|
|
3
|
+
import { SelectContent, SelectContentProps } from "./SelectContent.cjs";
|
|
4
|
+
import { SelectItem, SelectItemProps } from "./SelectItem.cjs";
|
|
5
|
+
export { Select, SelectContent, type SelectContentProps, SelectItem, type SelectItemProps, type SelectProps };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
import { Select, SelectProps } from "./Select.js";
|
|
3
|
+
import { SelectContent, SelectContentProps } from "./SelectContent.js";
|
|
4
|
+
import { SelectItem, SelectItemProps } from "./SelectItem.js";
|
|
5
|
+
export { Select, SelectContent, type SelectContentProps, SelectItem, type SelectItemProps, type SelectProps };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
let react = require("react");
|
|
5
|
+
//#region src/components/Select/selectContext.tsx
|
|
6
|
+
const SelectContext = (0, react.createContext)(null);
|
|
7
|
+
const SelectFieldContext = (0, react.createContext)(null);
|
|
8
|
+
function useSelectContext() {
|
|
9
|
+
const context = (0, react.useContext)(SelectContext);
|
|
10
|
+
if (!context) throw new Error("Select compound components must be used within Select");
|
|
11
|
+
return context;
|
|
12
|
+
}
|
|
13
|
+
function useSelectFieldContext() {
|
|
14
|
+
const context = (0, react.useContext)(SelectFieldContext);
|
|
15
|
+
if (!context) throw new Error("Select field components must be used within Select");
|
|
16
|
+
return context;
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
exports.SelectContext = SelectContext;
|
|
20
|
+
exports.SelectFieldContext = SelectFieldContext;
|
|
21
|
+
exports.useSelectContext = useSelectContext;
|
|
22
|
+
exports.useSelectFieldContext = useSelectFieldContext;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
import { SelectContextValue, SelectFieldContextValue } from "./types.cjs";
|
|
3
|
+
import * as _$react from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Select/selectContext.d.ts
|
|
6
|
+
declare const SelectContext: _$react.Context<SelectContextValue | null>;
|
|
7
|
+
declare const SelectFieldContext: _$react.Context<SelectFieldContextValue | null>;
|
|
8
|
+
declare function useSelectContext(): SelectContextValue;
|
|
9
|
+
declare function useSelectFieldContext(): SelectFieldContextValue;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { SelectContext, SelectFieldContext, useSelectContext, useSelectFieldContext };
|
|
12
|
+
//# sourceMappingURL=selectContext.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectContext.d.cts","names":[],"sources":["../../../src/components/Select/selectContext.tsx"],"mappings":";;;;;cAIa,aAAA,EAAa,OAAA,CAAA,OAAA,CAAA,kBAAA;AAAA,cACb,kBAAA,EAAkB,OAAA,CAAA,OAAA,CAAA,uBAAA;AAAA,iBAEf,gBAAA,CAAA,GAAoB,kBAAA;AAAA,iBASpB,qBAAA,CAAA,GAAyB,uBAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
import { SelectContextValue, SelectFieldContextValue } from "./types.js";
|
|
3
|
+
import * as _$react from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Select/selectContext.d.ts
|
|
6
|
+
declare const SelectContext: _$react.Context<SelectContextValue | null>;
|
|
7
|
+
declare const SelectFieldContext: _$react.Context<SelectFieldContextValue | null>;
|
|
8
|
+
declare function useSelectContext(): SelectContextValue;
|
|
9
|
+
declare function useSelectFieldContext(): SelectFieldContextValue;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { SelectContext, SelectFieldContext, useSelectContext, useSelectFieldContext };
|
|
12
|
+
//# sourceMappingURL=selectContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectContext.d.ts","names":[],"sources":["../../../src/components/Select/selectContext.tsx"],"mappings":";;;;;cAIa,aAAA,EAAa,OAAA,CAAA,OAAA,CAAA,kBAAA;AAAA,cACb,kBAAA,EAAkB,OAAA,CAAA,OAAA,CAAA,uBAAA;AAAA,iBAEf,gBAAA,CAAA,GAAoB,kBAAA;AAAA,iBASpB,qBAAA,CAAA,GAAyB,uBAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
//#region src/components/Select/selectContext.tsx
|
|
4
|
+
const SelectContext = createContext(null);
|
|
5
|
+
const SelectFieldContext = createContext(null);
|
|
6
|
+
function useSelectContext() {
|
|
7
|
+
const context = useContext(SelectContext);
|
|
8
|
+
if (!context) throw new Error("Select compound components must be used within Select");
|
|
9
|
+
return context;
|
|
10
|
+
}
|
|
11
|
+
function useSelectFieldContext() {
|
|
12
|
+
const context = useContext(SelectFieldContext);
|
|
13
|
+
if (!context) throw new Error("Select field components must be used within Select");
|
|
14
|
+
return context;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { SelectContext, SelectFieldContext, useSelectContext, useSelectFieldContext };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=selectContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectContext.js","names":[],"sources":["../../../src/components/Select/selectContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport type { SelectContextValue, SelectFieldContextValue } from './types';\n\nexport const SelectContext = createContext<SelectContextValue | null>(null);\nexport const SelectFieldContext = createContext<SelectFieldContextValue | null>(null);\n\nexport function useSelectContext(): SelectContextValue {\n const context = useContext(SelectContext);\n if (!context) {\n throw new Error('Select compound components must be used within Select');\n }\n\n return context;\n}\n\nexport function useSelectFieldContext(): SelectFieldContextValue {\n const context = useContext(SelectFieldContext);\n if (!context) {\n throw new Error('Select field components must be used within Select');\n }\n\n return context;\n}\n"],"mappings":";;;AAIA,MAAa,gBAAgB,cAAyC,KAAK;AAC3E,MAAa,qBAAqB,cAA8C,KAAK;AAErF,SAAgB,mBAAuC;CACrD,MAAM,UAAU,WAAW,cAAc;CACzC,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,wDAAwD;CAG1E,OAAO;;AAGT,SAAgB,wBAAiD;CAC/D,MAAM,UAAU,WAAW,mBAAmB;CAC9C,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,qDAAqD;CAGvE,OAAO"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
//#region src/components/Select/selectItemTheme.ts
|
|
4
|
+
function getSelectItemLayerPath(layer, active, state) {
|
|
5
|
+
return `selectItem/item/variant/default/active/${active}/${layer}/${state}`;
|
|
6
|
+
}
|
|
7
|
+
function getSelectItemSizeLayerPath(layer) {
|
|
8
|
+
return `selectItem/size/default/${layer}/rest`;
|
|
9
|
+
}
|
|
10
|
+
function mapInteractionToMobileState(state) {
|
|
11
|
+
if (state === "pressed" || state === "focused") return "pressed";
|
|
12
|
+
return "rest";
|
|
13
|
+
}
|
|
14
|
+
function getSelectItemLayerStyle(theme, layer, active, state) {
|
|
15
|
+
const style = theme.components[getSelectItemLayerPath(layer, active, state)];
|
|
16
|
+
return style && typeof style === "object" ? style : {};
|
|
17
|
+
}
|
|
18
|
+
function getSelectItemSizeLayerStyle(theme, layer) {
|
|
19
|
+
const style = theme.components[getSelectItemSizeLayerPath(layer)];
|
|
20
|
+
return style && typeof style === "object" ? style : {};
|
|
21
|
+
}
|
|
22
|
+
function resolveSelectItemInteractionState({ isPressed, isHighlighted }) {
|
|
23
|
+
if (isPressed) return "pressed";
|
|
24
|
+
if (isHighlighted) return "focused";
|
|
25
|
+
return "rest";
|
|
26
|
+
}
|
|
27
|
+
function getMergedSelectItemLayerStyle(theme, layer, interaction, isSelected) {
|
|
28
|
+
if (layer === "endIcon" && !isSelected) return {};
|
|
29
|
+
const active = isSelected ? "on" : "off";
|
|
30
|
+
const mobileState = mapInteractionToMobileState(interaction);
|
|
31
|
+
return {
|
|
32
|
+
...layer === "root" ? getSelectItemSizeLayerStyle(theme, "root") : {},
|
|
33
|
+
...layer === "text" ? getSelectItemSizeLayerStyle(theme, "text") : {},
|
|
34
|
+
...getSelectItemLayerStyle(theme, layer, active, mobileState)
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
exports.getMergedSelectItemLayerStyle = getMergedSelectItemLayerStyle;
|
|
39
|
+
exports.resolveSelectItemInteractionState = resolveSelectItemInteractionState;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
import { SelectItemInteractionState, SelectItemLayer } from "./types.cjs";
|
|
3
|
+
import { TextStyle, ViewStyle } from "react-native";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Select/selectItemTheme.d.ts
|
|
6
|
+
type SelectItemTheme = {
|
|
7
|
+
components: Record<string, any>;
|
|
8
|
+
};
|
|
9
|
+
declare function resolveSelectItemInteractionState({
|
|
10
|
+
isPressed,
|
|
11
|
+
isHighlighted
|
|
12
|
+
}: {
|
|
13
|
+
isPressed: boolean;
|
|
14
|
+
isHighlighted: boolean;
|
|
15
|
+
}): SelectItemInteractionState;
|
|
16
|
+
declare function getMergedSelectItemLayerStyle(theme: SelectItemTheme, layer: SelectItemLayer, interaction: SelectItemInteractionState, isSelected: boolean): ViewStyle | TextStyle;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { getMergedSelectItemLayerStyle, resolveSelectItemInteractionState };
|
|
19
|
+
//# sourceMappingURL=selectItemTheme.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectItemTheme.d.cts","names":[],"sources":["../../../src/components/Select/selectItemTheme.ts"],"mappings":";;;;;KAIK,eAAA;EAEH,UAAA,EAAY,MAAA;AAAA;AAAA,iBAyCL,iCAAA,CAAA;EACP,SAAA;EACA;AAAA;EAEA,SAAA;EACA,aAAA;AAAA,IACE,0BAAA;AAAA,iBAYK,6BAAA,CACP,KAAA,EAAO,eAAA,EACP,KAAA,EAAO,eAAA,EACP,WAAA,EAAa,0BAAA,EACb,UAAA,YACC,SAAA,GAAY,SAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
import { SelectItemInteractionState, SelectItemLayer } from "./types.js";
|
|
3
|
+
import { TextStyle, ViewStyle } from "react-native";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Select/selectItemTheme.d.ts
|
|
6
|
+
type SelectItemTheme = {
|
|
7
|
+
components: Record<string, any>;
|
|
8
|
+
};
|
|
9
|
+
declare function resolveSelectItemInteractionState({
|
|
10
|
+
isPressed,
|
|
11
|
+
isHighlighted
|
|
12
|
+
}: {
|
|
13
|
+
isPressed: boolean;
|
|
14
|
+
isHighlighted: boolean;
|
|
15
|
+
}): SelectItemInteractionState;
|
|
16
|
+
declare function getMergedSelectItemLayerStyle(theme: SelectItemTheme, layer: SelectItemLayer, interaction: SelectItemInteractionState, isSelected: boolean): ViewStyle | TextStyle;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { getMergedSelectItemLayerStyle, resolveSelectItemInteractionState };
|
|
19
|
+
//# sourceMappingURL=selectItemTheme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectItemTheme.d.ts","names":[],"sources":["../../../src/components/Select/selectItemTheme.ts"],"mappings":";;;;;KAIK,eAAA;EAEH,UAAA,EAAY,MAAA;AAAA;AAAA,iBAyCL,iCAAA,CAAA;EACP,SAAA;EACA;AAAA;EAEA,SAAA;EACA,aAAA;AAAA,IACE,0BAAA;AAAA,iBAYK,6BAAA,CACP,KAAA,EAAO,eAAA,EACP,KAAA,EAAO,eAAA,EACP,WAAA,EAAa,0BAAA,EACb,UAAA,YACC,SAAA,GAAY,SAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
//#region src/components/Select/selectItemTheme.ts
|
|
3
|
+
function getSelectItemLayerPath(layer, active, state) {
|
|
4
|
+
return `selectItem/item/variant/default/active/${active}/${layer}/${state}`;
|
|
5
|
+
}
|
|
6
|
+
function getSelectItemSizeLayerPath(layer) {
|
|
7
|
+
return `selectItem/size/default/${layer}/rest`;
|
|
8
|
+
}
|
|
9
|
+
function mapInteractionToMobileState(state) {
|
|
10
|
+
if (state === "pressed" || state === "focused") return "pressed";
|
|
11
|
+
return "rest";
|
|
12
|
+
}
|
|
13
|
+
function getSelectItemLayerStyle(theme, layer, active, state) {
|
|
14
|
+
const style = theme.components[getSelectItemLayerPath(layer, active, state)];
|
|
15
|
+
return style && typeof style === "object" ? style : {};
|
|
16
|
+
}
|
|
17
|
+
function getSelectItemSizeLayerStyle(theme, layer) {
|
|
18
|
+
const style = theme.components[getSelectItemSizeLayerPath(layer)];
|
|
19
|
+
return style && typeof style === "object" ? style : {};
|
|
20
|
+
}
|
|
21
|
+
function resolveSelectItemInteractionState({ isPressed, isHighlighted }) {
|
|
22
|
+
if (isPressed) return "pressed";
|
|
23
|
+
if (isHighlighted) return "focused";
|
|
24
|
+
return "rest";
|
|
25
|
+
}
|
|
26
|
+
function getMergedSelectItemLayerStyle(theme, layer, interaction, isSelected) {
|
|
27
|
+
if (layer === "endIcon" && !isSelected) return {};
|
|
28
|
+
const active = isSelected ? "on" : "off";
|
|
29
|
+
const mobileState = mapInteractionToMobileState(interaction);
|
|
30
|
+
return {
|
|
31
|
+
...layer === "root" ? getSelectItemSizeLayerStyle(theme, "root") : {},
|
|
32
|
+
...layer === "text" ? getSelectItemSizeLayerStyle(theme, "text") : {},
|
|
33
|
+
...getSelectItemLayerStyle(theme, layer, active, mobileState)
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { getMergedSelectItemLayerStyle, resolveSelectItemInteractionState };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=selectItemTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectItemTheme.js","names":[],"sources":["../../../src/components/Select/selectItemTheme.ts"],"sourcesContent":["import type { TextStyle, ViewStyle } from 'react-native';\n\nimport type { SelectItemInteractionState, SelectItemLayer } from './types';\n\ntype SelectItemTheme = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n components: Record<string, any>;\n};\n\nfunction getSelectItemLayerPath(\n layer: SelectItemLayer,\n active: 'on' | 'off',\n state: 'rest' | 'pressed',\n): string {\n return `selectItem/item/variant/default/active/${active}/${layer}/${state}`;\n}\n\nfunction getSelectItemSizeLayerPath(layer: 'root' | 'text'): string {\n return `selectItem/size/default/${layer}/rest`;\n}\n\nfunction mapInteractionToMobileState(state: SelectItemInteractionState): 'rest' | 'pressed' {\n if (state === 'pressed' || state === 'focused') {\n return 'pressed';\n }\n\n return 'rest';\n}\n\nfunction getSelectItemLayerStyle(\n theme: SelectItemTheme,\n layer: SelectItemLayer,\n active: 'on' | 'off',\n state: 'rest' | 'pressed',\n): ViewStyle | TextStyle {\n const style = theme.components[getSelectItemLayerPath(layer, active, state)];\n return style && typeof style === 'object' ? style : {};\n}\n\nfunction getSelectItemSizeLayerStyle(\n theme: SelectItemTheme,\n layer: 'root' | 'text',\n): ViewStyle | TextStyle {\n const style = theme.components[getSelectItemSizeLayerPath(layer)];\n return style && typeof style === 'object' ? style : {};\n}\n\nfunction resolveSelectItemInteractionState({\n isPressed,\n isHighlighted,\n}: {\n isPressed: boolean;\n isHighlighted: boolean;\n}): SelectItemInteractionState {\n if (isPressed) {\n return 'pressed';\n }\n\n if (isHighlighted) {\n return 'focused';\n }\n\n return 'rest';\n}\n\nfunction getMergedSelectItemLayerStyle(\n theme: SelectItemTheme,\n layer: SelectItemLayer,\n interaction: SelectItemInteractionState,\n isSelected: boolean,\n): ViewStyle | TextStyle {\n if (layer === 'endIcon' && !isSelected) {\n return {};\n }\n\n const active = isSelected ? 'on' : 'off';\n const mobileState = mapInteractionToMobileState(interaction);\n\n return {\n ...(layer === 'root' ? (getSelectItemSizeLayerStyle(theme, 'root') as object) : {}),\n ...(layer === 'text' ? (getSelectItemSizeLayerStyle(theme, 'text') as object) : {}),\n ...(getSelectItemLayerStyle(theme, layer, active, mobileState) as object),\n } as ViewStyle | TextStyle;\n}\n\nexport { getMergedSelectItemLayerStyle, resolveSelectItemInteractionState };\n"],"mappings":";;AASA,SAAS,uBACP,OACA,QACA,OACQ;CACR,OAAO,0CAA0C,OAAO,GAAG,MAAM,GAAG;;AAGtE,SAAS,2BAA2B,OAAgC;CAClE,OAAO,2BAA2B,MAAM;;AAG1C,SAAS,4BAA4B,OAAuD;CAC1F,IAAI,UAAU,aAAa,UAAU,WACnC,OAAO;CAGT,OAAO;;AAGT,SAAS,wBACP,OACA,OACA,QACA,OACuB;CACvB,MAAM,QAAQ,MAAM,WAAW,uBAAuB,OAAO,QAAQ,MAAM;CAC3E,OAAO,SAAS,OAAO,UAAU,WAAW,QAAQ,EAAE;;AAGxD,SAAS,4BACP,OACA,OACuB;CACvB,MAAM,QAAQ,MAAM,WAAW,2BAA2B,MAAM;CAChE,OAAO,SAAS,OAAO,UAAU,WAAW,QAAQ,EAAE;;AAGxD,SAAS,kCAAkC,EACzC,WACA,iBAI6B;CAC7B,IAAI,WACF,OAAO;CAGT,IAAI,eACF,OAAO;CAGT,OAAO;;AAGT,SAAS,8BACP,OACA,OACA,aACA,YACuB;CACvB,IAAI,UAAU,aAAa,CAAC,YAC1B,OAAO,EAAE;CAGX,MAAM,SAAS,aAAa,OAAO;CACnC,MAAM,cAAc,4BAA4B,YAAY;CAE5D,OAAO;EACL,GAAI,UAAU,SAAU,4BAA4B,OAAO,OAAO,GAAc,EAAE;EAClF,GAAI,UAAU,SAAU,4BAA4B,OAAO,OAAO,GAAc,EAAE;EAClF,GAAI,wBAAwB,OAAO,OAAO,QAAQ,YAAY;EAC/D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
|
|
2
|
+
import { InputSize } from "../../types/dist/index.cjs";
|
|
3
|
+
import { AnchoredRect } from "../internal/Overlay/types.cjs";
|
|
4
|
+
import { RefObject } from "react";
|
|
5
|
+
import { View } from "react-native";
|
|
6
|
+
|
|
7
|
+
//#region src/components/Select/types.d.ts
|
|
8
|
+
type SelectContentSize = 'default';
|
|
9
|
+
type SelectContentVariant = 'default';
|
|
10
|
+
type SelectItemSize = 'default';
|
|
11
|
+
type SelectItemVariant = 'default';
|
|
12
|
+
interface SelectFieldContextValue {
|
|
13
|
+
size: InputSize;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
readOnly?: boolean;
|
|
16
|
+
required?: boolean;
|
|
17
|
+
hasError?: boolean;
|
|
18
|
+
width: number | `${number}%` | '100%';
|
|
19
|
+
reduceMotion?: boolean;
|
|
20
|
+
placeholder?: string;
|
|
21
|
+
uid: string;
|
|
22
|
+
}
|
|
23
|
+
interface SelectContextValue {
|
|
24
|
+
value: string;
|
|
25
|
+
setValue: (value: string) => void;
|
|
26
|
+
open: boolean;
|
|
27
|
+
setOpen: (open: boolean) => void;
|
|
28
|
+
triggerRef: RefObject<View | null>;
|
|
29
|
+
triggerRect: AnchoredRect | null;
|
|
30
|
+
setTriggerRect: (rect: AnchoredRect | null) => void;
|
|
31
|
+
registerItem: (value: string, label: string) => void;
|
|
32
|
+
unregisterItem: (value: string) => void;
|
|
33
|
+
getItemLabel: (value: string) => string | undefined;
|
|
34
|
+
highlightedValue: string | null;
|
|
35
|
+
setHighlightedValue: (value: string | null) => void;
|
|
36
|
+
field: SelectFieldContextValue;
|
|
37
|
+
reduceMotion: boolean;
|
|
38
|
+
}
|
|
39
|
+
type SelectItemInteractionState = 'rest' | 'pressed' | 'focused';
|
|
40
|
+
type SelectItemLayer = 'root' | 'text' | 'endIcon';
|
|
41
|
+
//#endregion
|
|
42
|
+
export { SelectContentSize, SelectContentVariant, SelectContextValue, SelectFieldContextValue, SelectItemInteractionState, SelectItemLayer, SelectItemSize, SelectItemVariant };
|
|
43
|
+
//# sourceMappingURL=types.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/components/Select/types.ts"],"mappings":";;;;;;;KAMY,iBAAA;AAAA,KACA,oBAAA;AAAA,KACA,cAAA;AAAA,KACA,iBAAA;AAAA,UAEK,uBAAA;EACf,IAAA,EAAM,SAAA;EACN,QAAA;EACA,QAAA;EACA,QAAA;EACA,QAAA;EACA,KAAA;EACA,YAAA;EACA,WAAA;EACA,GAAA;AAAA;AAAA,UAGe,kBAAA;EACf,KAAA;EACA,QAAA,GAAW,KAAA;EACX,IAAA;EACA,OAAA,GAAU,IAAA;EACV,UAAA,EAAY,SAAA,CAAU,IAAA;EACtB,WAAA,EAAa,YAAA;EACb,cAAA,GAAiB,IAAA,EAAM,YAAA;EACvB,YAAA,GAAe,KAAA,UAAe,KAAA;EAC9B,cAAA,GAAiB,KAAA;EACjB,YAAA,GAAe,KAAA;EACf,gBAAA;EACA,mBAAA,GAAsB,KAAA;EACtB,KAAA,EAAO,uBAAA;EACP,YAAA;AAAA;AAAA,KAGU,0BAAA;AAAA,KAEA,eAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
|
|
2
|
+
import { InputSize } from "../../types/dist/index.js";
|
|
3
|
+
import { AnchoredRect } from "../internal/Overlay/types.js";
|
|
4
|
+
import { RefObject } from "react";
|
|
5
|
+
import { View } from "react-native";
|
|
6
|
+
|
|
7
|
+
//#region src/components/Select/types.d.ts
|
|
8
|
+
type SelectContentSize = 'default';
|
|
9
|
+
type SelectContentVariant = 'default';
|
|
10
|
+
type SelectItemSize = 'default';
|
|
11
|
+
type SelectItemVariant = 'default';
|
|
12
|
+
interface SelectFieldContextValue {
|
|
13
|
+
size: InputSize;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
readOnly?: boolean;
|
|
16
|
+
required?: boolean;
|
|
17
|
+
hasError?: boolean;
|
|
18
|
+
width: number | `${number}%` | '100%';
|
|
19
|
+
reduceMotion?: boolean;
|
|
20
|
+
placeholder?: string;
|
|
21
|
+
uid: string;
|
|
22
|
+
}
|
|
23
|
+
interface SelectContextValue {
|
|
24
|
+
value: string;
|
|
25
|
+
setValue: (value: string) => void;
|
|
26
|
+
open: boolean;
|
|
27
|
+
setOpen: (open: boolean) => void;
|
|
28
|
+
triggerRef: RefObject<View | null>;
|
|
29
|
+
triggerRect: AnchoredRect | null;
|
|
30
|
+
setTriggerRect: (rect: AnchoredRect | null) => void;
|
|
31
|
+
registerItem: (value: string, label: string) => void;
|
|
32
|
+
unregisterItem: (value: string) => void;
|
|
33
|
+
getItemLabel: (value: string) => string | undefined;
|
|
34
|
+
highlightedValue: string | null;
|
|
35
|
+
setHighlightedValue: (value: string | null) => void;
|
|
36
|
+
field: SelectFieldContextValue;
|
|
37
|
+
reduceMotion: boolean;
|
|
38
|
+
}
|
|
39
|
+
type SelectItemInteractionState = 'rest' | 'pressed' | 'focused';
|
|
40
|
+
type SelectItemLayer = 'root' | 'text' | 'endIcon';
|
|
41
|
+
//#endregion
|
|
42
|
+
export { SelectContentSize, SelectContentVariant, SelectContextValue, SelectFieldContextValue, SelectItemInteractionState, SelectItemLayer, SelectItemSize, SelectItemVariant };
|
|
43
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/components/Select/types.ts"],"mappings":";;;;;;;KAMY,iBAAA;AAAA,KACA,oBAAA;AAAA,KACA,cAAA;AAAA,KACA,iBAAA;AAAA,UAEK,uBAAA;EACf,IAAA,EAAM,SAAA;EACN,QAAA;EACA,QAAA;EACA,QAAA;EACA,QAAA;EACA,KAAA;EACA,YAAA;EACA,WAAA;EACA,GAAA;AAAA;AAAA,UAGe,kBAAA;EACf,KAAA;EACA,QAAA,GAAW,KAAA;EACX,IAAA;EACA,OAAA,GAAU,IAAA;EACV,UAAA,EAAY,SAAA,CAAU,IAAA;EACtB,WAAA,EAAa,YAAA;EACb,cAAA,GAAiB,IAAA,EAAM,YAAA;EACvB,YAAA,GAAe,KAAA,UAAe,KAAA;EAC9B,cAAA,GAAiB,KAAA;EACjB,YAAA,GAAe,KAAA;EACf,gBAAA;EACA,mBAAA,GAAsB,KAAA;EACtB,KAAA,EAAO,uBAAA;EACP,YAAA;AAAA;AAAA,KAGU,0BAAA;AAAA,KAEA,eAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
@@ -55,6 +55,8 @@ const Switch = (0, react.memo)(function Switch({ isOn: isOnProp, defaultIsOn = f
|
|
|
55
55
|
const [internalIsOn, setInternalIsOn] = (0, react.useState)(defaultIsOn);
|
|
56
56
|
const [prefersReducedMotion, setPrefersReducedMotion] = (0, react.useState)(false);
|
|
57
57
|
const isOn = isControlled ? isOnProp : internalIsOn;
|
|
58
|
+
const activeVariant = isOn ? "on" : "off";
|
|
59
|
+
const { theme } = (0, react_native_unistyles.useUnistyles)();
|
|
58
60
|
(0, react.useEffect)(() => {
|
|
59
61
|
const checkReducedMotion = async () => {
|
|
60
62
|
setPrefersReducedMotion(await react_native.AccessibilityInfo.isReduceMotionEnabled());
|
|
@@ -77,11 +79,21 @@ const Switch = (0, react.memo)(function Switch({ isOn: isOnProp, defaultIsOn = f
|
|
|
77
79
|
isControlled,
|
|
78
80
|
onChange
|
|
79
81
|
]);
|
|
80
|
-
generated_styles.switchStyles.useVariants({
|
|
82
|
+
const resolvedSwitchStyles = generated_styles.switchStyles.useVariants({
|
|
81
83
|
size,
|
|
82
|
-
variant:
|
|
83
|
-
});
|
|
84
|
-
const
|
|
84
|
+
variant: activeVariant
|
|
85
|
+
}) ?? generated_styles.switchStyles;
|
|
86
|
+
const variantLayerStyles = (0, react.useMemo)(() => {
|
|
87
|
+
const components = theme.components;
|
|
88
|
+
const getLayerStyle = (layer) => components[`switch/variant/default/active/${activeVariant}/${layer}/rest`];
|
|
89
|
+
return {
|
|
90
|
+
handle: getLayerStyle("handle"),
|
|
91
|
+
handleIcon: getLayerStyle("handleIcon"),
|
|
92
|
+
switch: getLayerStyle("switch"),
|
|
93
|
+
text: getLayerStyle("rootText")
|
|
94
|
+
};
|
|
95
|
+
}, [activeVariant, theme]);
|
|
96
|
+
const trackBackgroundColor = (0, react_native_unistyles_reanimated.useAnimatedVariantColor)(resolvedSwitchStyles.switch, "backgroundColor");
|
|
85
97
|
const animatedTrackStyle = (0, react_native_reanimated.useAnimatedStyle)(() => {
|
|
86
98
|
"worklet";
|
|
87
99
|
return { backgroundColor: (0, react_native_reanimated.withTiming)(trackBackgroundColor.value, { duration: animationDuration }) };
|
|
@@ -90,17 +102,27 @@ const Switch = (0, react.memo)(function Switch({ isOn: isOnProp, defaultIsOn = f
|
|
|
90
102
|
"worklet";
|
|
91
103
|
return { transform: [{ translateX: progress.value * travelDistance }] };
|
|
92
104
|
});
|
|
93
|
-
const rootStyle = (0, react.useMemo)(() => [
|
|
105
|
+
const rootStyle = (0, react.useMemo)(() => [resolvedSwitchStyles.root, switchStaticStyles.root({ disabled })], [resolvedSwitchStyles.root, disabled]);
|
|
94
106
|
const trackStyle = (0, react.useMemo)(() => [
|
|
95
|
-
|
|
107
|
+
resolvedSwitchStyles.switch,
|
|
96
108
|
switchStaticStyles.track,
|
|
109
|
+
variantLayerStyles.switch,
|
|
110
|
+
react_native.Platform.OS !== "web" && animatedTrackStyle
|
|
111
|
+
], [
|
|
112
|
+
resolvedSwitchStyles.switch,
|
|
113
|
+
variantLayerStyles.switch,
|
|
97
114
|
animatedTrackStyle
|
|
98
|
-
]
|
|
115
|
+
]);
|
|
99
116
|
const handleStyle = (0, react.useMemo)(() => [
|
|
100
|
-
|
|
117
|
+
resolvedSwitchStyles.handle,
|
|
101
118
|
switchStaticStyles.handle,
|
|
119
|
+
variantLayerStyles.handle,
|
|
102
120
|
animatedHandleStyle
|
|
103
|
-
], [
|
|
121
|
+
], [
|
|
122
|
+
resolvedSwitchStyles.handle,
|
|
123
|
+
variantLayerStyles.handle,
|
|
124
|
+
animatedHandleStyle
|
|
125
|
+
]);
|
|
104
126
|
const accessibilityLabel = typeof label === "string" ? label : void 0;
|
|
105
127
|
const resolvedAccessibilityHint = accessibilityHint ?? "Double tap to toggle";
|
|
106
128
|
const labelContent = label && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_FormLabel.FormLabel, {
|
|
@@ -109,7 +131,7 @@ const Switch = (0, react.memo)(function Switch({ isOn: isOnProp, defaultIsOn = f
|
|
|
109
131
|
label,
|
|
110
132
|
required,
|
|
111
133
|
showRequiredAsterisk: required,
|
|
112
|
-
style:
|
|
134
|
+
style: [resolvedSwitchStyles.text, variantLayerStyles.text]
|
|
113
135
|
});
|
|
114
136
|
const a11yValue = (0, react.useMemo)(() => ({ text: isOn ? "On" : "Off" }), [isOn]);
|
|
115
137
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_native.Pressable, {
|
|
@@ -139,14 +161,14 @@ const Switch = (0, react.memo)(function Switch({ isOn: isOnProp, defaultIsOn = f
|
|
|
139
161
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_IconSlot.IconSlot, {
|
|
140
162
|
icon: onIcon,
|
|
141
163
|
variant: "fill",
|
|
142
|
-
style:
|
|
164
|
+
style: [resolvedSwitchStyles.handleIcon, variantLayerStyles.handleIcon]
|
|
143
165
|
})
|
|
144
166
|
}), offIcon && !isOn && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native_reanimated.default.View, {
|
|
145
167
|
style: switchStaticStyles.iconContainer,
|
|
146
168
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_IconSlot.IconSlot, {
|
|
147
169
|
icon: offIcon,
|
|
148
170
|
variant: "fill",
|
|
149
|
-
style:
|
|
171
|
+
style: [resolvedSwitchStyles.handleIcon, variantLayerStyles.handleIcon]
|
|
150
172
|
})
|
|
151
173
|
})]
|
|
152
174
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.d.cts","names":[],"sources":["../../src/components/Switch.tsx"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"Switch.d.cts","names":[],"sources":["../../src/components/Switch.tsx"],"mappings":";;;;;;;;UAsBU,WAAA,SAAoB,IAAA,CAAK,SAAA,YAAqB,oBAAA,CAAqB,YAAA;;EAE3E,GAAA,GAAM,GAAA,CAAI,IAAA;EAFF;EAIR,QAAA,IAAY,KAAA;;EAEZ,QAAA;EAN2E;EAQ3E,QAAA;EANM;EAQN,iBAAA,GAAoB,kBAAA;AAAA;;;;;;;;;;;;;;;;;;;AAAkB;;;;;;;;;;;;;;;cA2ClC,MAAA,EAAM,OAAA,CAAA,oBAAA,CAAA,WAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.d.ts","names":[],"sources":["../../src/components/Switch.tsx"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"Switch.d.ts","names":[],"sources":["../../src/components/Switch.tsx"],"mappings":";;;;;;;;UAsBU,WAAA,SAAoB,IAAA,CAAK,SAAA,YAAqB,oBAAA,CAAqB,YAAA;;EAE3E,GAAA,GAAM,GAAA,CAAI,IAAA;EAFF;EAIR,QAAA,IAAY,KAAA;;EAEZ,QAAA;EAN2E;EAQ3E,QAAA;EANM;EAQN,iBAAA,GAAoB,kBAAA;AAAA;;;;;;;;;;;;;;;;;;;AAAkB;;;;;;;;;;;;;;;cA2ClC,MAAA,EAAM,OAAA,CAAA,oBAAA,CAAA,WAAA"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import { IconSlot } from "./IconSlot.js";
|
|
3
3
|
import { FormLabel } from "./FormLabel.js";
|
|
4
4
|
import { memo, useCallback, useEffect, useMemo, useState } from "react";
|
|
5
|
-
import { AccessibilityInfo, Pressable } from "react-native";
|
|
5
|
+
import { AccessibilityInfo, Platform, Pressable } from "react-native";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
import { switchStyles } from "../../generated/styles";
|
|
8
|
-
import { StyleSheet as StyleSheet$1 } from "react-native-unistyles";
|
|
8
|
+
import { StyleSheet as StyleSheet$1, useUnistyles } from "react-native-unistyles";
|
|
9
9
|
import Animated, { useAnimatedStyle, useDerivedValue, withTiming } from "react-native-reanimated";
|
|
10
10
|
import { useAnimatedVariantColor } from "react-native-unistyles/reanimated";
|
|
11
11
|
//#region src/components/Switch.tsx
|
|
@@ -52,6 +52,8 @@ const Switch = memo(function Switch({ isOn: isOnProp, defaultIsOn = false, onCha
|
|
|
52
52
|
const [internalIsOn, setInternalIsOn] = useState(defaultIsOn);
|
|
53
53
|
const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);
|
|
54
54
|
const isOn = isControlled ? isOnProp : internalIsOn;
|
|
55
|
+
const activeVariant = isOn ? "on" : "off";
|
|
56
|
+
const { theme } = useUnistyles();
|
|
55
57
|
useEffect(() => {
|
|
56
58
|
const checkReducedMotion = async () => {
|
|
57
59
|
setPrefersReducedMotion(await AccessibilityInfo.isReduceMotionEnabled());
|
|
@@ -74,11 +76,21 @@ const Switch = memo(function Switch({ isOn: isOnProp, defaultIsOn = false, onCha
|
|
|
74
76
|
isControlled,
|
|
75
77
|
onChange
|
|
76
78
|
]);
|
|
77
|
-
switchStyles.useVariants({
|
|
79
|
+
const resolvedSwitchStyles = switchStyles.useVariants({
|
|
78
80
|
size,
|
|
79
|
-
variant:
|
|
80
|
-
});
|
|
81
|
-
const
|
|
81
|
+
variant: activeVariant
|
|
82
|
+
}) ?? switchStyles;
|
|
83
|
+
const variantLayerStyles = useMemo(() => {
|
|
84
|
+
const components = theme.components;
|
|
85
|
+
const getLayerStyle = (layer) => components[`switch/variant/default/active/${activeVariant}/${layer}/rest`];
|
|
86
|
+
return {
|
|
87
|
+
handle: getLayerStyle("handle"),
|
|
88
|
+
handleIcon: getLayerStyle("handleIcon"),
|
|
89
|
+
switch: getLayerStyle("switch"),
|
|
90
|
+
text: getLayerStyle("rootText")
|
|
91
|
+
};
|
|
92
|
+
}, [activeVariant, theme]);
|
|
93
|
+
const trackBackgroundColor = useAnimatedVariantColor(resolvedSwitchStyles.switch, "backgroundColor");
|
|
82
94
|
const animatedTrackStyle = useAnimatedStyle(() => {
|
|
83
95
|
"worklet";
|
|
84
96
|
return { backgroundColor: withTiming(trackBackgroundColor.value, { duration: animationDuration }) };
|
|
@@ -87,17 +99,27 @@ const Switch = memo(function Switch({ isOn: isOnProp, defaultIsOn = false, onCha
|
|
|
87
99
|
"worklet";
|
|
88
100
|
return { transform: [{ translateX: progress.value * travelDistance }] };
|
|
89
101
|
});
|
|
90
|
-
const rootStyle = useMemo(() => [
|
|
102
|
+
const rootStyle = useMemo(() => [resolvedSwitchStyles.root, switchStaticStyles.root({ disabled })], [resolvedSwitchStyles.root, disabled]);
|
|
91
103
|
const trackStyle = useMemo(() => [
|
|
92
|
-
|
|
104
|
+
resolvedSwitchStyles.switch,
|
|
93
105
|
switchStaticStyles.track,
|
|
106
|
+
variantLayerStyles.switch,
|
|
107
|
+
Platform.OS !== "web" && animatedTrackStyle
|
|
108
|
+
], [
|
|
109
|
+
resolvedSwitchStyles.switch,
|
|
110
|
+
variantLayerStyles.switch,
|
|
94
111
|
animatedTrackStyle
|
|
95
|
-
]
|
|
112
|
+
]);
|
|
96
113
|
const handleStyle = useMemo(() => [
|
|
97
|
-
|
|
114
|
+
resolvedSwitchStyles.handle,
|
|
98
115
|
switchStaticStyles.handle,
|
|
116
|
+
variantLayerStyles.handle,
|
|
99
117
|
animatedHandleStyle
|
|
100
|
-
], [
|
|
118
|
+
], [
|
|
119
|
+
resolvedSwitchStyles.handle,
|
|
120
|
+
variantLayerStyles.handle,
|
|
121
|
+
animatedHandleStyle
|
|
122
|
+
]);
|
|
101
123
|
const accessibilityLabel = typeof label === "string" ? label : void 0;
|
|
102
124
|
const resolvedAccessibilityHint = accessibilityHint ?? "Double tap to toggle";
|
|
103
125
|
const labelContent = label && /* @__PURE__ */ jsx(FormLabel, {
|
|
@@ -106,7 +128,7 @@ const Switch = memo(function Switch({ isOn: isOnProp, defaultIsOn = false, onCha
|
|
|
106
128
|
label,
|
|
107
129
|
required,
|
|
108
130
|
showRequiredAsterisk: required,
|
|
109
|
-
style:
|
|
131
|
+
style: [resolvedSwitchStyles.text, variantLayerStyles.text]
|
|
110
132
|
});
|
|
111
133
|
const a11yValue = useMemo(() => ({ text: isOn ? "On" : "Off" }), [isOn]);
|
|
112
134
|
return /* @__PURE__ */ jsxs(Pressable, {
|
|
@@ -136,14 +158,14 @@ const Switch = memo(function Switch({ isOn: isOnProp, defaultIsOn = false, onCha
|
|
|
136
158
|
children: /* @__PURE__ */ jsx(IconSlot, {
|
|
137
159
|
icon: onIcon,
|
|
138
160
|
variant: "fill",
|
|
139
|
-
style:
|
|
161
|
+
style: [resolvedSwitchStyles.handleIcon, variantLayerStyles.handleIcon]
|
|
140
162
|
})
|
|
141
163
|
}), offIcon && !isOn && /* @__PURE__ */ jsx(Animated.View, {
|
|
142
164
|
style: switchStaticStyles.iconContainer,
|
|
143
165
|
children: /* @__PURE__ */ jsx(IconSlot, {
|
|
144
166
|
icon: offIcon,
|
|
145
167
|
variant: "fill",
|
|
146
|
-
style:
|
|
168
|
+
style: [resolvedSwitchStyles.handleIcon, variantLayerStyles.handleIcon]
|
|
147
169
|
})
|
|
148
170
|
})]
|
|
149
171
|
})
|