@metamask-previews/design-system-react-native 0.11.0-preview.9c677c4 → 0.13.0-preview.69c659c

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 (237) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/dist/components/AvatarNetwork/AvatarNetwork.types.cjs.map +1 -1
  3. package/dist/components/AvatarNetwork/AvatarNetwork.types.d.cts +7 -9
  4. package/dist/components/AvatarNetwork/AvatarNetwork.types.d.cts.map +1 -1
  5. package/dist/components/AvatarNetwork/AvatarNetwork.types.d.mts +7 -9
  6. package/dist/components/AvatarNetwork/AvatarNetwork.types.d.mts.map +1 -1
  7. package/dist/components/AvatarNetwork/AvatarNetwork.types.mjs.map +1 -1
  8. package/dist/components/BadgeWrapper/BadgeWrapper.cjs +8 -8
  9. package/dist/components/BadgeWrapper/BadgeWrapper.cjs.map +1 -1
  10. package/dist/components/BadgeWrapper/BadgeWrapper.d.cts.map +1 -1
  11. package/dist/components/BadgeWrapper/BadgeWrapper.d.mts.map +1 -1
  12. package/dist/components/BadgeWrapper/BadgeWrapper.mjs +1 -1
  13. package/dist/components/BadgeWrapper/BadgeWrapper.mjs.map +1 -1
  14. package/dist/components/BadgeWrapper/BadgeWrapper.types.cjs.map +1 -1
  15. package/dist/components/BadgeWrapper/BadgeWrapper.types.d.cts +4 -51
  16. package/dist/components/BadgeWrapper/BadgeWrapper.types.d.cts.map +1 -1
  17. package/dist/components/BadgeWrapper/BadgeWrapper.types.d.mts +4 -51
  18. package/dist/components/BadgeWrapper/BadgeWrapper.types.d.mts.map +1 -1
  19. package/dist/components/BadgeWrapper/BadgeWrapper.types.mjs.map +1 -1
  20. package/dist/components/BadgeWrapper/index.cjs +3 -3
  21. package/dist/components/BadgeWrapper/index.cjs.map +1 -1
  22. package/dist/components/BadgeWrapper/index.d.cts +1 -2
  23. package/dist/components/BadgeWrapper/index.d.cts.map +1 -1
  24. package/dist/components/BadgeWrapper/index.d.mts +1 -2
  25. package/dist/components/BadgeWrapper/index.d.mts.map +1 -1
  26. package/dist/components/BadgeWrapper/index.mjs +1 -1
  27. package/dist/components/BadgeWrapper/index.mjs.map +1 -1
  28. package/dist/components/BannerAlert/BannerAlert.constants.cjs +8 -8
  29. package/dist/components/BannerAlert/BannerAlert.constants.cjs.map +1 -1
  30. package/dist/components/BannerAlert/BannerAlert.constants.d.cts +2 -2
  31. package/dist/components/BannerAlert/BannerAlert.constants.d.cts.map +1 -1
  32. package/dist/components/BannerAlert/BannerAlert.constants.d.mts +2 -2
  33. package/dist/components/BannerAlert/BannerAlert.constants.d.mts.map +1 -1
  34. package/dist/components/BannerAlert/BannerAlert.constants.mjs +2 -2
  35. package/dist/components/BannerAlert/BannerAlert.constants.mjs.map +1 -1
  36. package/dist/components/BannerBase/BannerBase.cjs +2 -1
  37. package/dist/components/BannerBase/BannerBase.cjs.map +1 -1
  38. package/dist/components/BannerBase/BannerBase.d.cts.map +1 -1
  39. package/dist/components/BannerBase/BannerBase.d.mts.map +1 -1
  40. package/dist/components/BannerBase/BannerBase.mjs +2 -1
  41. package/dist/components/BannerBase/BannerBase.mjs.map +1 -1
  42. package/dist/components/BottomSheet/BottomSheet.cjs +2 -2
  43. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
  44. package/dist/components/BottomSheet/BottomSheet.d.cts +30 -0
  45. package/dist/components/BottomSheet/BottomSheet.d.cts.map +1 -1
  46. package/dist/components/BottomSheet/BottomSheet.d.mts +30 -0
  47. package/dist/components/BottomSheet/BottomSheet.d.mts.map +1 -1
  48. package/dist/components/BottomSheet/BottomSheet.mjs +2 -2
  49. package/dist/components/BottomSheet/BottomSheet.mjs.map +1 -1
  50. package/dist/components/BottomSheetDialog/BottomSheetDialog.cjs +2 -2
  51. package/dist/components/BottomSheetDialog/BottomSheetDialog.cjs.map +1 -1
  52. package/dist/components/BottomSheetDialog/BottomSheetDialog.d.cts +30 -0
  53. package/dist/components/BottomSheetDialog/BottomSheetDialog.d.cts.map +1 -1
  54. package/dist/components/BottomSheetDialog/BottomSheetDialog.d.mts +30 -0
  55. package/dist/components/BottomSheetDialog/BottomSheetDialog.d.mts.map +1 -1
  56. package/dist/components/BottomSheetDialog/BottomSheetDialog.mjs +2 -2
  57. package/dist/components/BottomSheetDialog/BottomSheetDialog.mjs.map +1 -1
  58. package/dist/components/BottomSheetDialog/BottomSheetDialog.types.cjs.map +1 -1
  59. package/dist/components/BottomSheetDialog/BottomSheetDialog.types.d.cts +7 -0
  60. package/dist/components/BottomSheetDialog/BottomSheetDialog.types.d.cts.map +1 -1
  61. package/dist/components/BottomSheetDialog/BottomSheetDialog.types.d.mts +7 -0
  62. package/dist/components/BottomSheetDialog/BottomSheetDialog.types.d.mts.map +1 -1
  63. package/dist/components/BottomSheetDialog/BottomSheetDialog.types.mjs.map +1 -1
  64. package/dist/components/BottomSheetHeader/BottomSheetHeader.cjs +2 -2
  65. package/dist/components/BottomSheetHeader/BottomSheetHeader.cjs.map +1 -1
  66. package/dist/components/BottomSheetHeader/BottomSheetHeader.mjs +2 -2
  67. package/dist/components/BottomSheetHeader/BottomSheetHeader.mjs.map +1 -1
  68. package/dist/components/Box/Box.constants.cjs.map +1 -1
  69. package/dist/components/Box/Box.constants.d.cts +1 -1
  70. package/dist/components/Box/Box.constants.d.cts.map +1 -1
  71. package/dist/components/Box/Box.constants.d.mts +1 -1
  72. package/dist/components/Box/Box.constants.d.mts.map +1 -1
  73. package/dist/components/Box/Box.constants.mjs.map +1 -1
  74. package/dist/components/Box/Box.types.cjs.map +1 -1
  75. package/dist/components/Box/Box.types.d.cts +3 -107
  76. package/dist/components/Box/Box.types.d.cts.map +1 -1
  77. package/dist/components/Box/Box.types.d.mts +3 -107
  78. package/dist/components/Box/Box.types.d.mts.map +1 -1
  79. package/dist/components/Box/Box.types.mjs.map +1 -1
  80. package/dist/components/Box/index.cjs +7 -7
  81. package/dist/components/Box/index.cjs.map +1 -1
  82. package/dist/components/Box/index.d.cts +1 -2
  83. package/dist/components/Box/index.d.cts.map +1 -1
  84. package/dist/components/Box/index.d.mts +1 -2
  85. package/dist/components/Box/index.d.mts.map +1 -1
  86. package/dist/components/Box/index.mjs +1 -1
  87. package/dist/components/Box/index.mjs.map +1 -1
  88. package/dist/components/BoxHorizontal/BoxHorizontal.cjs +18 -0
  89. package/dist/components/BoxHorizontal/BoxHorizontal.cjs.map +1 -0
  90. package/dist/components/BoxHorizontal/BoxHorizontal.d.cts +7 -0
  91. package/dist/components/BoxHorizontal/BoxHorizontal.d.cts.map +1 -0
  92. package/dist/components/BoxHorizontal/BoxHorizontal.d.mts +7 -0
  93. package/dist/components/BoxHorizontal/BoxHorizontal.d.mts.map +1 -0
  94. package/dist/components/BoxHorizontal/BoxHorizontal.mjs +18 -0
  95. package/dist/components/BoxHorizontal/BoxHorizontal.mjs.map +1 -0
  96. package/dist/components/BoxHorizontal/BoxHorizontal.types.cjs +3 -0
  97. package/dist/components/BoxHorizontal/BoxHorizontal.types.cjs.map +1 -0
  98. package/dist/components/BoxHorizontal/BoxHorizontal.types.d.cts +13 -0
  99. package/dist/components/BoxHorizontal/BoxHorizontal.types.d.cts.map +1 -0
  100. package/dist/components/BoxHorizontal/BoxHorizontal.types.d.mts +13 -0
  101. package/dist/components/BoxHorizontal/BoxHorizontal.types.d.mts.map +1 -0
  102. package/dist/components/BoxHorizontal/BoxHorizontal.types.mjs +2 -0
  103. package/dist/components/BoxHorizontal/BoxHorizontal.types.mjs.map +1 -0
  104. package/dist/components/BoxHorizontal/index.cjs +6 -0
  105. package/dist/components/BoxHorizontal/index.cjs.map +1 -0
  106. package/dist/components/BoxHorizontal/index.d.cts +3 -0
  107. package/dist/components/BoxHorizontal/index.d.cts.map +1 -0
  108. package/dist/components/BoxHorizontal/index.d.mts +3 -0
  109. package/dist/components/BoxHorizontal/index.d.mts.map +1 -0
  110. package/dist/components/BoxHorizontal/index.mjs +2 -0
  111. package/dist/components/BoxHorizontal/index.mjs.map +1 -0
  112. package/dist/components/BoxVertical/BoxVertical.cjs +18 -0
  113. package/dist/components/BoxVertical/BoxVertical.cjs.map +1 -0
  114. package/dist/components/BoxVertical/BoxVertical.d.cts +7 -0
  115. package/dist/components/BoxVertical/BoxVertical.d.cts.map +1 -0
  116. package/dist/components/BoxVertical/BoxVertical.d.mts +7 -0
  117. package/dist/components/BoxVertical/BoxVertical.d.mts.map +1 -0
  118. package/dist/components/BoxVertical/BoxVertical.mjs +18 -0
  119. package/dist/components/BoxVertical/BoxVertical.mjs.map +1 -0
  120. package/dist/components/BoxVertical/BoxVertical.types.cjs +3 -0
  121. package/dist/components/BoxVertical/BoxVertical.types.cjs.map +1 -0
  122. package/dist/components/BoxVertical/BoxVertical.types.d.cts +13 -0
  123. package/dist/components/BoxVertical/BoxVertical.types.d.cts.map +1 -0
  124. package/dist/components/BoxVertical/BoxVertical.types.d.mts +13 -0
  125. package/dist/components/BoxVertical/BoxVertical.types.d.mts.map +1 -0
  126. package/dist/components/BoxVertical/BoxVertical.types.mjs +2 -0
  127. package/dist/components/BoxVertical/BoxVertical.types.mjs.map +1 -0
  128. package/dist/components/BoxVertical/index.cjs +6 -0
  129. package/dist/components/BoxVertical/index.cjs.map +1 -0
  130. package/dist/components/BoxVertical/index.d.cts +3 -0
  131. package/dist/components/BoxVertical/index.d.cts.map +1 -0
  132. package/dist/components/BoxVertical/index.d.mts +3 -0
  133. package/dist/components/BoxVertical/index.d.mts.map +1 -0
  134. package/dist/components/BoxVertical/index.mjs +2 -0
  135. package/dist/components/BoxVertical/index.mjs.map +1 -0
  136. package/dist/components/Icon/assets/candlestick.svg +1 -1
  137. package/dist/components/Input/Input.cjs +4 -3
  138. package/dist/components/Input/Input.cjs.map +1 -1
  139. package/dist/components/Input/Input.constants.cjs +69 -0
  140. package/dist/components/Input/Input.constants.cjs.map +1 -0
  141. package/dist/components/Input/Input.constants.d.cts +11 -0
  142. package/dist/components/Input/Input.constants.d.cts.map +1 -0
  143. package/dist/components/Input/Input.constants.d.mts +11 -0
  144. package/dist/components/Input/Input.constants.d.mts.map +1 -0
  145. package/dist/components/Input/Input.constants.mjs +66 -0
  146. package/dist/components/Input/Input.constants.mjs.map +1 -0
  147. package/dist/components/Input/Input.d.cts.map +1 -1
  148. package/dist/components/Input/Input.d.mts.map +1 -1
  149. package/dist/components/Input/Input.mjs +4 -3
  150. package/dist/components/Input/Input.mjs.map +1 -1
  151. package/dist/components/Text/Text.types.cjs.map +1 -1
  152. package/dist/components/Text/Text.types.d.cts +1 -1
  153. package/dist/components/Text/Text.types.d.mts +1 -1
  154. package/dist/components/Text/Text.types.mjs.map +1 -1
  155. package/dist/components/TextButton/TextButton.cjs +12 -36
  156. package/dist/components/TextButton/TextButton.cjs.map +1 -1
  157. package/dist/components/TextButton/TextButton.d.cts.map +1 -1
  158. package/dist/components/TextButton/TextButton.d.mts.map +1 -1
  159. package/dist/components/TextButton/TextButton.mjs +14 -38
  160. package/dist/components/TextButton/TextButton.mjs.map +1 -1
  161. package/dist/components/TextButton/TextButton.types.cjs.map +1 -1
  162. package/dist/components/TextButton/TextButton.types.d.cts +8 -60
  163. package/dist/components/TextButton/TextButton.types.d.cts.map +1 -1
  164. package/dist/components/TextButton/TextButton.types.d.mts +8 -60
  165. package/dist/components/TextButton/TextButton.types.d.mts.map +1 -1
  166. package/dist/components/TextButton/TextButton.types.mjs.map +1 -1
  167. package/dist/components/TextButton/index.cjs +1 -3
  168. package/dist/components/TextButton/index.cjs.map +1 -1
  169. package/dist/components/TextButton/index.d.cts +0 -1
  170. package/dist/components/TextButton/index.d.cts.map +1 -1
  171. package/dist/components/TextButton/index.d.mts +0 -1
  172. package/dist/components/TextButton/index.d.mts.map +1 -1
  173. package/dist/components/TextButton/index.mjs +0 -1
  174. package/dist/components/TextButton/index.mjs.map +1 -1
  175. package/dist/components/TextField/TextField.cjs +22 -8
  176. package/dist/components/TextField/TextField.cjs.map +1 -1
  177. package/dist/components/TextField/TextField.d.cts +0 -2
  178. package/dist/components/TextField/TextField.d.cts.map +1 -1
  179. package/dist/components/TextField/TextField.d.mts +0 -2
  180. package/dist/components/TextField/TextField.d.mts.map +1 -1
  181. package/dist/components/TextField/TextField.mjs +22 -8
  182. package/dist/components/TextField/TextField.mjs.map +1 -1
  183. package/dist/components/TextField/TextField.types.cjs +0 -10
  184. package/dist/components/TextField/TextField.types.cjs.map +1 -1
  185. package/dist/components/TextField/TextField.types.d.cts +0 -14
  186. package/dist/components/TextField/TextField.types.d.cts.map +1 -1
  187. package/dist/components/TextField/TextField.types.d.mts +0 -14
  188. package/dist/components/TextField/TextField.types.d.mts.map +1 -1
  189. package/dist/components/TextField/TextField.types.mjs +1 -9
  190. package/dist/components/TextField/TextField.types.mjs.map +1 -1
  191. package/dist/components/TextField/index.cjs +1 -3
  192. package/dist/components/TextField/index.cjs.map +1 -1
  193. package/dist/components/TextField/index.d.cts +0 -1
  194. package/dist/components/TextField/index.d.cts.map +1 -1
  195. package/dist/components/TextField/index.d.mts +0 -1
  196. package/dist/components/TextField/index.d.mts.map +1 -1
  197. package/dist/components/TextField/index.mjs +0 -1
  198. package/dist/components/TextField/index.mjs.map +1 -1
  199. package/dist/components/index.cjs +6 -4
  200. package/dist/components/index.cjs.map +1 -1
  201. package/dist/components/index.d.cts +6 -2
  202. package/dist/components/index.d.cts.map +1 -1
  203. package/dist/components/index.d.mts +6 -2
  204. package/dist/components/index.d.mts.map +1 -1
  205. package/dist/components/index.mjs +4 -2
  206. package/dist/components/index.mjs.map +1 -1
  207. package/dist/components/temp-components/TextOrChildren/TextOrChildren.types.cjs.map +1 -1
  208. package/dist/components/temp-components/TextOrChildren/TextOrChildren.types.d.cts +2 -5
  209. package/dist/components/temp-components/TextOrChildren/TextOrChildren.types.d.cts.map +1 -1
  210. package/dist/components/temp-components/TextOrChildren/TextOrChildren.types.d.mts +2 -5
  211. package/dist/components/temp-components/TextOrChildren/TextOrChildren.types.d.mts.map +1 -1
  212. package/dist/components/temp-components/TextOrChildren/TextOrChildren.types.mjs.map +1 -1
  213. package/dist/types/index.cjs +3 -203
  214. package/dist/types/index.cjs.map +1 -1
  215. package/dist/types/index.d.cts +2 -210
  216. package/dist/types/index.d.cts.map +1 -1
  217. package/dist/types/index.d.mts +2 -210
  218. package/dist/types/index.d.mts.map +1 -1
  219. package/dist/types/index.mjs +2 -202
  220. package/dist/types/index.mjs.map +1 -1
  221. package/package.json +5 -6
  222. package/dist/components/TextButton/TextButton.constants.cjs +0 -12
  223. package/dist/components/TextButton/TextButton.constants.cjs.map +0 -1
  224. package/dist/components/TextButton/TextButton.constants.d.cts +0 -4
  225. package/dist/components/TextButton/TextButton.constants.d.cts.map +0 -1
  226. package/dist/components/TextButton/TextButton.constants.d.mts +0 -4
  227. package/dist/components/TextButton/TextButton.constants.d.mts.map +0 -1
  228. package/dist/components/TextButton/TextButton.constants.mjs +0 -9
  229. package/dist/components/TextButton/TextButton.constants.mjs.map +0 -1
  230. package/dist/components/TextField/TextField.constants.cjs +0 -13
  231. package/dist/components/TextField/TextField.constants.cjs.map +0 -1
  232. package/dist/components/TextField/TextField.constants.d.cts +0 -6
  233. package/dist/components/TextField/TextField.constants.d.cts.map +0 -1
  234. package/dist/components/TextField/TextField.constants.d.mts +0 -6
  235. package/dist/components/TextField/TextField.constants.d.mts.map +0 -1
  236. package/dist/components/TextField/TextField.constants.mjs +0 -10
  237. package/dist/components/TextField/TextField.constants.mjs.map +0 -1
@@ -7,6 +7,7 @@ const react_1 = require("react");
7
7
  const react_native_1 = require("react-native/index.js");
8
8
  const types_1 = require("../../types/index.cjs");
9
9
  const Text_constants_1 = require("../Text/Text.constants.cjs");
10
+ const Input_constants_1 = require("./Input.constants.cjs");
10
11
  exports.Input = (0, react_1.forwardRef)(({ style, textVariant = types_1.TextVariant.BodyMd, isStateStylesDisabled, isDisabled = false, isReadonly = false, value, placeholder, twClassName, onBlur, onFocus, autoFocus = false, ...props }, ref) => {
11
12
  const [isFocused, setIsFocused] = (0, react_1.useState)(autoFocus);
12
13
  const tw = (0, design_system_twrnc_preset_1.useTailwind)();
@@ -22,11 +23,10 @@ exports.Input = (0, react_1.forwardRef)(({ style, textVariant = types_1.TextVari
22
23
  // the controlled value is empty. This keeps the iOS lineHeight workaround
23
24
  // scoped to the placeholder-visible state without affecting typed text.
24
25
  const isPlaceholderVisible = hasPlaceholder && value === '';
25
- const inputStyle = (0, react_1.useMemo)(() => tw.style(`text-${textVariant}`, fontClass, 'text-default', 'bg-default', 'border', 'border-transparent', !isStateStylesDisabled && isDisabled && 'opacity-50', !isStateStylesDisabled &&
26
+ const inputStyle = (0, react_1.useMemo)(() => tw.style(fontClass, 'text-default', 'bg-default', 'border', 'border-transparent', !isStateStylesDisabled && isDisabled && 'opacity-50', !isStateStylesDisabled &&
26
27
  !isDisabled &&
27
28
  isFocused &&
28
29
  'border-primary-default', twClassName), [
29
- textVariant,
30
30
  fontClass,
31
31
  isStateStylesDisabled,
32
32
  isDisabled,
@@ -34,6 +34,7 @@ exports.Input = (0, react_1.forwardRef)(({ style, textVariant = types_1.TextVari
34
34
  twClassName,
35
35
  tw,
36
36
  ]);
37
+ const variantTextStyle = (0, react_1.useMemo)(() => Input_constants_1.MAP_TEXT_VARIANT_INPUT_METRICS[textVariant], [textVariant]);
37
38
  /* istanbul ignore next: handler body covered by focus/blur tests */
38
39
  const onBlurHandler = (0, react_1.useCallback)((e) => {
39
40
  if (!isDisabled) {
@@ -50,12 +51,12 @@ exports.Input = (0, react_1.forwardRef)(({ style, textVariant = types_1.TextVari
50
51
  }, [isDisabled, onFocus]);
51
52
  const resolvedStyle = [
52
53
  inputStyle,
54
+ variantTextStyle,
53
55
  // iOS-only workaround: when a placeholder is visible, native iOS
54
56
  // TextInput can render placeholder text vertically offset.
55
57
  // Keep this iOS-only because lineHeight: 0 can collapse text on Android.
56
58
  react_native_1.Platform.OS === 'ios' &&
57
59
  isPlaceholderVisible && { lineHeight: 0 },
58
- react_native_1.Platform.OS === 'ios' && { textAlignVertical: 'center' },
59
60
  style,
60
61
  ].filter(Boolean);
61
62
  return (<react_native_1.TextInput ref={ref} placeholderTextColor={placeholderTextColor} {...props} placeholder={placeholder} value={value} style={resolvedStyle} editable={!isDisabled && !isReadonly} autoFocus={autoFocus} onBlur={onBlurHandler} onFocus={onFocusHandler}/>);
@@ -1 +1 @@
1
- {"version":3,"file":"Input.cjs","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Theme,\n useTailwind,\n useTheme,\n} from '@metamask-previews/design-system-twrnc-preset';\nimport { darkTheme, lightTheme } from '@metamask-previews/design-tokens';\nimport { forwardRef, useCallback, useMemo, useState } from 'react';\nimport { Platform, TextInput } from 'react-native';\n\nimport { FontFamily, TextVariant } from '../../types';\nimport {\n MAP_TEXT_VARIANT_FONTWEIGHT,\n TWCLASSMAP_TEXT_FONTWEIGHT,\n} from '../Text/Text.constants';\n\nimport type { InputProps } from './Input.types';\n\nexport const Input = forwardRef<TextInput, InputProps>(\n (\n {\n style,\n textVariant = TextVariant.BodyMd,\n isStateStylesDisabled,\n isDisabled = false,\n isReadonly = false,\n value,\n placeholder,\n twClassName,\n onBlur,\n onFocus,\n autoFocus = false,\n ...props\n },\n ref,\n ) => {\n const [isFocused, setIsFocused] = useState(autoFocus);\n const tw = useTailwind();\n const theme = useTheme();\n\n const placeholderTextColor = useMemo(\n () =>\n theme === Theme.Light\n ? lightTheme.colors.text.alternative\n : darkTheme.colors.text.alternative,\n [theme],\n );\n\n const finalFontWeight = MAP_TEXT_VARIANT_FONTWEIGHT[textVariant];\n const fontSuffix = TWCLASSMAP_TEXT_FONTWEIGHT[finalFontWeight];\n const fontClass = `font-${FontFamily.Default}${fontSuffix}`;\n const hasPlaceholder =\n placeholder !== undefined && placeholder !== null && placeholder !== '';\n // Only apply placeholder-mode styling when a placeholder is present and\n // the controlled value is empty. This keeps the iOS lineHeight workaround\n // scoped to the placeholder-visible state without affecting typed text.\n const isPlaceholderVisible = hasPlaceholder && value === '';\n\n const inputStyle = useMemo(\n () =>\n tw.style(\n `text-${textVariant}`,\n fontClass,\n 'text-default',\n 'bg-default',\n 'border',\n 'border-transparent',\n !isStateStylesDisabled && isDisabled && 'opacity-50',\n !isStateStylesDisabled &&\n !isDisabled &&\n isFocused &&\n 'border-primary-default',\n twClassName,\n ),\n [\n textVariant,\n fontClass,\n isStateStylesDisabled,\n isDisabled,\n isFocused,\n twClassName,\n tw,\n ],\n );\n\n /* istanbul ignore next: handler body covered by focus/blur tests */\n const onBlurHandler = useCallback(\n (e: Parameters<NonNullable<InputProps['onBlur']>>[0]) => {\n if (!isDisabled) {\n setIsFocused(false);\n onBlur?.(e);\n }\n },\n [isDisabled, onBlur],\n );\n\n /* istanbul ignore next: handler body covered by focus/blur tests */\n const onFocusHandler = useCallback(\n (e: Parameters<NonNullable<InputProps['onFocus']>>[0]) => {\n if (!isDisabled) {\n setIsFocused(true);\n onFocus?.(e);\n }\n },\n [isDisabled, onFocus],\n );\n\n const resolvedStyle = [\n inputStyle,\n // iOS-only workaround: when a placeholder is visible, native iOS\n // TextInput can render placeholder text vertically offset.\n // Keep this iOS-only because lineHeight: 0 can collapse text on Android.\n Platform.OS === 'ios' &&\n isPlaceholderVisible && { lineHeight: 0 as const },\n Platform.OS === 'ios' && { textAlignVertical: 'center' as const },\n style,\n ].filter(Boolean);\n\n return (\n <TextInput\n ref={ref}\n placeholderTextColor={placeholderTextColor}\n {...props}\n placeholder={placeholder}\n value={value}\n style={resolvedStyle}\n editable={!isDisabled && !isReadonly}\n autoFocus={autoFocus}\n onBlur={onBlurHandler}\n onFocus={onFocusHandler}\n />\n );\n },\n);\n"]}
1
+ {"version":3,"file":"Input.cjs","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Theme,\n useTailwind,\n useTheme,\n} from '@metamask-previews/design-system-twrnc-preset';\nimport { darkTheme, lightTheme } from '@metamask-previews/design-tokens';\nimport { forwardRef, useCallback, useMemo, useState } from 'react';\nimport { Platform, TextInput } from 'react-native';\n\nimport { FontFamily, TextVariant } from '../../types';\nimport {\n MAP_TEXT_VARIANT_FONTWEIGHT,\n TWCLASSMAP_TEXT_FONTWEIGHT,\n} from '../Text/Text.constants';\n\nimport { MAP_TEXT_VARIANT_INPUT_METRICS } from './Input.constants';\nimport type { InputProps } from './Input.types';\n\nexport const Input = forwardRef<TextInput, InputProps>(\n (\n {\n style,\n textVariant = TextVariant.BodyMd,\n isStateStylesDisabled,\n isDisabled = false,\n isReadonly = false,\n value,\n placeholder,\n twClassName,\n onBlur,\n onFocus,\n autoFocus = false,\n ...props\n },\n ref,\n ) => {\n const [isFocused, setIsFocused] = useState(autoFocus);\n const tw = useTailwind();\n const theme = useTheme();\n\n const placeholderTextColor = useMemo(\n () =>\n theme === Theme.Light\n ? lightTheme.colors.text.alternative\n : darkTheme.colors.text.alternative,\n [theme],\n );\n\n const finalFontWeight = MAP_TEXT_VARIANT_FONTWEIGHT[textVariant];\n const fontSuffix = TWCLASSMAP_TEXT_FONTWEIGHT[finalFontWeight];\n const fontClass = `font-${FontFamily.Default}${fontSuffix}`;\n const hasPlaceholder =\n placeholder !== undefined && placeholder !== null && placeholder !== '';\n // Only apply placeholder-mode styling when a placeholder is present and\n // the controlled value is empty. This keeps the iOS lineHeight workaround\n // scoped to the placeholder-visible state without affecting typed text.\n const isPlaceholderVisible = hasPlaceholder && value === '';\n\n const inputStyle = useMemo(\n () =>\n tw.style(\n fontClass,\n 'text-default',\n 'bg-default',\n 'border',\n 'border-transparent',\n !isStateStylesDisabled && isDisabled && 'opacity-50',\n !isStateStylesDisabled &&\n !isDisabled &&\n isFocused &&\n 'border-primary-default',\n twClassName,\n ),\n [\n fontClass,\n isStateStylesDisabled,\n isDisabled,\n isFocused,\n twClassName,\n tw,\n ],\n );\n\n const variantTextStyle = useMemo(\n () => MAP_TEXT_VARIANT_INPUT_METRICS[textVariant],\n [textVariant],\n );\n\n /* istanbul ignore next: handler body covered by focus/blur tests */\n const onBlurHandler = useCallback(\n (e: Parameters<NonNullable<InputProps['onBlur']>>[0]) => {\n if (!isDisabled) {\n setIsFocused(false);\n onBlur?.(e);\n }\n },\n [isDisabled, onBlur],\n );\n\n /* istanbul ignore next: handler body covered by focus/blur tests */\n const onFocusHandler = useCallback(\n (e: Parameters<NonNullable<InputProps['onFocus']>>[0]) => {\n if (!isDisabled) {\n setIsFocused(true);\n onFocus?.(e);\n }\n },\n [isDisabled, onFocus],\n );\n const resolvedStyle = [\n inputStyle,\n variantTextStyle,\n // iOS-only workaround: when a placeholder is visible, native iOS\n // TextInput can render placeholder text vertically offset.\n // Keep this iOS-only because lineHeight: 0 can collapse text on Android.\n Platform.OS === 'ios' &&\n isPlaceholderVisible && { lineHeight: 0 as const },\n style,\n ].filter(Boolean);\n\n return (\n <TextInput\n ref={ref}\n placeholderTextColor={placeholderTextColor}\n {...props}\n placeholder={placeholder}\n value={value}\n style={resolvedStyle}\n editable={!isDisabled && !isReadonly}\n autoFocus={autoFocus}\n onBlur={onBlurHandler}\n onFocus={onFocusHandler}\n />\n );\n },\n);\n"]}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAP_TEXT_VARIANT_INPUT_METRICS = void 0;
4
+ const design_tokens_1 = require("@metamask-previews/design-tokens");
5
+ const types_1 = require("../../types/index.cjs");
6
+ /**
7
+ * Typographic metrics for Input: same tokens as `text-*` utilities but **without** `lineHeight`.
8
+ * React Native `TextInput` aligns single-line text more predictably when line height is not set
9
+ * from the design-system paragraph specs (matches legacy / temp Input.styles behavior).
10
+ */
11
+ exports.MAP_TEXT_VARIANT_INPUT_METRICS = {
12
+ [types_1.TextVariant.DisplayLg]: {
13
+ fontSize: design_tokens_1.typography.sDisplayLG.fontSize,
14
+ letterSpacing: design_tokens_1.typography.sDisplayLG.letterSpacing,
15
+ },
16
+ [types_1.TextVariant.DisplayMd]: {
17
+ fontSize: design_tokens_1.typography.sDisplayMD.fontSize,
18
+ letterSpacing: design_tokens_1.typography.sDisplayMD.letterSpacing,
19
+ },
20
+ [types_1.TextVariant.HeadingLg]: {
21
+ fontSize: design_tokens_1.typography.sHeadingLG.fontSize,
22
+ letterSpacing: design_tokens_1.typography.sHeadingLG.letterSpacing,
23
+ },
24
+ [types_1.TextVariant.HeadingMd]: {
25
+ fontSize: design_tokens_1.typography.sHeadingMD.fontSize,
26
+ letterSpacing: design_tokens_1.typography.sHeadingMD.letterSpacing,
27
+ },
28
+ [types_1.TextVariant.HeadingSm]: {
29
+ fontSize: design_tokens_1.typography.sHeadingSM.fontSize,
30
+ letterSpacing: design_tokens_1.typography.sHeadingSM.letterSpacing,
31
+ },
32
+ [types_1.TextVariant.BodyLg]: {
33
+ fontSize: design_tokens_1.typography.sBodyLGMedium.fontSize,
34
+ letterSpacing: design_tokens_1.typography.sBodyLGMedium.letterSpacing,
35
+ },
36
+ [types_1.TextVariant.BodyMd]: {
37
+ fontSize: design_tokens_1.typography.sBodyMD.fontSize,
38
+ letterSpacing: design_tokens_1.typography.sBodyMD.letterSpacing,
39
+ },
40
+ [types_1.TextVariant.BodySm]: {
41
+ fontSize: design_tokens_1.typography.sBodySM.fontSize,
42
+ letterSpacing: design_tokens_1.typography.sBodySM.letterSpacing,
43
+ },
44
+ [types_1.TextVariant.BodyXs]: {
45
+ fontSize: design_tokens_1.typography.sBodyXS.fontSize,
46
+ letterSpacing: design_tokens_1.typography.sBodyXS.letterSpacing,
47
+ },
48
+ [types_1.TextVariant.PageHeading]: {
49
+ fontSize: design_tokens_1.typography.sPageHeading.fontSize,
50
+ letterSpacing: design_tokens_1.typography.sPageHeading.letterSpacing,
51
+ },
52
+ [types_1.TextVariant.SectionHeading]: {
53
+ fontSize: design_tokens_1.typography.sSectionHeading.fontSize,
54
+ letterSpacing: design_tokens_1.typography.sSectionHeading.letterSpacing,
55
+ },
56
+ [types_1.TextVariant.ButtonLabelMd]: {
57
+ fontSize: design_tokens_1.typography.sButtonLabelMd.fontSize,
58
+ letterSpacing: design_tokens_1.typography.sButtonLabelMd.letterSpacing,
59
+ },
60
+ [types_1.TextVariant.ButtonLabelLg]: {
61
+ fontSize: design_tokens_1.typography.sButtonLabelLg.fontSize,
62
+ letterSpacing: design_tokens_1.typography.sButtonLabelLg.letterSpacing,
63
+ },
64
+ [types_1.TextVariant.AmountDisplayLg]: {
65
+ fontSize: design_tokens_1.typography.sAmountDisplayLg.fontSize,
66
+ letterSpacing: design_tokens_1.typography.sAmountDisplayLg.letterSpacing,
67
+ },
68
+ };
69
+ //# sourceMappingURL=Input.constants.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.constants.cjs","sourceRoot":"","sources":["../../../src/components/Input/Input.constants.ts"],"names":[],"mappings":";;;AAAA,oEAA8D;AAE9D,iDAA0C;AAE1C;;;;GAIG;AACU,QAAA,8BAA8B,GAGvC;IACF,CAAC,mBAAW,CAAC,SAAS,CAAC,EAAE;QACvB,QAAQ,EAAE,0BAAU,CAAC,UAAU,CAAC,QAAQ;QACxC,aAAa,EAAE,0BAAU,CAAC,UAAU,CAAC,aAAa;KACnD;IACD,CAAC,mBAAW,CAAC,SAAS,CAAC,EAAE;QACvB,QAAQ,EAAE,0BAAU,CAAC,UAAU,CAAC,QAAQ;QACxC,aAAa,EAAE,0BAAU,CAAC,UAAU,CAAC,aAAa;KACnD;IACD,CAAC,mBAAW,CAAC,SAAS,CAAC,EAAE;QACvB,QAAQ,EAAE,0BAAU,CAAC,UAAU,CAAC,QAAQ;QACxC,aAAa,EAAE,0BAAU,CAAC,UAAU,CAAC,aAAa;KACnD;IACD,CAAC,mBAAW,CAAC,SAAS,CAAC,EAAE;QACvB,QAAQ,EAAE,0BAAU,CAAC,UAAU,CAAC,QAAQ;QACxC,aAAa,EAAE,0BAAU,CAAC,UAAU,CAAC,aAAa;KACnD;IACD,CAAC,mBAAW,CAAC,SAAS,CAAC,EAAE;QACvB,QAAQ,EAAE,0BAAU,CAAC,UAAU,CAAC,QAAQ;QACxC,aAAa,EAAE,0BAAU,CAAC,UAAU,CAAC,aAAa;KACnD;IACD,CAAC,mBAAW,CAAC,MAAM,CAAC,EAAE;QACpB,QAAQ,EAAE,0BAAU,CAAC,aAAa,CAAC,QAAQ;QAC3C,aAAa,EAAE,0BAAU,CAAC,aAAa,CAAC,aAAa;KACtD;IACD,CAAC,mBAAW,CAAC,MAAM,CAAC,EAAE;QACpB,QAAQ,EAAE,0BAAU,CAAC,OAAO,CAAC,QAAQ;QACrC,aAAa,EAAE,0BAAU,CAAC,OAAO,CAAC,aAAa;KAChD;IACD,CAAC,mBAAW,CAAC,MAAM,CAAC,EAAE;QACpB,QAAQ,EAAE,0BAAU,CAAC,OAAO,CAAC,QAAQ;QACrC,aAAa,EAAE,0BAAU,CAAC,OAAO,CAAC,aAAa;KAChD;IACD,CAAC,mBAAW,CAAC,MAAM,CAAC,EAAE;QACpB,QAAQ,EAAE,0BAAU,CAAC,OAAO,CAAC,QAAQ;QACrC,aAAa,EAAE,0BAAU,CAAC,OAAO,CAAC,aAAa;KAChD;IACD,CAAC,mBAAW,CAAC,WAAW,CAAC,EAAE;QACzB,QAAQ,EAAE,0BAAU,CAAC,YAAY,CAAC,QAAQ;QAC1C,aAAa,EAAE,0BAAU,CAAC,YAAY,CAAC,aAAa;KACrD;IACD,CAAC,mBAAW,CAAC,cAAc,CAAC,EAAE;QAC5B,QAAQ,EAAE,0BAAU,CAAC,eAAe,CAAC,QAAQ;QAC7C,aAAa,EAAE,0BAAU,CAAC,eAAe,CAAC,aAAa;KACxD;IACD,CAAC,mBAAW,CAAC,aAAa,CAAC,EAAE;QAC3B,QAAQ,EAAE,0BAAU,CAAC,cAAc,CAAC,QAAQ;QAC5C,aAAa,EAAE,0BAAU,CAAC,cAAc,CAAC,aAAa;KACvD;IACD,CAAC,mBAAW,CAAC,aAAa,CAAC,EAAE;QAC3B,QAAQ,EAAE,0BAAU,CAAC,cAAc,CAAC,QAAQ;QAC5C,aAAa,EAAE,0BAAU,CAAC,cAAc,CAAC,aAAa;KACvD;IACD,CAAC,mBAAW,CAAC,eAAe,CAAC,EAAE;QAC7B,QAAQ,EAAE,0BAAU,CAAC,gBAAgB,CAAC,QAAQ;QAC9C,aAAa,EAAE,0BAAU,CAAC,gBAAgB,CAAC,aAAa;KACzD;CACF,CAAC","sourcesContent":["import { typography } from '@metamask-previews/design-tokens';\n\nimport { TextVariant } from '../../types';\n\n/**\n * Typographic metrics for Input: same tokens as `text-*` utilities but **without** `lineHeight`.\n * React Native `TextInput` aligns single-line text more predictably when line height is not set\n * from the design-system paragraph specs (matches legacy / temp Input.styles behavior).\n */\nexport const MAP_TEXT_VARIANT_INPUT_METRICS: Record<\n TextVariant,\n { fontSize: number; letterSpacing: number }\n> = {\n [TextVariant.DisplayLg]: {\n fontSize: typography.sDisplayLG.fontSize,\n letterSpacing: typography.sDisplayLG.letterSpacing,\n },\n [TextVariant.DisplayMd]: {\n fontSize: typography.sDisplayMD.fontSize,\n letterSpacing: typography.sDisplayMD.letterSpacing,\n },\n [TextVariant.HeadingLg]: {\n fontSize: typography.sHeadingLG.fontSize,\n letterSpacing: typography.sHeadingLG.letterSpacing,\n },\n [TextVariant.HeadingMd]: {\n fontSize: typography.sHeadingMD.fontSize,\n letterSpacing: typography.sHeadingMD.letterSpacing,\n },\n [TextVariant.HeadingSm]: {\n fontSize: typography.sHeadingSM.fontSize,\n letterSpacing: typography.sHeadingSM.letterSpacing,\n },\n [TextVariant.BodyLg]: {\n fontSize: typography.sBodyLGMedium.fontSize,\n letterSpacing: typography.sBodyLGMedium.letterSpacing,\n },\n [TextVariant.BodyMd]: {\n fontSize: typography.sBodyMD.fontSize,\n letterSpacing: typography.sBodyMD.letterSpacing,\n },\n [TextVariant.BodySm]: {\n fontSize: typography.sBodySM.fontSize,\n letterSpacing: typography.sBodySM.letterSpacing,\n },\n [TextVariant.BodyXs]: {\n fontSize: typography.sBodyXS.fontSize,\n letterSpacing: typography.sBodyXS.letterSpacing,\n },\n [TextVariant.PageHeading]: {\n fontSize: typography.sPageHeading.fontSize,\n letterSpacing: typography.sPageHeading.letterSpacing,\n },\n [TextVariant.SectionHeading]: {\n fontSize: typography.sSectionHeading.fontSize,\n letterSpacing: typography.sSectionHeading.letterSpacing,\n },\n [TextVariant.ButtonLabelMd]: {\n fontSize: typography.sButtonLabelMd.fontSize,\n letterSpacing: typography.sButtonLabelMd.letterSpacing,\n },\n [TextVariant.ButtonLabelLg]: {\n fontSize: typography.sButtonLabelLg.fontSize,\n letterSpacing: typography.sButtonLabelLg.letterSpacing,\n },\n [TextVariant.AmountDisplayLg]: {\n fontSize: typography.sAmountDisplayLg.fontSize,\n letterSpacing: typography.sAmountDisplayLg.letterSpacing,\n },\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import { TextVariant } from "../../types/index.cjs";
2
+ /**
3
+ * Typographic metrics for Input: same tokens as `text-*` utilities but **without** `lineHeight`.
4
+ * React Native `TextInput` aligns single-line text more predictably when line height is not set
5
+ * from the design-system paragraph specs (matches legacy / temp Input.styles behavior).
6
+ */
7
+ export declare const MAP_TEXT_VARIANT_INPUT_METRICS: Record<TextVariant, {
8
+ fontSize: number;
9
+ letterSpacing: number;
10
+ }>;
11
+ //# sourceMappingURL=Input.constants.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.constants.d.cts","sourceRoot":"","sources":["../../../src/components/Input/Input.constants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,8BAAoB;AAE1C;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAM,CACjD,WAAW,EACX;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CA0D5C,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { TextVariant } from "../../types/index.mjs";
2
+ /**
3
+ * Typographic metrics for Input: same tokens as `text-*` utilities but **without** `lineHeight`.
4
+ * React Native `TextInput` aligns single-line text more predictably when line height is not set
5
+ * from the design-system paragraph specs (matches legacy / temp Input.styles behavior).
6
+ */
7
+ export declare const MAP_TEXT_VARIANT_INPUT_METRICS: Record<TextVariant, {
8
+ fontSize: number;
9
+ letterSpacing: number;
10
+ }>;
11
+ //# sourceMappingURL=Input.constants.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.constants.d.mts","sourceRoot":"","sources":["../../../src/components/Input/Input.constants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,8BAAoB;AAE1C;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAM,CACjD,WAAW,EACX;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CA0D5C,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { typography } from "@metamask-previews/design-tokens";
2
+ import { TextVariant } from "../../types/index.mjs";
3
+ /**
4
+ * Typographic metrics for Input: same tokens as `text-*` utilities but **without** `lineHeight`.
5
+ * React Native `TextInput` aligns single-line text more predictably when line height is not set
6
+ * from the design-system paragraph specs (matches legacy / temp Input.styles behavior).
7
+ */
8
+ export const MAP_TEXT_VARIANT_INPUT_METRICS = {
9
+ [TextVariant.DisplayLg]: {
10
+ fontSize: typography.sDisplayLG.fontSize,
11
+ letterSpacing: typography.sDisplayLG.letterSpacing,
12
+ },
13
+ [TextVariant.DisplayMd]: {
14
+ fontSize: typography.sDisplayMD.fontSize,
15
+ letterSpacing: typography.sDisplayMD.letterSpacing,
16
+ },
17
+ [TextVariant.HeadingLg]: {
18
+ fontSize: typography.sHeadingLG.fontSize,
19
+ letterSpacing: typography.sHeadingLG.letterSpacing,
20
+ },
21
+ [TextVariant.HeadingMd]: {
22
+ fontSize: typography.sHeadingMD.fontSize,
23
+ letterSpacing: typography.sHeadingMD.letterSpacing,
24
+ },
25
+ [TextVariant.HeadingSm]: {
26
+ fontSize: typography.sHeadingSM.fontSize,
27
+ letterSpacing: typography.sHeadingSM.letterSpacing,
28
+ },
29
+ [TextVariant.BodyLg]: {
30
+ fontSize: typography.sBodyLGMedium.fontSize,
31
+ letterSpacing: typography.sBodyLGMedium.letterSpacing,
32
+ },
33
+ [TextVariant.BodyMd]: {
34
+ fontSize: typography.sBodyMD.fontSize,
35
+ letterSpacing: typography.sBodyMD.letterSpacing,
36
+ },
37
+ [TextVariant.BodySm]: {
38
+ fontSize: typography.sBodySM.fontSize,
39
+ letterSpacing: typography.sBodySM.letterSpacing,
40
+ },
41
+ [TextVariant.BodyXs]: {
42
+ fontSize: typography.sBodyXS.fontSize,
43
+ letterSpacing: typography.sBodyXS.letterSpacing,
44
+ },
45
+ [TextVariant.PageHeading]: {
46
+ fontSize: typography.sPageHeading.fontSize,
47
+ letterSpacing: typography.sPageHeading.letterSpacing,
48
+ },
49
+ [TextVariant.SectionHeading]: {
50
+ fontSize: typography.sSectionHeading.fontSize,
51
+ letterSpacing: typography.sSectionHeading.letterSpacing,
52
+ },
53
+ [TextVariant.ButtonLabelMd]: {
54
+ fontSize: typography.sButtonLabelMd.fontSize,
55
+ letterSpacing: typography.sButtonLabelMd.letterSpacing,
56
+ },
57
+ [TextVariant.ButtonLabelLg]: {
58
+ fontSize: typography.sButtonLabelLg.fontSize,
59
+ letterSpacing: typography.sButtonLabelLg.letterSpacing,
60
+ },
61
+ [TextVariant.AmountDisplayLg]: {
62
+ fontSize: typography.sAmountDisplayLg.fontSize,
63
+ letterSpacing: typography.sAmountDisplayLg.letterSpacing,
64
+ },
65
+ };
66
+ //# sourceMappingURL=Input.constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.constants.mjs","sourceRoot":"","sources":["../../../src/components/Input/Input.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,yCAAyC;AAE9D,OAAO,EAAE,WAAW,EAAE,8BAAoB;AAE1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAGvC;IACF,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;QACvB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ;QACxC,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,aAAa;KACnD;IACD,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;QACvB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ;QACxC,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,aAAa;KACnD;IACD,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;QACvB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ;QACxC,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,aAAa;KACnD;IACD,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;QACvB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ;QACxC,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,aAAa;KACnD;IACD,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;QACvB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ;QACxC,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,aAAa;KACnD;IACD,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;QACpB,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,QAAQ;QAC3C,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,aAAa;KACtD;IACD,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;QACpB,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ;QACrC,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,aAAa;KAChD;IACD,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;QACpB,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ;QACrC,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,aAAa;KAChD;IACD,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;QACpB,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ;QACrC,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,aAAa;KAChD;IACD,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;QACzB,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ;QAC1C,aAAa,EAAE,UAAU,CAAC,YAAY,CAAC,aAAa;KACrD;IACD,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE;QAC5B,QAAQ,EAAE,UAAU,CAAC,eAAe,CAAC,QAAQ;QAC7C,aAAa,EAAE,UAAU,CAAC,eAAe,CAAC,aAAa;KACxD;IACD,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;QAC3B,QAAQ,EAAE,UAAU,CAAC,cAAc,CAAC,QAAQ;QAC5C,aAAa,EAAE,UAAU,CAAC,cAAc,CAAC,aAAa;KACvD;IACD,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;QAC3B,QAAQ,EAAE,UAAU,CAAC,cAAc,CAAC,QAAQ;QAC5C,aAAa,EAAE,UAAU,CAAC,cAAc,CAAC,aAAa;KACvD;IACD,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE;QAC7B,QAAQ,EAAE,UAAU,CAAC,gBAAgB,CAAC,QAAQ;QAC9C,aAAa,EAAE,UAAU,CAAC,gBAAgB,CAAC,aAAa;KACzD;CACF,CAAC","sourcesContent":["import { typography } from '@metamask-previews/design-tokens';\n\nimport { TextVariant } from '../../types';\n\n/**\n * Typographic metrics for Input: same tokens as `text-*` utilities but **without** `lineHeight`.\n * React Native `TextInput` aligns single-line text more predictably when line height is not set\n * from the design-system paragraph specs (matches legacy / temp Input.styles behavior).\n */\nexport const MAP_TEXT_VARIANT_INPUT_METRICS: Record<\n TextVariant,\n { fontSize: number; letterSpacing: number }\n> = {\n [TextVariant.DisplayLg]: {\n fontSize: typography.sDisplayLG.fontSize,\n letterSpacing: typography.sDisplayLG.letterSpacing,\n },\n [TextVariant.DisplayMd]: {\n fontSize: typography.sDisplayMD.fontSize,\n letterSpacing: typography.sDisplayMD.letterSpacing,\n },\n [TextVariant.HeadingLg]: {\n fontSize: typography.sHeadingLG.fontSize,\n letterSpacing: typography.sHeadingLG.letterSpacing,\n },\n [TextVariant.HeadingMd]: {\n fontSize: typography.sHeadingMD.fontSize,\n letterSpacing: typography.sHeadingMD.letterSpacing,\n },\n [TextVariant.HeadingSm]: {\n fontSize: typography.sHeadingSM.fontSize,\n letterSpacing: typography.sHeadingSM.letterSpacing,\n },\n [TextVariant.BodyLg]: {\n fontSize: typography.sBodyLGMedium.fontSize,\n letterSpacing: typography.sBodyLGMedium.letterSpacing,\n },\n [TextVariant.BodyMd]: {\n fontSize: typography.sBodyMD.fontSize,\n letterSpacing: typography.sBodyMD.letterSpacing,\n },\n [TextVariant.BodySm]: {\n fontSize: typography.sBodySM.fontSize,\n letterSpacing: typography.sBodySM.letterSpacing,\n },\n [TextVariant.BodyXs]: {\n fontSize: typography.sBodyXS.fontSize,\n letterSpacing: typography.sBodyXS.letterSpacing,\n },\n [TextVariant.PageHeading]: {\n fontSize: typography.sPageHeading.fontSize,\n letterSpacing: typography.sPageHeading.letterSpacing,\n },\n [TextVariant.SectionHeading]: {\n fontSize: typography.sSectionHeading.fontSize,\n letterSpacing: typography.sSectionHeading.letterSpacing,\n },\n [TextVariant.ButtonLabelMd]: {\n fontSize: typography.sButtonLabelMd.fontSize,\n letterSpacing: typography.sButtonLabelMd.letterSpacing,\n },\n [TextVariant.ButtonLabelLg]: {\n fontSize: typography.sButtonLabelLg.fontSize,\n letterSpacing: typography.sButtonLabelLg.letterSpacing,\n },\n [TextVariant.AmountDisplayLg]: {\n fontSize: typography.sAmountDisplayLg.fontSize,\n letterSpacing: typography.sAmountDisplayLg.letterSpacing,\n },\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Input.d.cts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAY,SAAS,EAAE,8BAAqB;AAEnD,OAAO,EAAc,WAAW,EAAE,8BAAoB;AAQtD,eAAO,MAAM,KAAK;;;;;;;6CAmHjB,CAAC"}
1
+ {"version":3,"file":"Input.d.cts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAY,SAAS,EAAE,8BAAqB;AAEnD,OAAO,EAAc,WAAW,EAAE,8BAAoB;AAStD,eAAO,MAAM,KAAK;;;;;;;6CAqHjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Input.d.mts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAY,SAAS,EAAE,8BAAqB;AAEnD,OAAO,EAAc,WAAW,EAAE,8BAAoB;AAQtD,eAAO,MAAM,KAAK;;;;;;;6CAmHjB,CAAC"}
1
+ {"version":3,"file":"Input.d.mts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAY,SAAS,EAAE,8BAAqB;AAEnD,OAAO,EAAc,WAAW,EAAE,8BAAoB;AAStD,eAAO,MAAM,KAAK;;;;;;;6CAqHjB,CAAC"}
@@ -4,6 +4,7 @@ import { forwardRef, useCallback, useMemo, useState } from "react";
4
4
  import { Platform, TextInput } from "react-native/index.js";
5
5
  import { FontFamily, TextVariant } from "../../types/index.mjs";
6
6
  import { MAP_TEXT_VARIANT_FONTWEIGHT, TWCLASSMAP_TEXT_FONTWEIGHT } from "../Text/Text.constants.mjs";
7
+ import { MAP_TEXT_VARIANT_INPUT_METRICS } from "./Input.constants.mjs";
7
8
  export const Input = forwardRef(({ style, textVariant = TextVariant.BodyMd, isStateStylesDisabled, isDisabled = false, isReadonly = false, value, placeholder, twClassName, onBlur, onFocus, autoFocus = false, ...props }, ref) => {
8
9
  const [isFocused, setIsFocused] = useState(autoFocus);
9
10
  const tw = useTailwind();
@@ -19,11 +20,10 @@ export const Input = forwardRef(({ style, textVariant = TextVariant.BodyMd, isSt
19
20
  // the controlled value is empty. This keeps the iOS lineHeight workaround
20
21
  // scoped to the placeholder-visible state without affecting typed text.
21
22
  const isPlaceholderVisible = hasPlaceholder && value === '';
22
- const inputStyle = useMemo(() => tw.style(`text-${textVariant}`, fontClass, 'text-default', 'bg-default', 'border', 'border-transparent', !isStateStylesDisabled && isDisabled && 'opacity-50', !isStateStylesDisabled &&
23
+ const inputStyle = useMemo(() => tw.style(fontClass, 'text-default', 'bg-default', 'border', 'border-transparent', !isStateStylesDisabled && isDisabled && 'opacity-50', !isStateStylesDisabled &&
23
24
  !isDisabled &&
24
25
  isFocused &&
25
26
  'border-primary-default', twClassName), [
26
- textVariant,
27
27
  fontClass,
28
28
  isStateStylesDisabled,
29
29
  isDisabled,
@@ -31,6 +31,7 @@ export const Input = forwardRef(({ style, textVariant = TextVariant.BodyMd, isSt
31
31
  twClassName,
32
32
  tw,
33
33
  ]);
34
+ const variantTextStyle = useMemo(() => MAP_TEXT_VARIANT_INPUT_METRICS[textVariant], [textVariant]);
34
35
  /* istanbul ignore next: handler body covered by focus/blur tests */
35
36
  const onBlurHandler = useCallback((e) => {
36
37
  if (!isDisabled) {
@@ -47,12 +48,12 @@ export const Input = forwardRef(({ style, textVariant = TextVariant.BodyMd, isSt
47
48
  }, [isDisabled, onFocus]);
48
49
  const resolvedStyle = [
49
50
  inputStyle,
51
+ variantTextStyle,
50
52
  // iOS-only workaround: when a placeholder is visible, native iOS
51
53
  // TextInput can render placeholder text vertically offset.
52
54
  // Keep this iOS-only because lineHeight: 0 can collapse text on Android.
53
55
  Platform.OS === 'ios' &&
54
56
  isPlaceholderVisible && { lineHeight: 0 },
55
- Platform.OS === 'ios' && { textAlignVertical: 'center' },
56
57
  style,
57
58
  ].filter(Boolean);
58
59
  return (<TextInput ref={ref} placeholderTextColor={placeholderTextColor} {...props} placeholder={placeholder} value={value} style={resolvedStyle} editable={!isDisabled && !isReadonly} autoFocus={autoFocus} onBlur={onBlurHandler} onFocus={onFocusHandler}/>);
@@ -1 +1 @@
1
- {"version":3,"file":"Input.mjs","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Theme,\n useTailwind,\n useTheme,\n} from '@metamask-previews/design-system-twrnc-preset';\nimport { darkTheme, lightTheme } from '@metamask-previews/design-tokens';\nimport { forwardRef, useCallback, useMemo, useState } from 'react';\nimport { Platform, TextInput } from 'react-native';\n\nimport { FontFamily, TextVariant } from '../../types';\nimport {\n MAP_TEXT_VARIANT_FONTWEIGHT,\n TWCLASSMAP_TEXT_FONTWEIGHT,\n} from '../Text/Text.constants';\n\nimport type { InputProps } from './Input.types';\n\nexport const Input = forwardRef<TextInput, InputProps>(\n (\n {\n style,\n textVariant = TextVariant.BodyMd,\n isStateStylesDisabled,\n isDisabled = false,\n isReadonly = false,\n value,\n placeholder,\n twClassName,\n onBlur,\n onFocus,\n autoFocus = false,\n ...props\n },\n ref,\n ) => {\n const [isFocused, setIsFocused] = useState(autoFocus);\n const tw = useTailwind();\n const theme = useTheme();\n\n const placeholderTextColor = useMemo(\n () =>\n theme === Theme.Light\n ? lightTheme.colors.text.alternative\n : darkTheme.colors.text.alternative,\n [theme],\n );\n\n const finalFontWeight = MAP_TEXT_VARIANT_FONTWEIGHT[textVariant];\n const fontSuffix = TWCLASSMAP_TEXT_FONTWEIGHT[finalFontWeight];\n const fontClass = `font-${FontFamily.Default}${fontSuffix}`;\n const hasPlaceholder =\n placeholder !== undefined && placeholder !== null && placeholder !== '';\n // Only apply placeholder-mode styling when a placeholder is present and\n // the controlled value is empty. This keeps the iOS lineHeight workaround\n // scoped to the placeholder-visible state without affecting typed text.\n const isPlaceholderVisible = hasPlaceholder && value === '';\n\n const inputStyle = useMemo(\n () =>\n tw.style(\n `text-${textVariant}`,\n fontClass,\n 'text-default',\n 'bg-default',\n 'border',\n 'border-transparent',\n !isStateStylesDisabled && isDisabled && 'opacity-50',\n !isStateStylesDisabled &&\n !isDisabled &&\n isFocused &&\n 'border-primary-default',\n twClassName,\n ),\n [\n textVariant,\n fontClass,\n isStateStylesDisabled,\n isDisabled,\n isFocused,\n twClassName,\n tw,\n ],\n );\n\n /* istanbul ignore next: handler body covered by focus/blur tests */\n const onBlurHandler = useCallback(\n (e: Parameters<NonNullable<InputProps['onBlur']>>[0]) => {\n if (!isDisabled) {\n setIsFocused(false);\n onBlur?.(e);\n }\n },\n [isDisabled, onBlur],\n );\n\n /* istanbul ignore next: handler body covered by focus/blur tests */\n const onFocusHandler = useCallback(\n (e: Parameters<NonNullable<InputProps['onFocus']>>[0]) => {\n if (!isDisabled) {\n setIsFocused(true);\n onFocus?.(e);\n }\n },\n [isDisabled, onFocus],\n );\n\n const resolvedStyle = [\n inputStyle,\n // iOS-only workaround: when a placeholder is visible, native iOS\n // TextInput can render placeholder text vertically offset.\n // Keep this iOS-only because lineHeight: 0 can collapse text on Android.\n Platform.OS === 'ios' &&\n isPlaceholderVisible && { lineHeight: 0 as const },\n Platform.OS === 'ios' && { textAlignVertical: 'center' as const },\n style,\n ].filter(Boolean);\n\n return (\n <TextInput\n ref={ref}\n placeholderTextColor={placeholderTextColor}\n {...props}\n placeholder={placeholder}\n value={value}\n style={resolvedStyle}\n editable={!isDisabled && !isReadonly}\n autoFocus={autoFocus}\n onBlur={onBlurHandler}\n onFocus={onFocusHandler}\n />\n );\n },\n);\n"]}
1
+ {"version":3,"file":"Input.mjs","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Theme,\n useTailwind,\n useTheme,\n} from '@metamask-previews/design-system-twrnc-preset';\nimport { darkTheme, lightTheme } from '@metamask-previews/design-tokens';\nimport { forwardRef, useCallback, useMemo, useState } from 'react';\nimport { Platform, TextInput } from 'react-native';\n\nimport { FontFamily, TextVariant } from '../../types';\nimport {\n MAP_TEXT_VARIANT_FONTWEIGHT,\n TWCLASSMAP_TEXT_FONTWEIGHT,\n} from '../Text/Text.constants';\n\nimport { MAP_TEXT_VARIANT_INPUT_METRICS } from './Input.constants';\nimport type { InputProps } from './Input.types';\n\nexport const Input = forwardRef<TextInput, InputProps>(\n (\n {\n style,\n textVariant = TextVariant.BodyMd,\n isStateStylesDisabled,\n isDisabled = false,\n isReadonly = false,\n value,\n placeholder,\n twClassName,\n onBlur,\n onFocus,\n autoFocus = false,\n ...props\n },\n ref,\n ) => {\n const [isFocused, setIsFocused] = useState(autoFocus);\n const tw = useTailwind();\n const theme = useTheme();\n\n const placeholderTextColor = useMemo(\n () =>\n theme === Theme.Light\n ? lightTheme.colors.text.alternative\n : darkTheme.colors.text.alternative,\n [theme],\n );\n\n const finalFontWeight = MAP_TEXT_VARIANT_FONTWEIGHT[textVariant];\n const fontSuffix = TWCLASSMAP_TEXT_FONTWEIGHT[finalFontWeight];\n const fontClass = `font-${FontFamily.Default}${fontSuffix}`;\n const hasPlaceholder =\n placeholder !== undefined && placeholder !== null && placeholder !== '';\n // Only apply placeholder-mode styling when a placeholder is present and\n // the controlled value is empty. This keeps the iOS lineHeight workaround\n // scoped to the placeholder-visible state without affecting typed text.\n const isPlaceholderVisible = hasPlaceholder && value === '';\n\n const inputStyle = useMemo(\n () =>\n tw.style(\n fontClass,\n 'text-default',\n 'bg-default',\n 'border',\n 'border-transparent',\n !isStateStylesDisabled && isDisabled && 'opacity-50',\n !isStateStylesDisabled &&\n !isDisabled &&\n isFocused &&\n 'border-primary-default',\n twClassName,\n ),\n [\n fontClass,\n isStateStylesDisabled,\n isDisabled,\n isFocused,\n twClassName,\n tw,\n ],\n );\n\n const variantTextStyle = useMemo(\n () => MAP_TEXT_VARIANT_INPUT_METRICS[textVariant],\n [textVariant],\n );\n\n /* istanbul ignore next: handler body covered by focus/blur tests */\n const onBlurHandler = useCallback(\n (e: Parameters<NonNullable<InputProps['onBlur']>>[0]) => {\n if (!isDisabled) {\n setIsFocused(false);\n onBlur?.(e);\n }\n },\n [isDisabled, onBlur],\n );\n\n /* istanbul ignore next: handler body covered by focus/blur tests */\n const onFocusHandler = useCallback(\n (e: Parameters<NonNullable<InputProps['onFocus']>>[0]) => {\n if (!isDisabled) {\n setIsFocused(true);\n onFocus?.(e);\n }\n },\n [isDisabled, onFocus],\n );\n const resolvedStyle = [\n inputStyle,\n variantTextStyle,\n // iOS-only workaround: when a placeholder is visible, native iOS\n // TextInput can render placeholder text vertically offset.\n // Keep this iOS-only because lineHeight: 0 can collapse text on Android.\n Platform.OS === 'ios' &&\n isPlaceholderVisible && { lineHeight: 0 as const },\n style,\n ].filter(Boolean);\n\n return (\n <TextInput\n ref={ref}\n placeholderTextColor={placeholderTextColor}\n {...props}\n placeholder={placeholder}\n value={value}\n style={resolvedStyle}\n editable={!isDisabled && !isReadonly}\n autoFocus={autoFocus}\n onBlur={onBlurHandler}\n onFocus={onFocusHandler}\n />\n );\n },\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Text.types.cjs","sourceRoot":"","sources":["../../../src/components/Text/Text.types.ts"],"names":[],"mappings":"","sourcesContent":["// Third party dependencies.\nimport type { TextProps as RNTextProps } from 'react-native';\n\nimport type {\n TextVariant,\n TextColor,\n FontWeight,\n FontFamily,\n FontStyle,\n} from '../../types';\n\n/**\n * Text component props.\n */\nexport type TextProps = {\n /**\n * Optional enum to select between Typography variants.\n *\n * @default BodyMD\n */\n variant?: TextVariant;\n /**\n * Text to be displayed.\n */\n children: React.ReactNode;\n /**\n * Optional prop to add color to text.\n */\n color?: TextColor;\n /**\n * Optional prop to control the font weight of the text.\n * Normal: 400\n * Medium: 500\n * Bold: 700\n */\n fontWeight?: FontWeight;\n /**\n * Optional prop to adjust the font family.\n * Default: Geist\n * Accent: MM Sans\n * Hero: MM Poly\n */\n fontFamily?: FontFamily;\n /**\n * Optional prop to adjust the style of the font.\n */\n fontStyle?: FontStyle;\n /**\n * Optional prop to add twrnc overriding classNames.\n */\n twClassName?: string;\n} & RNTextProps;\n"]}
1
+ {"version":3,"file":"Text.types.cjs","sourceRoot":"","sources":["../../../src/components/Text/Text.types.ts"],"names":[],"mappings":"","sourcesContent":["// Third party dependencies.\nimport type { TextProps as RNTextProps } from 'react-native';\n\nimport type {\n TextVariant,\n TextColor,\n FontWeight,\n FontFamily,\n FontStyle,\n} from '../../types';\n\n/**\n * Text component props.\n */\nexport type TextProps = {\n /**\n * Optional enum to select between Typography variants.\n *\n * @default BodyMD\n */\n variant?: TextVariant;\n /**\n * Text to be displayed.\n */\n children: React.ReactNode;\n /**\n * Optional prop to add color to text.\n */\n color?: TextColor;\n /**\n * Optional prop to control the font weight of the text.\n * Normal: 400\n * Medium: 500\n * Bold: 600\n */\n fontWeight?: FontWeight;\n /**\n * Optional prop to adjust the font family.\n * Default: Geist\n * Accent: MM Sans\n * Hero: MM Poly\n */\n fontFamily?: FontFamily;\n /**\n * Optional prop to adjust the style of the font.\n */\n fontStyle?: FontStyle;\n /**\n * Optional prop to add twrnc overriding classNames.\n */\n twClassName?: string;\n} & RNTextProps;\n"]}
@@ -22,7 +22,7 @@ export type TextProps = {
22
22
  * Optional prop to control the font weight of the text.
23
23
  * Normal: 400
24
24
  * Medium: 500
25
- * Bold: 700
25
+ * Bold: 600
26
26
  */
27
27
  fontWeight?: FontWeight;
28
28
  /**
@@ -22,7 +22,7 @@ export type TextProps = {
22
22
  * Optional prop to control the font weight of the text.
23
23
  * Normal: 400
24
24
  * Medium: 500
25
- * Bold: 700
25
+ * Bold: 600
26
26
  */
27
27
  fontWeight?: FontWeight;
28
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Text.types.mjs","sourceRoot":"","sources":["../../../src/components/Text/Text.types.ts"],"names":[],"mappings":"","sourcesContent":["// Third party dependencies.\nimport type { TextProps as RNTextProps } from 'react-native';\n\nimport type {\n TextVariant,\n TextColor,\n FontWeight,\n FontFamily,\n FontStyle,\n} from '../../types';\n\n/**\n * Text component props.\n */\nexport type TextProps = {\n /**\n * Optional enum to select between Typography variants.\n *\n * @default BodyMD\n */\n variant?: TextVariant;\n /**\n * Text to be displayed.\n */\n children: React.ReactNode;\n /**\n * Optional prop to add color to text.\n */\n color?: TextColor;\n /**\n * Optional prop to control the font weight of the text.\n * Normal: 400\n * Medium: 500\n * Bold: 700\n */\n fontWeight?: FontWeight;\n /**\n * Optional prop to adjust the font family.\n * Default: Geist\n * Accent: MM Sans\n * Hero: MM Poly\n */\n fontFamily?: FontFamily;\n /**\n * Optional prop to adjust the style of the font.\n */\n fontStyle?: FontStyle;\n /**\n * Optional prop to add twrnc overriding classNames.\n */\n twClassName?: string;\n} & RNTextProps;\n"]}
1
+ {"version":3,"file":"Text.types.mjs","sourceRoot":"","sources":["../../../src/components/Text/Text.types.ts"],"names":[],"mappings":"","sourcesContent":["// Third party dependencies.\nimport type { TextProps as RNTextProps } from 'react-native';\n\nimport type {\n TextVariant,\n TextColor,\n FontWeight,\n FontFamily,\n FontStyle,\n} from '../../types';\n\n/**\n * Text component props.\n */\nexport type TextProps = {\n /**\n * Optional enum to select between Typography variants.\n *\n * @default BodyMD\n */\n variant?: TextVariant;\n /**\n * Text to be displayed.\n */\n children: React.ReactNode;\n /**\n * Optional prop to add color to text.\n */\n color?: TextColor;\n /**\n * Optional prop to control the font weight of the text.\n * Normal: 400\n * Medium: 500\n * Bold: 600\n */\n fontWeight?: FontWeight;\n /**\n * Optional prop to adjust the font family.\n * Default: Geist\n * Accent: MM Sans\n * Hero: MM Poly\n */\n fontFamily?: FontFamily;\n /**\n * Optional prop to adjust the style of the font.\n */\n fontStyle?: FontStyle;\n /**\n * Optional prop to add twrnc overriding classNames.\n */\n twClassName?: string;\n} & RNTextProps;\n"]}
@@ -24,45 +24,21 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.TextButton = void 0;
27
- const design_system_twrnc_preset_1 = require("@metamask-previews/design-system-twrnc-preset");
28
27
  const react_1 = __importStar(require("react"));
29
- const react_native_1 = require("react-native/index.js");
30
28
  const types_1 = require("../../types/index.cjs");
31
- const Icon_1 = require("../Icon/index.cjs");
32
29
  const Text_1 = require("../Text/index.cjs");
33
- const TextButton_constants_1 = require("./TextButton.constants.cjs");
34
- const TextButton = ({ children, size = types_1.TextButtonSize.BodyMd, textProps, startIconName, startIconProps, startAccessory, endIconName, endIconProps, endAccessory, isDisabled = false, isInverse = false, twClassName = '', accessibilityRole, accessibilityLabel, style, ...props }) => {
35
- const tw = (0, design_system_twrnc_preset_1.useTailwind)();
36
- /**
37
- * Calculating the baselineOffset. This baselineOffset is needed to make sure
38
- * the TextButton aligns perfectly when placed within Text elements
39
- */
40
- // eslint-disable-next-line tailwindcss/no-custom-classname
41
- const { fontSize, lineHeight } = tw `text-${TextButton_constants_1.MAP_TEXTBUTTON_SIZE_TEXTVARIANT[size]}`;
42
- const baselineOffset = (lineHeight - fontSize) / 2;
43
- const getTextColor = (0, react_1.useCallback)((pressed) => {
44
- if (isInverse) {
45
- return 'text-primary-inverse';
46
- }
47
- return pressed ? 'text-primary-default-pressed' : 'text-primary-default';
48
- }, [isInverse]);
49
- const getTextDecoration = (0, react_1.useCallback)((pressed) => isInverse || pressed ? 'underline' : 'no-underline', [isInverse]);
50
- return (<Text_1.Text>
51
- <react_native_1.Pressable accessibilityRole={accessibilityRole ?? 'button'} accessibilityLabel={accessibilityLabel} disabled={isDisabled} style={({ pressed }) => [
52
- { transform: [{ translateY: baselineOffset }] },
53
- tw `flex-row items-center ${pressed ? 'bg-pressed' : 'bg-transparent'} ${isDisabled ? 'opacity-50' : 'opacity-100'} ${twClassName}`,
54
- style,
55
- ]} {...props}>
56
- {({ pressed }) => (<>
57
- {startIconName ? (<Icon_1.Icon name={startIconName} size={Icon_1.IconSize.Sm} testID="start-icon" twClassName={`${getTextColor(pressed)} mr-1`} {...startIconProps}/>) : (startAccessory)}
58
-
59
- <Text_1.Text variant={TextButton_constants_1.MAP_TEXTBUTTON_SIZE_TEXTVARIANT[size]} fontWeight={Text_1.FontWeight.Medium} {...textProps} twClassName={` ${getTextColor(pressed)} ${getTextDecoration(pressed)} ${textProps?.twClassName ?? ''} `}>
60
- {children}
61
- </Text_1.Text>
62
-
63
- {endIconName ? (<Icon_1.Icon name={endIconName} size={Icon_1.IconSize.Sm} testID="end-icon" twClassName={`${getTextColor(pressed)} ml-1`} {...endIconProps}/>) : (endAccessory)}
64
- </>)}
65
- </react_native_1.Pressable>
30
+ const TextButton = ({ children, variant = types_1.TextVariant.BodyMd, fontWeight = Text_1.FontWeight.Medium, twClassName, accessibilityRole = 'link', onPress, onPressIn, onPressOut, suppressHighlighting = true, ...rest }) => {
31
+ const [pressed, setPressed] = (0, react_1.useState)(false);
32
+ const handlePressIn = (e) => {
33
+ setPressed(true);
34
+ onPressIn?.(e);
35
+ };
36
+ const handlePressOut = (e) => {
37
+ setPressed(false);
38
+ onPressOut?.(e);
39
+ };
40
+ return (<Text_1.Text {...rest} accessibilityRole={accessibilityRole} variant={variant} fontWeight={fontWeight} color={pressed ? types_1.TextColor.PrimaryDefaultPressed : types_1.TextColor.PrimaryDefault} twClassName={twClassName} onPress={onPress} onPressIn={handlePressIn} onPressOut={handlePressOut} suppressHighlighting={suppressHighlighting}>
41
+ {children}
66
42
  </Text_1.Text>);
67
43
  };
68
44
  exports.TextButton = TextButton;
@@ -1 +1 @@
1
- {"version":3,"file":"TextButton.cjs","sourceRoot":"","sources":["../../../src/components/TextButton/TextButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useTailwind } from '@metamask-previews/design-system-twrnc-preset';\nimport React, { useCallback } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { TextButtonSize } from '../../types';\nimport { Icon, IconSize } from '../Icon';\nimport { Text, FontWeight } from '../Text';\n\nimport { MAP_TEXTBUTTON_SIZE_TEXTVARIANT } from './TextButton.constants';\nimport type { TextButtonProps } from './TextButton.types';\n\nexport const TextButton: React.FC<TextButtonProps> = ({\n children,\n size = TextButtonSize.BodyMd,\n textProps,\n startIconName,\n startIconProps,\n startAccessory,\n endIconName,\n endIconProps,\n endAccessory,\n isDisabled = false,\n isInverse = false,\n twClassName = '',\n accessibilityRole,\n accessibilityLabel,\n style,\n ...props\n}) => {\n const tw = useTailwind();\n /**\n * Calculating the baselineOffset. This baselineOffset is needed to make sure\n * the TextButton aligns perfectly when placed within Text elements\n */\n // eslint-disable-next-line tailwindcss/no-custom-classname\n const { fontSize, lineHeight } = tw`text-${\n MAP_TEXTBUTTON_SIZE_TEXTVARIANT[size] as string\n }` as {\n fontSize: number;\n lineHeight: number;\n };\n const baselineOffset = (lineHeight - fontSize) / 2;\n\n const getTextColor = useCallback(\n (pressed: boolean): string => {\n if (isInverse) {\n return 'text-primary-inverse';\n }\n return pressed ? 'text-primary-default-pressed' : 'text-primary-default';\n },\n [isInverse],\n );\n\n const getTextDecoration = useCallback(\n (pressed: boolean): string =>\n isInverse || pressed ? 'underline' : 'no-underline',\n [isInverse],\n );\n\n return (\n <Text>\n <Pressable\n accessibilityRole={accessibilityRole ?? 'button'}\n accessibilityLabel={accessibilityLabel}\n disabled={isDisabled}\n style={({ pressed }) => [\n { transform: [{ translateY: baselineOffset }] },\n tw`flex-row items-center ${pressed ? 'bg-pressed' : 'bg-transparent'} ${isDisabled ? 'opacity-50' : 'opacity-100'} ${twClassName}`,\n style,\n ]}\n {...props}\n >\n {({ pressed }) => (\n <>\n {startIconName ? (\n <Icon\n name={startIconName}\n size={IconSize.Sm}\n testID=\"start-icon\"\n twClassName={`${getTextColor(pressed)} mr-1`}\n {...startIconProps}\n />\n ) : (\n startAccessory\n )}\n\n <Text\n variant={MAP_TEXTBUTTON_SIZE_TEXTVARIANT[size]}\n fontWeight={FontWeight.Medium}\n {...textProps}\n twClassName={` ${getTextColor(pressed)} ${getTextDecoration(pressed)} ${textProps?.twClassName ?? ''} `}\n >\n {children}\n </Text>\n\n {endIconName ? (\n <Icon\n name={endIconName}\n size={IconSize.Sm}\n testID=\"end-icon\"\n twClassName={`${getTextColor(pressed)} ml-1`}\n {...endIconProps}\n />\n ) : (\n endAccessory\n )}\n </>\n )}\n </Pressable>\n </Text>\n );\n};\n"]}
1
+ {"version":3,"file":"TextButton.cjs","sourceRoot":"","sources":["../../../src/components/TextButton/TextButton.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AAExC,iDAAqD;AACrD,4CAA2C;AAIpC,MAAM,UAAU,GAA8B,CAAC,EACpD,QAAQ,EACR,OAAO,GAAG,mBAAW,CAAC,MAAM,EAC5B,UAAU,GAAG,iBAAU,CAAC,MAAM,EAC9B,WAAW,EACX,iBAAiB,GAAG,MAAM,EAC1B,OAAO,EACP,SAAS,EACT,UAAU,EACV,oBAAoB,GAAG,IAAI,EAC3B,GAAG,IAAI,EACR,EAAE,EAAE;IACH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,aAAa,GAA8C,CAAC,CAAC,EAAE,EAAE;QACrE,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,cAAc,GAA+C,CAAC,CAAC,EAAE,EAAE;QACvE,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CACL,CAAC,WAAI,CACH,IAAI,IAAI,CAAC,CACT,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,UAAU,CAAC,CAAC,UAAU,CAAC,CACvB,KAAK,CAAC,CACJ,OAAO,CAAC,CAAC,CAAC,iBAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,iBAAS,CAAC,cAAc,CACrE,CACD,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,SAAS,CAAC,CAAC,aAAa,CAAC,CACzB,UAAU,CAAC,CAAC,cAAc,CAAC,CAC3B,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,CAE3C;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,WAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AA1CW,QAAA,UAAU,cA0CrB","sourcesContent":["import React, { useState } from 'react';\n\nimport { TextVariant, TextColor } from '../../types';\nimport { Text, FontWeight } from '../Text';\n\nimport type { TextButtonProps } from './TextButton.types';\n\nexport const TextButton: React.FC<TextButtonProps> = ({\n children,\n variant = TextVariant.BodyMd,\n fontWeight = FontWeight.Medium,\n twClassName,\n accessibilityRole = 'link',\n onPress,\n onPressIn,\n onPressOut,\n suppressHighlighting = true,\n ...rest\n}) => {\n const [pressed, setPressed] = useState(false);\n\n const handlePressIn: NonNullable<TextButtonProps['onPressIn']> = (e) => {\n setPressed(true);\n onPressIn?.(e);\n };\n\n const handlePressOut: NonNullable<TextButtonProps['onPressOut']> = (e) => {\n setPressed(false);\n onPressOut?.(e);\n };\n\n return (\n <Text\n {...rest}\n accessibilityRole={accessibilityRole}\n variant={variant}\n fontWeight={fontWeight}\n color={\n pressed ? TextColor.PrimaryDefaultPressed : TextColor.PrimaryDefault\n }\n twClassName={twClassName}\n onPress={onPress}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n suppressHighlighting={suppressHighlighting}\n >\n {children}\n </Text>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TextButton.d.cts","sourceRoot":"","sources":["../../../src/components/TextButton/TextButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,cAAc;AAQ3C,OAAO,KAAK,EAAE,eAAe,EAAE,+BAA2B;AAE1D,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAoGhD,CAAC"}
1
+ {"version":3,"file":"TextButton.d.cts","sourceRoot":"","sources":["../../../src/components/TextButton/TextButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,cAAc;AAKxC,OAAO,KAAK,EAAE,eAAe,EAAE,+BAA2B;AAE1D,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0ChD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextButton.d.mts","sourceRoot":"","sources":["../../../src/components/TextButton/TextButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,cAAc;AAQ3C,OAAO,KAAK,EAAE,eAAe,EAAE,+BAA2B;AAE1D,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAoGhD,CAAC"}
1
+ {"version":3,"file":"TextButton.d.mts","sourceRoot":"","sources":["../../../src/components/TextButton/TextButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,cAAc;AAKxC,OAAO,KAAK,EAAE,eAAe,EAAE,+BAA2B;AAE1D,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0ChD,CAAC"}
@@ -4,46 +4,22 @@ function $importDefault(module) {
4
4
  }
5
5
  return module;
6
6
  }
7
- import { useTailwind } from "@metamask-previews/design-system-twrnc-preset";
8
- import $React, { useCallback } from "react";
7
+ import $React, { useState } from "react";
9
8
  const React = $importDefault($React);
10
- import { Pressable } from "react-native/index.js";
11
- import { TextButtonSize } from "../../types/index.mjs";
12
- import { Icon, IconSize } from "../Icon/index.mjs";
9
+ import { TextVariant, TextColor } from "../../types/index.mjs";
13
10
  import { Text, FontWeight } from "../Text/index.mjs";
14
- import { MAP_TEXTBUTTON_SIZE_TEXTVARIANT } from "./TextButton.constants.mjs";
15
- export const TextButton = ({ children, size = TextButtonSize.BodyMd, textProps, startIconName, startIconProps, startAccessory, endIconName, endIconProps, endAccessory, isDisabled = false, isInverse = false, twClassName = '', accessibilityRole, accessibilityLabel, style, ...props }) => {
16
- const tw = useTailwind();
17
- /**
18
- * Calculating the baselineOffset. This baselineOffset is needed to make sure
19
- * the TextButton aligns perfectly when placed within Text elements
20
- */
21
- // eslint-disable-next-line tailwindcss/no-custom-classname
22
- const { fontSize, lineHeight } = tw `text-${MAP_TEXTBUTTON_SIZE_TEXTVARIANT[size]}`;
23
- const baselineOffset = (lineHeight - fontSize) / 2;
24
- const getTextColor = useCallback((pressed) => {
25
- if (isInverse) {
26
- return 'text-primary-inverse';
27
- }
28
- return pressed ? 'text-primary-default-pressed' : 'text-primary-default';
29
- }, [isInverse]);
30
- const getTextDecoration = useCallback((pressed) => isInverse || pressed ? 'underline' : 'no-underline', [isInverse]);
31
- return (<Text>
32
- <Pressable accessibilityRole={accessibilityRole ?? 'button'} accessibilityLabel={accessibilityLabel} disabled={isDisabled} style={({ pressed }) => [
33
- { transform: [{ translateY: baselineOffset }] },
34
- tw `flex-row items-center ${pressed ? 'bg-pressed' : 'bg-transparent'} ${isDisabled ? 'opacity-50' : 'opacity-100'} ${twClassName}`,
35
- style,
36
- ]} {...props}>
37
- {({ pressed }) => (<>
38
- {startIconName ? (<Icon name={startIconName} size={IconSize.Sm} testID="start-icon" twClassName={`${getTextColor(pressed)} mr-1`} {...startIconProps}/>) : (startAccessory)}
39
-
40
- <Text variant={MAP_TEXTBUTTON_SIZE_TEXTVARIANT[size]} fontWeight={FontWeight.Medium} {...textProps} twClassName={` ${getTextColor(pressed)} ${getTextDecoration(pressed)} ${textProps?.twClassName ?? ''} `}>
41
- {children}
42
- </Text>
43
-
44
- {endIconName ? (<Icon name={endIconName} size={IconSize.Sm} testID="end-icon" twClassName={`${getTextColor(pressed)} ml-1`} {...endIconProps}/>) : (endAccessory)}
45
- </>)}
46
- </Pressable>
11
+ export const TextButton = ({ children, variant = TextVariant.BodyMd, fontWeight = FontWeight.Medium, twClassName, accessibilityRole = 'link', onPress, onPressIn, onPressOut, suppressHighlighting = true, ...rest }) => {
12
+ const [pressed, setPressed] = useState(false);
13
+ const handlePressIn = (e) => {
14
+ setPressed(true);
15
+ onPressIn?.(e);
16
+ };
17
+ const handlePressOut = (e) => {
18
+ setPressed(false);
19
+ onPressOut?.(e);
20
+ };
21
+ return (<Text {...rest} accessibilityRole={accessibilityRole} variant={variant} fontWeight={fontWeight} color={pressed ? TextColor.PrimaryDefaultPressed : TextColor.PrimaryDefault} twClassName={twClassName} onPress={onPress} onPressIn={handlePressIn} onPressOut={handlePressOut} suppressHighlighting={suppressHighlighting}>
22
+ {children}
47
23
  </Text>);
48
24
  };
49
25
  //# sourceMappingURL=TextButton.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextButton.mjs","sourceRoot":"","sources":["../../../src/components/TextButton/TextButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useTailwind } from '@metamask-previews/design-system-twrnc-preset';\nimport React, { useCallback } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { TextButtonSize } from '../../types';\nimport { Icon, IconSize } from '../Icon';\nimport { Text, FontWeight } from '../Text';\n\nimport { MAP_TEXTBUTTON_SIZE_TEXTVARIANT } from './TextButton.constants';\nimport type { TextButtonProps } from './TextButton.types';\n\nexport const TextButton: React.FC<TextButtonProps> = ({\n children,\n size = TextButtonSize.BodyMd,\n textProps,\n startIconName,\n startIconProps,\n startAccessory,\n endIconName,\n endIconProps,\n endAccessory,\n isDisabled = false,\n isInverse = false,\n twClassName = '',\n accessibilityRole,\n accessibilityLabel,\n style,\n ...props\n}) => {\n const tw = useTailwind();\n /**\n * Calculating the baselineOffset. This baselineOffset is needed to make sure\n * the TextButton aligns perfectly when placed within Text elements\n */\n // eslint-disable-next-line tailwindcss/no-custom-classname\n const { fontSize, lineHeight } = tw`text-${\n MAP_TEXTBUTTON_SIZE_TEXTVARIANT[size] as string\n }` as {\n fontSize: number;\n lineHeight: number;\n };\n const baselineOffset = (lineHeight - fontSize) / 2;\n\n const getTextColor = useCallback(\n (pressed: boolean): string => {\n if (isInverse) {\n return 'text-primary-inverse';\n }\n return pressed ? 'text-primary-default-pressed' : 'text-primary-default';\n },\n [isInverse],\n );\n\n const getTextDecoration = useCallback(\n (pressed: boolean): string =>\n isInverse || pressed ? 'underline' : 'no-underline',\n [isInverse],\n );\n\n return (\n <Text>\n <Pressable\n accessibilityRole={accessibilityRole ?? 'button'}\n accessibilityLabel={accessibilityLabel}\n disabled={isDisabled}\n style={({ pressed }) => [\n { transform: [{ translateY: baselineOffset }] },\n tw`flex-row items-center ${pressed ? 'bg-pressed' : 'bg-transparent'} ${isDisabled ? 'opacity-50' : 'opacity-100'} ${twClassName}`,\n style,\n ]}\n {...props}\n >\n {({ pressed }) => (\n <>\n {startIconName ? (\n <Icon\n name={startIconName}\n size={IconSize.Sm}\n testID=\"start-icon\"\n twClassName={`${getTextColor(pressed)} mr-1`}\n {...startIconProps}\n />\n ) : (\n startAccessory\n )}\n\n <Text\n variant={MAP_TEXTBUTTON_SIZE_TEXTVARIANT[size]}\n fontWeight={FontWeight.Medium}\n {...textProps}\n twClassName={` ${getTextColor(pressed)} ${getTextDecoration(pressed)} ${textProps?.twClassName ?? ''} `}\n >\n {children}\n </Text>\n\n {endIconName ? (\n <Icon\n name={endIconName}\n size={IconSize.Sm}\n testID=\"end-icon\"\n twClassName={`${getTextColor(pressed)} ml-1`}\n {...endIconProps}\n />\n ) : (\n endAccessory\n )}\n </>\n )}\n </Pressable>\n </Text>\n );\n};\n"]}
1
+ {"version":3,"file":"TextButton.mjs","sourceRoot":"","sources":["../../../src/components/TextButton/TextButton.tsx"],"names":[],"mappings":";;;;;;AAAA,OAAO,QAAO,EAAE,QAAQ,EAAE,cAAc;;AAExC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,8BAAoB;AACrD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,0BAAgB;AAI3C,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,EACpD,QAAQ,EACR,OAAO,GAAG,WAAW,CAAC,MAAM,EAC5B,UAAU,GAAG,UAAU,CAAC,MAAM,EAC9B,WAAW,EACX,iBAAiB,GAAG,MAAM,EAC1B,OAAO,EACP,SAAS,EACT,UAAU,EACV,oBAAoB,GAAG,IAAI,EAC3B,GAAG,IAAI,EACR,EAAE,EAAE;IACH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,aAAa,GAA8C,CAAC,CAAC,EAAE,EAAE;QACrE,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,cAAc,GAA+C,CAAC,CAAC,EAAE,EAAE;QACvE,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CACL,CAAC,IAAI,CACH,IAAI,IAAI,CAAC,CACT,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,UAAU,CAAC,CAAC,UAAU,CAAC,CACvB,KAAK,CAAC,CACJ,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CACrE,CACD,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,SAAS,CAAC,CAAC,aAAa,CAAC,CACzB,UAAU,CAAC,CAAC,cAAc,CAAC,CAC3B,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,CAE3C;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React, { useState } from 'react';\n\nimport { TextVariant, TextColor } from '../../types';\nimport { Text, FontWeight } from '../Text';\n\nimport type { TextButtonProps } from './TextButton.types';\n\nexport const TextButton: React.FC<TextButtonProps> = ({\n children,\n variant = TextVariant.BodyMd,\n fontWeight = FontWeight.Medium,\n twClassName,\n accessibilityRole = 'link',\n onPress,\n onPressIn,\n onPressOut,\n suppressHighlighting = true,\n ...rest\n}) => {\n const [pressed, setPressed] = useState(false);\n\n const handlePressIn: NonNullable<TextButtonProps['onPressIn']> = (e) => {\n setPressed(true);\n onPressIn?.(e);\n };\n\n const handlePressOut: NonNullable<TextButtonProps['onPressOut']> = (e) => {\n setPressed(false);\n onPressOut?.(e);\n };\n\n return (\n <Text\n {...rest}\n accessibilityRole={accessibilityRole}\n variant={variant}\n fontWeight={fontWeight}\n color={\n pressed ? TextColor.PrimaryDefaultPressed : TextColor.PrimaryDefault\n }\n twClassName={twClassName}\n onPress={onPress}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n suppressHighlighting={suppressHighlighting}\n >\n {children}\n </Text>\n );\n};\n"]}