mirror of
https://github.com/fccview/cronmaster.git
synced 2025-12-23 22:18:20 -05:00
70 lines
2.5 KiB
TypeScript
70 lines
2.5 KiB
TypeScript
"use client";
|
|
|
|
import { useState } from "react";
|
|
import { CronJobList } from "@/app/_components/FeatureComponents/Cronjobs/CronJobList";
|
|
import { ScriptsManager } from "@/app/_components/FeatureComponents/Scripts/ScriptsManager";
|
|
import { CronJob } from "@/app/_utils/cronjob-utils";
|
|
import { Script } from "@/app/_utils/scripts-utils";
|
|
import { Clock, FileText } from "lucide-react";
|
|
import { useTranslations } from "next-intl";
|
|
|
|
interface TabbedInterfaceProps {
|
|
cronJobs: CronJob[];
|
|
scripts: Script[];
|
|
}
|
|
|
|
export const TabbedInterface = ({
|
|
cronJobs,
|
|
scripts,
|
|
}: TabbedInterfaceProps) => {
|
|
const [activeTab, setActiveTab] = useState<"cronjobs" | "scripts">(
|
|
"cronjobs"
|
|
);
|
|
const t = useTranslations();
|
|
|
|
return (
|
|
<div className="space-y-6">
|
|
<div className="bg-background/80 backdrop-blur-md border border-border/50 rounded-lg p-1 glass-card">
|
|
<div className="flex">
|
|
<button
|
|
onClick={() => setActiveTab("cronjobs")}
|
|
className={`flex items-center gap-2 px-4 py-2 text-sm font-medium transition-all duration-200 rounded-md flex-1 justify-center ${
|
|
activeTab === "cronjobs"
|
|
? "bg-primary/10 text-primary shadow-sm border border-primary/20"
|
|
: "text-muted-foreground hover:text-foreground hover:bg-muted/50"
|
|
}`}
|
|
>
|
|
<Clock className="h-4 w-4" />
|
|
{t("cronjobs.cronJobs")}
|
|
<span className="ml-1 text-xs bg-primary/20 text-primary px-2 py-0.5 rounded-full font-medium">
|
|
{cronJobs.length}
|
|
</span>
|
|
</button>
|
|
<button
|
|
onClick={() => setActiveTab("scripts")}
|
|
className={`flex items-center gap-2 px-4 py-2 text-sm font-medium transition-all duration-200 rounded-md flex-1 justify-center ${
|
|
activeTab === "scripts"
|
|
? "bg-primary/10 text-primary shadow-sm border border-primary/20"
|
|
: "text-muted-foreground hover:text-foreground hover:bg-muted/50"
|
|
}`}
|
|
>
|
|
<FileText className="h-4 w-4" />
|
|
{t("scripts.scripts")}
|
|
<span className="ml-1 text-xs bg-primary/20 text-primary px-2 py-0.5 rounded-full font-medium">
|
|
{scripts.length}
|
|
</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div className="min-h-[60vh]">
|
|
{activeTab === "cronjobs" ? (
|
|
<CronJobList cronJobs={cronJobs} scripts={scripts} />
|
|
) : (
|
|
<ScriptsManager scripts={scripts} />
|
|
)}
|
|
</div>
|
|
</div>
|
|
);
|
|
};
|