Generation/SuiGenerationContext.cs
using SboxUiDesigner.Runtime;
namespace SboxUiDesigner.Generation;
/// <summary>
/// Input bag for the generator. The same generator drives both Preview mode
/// (writes to the hot-loadable preview cache, doesn't touch manifest) and
/// Final mode (writes to the user's chosen output folder, updates manifest).
/// </summary>
public sealed class SuiGenerationContext
{
public SuiDocument Document { get; set; }
public SuiGenerationMode Mode { get; set; } = SuiGenerationMode.Preview;
/// <summary>
/// Project-relative folder that produced files should land in. For Preview
/// mode this is the preview cache root (eg `Code/_sui_preview/InventoryUI`);
/// for Final mode it's the user's <c>Output.RootFolder</c>.
/// </summary>
public string OutputFolder { get; set; }
/// <summary>
/// Generated PanelComponent class name. Defaults to <c>Document.Output.ClassName</c>
/// (or sanitized <c>Document.Name</c>) — the SCSS outer selector will use
/// this as the type name.
/// </summary>
public string ClassName { get; set; }
/// <summary>Generated namespace. Defaults to <c>Document.Output.Namespace</c>.</summary>
public string Namespace { get; set; }
}
public enum SuiGenerationMode
{
Preview,
Final,
}