Files
lotteryAdmin/src/modules/config/doc/odds-config-draft-bar.tsx
kang 0d984b00f0
Some checks failed
lotteryadmin CI / build (push) Has been cancelled
feat(admin): 仪表盘重构、代理线路修复与后台体验优化
- 各角色仪表盘:KPI 可点击跳转、快捷入口、去重冗余区块,代理/站点降级 analytics
- 代理线路:创建玩家权限、侧栏搜索、深链 URL、档案保存与删除预检等修复
- 统一密码最短 6 位;代理模块表格/侧栏背景色一致(admin-table-inset)
- 报表、钱包、对账、开奖、结算、配置等模块结构与 i18n 同步更新
2026-06-26 14:39:22 +08:00

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>
);
}