@metamask/design-system-react-native 0.22.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/dist/components/AvatarGroup/AvatarGroup.cjs +11 -12
  3. package/dist/components/AvatarGroup/AvatarGroup.cjs.map +1 -1
  4. package/dist/components/AvatarGroup/AvatarGroup.constants.cjs +11 -12
  5. package/dist/components/AvatarGroup/AvatarGroup.constants.cjs.map +1 -1
  6. package/dist/components/AvatarGroup/AvatarGroup.constants.d.cts +1 -2
  7. package/dist/components/AvatarGroup/AvatarGroup.constants.d.cts.map +1 -1
  8. package/dist/components/AvatarGroup/AvatarGroup.constants.d.mts +1 -2
  9. package/dist/components/AvatarGroup/AvatarGroup.constants.d.mts.map +1 -1
  10. package/dist/components/AvatarGroup/AvatarGroup.constants.mjs +1 -2
  11. package/dist/components/AvatarGroup/AvatarGroup.constants.mjs.map +1 -1
  12. package/dist/components/AvatarGroup/AvatarGroup.d.cts.map +1 -1
  13. package/dist/components/AvatarGroup/AvatarGroup.d.mts.map +1 -1
  14. package/dist/components/AvatarGroup/AvatarGroup.mjs +2 -3
  15. package/dist/components/AvatarGroup/AvatarGroup.mjs.map +1 -1
  16. package/dist/components/AvatarGroup/AvatarGroup.types.cjs.map +1 -1
  17. package/dist/components/AvatarGroup/AvatarGroup.types.d.cts +7 -24
  18. package/dist/components/AvatarGroup/AvatarGroup.types.d.cts.map +1 -1
  19. package/dist/components/AvatarGroup/AvatarGroup.types.d.mts +7 -24
  20. package/dist/components/AvatarGroup/AvatarGroup.types.d.mts.map +1 -1
  21. package/dist/components/AvatarGroup/AvatarGroup.types.mjs.map +1 -1
  22. package/dist/components/AvatarGroup/index.cjs +3 -3
  23. package/dist/components/AvatarGroup/index.cjs.map +1 -1
  24. package/dist/components/AvatarGroup/index.d.cts +1 -1
  25. package/dist/components/AvatarGroup/index.d.cts.map +1 -1
  26. package/dist/components/AvatarGroup/index.d.mts +1 -1
  27. package/dist/components/AvatarGroup/index.d.mts.map +1 -1
  28. package/dist/components/AvatarGroup/index.mjs +1 -1
  29. package/dist/components/AvatarGroup/index.mjs.map +1 -1
  30. package/dist/components/AvatarIcon/AvatarIcon.cjs +1 -2
  31. package/dist/components/AvatarIcon/AvatarIcon.cjs.map +1 -1
  32. package/dist/components/AvatarIcon/AvatarIcon.constants.cjs +10 -11
  33. package/dist/components/AvatarIcon/AvatarIcon.constants.cjs.map +1 -1
  34. package/dist/components/AvatarIcon/AvatarIcon.constants.d.cts +1 -2
  35. package/dist/components/AvatarIcon/AvatarIcon.constants.d.cts.map +1 -1
  36. package/dist/components/AvatarIcon/AvatarIcon.constants.d.mts +1 -2
  37. package/dist/components/AvatarIcon/AvatarIcon.constants.d.mts.map +1 -1
  38. package/dist/components/AvatarIcon/AvatarIcon.constants.mjs +1 -2
  39. package/dist/components/AvatarIcon/AvatarIcon.constants.mjs.map +1 -1
  40. package/dist/components/AvatarIcon/AvatarIcon.d.cts.map +1 -1
  41. package/dist/components/AvatarIcon/AvatarIcon.d.mts.map +1 -1
  42. package/dist/components/AvatarIcon/AvatarIcon.mjs +1 -2
  43. package/dist/components/AvatarIcon/AvatarIcon.mjs.map +1 -1
  44. package/dist/components/BannerAlert/BannerAlert.cjs +1 -2
  45. package/dist/components/BannerAlert/BannerAlert.cjs.map +1 -1
  46. package/dist/components/BannerAlert/BannerAlert.constants.cjs +8 -9
  47. package/dist/components/BannerAlert/BannerAlert.constants.cjs.map +1 -1
  48. package/dist/components/BannerAlert/BannerAlert.constants.d.cts +1 -2
  49. package/dist/components/BannerAlert/BannerAlert.constants.d.cts.map +1 -1
  50. package/dist/components/BannerAlert/BannerAlert.constants.d.mts +1 -2
  51. package/dist/components/BannerAlert/BannerAlert.constants.d.mts.map +1 -1
  52. package/dist/components/BannerAlert/BannerAlert.constants.mjs +1 -2
  53. package/dist/components/BannerAlert/BannerAlert.constants.mjs.map +1 -1
  54. package/dist/components/BannerAlert/BannerAlert.d.cts.map +1 -1
  55. package/dist/components/BannerAlert/BannerAlert.d.mts.map +1 -1
  56. package/dist/components/BannerAlert/BannerAlert.mjs +1 -2
  57. package/dist/components/BannerAlert/BannerAlert.mjs.map +1 -1
  58. package/dist/components/Icon/Icon.assets.cjs +2 -0
  59. package/dist/components/Icon/Icon.assets.cjs.map +1 -1
  60. package/dist/components/Icon/Icon.assets.d.cts.map +1 -1
  61. package/dist/components/Icon/Icon.assets.d.mts.map +1 -1
  62. package/dist/components/Icon/Icon.assets.mjs +2 -0
  63. package/dist/components/Icon/Icon.assets.mjs.map +1 -1
  64. package/dist/components/Icon/Icon.cjs +2 -2
  65. package/dist/components/Icon/Icon.cjs.map +1 -1
  66. package/dist/components/Icon/Icon.d.cts.map +1 -1
  67. package/dist/components/Icon/Icon.d.mts.map +1 -1
  68. package/dist/components/Icon/Icon.mjs +1 -1
  69. package/dist/components/Icon/Icon.mjs.map +1 -1
  70. package/dist/components/Icon/assets/merge.svg +1 -0
  71. package/dist/components/Icon/index.cjs +4 -4
  72. package/dist/components/Icon/index.cjs.map +1 -1
  73. package/dist/components/Icon/index.d.cts +1 -1
  74. package/dist/components/Icon/index.d.cts.map +1 -1
  75. package/dist/components/Icon/index.d.mts +1 -1
  76. package/dist/components/Icon/index.d.mts.map +1 -1
  77. package/dist/components/Icon/index.mjs +1 -1
  78. package/dist/components/Icon/index.mjs.map +1 -1
  79. package/dist/components/IconAlert/IconAlert.constants.cjs +8 -9
  80. package/dist/components/IconAlert/IconAlert.constants.cjs.map +1 -1
  81. package/dist/components/IconAlert/IconAlert.constants.d.cts +1 -2
  82. package/dist/components/IconAlert/IconAlert.constants.d.cts.map +1 -1
  83. package/dist/components/IconAlert/IconAlert.constants.d.mts +1 -2
  84. package/dist/components/IconAlert/IconAlert.constants.d.mts.map +1 -1
  85. package/dist/components/IconAlert/IconAlert.constants.mjs +1 -2
  86. package/dist/components/IconAlert/IconAlert.constants.mjs.map +1 -1
  87. package/dist/components/Input/Input.cjs +10 -11
  88. package/dist/components/Input/Input.cjs.map +1 -1
  89. package/dist/components/Input/Input.d.cts +1 -7
  90. package/dist/components/Input/Input.d.cts.map +1 -1
  91. package/dist/components/Input/Input.d.mts +1 -7
  92. package/dist/components/Input/Input.d.mts.map +1 -1
  93. package/dist/components/Input/Input.mjs +11 -12
  94. package/dist/components/Input/Input.mjs.map +1 -1
  95. package/dist/components/Input/Input.types.cjs.map +1 -1
  96. package/dist/components/Input/Input.types.d.cts +2 -30
  97. package/dist/components/Input/Input.types.d.cts.map +1 -1
  98. package/dist/components/Input/Input.types.d.mts +2 -30
  99. package/dist/components/Input/Input.types.d.mts.map +1 -1
  100. package/dist/components/Input/Input.types.mjs.map +1 -1
  101. package/dist/components/Tag/Tag.constants.cjs +5 -6
  102. package/dist/components/Tag/Tag.constants.cjs.map +1 -1
  103. package/dist/components/Tag/Tag.constants.d.cts +1 -2
  104. package/dist/components/Tag/Tag.constants.d.cts.map +1 -1
  105. package/dist/components/Tag/Tag.constants.d.mts +1 -2
  106. package/dist/components/Tag/Tag.constants.d.mts.map +1 -1
  107. package/dist/components/Tag/Tag.constants.mjs +1 -2
  108. package/dist/components/Tag/Tag.constants.mjs.map +1 -1
  109. package/dist/components/Toast/Toast.cjs +29 -142
  110. package/dist/components/Toast/Toast.cjs.map +1 -1
  111. package/dist/components/Toast/Toast.d.cts +14 -2
  112. package/dist/components/Toast/Toast.d.cts.map +1 -1
  113. package/dist/components/Toast/Toast.d.mts +14 -2
  114. package/dist/components/Toast/Toast.d.mts.map +1 -1
  115. package/dist/components/Toast/Toast.mjs +30 -143
  116. package/dist/components/Toast/Toast.mjs.map +1 -1
  117. package/dist/components/Toast/Toast.types.cjs.map +1 -1
  118. package/dist/components/Toast/Toast.types.d.cts +0 -6
  119. package/dist/components/Toast/Toast.types.d.cts.map +1 -1
  120. package/dist/components/Toast/Toast.types.d.mts +0 -6
  121. package/dist/components/Toast/Toast.types.d.mts.map +1 -1
  122. package/dist/components/Toast/Toast.types.mjs.map +1 -1
  123. package/dist/components/Toast/ToastView.cjs +174 -0
  124. package/dist/components/Toast/ToastView.cjs.map +1 -0
  125. package/dist/components/Toast/ToastView.d.cts +7 -0
  126. package/dist/components/Toast/ToastView.d.cts.map +1 -0
  127. package/dist/components/Toast/ToastView.d.mts +7 -0
  128. package/dist/components/Toast/ToastView.d.mts.map +1 -0
  129. package/dist/components/Toast/ToastView.mjs +155 -0
  130. package/dist/components/Toast/ToastView.mjs.map +1 -0
  131. package/dist/components/Toast/index.cjs +1 -4
  132. package/dist/components/Toast/index.cjs.map +1 -1
  133. package/dist/components/Toast/index.d.cts +1 -2
  134. package/dist/components/Toast/index.d.cts.map +1 -1
  135. package/dist/components/Toast/index.d.mts +1 -2
  136. package/dist/components/Toast/index.d.mts.map +1 -1
  137. package/dist/components/Toast/index.mjs +0 -1
  138. package/dist/components/Toast/index.mjs.map +1 -1
  139. package/dist/components/index.cjs +1 -3
  140. package/dist/components/index.cjs.map +1 -1
  141. package/dist/components/index.d.cts +2 -2
  142. package/dist/components/index.d.cts.map +1 -1
  143. package/dist/components/index.d.mts +2 -2
  144. package/dist/components/index.d.mts.map +1 -1
  145. package/dist/components/index.mjs +1 -1
  146. package/dist/components/index.mjs.map +1 -1
  147. package/dist/types/index.cjs +3 -15
  148. package/dist/types/index.cjs.map +1 -1
  149. package/dist/types/index.d.cts +0 -10
  150. package/dist/types/index.d.cts.map +1 -1
  151. package/dist/types/index.d.mts +0 -10
  152. package/dist/types/index.d.mts.map +1 -1
  153. package/dist/types/index.mjs +0 -11
  154. package/dist/types/index.mjs.map +1 -1
  155. package/package.json +3 -3
  156. package/dist/components/Toast/Toast.context.cjs +0 -40
  157. package/dist/components/Toast/Toast.context.cjs.map +0 -1
  158. package/dist/components/Toast/Toast.context.d.cts +0 -7
  159. package/dist/components/Toast/Toast.context.d.cts.map +0 -1
  160. package/dist/components/Toast/Toast.context.d.mts +0 -7
  161. package/dist/components/Toast/Toast.context.d.mts.map +0 -1
  162. package/dist/components/Toast/Toast.context.mjs +0 -20
  163. package/dist/components/Toast/Toast.context.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Input.mjs","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FontFamily, TextVariant } from '@metamask/design-system-shared';\nimport {\n Theme,\n useTailwind,\n useTheme,\n} from '@metamask/design-system-twrnc-preset';\nimport { darkTheme, lightTheme } from '@metamask/design-tokens';\nimport { forwardRef, useCallback, useMemo, useState } from 'react';\nimport { Platform, TextInput } from 'react-native';\n\nimport {\n TWCLASSMAP_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 = TWCLASSMAP_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 {...props}\n placeholder={placeholder}\n placeholderTextColor={placeholderTextColor}\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 { FontFamily, TextVariant } from '@metamask/design-system-shared';\nimport {\n Theme,\n useTailwind,\n useTheme,\n} from '@metamask/design-system-twrnc-preset';\nimport { darkTheme, lightTheme } from '@metamask/design-tokens';\nimport { forwardRef, useCallback, useEffect, useMemo, useState } from 'react';\nimport { Platform, TextInput } from 'react-native';\n\nimport {\n TWCLASSMAP_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 = TWCLASSMAP_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 useEffect(() => {\n if (isDisabled || isReadOnly) {\n setIsFocused(false);\n }\n }, [isDisabled, isReadOnly]);\n\n const onBlurHandler = useCallback(\n (e: Parameters<NonNullable<InputProps['onBlur']>>[0]) => {\n setIsFocused(false);\n onBlur?.(e);\n },\n [onBlur],\n );\n\n const onFocusHandler = useCallback(\n (e: Parameters<NonNullable<InputProps['onFocus']>>[0]) => {\n setIsFocused(true);\n onFocus?.(e);\n },\n [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 {...props}\n placeholder={placeholder}\n placeholderTextColor={placeholderTextColor}\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":"Input.types.cjs","sourceRoot":"","sources":["../../../src/components/Input/Input.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { TextVariant } from '@metamask/design-system-shared';\nimport type { TextInputProps } from 'react-native';\n\nexport type InputProps = Omit<\n TextInputProps,\n 'editable' | 'value' | 'defaultValue'\n> & {\n /**\n * Controlled value for Input.\n */\n value: string;\n /**\n * Optional enum to select between Typography variants.\n *\n * @default BodyMd\n */\n textVariant?: TextVariant;\n /**\n * Optional boolean to disable Input.\n *\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Optional boolean to show readonly input.\n *\n * @default false\n */\n isReadOnly?: boolean;\n /**\n * Optional boolean to disable state styles.\n *\n * @default false\n */\n isStateStylesDisabled?: boolean;\n /**\n * Optional prop to add twrnc overriding classNames.\n */\n twClassName?: string;\n};\n"]}
1
+ {"version":3,"file":"Input.types.cjs","sourceRoot":"","sources":["../../../src/components/Input/Input.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { InputPropsShared } from '@metamask/design-system-shared';\nimport type { TextInputProps } from 'react-native';\n\nexport type InputProps = Omit<\n TextInputProps,\n 'editable' | 'value' | 'defaultValue'\n> &\n InputPropsShared & {\n /**\n * Optional prop to add twrnc overriding classNames.\n */\n twClassName?: string;\n };\n"]}
@@ -1,34 +1,6 @@
1
- import type { TextVariant } from "@metamask/design-system-shared";
1
+ import type { InputPropsShared } from "@metamask/design-system-shared";
2
2
  import type { TextInputProps } from "react-native/index.js";
3
- export type InputProps = Omit<TextInputProps, 'editable' | 'value' | 'defaultValue'> & {
4
- /**
5
- * Controlled value for Input.
6
- */
7
- value: string;
8
- /**
9
- * Optional enum to select between Typography variants.
10
- *
11
- * @default BodyMd
12
- */
13
- textVariant?: TextVariant;
14
- /**
15
- * Optional boolean to disable Input.
16
- *
17
- * @default false
18
- */
19
- isDisabled?: boolean;
20
- /**
21
- * Optional boolean to show readonly input.
22
- *
23
- * @default false
24
- */
25
- isReadOnly?: boolean;
26
- /**
27
- * Optional boolean to disable state styles.
28
- *
29
- * @default false
30
- */
31
- isStateStylesDisabled?: boolean;
3
+ export type InputProps = Omit<TextInputProps, 'editable' | 'value' | 'defaultValue'> & InputPropsShared & {
32
4
  /**
33
5
  * Optional prop to add twrnc overriding classNames.
34
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Input.types.d.cts","sourceRoot":"","sources":["../../../src/components/Input/Input.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,uCAAuC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,8BAAqB;AAEnD,MAAM,MAAM,UAAU,GAAG,IAAI,CAC3B,cAAc,EACd,UAAU,GAAG,OAAO,GAAG,cAAc,CACtC,GAAG;IACF;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"}
1
+ {"version":3,"file":"Input.types.d.cts","sourceRoot":"","sources":["../../../src/components/Input/Input.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uCAAuC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,8BAAqB;AAEnD,MAAM,MAAM,UAAU,GAAG,IAAI,CAC3B,cAAc,EACd,UAAU,GAAG,OAAO,GAAG,cAAc,CACtC,GACC,gBAAgB,GAAG;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"}
@@ -1,34 +1,6 @@
1
- import type { TextVariant } from "@metamask/design-system-shared";
1
+ import type { InputPropsShared } from "@metamask/design-system-shared";
2
2
  import type { TextInputProps } from "react-native/index.js";
3
- export type InputProps = Omit<TextInputProps, 'editable' | 'value' | 'defaultValue'> & {
4
- /**
5
- * Controlled value for Input.
6
- */
7
- value: string;
8
- /**
9
- * Optional enum to select between Typography variants.
10
- *
11
- * @default BodyMd
12
- */
13
- textVariant?: TextVariant;
14
- /**
15
- * Optional boolean to disable Input.
16
- *
17
- * @default false
18
- */
19
- isDisabled?: boolean;
20
- /**
21
- * Optional boolean to show readonly input.
22
- *
23
- * @default false
24
- */
25
- isReadOnly?: boolean;
26
- /**
27
- * Optional boolean to disable state styles.
28
- *
29
- * @default false
30
- */
31
- isStateStylesDisabled?: boolean;
3
+ export type InputProps = Omit<TextInputProps, 'editable' | 'value' | 'defaultValue'> & InputPropsShared & {
32
4
  /**
33
5
  * Optional prop to add twrnc overriding classNames.
34
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Input.types.d.mts","sourceRoot":"","sources":["../../../src/components/Input/Input.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,uCAAuC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,8BAAqB;AAEnD,MAAM,MAAM,UAAU,GAAG,IAAI,CAC3B,cAAc,EACd,UAAU,GAAG,OAAO,GAAG,cAAc,CACtC,GAAG;IACF;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"}
1
+ {"version":3,"file":"Input.types.d.mts","sourceRoot":"","sources":["../../../src/components/Input/Input.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uCAAuC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,8BAAqB;AAEnD,MAAM,MAAM,UAAU,GAAG,IAAI,CAC3B,cAAc,EACd,UAAU,GAAG,OAAO,GAAG,cAAc,CACtC,GACC,gBAAgB,GAAG;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Input.types.mjs","sourceRoot":"","sources":["../../../src/components/Input/Input.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { TextVariant } from '@metamask/design-system-shared';\nimport type { TextInputProps } from 'react-native';\n\nexport type InputProps = Omit<\n TextInputProps,\n 'editable' | 'value' | 'defaultValue'\n> & {\n /**\n * Controlled value for Input.\n */\n value: string;\n /**\n * Optional enum to select between Typography variants.\n *\n * @default BodyMd\n */\n textVariant?: TextVariant;\n /**\n * Optional boolean to disable Input.\n *\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Optional boolean to show readonly input.\n *\n * @default false\n */\n isReadOnly?: boolean;\n /**\n * Optional boolean to disable state styles.\n *\n * @default false\n */\n isStateStylesDisabled?: boolean;\n /**\n * Optional prop to add twrnc overriding classNames.\n */\n twClassName?: string;\n};\n"]}
1
+ {"version":3,"file":"Input.types.mjs","sourceRoot":"","sources":["../../../src/components/Input/Input.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { InputPropsShared } from '@metamask/design-system-shared';\nimport type { TextInputProps } from 'react-native';\n\nexport type InputProps = Omit<\n TextInputProps,\n 'editable' | 'value' | 'defaultValue'\n> &\n InputPropsShared & {\n /**\n * Optional prop to add twrnc overriding classNames.\n */\n twClassName?: string;\n };\n"]}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MAP_TAG_SEVERITY_ICON_COLOR = exports.MAP_TAG_SEVERITY_TEXT_COLOR = exports.MAP_TAG_SEVERITY_BACKGROUND = void 0;
4
4
  const design_system_shared_1 = require("@metamask/design-system-shared");
5
- const types_1 = require("../../types/index.cjs");
6
5
  exports.MAP_TAG_SEVERITY_BACKGROUND = {
7
6
  [design_system_shared_1.TagSeverity.Neutral]: design_system_shared_1.BoxBackgroundColor.BackgroundMuted,
8
7
  [design_system_shared_1.TagSeverity.Success]: design_system_shared_1.BoxBackgroundColor.SuccessMuted,
@@ -18,10 +17,10 @@ exports.MAP_TAG_SEVERITY_TEXT_COLOR = {
18
17
  [design_system_shared_1.TagSeverity.Info]: design_system_shared_1.TextColor.InfoDefault,
19
18
  };
20
19
  exports.MAP_TAG_SEVERITY_ICON_COLOR = {
21
- [design_system_shared_1.TagSeverity.Neutral]: types_1.IconColor.IconDefault,
22
- [design_system_shared_1.TagSeverity.Success]: types_1.IconColor.SuccessDefault,
23
- [design_system_shared_1.TagSeverity.Error]: types_1.IconColor.ErrorDefault,
24
- [design_system_shared_1.TagSeverity.Warning]: types_1.IconColor.WarningDefault,
25
- [design_system_shared_1.TagSeverity.Info]: types_1.IconColor.InfoDefault,
20
+ [design_system_shared_1.TagSeverity.Neutral]: design_system_shared_1.IconColor.IconDefault,
21
+ [design_system_shared_1.TagSeverity.Success]: design_system_shared_1.IconColor.SuccessDefault,
22
+ [design_system_shared_1.TagSeverity.Error]: design_system_shared_1.IconColor.ErrorDefault,
23
+ [design_system_shared_1.TagSeverity.Warning]: design_system_shared_1.IconColor.WarningDefault,
24
+ [design_system_shared_1.TagSeverity.Info]: design_system_shared_1.IconColor.InfoDefault,
26
25
  };
27
26
  //# sourceMappingURL=Tag.constants.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.constants.cjs","sourceRoot":"","sources":["../../../src/components/Tag/Tag.constants.ts"],"names":[],"mappings":";;;AAAA,yEAIwC;AAExC,iDAAwC;AAE3B,QAAA,2BAA2B,GAGpC;IACF,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,yCAAkB,CAAC,eAAe;IACzD,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,yCAAkB,CAAC,YAAY;IACtD,CAAC,kCAAW,CAAC,KAAK,CAAC,EAAE,yCAAkB,CAAC,UAAU;IAClD,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,yCAAkB,CAAC,YAAY;IACtD,CAAC,kCAAW,CAAC,IAAI,CAAC,EAAE,yCAAkB,CAAC,SAAS;CACjD,CAAC;AAEW,QAAA,2BAA2B,GAAmC;IACzE,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,gCAAS,CAAC,WAAW;IAC5C,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,gCAAS,CAAC,cAAc;IAC/C,CAAC,kCAAW,CAAC,KAAK,CAAC,EAAE,gCAAS,CAAC,YAAY;IAC3C,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,gCAAS,CAAC,cAAc;IAC/C,CAAC,kCAAW,CAAC,IAAI,CAAC,EAAE,gCAAS,CAAC,WAAW;CAC1C,CAAC;AAEW,QAAA,2BAA2B,GAAmC;IACzE,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,iBAAS,CAAC,WAAW;IAC5C,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,iBAAS,CAAC,cAAc;IAC/C,CAAC,kCAAW,CAAC,KAAK,CAAC,EAAE,iBAAS,CAAC,YAAY;IAC3C,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,iBAAS,CAAC,cAAc;IAC/C,CAAC,kCAAW,CAAC,IAAI,CAAC,EAAE,iBAAS,CAAC,WAAW;CAC1C,CAAC","sourcesContent":["import {\n BoxBackgroundColor,\n TagSeverity,\n TextColor,\n} from '@metamask/design-system-shared';\n\nimport { IconColor } from '../../types';\n\nexport const MAP_TAG_SEVERITY_BACKGROUND: Record<\n TagSeverity,\n BoxBackgroundColor\n> = {\n [TagSeverity.Neutral]: BoxBackgroundColor.BackgroundMuted,\n [TagSeverity.Success]: BoxBackgroundColor.SuccessMuted,\n [TagSeverity.Error]: BoxBackgroundColor.ErrorMuted,\n [TagSeverity.Warning]: BoxBackgroundColor.WarningMuted,\n [TagSeverity.Info]: BoxBackgroundColor.InfoMuted,\n};\n\nexport const MAP_TAG_SEVERITY_TEXT_COLOR: Record<TagSeverity, TextColor> = {\n [TagSeverity.Neutral]: TextColor.TextDefault,\n [TagSeverity.Success]: TextColor.SuccessDefault,\n [TagSeverity.Error]: TextColor.ErrorDefault,\n [TagSeverity.Warning]: TextColor.WarningDefault,\n [TagSeverity.Info]: TextColor.InfoDefault,\n};\n\nexport const MAP_TAG_SEVERITY_ICON_COLOR: Record<TagSeverity, IconColor> = {\n [TagSeverity.Neutral]: IconColor.IconDefault,\n [TagSeverity.Success]: IconColor.SuccessDefault,\n [TagSeverity.Error]: IconColor.ErrorDefault,\n [TagSeverity.Warning]: IconColor.WarningDefault,\n [TagSeverity.Info]: IconColor.InfoDefault,\n};\n"]}
1
+ {"version":3,"file":"Tag.constants.cjs","sourceRoot":"","sources":["../../../src/components/Tag/Tag.constants.ts"],"names":[],"mappings":";;;AAAA,yEAKwC;AAE3B,QAAA,2BAA2B,GAGpC;IACF,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,yCAAkB,CAAC,eAAe;IACzD,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,yCAAkB,CAAC,YAAY;IACtD,CAAC,kCAAW,CAAC,KAAK,CAAC,EAAE,yCAAkB,CAAC,UAAU;IAClD,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,yCAAkB,CAAC,YAAY;IACtD,CAAC,kCAAW,CAAC,IAAI,CAAC,EAAE,yCAAkB,CAAC,SAAS;CACjD,CAAC;AAEW,QAAA,2BAA2B,GAAmC;IACzE,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,gCAAS,CAAC,WAAW;IAC5C,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,gCAAS,CAAC,cAAc;IAC/C,CAAC,kCAAW,CAAC,KAAK,CAAC,EAAE,gCAAS,CAAC,YAAY;IAC3C,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,gCAAS,CAAC,cAAc;IAC/C,CAAC,kCAAW,CAAC,IAAI,CAAC,EAAE,gCAAS,CAAC,WAAW;CAC1C,CAAC;AAEW,QAAA,2BAA2B,GAAmC;IACzE,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,gCAAS,CAAC,WAAW;IAC5C,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,gCAAS,CAAC,cAAc;IAC/C,CAAC,kCAAW,CAAC,KAAK,CAAC,EAAE,gCAAS,CAAC,YAAY;IAC3C,CAAC,kCAAW,CAAC,OAAO,CAAC,EAAE,gCAAS,CAAC,cAAc;IAC/C,CAAC,kCAAW,CAAC,IAAI,CAAC,EAAE,gCAAS,CAAC,WAAW;CAC1C,CAAC","sourcesContent":["import {\n BoxBackgroundColor,\n IconColor,\n TagSeverity,\n TextColor,\n} from '@metamask/design-system-shared';\n\nexport const MAP_TAG_SEVERITY_BACKGROUND: Record<\n TagSeverity,\n BoxBackgroundColor\n> = {\n [TagSeverity.Neutral]: BoxBackgroundColor.BackgroundMuted,\n [TagSeverity.Success]: BoxBackgroundColor.SuccessMuted,\n [TagSeverity.Error]: BoxBackgroundColor.ErrorMuted,\n [TagSeverity.Warning]: BoxBackgroundColor.WarningMuted,\n [TagSeverity.Info]: BoxBackgroundColor.InfoMuted,\n};\n\nexport const MAP_TAG_SEVERITY_TEXT_COLOR: Record<TagSeverity, TextColor> = {\n [TagSeverity.Neutral]: TextColor.TextDefault,\n [TagSeverity.Success]: TextColor.SuccessDefault,\n [TagSeverity.Error]: TextColor.ErrorDefault,\n [TagSeverity.Warning]: TextColor.WarningDefault,\n [TagSeverity.Info]: TextColor.InfoDefault,\n};\n\nexport const MAP_TAG_SEVERITY_ICON_COLOR: Record<TagSeverity, IconColor> = {\n [TagSeverity.Neutral]: IconColor.IconDefault,\n [TagSeverity.Success]: IconColor.SuccessDefault,\n [TagSeverity.Error]: IconColor.ErrorDefault,\n [TagSeverity.Warning]: IconColor.WarningDefault,\n [TagSeverity.Info]: IconColor.InfoDefault,\n};\n"]}
@@ -1,5 +1,4 @@
1
- import { BoxBackgroundColor, TagSeverity, TextColor } from "@metamask/design-system-shared";
2
- import { IconColor } from "../../types/index.cjs";
1
+ import { BoxBackgroundColor, IconColor, TagSeverity, TextColor } from "@metamask/design-system-shared";
3
2
  export declare const MAP_TAG_SEVERITY_BACKGROUND: Record<TagSeverity, BoxBackgroundColor>;
4
3
  export declare const MAP_TAG_SEVERITY_TEXT_COLOR: Record<TagSeverity, TextColor>;
5
4
  export declare const MAP_TAG_SEVERITY_ICON_COLOR: Record<TagSeverity, IconColor>;
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.constants.d.cts","sourceRoot":"","sources":["../../../src/components/Tag/Tag.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,SAAS,EACV,uCAAuC;AAExC,OAAO,EAAE,SAAS,EAAE,8BAAoB;AAExC,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,WAAW,EACX,kBAAkB,CAOnB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAMtE,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAMtE,CAAC"}
1
+ {"version":3,"file":"Tag.constants.d.cts","sourceRoot":"","sources":["../../../src/components/Tag/Tag.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,SAAS,EACV,uCAAuC;AAExC,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,WAAW,EACX,kBAAkB,CAOnB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAMtE,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAMtE,CAAC"}
@@ -1,5 +1,4 @@
1
- import { BoxBackgroundColor, TagSeverity, TextColor } from "@metamask/design-system-shared";
2
- import { IconColor } from "../../types/index.mjs";
1
+ import { BoxBackgroundColor, IconColor, TagSeverity, TextColor } from "@metamask/design-system-shared";
3
2
  export declare const MAP_TAG_SEVERITY_BACKGROUND: Record<TagSeverity, BoxBackgroundColor>;
4
3
  export declare const MAP_TAG_SEVERITY_TEXT_COLOR: Record<TagSeverity, TextColor>;
5
4
  export declare const MAP_TAG_SEVERITY_ICON_COLOR: Record<TagSeverity, IconColor>;
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.constants.d.mts","sourceRoot":"","sources":["../../../src/components/Tag/Tag.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,SAAS,EACV,uCAAuC;AAExC,OAAO,EAAE,SAAS,EAAE,8BAAoB;AAExC,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,WAAW,EACX,kBAAkB,CAOnB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAMtE,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAMtE,CAAC"}
1
+ {"version":3,"file":"Tag.constants.d.mts","sourceRoot":"","sources":["../../../src/components/Tag/Tag.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,SAAS,EACV,uCAAuC;AAExC,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,WAAW,EACX,kBAAkB,CAOnB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAMtE,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAMtE,CAAC"}
@@ -1,5 +1,4 @@
1
- import { BoxBackgroundColor, TagSeverity, TextColor } from "@metamask/design-system-shared";
2
- import { IconColor } from "../../types/index.mjs";
1
+ import { BoxBackgroundColor, IconColor, TagSeverity, TextColor } from "@metamask/design-system-shared";
3
2
  export const MAP_TAG_SEVERITY_BACKGROUND = {
4
3
  [TagSeverity.Neutral]: BoxBackgroundColor.BackgroundMuted,
5
4
  [TagSeverity.Success]: BoxBackgroundColor.SuccessMuted,
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.constants.mjs","sourceRoot":"","sources":["../../../src/components/Tag/Tag.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,SAAS,EACV,uCAAuC;AAExC,OAAO,EAAE,SAAS,EAAE,8BAAoB;AAExC,MAAM,CAAC,MAAM,2BAA2B,GAGpC;IACF,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,eAAe;IACzD,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,YAAY;IACtD,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,UAAU;IAClD,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,YAAY;IACtD,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,SAAS;CACjD,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAmC;IACzE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,WAAW;IAC5C,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc;IAC/C,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,YAAY;IAC3C,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc;IAC/C,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,WAAW;CAC1C,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAmC;IACzE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,WAAW;IAC5C,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc;IAC/C,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,YAAY;IAC3C,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc;IAC/C,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,WAAW;CAC1C,CAAC","sourcesContent":["import {\n BoxBackgroundColor,\n TagSeverity,\n TextColor,\n} from '@metamask/design-system-shared';\n\nimport { IconColor } from '../../types';\n\nexport const MAP_TAG_SEVERITY_BACKGROUND: Record<\n TagSeverity,\n BoxBackgroundColor\n> = {\n [TagSeverity.Neutral]: BoxBackgroundColor.BackgroundMuted,\n [TagSeverity.Success]: BoxBackgroundColor.SuccessMuted,\n [TagSeverity.Error]: BoxBackgroundColor.ErrorMuted,\n [TagSeverity.Warning]: BoxBackgroundColor.WarningMuted,\n [TagSeverity.Info]: BoxBackgroundColor.InfoMuted,\n};\n\nexport const MAP_TAG_SEVERITY_TEXT_COLOR: Record<TagSeverity, TextColor> = {\n [TagSeverity.Neutral]: TextColor.TextDefault,\n [TagSeverity.Success]: TextColor.SuccessDefault,\n [TagSeverity.Error]: TextColor.ErrorDefault,\n [TagSeverity.Warning]: TextColor.WarningDefault,\n [TagSeverity.Info]: TextColor.InfoDefault,\n};\n\nexport const MAP_TAG_SEVERITY_ICON_COLOR: Record<TagSeverity, IconColor> = {\n [TagSeverity.Neutral]: IconColor.IconDefault,\n [TagSeverity.Success]: IconColor.SuccessDefault,\n [TagSeverity.Error]: IconColor.ErrorDefault,\n [TagSeverity.Warning]: IconColor.WarningDefault,\n [TagSeverity.Info]: IconColor.InfoDefault,\n};\n"]}
1
+ {"version":3,"file":"Tag.constants.mjs","sourceRoot":"","sources":["../../../src/components/Tag/Tag.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,SAAS,EACV,uCAAuC;AAExC,MAAM,CAAC,MAAM,2BAA2B,GAGpC;IACF,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,eAAe;IACzD,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,YAAY;IACtD,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,UAAU;IAClD,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,YAAY;IACtD,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,SAAS;CACjD,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAmC;IACzE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,WAAW;IAC5C,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc;IAC/C,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,YAAY;IAC3C,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc;IAC/C,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,WAAW;CAC1C,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAmC;IACzE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,WAAW;IAC5C,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc;IAC/C,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,YAAY;IAC3C,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc;IAC/C,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,WAAW;CAC1C,CAAC","sourcesContent":["import {\n BoxBackgroundColor,\n IconColor,\n TagSeverity,\n TextColor,\n} from '@metamask/design-system-shared';\n\nexport const MAP_TAG_SEVERITY_BACKGROUND: Record<\n TagSeverity,\n BoxBackgroundColor\n> = {\n [TagSeverity.Neutral]: BoxBackgroundColor.BackgroundMuted,\n [TagSeverity.Success]: BoxBackgroundColor.SuccessMuted,\n [TagSeverity.Error]: BoxBackgroundColor.ErrorMuted,\n [TagSeverity.Warning]: BoxBackgroundColor.WarningMuted,\n [TagSeverity.Info]: BoxBackgroundColor.InfoMuted,\n};\n\nexport const MAP_TAG_SEVERITY_TEXT_COLOR: Record<TagSeverity, TextColor> = {\n [TagSeverity.Neutral]: TextColor.TextDefault,\n [TagSeverity.Success]: TextColor.SuccessDefault,\n [TagSeverity.Error]: TextColor.ErrorDefault,\n [TagSeverity.Warning]: TextColor.WarningDefault,\n [TagSeverity.Info]: TextColor.InfoDefault,\n};\n\nexport const MAP_TAG_SEVERITY_ICON_COLOR: Record<TagSeverity, IconColor> = {\n [TagSeverity.Neutral]: IconColor.IconDefault,\n [TagSeverity.Success]: IconColor.SuccessDefault,\n [TagSeverity.Error]: IconColor.ErrorDefault,\n [TagSeverity.Warning]: IconColor.WarningDefault,\n [TagSeverity.Info]: IconColor.InfoDefault,\n};\n"]}
@@ -25,150 +25,37 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.Toast = void 0;
27
27
  // Third party dependencies.
28
- const design_system_twrnc_preset_1 = require("@metamask/design-system-twrnc-preset");
29
28
  const react_1 = __importStar(require("react"));
30
- const react_native_1 = require("react-native/index.js");
31
- const react_native_reanimated_1 = __importStar(require("react-native-reanimated"));
32
- const react_native_safe_area_context_1 = require("react-native-safe-area-context");
33
- // External dependencies.
34
- const AvatarAccount_1 = require("../AvatarAccount/index.cjs");
35
- const AvatarFavicon_1 = require("../AvatarFavicon/index.cjs");
36
- const AvatarIcon_1 = require("../AvatarIcon/index.cjs");
37
- const AvatarNetwork_1 = require("../AvatarNetwork/index.cjs");
38
- const Button_1 = require("../Button/index.cjs");
39
- const ButtonIcon_1 = require("../ButtonIcon/index.cjs");
40
- const Text_1 = require("../Text/index.cjs");
41
- // Internal dependencies.
42
- const Toast_constants_1 = require("./Toast.constants.cjs");
43
- const Toast_types_1 = require("./Toast.types.cjs");
44
- const screenHeight = react_native_1.Dimensions.get('window').height;
45
- exports.Toast = (0, react_1.forwardRef)(({ twClassName, labelsContainerProps, ...props }, ref) => {
46
- const tw = (0, design_system_twrnc_preset_1.useTailwind)();
47
- const [toastOptions, setToastOptions] = (0, react_1.useState)(undefined);
48
- const replacementTimerRef = (0, react_1.useRef)(null);
49
- const { bottom: bottomNotchSpacing } = (0, react_native_safe_area_context_1.useSafeAreaInsets)();
50
- const translateYProgress = (0, react_native_reanimated_1.useSharedValue)(screenHeight);
51
- const bottomOffset = toastOptions?.bottomOffset ?? 0;
52
- const animatedStyle = (0, react_native_reanimated_1.useAnimatedStyle)(() => ({
53
- transform: [{ translateY: translateYProgress.value - bottomOffset }],
54
- }));
55
- const baseStyle = (0, react_1.useMemo)(() => [
56
- tw.style('absolute left-4 right-4 bottom-0 bg-background-section border border-border-muted rounded-xl p-3 flex-row items-center', twClassName),
57
- animatedStyle,
58
- ], [tw, animatedStyle, twClassName]);
59
- const resetState = () => setToastOptions(undefined);
60
- const showToast = (options) => {
61
- let timeoutDuration = 0;
62
- if (toastOptions) {
63
- (0, react_native_reanimated_1.cancelAnimation)(translateYProgress);
64
- timeoutDuration = 100;
65
- // Clear existing toast state to prevent animation conflicts when showing rapid successive toasts
66
- setToastOptions(undefined);
67
- }
68
- if (replacementTimerRef.current !== null) {
69
- clearTimeout(replacementTimerRef.current);
70
- }
71
- replacementTimerRef.current = setTimeout(() => {
72
- replacementTimerRef.current = null;
73
- setToastOptions(options);
74
- }, timeoutDuration);
75
- };
76
- const closeToast = () => {
77
- if (replacementTimerRef.current !== null) {
78
- clearTimeout(replacementTimerRef.current);
79
- replacementTimerRef.current = null;
80
- }
81
- translateYProgress.value = (0, react_native_reanimated_1.withTiming)(screenHeight, { duration: Toast_constants_1.TOAST_ANIMATION_DURATION }, () => {
82
- (0, react_native_reanimated_1.runOnJS)(resetState)();
83
- });
84
- };
29
+ const ToastView_1 = require("./ToastView.cjs");
30
+ let registeredRef = null;
31
+ const assertRegisteredRef = (method) => {
32
+ if (!registeredRef?.current) {
33
+ throw new Error(`Toast.${method}() called before <Toast /> mounted. Render <Toast /> once at the root of your app.`);
34
+ }
35
+ return registeredRef.current;
36
+ };
37
+ const ToastComponent = (0, react_1.forwardRef)((props, ref) => {
38
+ const innerRef = (0, react_1.useRef)(null);
85
39
  (0, react_1.useImperativeHandle)(ref, () => ({
86
- showToast,
87
- closeToast,
88
- }));
89
- const onAnimatedViewLayout = (e) => {
90
- /* istanbul ignore next - guard only; layout fires when toastOptions is set */
91
- if (toastOptions) {
92
- const { height } = e.nativeEvent.layout;
93
- const translateYToValue = -(Toast_constants_1.TOAST_BOTTOM_PADDING + bottomNotchSpacing);
94
- translateYProgress.value = height;
95
- if (toastOptions.hasNoTimeout) {
96
- translateYProgress.value = (0, react_native_reanimated_1.withTiming)(translateYToValue, {
97
- duration: Toast_constants_1.TOAST_ANIMATION_DURATION,
98
- });
99
- }
100
- else {
101
- translateYProgress.value = (0, react_native_reanimated_1.withTiming)(translateYToValue, { duration: Toast_constants_1.TOAST_ANIMATION_DURATION }, () => {
102
- translateYProgress.value = (0, react_native_reanimated_1.withDelay)(Toast_constants_1.TOAST_VISIBILITY_DURATION, (0, react_native_reanimated_1.withTiming)(height, { duration: Toast_constants_1.TOAST_ANIMATION_DURATION }, (0, react_native_reanimated_1.runOnJS)(resetState)));
103
- });
104
- }
105
- }
106
- };
107
- const renderLabel = (labelOptions) => (<Text_1.Text variant={Text_1.TextVariant.BodyMd}>
108
- {labelOptions.map(({ label, isBold }, index) => (<Text_1.Text key={`toast-label-${index}`} variant={Text_1.TextVariant.BodyMd} fontWeight={isBold ? Text_1.FontWeight.Bold : undefined} color={Text_1.TextColor.TextDefault}>
109
- {label}
110
- </Text_1.Text>))}
111
- </Text_1.Text>);
112
- const renderDescription = (descriptionOptions) => descriptionOptions && (<Text_1.Text variant={Text_1.TextVariant.BodySm} color={Text_1.TextColor.TextAlternative} style={tw.style('mt-1')}>
113
- {descriptionOptions.description}
114
- </Text_1.Text>);
115
- const renderActionButton = (linkButtonOptions) => linkButtonOptions && (<Button_1.Button variant={Button_1.ButtonVariant.Secondary} onPress={linkButtonOptions.onPress} style={tw.style('mt-2')}>
116
- {linkButtonOptions.label}
117
- </Button_1.Button>);
118
- const renderCloseButton = (closeButtonOptions) => {
119
- if (closeButtonOptions && 'iconName' in closeButtonOptions) {
120
- const iconOptions = closeButtonOptions;
121
- return (<ButtonIcon_1.ButtonIcon iconName={iconOptions.iconName} onPress={(e) => iconOptions.onPress?.(e)} size={iconOptions.size} isDisabled={iconOptions.isDisabled} twClassName={iconOptions.twClassName} style={iconOptions.style} iconProps={iconOptions.iconProps}/>);
122
- }
123
- return (<Button_1.Button variant={Button_1.ButtonVariant.Primary} onPress={(e) => closeButtonOptions?.onPress?.(e)} startIconName={closeButtonOptions?.startIconName} endIconName={closeButtonOptions?.endIconName} style={closeButtonOptions?.style}>
124
- {closeButtonOptions?.children}
125
- </Button_1.Button>);
126
- };
127
- const renderAvatar = () => {
128
- switch (toastOptions?.variant) {
129
- case Toast_types_1.ToastVariant.Plain:
130
- return null;
131
- case Toast_types_1.ToastVariant.Account: {
132
- const { accountAddress, accountAvatarType } = toastOptions;
133
- return (<AvatarAccount_1.AvatarAccount address={accountAddress} variant={accountAvatarType} size={AvatarAccount_1.AvatarAccountSize.Md} style={tw.style('mr-4')}/>);
134
- }
135
- case Toast_types_1.ToastVariant.Network: {
136
- const { networkImageSource, networkName } = toastOptions;
137
- return (<AvatarNetwork_1.AvatarNetwork name={networkName} src={networkImageSource} size={AvatarNetwork_1.AvatarNetworkSize.Md} style={tw.style('mr-4')}/>);
40
+ showToast: (options) => innerRef.current?.showToast(options),
41
+ closeToast: () => innerRef.current?.closeToast(),
42
+ }), []);
43
+ (0, react_1.useEffect)(() => {
44
+ registeredRef = innerRef;
45
+ return () => {
46
+ if (registeredRef === innerRef) {
47
+ registeredRef = null;
138
48
  }
139
- case Toast_types_1.ToastVariant.App: {
140
- const { appIconSource } = toastOptions;
141
- return (<AvatarFavicon_1.AvatarFavicon src={appIconSource} size={AvatarFavicon_1.AvatarFaviconSize.Md} style={tw.style('mr-4')}/>);
142
- }
143
- case Toast_types_1.ToastVariant.Icon: {
144
- const { iconName, severity } = toastOptions;
145
- return (<AvatarIcon_1.AvatarIcon iconName={iconName} severity={severity} size={AvatarIcon_1.AvatarIconSize.Md} style={tw.style('mr-4')}/>);
146
- }
147
- /* istanbul ignore next - all variants handled above */
148
- default:
149
- return null;
150
- }
151
- };
152
- const renderToastContent = (options) => {
153
- const { labelOptions, descriptionOptions, linkButtonOptions, closeButtonOptions, startAccessory, } = options;
154
- const isStartAccessoryValid = startAccessory !== null &&
155
- startAccessory !== undefined &&
156
- (0, react_1.isValidElement)(startAccessory);
157
- return (<>
158
- {isStartAccessoryValid ? startAccessory : renderAvatar()}
159
- <react_native_1.View style={tw.style('flex-1 justify-center')} {...labelsContainerProps}>
160
- {renderLabel(labelOptions)}
161
- {renderDescription(descriptionOptions)}
162
- {renderActionButton(linkButtonOptions)}
163
- </react_native_1.View>
164
- {closeButtonOptions ? renderCloseButton(closeButtonOptions) : null}
165
- </>);
166
- };
167
- if (!toastOptions) {
168
- return null;
169
- }
170
- return (<react_native_reanimated_1.default.View onLayout={onAnimatedViewLayout} style={baseStyle} {...props}>
171
- {renderToastContent(toastOptions)}
172
- </react_native_reanimated_1.default.View>);
49
+ };
50
+ }, []);
51
+ return <ToastView_1.ToastView ref={innerRef} {...props}/>;
173
52
  });
53
+ ToastComponent.displayName = 'Toast';
54
+ exports.Toast = ToastComponent;
55
+ exports.Toast.show = (options) => {
56
+ assertRegisteredRef('show').showToast(options);
57
+ };
58
+ exports.Toast.hide = () => {
59
+ assertRegisteredRef('hide').closeToast();
60
+ };
174
61
  //# sourceMappingURL=Toast.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.cjs","sourceRoot":"","sources":["../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4BAA4B;AAC5B,qFAAmE;AACnE,+CAOe;AACf,wDAAgD;AAEhD,mFAOiC;AACjC,mFAAmE;AAEnE,yBAAyB;AACzB,8DAAoE;AACpE,8DAAoE;AACpE,wDAA2D;AAC3D,8DAAoE;AACpE,gDAAkD;AAClD,wDAA2C;AAC3C,4CAAmE;AAEnE,yBAAyB;AACzB,2DAI2B;AAW3B,mDAA6C;AAE7C,MAAM,YAAY,GAAG,yBAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAExC,QAAA,KAAK,GAAG,IAAA,kBAAU,EAC7B,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACvD,MAAM,EAAE,GAAG,IAAA,wCAAW,GAAE,CAAC;IACzB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAC9C,SAAS,CACV,CAAC;IACF,MAAM,mBAAmB,GAAG,IAAA,cAAM,EAChC,IAAI,CACL,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAA,kDAAiB,GAAE,CAAC;IAC3D,MAAM,kBAAkB,GAAG,IAAA,wCAAc,EAAC,YAAY,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,YAAY,EAAE,YAAY,IAAI,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,IAAA,0CAAgB,EAAC,GAAG,EAAE,CAAC,CAAC;QAC5C,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,kBAAkB,CAAC,KAAK,GAAG,YAAY,EAAE,CAAC;KACrE,CAAC,CAAC,CAAC;IACJ,MAAM,SAAS,GAAyB,IAAA,eAAO,EAC7C,GAAG,EAAE,CAAC;QACJ,EAAE,CAAC,KAAK,CACN,wHAAwH,EACxH,WAAW,CACZ;QACD,aAAa;KACd,EACD,CAAC,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,CACjC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAEpD,MAAM,SAAS,GAAG,CAAC,OAAqB,EAAE,EAAE;QAC1C,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,YAAY,EAAE;YAChB,IAAA,yCAAe,EAAC,kBAAkB,CAAC,CAAC;YACpC,eAAe,GAAG,GAAG,CAAC;YACtB,iGAAiG;YACjG,eAAe,CAAC,SAAS,CAAC,CAAC;SAC5B;QACD,IAAI,mBAAmB,CAAC,OAAO,KAAK,IAAI,EAAE;YACxC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;SAC3C;QACD,mBAAmB,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5C,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;YACnC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,EAAE,eAAe,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,mBAAmB,CAAC,OAAO,KAAK,IAAI,EAAE;YACxC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC1C,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;SACpC;QACD,kBAAkB,CAAC,KAAK,GAAG,IAAA,oCAAU,EACnC,YAAY,EACZ,EAAE,QAAQ,EAAE,0CAAwB,EAAE,EACtC,GAAG,EAAE;YACH,IAAA,iCAAO,EAAC,UAAU,CAAC,EAAE,CAAC;QACxB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC;IAEF,IAAA,2BAAmB,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,SAAS;QACT,UAAU;KACX,CAAC,CAAC,CAAC;IAEJ,MAAM,oBAAoB,GAAG,CAAC,CAAoB,EAAE,EAAE;QACpD,8EAA8E;QAC9E,IAAI,YAAY,EAAE;YAChB,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;YACxC,MAAM,iBAAiB,GAAG,CAAC,CAAC,sCAAoB,GAAG,kBAAkB,CAAC,CAAC;YAEvE,kBAAkB,CAAC,KAAK,GAAG,MAAM,CAAC;YAElC,IAAI,YAAY,CAAC,YAAY,EAAE;gBAC7B,kBAAkB,CAAC,KAAK,GAAG,IAAA,oCAAU,EAAC,iBAAiB,EAAE;oBACvD,QAAQ,EAAE,0CAAwB;iBACnC,CAAC,CAAC;aACJ;iBAAM;gBACL,kBAAkB,CAAC,KAAK,GAAG,IAAA,oCAAU,EACnC,iBAAiB,EACjB,EAAE,QAAQ,EAAE,0CAAwB,EAAE,EACtC,GAAG,EAAE;oBACH,kBAAkB,CAAC,KAAK,GAAG,IAAA,mCAAS,EAClC,2CAAyB,EACzB,IAAA,oCAAU,EACR,MAAM,EACN,EAAE,QAAQ,EAAE,0CAAwB,EAAE,EACtC,IAAA,iCAAO,EAAC,UAAU,CAAC,CACpB,CACF,CAAC;gBACJ,CAAC,CACF,CAAC;aACH;SACF;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,YAA+B,EAAE,EAAE,CAAC,CACvD,CAAC,WAAI,CAAC,OAAO,CAAC,CAAC,kBAAW,CAAC,MAAM,CAAC,CAChC;QAAA,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9C,CAAC,WAAI,CACH,GAAG,CAAC,CAAC,eAAe,KAAK,EAAE,CAAC,CAC5B,OAAO,CAAC,CAAC,kBAAW,CAAC,MAAM,CAAC,CAC5B,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CACjD,KAAK,CAAC,CAAC,gBAAS,CAAC,WAAW,CAAC,CAE7B;YAAA,CAAC,KAAK,CACR;UAAA,EAAE,WAAI,CAAC,CACR,CAAC,CACJ;MAAA,EAAE,WAAI,CAAC,CACR,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,kBAA4C,EAAE,EAAE,CACzE,kBAAkB,IAAI,CACpB,CAAC,WAAI,CACH,OAAO,CAAC,CAAC,kBAAW,CAAC,MAAM,CAAC,CAC5B,KAAK,CAAC,CAAC,gBAAS,CAAC,eAAe,CAAC,CACjC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAExB;UAAA,CAAC,kBAAkB,CAAC,WAAW,CACjC;QAAA,EAAE,WAAI,CAAC,CACR,CAAC;IAEJ,MAAM,kBAAkB,GAAG,CAAC,iBAA0C,EAAE,EAAE,CACxE,iBAAiB,IAAI,CACnB,CAAC,eAAM,CACL,OAAO,CAAC,CAAC,sBAAa,CAAC,SAAS,CAAC,CACjC,OAAO,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CACnC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAExB;UAAA,CAAC,iBAAiB,CAAC,KAAK,CAC1B;QAAA,EAAE,eAAM,CAAC,CACV,CAAC;IAEJ,MAAM,iBAAiB,GAAG,CACxB,kBAA4C,EAC5C,EAAE;QACF,IAAI,kBAAkB,IAAI,UAAU,IAAI,kBAAkB,EAAE;YAC1D,MAAM,WAAW,GAAG,kBAAiD,CAAC;YACtE,OAAO,CACL,CAAC,uBAAU,CACT,QAAQ,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAC/B,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CACzC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CACvB,UAAU,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CACnC,WAAW,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CACrC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CACzB,SAAS,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EACjC,CACH,CAAC;SACH;QACD,OAAO,CACL,CAAC,eAAM,CACL,OAAO,CAAC,CAAC,sBAAa,CAAC,OAAO,CAAC,CAC/B,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CACjD,aAAa,CAAC,CAAC,kBAAkB,EAAE,aAAa,CAAC,CACjD,WAAW,CAAC,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAC7C,KAAK,CAAC,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAEjC;UAAA,CAAC,kBAAkB,EAAE,QAAQ,CAC/B;QAAA,EAAE,eAAM,CAAC,CACV,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,QAAQ,YAAY,EAAE,OAAO,EAAE;YAC7B,KAAK,0BAAY,CAAC,KAAK;gBACrB,OAAO,IAAI,CAAC;YACd,KAAK,0BAAY,CAAC,OAAO,CAAC,CAAC;gBACzB,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,YAAY,CAAC;gBAC3D,OAAO,CACL,CAAC,6BAAa,CACZ,OAAO,CAAC,CAAC,cAAc,CAAC,CACxB,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAC3B,IAAI,CAAC,CAAC,iCAAiB,CAAC,EAAE,CAAC,CAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EACxB,CACH,CAAC;aACH;YACD,KAAK,0BAAY,CAAC,OAAO,CAAC,CAAC;gBACzB,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;gBACzD,OAAO,CACL,CAAC,6BAAa,CACZ,IAAI,CAAC,CAAC,WAAW,CAAC,CAClB,GAAG,CAAC,CAAC,kBAAkB,CAAC,CACxB,IAAI,CAAC,CAAC,iCAAiB,CAAC,EAAE,CAAC,CAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EACxB,CACH,CAAC;aACH;YACD,KAAK,0BAAY,CAAC,GAAG,CAAC,CAAC;gBACrB,MAAM,EAAE,aAAa,EAAE,GAAG,YAAY,CAAC;gBACvC,OAAO,CACL,CAAC,6BAAa,CACZ,GAAG,CAAC,CAAC,aAAa,CAAC,CACnB,IAAI,CAAC,CAAC,iCAAiB,CAAC,EAAE,CAAC,CAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EACxB,CACH,CAAC;aACH;YACD,KAAK,0BAAY,CAAC,IAAI,CAAC,CAAC;gBACtB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC;gBAC5C,OAAO,CACL,CAAC,uBAAU,CACT,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,IAAI,CAAC,CAAC,2BAAc,CAAC,EAAE,CAAC,CACxB,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EACxB,CACH,CAAC;aACH;YACD,uDAAuD;YACvD;gBACE,OAAO,IAAI,CAAC;SACf;IACH,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,OAAqB,EAAE,EAAE;QACnD,MAAM,EACJ,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,GAAG,OAAO,CAAC;QAEZ,MAAM,qBAAqB,GACzB,cAAc,KAAK,IAAI;YACvB,cAAc,KAAK,SAAS;YAC5B,IAAA,sBAAc,EAAC,cAAc,CAAC,CAAC;QAEjC,OAAO,CACL,EACE;UAAA,CAAC,qBAAqB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,EAAE,CACxD;UAAA,CAAC,mBAAI,CACH,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CACzC,IAAI,oBAAoB,CAAC,CAEzB;YAAA,CAAC,WAAW,CAAC,YAAY,CAAC,CAC1B;YAAA,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CACtC;YAAA,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CACxC;UAAA,EAAE,mBAAI,CACN;UAAA,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CACpE;QAAA,GAAG,CACJ,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,CAAC,iCAAQ,CAAC,IAAI,CACZ,QAAQ,CAAC,CAAC,oBAAoB,CAAC,CAC/B,KAAK,CAAC,CAAC,SAAS,CAAC,CACjB,IAAI,KAAK,CAAC,CAEV;QAAA,CAAC,kBAAkB,CAAC,YAAY,CAAC,CACnC;MAAA,EAAE,iCAAQ,CAAC,IAAI,CAAC,CACjB,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["// Third party dependencies.\nimport { useTailwind } from '@metamask/design-system-twrnc-preset';\nimport React, {\n forwardRef,\n isValidElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Dimensions, View } from 'react-native';\nimport type { LayoutChangeEvent, StyleProp, ViewStyle } from 'react-native';\nimport Animated, {\n cancelAnimation,\n runOnJS,\n useAnimatedStyle,\n useSharedValue,\n withDelay,\n withTiming,\n} from 'react-native-reanimated';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\n// External dependencies.\nimport { AvatarAccount, AvatarAccountSize } from '../AvatarAccount';\nimport { AvatarFavicon, AvatarFaviconSize } from '../AvatarFavicon';\nimport { AvatarIcon, AvatarIconSize } from '../AvatarIcon';\nimport { AvatarNetwork, AvatarNetworkSize } from '../AvatarNetwork';\nimport { Button, ButtonVariant } from '../Button';\nimport { ButtonIcon } from '../ButtonIcon';\nimport { Text, TextVariant, TextColor, FontWeight } from '../Text';\n\n// Internal dependencies.\nimport {\n TOAST_VISIBILITY_DURATION,\n TOAST_ANIMATION_DURATION,\n TOAST_BOTTOM_PADDING,\n} from './Toast.constants';\nimport type {\n ToastCloseButtonIconOptions,\n ToastCloseButtonOptions,\n ToastDescriptionOptions,\n ToastLabelOptions,\n ToastLinkButtonOptions,\n ToastOptions,\n ToastProps,\n ToastRef,\n} from './Toast.types';\nimport { ToastVariant } from './Toast.types';\n\nconst screenHeight = Dimensions.get('window').height;\n\nexport const Toast = forwardRef<ToastRef, ToastProps>(\n ({ twClassName, labelsContainerProps, ...props }, ref) => {\n const tw = useTailwind();\n const [toastOptions, setToastOptions] = useState<ToastOptions | undefined>(\n undefined,\n );\n const replacementTimerRef = useRef<ReturnType<typeof setTimeout> | null>(\n null,\n );\n const { bottom: bottomNotchSpacing } = useSafeAreaInsets();\n const translateYProgress = useSharedValue(screenHeight);\n const bottomOffset = toastOptions?.bottomOffset ?? 0;\n const animatedStyle = useAnimatedStyle(() => ({\n transform: [{ translateY: translateYProgress.value - bottomOffset }],\n }));\n const baseStyle: StyleProp<ViewStyle> = useMemo(\n () => [\n tw.style(\n 'absolute left-4 right-4 bottom-0 bg-background-section border border-border-muted rounded-xl p-3 flex-row items-center',\n twClassName,\n ),\n animatedStyle,\n ],\n [tw, animatedStyle, twClassName],\n );\n\n const resetState = () => setToastOptions(undefined);\n\n const showToast = (options: ToastOptions) => {\n let timeoutDuration = 0;\n if (toastOptions) {\n cancelAnimation(translateYProgress);\n timeoutDuration = 100;\n // Clear existing toast state to prevent animation conflicts when showing rapid successive toasts\n setToastOptions(undefined);\n }\n if (replacementTimerRef.current !== null) {\n clearTimeout(replacementTimerRef.current);\n }\n replacementTimerRef.current = setTimeout(() => {\n replacementTimerRef.current = null;\n setToastOptions(options);\n }, timeoutDuration);\n };\n\n const closeToast = () => {\n if (replacementTimerRef.current !== null) {\n clearTimeout(replacementTimerRef.current);\n replacementTimerRef.current = null;\n }\n translateYProgress.value = withTiming(\n screenHeight,\n { duration: TOAST_ANIMATION_DURATION },\n () => {\n runOnJS(resetState)();\n },\n );\n };\n\n useImperativeHandle(ref, () => ({\n showToast,\n closeToast,\n }));\n\n const onAnimatedViewLayout = (e: LayoutChangeEvent) => {\n /* istanbul ignore next - guard only; layout fires when toastOptions is set */\n if (toastOptions) {\n const { height } = e.nativeEvent.layout;\n const translateYToValue = -(TOAST_BOTTOM_PADDING + bottomNotchSpacing);\n\n translateYProgress.value = height;\n\n if (toastOptions.hasNoTimeout) {\n translateYProgress.value = withTiming(translateYToValue, {\n duration: TOAST_ANIMATION_DURATION,\n });\n } else {\n translateYProgress.value = withTiming(\n translateYToValue,\n { duration: TOAST_ANIMATION_DURATION },\n () => {\n translateYProgress.value = withDelay(\n TOAST_VISIBILITY_DURATION,\n withTiming(\n height,\n { duration: TOAST_ANIMATION_DURATION },\n runOnJS(resetState),\n ),\n );\n },\n );\n }\n }\n };\n\n const renderLabel = (labelOptions: ToastLabelOptions) => (\n <Text variant={TextVariant.BodyMd}>\n {labelOptions.map(({ label, isBold }, index) => (\n <Text\n key={`toast-label-${index}`}\n variant={TextVariant.BodyMd}\n fontWeight={isBold ? FontWeight.Bold : undefined}\n color={TextColor.TextDefault}\n >\n {label}\n </Text>\n ))}\n </Text>\n );\n\n const renderDescription = (descriptionOptions?: ToastDescriptionOptions) =>\n descriptionOptions && (\n <Text\n variant={TextVariant.BodySm}\n color={TextColor.TextAlternative}\n style={tw.style('mt-1')}\n >\n {descriptionOptions.description}\n </Text>\n );\n\n const renderActionButton = (linkButtonOptions?: ToastLinkButtonOptions) =>\n linkButtonOptions && (\n <Button\n variant={ButtonVariant.Secondary}\n onPress={linkButtonOptions.onPress}\n style={tw.style('mt-2')}\n >\n {linkButtonOptions.label}\n </Button>\n );\n\n const renderCloseButton = (\n closeButtonOptions?: ToastCloseButtonOptions,\n ) => {\n if (closeButtonOptions && 'iconName' in closeButtonOptions) {\n const iconOptions = closeButtonOptions as ToastCloseButtonIconOptions;\n return (\n <ButtonIcon\n iconName={iconOptions.iconName}\n onPress={(e) => iconOptions.onPress?.(e)}\n size={iconOptions.size}\n isDisabled={iconOptions.isDisabled}\n twClassName={iconOptions.twClassName}\n style={iconOptions.style}\n iconProps={iconOptions.iconProps}\n />\n );\n }\n return (\n <Button\n variant={ButtonVariant.Primary}\n onPress={(e) => closeButtonOptions?.onPress?.(e)}\n startIconName={closeButtonOptions?.startIconName}\n endIconName={closeButtonOptions?.endIconName}\n style={closeButtonOptions?.style}\n >\n {closeButtonOptions?.children}\n </Button>\n );\n };\n\n const renderAvatar = () => {\n switch (toastOptions?.variant) {\n case ToastVariant.Plain:\n return null;\n case ToastVariant.Account: {\n const { accountAddress, accountAvatarType } = toastOptions;\n return (\n <AvatarAccount\n address={accountAddress}\n variant={accountAvatarType}\n size={AvatarAccountSize.Md}\n style={tw.style('mr-4')}\n />\n );\n }\n case ToastVariant.Network: {\n const { networkImageSource, networkName } = toastOptions;\n return (\n <AvatarNetwork\n name={networkName}\n src={networkImageSource}\n size={AvatarNetworkSize.Md}\n style={tw.style('mr-4')}\n />\n );\n }\n case ToastVariant.App: {\n const { appIconSource } = toastOptions;\n return (\n <AvatarFavicon\n src={appIconSource}\n size={AvatarFaviconSize.Md}\n style={tw.style('mr-4')}\n />\n );\n }\n case ToastVariant.Icon: {\n const { iconName, severity } = toastOptions;\n return (\n <AvatarIcon\n iconName={iconName}\n severity={severity}\n size={AvatarIconSize.Md}\n style={tw.style('mr-4')}\n />\n );\n }\n /* istanbul ignore next - all variants handled above */\n default:\n return null;\n }\n };\n\n const renderToastContent = (options: ToastOptions) => {\n const {\n labelOptions,\n descriptionOptions,\n linkButtonOptions,\n closeButtonOptions,\n startAccessory,\n } = options;\n\n const isStartAccessoryValid =\n startAccessory !== null &&\n startAccessory !== undefined &&\n isValidElement(startAccessory);\n\n return (\n <>\n {isStartAccessoryValid ? startAccessory : renderAvatar()}\n <View\n style={tw.style('flex-1 justify-center')}\n {...labelsContainerProps}\n >\n {renderLabel(labelOptions)}\n {renderDescription(descriptionOptions)}\n {renderActionButton(linkButtonOptions)}\n </View>\n {closeButtonOptions ? renderCloseButton(closeButtonOptions) : null}\n </>\n );\n };\n\n if (!toastOptions) {\n return null;\n }\n\n return (\n <Animated.View\n onLayout={onAnimatedViewLayout}\n style={baseStyle}\n {...props}\n >\n {renderToastContent(toastOptions)}\n </Animated.View>\n );\n },\n);\n"]}
1
+ {"version":3,"file":"Toast.cjs","sourceRoot":"","sources":["../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4BAA4B;AAC5B,+CAKe;AAKf,+CAAwC;AAExC,IAAI,aAAa,GAA+B,IAAI,CAAC;AAErD,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAY,EAAE;IACvD,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;QAC3B,MAAM,IAAI,KAAK,CACb,SAAS,MAAM,oFAAoF,CACpG,CAAC;KACH;IACD,OAAO,aAAa,CAAC,OAAO,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,IAAA,kBAAU,EAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACrE,MAAM,QAAQ,GAAG,IAAA,cAAM,EAAW,IAAI,CAAC,CAAC;IAExC,IAAA,2BAAmB,EACjB,GAAG,EACH,GAAG,EAAE,CAAC,CAAC;QACL,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QAC5D,UAAU,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE;KACjD,CAAC,EACF,EAAE,CACH,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,aAAa,GAAG,QAAQ,CAAC;QACzB,OAAO,GAAG,EAAE;YACV,IAAI,aAAa,KAAK,QAAQ,EAAE;gBAC9B,aAAa,GAAG,IAAI,CAAC;aACtB;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,qBAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,cAAc,CAAC,WAAW,GAAG,OAAO,CAAC;AAaxB,QAAA,KAAK,GAAG,cAAkC,CAAC;AAExD,aAAK,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;IACvB,mBAAmB,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF,aAAK,CAAC,IAAI,GAAG,GAAG,EAAE;IAChB,mBAAmB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;AAC3C,CAAC,CAAC","sourcesContent":["// Third party dependencies.\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport type { RefObject } from 'react';\n\n// Internal dependencies.\nimport type { ToastOptions, ToastProps, ToastRef } from './Toast.types';\nimport { ToastView } from './ToastView';\n\nlet registeredRef: RefObject<ToastRef> | null = null;\n\nconst assertRegisteredRef = (method: string): ToastRef => {\n if (!registeredRef?.current) {\n throw new Error(\n `Toast.${method}() called before <Toast /> mounted. Render <Toast /> once at the root of your app.`,\n );\n }\n return registeredRef.current;\n};\n\nconst ToastComponent = forwardRef<ToastRef, ToastProps>((props, ref) => {\n const innerRef = useRef<ToastRef>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n showToast: (options) => innerRef.current?.showToast(options),\n closeToast: () => innerRef.current?.closeToast(),\n }),\n [],\n );\n\n useEffect(() => {\n registeredRef = innerRef;\n return () => {\n if (registeredRef === innerRef) {\n registeredRef = null;\n }\n };\n }, []);\n\n return <ToastView ref={innerRef} {...props} />;\n});\n\nToastComponent.displayName = 'Toast';\n\ntype ToastWithStatics = typeof ToastComponent & {\n /**\n * Show a toast notification. Requires `<Toast />` to be mounted.\n */\n show: (options: ToastOptions) => void;\n /**\n * Hide the currently visible toast, if any.\n */\n hide: () => void;\n};\n\nexport const Toast = ToastComponent as ToastWithStatics;\n\nToast.show = (options) => {\n assertRegisteredRef('show').showToast(options);\n};\n\nToast.hide = () => {\n assertRegisteredRef('hide').closeToast();\n};\n"]}
@@ -1,7 +1,19 @@
1
1
  import React from "react";
2
- import type { ToastRef } from "./Toast.types.cjs";
3
- export declare const Toast: React.ForwardRefExoticComponent<{
2
+ import type { ToastOptions, ToastRef } from "./Toast.types.cjs";
3
+ declare const ToastComponent: React.ForwardRefExoticComponent<{
4
4
  twClassName?: string | undefined;
5
5
  labelsContainerProps?: Omit<import("react-native").ViewProps, "children" | "style"> | undefined;
6
6
  } & Omit<import("react-native").ViewProps, "style"> & React.RefAttributes<ToastRef>>;
7
+ type ToastWithStatics = typeof ToastComponent & {
8
+ /**
9
+ * Show a toast notification. Requires `<Toast />` to be mounted.
10
+ */
11
+ show: (options: ToastOptions) => void;
12
+ /**
13
+ * Hide the currently visible toast, if any.
14
+ */
15
+ hide: () => void;
16
+ };
17
+ export declare const Toast: ToastWithStatics;
18
+ export {};
7
19
  //# sourceMappingURL=Toast.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.cts","sourceRoot":"","sources":["../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":"AAEA,OAAO,KAON,cAAc;AA4Bf,OAAO,KAAK,EAQV,QAAQ,EACT,0BAAsB;AAKvB,eAAO,MAAM,KAAK;;;oFAmQjB,CAAC"}
1
+ {"version":3,"file":"Toast.d.cts","sourceRoot":"","sources":["../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":"AACA,OAAO,KAKN,cAAc;AAIf,OAAO,KAAK,EAAE,YAAY,EAAc,QAAQ,EAAE,0BAAsB;AAcxE,QAAA,MAAM,cAAc;;;oFAsBlB,CAAC;AAIH,KAAK,gBAAgB,GAAG,OAAO,cAAc,GAAG;IAC9C;;OAEG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,KAAK,kBAAqC,CAAC"}
@@ -1,7 +1,19 @@
1
1
  import React from "react";
2
- import type { ToastRef } from "./Toast.types.mjs";
3
- export declare const Toast: React.ForwardRefExoticComponent<{
2
+ import type { ToastOptions, ToastRef } from "./Toast.types.mjs";
3
+ declare const ToastComponent: React.ForwardRefExoticComponent<{
4
4
  twClassName?: string | undefined;
5
5
  labelsContainerProps?: Omit<import("react-native").ViewProps, "children" | "style"> | undefined;
6
6
  } & Omit<import("react-native").ViewProps, "style"> & React.RefAttributes<ToastRef>>;
7
+ type ToastWithStatics = typeof ToastComponent & {
8
+ /**
9
+ * Show a toast notification. Requires `<Toast />` to be mounted.
10
+ */
11
+ show: (options: ToastOptions) => void;
12
+ /**
13
+ * Hide the currently visible toast, if any.
14
+ */
15
+ hide: () => void;
16
+ };
17
+ export declare const Toast: ToastWithStatics;
18
+ export {};
7
19
  //# sourceMappingURL=Toast.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.mts","sourceRoot":"","sources":["../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":"AAEA,OAAO,KAON,cAAc;AA4Bf,OAAO,KAAK,EAQV,QAAQ,EACT,0BAAsB;AAKvB,eAAO,MAAM,KAAK;;;oFAmQjB,CAAC"}
1
+ {"version":3,"file":"Toast.d.mts","sourceRoot":"","sources":["../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":"AACA,OAAO,KAKN,cAAc;AAIf,OAAO,KAAK,EAAE,YAAY,EAAc,QAAQ,EAAE,0BAAsB;AAcxE,QAAA,MAAM,cAAc;;;oFAsBlB,CAAC;AAIH,KAAK,gBAAgB,GAAG,OAAO,cAAc,GAAG;IAC9C;;OAEG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,KAAK,kBAAqC,CAAC"}