48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import { getNineSliceStyle, UI_CHROME } from '../../uiAssets';
|
|
|
|
/**
|
|
* RPG 运行态模态加载占位。
|
|
* 第三批收口后真实落点迁入 `rpg-runtime-shell`。
|
|
*/
|
|
export function ModalLoadingFallback({
|
|
label,
|
|
onClose,
|
|
}: {
|
|
label: string;
|
|
onClose?: (() => void) | null;
|
|
}) {
|
|
return (
|
|
<div
|
|
className="fixed inset-0 z-[90] flex items-center justify-center bg-black/70 p-4 backdrop-blur-sm"
|
|
onClick={onClose ?? undefined}
|
|
>
|
|
<div
|
|
className="pixel-nine-slice pixel-modal-shell flex min-h-40 w-full max-w-md items-center justify-center px-6 py-8 text-center text-sm text-zinc-300 shadow-[0_24px_80px_rgba(0,0,0,0.55)]"
|
|
style={getNineSliceStyle(UI_CHROME.modalPanel)}
|
|
onClick={(event) => event.stopPropagation()}
|
|
>
|
|
{label}
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
/**
|
|
* RPG 运行态面板加载占位。
|
|
* 仅迁移命名落点,不改 UI 表现。
|
|
*/
|
|
export function PanelLoadingFallback({
|
|
label,
|
|
}: {
|
|
label: string;
|
|
}) {
|
|
return (
|
|
<div
|
|
className="pixel-nine-slice flex min-h-0 flex-1 items-center justify-center px-4 py-6 text-center text-xs uppercase tracking-[0.24em] text-zinc-500"
|
|
style={getNineSliceStyle(UI_CHROME.modalPanel)}
|
|
>
|
|
{label}
|
|
</div>
|
|
);
|
|
}
|