diff --git a/libs/mobile/shared/ui/ui-kit/src/gesture-pressable-icon-button/component.tsx b/libs/mobile/shared/ui/ui-kit/src/gesture-pressable-icon-button/component.tsx new file mode 100644 index 0000000..af754b9 --- /dev/null +++ b/libs/mobile/shared/ui/ui-kit/src/gesture-pressable-icon-button/component.tsx @@ -0,0 +1,33 @@ +import { ReactElement } from 'react'; +import { PressableProps as GesturePressableProps } from 'react-native-gesture-handler'; +import { cn } from '@open-webui-react-native/mobile/shared/ui/styles'; +import { Icon, IconProps } from '../icon/component'; +import { IconName } from '../icon/types'; +import { GestureAppPressable } from '../pressable'; +import { AppSpinner } from '../spinner'; + +export interface GesturePressableIconButtonProps extends GesturePressableProps { + iconName: IconName; + iconProps?: Omit; + isLoading?: boolean; + className?: string; +} + +export function GesturePressableIconButton({ + iconName, + iconProps, + isLoading, + disabled, + className, + ...pressableProps +}: GesturePressableIconButtonProps): ReactElement { + return ( + + {isLoading ? : } + + ); +} diff --git a/libs/mobile/shared/ui/ui-kit/src/gesture-pressable-icon-button/index.ts b/libs/mobile/shared/ui/ui-kit/src/gesture-pressable-icon-button/index.ts new file mode 100644 index 0000000..bb82484 --- /dev/null +++ b/libs/mobile/shared/ui/ui-kit/src/gesture-pressable-icon-button/index.ts @@ -0,0 +1 @@ +export * from './component'; diff --git a/libs/mobile/shared/ui/ui-kit/src/index.ts b/libs/mobile/shared/ui/ui-kit/src/index.ts index 3e9fca8..0e4305f 100644 --- a/libs/mobile/shared/ui/ui-kit/src/index.ts +++ b/libs/mobile/shared/ui/ui-kit/src/index.ts @@ -41,3 +41,4 @@ export * from './sheet-header'; export * from './keyboard-aware-scroll-view'; export * from './pressable-search-input'; export * from './full-screen-search-modal'; +export * from './gesture-pressable-icon-button'; diff --git a/libs/mobile/shared/ui/ui-kit/src/modal/component.tsx b/libs/mobile/shared/ui/ui-kit/src/modal/component.tsx index 1b9dc29..183cb19 100644 --- a/libs/mobile/shared/ui/ui-kit/src/modal/component.tsx +++ b/libs/mobile/shared/ui/ui-kit/src/modal/component.tsx @@ -1,5 +1,7 @@ import { useState, ReactElement, PropsWithChildren, useImperativeHandle, ForwardedRef } from 'react'; +import { Platform } from 'react-native'; import Modal, { ModalProps } from 'react-native-modal'; +import { GesturePressableIconButton } from '../gesture-pressable-icon-button'; import { IconButton } from '../icon-button'; import { AppToast } from '../toast'; import { View } from '../view'; @@ -37,13 +39,23 @@ export function AppModal({ modalRef, children, ...modalProps }: AppModalProps): {isVisible && ( {children} - + {Platform.OS === 'ios' ? ( + + ) : ( + + )} )}