From 9b19a95e638b2a5379560b5ffb27c423ad9a2e4e Mon Sep 17 00:00:00 2001
From: Logan Rosen <loganrosen@gmail.com>
Date: Thu, 22 Jun 2023 12:40:32 -0400
Subject: Bump @types/react to ^18 and adjust types (#889)

---
 src/view/com/util/forms/Button.tsx | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

(limited to 'src/view/com/util/forms/Button.tsx')

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})
-- 
cgit 1.4.1

