@yahoo/uds-mobile 1.6.0 → 1.6.2
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/bin/fixtures/dist/index.mjs +9 -0
- package/dist/bin/generateTheme.mjs +1 -0
- package/dist/components/Avatar.cjs +3 -3
- package/dist/components/Avatar.mjs +3 -3
- package/dist/components/Avatar.mjs.map +1 -1
- package/dist/components/Button.cjs +3 -0
- package/dist/components/Button.mjs +3 -0
- package/dist/components/Button.mjs.map +1 -1
- package/dist/components/Checkbox.cjs +2 -1
- package/dist/components/Checkbox.mjs +2 -1
- package/dist/components/Checkbox.mjs.map +1 -1
- package/dist/components/Icon.cjs +5 -2
- package/dist/components/Icon.d.cts.map +1 -1
- package/dist/components/Icon.d.mts.map +1 -1
- package/dist/components/Icon.mjs +5 -2
- package/dist/components/Icon.mjs.map +1 -1
- package/dist/motion-tokens/dist/index.d.cts +5 -1
- package/dist/motion-tokens/dist/index.d.cts.map +1 -1
- package/dist/motion-tokens/dist/index.d.mts +5 -1
- package/dist/motion-tokens/dist/index.d.mts.map +1 -1
- package/dist/motion-tokens/dist/index.mjs.map +1 -1
- package/dist/types/dist/index.d.cts.map +1 -1
- package/dist/types/dist/index.d.mts.map +1 -1
- package/fonts/index.cjs +205 -205
- package/fonts/index.mjs +205 -205
- package/generated/styles.cjs +56 -0
- package/generated/styles.d.ts +53 -36
- package/generated/styles.mjs +56 -0
- package/generated/unistyles.d.ts +94 -0
- package/package.json +2 -2
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
//#region ../fixtures/dist/index.js
|
|
3
|
+
function createArbitraryFixture(fixture) {
|
|
4
|
+
return fixture;
|
|
5
|
+
}
|
|
6
|
+
var positiveIntegers = createArbitraryFixture({
|
|
7
|
+
type: "arbitraryFixture",
|
|
8
|
+
valueType: "integer",
|
|
9
|
+
min: 0,
|
|
10
|
+
step: 1
|
|
11
|
+
});
|
|
3
12
|
var elevationAliases = [
|
|
4
13
|
"elevation-0",
|
|
5
14
|
"elevation-1",
|
|
@@ -304,6 +304,7 @@ function generateComponents(config, colorMode) {
|
|
|
304
304
|
}
|
|
305
305
|
const targetObj = isRootLayer && TEXT_ONLY_PROPS.has(propName) ? textStyleObj : viewStyleObj;
|
|
306
306
|
for (const rnProp of rnProps) targetObj[rnProp] = resolvedValue;
|
|
307
|
+
if (stateValue.type === "iconSizes") targetObj.iconSizeToken = stateValue.value;
|
|
307
308
|
}
|
|
308
309
|
if (shadowValues.length > 0) viewStyleObj.boxShadow = boxShadowToCssString(shadowValues);
|
|
309
310
|
if (variantPath[0] === "textStyle") {
|
|
@@ -71,9 +71,9 @@ const Avatar = (0, react.forwardRef)(function Avatar({ src, alt, fallback, size
|
|
|
71
71
|
const showIcon = !hasImage && !hasText;
|
|
72
72
|
generated_styles.avatarStyles.useVariants({
|
|
73
73
|
size,
|
|
74
|
-
image: variant,
|
|
75
|
-
text: variant,
|
|
76
|
-
icon: variant
|
|
74
|
+
...showImage && { image: variant },
|
|
75
|
+
...showText && { text: variant },
|
|
76
|
+
...showIcon && { icon: variant }
|
|
77
77
|
});
|
|
78
78
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_components_Box.Box, {
|
|
79
79
|
ref,
|
|
@@ -69,9 +69,9 @@ const Avatar = forwardRef(function Avatar({ src, alt, fallback, size = "md", var
|
|
|
69
69
|
const showIcon = !hasImage && !hasText;
|
|
70
70
|
avatarStyles.useVariants({
|
|
71
71
|
size,
|
|
72
|
-
image: variant,
|
|
73
|
-
text: variant,
|
|
74
|
-
icon: variant
|
|
72
|
+
...showImage && { image: variant },
|
|
73
|
+
...showText && { text: variant },
|
|
74
|
+
...showIcon && { icon: variant }
|
|
75
75
|
});
|
|
76
76
|
return /* @__PURE__ */ jsxs(Box, {
|
|
77
77
|
ref,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.mjs","names":["RNImage","Text"],"sources":["../../src/components/Avatar.tsx"],"sourcesContent":["import { forwardRef, useState } from 'react';\nimport type { View, ViewProps } from 'react-native';\nimport { Image as RNImage } from 'react-native';\n\nimport { avatarStyles } from '../../generated/styles';\nimport { Box } from './Box';\nimport type { IconSlotType } from './IconSlot';\nimport { IconSlot } from './IconSlot';\nimport { Text } from './Text';\n\n/** Avatar size options */\ntype AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Avatar variant options */\ntype AvatarVariant = 'primary' | 'secondary';\n\n/** Abbreviation strategy for generating initials */\ntype AbbreviationStrategy =\n | 'first'\n | 'last'\n | 'firstAndLast'\n | 'firstTwo'\n | 'firstThree'\n | 'firstOfEach'\n | ((name: string) => string);\n\ninterface AvatarProps extends ViewProps {\n /** Image source URL */\n src?: string;\n /** Alt text for the image, also used for generating initials */\n alt?: string;\n /** Explicit initials to display (overrides auto-generated from alt) */\n fallback?: string;\n /** Size of the avatar @default 'md' */\n size?: AvatarSize;\n /** Variant style @default 'primary' */\n variant?: AvatarVariant;\n /** Custom icon to display when no image or text fallback */\n icon?: IconSlotType;\n /** Strategy for generating initials from name @default 'firstAndLast' */\n abbreviationStrategy?: AbbreviationStrategy;\n}\n\nconst abbreviationStrategies: Record<\n Exclude<AbbreviationStrategy, (name: string) => string>,\n (initials: string[]) => string\n> = {\n first: (initials) => initials[0] ?? '',\n last: (initials) => initials[initials.length - 1] ?? '',\n firstAndLast: (initials) =>\n initials.length === 1 ? (initials[0] ?? '') : `${initials[0]}${initials[initials.length - 1]}`,\n firstTwo: (initials) => initials.slice(0, 2).join(''),\n firstThree: (initials) => initials.slice(0, 3).join(''),\n firstOfEach: (initials) => initials.join(''),\n};\n\n/** Generate initials from a name */\nfunction generateInitials(name?: string, strategy: AbbreviationStrategy = 'firstAndLast'): string {\n if (!name) {\n return '';\n }\n\n if (typeof strategy === 'function') {\n return strategy(name);\n }\n\n const words = name.trim().split(/\\s+/);\n const initials = words.map((word) => word[0]?.toUpperCase() ?? '');\n\n return abbreviationStrategies[strategy](initials);\n}\n\n/**\n * **Avatar component for user representation**\n *\n * @description\n * Displays a user avatar with image, initials fallback, or icon fallback.\n *\n * @category Display\n * @platform mobile\n *\n * @example\n * ```tsx\n * import { Avatar } from '@yahoo/uds-mobile';\n *\n * // With image\n * <Avatar\n * src=\"https://example.com/photo.jpg\"\n * alt=\"Jane Doe\"\n * />\n *\n * // With initials fallback\n * <Avatar alt=\"Jane Doe\" />\n *\n * // With explicit initials\n * <Avatar fallback=\"JD\" />\n *\n * // With custom icon\n * <Avatar icon=\"Person\" variant=\"secondary\" />\n * ```\n *\n * @accessibility\n * - Sets `accessibilityRole=\"image\"` automatically\n * - Uses `alt` prop as accessibility label\n * - Always provide meaningful `alt` text for user identification\n *\n * @see {@link Image} for general image display\n */\nconst Avatar = forwardRef<View, AvatarProps>(function Avatar(\n {\n src,\n alt,\n fallback,\n size = 'md',\n variant = 'primary',\n icon,\n abbreviationStrategy = 'firstAndLast',\n style,\n ...props\n },\n ref,\n) {\n const [imageError, setImageError] = useState(false);\n\n const initials = fallback || generateInitials(alt, abbreviationStrategy);\n\n const hasImage = src && !imageError;\n const hasText = initials.length > 0;\n const showImage = hasImage;\n const showText = !hasImage && hasText;\n const showIcon = !hasImage && !hasText;\n\n avatarStyles.useVariants({\n size,\n image: variant,\n text: variant,\n icon: variant,\n });\n\n return (\n <Box\n ref={ref}\n style={[\n avatarStyles.root,\n { alignItems: 'center', justifyContent: 'center', overflow: 'hidden' },\n style,\n ]}\n accessibilityRole=\"image\"\n accessibilityLabel={alt}\n {...props}\n >\n {showImage && (\n <RNImage\n source={{ uri: src }}\n style={{ width: '100%', height: '100%' }}\n onError={() => setImageError(true)}\n accessibilityLabel={alt}\n />\n )}\n\n {showText && (\n <Text style={avatarStyles.text} numberOfLines={1}>\n {initials}\n </Text>\n )}\n\n {showIcon && <IconSlot icon={icon ?? 'Person'} variant=\"fill\" style={avatarStyles.icon} />}\n </Box>\n );\n});\n\nAvatar.displayName = 'Avatar';\n\nexport { Avatar, type AvatarProps };\n"],"mappings":";;;;;;;;;;AA2CA,MAAM,yBAGF;CACF,QAAQ,aAAa,SAAS,MAAM;CACpC,OAAO,aAAa,SAAS,SAAS,SAAS,MAAM;CACrD,eAAe,aACb,SAAS,WAAW,IAAK,SAAS,MAAM,KAAM,GAAG,SAAS,KAAK,SAAS,SAAS,SAAS;CAC5F,WAAW,aAAa,SAAS,MAAM,GAAG,EAAE,CAAC,KAAK,GAAG;CACrD,aAAa,aAAa,SAAS,MAAM,GAAG,EAAE,CAAC,KAAK,GAAG;CACvD,cAAc,aAAa,SAAS,KAAK,GAAG;CAC7C;;AAGD,SAAS,iBAAiB,MAAe,WAAiC,gBAAwB;AAChG,KAAI,CAAC,KACH,QAAO;AAGT,KAAI,OAAO,aAAa,WACtB,QAAO,SAAS,KAAK;CAIvB,MAAM,WADQ,KAAK,MAAM,CAAC,MAAM,MAAM,CACf,KAAK,SAAS,KAAK,IAAI,aAAa,IAAI,GAAG;AAElE,QAAO,uBAAuB,UAAU,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCnD,MAAM,SAAS,WAA8B,SAAS,OACpD,EACE,KACA,KACA,UACA,OAAO,MACP,UAAU,WACV,MACA,uBAAuB,gBACvB,OACA,GAAG,SAEL,KACA;CACA,MAAM,CAAC,YAAY,iBAAiB,SAAS,MAAM;CAEnD,MAAM,WAAW,YAAY,iBAAiB,KAAK,qBAAqB;CAExE,MAAM,WAAW,OAAO,CAAC;CACzB,MAAM,UAAU,SAAS,SAAS;CAClC,MAAM,YAAY;CAClB,MAAM,WAAW,CAAC,YAAY;CAC9B,MAAM,WAAW,CAAC,YAAY,CAAC;AAE/B,cAAa,YAAY;EACvB;EACA,OAAO;
|
|
1
|
+
{"version":3,"file":"Avatar.mjs","names":["RNImage","Text"],"sources":["../../src/components/Avatar.tsx"],"sourcesContent":["import { forwardRef, useState } from 'react';\nimport type { View, ViewProps } from 'react-native';\nimport { Image as RNImage } from 'react-native';\n\nimport { avatarStyles } from '../../generated/styles';\nimport { Box } from './Box';\nimport type { IconSlotType } from './IconSlot';\nimport { IconSlot } from './IconSlot';\nimport { Text } from './Text';\n\n/** Avatar size options */\ntype AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Avatar variant options */\ntype AvatarVariant = 'primary' | 'secondary';\n\n/** Abbreviation strategy for generating initials */\ntype AbbreviationStrategy =\n | 'first'\n | 'last'\n | 'firstAndLast'\n | 'firstTwo'\n | 'firstThree'\n | 'firstOfEach'\n | ((name: string) => string);\n\ninterface AvatarProps extends ViewProps {\n /** Image source URL */\n src?: string;\n /** Alt text for the image, also used for generating initials */\n alt?: string;\n /** Explicit initials to display (overrides auto-generated from alt) */\n fallback?: string;\n /** Size of the avatar @default 'md' */\n size?: AvatarSize;\n /** Variant style @default 'primary' */\n variant?: AvatarVariant;\n /** Custom icon to display when no image or text fallback */\n icon?: IconSlotType;\n /** Strategy for generating initials from name @default 'firstAndLast' */\n abbreviationStrategy?: AbbreviationStrategy;\n}\n\nconst abbreviationStrategies: Record<\n Exclude<AbbreviationStrategy, (name: string) => string>,\n (initials: string[]) => string\n> = {\n first: (initials) => initials[0] ?? '',\n last: (initials) => initials[initials.length - 1] ?? '',\n firstAndLast: (initials) =>\n initials.length === 1 ? (initials[0] ?? '') : `${initials[0]}${initials[initials.length - 1]}`,\n firstTwo: (initials) => initials.slice(0, 2).join(''),\n firstThree: (initials) => initials.slice(0, 3).join(''),\n firstOfEach: (initials) => initials.join(''),\n};\n\n/** Generate initials from a name */\nfunction generateInitials(name?: string, strategy: AbbreviationStrategy = 'firstAndLast'): string {\n if (!name) {\n return '';\n }\n\n if (typeof strategy === 'function') {\n return strategy(name);\n }\n\n const words = name.trim().split(/\\s+/);\n const initials = words.map((word) => word[0]?.toUpperCase() ?? '');\n\n return abbreviationStrategies[strategy](initials);\n}\n\n/**\n * **Avatar component for user representation**\n *\n * @description\n * Displays a user avatar with image, initials fallback, or icon fallback.\n *\n * @category Display\n * @platform mobile\n *\n * @example\n * ```tsx\n * import { Avatar } from '@yahoo/uds-mobile';\n *\n * // With image\n * <Avatar\n * src=\"https://example.com/photo.jpg\"\n * alt=\"Jane Doe\"\n * />\n *\n * // With initials fallback\n * <Avatar alt=\"Jane Doe\" />\n *\n * // With explicit initials\n * <Avatar fallback=\"JD\" />\n *\n * // With custom icon\n * <Avatar icon=\"Person\" variant=\"secondary\" />\n * ```\n *\n * @accessibility\n * - Sets `accessibilityRole=\"image\"` automatically\n * - Uses `alt` prop as accessibility label\n * - Always provide meaningful `alt` text for user identification\n *\n * @see {@link Image} for general image display\n */\nconst Avatar = forwardRef<View, AvatarProps>(function Avatar(\n {\n src,\n alt,\n fallback,\n size = 'md',\n variant = 'primary',\n icon,\n abbreviationStrategy = 'firstAndLast',\n style,\n ...props\n },\n ref,\n) {\n const [imageError, setImageError] = useState(false);\n\n const initials = fallback || generateInitials(alt, abbreviationStrategy);\n\n const hasImage = src && !imageError;\n const hasText = initials.length > 0;\n const showImage = hasImage;\n const showText = !hasImage && hasText;\n const showIcon = !hasImage && !hasText;\n\n avatarStyles.useVariants({\n size,\n ...(showImage && { image: variant }),\n ...(showText && { text: variant }),\n ...(showIcon && { icon: variant }),\n });\n\n return (\n <Box\n ref={ref}\n style={[\n avatarStyles.root,\n { alignItems: 'center', justifyContent: 'center', overflow: 'hidden' },\n style,\n ]}\n accessibilityRole=\"image\"\n accessibilityLabel={alt}\n {...props}\n >\n {showImage && (\n <RNImage\n source={{ uri: src }}\n style={{ width: '100%', height: '100%' }}\n onError={() => setImageError(true)}\n accessibilityLabel={alt}\n />\n )}\n\n {showText && (\n <Text style={avatarStyles.text} numberOfLines={1}>\n {initials}\n </Text>\n )}\n\n {showIcon && <IconSlot icon={icon ?? 'Person'} variant=\"fill\" style={avatarStyles.icon} />}\n </Box>\n );\n});\n\nAvatar.displayName = 'Avatar';\n\nexport { Avatar, type AvatarProps };\n"],"mappings":";;;;;;;;;;AA2CA,MAAM,yBAGF;CACF,QAAQ,aAAa,SAAS,MAAM;CACpC,OAAO,aAAa,SAAS,SAAS,SAAS,MAAM;CACrD,eAAe,aACb,SAAS,WAAW,IAAK,SAAS,MAAM,KAAM,GAAG,SAAS,KAAK,SAAS,SAAS,SAAS;CAC5F,WAAW,aAAa,SAAS,MAAM,GAAG,EAAE,CAAC,KAAK,GAAG;CACrD,aAAa,aAAa,SAAS,MAAM,GAAG,EAAE,CAAC,KAAK,GAAG;CACvD,cAAc,aAAa,SAAS,KAAK,GAAG;CAC7C;;AAGD,SAAS,iBAAiB,MAAe,WAAiC,gBAAwB;AAChG,KAAI,CAAC,KACH,QAAO;AAGT,KAAI,OAAO,aAAa,WACtB,QAAO,SAAS,KAAK;CAIvB,MAAM,WADQ,KAAK,MAAM,CAAC,MAAM,MAAM,CACf,KAAK,SAAS,KAAK,IAAI,aAAa,IAAI,GAAG;AAElE,QAAO,uBAAuB,UAAU,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCnD,MAAM,SAAS,WAA8B,SAAS,OACpD,EACE,KACA,KACA,UACA,OAAO,MACP,UAAU,WACV,MACA,uBAAuB,gBACvB,OACA,GAAG,SAEL,KACA;CACA,MAAM,CAAC,YAAY,iBAAiB,SAAS,MAAM;CAEnD,MAAM,WAAW,YAAY,iBAAiB,KAAK,qBAAqB;CAExE,MAAM,WAAW,OAAO,CAAC;CACzB,MAAM,UAAU,SAAS,SAAS;CAClC,MAAM,YAAY;CAClB,MAAM,WAAW,CAAC,YAAY;CAC9B,MAAM,WAAW,CAAC,YAAY,CAAC;AAE/B,cAAa,YAAY;EACvB;EACA,GAAI,aAAa,EAAE,OAAO,SAAS;EACnC,GAAI,YAAY,EAAE,MAAM,SAAS;EACjC,GAAI,YAAY,EAAE,MAAM,SAAS;EAClC,CAAC;AAEF,QACE,qBAAC;EACM;EACL,OAAO;GACL,aAAa;GACb;IAAE,YAAY;IAAU,gBAAgB;IAAU,UAAU;IAAU;GACtE;GACD;EACD,mBAAkB;EAClB,oBAAoB;EACpB,GAAI;;GAEH,aACC,oBAACA;IACC,QAAQ,EAAE,KAAK,KAAK;IACpB,OAAO;KAAE,OAAO;KAAQ,QAAQ;KAAQ;IACxC,eAAe,cAAc,KAAK;IAClC,oBAAoB;KACpB;GAGH,YACC,oBAACC;IAAK,OAAO,aAAa;IAAM,eAAe;cAC5C;KACI;GAGR,YAAY,oBAAC;IAAS,MAAM,QAAQ;IAAU,SAAQ;IAAO,OAAO,aAAa;KAAQ;;GACtF;EAER;AAEF,OAAO,cAAc"}
|
|
@@ -136,6 +136,7 @@ const Button = (0, react.memo)(function Button({ variant = "primary", size = "md
|
|
|
136
136
|
const showLoading = !!loading;
|
|
137
137
|
const showStartIcon = !!startIcon && !loading;
|
|
138
138
|
const showEndIcon = !!endIcon && !loading;
|
|
139
|
+
const iconSizeToken = generated_styles.buttonStyles.icon.iconSizeToken ?? "sm";
|
|
139
140
|
const startContent = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AnimatedIconSlot, {
|
|
140
141
|
visible: showLoading || showStartIcon,
|
|
141
142
|
iconSize,
|
|
@@ -145,6 +146,7 @@ const Button = (0, react.memo)(function Button({ variant = "primary", size = "md
|
|
|
145
146
|
color: generated_styles.buttonStyles.icon.color
|
|
146
147
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_IconSlot.IconSlot, {
|
|
147
148
|
icon: startIcon,
|
|
149
|
+
size: iconSizeToken,
|
|
148
150
|
variant: iconVariant,
|
|
149
151
|
style: generated_styles.buttonStyles.icon
|
|
150
152
|
})
|
|
@@ -155,6 +157,7 @@ const Button = (0, react.memo)(function Button({ variant = "primary", size = "md
|
|
|
155
157
|
gap: buttonGap,
|
|
156
158
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_IconSlot.IconSlot, {
|
|
157
159
|
icon: endIcon,
|
|
160
|
+
size: iconSizeToken,
|
|
158
161
|
variant: iconVariant,
|
|
159
162
|
style: generated_styles.buttonStyles.icon
|
|
160
163
|
})
|
|
@@ -133,6 +133,7 @@ const Button = memo(function Button({ variant = "primary", size = "md", iconVari
|
|
|
133
133
|
const showLoading = !!loading;
|
|
134
134
|
const showStartIcon = !!startIcon && !loading;
|
|
135
135
|
const showEndIcon = !!endIcon && !loading;
|
|
136
|
+
const iconSizeToken = buttonStyles.icon.iconSizeToken ?? "sm";
|
|
136
137
|
const startContent = /* @__PURE__ */ jsx(AnimatedIconSlot, {
|
|
137
138
|
visible: showLoading || showStartIcon,
|
|
138
139
|
iconSize,
|
|
@@ -142,6 +143,7 @@ const Button = memo(function Button({ variant = "primary", size = "md", iconVari
|
|
|
142
143
|
color: buttonStyles.icon.color
|
|
143
144
|
}) : /* @__PURE__ */ jsx(IconSlot, {
|
|
144
145
|
icon: startIcon,
|
|
146
|
+
size: iconSizeToken,
|
|
145
147
|
variant: iconVariant,
|
|
146
148
|
style: buttonStyles.icon
|
|
147
149
|
})
|
|
@@ -152,6 +154,7 @@ const Button = memo(function Button({ variant = "primary", size = "md", iconVari
|
|
|
152
154
|
gap: buttonGap,
|
|
153
155
|
children: /* @__PURE__ */ jsx(IconSlot, {
|
|
154
156
|
icon: endIcon,
|
|
157
|
+
size: iconSizeToken,
|
|
155
158
|
variant: iconVariant,
|
|
156
159
|
style: buttonStyles.icon
|
|
157
160
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.mjs","names":["Text"],"sources":["../../src/components/Button.tsx"],"sourcesContent":["import type { ButtonSize, ButtonVariantFlat, IconVariant } from '@yahoo/uds-types';\nimport type { Ref } from 'react';\nimport { isValidElement, memo, useCallback, useMemo, useState } from 'react';\nimport type { View } from 'react-native';\nimport { ActivityIndicator } from 'react-native';\nimport Animated, {\n Easing,\n interpolate,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withSpring,\n withTiming,\n} from 'react-native-reanimated';\nimport { useAnimatedTheme } from 'react-native-unistyles/reanimated';\n\nimport { buttonStyles } from '../../generated/styles';\nimport { BUTTON_SPRING_CONFIG, SCALE_EFFECTS } from '../motion';\nimport type { IconSlotType } from './IconSlot';\nimport { IconSlot } from './IconSlot';\nimport type { PressableProps } from './Pressable';\nimport { AnimatedPressable } from './Pressable';\nimport { Text } from './Text';\n\n/* -------------------------------------------------------------------------- */\n/* Animation Helpers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Interpolates a boxShadow string by scaling the alpha of all colors.\n * This allows smooth fade-in/out of shadows.\n */\nfunction interpolateShadowAlpha(shadow: string | undefined, alpha: number): string {\n 'worklet';\n if (!shadow) {\n return '';\n }\n if (alpha >= 1) {\n return shadow;\n }\n if (alpha <= 0) {\n return '';\n }\n\n return shadow.replace(/rgba\\(([^,]+),\\s*([^,]+),\\s*([^,]+),\\s*([^)]+)\\)/g, (_, r, g, b, a) => {\n const newAlpha = parseFloat(a) * alpha;\n return `rgba(${r}, ${g}, ${b}, ${newAlpha.toFixed(3)})`;\n });\n}\n\n/* -------------------------------------------------------------------------- */\n/* Animated Icon Slot */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Animated wrapper for icon/loading content.\n * Matches web Button icon animation: scale 0.7→1, opacity 0→1, width 0→auto\n * Uses staggered animation: opacity waits until halfway through width animation.\n */\nfunction AnimatedIconSlot({\n children,\n visible,\n iconSize,\n gap,\n}: {\n children: React.ReactNode;\n visible: boolean;\n iconSize: number;\n gap: number;\n}) {\n // Use useDerivedValue instead of useEffect + useSharedValue\n // This is the idiomatic Reanimated pattern for deriving animated values from React state\n const progress = useDerivedValue(\n () => withSpring(visible ? 1 : 0, BUTTON_SPRING_CONFIG),\n [visible],\n );\n\n const animatedStyle = useAnimatedStyle(() => {\n // Total width includes icon + gap when visible\n const totalWidth = iconSize + gap;\n const width = interpolate(progress.value, [0, 1], [0, totalWidth]);\n\n // Staggered animation: opacity starts at 50% of width animation\n // On enter: width expands first, then icon fades in\n // On exit: icon fades out first, then width collapses\n const opacity = interpolate(progress.value, [0.5, 1], [0, 1], 'clamp');\n const scale = interpolate(progress.value, [0.5, 1], [0.7, 1], 'clamp');\n\n return {\n width,\n opacity,\n transform: [{ scale }],\n overflow: 'hidden' as const,\n };\n });\n\n return <Animated.View style={animatedStyle}>{children}</Animated.View>;\n}\n\n// function LoadingIcon({ size, variant }: { size: ButtonSize, variant: ButtonVariantFlat }) {\n// const { theme } = useUnistyles();\n// const themeKey = `buttonVariant${variantToCapitalMap[variant]}IconRest` as const;\n// const iconSize = theme.components.buttonSizeLgIconRest.fontSize;\n// return <ActivityIndicator size={iconSize} color={theme.colors.text.primary} />;\n// }\n\n/* -------------------------------------------------------------------------- */\n/* Button Props */\n/* -------------------------------------------------------------------------- */\n\ninterface ButtonProps extends Omit<PressableProps, 'children' | 'disabled'> {\n /** The visual style variant of the button @default 'primary' */\n variant?: ButtonVariantFlat;\n /** The size of the button @default 'md' */\n size?: ButtonSize;\n /** The icon style variant @default 'outline' */\n iconVariant?: IconVariant;\n /** Icon displayed before the button label */\n startIcon?: IconSlotType;\n /** Icon displayed after the button label */\n endIcon?: IconSlotType;\n /** Shows a loading spinner and disables the button */\n loading?: boolean;\n /** Whether the button is disabled */\n disabled?: boolean;\n /** Button label content */\n children?: React.ReactNode;\n /**\n * Disable motion effects (scale on press, icon animations)\n * @default false\n */\n disableEffects?: boolean;\n /** Ref to the underlying View */\n ref?: Ref<View>;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Button Component */\n/* -------------------------------------------------------------------------- */\n\n/**\n * **🖲️ A button element that can be used to trigger an action**\n *\n * @description\n * A button is a fundamental component used to trigger an action or event.\n * Buttons are interactive elements that users can click, tap, or otherwise\n * engage with to submit forms, open dialogues, or perform any other interaction.\n *\n * Features animated scale effect on press and smooth icon transitions matching\n * the web UDS Button behavior.\n *\n * @category Interactive\n * @platform mobile\n *\n * @example\n * ```tsx\n * import { Button } from '@yahoo/uds-mobile';\n *\n * <Button onPress={() => console.log('pressed')}>Save</Button>\n * <Button variant=\"secondary\">Cancel</Button>\n * <Button startIcon=\"Add\" variant=\"brand\">Add Item</Button>\n * <Button loading>Saving...</Button>\n * ```\n *\n * @accessibility\n * - Sets `accessibilityRole=\"button\"` automatically\n * - Announces loading state to screen readers\n * - Use `accessibilityLabel` for icon-only buttons\n *\n * @see {@link IconButton} for icon-only buttons\n * @see {@link Link} for navigation actions\n */\nconst Button = memo(function Button({\n variant = 'primary',\n size = 'md',\n iconVariant = 'outline',\n startIcon,\n endIcon,\n loading,\n disabled,\n width: _width,\n children,\n style,\n accessibilityLabel,\n accessibilityHint,\n disableEffects = false,\n onPressIn,\n onPressOut,\n ref,\n ...props\n}: ButtonProps) {\n const shouldAnimate = !disableEffects;\n\n /* --------------------------------- State ---------------------------------- */\n const [pressed, setPressed] = useState(false);\n\n buttonStyles.useVariants({ size, variant, disabled, pressed });\n\n // Get gap and icon size from current variant styles\n const buttonGap = buttonStyles.root.gap;\n const iconSize = buttonStyles.icon.fontSize;\n\n // Get animated theme for boxShadow (useAnimatedVariantColor doesn't support non-color props)\n const animatedTheme = useAnimatedTheme();\n\n /* ------------------------------- Animation -------------------------------- */\n const scale = useSharedValue<number>(SCALE_EFFECTS.none);\n\n const handlePressIn = useCallback(\n (event: Parameters<NonNullable<PressableProps['onPressIn']>>[0]) => {\n setPressed(true);\n if (shouldAnimate) {\n scale.value = withSpring(SCALE_EFFECTS.down, BUTTON_SPRING_CONFIG);\n }\n onPressIn?.(event);\n },\n [shouldAnimate, scale, onPressIn],\n );\n\n const handlePressOut = useCallback(\n (event: Parameters<NonNullable<PressableProps['onPressOut']>>[0]) => {\n setPressed(false);\n if (shouldAnimate) {\n scale.value = withSpring(SCALE_EFFECTS.none, BUTTON_SPRING_CONFIG);\n }\n onPressOut?.(event);\n },\n [shouldAnimate, scale, onPressOut],\n );\n\n /* -------------------------------- Content --------------------------------- */\n const childrenNode =\n children &&\n (isValidElement(children) ? (\n children\n ) : (\n <Text numberOfLines={1} textAlign=\"center\" style={buttonStyles.text}>\n {children}\n </Text>\n ));\n\n const a11yState = useMemo(() => ({ disabled, busy: loading }), [disabled, loading]);\n\n /* --------------------------------- Styles --------------------------------- */\n // Animate pressed state for shadow (0 = rest, 1 = pressed)\n const pressProgress = useDerivedValue(\n () => withTiming(pressed ? 1 : 0, { duration: 220, easing: Easing.bezier(0, 0, 0.2, 1) }),\n [pressed],\n );\n\n // Animate using Unistyles' variant color system + boxShadow from theme\n const animatedStyles = useAnimatedStyle(() => {\n // Get boxShadow from theme using flattened path (no camelCase conversion needed!)\n const components = animatedTheme.value.components;\n const buttonVariantPath = `button/variant/${variant}/root/pressed` as const;\n const shadowPressed = components[buttonVariantPath]?.boxShadow;\n\n return {\n transform: [{ scale: scale.value }],\n // Only animate shadow if the theme defines one for this variant\n ...(shadowPressed && {\n boxShadow: interpolateShadowAlpha(shadowPressed, pressProgress.value),\n }),\n };\n });\n\n // Determine what should be visible in start slot\n const showLoading = !!loading;\n const showStartIcon = !!startIcon && !loading;\n const showEndIcon = !!endIcon && !loading;\n\n // Start slot: either loading spinner or start icon\n const startContent = (\n <AnimatedIconSlot visible={showLoading || showStartIcon} iconSize={iconSize} gap={buttonGap}>\n {showLoading ? (\n <ActivityIndicator size={buttonStyles.icon.fontSize} color={buttonStyles.icon.color} />\n ) : (\n <IconSlot icon={startIcon} variant={iconVariant} style={buttonStyles.icon} />\n )}\n </AnimatedIconSlot>\n );\n\n // End slot: only end icon (no loading here)\n const endContent = (\n <AnimatedIconSlot visible={showEndIcon} iconSize={iconSize} gap={buttonGap}>\n <IconSlot icon={endIcon} variant={iconVariant} style={buttonStyles.icon} />\n </AnimatedIconSlot>\n );\n\n const rootStyles = useMemo(\n () => [\n buttonStyles.root,\n animatedStyles,\n typeof style === 'function' ? style({ pressed }) : style,\n ],\n [buttonStyles.root, animatedStyles, style, pressed],\n );\n\n /* --------------------------------- Render --------------------------------- */\n return (\n <AnimatedPressable\n ref={ref}\n disabled={disabled}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"center\"\n overflow=\"hidden\"\n accessibilityLabel={loading ? `${accessibilityLabel ?? ''}, loading` : accessibilityLabel}\n accessibilityHint={accessibilityHint}\n accessibilityRole=\"button\"\n accessibilityState={a11yState}\n alignContent=\"center\"\n style={rootStyles}\n {...props}\n >\n {startContent}\n {childrenNode}\n {endContent}\n </AnimatedPressable>\n );\n});\n\nButton.displayName = 'Button';\n\nexport { Button, type ButtonProps };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Button.mjs","names":["Text"],"sources":["../../src/components/Button.tsx"],"sourcesContent":["import type { ButtonSize, ButtonVariantFlat, IconSize, IconVariant } from '@yahoo/uds-types';\nimport type { Ref } from 'react';\nimport { isValidElement, memo, useCallback, useMemo, useState } from 'react';\nimport type { View } from 'react-native';\nimport { ActivityIndicator } from 'react-native';\nimport Animated, {\n Easing,\n interpolate,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withSpring,\n withTiming,\n} from 'react-native-reanimated';\nimport { useAnimatedTheme } from 'react-native-unistyles/reanimated';\n\nimport { buttonStyles } from '../../generated/styles';\nimport { BUTTON_SPRING_CONFIG, SCALE_EFFECTS } from '../motion';\nimport type { IconSlotType } from './IconSlot';\nimport { IconSlot } from './IconSlot';\nimport type { PressableProps } from './Pressable';\nimport { AnimatedPressable } from './Pressable';\nimport { Text } from './Text';\n\n/* -------------------------------------------------------------------------- */\n/* Animation Helpers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Interpolates a boxShadow string by scaling the alpha of all colors.\n * This allows smooth fade-in/out of shadows.\n */\nfunction interpolateShadowAlpha(shadow: string | undefined, alpha: number): string {\n 'worklet';\n if (!shadow) {\n return '';\n }\n if (alpha >= 1) {\n return shadow;\n }\n if (alpha <= 0) {\n return '';\n }\n\n return shadow.replace(/rgba\\(([^,]+),\\s*([^,]+),\\s*([^,]+),\\s*([^)]+)\\)/g, (_, r, g, b, a) => {\n const newAlpha = parseFloat(a) * alpha;\n return `rgba(${r}, ${g}, ${b}, ${newAlpha.toFixed(3)})`;\n });\n}\n\n/* -------------------------------------------------------------------------- */\n/* Animated Icon Slot */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Animated wrapper for icon/loading content.\n * Matches web Button icon animation: scale 0.7→1, opacity 0→1, width 0→auto\n * Uses staggered animation: opacity waits until halfway through width animation.\n */\nfunction AnimatedIconSlot({\n children,\n visible,\n iconSize,\n gap,\n}: {\n children: React.ReactNode;\n visible: boolean;\n iconSize: number;\n gap: number;\n}) {\n // Use useDerivedValue instead of useEffect + useSharedValue\n // This is the idiomatic Reanimated pattern for deriving animated values from React state\n const progress = useDerivedValue(\n () => withSpring(visible ? 1 : 0, BUTTON_SPRING_CONFIG),\n [visible],\n );\n\n const animatedStyle = useAnimatedStyle(() => {\n // Total width includes icon + gap when visible\n const totalWidth = iconSize + gap;\n const width = interpolate(progress.value, [0, 1], [0, totalWidth]);\n\n // Staggered animation: opacity starts at 50% of width animation\n // On enter: width expands first, then icon fades in\n // On exit: icon fades out first, then width collapses\n const opacity = interpolate(progress.value, [0.5, 1], [0, 1], 'clamp');\n const scale = interpolate(progress.value, [0.5, 1], [0.7, 1], 'clamp');\n\n return {\n width,\n opacity,\n transform: [{ scale }],\n overflow: 'hidden' as const,\n };\n });\n\n return <Animated.View style={animatedStyle}>{children}</Animated.View>;\n}\n\n// function LoadingIcon({ size, variant }: { size: ButtonSize, variant: ButtonVariantFlat }) {\n// const { theme } = useUnistyles();\n// const themeKey = `buttonVariant${variantToCapitalMap[variant]}IconRest` as const;\n// const iconSize = theme.components.buttonSizeLgIconRest.fontSize;\n// return <ActivityIndicator size={iconSize} color={theme.colors.text.primary} />;\n// }\n\n/* -------------------------------------------------------------------------- */\n/* Button Props */\n/* -------------------------------------------------------------------------- */\n\ninterface ButtonProps extends Omit<PressableProps, 'children' | 'disabled'> {\n /** The visual style variant of the button @default 'primary' */\n variant?: ButtonVariantFlat;\n /** The size of the button @default 'md' */\n size?: ButtonSize;\n /** The icon style variant @default 'outline' */\n iconVariant?: IconVariant;\n /** Icon displayed before the button label */\n startIcon?: IconSlotType;\n /** Icon displayed after the button label */\n endIcon?: IconSlotType;\n /** Shows a loading spinner and disables the button */\n loading?: boolean;\n /** Whether the button is disabled */\n disabled?: boolean;\n /** Button label content */\n children?: React.ReactNode;\n /**\n * Disable motion effects (scale on press, icon animations)\n * @default false\n */\n disableEffects?: boolean;\n /** Ref to the underlying View */\n ref?: Ref<View>;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Button Component */\n/* -------------------------------------------------------------------------- */\n\n/**\n * **🖲️ A button element that can be used to trigger an action**\n *\n * @description\n * A button is a fundamental component used to trigger an action or event.\n * Buttons are interactive elements that users can click, tap, or otherwise\n * engage with to submit forms, open dialogues, or perform any other interaction.\n *\n * Features animated scale effect on press and smooth icon transitions matching\n * the web UDS Button behavior.\n *\n * @category Interactive\n * @platform mobile\n *\n * @example\n * ```tsx\n * import { Button } from '@yahoo/uds-mobile';\n *\n * <Button onPress={() => console.log('pressed')}>Save</Button>\n * <Button variant=\"secondary\">Cancel</Button>\n * <Button startIcon=\"Add\" variant=\"brand\">Add Item</Button>\n * <Button loading>Saving...</Button>\n * ```\n *\n * @accessibility\n * - Sets `accessibilityRole=\"button\"` automatically\n * - Announces loading state to screen readers\n * - Use `accessibilityLabel` for icon-only buttons\n *\n * @see {@link IconButton} for icon-only buttons\n * @see {@link Link} for navigation actions\n */\nconst Button = memo(function Button({\n variant = 'primary',\n size = 'md',\n iconVariant = 'outline',\n startIcon,\n endIcon,\n loading,\n disabled,\n width: _width,\n children,\n style,\n accessibilityLabel,\n accessibilityHint,\n disableEffects = false,\n onPressIn,\n onPressOut,\n ref,\n ...props\n}: ButtonProps) {\n const shouldAnimate = !disableEffects;\n\n /* --------------------------------- State ---------------------------------- */\n const [pressed, setPressed] = useState(false);\n\n buttonStyles.useVariants({ size, variant, disabled, pressed });\n\n // Get gap and icon size from current variant styles\n const buttonGap = buttonStyles.root.gap;\n const iconSize = buttonStyles.icon.fontSize;\n\n // Get animated theme for boxShadow (useAnimatedVariantColor doesn't support non-color props)\n const animatedTheme = useAnimatedTheme();\n\n /* ------------------------------- Animation -------------------------------- */\n const scale = useSharedValue<number>(SCALE_EFFECTS.none);\n\n const handlePressIn = useCallback(\n (event: Parameters<NonNullable<PressableProps['onPressIn']>>[0]) => {\n setPressed(true);\n if (shouldAnimate) {\n scale.value = withSpring(SCALE_EFFECTS.down, BUTTON_SPRING_CONFIG);\n }\n onPressIn?.(event);\n },\n [shouldAnimate, scale, onPressIn],\n );\n\n const handlePressOut = useCallback(\n (event: Parameters<NonNullable<PressableProps['onPressOut']>>[0]) => {\n setPressed(false);\n if (shouldAnimate) {\n scale.value = withSpring(SCALE_EFFECTS.none, BUTTON_SPRING_CONFIG);\n }\n onPressOut?.(event);\n },\n [shouldAnimate, scale, onPressOut],\n );\n\n /* -------------------------------- Content --------------------------------- */\n const childrenNode =\n children &&\n (isValidElement(children) ? (\n children\n ) : (\n <Text numberOfLines={1} textAlign=\"center\" style={buttonStyles.text}>\n {children}\n </Text>\n ));\n\n const a11yState = useMemo(() => ({ disabled, busy: loading }), [disabled, loading]);\n\n /* --------------------------------- Styles --------------------------------- */\n // Animate pressed state for shadow (0 = rest, 1 = pressed)\n const pressProgress = useDerivedValue(\n () => withTiming(pressed ? 1 : 0, { duration: 220, easing: Easing.bezier(0, 0, 0.2, 1) }),\n [pressed],\n );\n\n // Animate using Unistyles' variant color system + boxShadow from theme\n const animatedStyles = useAnimatedStyle(() => {\n // Get boxShadow from theme using flattened path (no camelCase conversion needed!)\n const components = animatedTheme.value.components;\n const buttonVariantPath = `button/variant/${variant}/root/pressed` as const;\n const shadowPressed = components[buttonVariantPath]?.boxShadow;\n\n return {\n transform: [{ scale: scale.value }],\n // Only animate shadow if the theme defines one for this variant\n ...(shadowPressed && {\n boxShadow: interpolateShadowAlpha(shadowPressed, pressProgress.value),\n }),\n };\n });\n\n // Determine what should be visible in start slot\n const showLoading = !!loading;\n const showStartIcon = !!startIcon && !loading;\n const showEndIcon = !!endIcon && !loading;\n\n const iconSizeToken = (buttonStyles.icon.iconSizeToken as IconSize) ?? 'sm';\n\n // Start slot: either loading spinner or start icon\n const startContent = (\n <AnimatedIconSlot visible={showLoading || showStartIcon} iconSize={iconSize} gap={buttonGap}>\n {showLoading ? (\n <ActivityIndicator size={buttonStyles.icon.fontSize} color={buttonStyles.icon.color} />\n ) : (\n <IconSlot\n icon={startIcon}\n size={iconSizeToken}\n variant={iconVariant}\n style={buttonStyles.icon}\n />\n )}\n </AnimatedIconSlot>\n );\n\n // End slot: only end icon (no loading here)\n const endContent = (\n <AnimatedIconSlot visible={showEndIcon} iconSize={iconSize} gap={buttonGap}>\n <IconSlot\n icon={endIcon}\n size={iconSizeToken}\n variant={iconVariant}\n style={buttonStyles.icon}\n />\n </AnimatedIconSlot>\n );\n\n const rootStyles = useMemo(\n () => [\n buttonStyles.root,\n animatedStyles,\n typeof style === 'function' ? style({ pressed }) : style,\n ],\n [buttonStyles.root, animatedStyles, style, pressed],\n );\n\n /* --------------------------------- Render --------------------------------- */\n return (\n <AnimatedPressable\n ref={ref}\n disabled={disabled}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"center\"\n overflow=\"hidden\"\n accessibilityLabel={loading ? `${accessibilityLabel ?? ''}, loading` : accessibilityLabel}\n accessibilityHint={accessibilityHint}\n accessibilityRole=\"button\"\n accessibilityState={a11yState}\n alignContent=\"center\"\n style={rootStyles}\n {...props}\n >\n {startContent}\n {childrenNode}\n {endContent}\n </AnimatedPressable>\n );\n});\n\nButton.displayName = 'Button';\n\nexport { Button, type ButtonProps };\n"],"mappings":"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"}
|
|
@@ -102,7 +102,8 @@ const Checkbox = (0, react.memo)(function Checkbox({ label, labelPosition = "sta
|
|
|
102
102
|
generated_styles.checkboxStyles.checkbox,
|
|
103
103
|
{
|
|
104
104
|
alignItems: "center",
|
|
105
|
-
justifyContent: "center"
|
|
105
|
+
justifyContent: "center",
|
|
106
|
+
borderRadius: 4
|
|
106
107
|
},
|
|
107
108
|
checkboxAnimatedStyle
|
|
108
109
|
], [generated_styles.checkboxStyles.checkbox, checkboxAnimatedStyle]);
|
|
@@ -99,7 +99,8 @@ const Checkbox = memo(function Checkbox({ label, labelPosition = "start", varian
|
|
|
99
99
|
checkboxStyles.checkbox,
|
|
100
100
|
{
|
|
101
101
|
alignItems: "center",
|
|
102
|
-
justifyContent: "center"
|
|
102
|
+
justifyContent: "center",
|
|
103
|
+
borderRadius: 4
|
|
103
104
|
},
|
|
104
105
|
checkboxAnimatedStyle
|
|
105
106
|
], [checkboxStyles.checkbox, checkboxAnimatedStyle]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.mjs","names":[],"sources":["../../src/components/Checkbox.tsx"],"sourcesContent":["import type { CheckboxValue, CheckboxVariant, UniversalCheckboxProps } from '@yahoo/uds-types';\nimport type { Ref } from 'react';\nimport { isValidElement, memo, useCallback, useId, useMemo, useState } from 'react';\nimport type { View, ViewProps } from 'react-native';\nimport Animated, {\n interpolate,\n useAnimatedStyle,\n useDerivedValue,\n withSpring,\n} from 'react-native-reanimated';\n\nimport { checkboxStyles } from '../../generated/styles';\nimport { BUTTON_SPRING_CONFIG, SCALE_EFFECTS } from '../motion';\nimport { HStack } from './HStack';\nimport { Icon } from './Icon';\nimport { Pressable } from './Pressable';\nimport { Text } from './Text';\n\n/* -------------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------------- */\n\n/** Derived from CheckboxValue - maps boolean to 'checked'/'unchecked' string literals */\ntype CheckboxValueState = Exclude<CheckboxValue, boolean> | 'checked' | 'unchecked';\n\ninterface CheckboxProps extends Omit<ViewProps, 'style'>, UniversalCheckboxProps {\n /** Ref to the underlying View */\n ref?: Ref<View>;\n /** Default checked state for uncontrolled mode */\n defaultChecked?: boolean;\n /** Whether the checkbox is disabled */\n disabled?: boolean;\n /** Whether the checkbox is required */\n required?: boolean;\n /** Callback fired when the checked state changes */\n onChange?: (checked: boolean) => void;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Variant Mapping */\n/* -------------------------------------------------------------------------- */\n\n/** All style variants available in the generated styles (includes error variants) */\ntype CheckboxStyleVariant = 'primary' | 'secondary' | 'alert' | 'alert-secondary';\n\nconst VARIANT_ERROR_MAP: Record<CheckboxVariant, CheckboxStyleVariant> = {\n primary: 'alert',\n secondary: 'alert-secondary',\n};\n\n/* -------------------------------------------------------------------------- */\n/* Checkbox Component */\n/* -------------------------------------------------------------------------- */\n\n/**\n * **⚙️ A checkbox component**\n *\n * @description\n * A checkbox component allows users to select one or multiple options from a set.\n * It represents a binary state, typically as checked or unchecked, and optionally\n * includes a third \"indeterminate\" state to indicate partial selection.\n *\n * @category Form\n * @platform mobile\n *\n * @example\n * ```tsx\n * import { Checkbox } from '@yahoo/uds-mobile';\n *\n * <Checkbox label=\"Agree to terms\" />\n * <Checkbox label=\"Subscribe\" checked={true} onChange={setChecked} />\n * <Checkbox label=\"Partial\" checked=\"indeterminate\" />\n * ```\n *\n * @usage\n * - Forms: For selecting options\n * - Settings: For toggling preferences\n * - Filters: For multi-select filtering\n *\n * @accessibility\n * - Sets `accessibilityRole=\"checkbox\"` automatically\n * - Announces checked/unchecked/mixed state\n * - Label is used as accessibility label\n * - Supports `reduceMotion` for users who prefer reduced motion\n *\n * @see {@link Radio} for single-select options\n * @see {@link Switch} for binary toggles\n */\nconst Checkbox = memo(function Checkbox({\n // Checkbox props\n label,\n labelPosition = 'start',\n variant: variantProp = 'primary',\n size = 'md',\n checked: checkedProp,\n hasError,\n reduceMotion,\n // Native props\n defaultChecked,\n disabled,\n required,\n onChange,\n ref,\n ...viewProps\n}: CheckboxProps) {\n const generatedId = useId();\n const uid = `uds-checkbox-${generatedId}`;\n\n /* --------------------------------- State ---------------------------------- */\n const isControlled = checkedProp !== undefined;\n const [internalChecked, setInternalChecked] = useState<CheckboxValue>(\n isControlled ? checkedProp : (defaultChecked ?? false),\n );\n const [pressed, setPressed] = useState(false);\n\n // Use controlled value if provided, otherwise use internal state\n const checked = isControlled ? checkedProp : internalChecked;\n\n /* ------------------------------ Derived Values ---------------------------- */\n const valueState: CheckboxValueState = useMemo(() => {\n if (checked === 'indeterminate') {\n return 'indeterminate';\n }\n return checked ? 'checked' : 'unchecked';\n }, [checked]);\n\n const iconName = valueState === 'indeterminate' ? 'Minus' : 'Check';\n const showIcon = valueState !== 'unchecked';\n\n /* -------------------------------- Animation ------------------------------- */\n const shouldAnimate = !reduceMotion;\n\n // Scale animation for press feedback (disabled when reduceMotion is true)\n const scaleProgress = useDerivedValue(\n () =>\n shouldAnimate\n ? withSpring(pressed ? SCALE_EFFECTS.down : SCALE_EFFECTS.none, BUTTON_SPRING_CONFIG)\n : SCALE_EFFECTS.none, // No scale effect when reduceMotion is true\n [pressed, shouldAnimate],\n );\n\n // Icon visibility animation\n // When reduceMotion is true, still show/hide the icon but without animation\n const iconProgress = useDerivedValue(\n () => (shouldAnimate ? withSpring(showIcon ? 1 : 0, BUTTON_SPRING_CONFIG) : showIcon ? 1 : 0),\n [showIcon, shouldAnimate],\n );\n\n const checkboxAnimatedStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scaleProgress.value }],\n }));\n\n const iconAnimatedStyle = useAnimatedStyle(() => ({\n opacity: interpolate(iconProgress.value, [0, 1], [0, 1]),\n transform: [{ scale: interpolate(iconProgress.value, [0, 1], [0.5, 1]) }],\n }));\n\n /* -------------------------------- Handlers -------------------------------- */\n const handlePress = useCallback(() => {\n if (disabled) {\n return;\n }\n\n const newChecked = checked === 'indeterminate' ? true : !checked;\n\n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(newChecked);\n }, [disabled, checked, isControlled, onChange]);\n\n const handlePressIn = useCallback(() => {\n setPressed(true);\n }, []);\n\n const handlePressOut = useCallback(() => {\n setPressed(false);\n }, []);\n\n /* --------------------------------- Styles --------------------------------- */\n // Compute the style variant (primary/secondary maps to alert variants when hasError)\n const styleVariant: CheckboxStyleVariant = hasError\n ? VARIANT_ERROR_MAP[variantProp]\n : variantProp;\n\n checkboxStyles.useVariants({\n size,\n variant: styleVariant, // primary, secondary, alert, alert-secondary\n value: valueState, // checked, unchecked, indeterminate\n disabled,\n pressed,\n });\n\n const rootStyle = useMemo(\n () => [checkboxStyles.root, { opacity: disabled ? 0.5 : 1 }],\n [checkboxStyles.root, disabled],\n );\n\n const checkboxBoxStyle = useMemo(\n () => [\n checkboxStyles.checkbox,\n { alignItems: 'center' as const, justifyContent: 'center' as const },\n checkboxAnimatedStyle,\n ],\n [checkboxStyles.checkbox, checkboxAnimatedStyle],\n );\n\n /* ---------------------------- Render Helpers ------------------------------ */\n const labelContent = useMemo(() => {\n if (!label) {\n return null;\n }\n\n const content =\n typeof label === 'function' ? label() : isValidElement(label) ? label : String(label);\n\n const textContent =\n typeof content === 'string' ? <Text style={checkboxStyles.text}>{content}</Text> : content;\n\n if (required) {\n return (\n <HStack columnGap=\"1\" alignItems=\"flex-start\">\n {textContent}\n <Text style={checkboxStyles.text}>*</Text>\n </HStack>\n );\n }\n\n return textContent;\n }, [label, required, checkboxStyles.text]);\n\n const a11yState = useMemo(\n () => ({\n disabled,\n checked:\n valueState === 'checked'\n ? true\n : valueState === 'indeterminate'\n ? ('mixed' as const)\n : false,\n }),\n [disabled, valueState],\n );\n\n /* --------------------------------- Render --------------------------------- */\n return (\n <Pressable\n ref={ref}\n nativeID={uid}\n onPress={handlePress}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n disabled={disabled}\n flexDirection={labelPosition === 'start' ? 'row' : 'row-reverse'}\n alignItems=\"center\"\n alignSelf=\"flex-start\"\n accessibilityRole=\"checkbox\"\n accessibilityState={a11yState}\n accessibilityLabel={typeof label === 'string' ? label : undefined}\n {...viewProps}\n style={rootStyle}\n >\n <Animated.View style={checkboxBoxStyle}>\n <Animated.View style={iconAnimatedStyle}>\n <Icon name={iconName} size=\"sm\" style={checkboxStyles.checkboxIcon} />\n </Animated.View>\n </Animated.View>\n\n {labelContent}\n </Pressable>\n );\n});\n\nCheckbox.displayName = 'Checkbox';\n\nexport { Checkbox, type CheckboxProps };\n"],"mappings":";;;;;;;;;;;;;AA6CA,MAAM,oBAAmE;CACvE,SAAS;CACT,WAAW;CACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCD,MAAM,WAAW,KAAK,SAAS,SAAS,EAEtC,OACA,gBAAgB,SAChB,SAAS,cAAc,WACvB,OAAO,MACP,SAAS,aACT,UACA,cAEA,gBACA,UACA,UACA,UACA,KACA,GAAG,aACa;CAEhB,MAAM,MAAM,gBADQ,OAAO;CAI3B,MAAM,eAAe,gBAAgB;CACrC,MAAM,CAAC,iBAAiB,sBAAsB,SAC5C,eAAe,cAAe,kBAAkB,MACjD;CACD,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;CAG7C,MAAM,UAAU,eAAe,cAAc;CAG7C,MAAM,aAAiC,cAAc;AACnD,MAAI,YAAY,gBACd,QAAO;AAET,SAAO,UAAU,YAAY;IAC5B,CAAC,QAAQ,CAAC;CAEb,MAAM,WAAW,eAAe,kBAAkB,UAAU;CAC5D,MAAM,WAAW,eAAe;CAGhC,MAAM,gBAAgB,CAAC;CAGvB,MAAM,gBAAgB,sBAElB,gBACI,WAAW,UAAU,cAAc,OAAO,cAAc,MAAM,qBAAqB,GACnF,cAAc,MACpB,CAAC,SAAS,cAAc,CACzB;CAID,MAAM,eAAe,sBACZ,gBAAgB,WAAW,WAAW,IAAI,GAAG,qBAAqB,GAAG,WAAW,IAAI,GAC3F,CAAC,UAAU,cAAc,CAC1B;CAED,MAAM,wBAAwB,wBAAwB,EACpD,WAAW,CAAC,EAAE,OAAO,cAAc,OAAO,CAAC,EAC5C,EAAE;CAEH,MAAM,oBAAoB,wBAAwB;EAChD,SAAS,YAAY,aAAa,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxD,WAAW,CAAC,EAAE,OAAO,YAAY,aAAa,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,IAAK,EAAE,CAAC,EAAE,CAAC;EAC1E,EAAE;CAGH,MAAM,cAAc,kBAAkB;AACpC,MAAI,SACF;EAGF,MAAM,aAAa,YAAY,kBAAkB,OAAO,CAAC;AAEzD,MAAI,CAAC,aACH,oBAAmB,WAAW;AAGhC,aAAW,WAAW;IACrB;EAAC;EAAU;EAAS;EAAc;EAAS,CAAC;CAE/C,MAAM,gBAAgB,kBAAkB;AACtC,aAAW,KAAK;IACf,EAAE,CAAC;CAEN,MAAM,iBAAiB,kBAAkB;AACvC,aAAW,MAAM;IAChB,EAAE,CAAC;CAIN,MAAM,eAAqC,WACvC,kBAAkB,eAClB;AAEJ,gBAAe,YAAY;EACzB;EACA,SAAS;EACT,OAAO;EACP;EACA;EACD,CAAC;CAEF,MAAM,YAAY,cACV,CAAC,eAAe,MAAM,EAAE,SAAS,WAAW,KAAM,GAAG,CAAC,EAC5D,CAAC,eAAe,MAAM,SAAS,CAChC;CAED,MAAM,mBAAmB,cACjB;EACJ,eAAe;EACf;GAAE,YAAY;GAAmB,gBAAgB;GAAmB;EACpE;EACD,EACD,CAAC,eAAe,UAAU,sBAAsB,CACjD;CAGD,MAAM,eAAe,cAAc;AACjC,MAAI,CAAC,MACH,QAAO;EAGT,MAAM,UACJ,OAAO,UAAU,aAAa,OAAO,GAAG,eAAe,MAAM,GAAG,QAAQ,OAAO,MAAM;EAEvF,MAAM,cACJ,OAAO,YAAY,WAAW,oBAAC;GAAK,OAAO,eAAe;aAAO;IAAe,GAAG;AAErF,MAAI,SACF,QACE,qBAAC;GAAO,WAAU;GAAI,YAAW;cAC9B,aACD,oBAAC;IAAK,OAAO,eAAe;cAAM;KAAQ;IACnC;AAIb,SAAO;IACN;EAAC;EAAO;EAAU,eAAe;EAAK,CAAC;CAE1C,MAAM,YAAY,eACT;EACL;EACA,SACE,eAAe,YACX,OACA,eAAe,kBACZ,UACD;EACT,GACD,CAAC,UAAU,WAAW,CACvB;AAGD,QACE,qBAAC;EACM;EACL,UAAU;EACV,SAAS;EACT,WAAW;EACX,YAAY;EACF;EACV,eAAe,kBAAkB,UAAU,QAAQ;EACnD,YAAW;EACX,WAAU;EACV,mBAAkB;EAClB,oBAAoB;EACpB,oBAAoB,OAAO,UAAU,WAAW,QAAQ;EACxD,GAAI;EACJ,OAAO;aAEP,oBAAC,SAAS;GAAK,OAAO;aACpB,oBAAC,SAAS;IAAK,OAAO;cACpB,oBAAC;KAAK,MAAM;KAAU,MAAK;KAAK,OAAO,eAAe;MAAgB;KACxD;IACF,EAEf;GACS;EAEd;AAEF,SAAS,cAAc"}
|
|
1
|
+
{"version":3,"file":"Checkbox.mjs","names":[],"sources":["../../src/components/Checkbox.tsx"],"sourcesContent":["import type { CheckboxValue, CheckboxVariant, UniversalCheckboxProps } from '@yahoo/uds-types';\nimport type { Ref } from 'react';\nimport { isValidElement, memo, useCallback, useId, useMemo, useState } from 'react';\nimport type { View, ViewProps } from 'react-native';\nimport Animated, {\n interpolate,\n useAnimatedStyle,\n useDerivedValue,\n withSpring,\n} from 'react-native-reanimated';\n\nimport { checkboxStyles } from '../../generated/styles';\nimport { BUTTON_SPRING_CONFIG, SCALE_EFFECTS } from '../motion';\nimport { HStack } from './HStack';\nimport { Icon } from './Icon';\nimport { Pressable } from './Pressable';\nimport { Text } from './Text';\n\n/* -------------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------------- */\n\n/** Derived from CheckboxValue - maps boolean to 'checked'/'unchecked' string literals */\ntype CheckboxValueState = Exclude<CheckboxValue, boolean> | 'checked' | 'unchecked';\n\ninterface CheckboxProps extends Omit<ViewProps, 'style'>, UniversalCheckboxProps {\n /** Ref to the underlying View */\n ref?: Ref<View>;\n /** Default checked state for uncontrolled mode */\n defaultChecked?: boolean;\n /** Whether the checkbox is disabled */\n disabled?: boolean;\n /** Whether the checkbox is required */\n required?: boolean;\n /** Callback fired when the checked state changes */\n onChange?: (checked: boolean) => void;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Variant Mapping */\n/* -------------------------------------------------------------------------- */\n\n/** All style variants available in the generated styles (includes error variants) */\ntype CheckboxStyleVariant = 'primary' | 'secondary' | 'alert' | 'alert-secondary';\n\nconst VARIANT_ERROR_MAP: Record<CheckboxVariant, CheckboxStyleVariant> = {\n primary: 'alert',\n secondary: 'alert-secondary',\n};\n\n/* -------------------------------------------------------------------------- */\n/* Checkbox Component */\n/* -------------------------------------------------------------------------- */\n\n/**\n * **⚙️ A checkbox component**\n *\n * @description\n * A checkbox component allows users to select one or multiple options from a set.\n * It represents a binary state, typically as checked or unchecked, and optionally\n * includes a third \"indeterminate\" state to indicate partial selection.\n *\n * @category Form\n * @platform mobile\n *\n * @example\n * ```tsx\n * import { Checkbox } from '@yahoo/uds-mobile';\n *\n * <Checkbox label=\"Agree to terms\" />\n * <Checkbox label=\"Subscribe\" checked={true} onChange={setChecked} />\n * <Checkbox label=\"Partial\" checked=\"indeterminate\" />\n * ```\n *\n * @usage\n * - Forms: For selecting options\n * - Settings: For toggling preferences\n * - Filters: For multi-select filtering\n *\n * @accessibility\n * - Sets `accessibilityRole=\"checkbox\"` automatically\n * - Announces checked/unchecked/mixed state\n * - Label is used as accessibility label\n * - Supports `reduceMotion` for users who prefer reduced motion\n *\n * @see {@link Radio} for single-select options\n * @see {@link Switch} for binary toggles\n */\nconst Checkbox = memo(function Checkbox({\n // Checkbox props\n label,\n labelPosition = 'start',\n variant: variantProp = 'primary',\n size = 'md',\n checked: checkedProp,\n hasError,\n reduceMotion,\n // Native props\n defaultChecked,\n disabled,\n required,\n onChange,\n ref,\n ...viewProps\n}: CheckboxProps) {\n const generatedId = useId();\n const uid = `uds-checkbox-${generatedId}`;\n\n /* --------------------------------- State ---------------------------------- */\n const isControlled = checkedProp !== undefined;\n const [internalChecked, setInternalChecked] = useState<CheckboxValue>(\n isControlled ? checkedProp : (defaultChecked ?? false),\n );\n const [pressed, setPressed] = useState(false);\n\n // Use controlled value if provided, otherwise use internal state\n const checked = isControlled ? checkedProp : internalChecked;\n\n /* ------------------------------ Derived Values ---------------------------- */\n const valueState: CheckboxValueState = useMemo(() => {\n if (checked === 'indeterminate') {\n return 'indeterminate';\n }\n return checked ? 'checked' : 'unchecked';\n }, [checked]);\n\n const iconName = valueState === 'indeterminate' ? 'Minus' : 'Check';\n const showIcon = valueState !== 'unchecked';\n\n /* -------------------------------- Animation ------------------------------- */\n const shouldAnimate = !reduceMotion;\n\n // Scale animation for press feedback (disabled when reduceMotion is true)\n const scaleProgress = useDerivedValue(\n () =>\n shouldAnimate\n ? withSpring(pressed ? SCALE_EFFECTS.down : SCALE_EFFECTS.none, BUTTON_SPRING_CONFIG)\n : SCALE_EFFECTS.none, // No scale effect when reduceMotion is true\n [pressed, shouldAnimate],\n );\n\n // Icon visibility animation\n // When reduceMotion is true, still show/hide the icon but without animation\n const iconProgress = useDerivedValue(\n () => (shouldAnimate ? withSpring(showIcon ? 1 : 0, BUTTON_SPRING_CONFIG) : showIcon ? 1 : 0),\n [showIcon, shouldAnimate],\n );\n\n const checkboxAnimatedStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scaleProgress.value }],\n }));\n\n const iconAnimatedStyle = useAnimatedStyle(() => ({\n opacity: interpolate(iconProgress.value, [0, 1], [0, 1]),\n transform: [{ scale: interpolate(iconProgress.value, [0, 1], [0.5, 1]) }],\n }));\n\n /* -------------------------------- Handlers -------------------------------- */\n const handlePress = useCallback(() => {\n if (disabled) {\n return;\n }\n\n const newChecked = checked === 'indeterminate' ? true : !checked;\n\n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(newChecked);\n }, [disabled, checked, isControlled, onChange]);\n\n const handlePressIn = useCallback(() => {\n setPressed(true);\n }, []);\n\n const handlePressOut = useCallback(() => {\n setPressed(false);\n }, []);\n\n /* --------------------------------- Styles --------------------------------- */\n // Compute the style variant (primary/secondary maps to alert variants when hasError)\n const styleVariant: CheckboxStyleVariant = hasError\n ? VARIANT_ERROR_MAP[variantProp]\n : variantProp;\n\n checkboxStyles.useVariants({\n size,\n variant: styleVariant, // primary, secondary, alert, alert-secondary\n value: valueState, // checked, unchecked, indeterminate\n disabled,\n pressed,\n });\n\n const rootStyle = useMemo(\n () => [checkboxStyles.root, { opacity: disabled ? 0.5 : 1 }],\n [checkboxStyles.root, disabled],\n );\n\n const checkboxBoxStyle = useMemo(\n () => [\n checkboxStyles.checkbox,\n { alignItems: 'center' as const, justifyContent: 'center' as const, borderRadius: 4 },\n checkboxAnimatedStyle,\n ],\n [checkboxStyles.checkbox, checkboxAnimatedStyle],\n );\n\n /* ---------------------------- Render Helpers ------------------------------ */\n const labelContent = useMemo(() => {\n if (!label) {\n return null;\n }\n\n const content =\n typeof label === 'function' ? label() : isValidElement(label) ? label : String(label);\n\n const textContent =\n typeof content === 'string' ? <Text style={checkboxStyles.text}>{content}</Text> : content;\n\n if (required) {\n return (\n <HStack columnGap=\"1\" alignItems=\"flex-start\">\n {textContent}\n <Text style={checkboxStyles.text}>*</Text>\n </HStack>\n );\n }\n\n return textContent;\n }, [label, required, checkboxStyles.text]);\n\n const a11yState = useMemo(\n () => ({\n disabled,\n checked:\n valueState === 'checked'\n ? true\n : valueState === 'indeterminate'\n ? ('mixed' as const)\n : false,\n }),\n [disabled, valueState],\n );\n\n /* --------------------------------- Render --------------------------------- */\n return (\n <Pressable\n ref={ref}\n nativeID={uid}\n onPress={handlePress}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n disabled={disabled}\n flexDirection={labelPosition === 'start' ? 'row' : 'row-reverse'}\n alignItems=\"center\"\n alignSelf=\"flex-start\"\n accessibilityRole=\"checkbox\"\n accessibilityState={a11yState}\n accessibilityLabel={typeof label === 'string' ? label : undefined}\n {...viewProps}\n style={rootStyle}\n >\n <Animated.View style={checkboxBoxStyle}>\n <Animated.View style={iconAnimatedStyle}>\n <Icon name={iconName} size=\"sm\" style={checkboxStyles.checkboxIcon} />\n </Animated.View>\n </Animated.View>\n\n {labelContent}\n </Pressable>\n );\n});\n\nCheckbox.displayName = 'Checkbox';\n\nexport { Checkbox, type CheckboxProps };\n"],"mappings":"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"}
|
package/dist/components/Icon.cjs
CHANGED
|
@@ -93,7 +93,9 @@ const OutlineOrFillIcon = (0, react.memo)(function OutlineOrFillIcon({ name, siz
|
|
|
93
93
|
{
|
|
94
94
|
fontFamily: "uds-icons",
|
|
95
95
|
textAlign: "center",
|
|
96
|
-
textAlignVertical: "center"
|
|
96
|
+
textAlignVertical: "center",
|
|
97
|
+
fontSize: pixelSize,
|
|
98
|
+
lineHeight: pixelSize
|
|
97
99
|
},
|
|
98
100
|
generated_styles.styles.foundation,
|
|
99
101
|
dangerouslySetColor ? { color: dangerouslySetColor } : void 0,
|
|
@@ -106,7 +108,8 @@ const OutlineOrFillIcon = (0, react.memo)(function OutlineOrFillIcon({ name, siz
|
|
|
106
108
|
dangerouslySetColor,
|
|
107
109
|
dangerouslySetSize,
|
|
108
110
|
style,
|
|
109
|
-
generated_styles.styles.foundation
|
|
111
|
+
generated_styles.styles.foundation,
|
|
112
|
+
pixelSize
|
|
110
113
|
]),
|
|
111
114
|
...props,
|
|
112
115
|
children: glyph
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.d.cts","names":[],"sources":["../../src/components/Icon.tsx"],"mappings":";;;;;;;;;;KAkCK,QAAA,GAAW,SAAA,GAAY,YAAA;AAAA,UAElB,SAAA,SAAkB,IAAA,CAAK,SAAA;;EAE/B,GAAA,GAAM,GAAA,CAAI,IAAA;EAJC;EAMX,IAAA,EAAM,QAAA;EANQ;EAQd,IAAA,GAAO,QAAA;EANC;EAQR,KAAA,GAAQ,UAAA;;EAER,OAAA,GAAU,WAAA;EAEV,eAAA,GAAkB,UAAA;EAElB,YAAA,GAAe,UAAA;EACf,oBAAA,GAAuB,UAAA;EACvB,kBAAA,GAAqB,UAAA;EACrB,uBAAA,GAA0B,UAAA;EAC1B,qBAAA,GAAwB,UAAA;EACxB,WAAA,GAAc,UAAA;EACd,gBAAA,GAAmB,UAAA;EACnB,cAAA,GAAiB,UAAA;EACjB,cAAA,GAAiB,UAAA;EACjB,iBAAA,GAAoB,UAAA;EACpB,WAAA,GAAc,UAAA;EACd,mBAAA,GAAsB,UAAA;EACtB,qBAAA,GAAwB,UAAA;EACxB,gBAAA,GAAmB,UAAA;EACnB,cAAA,GAAiB,UAAA;EACjB,cAAA,GAAiB,UAAA;EACjB,iBAAA,GAAoB,UAAA;EAEpB,UAAA,GAAa,UAAA;EAEb,YAAA,GAAe,UAAA;EACf,UAAA,GAAa,UAAA;EACb,UAAA,GAAa,UAAA;EACb,aAAA,GAAgB,UAAA;EAChB,iBAAA,GAAoB,UAAA;EACpB,eAAA,GAAkB,UAAA;EAClB,OAAA,GAAU,UAAA;EAEV,WAAA,GAAc,UAAA;EACd,SAAA,GAAY,UAAA;EACZ,SAAA,GAAY,UAAA;EACZ,YAAA,GAAe,UAAA;EACf,gBAAA,GAAmB,UAAA;EACnB,cAAA,GAAiB,UAAA;EACjB,MAAA,GAAS,UAAA;EALG;EAOZ,mBAAA;EALe;EAOf,kBAAA;EALiB;EAOjB,KAAA,GAAQ,SAAA,CAAU,SAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Icon.d.cts","names":[],"sources":["../../src/components/Icon.tsx"],"mappings":";;;;;;;;;;KAkCK,QAAA,GAAW,SAAA,GAAY,YAAA;AAAA,UAElB,SAAA,SAAkB,IAAA,CAAK,SAAA;;EAE/B,GAAA,GAAM,GAAA,CAAI,IAAA;EAJC;EAMX,IAAA,EAAM,QAAA;EANQ;EAQd,IAAA,GAAO,QAAA;EANC;EAQR,KAAA,GAAQ,UAAA;;EAER,OAAA,GAAU,WAAA;EAEV,eAAA,GAAkB,UAAA;EAElB,YAAA,GAAe,UAAA;EACf,oBAAA,GAAuB,UAAA;EACvB,kBAAA,GAAqB,UAAA;EACrB,uBAAA,GAA0B,UAAA;EAC1B,qBAAA,GAAwB,UAAA;EACxB,WAAA,GAAc,UAAA;EACd,gBAAA,GAAmB,UAAA;EACnB,cAAA,GAAiB,UAAA;EACjB,cAAA,GAAiB,UAAA;EACjB,iBAAA,GAAoB,UAAA;EACpB,WAAA,GAAc,UAAA;EACd,mBAAA,GAAsB,UAAA;EACtB,qBAAA,GAAwB,UAAA;EACxB,gBAAA,GAAmB,UAAA;EACnB,cAAA,GAAiB,UAAA;EACjB,cAAA,GAAiB,UAAA;EACjB,iBAAA,GAAoB,UAAA;EAEpB,UAAA,GAAa,UAAA;EAEb,YAAA,GAAe,UAAA;EACf,UAAA,GAAa,UAAA;EACb,UAAA,GAAa,UAAA;EACb,aAAA,GAAgB,UAAA;EAChB,iBAAA,GAAoB,UAAA;EACpB,eAAA,GAAkB,UAAA;EAClB,OAAA,GAAU,UAAA;EAEV,WAAA,GAAc,UAAA;EACd,SAAA,GAAY,UAAA;EACZ,SAAA,GAAY,UAAA;EACZ,YAAA,GAAe,UAAA;EACf,gBAAA,GAAmB,UAAA;EACnB,cAAA,GAAiB,UAAA;EACjB,MAAA,GAAS,UAAA;EALG;EAOZ,mBAAA;EALe;EAOf,kBAAA;EALiB;EAOjB,KAAA,GAAQ,SAAA,CAAU,SAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAiNd,IAAA,EAAI,KAAA,CAAA,oBAAA,CAAA,SAAA;AAAA,cAaG,SAAA;AAAA,cACA,mBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.d.mts","names":[],"sources":["../../src/components/Icon.tsx"],"mappings":";;;;;;;;;;KAkCK,QAAA,GAAW,SAAA,GAAY,YAAA;AAAA,UAElB,SAAA,SAAkB,IAAA,CAAK,SAAA;;EAE/B,GAAA,GAAM,GAAA,CAAI,IAAA;EAJC;EAMX,IAAA,EAAM,QAAA;EANQ;EAQd,IAAA,GAAO,QAAA;EANC;EAQR,KAAA,GAAQ,UAAA;;EAER,OAAA,GAAU,WAAA;EAEV,eAAA,GAAkB,UAAA;EAElB,YAAA,GAAe,UAAA;EACf,oBAAA,GAAuB,UAAA;EACvB,kBAAA,GAAqB,UAAA;EACrB,uBAAA,GAA0B,UAAA;EAC1B,qBAAA,GAAwB,UAAA;EACxB,WAAA,GAAc,UAAA;EACd,gBAAA,GAAmB,UAAA;EACnB,cAAA,GAAiB,UAAA;EACjB,cAAA,GAAiB,UAAA;EACjB,iBAAA,GAAoB,UAAA;EACpB,WAAA,GAAc,UAAA;EACd,mBAAA,GAAsB,UAAA;EACtB,qBAAA,GAAwB,UAAA;EACxB,gBAAA,GAAmB,UAAA;EACnB,cAAA,GAAiB,UAAA;EACjB,cAAA,GAAiB,UAAA;EACjB,iBAAA,GAAoB,UAAA;EAEpB,UAAA,GAAa,UAAA;EAEb,YAAA,GAAe,UAAA;EACf,UAAA,GAAa,UAAA;EACb,UAAA,GAAa,UAAA;EACb,aAAA,GAAgB,UAAA;EAChB,iBAAA,GAAoB,UAAA;EACpB,eAAA,GAAkB,UAAA;EAClB,OAAA,GAAU,UAAA;EAEV,WAAA,GAAc,UAAA;EACd,SAAA,GAAY,UAAA;EACZ,SAAA,GAAY,UAAA;EACZ,YAAA,GAAe,UAAA;EACf,gBAAA,GAAmB,UAAA;EACnB,cAAA,GAAiB,UAAA;EACjB,MAAA,GAAS,UAAA;EALG;EAOZ,mBAAA;EALe;EAOf,kBAAA;EALiB;EAOjB,KAAA,GAAQ,SAAA,CAAU,SAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Icon.d.mts","names":[],"sources":["../../src/components/Icon.tsx"],"mappings":";;;;;;;;;;KAkCK,QAAA,GAAW,SAAA,GAAY,YAAA;AAAA,UAElB,SAAA,SAAkB,IAAA,CAAK,SAAA;;EAE/B,GAAA,GAAM,GAAA,CAAI,IAAA;EAJC;EAMX,IAAA,EAAM,QAAA;EANQ;EAQd,IAAA,GAAO,QAAA;EANC;EAQR,KAAA,GAAQ,UAAA;;EAER,OAAA,GAAU,WAAA;EAEV,eAAA,GAAkB,UAAA;EAElB,YAAA,GAAe,UAAA;EACf,oBAAA,GAAuB,UAAA;EACvB,kBAAA,GAAqB,UAAA;EACrB,uBAAA,GAA0B,UAAA;EAC1B,qBAAA,GAAwB,UAAA;EACxB,WAAA,GAAc,UAAA;EACd,gBAAA,GAAmB,UAAA;EACnB,cAAA,GAAiB,UAAA;EACjB,cAAA,GAAiB,UAAA;EACjB,iBAAA,GAAoB,UAAA;EACpB,WAAA,GAAc,UAAA;EACd,mBAAA,GAAsB,UAAA;EACtB,qBAAA,GAAwB,UAAA;EACxB,gBAAA,GAAmB,UAAA;EACnB,cAAA,GAAiB,UAAA;EACjB,cAAA,GAAiB,UAAA;EACjB,iBAAA,GAAoB,UAAA;EAEpB,UAAA,GAAa,UAAA;EAEb,YAAA,GAAe,UAAA;EACf,UAAA,GAAa,UAAA;EACb,UAAA,GAAa,UAAA;EACb,aAAA,GAAgB,UAAA;EAChB,iBAAA,GAAoB,UAAA;EACpB,eAAA,GAAkB,UAAA;EAClB,OAAA,GAAU,UAAA;EAEV,WAAA,GAAc,UAAA;EACd,SAAA,GAAY,UAAA;EACZ,SAAA,GAAY,UAAA;EACZ,YAAA,GAAe,UAAA;EACf,gBAAA,GAAmB,UAAA;EACnB,cAAA,GAAiB,UAAA;EACjB,MAAA,GAAS,UAAA;EALG;EAOZ,mBAAA;EALe;EAOf,kBAAA;EALiB;EAOjB,KAAA,GAAQ,SAAA,CAAU,SAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAiNd,IAAA,EAAI,KAAA,CAAA,oBAAA,CAAA,SAAA;AAAA,cAaG,SAAA;AAAA,cACA,mBAAA"}
|
package/dist/components/Icon.mjs
CHANGED
|
@@ -91,7 +91,9 @@ const OutlineOrFillIcon = memo(function OutlineOrFillIcon({ name, size = DEFAULT
|
|
|
91
91
|
{
|
|
92
92
|
fontFamily: "uds-icons",
|
|
93
93
|
textAlign: "center",
|
|
94
|
-
textAlignVertical: "center"
|
|
94
|
+
textAlignVertical: "center",
|
|
95
|
+
fontSize: pixelSize,
|
|
96
|
+
lineHeight: pixelSize
|
|
95
97
|
},
|
|
96
98
|
styles.foundation,
|
|
97
99
|
dangerouslySetColor ? { color: dangerouslySetColor } : void 0,
|
|
@@ -104,7 +106,8 @@ const OutlineOrFillIcon = memo(function OutlineOrFillIcon({ name, size = DEFAULT
|
|
|
104
106
|
dangerouslySetColor,
|
|
105
107
|
dangerouslySetSize,
|
|
106
108
|
style,
|
|
107
|
-
styles.foundation
|
|
109
|
+
styles.foundation,
|
|
110
|
+
pixelSize
|
|
108
111
|
]),
|
|
109
112
|
...props,
|
|
110
113
|
children: glyph
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.mjs","names":[],"sources":["../../src/components/Icon.tsx"],"sourcesContent":["import type { GlyphName } from '@yahoo/uds-icons/glyphMap';\nimport { glyphMap, glyphNames } from '@yahoo/uds-icons/glyphMap';\nimport type { SvgGlyphKey, SvgGlyphName } from '@yahoo/uds-icons/svgMap';\nimport { svgGlyphNames, svgMap } from '@yahoo/uds-icons/svgMap';\nimport { ICON_SIZE_MAP } from '@yahoo/uds-icons/tokens';\nimport type { IconSize, IconVariant } from '@yahoo/uds-types';\nimport type { Ref } from 'react';\nimport { memo, useMemo } from 'react';\nimport type {\n StyleProp,\n Text as RNText,\n TextProps as RNTextProps,\n TextStyle,\n ViewProps,\n} from 'react-native';\nimport { Text, View } from 'react-native';\nimport { SvgXml } from 'react-native-svg';\n// eslint-disable-next-line uds/no-use-unistyles\nimport { useUnistyles } from 'react-native-unistyles';\n\nimport type { StyleProps } from '../../generated/styles';\nimport { styles } from '../../generated/styles';\n\nconst DEFAULT_PROPS = {\n size: 'md',\n color: 'primary',\n variant: 'outline',\n flexShrink: '0',\n} as const;\n\n/* -------------------------------------------------------------------------- */\n/* Icon Props */\n/* -------------------------------------------------------------------------- */\n\ntype IconName = GlyphName | SvgGlyphName;\n\ninterface IconProps extends Omit<RNTextProps, 'style'> {\n /** Ref to the underlying Text element */\n ref?: Ref<RNText>;\n /** The icon name */\n name: IconName;\n /** Icon size */\n size?: IconSize;\n /** Icon color */\n color?: StyleProps['color'];\n /** Icon variant (outline, fill, multicolor) */\n variant?: IconVariant;\n // Background\n backgroundColor?: StyleProps['backgroundColor'];\n // Border\n borderRadius?: StyleProps['borderRadius'];\n borderTopStartRadius?: StyleProps['borderTopStartRadius'];\n borderTopEndRadius?: StyleProps['borderTopEndRadius'];\n borderBottomStartRadius?: StyleProps['borderBottomStartRadius'];\n borderBottomEndRadius?: StyleProps['borderBottomEndRadius'];\n borderColor?: StyleProps['borderColor'];\n borderStartColor?: StyleProps['borderStartColor'];\n borderEndColor?: StyleProps['borderEndColor'];\n borderTopColor?: StyleProps['borderTopColor'];\n borderBottomColor?: StyleProps['borderBottomColor'];\n borderWidth?: StyleProps['borderWidth'];\n borderVerticalWidth?: StyleProps['borderVerticalWidth'];\n borderHorizontalWidth?: StyleProps['borderHorizontalWidth'];\n borderStartWidth?: StyleProps['borderStartWidth'];\n borderEndWidth?: StyleProps['borderEndWidth'];\n borderTopWidth?: StyleProps['borderTopWidth'];\n borderBottomWidth?: StyleProps['borderBottomWidth'];\n // Flex\n flexShrink?: StyleProps['flexShrink'];\n // Spacing\n spacingStart?: StyleProps['spacingStart'];\n spacingEnd?: StyleProps['spacingEnd'];\n spacingTop?: StyleProps['spacingTop'];\n spacingBottom?: StyleProps['spacingBottom'];\n spacingHorizontal?: StyleProps['spacingHorizontal'];\n spacingVertical?: StyleProps['spacingVertical'];\n spacing?: StyleProps['spacing'];\n // Offset\n offsetStart?: StyleProps['offsetStart'];\n offsetEnd?: StyleProps['offsetEnd'];\n offsetTop?: StyleProps['offsetTop'];\n offsetBottom?: StyleProps['offsetBottom'];\n offsetHorizontal?: StyleProps['offsetHorizontal'];\n offsetVertical?: StyleProps['offsetVertical'];\n offset?: StyleProps['offset'];\n /** Icon color override */\n dangerouslySetColor?: string;\n /** Icon font size override */\n dangerouslySetSize?: number;\n /** Optional style override */\n style?: StyleProp<TextStyle>;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Multicolor Icon */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Separate component for multicolor SVG icons.\n * Uses useUnistyles() for reactive theme access - isolated here so\n * glyph-based icons don't pay the hook overhead.\n */\nconst MulticolorIcon = memo(function MulticolorIcon({\n name,\n size = DEFAULT_PROPS.size,\n flexShrink = DEFAULT_PROPS.flexShrink,\n backgroundColor,\n dangerouslySetSize,\n}: Omit<IconProps, 'variant'>) {\n // Reactive theme subscription - only multicolor icons need this\n const { rt } = useUnistyles();\n const colorScheme = rt.themeName === 'dark' ? 'dark' : 'light';\n\n const pixelSize = ICON_SIZE_MAP[size];\n const svgKey = `${name}-${colorScheme}-${pixelSize}` as SvgGlyphKey;\n const svgContent = svgMap[svgKey];\n\n if (!svgContent) {\n console.warn(`Multicolor icon \"${svgKey}\" not found`);\n return null;\n }\n\n styles.useVariants({\n flexShrink,\n backgroundColor,\n });\n\n return (\n <View style={styles.foundation as ViewProps['style']}>\n <SvgXml\n xml={svgContent}\n width={dangerouslySetSize ?? pixelSize}\n height={dangerouslySetSize ?? pixelSize}\n />\n </View>\n );\n});\n\nconst OutlineOrFillIcon = memo(function OutlineOrFillIcon({\n name,\n size = DEFAULT_PROPS.size,\n color = DEFAULT_PROPS.color,\n variant = DEFAULT_PROPS.variant,\n // Background\n backgroundColor,\n // Border\n borderRadius,\n borderTopStartRadius,\n borderTopEndRadius,\n borderBottomStartRadius,\n borderBottomEndRadius,\n borderColor,\n borderStartColor,\n borderEndColor,\n borderTopColor,\n borderBottomColor,\n borderWidth,\n borderVerticalWidth,\n borderHorizontalWidth,\n borderStartWidth,\n borderEndWidth,\n borderTopWidth,\n borderBottomWidth,\n // Flex\n flexShrink = '0',\n // Spacing\n spacingStart,\n spacingEnd,\n spacingTop,\n spacingBottom,\n spacingHorizontal,\n spacingVertical,\n spacing,\n // Offset\n offsetStart,\n offsetEnd,\n offsetTop,\n offsetBottom,\n offsetHorizontal,\n offsetVertical,\n offset,\n // Dangerously set props\n dangerouslySetColor,\n dangerouslySetSize,\n style,\n ref,\n ...props\n}: Omit<IconProps, 'variant'> & { variant?: 'outline' | 'fill' }) {\n const pixelSize = ICON_SIZE_MAP[size];\n // Glyph-based icons - no useUnistyles needed, styles.useVariants is reactive\n styles.useVariants({\n color,\n backgroundColor,\n // Border\n borderRadius,\n borderTopStartRadius,\n borderTopEndRadius,\n borderBottomStartRadius,\n borderBottomEndRadius,\n borderColor,\n borderStartColor,\n borderEndColor,\n borderTopColor,\n borderBottomColor,\n borderWidth,\n borderVerticalWidth,\n borderHorizontalWidth,\n borderStartWidth,\n borderEndWidth,\n borderTopWidth,\n borderBottomWidth,\n // Flex\n flexShrink,\n // Spacing\n spacingStart,\n spacingEnd,\n spacingTop,\n spacingBottom,\n spacingHorizontal,\n spacingVertical,\n spacing,\n // Offset\n offsetStart,\n offsetEnd,\n offsetTop,\n offsetBottom,\n offsetHorizontal,\n offsetVertical,\n offset,\n });\n const glyphName = `${name}-${variant}-${pixelSize}`;\n const glyph = (glyphMap as Record<string, string>)[glyphName];\n const textStyles: StyleProp<TextStyle> = useMemo(\n () => [\n {\n fontFamily: 'uds-icons',\n textAlign: 'center',\n textAlignVertical: 'center',\n },\n styles.foundation,\n dangerouslySetColor ? { color: dangerouslySetColor } : undefined,\n dangerouslySetSize\n ? {\n fontSize: dangerouslySetSize,\n lineHeight: dangerouslySetSize,\n }\n : undefined,\n style,\n ],\n [dangerouslySetColor, dangerouslySetSize, style, styles.foundation],\n );\n\n return (\n <Text\n ref={ref}\n accessibilityRole=\"image\"\n accessibilityLabel={name}\n style={textStyles}\n {...props}\n >\n {glyph}\n </Text>\n );\n});\n\n/**\n * **🎨 An icon component using UDS icon fonts**\n *\n * @description\n * Renders icons from the UDS icon library. Supports multiple variants\n * (outline, fill, multicolor) and sizes.\n *\n * @category Display\n * @platform mobile\n *\n * @example\n * ```tsx\n * import { Icon } from '@yahoo/uds-mobile';\n *\n * <Icon name=\"ChevronRight\" size=\"md\" color=\"primary\" />\n * <Icon name=\"Star\" variant=\"fill\" color=\"accent\" />\n * <Icon name=\"Yahoo\" variant=\"multicolor\" />\n * ```\n *\n * @usage\n * - Use name prop to specify the icon\n * - Use variant prop for outline/fill/multicolor\n * - Use size prop for icon size (xs, sm, md, lg, xl)\n *\n * @accessibility\n * - Sets `accessibilityRole=\"image\"` automatically\n * - Icon name is used as accessibility label\n * - For decorative icons, set `accessibilityElementsHidden`\n *\n * @see {@link IconButton} for clickable icons\n * @see {@link IconSlot} for flexible icon rendering in components\n */\nconst Icon = memo(function Icon({ variant, ...props }: IconProps) {\n // Delegate to MulticolorIcon for SVG-based icons (has its own useUnistyles)\n if (variant === 'multicolor') {\n return <MulticolorIcon {...props} />;\n }\n\n return <OutlineOrFillIcon variant={variant} {...props} />;\n});\n\nIcon.displayName = 'Icon';\n\nexport { Icon };\nexport type { IconName, IconProps };\nexport const iconNames = glyphNames;\nexport const multicolorIconNames = svgGlyphNames;\n"],"mappings":";;;;;;;;;;;;AAuBA,MAAM,gBAAgB;CACpB,MAAM;CACN,OAAO;CACP,SAAS;CACT,YAAY;CACb;;;;;;AA0ED,MAAM,iBAAiB,KAAK,SAAS,eAAe,EAClD,MACA,OAAO,cAAc,MACrB,aAAa,cAAc,YAC3B,iBACA,sBAC6B;CAE7B,MAAM,EAAE,OAAO,cAAc;CAC7B,MAAM,cAAc,GAAG,cAAc,SAAS,SAAS;CAEvD,MAAM,YAAY,cAAc;CAChC,MAAM,SAAS,GAAG,KAAK,GAAG,YAAY,GAAG;CACzC,MAAM,aAAa,OAAO;AAE1B,KAAI,CAAC,YAAY;AACf,UAAQ,KAAK,oBAAoB,OAAO,aAAa;AACrD,SAAO;;AAGT,QAAO,YAAY;EACjB;EACA;EACD,CAAC;AAEF,QACE,oBAAC;EAAK,OAAO,OAAO;YAClB,oBAAC;GACC,KAAK;GACL,OAAO,sBAAsB;GAC7B,QAAQ,sBAAsB;IAC9B;GACG;EAET;AAEF,MAAM,oBAAoB,KAAK,SAAS,kBAAkB,EACxD,MACA,OAAO,cAAc,MACrB,QAAQ,cAAc,OACtB,UAAU,cAAc,SAExB,iBAEA,cACA,sBACA,oBACA,yBACA,uBACA,aACA,kBACA,gBACA,gBACA,mBACA,aACA,qBACA,uBACA,kBACA,gBACA,gBACA,mBAEA,aAAa,KAEb,cACA,YACA,YACA,eACA,mBACA,iBACA,SAEA,aACA,WACA,WACA,cACA,kBACA,gBACA,QAEA,qBACA,oBACA,OACA,KACA,GAAG,SAC6D;CAChE,MAAM,YAAY,cAAc;AAEhC,QAAO,YAAY;EACjB;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,QAAS,SADG,GAAG,KAAK,GAAG,QAAQ,GAAG;AAsBxC,QACE,oBAAC;EACM;EACL,mBAAkB;EAClB,oBAAoB;EACpB,OAzBqC,cACjC;GACJ;IACE,YAAY;IACZ,WAAW;IACX,mBAAmB;IACpB;GACD,OAAO;GACP,sBAAsB,EAAE,OAAO,qBAAqB,GAAG;GACvD,qBACI;IACE,UAAU;IACV,YAAY;IACb,GACD;GACJ;GACD,EACD;GAAC;GAAqB;GAAoB;GAAO,OAAO;GAAW,CACpE;EAQG,GAAI;YAEH;GACI;EAET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCF,MAAM,OAAO,KAAK,SAAS,KAAK,EAAE,SAAS,GAAG,SAAoB;AAEhE,KAAI,YAAY,aACd,QAAO,oBAAC,kBAAe,GAAI,QAAS;AAGtC,QAAO,oBAAC;EAA2B;EAAS,GAAI;GAAS;EACzD;AAEF,KAAK,cAAc;AAInB,MAAa,YAAY;AACzB,MAAa,sBAAsB"}
|
|
1
|
+
{"version":3,"file":"Icon.mjs","names":[],"sources":["../../src/components/Icon.tsx"],"sourcesContent":["import type { GlyphName } from '@yahoo/uds-icons/glyphMap';\nimport { glyphMap, glyphNames } from '@yahoo/uds-icons/glyphMap';\nimport type { SvgGlyphKey, SvgGlyphName } from '@yahoo/uds-icons/svgMap';\nimport { svgGlyphNames, svgMap } from '@yahoo/uds-icons/svgMap';\nimport { ICON_SIZE_MAP } from '@yahoo/uds-icons/tokens';\nimport type { IconSize, IconVariant } from '@yahoo/uds-types';\nimport type { Ref } from 'react';\nimport { memo, useMemo } from 'react';\nimport type {\n StyleProp,\n Text as RNText,\n TextProps as RNTextProps,\n TextStyle,\n ViewProps,\n} from 'react-native';\nimport { Text, View } from 'react-native';\nimport { SvgXml } from 'react-native-svg';\n// eslint-disable-next-line uds/no-use-unistyles\nimport { useUnistyles } from 'react-native-unistyles';\n\nimport type { StyleProps } from '../../generated/styles';\nimport { styles } from '../../generated/styles';\n\nconst DEFAULT_PROPS = {\n size: 'md',\n color: 'primary',\n variant: 'outline',\n flexShrink: '0',\n} as const;\n\n/* -------------------------------------------------------------------------- */\n/* Icon Props */\n/* -------------------------------------------------------------------------- */\n\ntype IconName = GlyphName | SvgGlyphName;\n\ninterface IconProps extends Omit<RNTextProps, 'style'> {\n /** Ref to the underlying Text element */\n ref?: Ref<RNText>;\n /** The icon name */\n name: IconName;\n /** Icon size */\n size?: IconSize;\n /** Icon color */\n color?: StyleProps['color'];\n /** Icon variant (outline, fill, multicolor) */\n variant?: IconVariant;\n // Background\n backgroundColor?: StyleProps['backgroundColor'];\n // Border\n borderRadius?: StyleProps['borderRadius'];\n borderTopStartRadius?: StyleProps['borderTopStartRadius'];\n borderTopEndRadius?: StyleProps['borderTopEndRadius'];\n borderBottomStartRadius?: StyleProps['borderBottomStartRadius'];\n borderBottomEndRadius?: StyleProps['borderBottomEndRadius'];\n borderColor?: StyleProps['borderColor'];\n borderStartColor?: StyleProps['borderStartColor'];\n borderEndColor?: StyleProps['borderEndColor'];\n borderTopColor?: StyleProps['borderTopColor'];\n borderBottomColor?: StyleProps['borderBottomColor'];\n borderWidth?: StyleProps['borderWidth'];\n borderVerticalWidth?: StyleProps['borderVerticalWidth'];\n borderHorizontalWidth?: StyleProps['borderHorizontalWidth'];\n borderStartWidth?: StyleProps['borderStartWidth'];\n borderEndWidth?: StyleProps['borderEndWidth'];\n borderTopWidth?: StyleProps['borderTopWidth'];\n borderBottomWidth?: StyleProps['borderBottomWidth'];\n // Flex\n flexShrink?: StyleProps['flexShrink'];\n // Spacing\n spacingStart?: StyleProps['spacingStart'];\n spacingEnd?: StyleProps['spacingEnd'];\n spacingTop?: StyleProps['spacingTop'];\n spacingBottom?: StyleProps['spacingBottom'];\n spacingHorizontal?: StyleProps['spacingHorizontal'];\n spacingVertical?: StyleProps['spacingVertical'];\n spacing?: StyleProps['spacing'];\n // Offset\n offsetStart?: StyleProps['offsetStart'];\n offsetEnd?: StyleProps['offsetEnd'];\n offsetTop?: StyleProps['offsetTop'];\n offsetBottom?: StyleProps['offsetBottom'];\n offsetHorizontal?: StyleProps['offsetHorizontal'];\n offsetVertical?: StyleProps['offsetVertical'];\n offset?: StyleProps['offset'];\n /** Icon color override */\n dangerouslySetColor?: string;\n /** Icon font size override */\n dangerouslySetSize?: number;\n /** Optional style override */\n style?: StyleProp<TextStyle>;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Multicolor Icon */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Separate component for multicolor SVG icons.\n * Uses useUnistyles() for reactive theme access - isolated here so\n * glyph-based icons don't pay the hook overhead.\n */\nconst MulticolorIcon = memo(function MulticolorIcon({\n name,\n size = DEFAULT_PROPS.size,\n flexShrink = DEFAULT_PROPS.flexShrink,\n backgroundColor,\n dangerouslySetSize,\n}: Omit<IconProps, 'variant'>) {\n // Reactive theme subscription - only multicolor icons need this\n const { rt } = useUnistyles();\n const colorScheme = rt.themeName === 'dark' ? 'dark' : 'light';\n\n const pixelSize = ICON_SIZE_MAP[size];\n const svgKey = `${name}-${colorScheme}-${pixelSize}` as SvgGlyphKey;\n const svgContent = svgMap[svgKey];\n\n if (!svgContent) {\n console.warn(`Multicolor icon \"${svgKey}\" not found`);\n return null;\n }\n\n styles.useVariants({\n flexShrink,\n backgroundColor,\n });\n\n return (\n <View style={styles.foundation as ViewProps['style']}>\n <SvgXml\n xml={svgContent}\n width={dangerouslySetSize ?? pixelSize}\n height={dangerouslySetSize ?? pixelSize}\n />\n </View>\n );\n});\n\nconst OutlineOrFillIcon = memo(function OutlineOrFillIcon({\n name,\n size = DEFAULT_PROPS.size,\n color = DEFAULT_PROPS.color,\n variant = DEFAULT_PROPS.variant,\n // Background\n backgroundColor,\n // Border\n borderRadius,\n borderTopStartRadius,\n borderTopEndRadius,\n borderBottomStartRadius,\n borderBottomEndRadius,\n borderColor,\n borderStartColor,\n borderEndColor,\n borderTopColor,\n borderBottomColor,\n borderWidth,\n borderVerticalWidth,\n borderHorizontalWidth,\n borderStartWidth,\n borderEndWidth,\n borderTopWidth,\n borderBottomWidth,\n // Flex\n flexShrink = '0',\n // Spacing\n spacingStart,\n spacingEnd,\n spacingTop,\n spacingBottom,\n spacingHorizontal,\n spacingVertical,\n spacing,\n // Offset\n offsetStart,\n offsetEnd,\n offsetTop,\n offsetBottom,\n offsetHorizontal,\n offsetVertical,\n offset,\n // Dangerously set props\n dangerouslySetColor,\n dangerouslySetSize,\n style,\n ref,\n ...props\n}: Omit<IconProps, 'variant'> & { variant?: 'outline' | 'fill' }) {\n const pixelSize = ICON_SIZE_MAP[size];\n // Glyph-based icons - no useUnistyles needed, styles.useVariants is reactive\n styles.useVariants({\n color,\n backgroundColor,\n // Border\n borderRadius,\n borderTopStartRadius,\n borderTopEndRadius,\n borderBottomStartRadius,\n borderBottomEndRadius,\n borderColor,\n borderStartColor,\n borderEndColor,\n borderTopColor,\n borderBottomColor,\n borderWidth,\n borderVerticalWidth,\n borderHorizontalWidth,\n borderStartWidth,\n borderEndWidth,\n borderTopWidth,\n borderBottomWidth,\n // Flex\n flexShrink,\n // Spacing\n spacingStart,\n spacingEnd,\n spacingTop,\n spacingBottom,\n spacingHorizontal,\n spacingVertical,\n spacing,\n // Offset\n offsetStart,\n offsetEnd,\n offsetTop,\n offsetBottom,\n offsetHorizontal,\n offsetVertical,\n offset,\n });\n const glyphName = `${name}-${variant}-${pixelSize}`;\n const glyph = (glyphMap as Record<string, string>)[glyphName];\n const textStyles: StyleProp<TextStyle> = useMemo(\n () => [\n {\n fontFamily: 'uds-icons',\n textAlign: 'center',\n textAlignVertical: 'center',\n fontSize: pixelSize,\n lineHeight: pixelSize,\n },\n styles.foundation,\n dangerouslySetColor ? { color: dangerouslySetColor } : undefined,\n dangerouslySetSize\n ? {\n fontSize: dangerouslySetSize,\n lineHeight: dangerouslySetSize,\n }\n : undefined,\n style,\n ],\n [dangerouslySetColor, dangerouslySetSize, style, styles.foundation, pixelSize],\n );\n\n return (\n <Text\n ref={ref}\n accessibilityRole=\"image\"\n accessibilityLabel={name}\n style={textStyles}\n {...props}\n >\n {glyph}\n </Text>\n );\n});\n\n/**\n * **🎨 An icon component using UDS icon fonts**\n *\n * @description\n * Renders icons from the UDS icon library. Supports multiple variants\n * (outline, fill, multicolor) and sizes.\n *\n * @category Display\n * @platform mobile\n *\n * @example\n * ```tsx\n * import { Icon } from '@yahoo/uds-mobile';\n *\n * <Icon name=\"ChevronRight\" size=\"md\" color=\"primary\" />\n * <Icon name=\"Star\" variant=\"fill\" color=\"accent\" />\n * <Icon name=\"Yahoo\" variant=\"multicolor\" />\n * ```\n *\n * @usage\n * - Use name prop to specify the icon\n * - Use variant prop for outline/fill/multicolor\n * - Use size prop for icon size (xs, sm, md, lg, xl)\n *\n * @accessibility\n * - Sets `accessibilityRole=\"image\"` automatically\n * - Icon name is used as accessibility label\n * - For decorative icons, set `accessibilityElementsHidden`\n *\n * @see {@link IconButton} for clickable icons\n * @see {@link IconSlot} for flexible icon rendering in components\n */\nconst Icon = memo(function Icon({ variant, ...props }: IconProps) {\n // Delegate to MulticolorIcon for SVG-based icons (has its own useUnistyles)\n if (variant === 'multicolor') {\n return <MulticolorIcon {...props} />;\n }\n\n return <OutlineOrFillIcon variant={variant} {...props} />;\n});\n\nIcon.displayName = 'Icon';\n\nexport { Icon };\nexport type { IconName, IconProps };\nexport const iconNames = glyphNames;\nexport const multicolorIconNames = svgGlyphNames;\n"],"mappings":";;;;;;;;;;;;AAuBA,MAAM,gBAAgB;CACpB,MAAM;CACN,OAAO;CACP,SAAS;CACT,YAAY;CACb;;;;;;AA0ED,MAAM,iBAAiB,KAAK,SAAS,eAAe,EAClD,MACA,OAAO,cAAc,MACrB,aAAa,cAAc,YAC3B,iBACA,sBAC6B;CAE7B,MAAM,EAAE,OAAO,cAAc;CAC7B,MAAM,cAAc,GAAG,cAAc,SAAS,SAAS;CAEvD,MAAM,YAAY,cAAc;CAChC,MAAM,SAAS,GAAG,KAAK,GAAG,YAAY,GAAG;CACzC,MAAM,aAAa,OAAO;AAE1B,KAAI,CAAC,YAAY;AACf,UAAQ,KAAK,oBAAoB,OAAO,aAAa;AACrD,SAAO;;AAGT,QAAO,YAAY;EACjB;EACA;EACD,CAAC;AAEF,QACE,oBAAC;EAAK,OAAO,OAAO;YAClB,oBAAC;GACC,KAAK;GACL,OAAO,sBAAsB;GAC7B,QAAQ,sBAAsB;IAC9B;GACG;EAET;AAEF,MAAM,oBAAoB,KAAK,SAAS,kBAAkB,EACxD,MACA,OAAO,cAAc,MACrB,QAAQ,cAAc,OACtB,UAAU,cAAc,SAExB,iBAEA,cACA,sBACA,oBACA,yBACA,uBACA,aACA,kBACA,gBACA,gBACA,mBACA,aACA,qBACA,uBACA,kBACA,gBACA,gBACA,mBAEA,aAAa,KAEb,cACA,YACA,YACA,eACA,mBACA,iBACA,SAEA,aACA,WACA,WACA,cACA,kBACA,gBACA,QAEA,qBACA,oBACA,OACA,KACA,GAAG,SAC6D;CAChE,MAAM,YAAY,cAAc;AAEhC,QAAO,YAAY;EACjB;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,QAAS,SADG,GAAG,KAAK,GAAG,QAAQ,GAAG;AAwBxC,QACE,oBAAC;EACM;EACL,mBAAkB;EAClB,oBAAoB;EACpB,OA3BqC,cACjC;GACJ;IACE,YAAY;IACZ,WAAW;IACX,mBAAmB;IACnB,UAAU;IACV,YAAY;IACb;GACD,OAAO;GACP,sBAAsB,EAAE,OAAO,qBAAqB,GAAG;GACvD,qBACI;IACE,UAAU;IACV,YAAY;IACb,GACD;GACJ;GACD,EACD;GAAC;GAAqB;GAAoB;GAAO,OAAO;GAAY;GAAU,CAC/E;EAQG,GAAI;YAEH;GACI;EAET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCF,MAAM,OAAO,KAAK,SAAS,KAAK,EAAE,SAAS,GAAG,SAAoB;AAEhE,KAAI,YAAY,aACd,QAAO,oBAAC,kBAAe,GAAI,QAAS;AAGtC,QAAO,oBAAC;EAA2B;EAAS,GAAI;GAAS;EACzD;AAEF,KAAK,cAAc;AAInB,MAAa,YAAY;AACzB,MAAa,sBAAsB"}
|
|
@@ -12,7 +12,11 @@ declare const SCALE_EFFECTS: {
|
|
|
12
12
|
readonly down: 0.97;
|
|
13
13
|
readonly none: 1;
|
|
14
14
|
};
|
|
15
|
-
declare const motion: MotionConfig;
|
|
15
|
+
declare const motion: MotionConfig;
|
|
16
|
+
/**
|
|
17
|
+
* SpringMotionConfig default values.
|
|
18
|
+
* Used by both the component and build-time analysis tools.
|
|
19
|
+
*/
|
|
16
20
|
//#endregion
|
|
17
21
|
export { SCALE_EFFECTS, motion };
|
|
18
22
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":["MotionConfig","SCALE_EFFECTS","up","down","none","animation","spin","ping","pulse","bounce","transitionDelay","transitionDuration","transitionTiming","linear","in","out","motion"],"sources":["../../../../motion-tokens/dist/index.d.ts"],"mappings":";;;;;;;;;cAQcC,aAAAA;EAAAA,SACHC,EAAAA;EAAAA,SACAC,IAAAA;EAAAA,SACAC,IAAAA;AAAAA;AAAAA,cAqCGY,MAAAA,EAAQhB,YAAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":["MotionConfig","SCALE_EFFECTS","up","down","none","animation","spin","ping","pulse","bounce","transitionDelay","transitionDuration","transitionTiming","linear","in","out","motion","SPRING_MOTION_DEFAULTS","layoutVariant","layoutSpeed","colorVariant","colorSpeed"],"sources":["../../../../motion-tokens/dist/index.d.ts"],"mappings":";;;;;;;;;cAQcC,aAAAA;EAAAA,SACHC,EAAAA;EAAAA,SACAC,IAAAA;EAAAA,SACAC,IAAAA;AAAAA;AAAAA,cAqCGY,MAAAA,EAAQhB,YAAAA"}
|
|
@@ -12,7 +12,11 @@ declare const SCALE_EFFECTS: {
|
|
|
12
12
|
readonly down: 0.97;
|
|
13
13
|
readonly none: 1;
|
|
14
14
|
};
|
|
15
|
-
declare const motion: MotionConfig;
|
|
15
|
+
declare const motion: MotionConfig;
|
|
16
|
+
/**
|
|
17
|
+
* SpringMotionConfig default values.
|
|
18
|
+
* Used by both the component and build-time analysis tools.
|
|
19
|
+
*/
|
|
16
20
|
//#endregion
|
|
17
21
|
export { SCALE_EFFECTS, motion };
|
|
18
22
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":["MotionConfig","SCALE_EFFECTS","up","down","none","animation","spin","ping","pulse","bounce","transitionDelay","transitionDuration","transitionTiming","linear","in","out","motion"],"sources":["../../../../motion-tokens/dist/index.d.ts"],"mappings":";;;;;;;;;cAQcC,aAAAA;EAAAA,SACHC,EAAAA;EAAAA,SACAC,IAAAA;EAAAA,SACAC,IAAAA;AAAAA;AAAAA,cAqCGY,MAAAA,EAAQhB,YAAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":["MotionConfig","SCALE_EFFECTS","up","down","none","animation","spin","ping","pulse","bounce","transitionDelay","transitionDuration","transitionTiming","linear","in","out","motion","SPRING_MOTION_DEFAULTS","layoutVariant","layoutSpeed","colorVariant","colorSpeed"],"sources":["../../../../motion-tokens/dist/index.d.ts"],"mappings":";;;;;;;;;cAQcC,aAAAA;EAAAA,SACHC,EAAAA;EAAAA,SACAC,IAAAA;EAAAA,SACAC,IAAAA;AAAAA;AAAAA,cAqCGY,MAAAA,EAAQhB,YAAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../motion-tokens/dist/index.js"],"sourcesContent":["/*! © 2026 Yahoo, Inc. UDS Motion Tokens v0.0.0-development */\n//#region src/index.ts\n/**\n* Scale effect values for button press/hover animations.\n* Used by both web (CSS transforms) and mobile (Reanimated).\n*/\nconst SCALE_EFFECTS = {\n\tup: 1.03,\n\tdown: .97,\n\tnone: 1\n};\nconst animation = {\n\tnone: \"none\",\n\tspin: \"spin 1s linear infinite\",\n\tping: \"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite\",\n\tpulse: \"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite\",\n\tbounce: \"bounce 1s infinite\"\n};\nconst transitionDelay = {\n\t\"0\": \"0s\",\n\t\"75\": \"75ms\",\n\t\"100\": \"100ms\",\n\t\"150\": \"150ms\",\n\t\"200\": \"200ms\",\n\t\"300\": \"300ms\",\n\t\"500\": \"500ms\",\n\t\"700\": \"700ms\",\n\t\"1000\": \"1000ms\"\n};\nconst transitionDuration = {\n\t\"0\": \"0s\",\n\t\"75\": \"75ms\",\n\t\"100\": \"100ms\",\n\t\"150\": \"150ms\",\n\t\"200\": \"200ms\",\n\t\"300\": \"300ms\",\n\t\"500\": \"500ms\",\n\t\"700\": \"700ms\",\n\t\"1000\": \"1000ms\"\n};\nconst transitionTiming = {\n\tlinear: \"linear\",\n\tin: \"cubic-bezier(0.4, 0, 1, 1)\",\n\tout: \"cubic-bezier(0, 0, 0.2, 1)\",\n\t\"in-out\": \"cubic-bezier(0.4, 0, 0.2, 1)\"\n};\nconst motion = {\n\tdamped: {\n\t\t\"1\": {\n\t\t\tdamping: 20.585796264350424,\n\t\t\tstiffness: 62.37968115365702\n\t\t},\n\t\t\"2\": {\n\t\t\tdamping: 29.312551281312288,\n\t\t\tstiffness: 126.47801753759964\n\t\t},\n\t\t\"3\": {\n\t\t\tdamping: 48.92799401356162,\n\t\t\tstiffness: 352.3892336537332\n\t\t},\n\t\t\"4\": {\n\t\t\tdamping: 123.42690994256348,\n\t\t\tstiffness: 2242.474548821137\n\t\t}\n\t},\n\tsmooth: {\n\t\t\"1\": {\n\t\t\tdamping: 16.46863701148034,\n\t\t\tstiffness: 67.80400125397502\n\t\t},\n\t\t\"2\": {\n\t\t\tdamping: 23.45004102504983,\n\t\t\tstiffness: 137.47610601913004\n\t\t},\n\t\t\"3\": {\n\t\t\tdamping: 39.1423952108493,\n\t\t\tstiffness: 383.03177571057955\n\t\t},\n\t\t\"4\": {\n\t\t\tdamping: 98.7415279540508,\n\t\t\tstiffness: 2437.4723356751488\n\t\t}\n\t},\n\tsubtle: {\n\t\t\"1\": {\n\t\t\tdamping: 13.04316051309243,\n\t\t\tstiffness: 67.80400125397502\n\t\t},\n\t\t\"2\": {\n\t\t\tdamping: 18.572432491839468,\n\t\t\tstiffness: 137.47610601913004\n\t\t},\n\t\t\"3\": {\n\t\t\tdamping: 31.000777006992646,\n\t\t\tstiffness: 383.03177571057955\n\t\t},\n\t\t\"4\": {\n\t\t\tdamping: 78.20329013960823,\n\t\t\tstiffness: 2437.4723356751488\n\t\t}\n\t},\n\tbouncy: {\n\t\t\"1\": {\n\t\t\tdamping: 9.229712940600143,\n\t\t\tstiffness: 48.880672622541795\n\t\t},\n\t\t\"2\": {\n\t\t\tdamping: 12.634144343496553,\n\t\t\tstiffness: 91.59092691366399\n\t\t},\n\t\t\"3\": {\n\t\t\tdamping: 19.40217701790486,\n\t\t\tstiffness: 216.00395877230474\n\t\t},\n\t\t\"4\": {\n\t\t\tdamping: 37.541723184430275,\n\t\t\tstiffness: 808.7032559422912\n\t\t}\n\t},\n\tveryBouncy: {\n\t\t\"1\": {\n\t\t\tdamping: 6.902290754946187,\n\t\t\tstiffness: 38.92152745126911\n\t\t},\n\t\t\"2\": {\n\t\t\tdamping: 9.155550514215523,\n\t\t\tstiffness: 68.48134828711234\n\t\t},\n\t\t\"3\": {\n\t\t\tdamping: 13.244464908166709,\n\t\t\tstiffness: 143.30858570843873\n\t\t},\n\t\t\"4\": {\n\t\t\tdamping: 22.17862652876726,\n\t\t\tstiffness: 401.85804919502965\n\t\t}\n\t}\n};\n\n//#endregion\nexport { SCALE_EFFECTS, animation, motion, transitionDelay, transitionDuration, transitionTiming };\n//# sourceMappingURL=index.js.map"],"mappings":";;;;;;;AAMA,MAAM,gBAAgB;CACrB,IAAI;CACJ,MAAM;CACN,MAAM;CACN;AAoCD,MAAM,SAAS;CACd,QAAQ;EACP,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD;CACD,QAAQ;EACP,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD;CACD,QAAQ;EACP,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD;CACD,QAAQ;EACP,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD;CACD,YAAY;EACX,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD;CACD"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../motion-tokens/dist/index.js"],"sourcesContent":["/*! © 2026 Yahoo, Inc. UDS Motion Tokens v0.0.0-development */\n//#region src/index.ts\n/**\n* Scale effect values for button press/hover animations.\n* Used by both web (CSS transforms) and mobile (Reanimated).\n*/\nconst SCALE_EFFECTS = {\n\tup: 1.03,\n\tdown: .97,\n\tnone: 1\n};\nconst animation = {\n\tnone: \"none\",\n\tspin: \"spin 1s linear infinite\",\n\tping: \"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite\",\n\tpulse: \"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite\",\n\tbounce: \"bounce 1s infinite\"\n};\nconst transitionDelay = {\n\t\"0\": \"0s\",\n\t\"75\": \"75ms\",\n\t\"100\": \"100ms\",\n\t\"150\": \"150ms\",\n\t\"200\": \"200ms\",\n\t\"300\": \"300ms\",\n\t\"500\": \"500ms\",\n\t\"700\": \"700ms\",\n\t\"1000\": \"1000ms\"\n};\nconst transitionDuration = {\n\t\"0\": \"0s\",\n\t\"75\": \"75ms\",\n\t\"100\": \"100ms\",\n\t\"150\": \"150ms\",\n\t\"200\": \"200ms\",\n\t\"300\": \"300ms\",\n\t\"500\": \"500ms\",\n\t\"700\": \"700ms\",\n\t\"1000\": \"1000ms\"\n};\nconst transitionTiming = {\n\tlinear: \"linear\",\n\tin: \"cubic-bezier(0.4, 0, 1, 1)\",\n\tout: \"cubic-bezier(0, 0, 0.2, 1)\",\n\t\"in-out\": \"cubic-bezier(0.4, 0, 0.2, 1)\"\n};\nconst motion = {\n\tdamped: {\n\t\t\"1\": {\n\t\t\tdamping: 20.585796264350424,\n\t\t\tstiffness: 62.37968115365702\n\t\t},\n\t\t\"2\": {\n\t\t\tdamping: 29.312551281312288,\n\t\t\tstiffness: 126.47801753759964\n\t\t},\n\t\t\"3\": {\n\t\t\tdamping: 48.92799401356162,\n\t\t\tstiffness: 352.3892336537332\n\t\t},\n\t\t\"4\": {\n\t\t\tdamping: 123.42690994256348,\n\t\t\tstiffness: 2242.474548821137\n\t\t}\n\t},\n\tsmooth: {\n\t\t\"1\": {\n\t\t\tdamping: 16.46863701148034,\n\t\t\tstiffness: 67.80400125397502\n\t\t},\n\t\t\"2\": {\n\t\t\tdamping: 23.45004102504983,\n\t\t\tstiffness: 137.47610601913004\n\t\t},\n\t\t\"3\": {\n\t\t\tdamping: 39.1423952108493,\n\t\t\tstiffness: 383.03177571057955\n\t\t},\n\t\t\"4\": {\n\t\t\tdamping: 98.7415279540508,\n\t\t\tstiffness: 2437.4723356751488\n\t\t}\n\t},\n\tsubtle: {\n\t\t\"1\": {\n\t\t\tdamping: 13.04316051309243,\n\t\t\tstiffness: 67.80400125397502\n\t\t},\n\t\t\"2\": {\n\t\t\tdamping: 18.572432491839468,\n\t\t\tstiffness: 137.47610601913004\n\t\t},\n\t\t\"3\": {\n\t\t\tdamping: 31.000777006992646,\n\t\t\tstiffness: 383.03177571057955\n\t\t},\n\t\t\"4\": {\n\t\t\tdamping: 78.20329013960823,\n\t\t\tstiffness: 2437.4723356751488\n\t\t}\n\t},\n\tbouncy: {\n\t\t\"1\": {\n\t\t\tdamping: 9.229712940600143,\n\t\t\tstiffness: 48.880672622541795\n\t\t},\n\t\t\"2\": {\n\t\t\tdamping: 12.634144343496553,\n\t\t\tstiffness: 91.59092691366399\n\t\t},\n\t\t\"3\": {\n\t\t\tdamping: 19.40217701790486,\n\t\t\tstiffness: 216.00395877230474\n\t\t},\n\t\t\"4\": {\n\t\t\tdamping: 37.541723184430275,\n\t\t\tstiffness: 808.7032559422912\n\t\t}\n\t},\n\tveryBouncy: {\n\t\t\"1\": {\n\t\t\tdamping: 6.902290754946187,\n\t\t\tstiffness: 38.92152745126911\n\t\t},\n\t\t\"2\": {\n\t\t\tdamping: 9.155550514215523,\n\t\t\tstiffness: 68.48134828711234\n\t\t},\n\t\t\"3\": {\n\t\t\tdamping: 13.244464908166709,\n\t\t\tstiffness: 143.30858570843873\n\t\t},\n\t\t\"4\": {\n\t\t\tdamping: 22.17862652876726,\n\t\t\tstiffness: 401.85804919502965\n\t\t}\n\t}\n};\n/**\n* SpringMotionConfig default values.\n* Used by both the component and build-time analysis tools.\n*/\nconst SPRING_MOTION_DEFAULTS = {\n\tlayoutVariant: \"subtle\",\n\tlayoutSpeed: \"3\",\n\tcolorVariant: \"smooth\",\n\tcolorSpeed: \"3\"\n};\n\n//#endregion\nexport { SCALE_EFFECTS, SPRING_MOTION_DEFAULTS, animation, motion, transitionDelay, transitionDuration, transitionTiming };\n//# sourceMappingURL=index.js.map"],"mappings":";;;;;;;AAMA,MAAM,gBAAgB;CACrB,IAAI;CACJ,MAAM;CACN,MAAM;CACN;AAoCD,MAAM,SAAS;CACd,QAAQ;EACP,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD;CACD,QAAQ;EACP,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD;CACD,QAAQ;EACP,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD;CACD,QAAQ;EACP,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD;CACD,YAAY;EACX,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD,KAAK;GACJ,SAAS;GACT,WAAW;GACX;EACD;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":["ElementType","HTMLAttributes","PropsWithChildren","ReactElement","ReactNode","Ref","IntRange","IconPixelSize","IconSize","IconVariant","GenericIconComponent","React","ComponentType","MaxLengthArray","T","N","A","ExtractUrlFromFontFaceRule","U","Percentage","PixelsUnit","value","type","RemsUnit","UnitlessUnit","PercentageUnit","Hue","HueStep","SpectrumColor","SharedPrimaryPaletteAlias","SharedSecondaryPaletteAlias","SharedPaletteAlias","DeprecatedAccentAlias","OpacityStep","BackgroundPaletteAlias","BackgroundPalette","PaletteValue","Record","ForegroundPaletteAlias","ForegroundPalette","LinePaletteAlias","LinePalette","ShadowPaletteAlias","ShadowPalette","AlwaysPaletteAliasWithPrefix","DeprecatedAlwaysPaletteAlias","AlwaysPaletteAlias","PaletteType","PaletteConfig","hue","step","opacity","Palette","key","background","foreground","line","shadow","ForegroundColor","LineColor","ElevationAlias","BackgroundColor","ShadowColor","PropertyToPaletteAliasMap","backgroundColor","borderColor","color","ShadowSpectrumColor","ShadowPaletteColor","ShadowAlwaysColor","ShadowColorConfig","ShadowOffset","SpacingAlias","Exclude","ShadowOpacity","ShadowSpreadRadius","ShadowPreset","offsetX","offsetY","blur","spread","ShadowVariant","ShadowVariantWithElevation","ShadowVariantInvert","ShadowVariantWithInvert","ShadowVariantConfig","ShadowType","ShadowTypeConfig","ShadowConfig","drop","inset","BreakpointValue","BreakpointsConfig","sm","md","lg","xl","Breakpoint","BreakpointWithBase","TextVariantTypography","TextVariantUi","TextVariantWithoutEmphasized","TextVariant","FontAlias","FontType","FontWeightNumeric","FontWeightDescriptive","TextTransform","TextDecorationLine","LineClampAlias","LineHeight","FontSize","TextTransformConfig","FontSizeConfig","FontFamilyConfig","FontWeightConfig","FontSlantConfig","FontWidthConfig","LineHeightConfig","TextProperty","TypographyUnitValue","TypographyResponsiveProperty","base","breakpoints","TypographyStyleProperty","TypographyStyle","fontFamily","textTransform","fontSize","fontWeight","lineHeight","fontSlant","fontWidth","letterSpacing","TypographyConfig","FontConfig","TShirtSize","TShirtSizeCommon","Extract","AvatarSize","AvatarSizeConfig","AvatarShape","BorderRadius","IconSizeConfig","SpacingConfig","AlwaysPaletteColor","ElevationSurfaceColor","ElevationBackgroundFillColor","ElevationBorderColor","RGBColorValue","RGBAUnit","r","g","b","a","ElevationCustomShadows","RGBUnit","ElevationPreset","BorderWidth","surfaceColor","layerWithBackgroundFill","backgroundFill","backgroundBlurRadius","finalBackgroundOpacity","finalBackgroundValue","fallbackBlurredBackgroundValue","borderWidth","dropShadow","ElevationLevel","ElevationConfig","ColorMode","ElevationGlobalRampSettings","progression","ambientLight","shadowDistance","shadowOpacity","shadowColor","backgroundOpacity","ElevationGlobalRampConfig","isAdvancedModeEnabled","colorMode","BorderRadiusConfig","BorderWidthWithElevation","BorderWidthConfig","ColorModeForApp","ColorModeConfig","ColorsConfig","SpectrumConfig","palette","spectrum","SpectrumValue","ScaleMode","ScaleModeForApp","ScaleConfig","avatarSizes","iconSizes","borderRadius","ScaleModeConfig","ButtonSize","ButtonPalette","ButtonVariant","ScaleEffect","ButtonVariantFlat","ButtonSpectrumColor","ButtonPaletteColor","IconButtonSize","InputSize","PlatformMode","HighContrastMode","RegionMode","Modes","scaleMode","Animation","TransitionDelay","TransitionDuration","TransitionTiming","MotionVariant","MotionVariantSpeed","MotionSpringConfigOptions","MotionSpringConfig","damping","stiffness","MotionVariantValues","MotionConfig","FontCssVar","MotionCssVar","UdsCssVar","AriaAttribute","DataAttribute","Flex","FlexGrow","FlexShrink","FlexAlignContent","FlexAlignItems","FlexAlignSelf","FlexDirection","FlexWrap","FlexJustifyContent","FlexBasis","Display","Overflow","Position","ImageStyleProps","contentFit","BorderStyleProps","borderTopStartRadius","borderTopEndRadius","borderBottomStartRadius","borderBottomEndRadius","borderStartColor","borderEndColor","borderTopColor","borderBottomColor","borderVerticalWidth","borderHorizontalWidth","borderStartWidth","borderEndWidth","borderTopWidth","borderBottomWidth","NestedBorderRadiusStyleProps","nestedBorderRadius","nestedBorderRadiusSize","nestedBorderRadiusSpacing","nestedBorderRadiusWidth","ShadowStyleProps","insetShadow","LayoutStyleProps","display","overflow","overflowX","overflowY","position","SpacingStyleProps","spacing","spacingHorizontal","spacingVertical","spacingBottom","spacingEnd","spacingStart","spacingTop","offset","offsetVertical","offsetHorizontal","offsetBottom","offsetEnd","offsetStart","offsetTop","columnGap","rowGap","FlexStyleProps","alignContent","alignItems","alignSelf","flex","flexDirection","flexGrow","flexShrink","flexWrap","justifyContent","flexBasis","StateStyleProps","interactable","focusable","TextStyleProps","placeholderColor","textAlign","BackgroundStyleProps","CustomSizingStyleProps","iconSize","avatarSize","SizeStyleProps","width","height","StyleProps","UniversalBoxProps","asChild","as","UniversalStackProps","Omit","gap","separator","index","UniversalTextProps","variant","UniversalIconProps","Icon","name","size","SVGElementProps","SVGSVGElement","IconPropsWithSVGProps","IconSlotRenderProps","BackwardsCompatibleReactElement","UniversalIconSlot","iconProps","UniversalPressableProps","onPress","UniversalIconButtonProps","iconVariant","htmlName","loading","disableEffects","UniversalButtonProps","IconSlotType","Pick","startIcon","endIcon","UniversalImageProps","src","alt","ImgElementProps","HTMLImageElement","ImgHTMLAttributes","ImagePropsWithImgProps","UniversalFormLabelProps","required","hasError","showRequiredAsterisk","label","UniversalInputProps","disabled","helpText","helperTextIcon","reduceMotion","readOnly","DividerVariant","UniversalDividerProps","vertical","contentPosition","LinkVariant","LinkTextVariant","UniversalLinkProps","textVariant","alwaysUnderline","CheckboxValue","CheckboxVariant","CheckboxSize","UniversalCheckboxProps","checked","labelPosition","RadioValue","RadioVariant","RadioSize","UniversalRadioProps","UniversalRadioGroupProps","defaultValue","onChange","SwitchSize","UniversalSwitchProps","isOn","defaultIsOn","onIcon","offIcon","ChipVariant","ChipSize","UniversalChipBaseProps","minWidth","maxWidth","UniversalChipDismissibleProps","onDismiss","dismissButtonAriaLabel","dismissIcon","UniversalChipToggleProps","isToggled","onToggle","UniversalChipButtonProps","UniversalChipLinkProps","href","UniversalChipProps","BadgeVariant","BadgeSize","UniversalBadgeProps","iconColor","AvatarVariant","AvatarAbbreviationStrategy","UniversalAvatarBaseProps","customSize","abbreviationStrategy","className","UniversalAvatarImageProps","srcSet","fallback","UniversalAvatarTextProps","initials","UniversalAvatarIconProps","icon","UniversalAvatarProps","UniversalMenuItemProps","active","slots","root","ref","props","ToastSize","ToastVariant","ToastPosition","UniversalToastProps","message","actionButton","onClickActionButton","closeIcon","onClickCloseButton","id","ConfigurableComponentName","UniversalTokensConfigAutoBase","UniversalTokensConfigBase","GlobalDefaultsConfig","version","font","motion","typography","elevation","elevationGlobalRamp","globalDefaults","UniversalTokensConfigGeneric","ConfigAuto","breakpoint","enableResponsiveType"],"sources":["../../../../types/dist/index.d.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":["ElementType","HTMLAttributes","PropsWithChildren","ReactElement","ReactNode","Ref","IntRange","IconPixelSize","IconSize","IconVariant","GenericIconComponent","React","ComponentType","MaxLengthArray","T","N","A","ExtractUrlFromFontFaceRule","U","Percentage","PixelsUnit","value","type","RemsUnit","UnitlessUnit","PercentageUnit","Hue","HueStep","SpectrumColor","SharedPrimaryPaletteAlias","SharedSecondaryPaletteAlias","SharedPaletteAlias","DeprecatedAccentAlias","OpacityStep","BackgroundPaletteAlias","BackgroundPalette","PaletteValue","Record","ForegroundPaletteAlias","ForegroundPalette","LinePaletteAlias","LinePalette","ShadowPaletteAlias","ShadowPalette","AlwaysPaletteAliasWithPrefix","DeprecatedAlwaysPaletteAlias","AlwaysPaletteAlias","LinkableValue","$ref","PaletteType","PaletteConfig","hue","step","opacity","Palette","key","background","foreground","line","shadow","ForegroundColor","LineColor","ElevationAlias","BackgroundColor","ShadowColor","PropertyToPaletteAliasMap","backgroundColor","borderColor","color","ShadowSpectrumColor","ShadowPaletteColor","ShadowAlwaysColor","ShadowColorConfig","ShadowOffset","SpacingAlias","Exclude","ShadowOpacity","ShadowSpreadRadius","ShadowPreset","offsetX","offsetY","blur","spread","ShadowVariant","ShadowVariantWithElevation","ShadowVariantInvert","ShadowVariantWithInvert","ShadowVariantConfig","ShadowType","ShadowTypeConfig","ShadowConfig","drop","inset","BreakpointValue","BreakpointsConfig","sm","md","lg","xl","Breakpoint","BreakpointWithBase","TextVariantTypography","TextVariantUi","TextVariantWithoutEmphasized","TextVariant","FontAlias","FontType","FontWeightNumeric","FontWeightDescriptive","TextTransform","TextDecorationLine","LineClampAlias","LineHeight","FontSize","TextTransformConfig","FontSizeConfig","FontFamilyConfig","FontWeightConfig","FontSlantConfig","FontWidthConfig","LineHeightConfig","TextProperty","TypographyUnitValue","TypographyResponsiveProperty","base","breakpoints","TypographyStyleProperty","TypographyStyle","fontFamily","textTransform","fontSize","fontWeight","lineHeight","fontSlant","fontWidth","letterSpacing","TypographyConfig","FontConfig","TShirtSize","TShirtSizeCommon","Extract","AvatarSize","AvatarSizeConfig","AvatarShape","BorderRadius","IconSizeConfig","SpacingConfig","AlwaysPaletteColor","ElevationSurfaceColor","ElevationBackgroundFillColor","ElevationBorderColor","RGBColorValue","RGBAUnit","r","g","b","a","ElevationCustomShadows","RGBUnit","ElevationPreset","BorderWidth","surfaceColor","layerWithBackgroundFill","backgroundFill","backgroundBlurRadius","finalBackgroundOpacity","finalBackgroundValue","fallbackBlurredBackgroundValue","borderWidth","dropShadow","ElevationLevel","ElevationConfig","ColorMode","ElevationGlobalRampSettings","progression","ambientLight","shadowDistance","shadowOpacity","shadowColor","backgroundOpacity","ElevationGlobalRampConfig","isAdvancedModeEnabled","colorMode","BorderRadiusConfig","BorderWidthWithElevation","BorderWidthConfig","ColorModeForApp","ColorModeConfig","ColorsConfig","SpectrumConfig","palette","spectrum","SpectrumValue","ScaleMode","ScaleModeForApp","ScaleConfig","avatarSizes","iconSizes","borderRadius","ScaleModeConfig","ButtonSize","ButtonPalette","ButtonVariant","ScaleEffect","ButtonVariantFlat","ButtonSpectrumColor","ButtonPaletteColor","IconButtonSize","InputSize","PlatformMode","HighContrastMode","RegionMode","Modes","scaleMode","Animation","TransitionDelay","TransitionDuration","TransitionTiming","MotionVariant","MotionVariantSpeed","MotionSpringConfigOptions","MotionSpringConfig","damping","stiffness","MotionVariantValues","MotionConfig","FontCssVar","MotionCssVar","UdsCssVar","AriaAttribute","DataAttribute","Flex","FlexGrow","FlexShrink","FlexAlignContent","FlexAlignItems","FlexAlignSelf","FlexDirection","FlexWrap","FlexJustifyContent","FlexBasis","Display","Overflow","Position","ImageStyleProps","contentFit","BorderStyleProps","borderTopStartRadius","borderTopEndRadius","borderBottomStartRadius","borderBottomEndRadius","borderStartColor","borderEndColor","borderTopColor","borderBottomColor","borderVerticalWidth","borderHorizontalWidth","borderStartWidth","borderEndWidth","borderTopWidth","borderBottomWidth","NestedBorderRadiusStyleProps","nestedBorderRadius","nestedBorderRadiusSize","nestedBorderRadiusSpacing","nestedBorderRadiusWidth","ShadowStyleProps","insetShadow","LayoutStyleProps","display","overflow","overflowX","overflowY","position","SpacingStyleProps","spacing","spacingHorizontal","spacingVertical","spacingBottom","spacingEnd","spacingStart","spacingTop","offset","offsetVertical","offsetHorizontal","offsetBottom","offsetEnd","offsetStart","offsetTop","columnGap","rowGap","FlexStyleProps","alignContent","alignItems","alignSelf","flex","flexDirection","flexGrow","flexShrink","flexWrap","justifyContent","flexBasis","StateStyleProps","interactable","focusable","TextStyleProps","placeholderColor","textAlign","BackgroundStyleProps","CustomSizingStyleProps","iconSize","avatarSize","SizeStyleProps","width","height","StyleProps","UniversalBoxProps","asChild","as","UniversalStackProps","Omit","gap","separator","index","UniversalTextProps","variant","UniversalIconProps","Icon","name","size","SVGElementProps","SVGSVGElement","IconPropsWithSVGProps","IconSlotRenderProps","BackwardsCompatibleReactElement","UniversalIconSlot","iconProps","UniversalPressableProps","onPress","UniversalIconButtonProps","iconVariant","htmlName","loading","disableEffects","UniversalButtonProps","IconSlotType","Pick","startIcon","endIcon","UniversalImageProps","src","alt","ImgElementProps","HTMLImageElement","ImgHTMLAttributes","ImagePropsWithImgProps","UniversalFormLabelProps","required","hasError","showRequiredAsterisk","label","UniversalInputProps","disabled","helpText","helperTextIcon","reduceMotion","readOnly","DividerVariant","UniversalDividerProps","vertical","contentPosition","LinkVariant","LinkTextVariant","UniversalLinkProps","textVariant","alwaysUnderline","CheckboxValue","CheckboxVariant","CheckboxSize","UniversalCheckboxProps","checked","labelPosition","RadioValue","RadioVariant","RadioSize","UniversalRadioProps","UniversalRadioGroupProps","defaultValue","onChange","SwitchSize","UniversalSwitchProps","isOn","defaultIsOn","onIcon","offIcon","ChipVariant","ChipSize","UniversalChipBaseProps","minWidth","maxWidth","UniversalChipDismissibleProps","onDismiss","dismissButtonAriaLabel","dismissIcon","UniversalChipToggleProps","isToggled","onToggle","UniversalChipButtonProps","UniversalChipLinkProps","href","UniversalChipProps","BadgeVariant","BadgeSize","UniversalBadgeProps","iconColor","AvatarVariant","AvatarAbbreviationStrategy","UniversalAvatarBaseProps","customSize","abbreviationStrategy","className","UniversalAvatarImageProps","srcSet","fallback","UniversalAvatarTextProps","initials","UniversalAvatarIconProps","icon","UniversalAvatarProps","UniversalMenuItemProps","active","slots","root","ref","props","ToastSize","ToastVariant","ToastPosition","UniversalToastProps","message","actionButton","onClickActionButton","closeIcon","onClickCloseButton","id","VerticalPlacement","HorizontalPlacement","TooltipPlacement","TooltipSize","TooltipVariant","UniversalTooltipProps","children","placement","open","portal","UniversalTooltipTriggerProps","UniversalTooltipContentProps","startTitleIcon","title","endContent","ConfigurableComponentName","UniversalTokensConfigAutoBase","UniversalTokensConfigBase","GlobalDefaultsConfig","$defs","links","systems","version","font","motion","typography","elevation","elevationGlobalRamp","globalDefaults","UniversalTokensConfigGeneric","ConfigAuto","breakpoint","enableResponsiveType"],"sources":["../../../../types/dist/index.d.ts"],"mappings":"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"}
|