Ui/DesignSystem/PlotterField.razor

This UI component creates a bordered panel structure. It displays a label, optional help text, and the provided child content inside a defined window.

@namespace CitySim.DesignSystem
@using Sandbox.UI
@inherits Panel

<root class="plotter-field">
    @if ( !string.IsNullOrEmpty( Label ) ) { <div class="plotter-field-label">@(GameText.Plain(Label))</div> }
    <div class="plotter-field-window">@ChildContent</div>
    @if ( !string.IsNullOrEmpty( Help ) ) { <div class="plotter-field-help">@(GameText.Plain(Help))</div> }
</root>

@code
{
    /// <summary>Provide the actual input or value as child content; this is a layout, not an input control.</summary>
    [Parameter] public new RenderFragment ChildContent { get; set; }
    [Parameter] public string Label { get; set; }
    [Parameter] public string Help { get; set; }
    protected override int BuildHash() => HashCode.Combine(GameText.LanguageCode, HashCode.Combine( Label, Help ));
}