Add ResolverCard hover
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
import type { JSX } from "react";
|
import type { JSX } from "react";
|
||||||
|
import { useState } from "react";
|
||||||
import { Pressable, View } from "react-native";
|
import { Pressable, View } from "react-native";
|
||||||
import { Typography } from "heroui-native";
|
import { Typography } from "heroui-native";
|
||||||
import type { Resolver } from "@/data/mock";
|
import type { Resolver } from "@/data/mock";
|
||||||
|
import { MonoText } from "@/components/MonoText";
|
||||||
|
|
||||||
interface ResolverCardProps {
|
interface ResolverCardProps {
|
||||||
resolver: Resolver;
|
resolver: Resolver;
|
||||||
@@ -10,20 +12,25 @@ interface ResolverCardProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function ResolverCard({ resolver, isSelected, onSelect }: ResolverCardProps): JSX.Element {
|
export function ResolverCard({ resolver, isSelected, onSelect }: ResolverCardProps): JSX.Element {
|
||||||
|
const [isHovered, setIsHovered] = useState(false);
|
||||||
|
|
||||||
|
const borderClass = isSelected ? "border-accent" : isHovered ? "border-border-secondary" : "border-border";
|
||||||
|
const bgClass = isSelected ? "bg-accent/10" : "bg-surface-secondary";
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Pressable
|
<Pressable
|
||||||
onPress={onSelect}
|
onPress={onSelect}
|
||||||
className={`mb-1.5 rounded-xl border p-3 ${
|
onHoverIn={() => setIsHovered(true)}
|
||||||
isSelected ? "border-accent bg-accent/10" : "border-border bg-transparent"
|
onHoverOut={() => setIsHovered(false)}
|
||||||
}`}
|
className={`mb-1.5 rounded-xl border p-3 ${borderClass} ${bgClass}`}
|
||||||
>
|
>
|
||||||
<View className="flex-row items-center justify-between">
|
<View className="flex-row items-center justify-between">
|
||||||
<Typography type="body-sm" weight="semibold" className={isSelected ? "text-accent" : undefined}>
|
<Typography type="body-sm" weight="semibold" className={isSelected ? "text-accent" : undefined}>
|
||||||
{resolver.name}
|
{resolver.name}
|
||||||
</Typography>
|
</Typography>
|
||||||
<Typography type="body-sm" weight="semibold" className={isSelected ? "text-accent" : undefined}>
|
<MonoText weight="semibold" className={isSelected ? "text-accent" : undefined}>
|
||||||
{resolver.fee}
|
{resolver.fee}
|
||||||
</Typography>
|
</MonoText>
|
||||||
</View>
|
</View>
|
||||||
<Typography type="body-xs" color="muted" className="mt-0.5">
|
<Typography type="body-xs" color="muted" className="mt-0.5">
|
||||||
{resolver.type} · {resolver.wins}% buyer-favorable
|
{resolver.type} · {resolver.wins}% buyer-favorable
|
||||||
|
|||||||
Reference in New Issue
Block a user