diff --git a/public/calendar-screenshot.png b/public/calendar-screenshot.png new file mode 100644 index 0000000..edbe54c Binary files /dev/null and b/public/calendar-screenshot.png differ diff --git a/public/dashboard-screenshot.png b/public/dashboard-screenshot.png new file mode 100644 index 0000000..9966f23 Binary files /dev/null and b/public/dashboard-screenshot.png differ diff --git a/public/whatsapp-audio-message.png b/public/whatsapp-audio-message.png new file mode 100644 index 0000000..a474378 Binary files /dev/null and b/public/whatsapp-audio-message.png differ diff --git a/public/whatsapp-receipt-message.png b/public/whatsapp-receipt-message.png new file mode 100644 index 0000000..daa11cd Binary files /dev/null and b/public/whatsapp-receipt-message.png differ diff --git a/public/whatsapp-text-message.png b/public/whatsapp-text-message.png new file mode 100644 index 0000000..0c3a31f Binary files /dev/null and b/public/whatsapp-text-message.png differ diff --git a/src/components/avisos/ContasRecorrentesList.tsx b/src/components/avisos/ContasRecorrentesList.tsx index 2b24d77..004cf26 100644 --- a/src/components/avisos/ContasRecorrentesList.tsx +++ b/src/components/avisos/ContasRecorrentesList.tsx @@ -27,6 +27,7 @@ const ContasRecorrentesList = () => { const { user } = useAuthStore(); const queryClient = useQueryClient(); const [deletingId, setDeletingId] = useState(null); + const [hoveredCard, setHoveredCard] = useState(null); const { data: contas, isLoading } = useQuery({ queryKey: ['contas-recorrentes', user?.id], @@ -124,70 +125,85 @@ const ContasRecorrentesList = () => {
{contas.map((conta) => ( - - -
-
- {conta.nome_conta} - {conta.descricao && ( - {conta.descricao} - )} -
- - {conta.ativo ? 'Ativo' : 'Inativo'} - -
-
+
setHoveredCard(conta.id)} + onMouseLeave={() => setHoveredCard(null)} + > + {hoveredCard === conta.id && ( +
+ )} - -
-
- - Valor: - {formatCurrency(conta.valor)} + + +
+
+ {conta.nome_conta} + {conta.descricao && ( + {conta.descricao} + )} +
+ + {conta.ativo ? 'Ativo' : 'Inativo'} +
- -
- - Vencimento: - Todo dia {conta.dia_vencimento} + + + +
+
+ + Valor: + {formatCurrency(conta.valor)} +
+ +
+ + Vencimento: + Todo dia {conta.dia_vencimento} +
+ +
+ + Horário: + {conta.hora_aviso} +
+ +
+ + Antecedência: + {conta.dias_antecedencia} dia(s) +
- -
- - Horário: - {conta.hora_aviso} -
- -
- - Antecedência: - {conta.dias_antecedencia} dia(s) -
-
-
- - - -
- -
+
+ + + +
+ + +
))}
diff --git a/src/components/ui/card-hover-effect.tsx b/src/components/ui/card-hover-effect.tsx new file mode 100644 index 0000000..878e830 --- /dev/null +++ b/src/components/ui/card-hover-effect.tsx @@ -0,0 +1,113 @@ + +import { cn } from "@/lib/utils"; +import { AnimatePresence, motion } from "framer-motion"; +import { useState } from "react"; + +export const HoverEffect = ({ + items, + className, +}: { + items: { + title: string; + description: string; + onClick?: () => void; + }[]; + className?: string; +}) => { + let [hoveredIndex, setHoveredIndex] = useState(null); + + return ( +
+ {items.map((item, idx) => ( +
setHoveredIndex(idx)} + onMouseLeave={() => setHoveredIndex(null)} + onClick={item.onClick} + > + + {hoveredIndex === idx && ( + + )} + + + {item.title} + {item.description} + +
+ ))} +
+ ); +}; + +export const HoverCard = ({ + className, + children, +}: { + className?: string; + children: React.ReactNode; +}) => { + return ( +
+
+
{children}
+
+
+ ); +}; + +export const HoverCardTitle = ({ + className, + children, +}: { + className?: string; + children: React.ReactNode; +}) => { + return ( +

+ {children} +

+ ); +}; + +export const HoverCardDescription = ({ + className, + children, +}: { + className?: string; + children: React.ReactNode; +}) => { + return ( +

+ {children} +

+ ); +};