@yahoo/uds-mobile 1.3.0-beta.8 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/dist/_virtual/{rolldown_runtime.cjs → _rolldown/runtime.cjs} +2 -2
  2. package/dist/bin/fixtures/dist/index.mjs +25 -1
  3. package/dist/bin/generateTheme.mjs +5 -5
  4. package/dist/bin/uds-mobile.mjs +10 -10
  5. package/dist/components/Avatar.cjs +13 -4
  6. package/dist/components/Avatar.d.cts +11 -3
  7. package/dist/components/Avatar.d.cts.map +1 -1
  8. package/dist/components/Avatar.d.mts +11 -3
  9. package/dist/components/Avatar.d.mts.map +1 -1
  10. package/dist/components/Avatar.mjs +11 -3
  11. package/dist/components/Avatar.mjs.map +1 -1
  12. package/dist/components/Badge.cjs +15 -4
  13. package/dist/components/Badge.d.cts +24 -6
  14. package/dist/components/Badge.d.cts.map +1 -1
  15. package/dist/components/Badge.d.mts +24 -6
  16. package/dist/components/Badge.d.mts.map +1 -1
  17. package/dist/components/Badge.mjs +13 -3
  18. package/dist/components/Badge.mjs.map +1 -1
  19. package/dist/components/Box.cjs +15 -11
  20. package/dist/components/Box.d.cts +15 -10
  21. package/dist/components/Box.d.cts.map +1 -1
  22. package/dist/components/Box.d.mts +15 -10
  23. package/dist/components/Box.d.mts.map +1 -1
  24. package/dist/components/Box.mjs +13 -10
  25. package/dist/components/Box.mjs.map +1 -1
  26. package/dist/components/Button.cjs +15 -5
  27. package/dist/components/Button.d.cts +21 -6
  28. package/dist/components/Button.d.cts.map +1 -1
  29. package/dist/components/Button.d.mts +21 -6
  30. package/dist/components/Button.d.mts.map +1 -1
  31. package/dist/components/Button.mjs +12 -3
  32. package/dist/components/Button.mjs.map +1 -1
  33. package/dist/components/Checkbox.cjs +16 -7
  34. package/dist/components/Checkbox.d.cts +14 -5
  35. package/dist/components/Checkbox.d.cts.map +1 -1
  36. package/dist/components/Checkbox.d.mts +14 -5
  37. package/dist/components/Checkbox.d.mts.map +1 -1
  38. package/dist/components/Checkbox.mjs +13 -5
  39. package/dist/components/Checkbox.mjs.map +1 -1
  40. package/dist/components/Chip.cjs +21 -4
  41. package/dist/components/Chip.d.cts +28 -6
  42. package/dist/components/Chip.d.cts.map +1 -1
  43. package/dist/components/Chip.d.mts +28 -6
  44. package/dist/components/Chip.d.mts.map +1 -1
  45. package/dist/components/Chip.mjs +19 -3
  46. package/dist/components/Chip.mjs.map +1 -1
  47. package/dist/components/HStack.cjs +9 -6
  48. package/dist/components/HStack.d.cts +9 -5
  49. package/dist/components/HStack.d.cts.map +1 -1
  50. package/dist/components/HStack.d.mts +9 -5
  51. package/dist/components/HStack.d.mts.map +1 -1
  52. package/dist/components/HStack.mjs +7 -5
  53. package/dist/components/HStack.mjs.map +1 -1
  54. package/dist/components/Icon.cjs +17 -6
  55. package/dist/components/Icon.d.cts +14 -3
  56. package/dist/components/Icon.d.cts.map +1 -1
  57. package/dist/components/Icon.d.mts +14 -3
  58. package/dist/components/Icon.d.mts.map +1 -1
  59. package/dist/components/Icon.mjs +15 -5
  60. package/dist/components/Icon.mjs.map +1 -1
  61. package/dist/components/IconButton.cjs +24 -5
  62. package/dist/components/IconButton.d.cts +28 -8
  63. package/dist/components/IconButton.d.cts.map +1 -1
  64. package/dist/components/IconButton.d.mts +28 -8
  65. package/dist/components/IconButton.d.mts.map +1 -1
  66. package/dist/components/IconButton.mjs +22 -4
  67. package/dist/components/IconButton.mjs.map +1 -1
  68. package/dist/components/IconSlot.cjs +9 -3
  69. package/dist/components/IconSlot.d.cts +7 -2
  70. package/dist/components/IconSlot.d.cts.map +1 -1
  71. package/dist/components/IconSlot.d.mts +7 -2
  72. package/dist/components/IconSlot.d.mts.map +1 -1
  73. package/dist/components/IconSlot.mjs +7 -2
  74. package/dist/components/IconSlot.mjs.map +1 -1
  75. package/dist/components/Image.cjs +19 -4
  76. package/dist/components/Image.d.cts +18 -3
  77. package/dist/components/Image.d.cts.map +1 -1
  78. package/dist/components/Image.d.mts +18 -3
  79. package/dist/components/Image.d.mts.map +1 -1
  80. package/dist/components/Image.mjs +17 -3
  81. package/dist/components/Image.mjs.map +1 -1
  82. package/dist/components/Input.cjs +20 -7
  83. package/dist/components/Input.d.cts +19 -6
  84. package/dist/components/Input.d.cts.map +1 -1
  85. package/dist/components/Input.d.mts +19 -6
  86. package/dist/components/Input.d.mts.map +1 -1
  87. package/dist/components/Input.mjs +18 -6
  88. package/dist/components/Input.mjs.map +1 -1
  89. package/dist/components/Link.cjs +20 -5
  90. package/dist/components/Link.d.cts +21 -4
  91. package/dist/components/Link.d.cts.map +1 -1
  92. package/dist/components/Link.d.mts +21 -4
  93. package/dist/components/Link.d.mts.map +1 -1
  94. package/dist/components/Link.mjs +17 -3
  95. package/dist/components/Link.mjs.map +1 -1
  96. package/dist/components/Pressable.cjs +18 -6
  97. package/dist/components/Pressable.d.cts +18 -5
  98. package/dist/components/Pressable.d.cts.map +1 -1
  99. package/dist/components/Pressable.d.mts +18 -5
  100. package/dist/components/Pressable.d.mts.map +1 -1
  101. package/dist/components/Pressable.mjs +15 -4
  102. package/dist/components/Pressable.mjs.map +1 -1
  103. package/dist/components/Radio.cjs +16 -7
  104. package/dist/components/Radio.d.cts +14 -5
  105. package/dist/components/Radio.d.cts.map +1 -1
  106. package/dist/components/Radio.d.mts +14 -5
  107. package/dist/components/Radio.d.mts.map +1 -1
  108. package/dist/components/Radio.mjs +13 -5
  109. package/dist/components/Radio.mjs.map +1 -1
  110. package/dist/components/Screen.cjs +10 -4
  111. package/dist/components/Screen.d.cts +15 -3
  112. package/dist/components/Screen.d.cts.map +1 -1
  113. package/dist/components/Screen.d.mts +15 -3
  114. package/dist/components/Screen.d.mts.map +1 -1
  115. package/dist/components/Screen.mjs +8 -3
  116. package/dist/components/Screen.mjs.map +1 -1
  117. package/dist/components/Switch.cjs +21 -5
  118. package/dist/components/Switch.d.cts +18 -3
  119. package/dist/components/Switch.d.cts.map +1 -1
  120. package/dist/components/Switch.d.mts +18 -3
  121. package/dist/components/Switch.d.mts.map +1 -1
  122. package/dist/components/Switch.mjs +18 -3
  123. package/dist/components/Switch.mjs.map +1 -1
  124. package/dist/components/Text.cjs +17 -7
  125. package/dist/components/Text.d.cts +18 -6
  126. package/dist/components/Text.d.cts.map +1 -1
  127. package/dist/components/Text.d.mts +18 -6
  128. package/dist/components/Text.d.mts.map +1 -1
  129. package/dist/components/Text.mjs +15 -6
  130. package/dist/components/Text.mjs.map +1 -1
  131. package/dist/components/VStack.cjs +9 -6
  132. package/dist/components/VStack.d.cts +9 -5
  133. package/dist/components/VStack.d.cts.map +1 -1
  134. package/dist/components/VStack.d.mts +9 -5
  135. package/dist/components/VStack.d.mts.map +1 -1
  136. package/dist/components/VStack.mjs +7 -5
  137. package/dist/components/VStack.mjs.map +1 -1
  138. package/dist/icons/dist/glyphMap.cjs +2 -2
  139. package/dist/icons/dist/glyphMap.d.cts +0 -2
  140. package/dist/icons/dist/glyphMap.d.cts.map +1 -1
  141. package/dist/icons/dist/glyphMap.d.mts +0 -2
  142. package/dist/icons/dist/glyphMap.d.mts.map +1 -1
  143. package/dist/icons/dist/glyphMap.mjs +2 -2
  144. package/dist/icons/dist/glyphMap.mjs.map +1 -1
  145. package/dist/icons/dist/svgMap.cjs +2 -2
  146. package/dist/icons/dist/svgMap.d.cts +0 -2
  147. package/dist/icons/dist/svgMap.d.cts.map +1 -1
  148. package/dist/icons/dist/svgMap.d.mts +0 -2
  149. package/dist/icons/dist/svgMap.d.mts.map +1 -1
  150. package/dist/icons/dist/svgMap.mjs +2 -2
  151. package/dist/icons/dist/svgMap.mjs.map +1 -1
  152. package/dist/icons/dist/tokens.cjs +2 -2
  153. package/dist/icons/dist/tokens.mjs +2 -2
  154. package/dist/icons/dist/tokens.mjs.map +1 -1
  155. package/dist/motion-tokens/dist/index.cjs +1 -1
  156. package/dist/motion-tokens/dist/index.d.cts +1 -3
  157. package/dist/motion-tokens/dist/index.d.cts.map +1 -1
  158. package/dist/motion-tokens/dist/index.d.mts +1 -3
  159. package/dist/motion-tokens/dist/index.d.mts.map +1 -1
  160. package/dist/motion-tokens/dist/index.mjs +1 -1
  161. package/dist/motion.cjs +2 -1
  162. package/dist/motion.d.cts +0 -1
  163. package/dist/motion.d.cts.map +1 -1
  164. package/dist/motion.d.mts +0 -1
  165. package/dist/motion.d.mts.map +1 -1
  166. package/dist/motion.mjs +1 -1
  167. package/dist/types/dist/index.d.cts +1 -3
  168. package/dist/types/dist/index.d.cts.map +1 -1
  169. package/dist/types/dist/index.d.mts +1 -3
  170. package/dist/types/dist/index.d.mts.map +1 -1
  171. package/dist/types.cjs +1 -1
  172. package/dist/types.d.cts +0 -3
  173. package/dist/types.d.cts.map +1 -1
  174. package/dist/types.d.mts +0 -3
  175. package/dist/types.d.mts.map +1 -1
  176. package/dist/types.mjs +1 -1
  177. package/fonts/index.cjs +205 -205
  178. package/fonts/index.mjs +205 -205
  179. package/generated/styles.cjs +119 -23
  180. package/generated/styles.d.ts +48 -1
  181. package/generated/styles.mjs +119 -23
  182. package/generated/unistyles.d.ts +97 -18
  183. package/package.json +1 -41
@@ -1,4 +1,4 @@
1
- /*! © 2026 Yahoo, Inc. UDS Mobile v1.3.0-beta.7 */
1
+ /*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
2
2
  import { Box } from "./Box.mjs";
3
3
  import { memo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -11,6 +11,9 @@ import { jsx } from "react/jsx-runtime";
11
11
  * A convenience component for creating horizontal layouts. It's a Box with
12
12
  * `flexDirection="row"` preset.
13
13
  *
14
+ * @category Layout
15
+ * @platform mobile
16
+ *
14
17
  * @example
15
18
  * ```tsx
16
19
  * import { HStack } from '@yahoo/uds-mobile';
@@ -25,11 +28,10 @@ import { jsx } from "react/jsx-runtime";
25
28
  * - Use for horizontal arrangements of elements
26
29
  * - Use gap prop for consistent spacing between children
27
30
  *
28
- * @see The {@link https://uds.build/docs/components/h-stack HStack Docs} for more info
29
- *
30
- * @related [VStack](https://uds.build/docs/components/v-stack), [Box](https://uds.build/docs/components/box)
31
+ * @see {@link VStack} for vertical layouts
32
+ * @see {@link Box} for custom flex layouts
31
33
  */
32
- const HStack = memo(function HStack$1({ gap, children, ref, ...props }) {
34
+ const HStack = memo(function HStack({ gap, children, ref, ...props }) {
33
35
  return /* @__PURE__ */ jsx(Box, {
34
36
  ref,
35
37
  flexDirection: "row",
@@ -1 +1 @@
1
- {"version":3,"file":"HStack.mjs","names":["HStack"],"sources":["../../src/components/HStack.tsx"],"sourcesContent":["import type { Ref } from 'react';\nimport { memo } from 'react';\nimport type { View } from 'react-native';\n\nimport type { StyleProps } from '../../generated/styles';\nimport type { BoxProps } from './Box';\nimport { Box } from './Box';\n\ninterface HStackProps extends Omit<BoxProps, 'ref'> {\n gap?: StyleProps['columnGap'];\n ref?: Ref<View>;\n}\n\n/**\n * **📦 A horizontal stack layout component**\n *\n * @description\n * A convenience component for creating horizontal layouts. It's a Box with\n * `flexDirection=\"row\"` preset.\n *\n * @example\n * ```tsx\n * import { HStack } from '@yahoo/uds-mobile';\n *\n * <HStack gap=\"4\" alignItems=\"center\">\n * <Text>Item 1</Text>\n * <Text>Item 2</Text>\n * </HStack>\n * ```\n *\n * @usage\n * - Use for horizontal arrangements of elements\n * - Use gap prop for consistent spacing between children\n *\n * @see The {@link https://uds.build/docs/components/h-stack HStack Docs} for more info\n *\n * @related [VStack](https://uds.build/docs/components/v-stack), [Box](https://uds.build/docs/components/box)\n */\nconst HStack = memo(function HStack({ gap, children, ref, ...props }: HStackProps) {\n return (\n <Box ref={ref} flexDirection=\"row\" rowGap={gap} columnGap={gap} {...props}>\n {children}\n </Box>\n );\n});\n\nHStack.displayName = 'HStack';\n\nexport { HStack, type HStackProps };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,MAAM,SAAS,KAAK,SAASA,SAAO,EAAE,KAAK,UAAU,KAAK,GAAG,SAAsB;AACjF,QACE,oBAAC;EAAS;EAAK,eAAc;EAAM,QAAQ;EAAK,WAAW;EAAK,GAAI;EACjE;GACG;EAER;AAEF,OAAO,cAAc"}
1
+ {"version":3,"file":"HStack.mjs","names":[],"sources":["../../src/components/HStack.tsx"],"sourcesContent":["import type { Ref } from 'react';\nimport { memo } from 'react';\nimport type { View } from 'react-native';\n\nimport type { StyleProps } from '../../generated/styles';\nimport type { BoxProps } from './Box';\nimport { Box } from './Box';\n\ninterface HStackProps extends Omit<BoxProps, 'ref'> {\n /** Gap between child elements */\n gap?: StyleProps['columnGap'];\n /** Ref to the underlying View */\n ref?: Ref<View>;\n}\n\n/**\n * **📦 A horizontal stack layout component**\n *\n * @description\n * A convenience component for creating horizontal layouts. It's a Box with\n * `flexDirection=\"row\"` preset.\n *\n * @category Layout\n * @platform mobile\n *\n * @example\n * ```tsx\n * import { HStack } from '@yahoo/uds-mobile';\n *\n * <HStack gap=\"4\" alignItems=\"center\">\n * <Text>Item 1</Text>\n * <Text>Item 2</Text>\n * </HStack>\n * ```\n *\n * @usage\n * - Use for horizontal arrangements of elements\n * - Use gap prop for consistent spacing between children\n *\n * @see {@link VStack} for vertical layouts\n * @see {@link Box} for custom flex layouts\n */\nconst HStack = memo(function HStack({ gap, children, ref, ...props }: HStackProps) {\n return (\n <Box ref={ref} flexDirection=\"row\" rowGap={gap} columnGap={gap} {...props}>\n {children}\n </Box>\n );\n});\n\nHStack.displayName = 'HStack';\n\nexport { HStack, type HStackProps };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,MAAM,SAAS,KAAK,SAAS,OAAO,EAAE,KAAK,UAAU,KAAK,GAAG,SAAsB;AACjF,QACE,oBAAC;EAAS;EAAK,eAAc;EAAM,QAAQ;EAAK,WAAW;EAAK,GAAI;EACjE;GACG;EAER;AAEF,OAAO,cAAc"}
@@ -1,5 +1,6 @@
1
- /*! © 2026 Yahoo, Inc. UDS Mobile v1.3.0-beta.7 */
2
- const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
1
+ /*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
3
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
4
  const require_glyphMap = require('../icons/dist/glyphMap.cjs');
4
5
  const require_svgMap = require('../icons/dist/svgMap.cjs');
5
6
  const require_tokens = require('../icons/dist/tokens.cjs');
@@ -22,7 +23,7 @@ const DEFAULT_PROPS = {
22
23
  * Uses useUnistyles() for reactive theme access - isolated here so
23
24
  * glyph-based icons don't pay the hook overhead.
24
25
  */
25
- const MulticolorIcon = (0, react.memo)(function MulticolorIcon$1({ name, size = DEFAULT_PROPS.size, flexShrink = DEFAULT_PROPS.flexShrink, backgroundColor, dangerouslySetSize }) {
26
+ const MulticolorIcon = (0, react.memo)(function MulticolorIcon({ name, size = DEFAULT_PROPS.size, flexShrink = DEFAULT_PROPS.flexShrink, backgroundColor, dangerouslySetSize }) {
26
27
  const { rt } = (0, react_native_unistyles.useUnistyles)();
27
28
  const colorScheme = rt.themeName === "dark" ? "dark" : "light";
28
29
  const pixelSize = require_tokens.ICON_SIZE_MAP[size];
@@ -45,7 +46,7 @@ const MulticolorIcon = (0, react.memo)(function MulticolorIcon$1({ name, size =
45
46
  })
46
47
  });
47
48
  });
48
- const OutlineOrFillIcon = (0, react.memo)(function OutlineOrFillIcon$1({ name, size = DEFAULT_PROPS.size, color = DEFAULT_PROPS.color, variant = DEFAULT_PROPS.variant, backgroundColor, borderRadius, borderTopStartRadius, borderTopEndRadius, borderBottomStartRadius, borderBottomEndRadius, borderColor, borderStartColor, borderEndColor, borderTopColor, borderBottomColor, borderWidth, borderVerticalWidth, borderHorizontalWidth, borderStartWidth, borderEndWidth, borderTopWidth, borderBottomWidth, flexShrink = "0", spacingStart, spacingEnd, spacingTop, spacingBottom, spacingHorizontal, spacingVertical, spacing, offsetStart, offsetEnd, offsetTop, offsetBottom, offsetHorizontal, offsetVertical, offset, dangerouslySetColor, dangerouslySetSize, style, ref, ...props }) {
49
+ const OutlineOrFillIcon = (0, react.memo)(function OutlineOrFillIcon({ name, size = DEFAULT_PROPS.size, color = DEFAULT_PROPS.color, variant = DEFAULT_PROPS.variant, backgroundColor, borderRadius, borderTopStartRadius, borderTopEndRadius, borderBottomStartRadius, borderBottomEndRadius, borderColor, borderStartColor, borderEndColor, borderTopColor, borderBottomColor, borderWidth, borderVerticalWidth, borderHorizontalWidth, borderStartWidth, borderEndWidth, borderTopWidth, borderBottomWidth, flexShrink = "0", spacingStart, spacingEnd, spacingTop, spacingBottom, spacingHorizontal, spacingVertical, spacing, offsetStart, offsetEnd, offsetTop, offsetBottom, offsetHorizontal, offsetVertical, offset, dangerouslySetColor, dangerouslySetSize, style, ref, ...props }) {
49
50
  const pixelSize = require_tokens.ICON_SIZE_MAP[size];
50
51
  generated_styles.styles.useVariants({
51
52
  color,
@@ -118,12 +119,16 @@ const OutlineOrFillIcon = (0, react.memo)(function OutlineOrFillIcon$1({ name, s
118
119
  * Renders icons from the UDS icon library. Supports multiple variants
119
120
  * (outline, fill, multicolor) and sizes.
120
121
  *
122
+ * @category Display
123
+ * @platform mobile
124
+ *
121
125
  * @example
122
126
  * ```tsx
123
127
  * import { Icon } from '@yahoo/uds-mobile';
124
128
  *
125
129
  * <Icon name="ChevronRight" size="md" color="primary" />
126
130
  * <Icon name="Star" variant="fill" color="accent" />
131
+ * <Icon name="Yahoo" variant="multicolor" />
127
132
  * ```
128
133
  *
129
134
  * @usage
@@ -131,9 +136,15 @@ const OutlineOrFillIcon = (0, react.memo)(function OutlineOrFillIcon$1({ name, s
131
136
  * - Use variant prop for outline/fill/multicolor
132
137
  * - Use size prop for icon size (xs, sm, md, lg, xl)
133
138
  *
134
- * @see The {@link https://uds.build/docs/components/icon Icon Docs} for more info
139
+ * @accessibility
140
+ * - Sets `accessibilityRole="image"` automatically
141
+ * - Icon name is used as accessibility label
142
+ * - For decorative icons, set `accessibilityElementsHidden`
143
+ *
144
+ * @see {@link IconButton} for clickable icons
145
+ * @see {@link IconSlot} for flexible icon rendering in components
135
146
  */
136
- const Icon = (0, react.memo)(function Icon$1({ variant, ...props }) {
147
+ const Icon = (0, react.memo)(function Icon({ variant, ...props }) {
137
148
  if (variant === "multicolor") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MulticolorIcon, { ...props });
138
149
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(OutlineOrFillIcon, {
139
150
  variant,
@@ -2,7 +2,7 @@
2
2
  import { GlyphName } from "../icons/dist/glyphMap.cjs";
3
3
  import { SvgGlyphName } from "../icons/dist/svgMap.cjs";
4
4
  import { IconSize, IconVariant } from "../types/dist/index.cjs";
5
- import * as react12 from "react";
5
+ import * as react from "react";
6
6
  import { Ref } from "react";
7
7
  import { StyleProp, Text, TextProps, TextStyle } from "react-native";
8
8
  import { StyleProps } from "../../generated/styles";
@@ -10,6 +10,7 @@ import { StyleProps } from "../../generated/styles";
10
10
  //#region src/components/Icon.d.ts
11
11
  type IconName = GlyphName | SvgGlyphName;
12
12
  interface IconProps extends Omit<TextProps, 'style'> {
13
+ /** Ref to the underlying Text element */
13
14
  ref?: Ref<Text>;
14
15
  /** The icon name */
15
16
  name: IconName;
@@ -66,12 +67,16 @@ interface IconProps extends Omit<TextProps, 'style'> {
66
67
  * Renders icons from the UDS icon library. Supports multiple variants
67
68
  * (outline, fill, multicolor) and sizes.
68
69
  *
70
+ * @category Display
71
+ * @platform mobile
72
+ *
69
73
  * @example
70
74
  * ```tsx
71
75
  * import { Icon } from '@yahoo/uds-mobile';
72
76
  *
73
77
  * <Icon name="ChevronRight" size="md" color="primary" />
74
78
  * <Icon name="Star" variant="fill" color="accent" />
79
+ * <Icon name="Yahoo" variant="multicolor" />
75
80
  * ```
76
81
  *
77
82
  * @usage
@@ -79,9 +84,15 @@ interface IconProps extends Omit<TextProps, 'style'> {
79
84
  * - Use variant prop for outline/fill/multicolor
80
85
  * - Use size prop for icon size (xs, sm, md, lg, xl)
81
86
  *
82
- * @see The {@link https://uds.build/docs/components/icon Icon Docs} for more info
87
+ * @accessibility
88
+ * - Sets `accessibilityRole="image"` automatically
89
+ * - Icon name is used as accessibility label
90
+ * - For decorative icons, set `accessibilityElementsHidden`
91
+ *
92
+ * @see {@link IconButton} for clickable icons
93
+ * @see {@link IconSlot} for flexible icon rendering in components
83
94
  */
84
- declare const Icon: react12.NamedExoticComponent<IconProps>;
95
+ declare const Icon: react.NamedExoticComponent<IconProps>;
85
96
  declare const iconNames: readonly ["A11Y", "Accessible", "AccountRecover", "AccountRefresh", "AccountSwitchAlt", "AccountSwitcher", "AcousticGuitar", "Add", "AddBell", "AddCalendar", "AddCheckCircle", "AddCircle", "AddContactCard", "AddDocument", "AddFace", "AddFolder", "AddPaperPlane", "AddPeople", "AddQuestion", "AddSearch", "AddSquare", "AffiliateLink", "AirQuality", "Airplane", "AirplaneLanding", "AirplaneTakeOff", "AngledSquareOnSquare", "AnyFile", "AppSwitcher", "AquariusAstrology", "Archive", "AriesAstrology", "ArrowDown", "ArrowDownCircle", "ArrowLeft", "ArrowLineDown", "ArrowLineUp", "ArrowRight", "ArrowUp", "Article", "ArtisticGymnastics", "Ascender", "AudioFile", "Authenticator", "AutoDownload", "AutoSaveOffline", "AutoSaveSync", "AutoSaveUpload", "AutoSaveUploadFail", "AutoSaved", "BabyBottle", "BackTimeTen", "Badge", "Balance", "BallInWater", "Barometer", "BaseBallBat", "Baseball", "Basketball", "BasketballHoop", "BeachUmbrella", "Bed", "Bell", "Below", "BigDownArrow", "BigLeftArrow", "BigRightArrow", "BigRightStraightArrow", "BigUpArrow", "Bike", "Bingo", "Binoculars", "BlackJack", "Bold", "Bolt", "Bookmark", "BottomLine", "BowAndArrow", "BoxCircle", "BoxFront", "BoxOnBox", "BoxingGlove", "Browser", "BubbleZone", "Building", "BulletPointContainer", "BulletPoints", "Bullseye", "BusFront", "BusinessBag", "Cake", "Calendar", "CalendarClock", "CalendarConfirm", "CalendarFile", "CalendarICSFile", "CalendarRightArrow", "Camera", "CancerAstrology", "Canoe", "CapriconAstrology", "Car", "CardsCheck", "Cash", "CelebrityStar", "CenterAlignment", "ChatAi", "Check", "CheckBookmark", "CheckBox", "CheckCircle", "CheckDocuments", "CheckEnvelope", "CheckPeople", "CheckSpeechBubble", "CheckVoteBallot", "Checklist", "ChevronDown", "ChevronLeft", "ChevronLeftPeople", "ChevronRight", "ChevronRightPeople", "ChevronUp", "Circle", "ClearText", "Clipboard", "Clock", "Clone", "ClosedCaption", "Cloud", "CloudDay", "CloudNight", "Cocktails", "Coffee", "CoffeeTakeout", "Cog", "Coin", "CollapseColumn", "Command", "Compass", "ComputerChip", "Connection", "ConnectionScreen", "ContactBook", "ContactCard", "Convert", "ConvertAlt", "ConvertLeft", "ConvertRight", "Cookies", "Coupon", "CreditCard", "CreditCardPayment", "CrescentMoon", "Cricket", "Cross", "CrossCircle", "CrossEnvelope", "CrossPeople", "CrossShield", "Crossword", "Cycling", "DOCFile", "DailyFantasy", "DaisyFlower", "Dandelion", "DataBook", "DataCloud", "DataSilo", "DataStorage", "Debug", "DeleteTab", "DeliveryPackage", "Dense", "DenyCircle", "Descender", "Desktop", "DiagonalKey", "DiagonalLeftDown", "DiagonalLeftUp", "DiagonalRightDown", "DiagonalRightUp", "Diamond", "Dice", "Dining", "Direction", "DiscoBall", "Document", "DocumentImageRectangle", "DocumentImageSquare", "DocumentRectangle", "DollarCircleArrows", "DotEnvelope", "DotTwoRings", "DoubleBigLeftArrow", "DoubleChevronLeft", "DoubleChevronRight", "DownCurveArrow", "Download", "DownloadCircle", "DownloadComplete", "DownloadInProgressCircle", "DraftDocument", "DragVertical", "Dusk", "Easel", "Eclipse", "Edit", "EmailVerification", "Emails", "Embed", "EntertainmentTv", "Envelope", "Error", "ExpandArrowLeft", "ExpandArrowRight", "ExpandColumn", "Eye", "EyeSearch", "EyeShut", "FaceID", "FallLeaf", "Family", "FastForward", "FencingEpee", "FilmReel", "FilmRoll", "FingerPointLeftArrow", "FingerPointRightArrow", "FingerPointSelect", "FingerPrint", "Fire", "FirstAidKit", "FirstQuarter", "FiveCircles", "Flag", "FlameTorch", "Fog", "FogDay", "Folder", "Font", "Football", "FootballHelmet", "ForestTree", "FourBoxes", "FourCorners", "FourCornersMagnifyingGlass", "FourCornersMusicNote", "FourLinesSpread", "FourThreeRatio", "FullMoon", "GIF", "GeminiAstrology", "GiftBox", "GolfTee", "GraduationHat", "Graph", "Gymnastics", "HalfStar", "HalfSun", "HappyFace", "HazeDay", "HazeNight", "Heading2", "Heading3", "Headline1", "HeadlineDocumentSquare", "Headphone", "HeadphonesMic", "Heart", "HeartArrow", "HeartPulse", "HeavyRain", "HeavyRainDay", "HeavyRainLightning", "HeavyRainLightningDay", "HeavyRainLightningNight", "HeavyRainNight", "Help", "Highlighter", "History", "HockeyWithPuck", "Home", "HorseHeadBridle", "HotTub", "Hurricane", "Ice", "Id", "Image", "ImageFile", "ImageGallery", "Inbox", "InboxDownArrow", "InboxUpArrow", "IndentRight", "Infinity", "Info", "InstitutionalWesternBank", "Italics", "JoyfulFace", "JudoUniform", "Keyboard", "KeylineShapes", "Kick", "KnightChessPiece", "Laptop", "LaptopWithPhone", "Laurel", "LaurelLeft", "LaurelRight", "LayoutBottom", "LayoutDefault", "LayoutFourColumn", "LayoutGrid", "LayoutPerfectGrid", "LayoutRight", "LayoutThreeColumn", "LayoutThreeRows", "LayoutTwoColumn", "LeftAlign", "LeftCurveArrow", "LeftPageArrow", "LeoAstrology", "Letter", "LetterColor", "LetterSize", "LibraAstrology", "LifeRing", "Lightbulb", "Lightning", "LightningDay", "LightningNight", "Link", "LiquidDrop", "Live", "Livestream", "Location", "LocationCircle", "LocationMap", "Lock", "LogIn", "LogOut", "Lollipop", "LoveEnvelope", "LoyaltyCard", "MagicWand", "MagnifyingGlass", "Mahjong", "MakeupBeauty", "Mannequin", "Medal", "MedicineBottle", "MedicinePill", "Megaphone", "Microphone", "Microscope", "Minus", "MinusBox", "MinusCircle", "MinusPeople", "MinusSearch", "MmaGlove", "MmaRing", "MobileNumber", "MobilePhone", "More", "MoreVertical", "NeutralFace", "NewMoon", "Newsletter", "Night", "NineSixteenRatio", "NoBell", "NoConnectionScreen", "NoEye", "NoHeart", "NoImage", "NoPeople", "NoShield", "NoSmoking", "NoSquare", "NoStar", "NoVideoCamera", "NoWifi", "NotificationBell", "Null", "NumberedList", "OnTop", "OneOneRatio", "OpenBook", "OpenEnvelope", "OrderedList", "OutdentLeft", "PDF", "PPT", "PaperPlane", "PaperPlaneDiagonal", "Paperclip", "Paragraph", "ParagraphLeftIdent", "ParagraphRightIdent", "Parking", "ParkingSquare", "PassKey", "Password", "Pause", "Payments", "Payphone", "PayphoneFace", "Pencil", "PencilLines", "People", "Person", "PersonClimbing", "PersonShield", "Pets", "Phone", "PieChart", "Pin", "PingPong", "PiscesAstrology", "PlainText", "Play", "PlayCircle", "Pool", "PowerSwitch", "Preferences", "PreferencesAlt", "Printer", "Priority", "Profile", "Progress", "ProgressWithCheck", "Pulse", "PuzzlePiece", "QrCode", "QuestionBubble", "QuoteCircle", "QuoteSquare", "RAW", "RTF", "RTFOff", "RacingFlag", "Radar", "RadioCircle", "RainDay", "RainNight", "Receipt", "Receipts", "RedoPencil", "Refresh", "Restaurant", "RetailTag", "RightAlign", "RightCurveArrow", "RightPageArrow", "RobotHead", "Running", "SadFace", "SadderFace", "SagittariusAstrology", "SailBoat", "Satellite", "ScaleDown", "ScanQrCode", "Scissors", "ScorpioAstrology", "SearchConfirm", "SearchEnvelope", "SearchWorldWithLines", "SecurityKey", "SendToSelf", "Server", "SettingsAlt", "SettingsCogPeople", "Shapes", "Share", "Shield", "ShieldCheck", "ShieldSlash", "ShockedFace", "ShoppingBag", "ShoppingBasket", "ShoppingCart", "Shuttlecock", "SixteenNineRatio", "Skateboard", "SkipTimeTen", "Skull", "Slideshow", "SmallSquareInsideBigSquare", "SmartWatch", "SmileFace", "SmileFaceLife", "Sms", "SmsVerificationCode", "Sneaker", "SneakerAlt", "Snippet", "Snow", "SnowDay", "SnowNight", "Snowflake", "Soccer", "Solitaire", "SoundLow", "SoundOff", "SoundOn", "Spa", "Sparkle", "SparkleFootballBall", "SparkleTennisBall", "SpecialCharacter", "SpeechBubble", "SpeechBubbleStar", "SportsBook", "SportsSparkle", "SprinkleDay", "SprinkleNight", "Square", "Stadium", "Star", "StarArticle", "StarMedal", "StarTrophy", "StatePrivacyControls", "StockTrends", "Stopwatch", "Store", "Strikethrough", "Sun", "Sunrise", "Sunset", "SurfboardOnSand", "Swimming", "Sync", "Tab", "Tablet", "TaurusAstrology", "TechnicalRoute", "Television", "TennisBall", "TennisRacketBall", "ThirdQuarter", "ThreeCircles", "ThreeFourRatio", "ThreeLines", "ThreeLinesSpread", "ThumbsDown", "ThumbsUp", "Thumbtack", "ThumbtackDiagonal", "TimePaperPlane", "Tornado", "Trading", "TrafficSignRightTurn", "Trampoline", "Transactions", "Trash", "Trending", "TrendingCircle", "Trophy", "TruckRight", "Tshirt", "Tsunami", "Tub", "TwoArrowsDiagonalInwards", "TwoArrowsDiagonalOutwards", "TwoCorners", "TwoHorizontalRectangles", "TwoLinesContainer", "TwoMasks", "TwoRectangles", "TwoSparkles", "TwoSquares", "TwoThirdsColumn", "Underline", "Unlock", "UnorderedList", "UpCurveArrow", "UpDownChevron", "UpDownShortArrows", "UpFolder", "Upload", "Verification", "VideoCamera", "VideoFile", "VirgoAstrology", "Virus", "Volleyball", "Walking", "Wallet", "WaningCrescent", "WaningGibbous", "Warning", "WaxingCrescent", "WaxingGibbous", "Web", "Weights", "Wifi", "Wind", "WindCloud", "WindCloudDay", "WindCloudNight", "Wine", "WorldWithLines", "Wrench", "WrestlingHeadGear", "WritingAi", "XLSFile", "YEP", "ZIP"];
86
97
  declare const multicolorIconNames: readonly ["Cloud", "CloudDay", "CloudNight", "Cold", "Dreary", "Dusk", "Eclipse", "FirstQuarter", "Fog", "FogDay", "FogNight", "FullMoon", "HalfSun", "HazeDay", "HazeNight", "HeavyRain", "HeavyRainDay", "HeavyRainLightning", "HeavyRainLightningDay", "HeavyRainLightningNight", "HeavyRainNight", "Hot", "Hurricane", "Ice", "IntermittentCloudsNight", "IntermittentCloudsSunny", "Lightning", "LightningDay", "LightningNight", "MostlyNightFlurries", "Night", "PartlyCloudyNight", "PartlyFlurries", "PartlyNightFlurries", "PartlySunny", "Rain", "RainDay", "RainNight", "Sleet", "Snow", "SnowDay", "Snowflake", "SprinkleDay", "SprinkleNight", "Sun", "Sunrise", "Sunset", "ThirdQuarter", "Tornado", "WaningCrescent", "WaningGibbous", "WaxingCrescent", "WaxingGibbous", "Wind", "WindCloud", "WindCloudDay", "WindCloudNight"];
87
98
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.d.cts","names":[],"sources":["../../src/components/Icon.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;KAkCK,QAAA,GAAW,YAAY;UAElB,SAAA,SAAkB,KAAK;QACzB,IAAI;EAHP;EAEK,IAAA,EAGF,QAHY;EAAa;EACrB,IAAA,CAAA,EAIH,QAJG;EAAJ;EAEA,KAAA,CAAA,EAIE,UAJF,CAAA,OAAA,CAAA;EAEC;EAEC,OAAA,CAAA,EAEE,WAFF;EAEE,eAAA,CAAA,EAEQ,UAFR,CAAA,iBAAA,CAAA;EAEQ,YAAA,CAAA,EAEH,UAFG,CAAA,cAAA,CAAA;EAEH,oBAAA,CAAA,EACQ,UADR,CAAA,sBAAA,CAAA;EACQ,kBAAA,CAAA,EACF,UADE,CAAA,oBAAA,CAAA;EACF,uBAAA,CAAA,EACK,UADL,CAAA,yBAAA,CAAA;EACK,qBAAA,CAAA,EACF,UADE,CAAA,uBAAA,CAAA;EACF,WAAA,CAAA,EACV,UADU,CAAA,aAAA,CAAA;EACV,gBAAA,CAAA,EACK,UADL,CAAA,kBAAA,CAAA;EACK,cAAA,CAAA,EACF,UADE,CAAA,gBAAA,CAAA;EACF,cAAA,CAAA,EACA,UADA,CAAA,gBAAA,CAAA;EACA,iBAAA,CAAA,EACG,UADH,CAAA,mBAAA,CAAA;EACG,WAAA,CAAA,EACN,UADM,CAAA,aAAA,CAAA;EACN,mBAAA,CAAA,EACQ,UADR,CAAA,qBAAA,CAAA;EACQ,qBAAA,CAAA,EACE,UADF,CAAA,uBAAA,CAAA;EACE,gBAAA,CAAA,EACL,UADK,CAAA,kBAAA,CAAA;EACL,cAAA,CAAA,EACF,UADE,CAAA,gBAAA,CAAA;EACF,cAAA,CAAA,EACA,UADA,CAAA,gBAAA,CAAA;EACA,iBAAA,CAAA,EACG,UADH,CAAA,mBAAA,CAAA;EACG,UAAA,CAAA,EAEP,UAFO,CAAA,YAAA,CAAA;EAEP,YAAA,CAAA,EAEE,UAFF,CAAA,cAAA,CAAA;EAEE,UAAA,CAAA,EACF,UADE,CAAA,YAAA,CAAA;EACF,UAAA,CAAA,EACA,UADA,CAAA,YAAA,CAAA;EACA,aAAA,CAAA,EACG,UADH,CAAA,eAAA,CAAA;EACG,iBAAA,CAAA,EACI,UADJ,CAAA,mBAAA,CAAA;EACI,eAAA,CAAA,EACF,UADE,CAAA,iBAAA,CAAA;EACF,OAAA,CAAA,EACR,UADQ,CAAA,SAAA,CAAA;EACR,WAAA,CAAA,EAEI,UAFJ,CAAA,aAAA,CAAA;EAEI,SAAA,CAAA,EACF,UADE,CAAA,WAAA,CAAA;EACF,SAAA,CAAA,EACA,UADA,CAAA,WAAA,CAAA;EACA,YAAA,CAAA,EACG,UADH,CAAA,cAAA,CAAA;EACG,gBAAA,CAAA,EACI,UADJ,CAAA,kBAAA,CAAA;EACI,cAAA,CAAA,EACF,UADE,CAAA,gBAAA,CAAA;EACF,MAAA,CAAA,EACR,UADQ,CAAA,QAAA,CAAA;EACR;EAMS,mBAAA,CAAA,EAAA,MAAA;EAAV;EArDkB,kBAAA,CAAA,EAAA,MAAA;EAAI;EA0P1B,KAAA,CAAA,EArMI,SA4MR,CA5MkB,SAqMV,CAAA;AAaV;AACA;;;;;;;;;;;;;;;;;;;;;;cAdM,MAAI,OAAA,CAAA,qBAAA;cAaG;cACA"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+Md,IAAA,EAAI,KAAA,CAAA,oBAAA,CAAA,SAAA;AAAA,cAaG,SAAA;AAAA,cACA,mBAAA"}
@@ -2,7 +2,7 @@
2
2
  import { GlyphName } from "../icons/dist/glyphMap.mjs";
3
3
  import { SvgGlyphName } from "../icons/dist/svgMap.mjs";
4
4
  import { IconSize, IconVariant } from "../types/dist/index.mjs";
5
- import * as react9 from "react";
5
+ import * as react from "react";
6
6
  import { Ref } from "react";
7
7
  import { StyleProp, Text, TextProps, TextStyle } from "react-native";
8
8
  import { StyleProps } from "../../generated/styles";
@@ -10,6 +10,7 @@ import { StyleProps } from "../../generated/styles";
10
10
  //#region src/components/Icon.d.ts
11
11
  type IconName = GlyphName | SvgGlyphName;
12
12
  interface IconProps extends Omit<TextProps, 'style'> {
13
+ /** Ref to the underlying Text element */
13
14
  ref?: Ref<Text>;
14
15
  /** The icon name */
15
16
  name: IconName;
@@ -66,12 +67,16 @@ interface IconProps extends Omit<TextProps, 'style'> {
66
67
  * Renders icons from the UDS icon library. Supports multiple variants
67
68
  * (outline, fill, multicolor) and sizes.
68
69
  *
70
+ * @category Display
71
+ * @platform mobile
72
+ *
69
73
  * @example
70
74
  * ```tsx
71
75
  * import { Icon } from '@yahoo/uds-mobile';
72
76
  *
73
77
  * <Icon name="ChevronRight" size="md" color="primary" />
74
78
  * <Icon name="Star" variant="fill" color="accent" />
79
+ * <Icon name="Yahoo" variant="multicolor" />
75
80
  * ```
76
81
  *
77
82
  * @usage
@@ -79,9 +84,15 @@ interface IconProps extends Omit<TextProps, 'style'> {
79
84
  * - Use variant prop for outline/fill/multicolor
80
85
  * - Use size prop for icon size (xs, sm, md, lg, xl)
81
86
  *
82
- * @see The {@link https://uds.build/docs/components/icon Icon Docs} for more info
87
+ * @accessibility
88
+ * - Sets `accessibilityRole="image"` automatically
89
+ * - Icon name is used as accessibility label
90
+ * - For decorative icons, set `accessibilityElementsHidden`
91
+ *
92
+ * @see {@link IconButton} for clickable icons
93
+ * @see {@link IconSlot} for flexible icon rendering in components
83
94
  */
84
- declare const Icon: react9.NamedExoticComponent<IconProps>;
95
+ declare const Icon: react.NamedExoticComponent<IconProps>;
85
96
  declare const iconNames: readonly ["A11Y", "Accessible", "AccountRecover", "AccountRefresh", "AccountSwitchAlt", "AccountSwitcher", "AcousticGuitar", "Add", "AddBell", "AddCalendar", "AddCheckCircle", "AddCircle", "AddContactCard", "AddDocument", "AddFace", "AddFolder", "AddPaperPlane", "AddPeople", "AddQuestion", "AddSearch", "AddSquare", "AffiliateLink", "AirQuality", "Airplane", "AirplaneLanding", "AirplaneTakeOff", "AngledSquareOnSquare", "AnyFile", "AppSwitcher", "AquariusAstrology", "Archive", "AriesAstrology", "ArrowDown", "ArrowDownCircle", "ArrowLeft", "ArrowLineDown", "ArrowLineUp", "ArrowRight", "ArrowUp", "Article", "ArtisticGymnastics", "Ascender", "AudioFile", "Authenticator", "AutoDownload", "AutoSaveOffline", "AutoSaveSync", "AutoSaveUpload", "AutoSaveUploadFail", "AutoSaved", "BabyBottle", "BackTimeTen", "Badge", "Balance", "BallInWater", "Barometer", "BaseBallBat", "Baseball", "Basketball", "BasketballHoop", "BeachUmbrella", "Bed", "Bell", "Below", "BigDownArrow", "BigLeftArrow", "BigRightArrow", "BigRightStraightArrow", "BigUpArrow", "Bike", "Bingo", "Binoculars", "BlackJack", "Bold", "Bolt", "Bookmark", "BottomLine", "BowAndArrow", "BoxCircle", "BoxFront", "BoxOnBox", "BoxingGlove", "Browser", "BubbleZone", "Building", "BulletPointContainer", "BulletPoints", "Bullseye", "BusFront", "BusinessBag", "Cake", "Calendar", "CalendarClock", "CalendarConfirm", "CalendarFile", "CalendarICSFile", "CalendarRightArrow", "Camera", "CancerAstrology", "Canoe", "CapriconAstrology", "Car", "CardsCheck", "Cash", "CelebrityStar", "CenterAlignment", "ChatAi", "Check", "CheckBookmark", "CheckBox", "CheckCircle", "CheckDocuments", "CheckEnvelope", "CheckPeople", "CheckSpeechBubble", "CheckVoteBallot", "Checklist", "ChevronDown", "ChevronLeft", "ChevronLeftPeople", "ChevronRight", "ChevronRightPeople", "ChevronUp", "Circle", "ClearText", "Clipboard", "Clock", "Clone", "ClosedCaption", "Cloud", "CloudDay", "CloudNight", "Cocktails", "Coffee", "CoffeeTakeout", "Cog", "Coin", "CollapseColumn", "Command", "Compass", "ComputerChip", "Connection", "ConnectionScreen", "ContactBook", "ContactCard", "Convert", "ConvertAlt", "ConvertLeft", "ConvertRight", "Cookies", "Coupon", "CreditCard", "CreditCardPayment", "CrescentMoon", "Cricket", "Cross", "CrossCircle", "CrossEnvelope", "CrossPeople", "CrossShield", "Crossword", "Cycling", "DOCFile", "DailyFantasy", "DaisyFlower", "Dandelion", "DataBook", "DataCloud", "DataSilo", "DataStorage", "Debug", "DeleteTab", "DeliveryPackage", "Dense", "DenyCircle", "Descender", "Desktop", "DiagonalKey", "DiagonalLeftDown", "DiagonalLeftUp", "DiagonalRightDown", "DiagonalRightUp", "Diamond", "Dice", "Dining", "Direction", "DiscoBall", "Document", "DocumentImageRectangle", "DocumentImageSquare", "DocumentRectangle", "DollarCircleArrows", "DotEnvelope", "DotTwoRings", "DoubleBigLeftArrow", "DoubleChevronLeft", "DoubleChevronRight", "DownCurveArrow", "Download", "DownloadCircle", "DownloadComplete", "DownloadInProgressCircle", "DraftDocument", "DragVertical", "Dusk", "Easel", "Eclipse", "Edit", "EmailVerification", "Emails", "Embed", "EntertainmentTv", "Envelope", "Error", "ExpandArrowLeft", "ExpandArrowRight", "ExpandColumn", "Eye", "EyeSearch", "EyeShut", "FaceID", "FallLeaf", "Family", "FastForward", "FencingEpee", "FilmReel", "FilmRoll", "FingerPointLeftArrow", "FingerPointRightArrow", "FingerPointSelect", "FingerPrint", "Fire", "FirstAidKit", "FirstQuarter", "FiveCircles", "Flag", "FlameTorch", "Fog", "FogDay", "Folder", "Font", "Football", "FootballHelmet", "ForestTree", "FourBoxes", "FourCorners", "FourCornersMagnifyingGlass", "FourCornersMusicNote", "FourLinesSpread", "FourThreeRatio", "FullMoon", "GIF", "GeminiAstrology", "GiftBox", "GolfTee", "GraduationHat", "Graph", "Gymnastics", "HalfStar", "HalfSun", "HappyFace", "HazeDay", "HazeNight", "Heading2", "Heading3", "Headline1", "HeadlineDocumentSquare", "Headphone", "HeadphonesMic", "Heart", "HeartArrow", "HeartPulse", "HeavyRain", "HeavyRainDay", "HeavyRainLightning", "HeavyRainLightningDay", "HeavyRainLightningNight", "HeavyRainNight", "Help", "Highlighter", "History", "HockeyWithPuck", "Home", "HorseHeadBridle", "HotTub", "Hurricane", "Ice", "Id", "Image", "ImageFile", "ImageGallery", "Inbox", "InboxDownArrow", "InboxUpArrow", "IndentRight", "Infinity", "Info", "InstitutionalWesternBank", "Italics", "JoyfulFace", "JudoUniform", "Keyboard", "KeylineShapes", "Kick", "KnightChessPiece", "Laptop", "LaptopWithPhone", "Laurel", "LaurelLeft", "LaurelRight", "LayoutBottom", "LayoutDefault", "LayoutFourColumn", "LayoutGrid", "LayoutPerfectGrid", "LayoutRight", "LayoutThreeColumn", "LayoutThreeRows", "LayoutTwoColumn", "LeftAlign", "LeftCurveArrow", "LeftPageArrow", "LeoAstrology", "Letter", "LetterColor", "LetterSize", "LibraAstrology", "LifeRing", "Lightbulb", "Lightning", "LightningDay", "LightningNight", "Link", "LiquidDrop", "Live", "Livestream", "Location", "LocationCircle", "LocationMap", "Lock", "LogIn", "LogOut", "Lollipop", "LoveEnvelope", "LoyaltyCard", "MagicWand", "MagnifyingGlass", "Mahjong", "MakeupBeauty", "Mannequin", "Medal", "MedicineBottle", "MedicinePill", "Megaphone", "Microphone", "Microscope", "Minus", "MinusBox", "MinusCircle", "MinusPeople", "MinusSearch", "MmaGlove", "MmaRing", "MobileNumber", "MobilePhone", "More", "MoreVertical", "NeutralFace", "NewMoon", "Newsletter", "Night", "NineSixteenRatio", "NoBell", "NoConnectionScreen", "NoEye", "NoHeart", "NoImage", "NoPeople", "NoShield", "NoSmoking", "NoSquare", "NoStar", "NoVideoCamera", "NoWifi", "NotificationBell", "Null", "NumberedList", "OnTop", "OneOneRatio", "OpenBook", "OpenEnvelope", "OrderedList", "OutdentLeft", "PDF", "PPT", "PaperPlane", "PaperPlaneDiagonal", "Paperclip", "Paragraph", "ParagraphLeftIdent", "ParagraphRightIdent", "Parking", "ParkingSquare", "PassKey", "Password", "Pause", "Payments", "Payphone", "PayphoneFace", "Pencil", "PencilLines", "People", "Person", "PersonClimbing", "PersonShield", "Pets", "Phone", "PieChart", "Pin", "PingPong", "PiscesAstrology", "PlainText", "Play", "PlayCircle", "Pool", "PowerSwitch", "Preferences", "PreferencesAlt", "Printer", "Priority", "Profile", "Progress", "ProgressWithCheck", "Pulse", "PuzzlePiece", "QrCode", "QuestionBubble", "QuoteCircle", "QuoteSquare", "RAW", "RTF", "RTFOff", "RacingFlag", "Radar", "RadioCircle", "RainDay", "RainNight", "Receipt", "Receipts", "RedoPencil", "Refresh", "Restaurant", "RetailTag", "RightAlign", "RightCurveArrow", "RightPageArrow", "RobotHead", "Running", "SadFace", "SadderFace", "SagittariusAstrology", "SailBoat", "Satellite", "ScaleDown", "ScanQrCode", "Scissors", "ScorpioAstrology", "SearchConfirm", "SearchEnvelope", "SearchWorldWithLines", "SecurityKey", "SendToSelf", "Server", "SettingsAlt", "SettingsCogPeople", "Shapes", "Share", "Shield", "ShieldCheck", "ShieldSlash", "ShockedFace", "ShoppingBag", "ShoppingBasket", "ShoppingCart", "Shuttlecock", "SixteenNineRatio", "Skateboard", "SkipTimeTen", "Skull", "Slideshow", "SmallSquareInsideBigSquare", "SmartWatch", "SmileFace", "SmileFaceLife", "Sms", "SmsVerificationCode", "Sneaker", "SneakerAlt", "Snippet", "Snow", "SnowDay", "SnowNight", "Snowflake", "Soccer", "Solitaire", "SoundLow", "SoundOff", "SoundOn", "Spa", "Sparkle", "SparkleFootballBall", "SparkleTennisBall", "SpecialCharacter", "SpeechBubble", "SpeechBubbleStar", "SportsBook", "SportsSparkle", "SprinkleDay", "SprinkleNight", "Square", "Stadium", "Star", "StarArticle", "StarMedal", "StarTrophy", "StatePrivacyControls", "StockTrends", "Stopwatch", "Store", "Strikethrough", "Sun", "Sunrise", "Sunset", "SurfboardOnSand", "Swimming", "Sync", "Tab", "Tablet", "TaurusAstrology", "TechnicalRoute", "Television", "TennisBall", "TennisRacketBall", "ThirdQuarter", "ThreeCircles", "ThreeFourRatio", "ThreeLines", "ThreeLinesSpread", "ThumbsDown", "ThumbsUp", "Thumbtack", "ThumbtackDiagonal", "TimePaperPlane", "Tornado", "Trading", "TrafficSignRightTurn", "Trampoline", "Transactions", "Trash", "Trending", "TrendingCircle", "Trophy", "TruckRight", "Tshirt", "Tsunami", "Tub", "TwoArrowsDiagonalInwards", "TwoArrowsDiagonalOutwards", "TwoCorners", "TwoHorizontalRectangles", "TwoLinesContainer", "TwoMasks", "TwoRectangles", "TwoSparkles", "TwoSquares", "TwoThirdsColumn", "Underline", "Unlock", "UnorderedList", "UpCurveArrow", "UpDownChevron", "UpDownShortArrows", "UpFolder", "Upload", "Verification", "VideoCamera", "VideoFile", "VirgoAstrology", "Virus", "Volleyball", "Walking", "Wallet", "WaningCrescent", "WaningGibbous", "Warning", "WaxingCrescent", "WaxingGibbous", "Web", "Weights", "Wifi", "Wind", "WindCloud", "WindCloudDay", "WindCloudNight", "Wine", "WorldWithLines", "Wrench", "WrestlingHeadGear", "WritingAi", "XLSFile", "YEP", "ZIP"];
86
97
  declare const multicolorIconNames: readonly ["Cloud", "CloudDay", "CloudNight", "Cold", "Dreary", "Dusk", "Eclipse", "FirstQuarter", "Fog", "FogDay", "FogNight", "FullMoon", "HalfSun", "HazeDay", "HazeNight", "HeavyRain", "HeavyRainDay", "HeavyRainLightning", "HeavyRainLightningDay", "HeavyRainLightningNight", "HeavyRainNight", "Hot", "Hurricane", "Ice", "IntermittentCloudsNight", "IntermittentCloudsSunny", "Lightning", "LightningDay", "LightningNight", "MostlyNightFlurries", "Night", "PartlyCloudyNight", "PartlyFlurries", "PartlyNightFlurries", "PartlySunny", "Rain", "RainDay", "RainNight", "Sleet", "Snow", "SnowDay", "Snowflake", "SprinkleDay", "SprinkleNight", "Sun", "Sunrise", "Sunset", "ThirdQuarter", "Tornado", "WaningCrescent", "WaningGibbous", "WaxingCrescent", "WaxingGibbous", "Wind", "WindCloud", "WindCloudDay", "WindCloudNight"];
87
98
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.d.mts","names":[],"sources":["../../src/components/Icon.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;KAkCK,QAAA,GAAW,YAAY;UAElB,SAAA,SAAkB,KAAK;QACzB,IAAI;EAHP;EAEK,IAAA,EAGF,QAHY;EAAa;EACrB,IAAA,CAAA,EAIH,QAJG;EAAJ;EAEA,KAAA,CAAA,EAIE,UAJF,CAAA,OAAA,CAAA;EAEC;EAEC,OAAA,CAAA,EAEE,WAFF;EAEE,eAAA,CAAA,EAEQ,UAFR,CAAA,iBAAA,CAAA;EAEQ,YAAA,CAAA,EAEH,UAFG,CAAA,cAAA,CAAA;EAEH,oBAAA,CAAA,EACQ,UADR,CAAA,sBAAA,CAAA;EACQ,kBAAA,CAAA,EACF,UADE,CAAA,oBAAA,CAAA;EACF,uBAAA,CAAA,EACK,UADL,CAAA,yBAAA,CAAA;EACK,qBAAA,CAAA,EACF,UADE,CAAA,uBAAA,CAAA;EACF,WAAA,CAAA,EACV,UADU,CAAA,aAAA,CAAA;EACV,gBAAA,CAAA,EACK,UADL,CAAA,kBAAA,CAAA;EACK,cAAA,CAAA,EACF,UADE,CAAA,gBAAA,CAAA;EACF,cAAA,CAAA,EACA,UADA,CAAA,gBAAA,CAAA;EACA,iBAAA,CAAA,EACG,UADH,CAAA,mBAAA,CAAA;EACG,WAAA,CAAA,EACN,UADM,CAAA,aAAA,CAAA;EACN,mBAAA,CAAA,EACQ,UADR,CAAA,qBAAA,CAAA;EACQ,qBAAA,CAAA,EACE,UADF,CAAA,uBAAA,CAAA;EACE,gBAAA,CAAA,EACL,UADK,CAAA,kBAAA,CAAA;EACL,cAAA,CAAA,EACF,UADE,CAAA,gBAAA,CAAA;EACF,cAAA,CAAA,EACA,UADA,CAAA,gBAAA,CAAA;EACA,iBAAA,CAAA,EACG,UADH,CAAA,mBAAA,CAAA;EACG,UAAA,CAAA,EAEP,UAFO,CAAA,YAAA,CAAA;EAEP,YAAA,CAAA,EAEE,UAFF,CAAA,cAAA,CAAA;EAEE,UAAA,CAAA,EACF,UADE,CAAA,YAAA,CAAA;EACF,UAAA,CAAA,EACA,UADA,CAAA,YAAA,CAAA;EACA,aAAA,CAAA,EACG,UADH,CAAA,eAAA,CAAA;EACG,iBAAA,CAAA,EACI,UADJ,CAAA,mBAAA,CAAA;EACI,eAAA,CAAA,EACF,UADE,CAAA,iBAAA,CAAA;EACF,OAAA,CAAA,EACR,UADQ,CAAA,SAAA,CAAA;EACR,WAAA,CAAA,EAEI,UAFJ,CAAA,aAAA,CAAA;EAEI,SAAA,CAAA,EACF,UADE,CAAA,WAAA,CAAA;EACF,SAAA,CAAA,EACA,UADA,CAAA,WAAA,CAAA;EACA,YAAA,CAAA,EACG,UADH,CAAA,cAAA,CAAA;EACG,gBAAA,CAAA,EACI,UADJ,CAAA,kBAAA,CAAA;EACI,cAAA,CAAA,EACF,UADE,CAAA,gBAAA,CAAA;EACF,MAAA,CAAA,EACR,UADQ,CAAA,QAAA,CAAA;EACR;EAMS,mBAAA,CAAA,EAAA,MAAA;EAAV;EArDkB,kBAAA,CAAA,EAAA,MAAA;EAAI;EA0P1B,KAAA,CAAA,EArMI,SA4MR,CA5MkB,SAqMV,CAAA;AAaV;AACA;;;;;;;;;;;;;;;;;;;;;;cAdM,MAAI,MAAA,CAAA,qBAAA;cAaG;cACA"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+Md,IAAA,EAAI,KAAA,CAAA,oBAAA,CAAA,SAAA;AAAA,cAaG,SAAA;AAAA,cACA,mBAAA"}
@@ -1,4 +1,4 @@
1
- /*! © 2026 Yahoo, Inc. UDS Mobile v1.3.0-beta.7 */
1
+ /*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
2
2
  import { glyphMap, glyphNames } from "../icons/dist/glyphMap.mjs";
3
3
  import { svgGlyphNames, svgMap } from "../icons/dist/svgMap.mjs";
4
4
  import { ICON_SIZE_MAP } from "../icons/dist/tokens.mjs";
@@ -21,7 +21,7 @@ const DEFAULT_PROPS = {
21
21
  * Uses useUnistyles() for reactive theme access - isolated here so
22
22
  * glyph-based icons don't pay the hook overhead.
23
23
  */
24
- const MulticolorIcon = memo(function MulticolorIcon$1({ name, size = DEFAULT_PROPS.size, flexShrink = DEFAULT_PROPS.flexShrink, backgroundColor, dangerouslySetSize }) {
24
+ const MulticolorIcon = memo(function MulticolorIcon({ name, size = DEFAULT_PROPS.size, flexShrink = DEFAULT_PROPS.flexShrink, backgroundColor, dangerouslySetSize }) {
25
25
  const { rt } = useUnistyles();
26
26
  const colorScheme = rt.themeName === "dark" ? "dark" : "light";
27
27
  const pixelSize = ICON_SIZE_MAP[size];
@@ -44,7 +44,7 @@ const MulticolorIcon = memo(function MulticolorIcon$1({ name, size = DEFAULT_PRO
44
44
  })
45
45
  });
46
46
  });
47
- const OutlineOrFillIcon = memo(function OutlineOrFillIcon$1({ name, size = DEFAULT_PROPS.size, color = DEFAULT_PROPS.color, variant = DEFAULT_PROPS.variant, backgroundColor, borderRadius, borderTopStartRadius, borderTopEndRadius, borderBottomStartRadius, borderBottomEndRadius, borderColor, borderStartColor, borderEndColor, borderTopColor, borderBottomColor, borderWidth, borderVerticalWidth, borderHorizontalWidth, borderStartWidth, borderEndWidth, borderTopWidth, borderBottomWidth, flexShrink = "0", spacingStart, spacingEnd, spacingTop, spacingBottom, spacingHorizontal, spacingVertical, spacing, offsetStart, offsetEnd, offsetTop, offsetBottom, offsetHorizontal, offsetVertical, offset, dangerouslySetColor, dangerouslySetSize, style, ref, ...props }) {
47
+ const OutlineOrFillIcon = memo(function OutlineOrFillIcon({ name, size = DEFAULT_PROPS.size, color = DEFAULT_PROPS.color, variant = DEFAULT_PROPS.variant, backgroundColor, borderRadius, borderTopStartRadius, borderTopEndRadius, borderBottomStartRadius, borderBottomEndRadius, borderColor, borderStartColor, borderEndColor, borderTopColor, borderBottomColor, borderWidth, borderVerticalWidth, borderHorizontalWidth, borderStartWidth, borderEndWidth, borderTopWidth, borderBottomWidth, flexShrink = "0", spacingStart, spacingEnd, spacingTop, spacingBottom, spacingHorizontal, spacingVertical, spacing, offsetStart, offsetEnd, offsetTop, offsetBottom, offsetHorizontal, offsetVertical, offset, dangerouslySetColor, dangerouslySetSize, style, ref, ...props }) {
48
48
  const pixelSize = ICON_SIZE_MAP[size];
49
49
  styles.useVariants({
50
50
  color,
@@ -117,12 +117,16 @@ const OutlineOrFillIcon = memo(function OutlineOrFillIcon$1({ name, size = DEFAU
117
117
  * Renders icons from the UDS icon library. Supports multiple variants
118
118
  * (outline, fill, multicolor) and sizes.
119
119
  *
120
+ * @category Display
121
+ * @platform mobile
122
+ *
120
123
  * @example
121
124
  * ```tsx
122
125
  * import { Icon } from '@yahoo/uds-mobile';
123
126
  *
124
127
  * <Icon name="ChevronRight" size="md" color="primary" />
125
128
  * <Icon name="Star" variant="fill" color="accent" />
129
+ * <Icon name="Yahoo" variant="multicolor" />
126
130
  * ```
127
131
  *
128
132
  * @usage
@@ -130,9 +134,15 @@ const OutlineOrFillIcon = memo(function OutlineOrFillIcon$1({ name, size = DEFAU
130
134
  * - Use variant prop for outline/fill/multicolor
131
135
  * - Use size prop for icon size (xs, sm, md, lg, xl)
132
136
  *
133
- * @see The {@link https://uds.build/docs/components/icon Icon Docs} for more info
137
+ * @accessibility
138
+ * - Sets `accessibilityRole="image"` automatically
139
+ * - Icon name is used as accessibility label
140
+ * - For decorative icons, set `accessibilityElementsHidden`
141
+ *
142
+ * @see {@link IconButton} for clickable icons
143
+ * @see {@link IconSlot} for flexible icon rendering in components
134
144
  */
135
- const Icon = memo(function Icon$1({ variant, ...props }) {
145
+ const Icon = memo(function Icon({ variant, ...props }) {
136
146
  if (variant === "multicolor") return /* @__PURE__ */ jsx(MulticolorIcon, { ...props });
137
147
  return /* @__PURE__ */ jsx(OutlineOrFillIcon, {
138
148
  variant,
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.mjs","names":["MulticolorIcon","OutlineOrFillIcon","Icon"],"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?: 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 * @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 * ```\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 * @see The {@link https://uds.build/docs/components/icon Icon Docs} for more info\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;;;;;;AAyED,MAAM,iBAAiB,KAAK,SAASA,iBAAe,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,SAASC,oBAAkB,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;;;;;;;;;;;;;;;;;;;;;;;AAwBF,MAAM,OAAO,KAAK,SAASC,OAAK,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 },\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,5 +1,6 @@
1
- /*! © 2026 Yahoo, Inc. UDS Mobile v1.3.0-beta.7 */
2
- const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
1
+ /*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
3
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
4
  const require_index = require('../motion-tokens/dist/index.cjs');
4
5
  const require_motion = require('../motion.cjs');
5
6
  const require_components_Icon = require('./Icon.cjs');
@@ -23,8 +24,13 @@ function interpolateShadowAlpha(shadow, alpha) {
23
24
  /**
24
25
  * **An icon button element that can be used to trigger an action**
25
26
  *
26
- * Features animated scale effect on press and smooth color transitions
27
- * matching the web UDS IconButton behavior.
27
+ * @description
28
+ * An icon-only button for actions where space is limited. Features animated
29
+ * scale effect on press and smooth color transitions matching the web UDS
30
+ * IconButton behavior.
31
+ *
32
+ * @category Interactive
33
+ * @platform mobile
28
34
  *
29
35
  * @example
30
36
  * ```tsx
@@ -34,8 +40,21 @@ function interpolateShadowAlpha(shadow, alpha) {
34
40
  * <IconButton name="Close" variant="secondary" size="sm" />
35
41
  * <IconButton name="Settings" loading />
36
42
  * ```
43
+ *
44
+ * @usage
45
+ * - Use for toolbar actions
46
+ * - Use for closing modals/dialogs
47
+ * - Always provide accessibilityLabel for screen readers
48
+ *
49
+ * @accessibility
50
+ * - Sets `accessibilityRole="button"` automatically
51
+ * - Announces loading state to screen readers
52
+ * - **Always** provide `accessibilityLabel` since there's no visible text
53
+ *
54
+ * @see {@link Button} for buttons with text labels
55
+ * @see {@link Icon} for non-interactive icons
37
56
  */
38
- const IconButton = (0, react.memo)(function IconButton$1({ name, variant = "primary", size = "md", iconVariant = "outline", loading, disabled, style, accessibilityLabel, accessibilityHint, disableEffects = false, onPressIn, onPressOut, ref, ...props }) {
57
+ const IconButton = (0, react.memo)(function IconButton({ name, variant = "primary", size = "md", iconVariant = "outline", loading, disabled, style, accessibilityLabel, accessibilityHint, disableEffects = false, onPressIn, onPressOut, ref, ...props }) {
39
58
  const isDisabled = disabled || loading;
40
59
  const shouldAnimate = !disableEffects && !isDisabled;
41
60
  const [pressed, setPressed] = (0, react.useState)(false);
@@ -2,33 +2,40 @@
2
2
  import { ButtonVariantFlat, IconButtonSize, IconVariant } from "../types/dist/index.cjs";
3
3
  import { IconName } from "./Icon.cjs";
4
4
  import { PressableProps as PressableProps$1 } from "./Pressable.cjs";
5
- import * as react17 from "react";
5
+ import * as react from "react";
6
6
  import { Ref } from "react";
7
7
  import { View } from "react-native";
8
8
 
9
9
  //#region src/components/IconButton.d.ts
10
10
  interface IconButtonProps extends Omit<PressableProps$1, 'children'> {
11
- /** Icon to render from the icons package. */
11
+ /** Icon to render from the icons package */
12
12
  name: IconName;
13
- /** @default 'primary' */
13
+ /** The visual style variant @default 'primary' */
14
14
  variant?: ButtonVariantFlat;
15
- /** @default 'md' */
15
+ /** The size of the button @default 'md' */
16
16
  size?: IconButtonSize;
17
- /** @default 'outline' */
17
+ /** The icon style variant @default 'outline' */
18
18
  iconVariant?: IconVariant;
19
+ /** Shows a loading spinner and disables the button */
19
20
  loading?: boolean;
20
21
  /**
21
22
  * Disable motion effects (scale on press, icon animations)
22
23
  * @default false
23
24
  */
24
25
  disableEffects?: boolean;
26
+ /** Ref to the underlying View */
25
27
  ref?: Ref<View>;
26
28
  }
27
29
  /**
28
30
  * **An icon button element that can be used to trigger an action**
29
31
  *
30
- * Features animated scale effect on press and smooth color transitions
31
- * matching the web UDS IconButton behavior.
32
+ * @description
33
+ * An icon-only button for actions where space is limited. Features animated
34
+ * scale effect on press and smooth color transitions matching the web UDS
35
+ * IconButton behavior.
36
+ *
37
+ * @category Interactive
38
+ * @platform mobile
32
39
  *
33
40
  * @example
34
41
  * ```tsx
@@ -38,8 +45,21 @@ interface IconButtonProps extends Omit<PressableProps$1, 'children'> {
38
45
  * <IconButton name="Close" variant="secondary" size="sm" />
39
46
  * <IconButton name="Settings" loading />
40
47
  * ```
48
+ *
49
+ * @usage
50
+ * - Use for toolbar actions
51
+ * - Use for closing modals/dialogs
52
+ * - Always provide accessibilityLabel for screen readers
53
+ *
54
+ * @accessibility
55
+ * - Sets `accessibilityRole="button"` automatically
56
+ * - Announces loading state to screen readers
57
+ * - **Always** provide `accessibilityLabel` since there's no visible text
58
+ *
59
+ * @see {@link Button} for buttons with text labels
60
+ * @see {@link Icon} for non-interactive icons
41
61
  */
42
- declare const IconButton: react17.NamedExoticComponent<IconButtonProps>;
62
+ declare const IconButton: react.NamedExoticComponent<IconButtonProps>;
43
63
  //#endregion
44
64
  export { IconButton, type IconButtonProps };
45
65
  //# sourceMappingURL=IconButton.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.d.cts","names":[],"sources":["../../src/components/IconButton.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;UA6CU,eAAA,SAAwB,KAAK;;QAE/B;EAFE;EAA6B,OAAA,CAAA,EAI3B,iBAJ2B;EAE/B;EAEI,IAAA,CAAA,EAEH,cAFG;EAEH;EAEO,WAAA,CAAA,EAAA,WAAA;EAOJ,OAAA,CAAA,EAAA,OAAA;EAAJ;;;AAf8B;;QAe9B,IAAI;;;;;;;;;;;;;;;;;cAsBN,YAAU,OAAA,CAAA,qBAAA"}
1
+ {"version":3,"file":"IconButton.d.cts","names":[],"sources":["../../src/components/IconButton.tsx"],"mappings":";;;;;;;;;UA6CU,eAAA,SAAwB,IAAA,CAAK,gBAAA;;EAErC,IAAA,EAAM,QAAA;EAFE;EAIR,OAAA,GAAU,iBAAA;;EAEV,IAAA,GAAO,cAAA;EAJD;EAMN,WAAA,GAAc,WAAA;EAFP;EAIP,OAAA;EAOU;;;;EAFV,cAAA;EAfgC;EAiBhC,GAAA,GAAM,GAAA,CAAI,IAAA;AAAA;;;;;;;;;;;;;;;AAAI;;;;;;;;;;;;;;;;;;;cAwCV,UAAA,EAAU,KAAA,CAAA,oBAAA,CAAA,eAAA"}