Some checks failed
lotteryadmin CI / build (push) Has been cancelled
- 各角色仪表盘:KPI 可点击跳转、快捷入口、去重冗余区块,代理/站点降级 analytics - 代理线路:创建玩家权限、侧栏搜索、深链 URL、档案保存与删除预检等修复 - 统一密码最短 6 位;代理模块表格/侧栏背景色一致(admin-table-inset) - 报表、钱包、对账、开奖、结算、配置等模块结构与 i18n 同步更新
44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
"use client";
|
|
|
|
import { Save } from "lucide-react";
|
|
import { useTranslation } from "react-i18next";
|
|
|
|
import { Button } from "@/components/ui/button";
|
|
import { cn } from "@/lib/utils";
|
|
|
|
type OddsConfigDraftBarProps = {
|
|
saving: boolean;
|
|
loadingDetail?: boolean;
|
|
onSave: () => void;
|
|
onPublish: () => void;
|
|
className?: string;
|
|
};
|
|
|
|
export function OddsConfigDraftBar({
|
|
saving,
|
|
loadingDetail = false,
|
|
onSave,
|
|
onPublish,
|
|
className,
|
|
}: OddsConfigDraftBarProps) {
|
|
const { t } = useTranslation("config");
|
|
const busy = saving || loadingDetail;
|
|
|
|
return (
|
|
<div
|
|
className={cn(
|
|
"sticky bottom-0 z-10 flex flex-wrap items-center justify-end gap-2 border-t border-border/60 bg-card/95 px-4 py-2.5 backdrop-blur sm:px-5",
|
|
className,
|
|
)}
|
|
>
|
|
<Button type="button" variant="outline" size="sm" disabled={busy} onClick={onSave}>
|
|
<Save className="size-3.5" aria-hidden />
|
|
{t("versionActions.saveDraft")}
|
|
</Button>
|
|
<Button type="button" size="sm" disabled={busy} onClick={onPublish}>
|
|
{t("versionActions.publishCurrent")}
|
|
</Button>
|
|
</div>
|
|
);
|
|
}
|