'use client' import Link from 'next/link' import { motion, Variants } from 'framer-motion' import Icon from '@/components/ui/icon' import { IconType } from '@/components/ui/icon/types' import React, { useState } from 'react' const EXTERNAL_LINKS = { documentation: 'https://agno.link/agent-ui', playground: 'https://app.agno.com/playground/agents', agno: 'https://agno.com' } const TECH_ICONS = [ { type: 'nextjs' as IconType, position: 'left-0', link: 'https://nextjs.org', name: 'Next.js', zIndex: 10 }, { type: 'shadcn' as IconType, position: 'left-[15px]', link: 'https://ui.shadcn.com', name: 'shadcn/ui', zIndex: 20 }, { type: 'tailwind' as IconType, position: 'left-[30px]', link: 'https://tailwindcss.com', name: 'Tailwind CSS', zIndex: 30 } ] interface ActionButtonProps { href: string variant?: 'primary' text: string } const ActionButton = ({ href, variant, text }: ActionButtonProps) => { const baseStyles = 'px-4 py-2 text-sm transition-colors font-dmmono tracking-tight' const variantStyles = { primary: 'border border-border hover:bg-neutral-800 rounded-xl' } return ( {text} ) } const ChatBlankState = () => { const [hoveredIcon, setHoveredIcon] = useState(null) // Animation variants for the icon const iconVariants: Variants = { initial: { y: 0 }, hover: { y: -8, transition: { type: 'spring', stiffness: 150, damping: 10, mass: 0.5 } }, exit: { y: 0, transition: { type: 'spring', stiffness: 200, damping: 15, mass: 0.6 } } } // Animation variants for the tooltip const tooltipVariants: Variants = { hidden: { opacity: 0, transition: { duration: 0.15, ease: 'easeInOut' } }, visible: { opacity: 1, transition: { duration: 0.15, ease: 'easeInOut' } } } return ( This is an open-source Agent UI, built with {TECH_ICONS.map((icon) => ( setHoveredIcon(icon.type)} onHoverEnd={() => setHoveredIcon(null)} > {icon.name} ))} For the full experience, visit the Agent Playground. ) } export default ChatBlankState
For the full experience, visit the Agent Playground.