import { type ComponentType, type ForwardedRef, forwardRef, type ReactElement, } from "react"; import { type Falsy, type PressableProps, View } from "react-native"; import { type Theme, useYoshiki } from "yoshiki/native"; import { PressableFeedback } from "./links"; import { P } from "./text"; import { ts } from "./utils"; export const Button = forwardRef(function Button( { children, text, icon, licon, disabled, as, ...props }: { children?: ReactElement | ReactElement[] | Falsy; text?: string; licon?: ReactElement | Falsy; icon?: ReactElement | Falsy; disabled?: boolean; as?: ComponentType; } & AsProps, ref: ForwardedRef, ) { const { css } = useYoshiki("button"); const Container = as ?? PressableFeedback; return ( theme.accent, borderWidth: ts(0.5), fover: { self: { bg: (theme: Theme) => theme.accent }, text: { color: (theme: Theme) => theme.colors.white }, }, }, disabled && { child: { self: { borderColor: (theme) => theme.overlay1, }, text: { color: (theme) => theme.overlay1, }, }, }, ], props as any, ) as AsProps)} > {(licon || text || icon) != null && ( {licon} {text &&

{text}

} {icon}
)} {children}
); });