about summary refs log tree commit diff
path: root/src/view/com/util/forms/Button.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/com/util/forms/Button.tsx')
-rw-r--r--src/view/com/util/forms/Button.tsx11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/view/com/util/forms/Button.tsx b/src/view/com/util/forms/Button.tsx
index 6a5f19f99..8049d2243 100644
--- a/src/view/com/util/forms/Button.tsx
+++ b/src/view/com/util/forms/Button.tsx
@@ -6,6 +6,7 @@ import {
   TextStyle,
   Pressable,
   ViewStyle,
+  PressableStateCallbackType,
 } from 'react-native'
 import {Text} from '../text/Text'
 import {useTheme} from 'lib/ThemeContext'
@@ -26,6 +27,14 @@ export type ButtonType =
   | 'secondary-light'
   | 'default-light'
 
+// Augment type for react-native-web (see https://github.com/necolas/react-native-web/issues/1684#issuecomment-766451866)
+declare module 'react-native' {
+  interface PressableStateCallbackType {
+    hovered?: boolean
+    focused?: boolean
+  }
+}
+
 // TODO: Enforce that button always has a label
 export function Button({
   type = 'primary',
@@ -139,7 +148,7 @@ export function Button({
   )
 
   const getStyle = React.useCallback(
-    state => {
+    (state: PressableStateCallbackType) => {
       const arr = [typeOuterStyle, styles.outer, style]
       if (state.pressed) {
         arr.push({opacity: 0.6})