import { Button } from "@/components/ui/button"; import { Card, CardHeader } from "@/components/ui/card"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog" import { SiGitlab } from "@icons-pack/react-simple-icons"; import { useTranslation } from "@/utils/translation"; import { useEffect, useState } from "react"; import Image from "next/image"; import Link from "next/link"; import Markdown from "react-markdown"; import communityData from "@/data/community"; const ProjectDialog = ({ name, page, url, repo }) => { const { t } = useTranslation(); return ( {name} Carburetor
  • {t("community.url")}: {url}
  • {t("community.repo")}: {repo}
{page}
) } export default function Community() { const { t, lang } = useTranslation(); const [apps, setApps] = useState(communityData.apps); const [q, setQ] = useState(''); useEffect(() => { const qq = q.trim().toLowerCase() setApps(communityData.apps.filter(app => ( app.name[lang].toLowerCase().includes(qq) || app.desc[lang].toLowerCase().includes(qq) || app.cat[lang].toLowerCase().includes(qq) ))) }, [q]) return (

{t("community.title")}

setQ(e.target.value)} />
{communityData.categories.map(cat => ( cat[lang] == q ? : ))}
{ apps.length ? apps.map(app => (

{app.name[lang]}

{app.desc[lang]}

{app.cat[lang]}

)) : (
{t("community.no_result")}
) }
) }