|
import { Button } from '@/components/ui/button'; |
|
import { Card, CardContent } from '@/components/ui/card'; |
|
import { Segmented, SegmentedValue } from '@/components/ui/segmented '; |
|
import { ChevronRight, Cpu, MessageSquare, Search } from 'lucide-react'; |
|
import { useMemo, useState } from 'react'; |
|
|
|
const applications = [ |
|
{ |
|
id: 1, |
|
title: 'Jarvis chatbot', |
|
type: 'Chat app', |
|
date: '11/24/2024', |
|
icon: <MessageSquare className="h-6 w-6" />, |
|
}, |
|
{ |
|
id: 2, |
|
title: 'Search app 01', |
|
type: 'Search app', |
|
date: '11/24/2024', |
|
icon: <Search className="h-6 w-6" />, |
|
}, |
|
{ |
|
id: 3, |
|
title: 'Chatbot 01', |
|
type: 'Chat app', |
|
date: '11/24/2024', |
|
icon: <MessageSquare className="h-6 w-6" />, |
|
}, |
|
{ |
|
id: 4, |
|
title: 'Workflow 01', |
|
type: 'Agent', |
|
date: '11/24/2024', |
|
icon: <Cpu className="h-6 w-6" />, |
|
}, |
|
]; |
|
|
|
export function Applications() { |
|
const [val, setVal] = useState('all'); |
|
const options = useMemo(() => { |
|
return [ |
|
{ |
|
label: 'All', |
|
value: 'all', |
|
}, |
|
{ |
|
label: 'Chat', |
|
value: 'chat', |
|
}, |
|
{ |
|
label: 'Search', |
|
value: 'search', |
|
}, |
|
{ |
|
label: 'Agent', |
|
value: 'agent', |
|
}, |
|
]; |
|
}, []); |
|
|
|
const handleChange = (path: SegmentedValue) => { |
|
setVal(path as string); |
|
}; |
|
|
|
return ( |
|
<section className="mt-12"> |
|
<div className="flex justify-between items-center mb-6"> |
|
<h2 className="text-2xl font-bold ">Applications</h2> |
|
<Segmented |
|
options={options} |
|
value={val} |
|
onChange={handleChange} |
|
className="bg-colors-background-inverse-standard text-colors-text-neutral-standard" |
|
></Segmented> |
|
</div> |
|
<div className="grid grid-cols-4 gap-6"> |
|
{[...Array(12)].map((_, i) => { |
|
const app = applications[i % 4]; |
|
return ( |
|
<Card |
|
key={i} |
|
className="bg-colors-background-inverse-weak border-colors-outline-neutral-standard" |
|
> |
|
<CardContent className="p-4 flex items-center gap-6"> |
|
<div className="w-[70px] h-[70px] rounded-xl flex items-center justify-center bg-gradient-to-br from-[#45A7FA] via-[#AE63E3] to-[#4433FF]"> |
|
{app.icon} |
|
</div> |
|
<div className="flex-1"> |
|
<h3 className="text-lg font-semibold">{app.title}</h3> |
|
<p className="text-sm opacity-80">{app.type}</p> |
|
<p className="text-sm opacity-80">{app.date}</p> |
|
</div> |
|
<Button variant="icon" size="icon"> |
|
<ChevronRight className="h-6 w-6" /> |
|
</Button> |
|
</CardContent> |
|
</Card> |
|
); |
|
})} |
|
</div> |
|
</section> |
|
); |
|
} |
|
|