mirror of
https://github.com/YuuKi-OS/Yuuki-web.git
synced 2026-02-18 22:01:09 +00:00
yuuki web init
This commit is contained in:
181
components/yuuki/ecosystem-section.tsx
Normal file
181
components/yuuki/ecosystem-section.tsx
Normal file
@@ -0,0 +1,181 @@
|
||||
import {
|
||||
Terminal,
|
||||
MessageSquare,
|
||||
Cpu,
|
||||
Download,
|
||||
Layers,
|
||||
Smartphone,
|
||||
Monitor,
|
||||
Zap,
|
||||
} from "lucide-react"
|
||||
|
||||
const tools = [
|
||||
{
|
||||
name: "YUY",
|
||||
subtitle: "CLI Tool",
|
||||
description:
|
||||
"Download, manage, and run Yuuki models locally. Three commands to get started. Written in Rust.",
|
||||
icon: Terminal,
|
||||
tech: "Rust 1.75+",
|
||||
features: [
|
||||
"Model downloads with auto-quantization",
|
||||
"Local inference via llama.cpp / ollama",
|
||||
"Cross-platform (Termux, Linux, macOS, Windows)",
|
||||
"System diagnostics & health checks",
|
||||
],
|
||||
links: {
|
||||
github: "https://github.com/YuuKi-OS/yuy",
|
||||
},
|
||||
command: "yuy setup && yuy download Yuuki-best && yuy run Yuuki-best",
|
||||
},
|
||||
{
|
||||
name: "YUY-Chat",
|
||||
subtitle: "TUI Chat",
|
||||
description:
|
||||
"Beautiful terminal chat interface. Stream responses word by word. Save and reload conversations. All local.",
|
||||
icon: MessageSquare,
|
||||
tech: "Rust + ratatui",
|
||||
features: [
|
||||
"Real-time streaming responses",
|
||||
"Conversation history (JSON)",
|
||||
"Model selector & presets",
|
||||
"HuggingFace cloud integration",
|
||||
],
|
||||
links: {
|
||||
github: "https://github.com/YuuKi-OS/yuy-chat",
|
||||
},
|
||||
command: "yuy-chat",
|
||||
},
|
||||
]
|
||||
|
||||
const highlights = [
|
||||
{
|
||||
icon: Download,
|
||||
title: "Smart Downloads",
|
||||
desc: "Auto-selects the best quantization based on your hardware and RAM.",
|
||||
},
|
||||
{
|
||||
icon: Layers,
|
||||
title: "Multiple Quantizations",
|
||||
desc: "q4_0, q5_k_m, q8_0, and f32. From phones to research workstations.",
|
||||
},
|
||||
{
|
||||
icon: Smartphone,
|
||||
title: "Mobile-First",
|
||||
desc: "Termux is the primary target. Optimized for constrained hardware.",
|
||||
},
|
||||
{
|
||||
icon: Monitor,
|
||||
title: "Cross-Platform",
|
||||
desc: "Termux, Linux, macOS, and Windows. Same experience everywhere.",
|
||||
},
|
||||
{
|
||||
icon: Cpu,
|
||||
title: "Zero Config",
|
||||
desc: "Platform detection, RAM recommendations, runtime auto-discovery.",
|
||||
},
|
||||
{
|
||||
icon: Zap,
|
||||
title: "~50ms Startup",
|
||||
desc: "Lightweight Rust binaries. ~8 MB. ~20 MB idle RAM.",
|
||||
},
|
||||
]
|
||||
|
||||
export function EcosystemSection() {
|
||||
return (
|
||||
<section id="ecosystem" className="relative px-6 py-24">
|
||||
<div className="mx-auto max-w-7xl">
|
||||
<div className="mb-16 text-center">
|
||||
<span className="mb-4 inline-block font-mono text-xs uppercase tracking-widest text-sakura">
|
||||
Ecosystem
|
||||
</span>
|
||||
<h2 className="mb-4 text-3xl font-bold text-foreground md:text-5xl text-balance">
|
||||
The Complete Toolkit
|
||||
</h2>
|
||||
<p className="mx-auto max-w-2xl text-muted-foreground leading-relaxed">
|
||||
From downloading models to chatting with them in your terminal.
|
||||
Everything built in Rust, optimized for every platform.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Tools grid */}
|
||||
<div className="mb-16 grid gap-6 lg:grid-cols-2">
|
||||
{tools.map((tool) => (
|
||||
<div
|
||||
key={tool.name}
|
||||
className="group relative overflow-hidden rounded-xl border border-border bg-card p-8 transition-colors hover:border-sakura-border"
|
||||
>
|
||||
<div className="mb-6 flex items-start justify-between">
|
||||
<div className="flex items-center gap-3">
|
||||
<div className="flex h-10 w-10 items-center justify-center rounded-lg bg-sakura-dim border border-sakura-border">
|
||||
<tool.icon size={20} className="text-sakura" />
|
||||
</div>
|
||||
<div>
|
||||
<h3 className="text-xl font-bold text-foreground">{tool.name}</h3>
|
||||
<span className="text-xs font-mono text-muted-foreground">{tool.subtitle}</span>
|
||||
</div>
|
||||
</div>
|
||||
<span className="rounded-md bg-secondary px-2.5 py-1 text-xs font-mono text-muted-foreground">
|
||||
{tool.tech}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<p className="mb-6 text-sm text-muted-foreground leading-relaxed">
|
||||
{tool.description}
|
||||
</p>
|
||||
|
||||
<ul className="mb-6 flex flex-col gap-2">
|
||||
{tool.features.map((feature) => (
|
||||
<li key={feature} className="flex items-start gap-2 text-sm">
|
||||
<span className="mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-sakura" />
|
||||
<span className="text-secondary-foreground">{feature}</span>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
|
||||
{/* Command line */}
|
||||
<div className="overflow-hidden rounded-lg border border-border bg-background">
|
||||
<div className="flex items-center gap-2 border-b border-border px-3 py-2">
|
||||
<div className="h-2 w-2 rounded-full bg-[#ef4444]/50" />
|
||||
<div className="h-2 w-2 rounded-full bg-[#eab308]/50" />
|
||||
<div className="h-2 w-2 rounded-full bg-[#22c55e]/50" />
|
||||
</div>
|
||||
<div className="p-4">
|
||||
<code className="text-xs font-mono text-muted-foreground">
|
||||
<span className="text-sakura">$</span> {tool.command}
|
||||
</code>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="mt-6">
|
||||
<a
|
||||
href={tool.links.github}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="inline-flex items-center gap-1.5 text-sm text-sakura transition-opacity hover:opacity-80"
|
||||
>
|
||||
View on GitHub
|
||||
<span className="text-xs">{">"}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
{/* Highlights grid */}
|
||||
<div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
|
||||
{highlights.map((item) => (
|
||||
<div
|
||||
key={item.title}
|
||||
className="rounded-xl border border-border bg-card p-6 transition-colors hover:border-sakura-border"
|
||||
>
|
||||
<item.icon size={18} className="mb-3 text-sakura" />
|
||||
<h4 className="mb-1.5 text-sm font-semibold text-foreground">{item.title}</h4>
|
||||
<p className="text-xs text-muted-foreground leading-relaxed">{item.desc}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user