///|
/// Column - Vertical flex container (like Ink's Box with flexDirection="column")

///|
/// Create a vertical column container
pub fn column(
  children : Array[@core.Component],
  // ID
  id? : String = "",
  // Size
  width? : @types.Dimension = @types.Dimension::Auto,
  height? : @types.Dimension = @types.Dimension::Auto,
  min_width? : @types.Dimension = @types.Dimension::Auto,
  min_height? : @types.Dimension = @types.Dimension::Auto,
  max_width? : @types.Dimension = @types.Dimension::Auto,
  max_height? : @types.Dimension = @types.Dimension::Auto,
  // Flex item properties
  flex_grow? : Double = 0.0,
  flex_shrink? : Double = 1.0,
  flex_basis? : @types.Dimension = @types.Dimension::Auto,
  // Alignment
  justify? : @types.Alignment = @types.Alignment::FlexStart,
  align? : @types.Alignment = @types.Alignment::Stretch,
  wrap? : Bool = false,
  gap? : Double = 0.0,
  // Spacing
  padding? : Double = 0.0,
  padding_x? : Double = 0.0,
  padding_y? : Double = 0.0,
  margin? : Double = 0.0,
  margin_x? : Double = 0.0,
  margin_y? : Double = 0.0,
  // Style
  border? : @core.BorderChars? = None,
  border_color? : @core.Color = @core.Color::white(),
  bg? : @core.Color = @core.Color::transparent(),
  fg? : @core.Color = @core.Color::white(),
  // Event handler
  on_click? : (() -> Unit)? = None,
  // Accessibility
  role? : @core.Role? = None,
) -> @core.Component {
  @core.box(
    children,
    id~,
    flex_direction=@types.FlexDirection::Column,
    flex_wrap=if wrap { @types.FlexWrap::Wrap } else { @types.FlexWrap::NoWrap },
    width~,
    height~,
    min_width~,
    min_height~,
    max_width~,
    max_height~,
    flex_grow~,
    flex_shrink~,
    flex_basis~,
    justify_content=justify,
    align_items=align,
    gap~,
    padding~,
    padding_x~,
    padding_y~,
    margin~,
    margin_x~,
    margin_y~,
    border~,
    border_color~,
    bg~,
    fg~,
    on_click~,
    role~,
  )
}