Initial commit: Digital Home dashboard
This commit is contained in:
79
src/app/(dashboard)/bookmarks/page.tsx
Normal file
79
src/app/(dashboard)/bookmarks/page.tsx
Normal file
@@ -0,0 +1,79 @@
|
||||
export default function BookmarksPage() {
|
||||
const categories = [
|
||||
{
|
||||
label: "Статьи",
|
||||
emoji: "📰",
|
||||
links: [
|
||||
{ name: "Habr", url: "https://habr.com/ru/feed/", desc: "Технические статьи" },
|
||||
{ name: "VC.ru", url: "https://vc.ru/", desc: "Бизнес и технологии" },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Dev",
|
||||
emoji: "💻",
|
||||
links: [
|
||||
{ name: "GitHub", url: "https://github.com/", desc: "Репозитории" },
|
||||
{ name: "Go Playground", url: "https://go.dev/play/", desc: "Тест Go кода" },
|
||||
{ name: "pkg.go.dev", url: "https://pkg.go.dev/", desc: "Go пакеты" },
|
||||
{ name: "Flutter Docs", url: "https://docs.flutter.dev/", desc: "Документация Flutter" },
|
||||
{ name: ".NET Docs", url: "https://docs.microsoft.com/dotnet/", desc: "Документация .NET" },
|
||||
{ name: "Docker Hub", url: "https://hub.docker.com/", desc: "Docker образы" },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "AI",
|
||||
emoji: "🤖",
|
||||
links: [
|
||||
{ name: "OpenRouter", url: "https://openrouter.ai/", desc: "AI роутер" },
|
||||
{ name: "Hugging Face", url: "https://huggingface.co/", desc: "ML модели" },
|
||||
{ name: "Groq Console", url: "https://console.groq.com/", desc: "Groq API" },
|
||||
{ name: "Together AI", url: "https://api.together.xyz/", desc: "Together AI" },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Инфраструктура",
|
||||
emoji: "🏗️",
|
||||
links: [
|
||||
{ name: "Proxmox", url: "http://192.168.31.100:8006", desc: "Виртуализация" },
|
||||
{ name: "Tailscale", url: "https://login.tailscale.com/admin/", desc: "VPN сеть" },
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
<div className="space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold text-white">Bookmarks</h1>
|
||||
<p className="text-slate-400 text-sm">Избранные ссылки</p>
|
||||
</div>
|
||||
|
||||
{categories.map((cat) => (
|
||||
<div key={cat.label}>
|
||||
<h3 className="flex items-center gap-2 text-sm font-semibold text-slate-400 uppercase tracking-wider mb-3">
|
||||
<span>{cat.emoji}</span>
|
||||
{cat.label}
|
||||
</h3>
|
||||
<div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-3">
|
||||
{cat.links.map((link) => (
|
||||
<a
|
||||
key={link.url}
|
||||
href={link.url}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="glass-card p-4 hover:scale-[1.02] transition-transform group"
|
||||
>
|
||||
<div className="text-sm font-medium text-white group-hover:text-indigo-300 transition-colors truncate">
|
||||
{link.name}
|
||||
</div>
|
||||
<div className="text-xs text-slate-500 mt-1 truncate">{link.desc}</div>
|
||||
<div className="text-xs text-slate-700 mt-2 truncate text-right group-hover:text-slate-500 transition-colors">
|
||||
{new URL(link.url).hostname}
|
||||
</div>
|
||||
</a>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user