Files
AetherForge/server/web/src/components/Forge/ForgeFieldHints.tsx
AetherForge 728c34363b
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Add HelpTip coverage for War Room, Mission Deck, and Forge gaps (UH-03–05).
2026-06-07 06:31:24 -07:00

52 lines
1.5 KiB
TypeScript

import type { ForgeFieldMeta } from '../../help/forgeRules';
import { forgeBadgeLabel } from '../../help/forgeRules';
import { HelpTip } from '../HelpTip';
interface ForgeLockedHintProps {
meta?: ForgeFieldMeta;
}
export function ForgeLockedHint({ meta }: ForgeLockedHintProps) {
if (!meta?.lockedReason && !meta?.hint) return null;
return (
<p className="forge-locked-hint" title={meta.lockedReason || meta.hint}>
🔒 {meta.lockedReason || meta.hint}
</p>
);
}
interface ForgeFieldBadgeProps {
meta?: ForgeFieldMeta;
}
export function ForgeFieldBadge({ meta }: ForgeFieldBadgeProps) {
if (!meta?.badge) return null;
return (
<span className={`forge-field-badge forge-badge-${meta.badge}`} title={forgeBadgeLabel(meta.badge)}>
{meta.badge === 'baked' ? '⛏ baked' : meta.badge === 'server-only' ? '🖥 server' : '↳ if enabled'}
</span>
);
}
interface ForgeSectionHeaderProps {
title: string;
description: string;
badge: 'baked' | 'server-only';
helpField?: string;
}
export function ForgeSectionHeader({ title, description, badge, helpField }: ForgeSectionHeaderProps) {
return (
<div className="forge-section-header">
<div className="forge-section-title-row">
<h3>
{title}
{helpField ? <> <HelpTip field={helpField} /></> : null}
</h3>
<span className={`forge-field-badge forge-badge-${badge}`}>{forgeBadgeLabel(badge)}</span>
</div>
<p className="form-hint forge-section-desc">{description}</p>
</div>
);
}