using System.Text.Json.Serialization;
namespace AIStudio.Assistants.VisualBriefing;
///
/// Defines one node in the validated bounded presentation layout tree.
///
[JsonUnmappedMemberHandling(JsonUnmappedMemberHandling.Disallow)]
[CanonicalJsonShape("14064835")]
public sealed class VisualBriefingLayoutNode
{
/// Gets or sets the globally unique layout node identifier.
[JsonRequired]
public string NodeId { get; init; } = string.Empty;
/// Gets or sets the node kind.
[JsonRequired]
public VisualBriefingLayoutNodeKind Kind { get; init; }
/// Gets or sets the planned section identifier for a section node.
[JsonRequired]
public string? SectionId { get; init; }
/// Gets or sets the planned component identifier for a component node.
[JsonRequired]
public string? ComponentId { get; init; }
/// Gets or sets the ordered child nodes.
[JsonRequired]
public List Children { get; init; } = [];
/// Gets or sets responsive columns for a grid node.
[JsonRequired]
public VisualBriefingResponsiveColumns? Columns { get; set; }
/// Gets or sets the bounded grid span.
[JsonRequired]
public int Span { get; set; } = 1;
/// Gets or sets the explicit sibling order.
[JsonRequired]
public int Order { get; init; }
/// Gets or sets whether the node receives visual emphasis.
[JsonRequired]
public bool Emphasized { get; set; }
/// Gets or sets the cross-axis alignment.
[JsonRequired]
public VisualBriefingAlignment Alignment { get; set; }
}