Ui lookup

primitive ColorLookup
  """
  Map color name strings to Color primitives.
  """
  fun apply(name: String): (Color | None) =>
    match name
    | "default" => Default
    | "black" => Black
    | "red" => Red
    | "green" => Green
    | "yellow" => Yellow
    | "blue" => Blue
    | "magenta" => Magenta
    | "cyan" => Cyan
    | "white" => White
    | "bright-black" => BrightBlack
    | "bright-red" => BrightRed
    | "bright-green" => BrightGreen
    | "bright-yellow" => BrightYellow
    | "bright-blue" => BrightBlue
    | "bright-magenta" => BrightMagenta
    | "bright-cyan" => BrightCyan
    | "bright-white" => BrightWhite
    | "rainbow" => Rainbow
    else
      None
    end

primitive AlignLookup
  """
  Map alignment name strings to Alignment values.
  """
  fun apply(name: String): (Alignment | None) =>
    match name
    | "start" => AlignStart
    | "center" => AlignCenter
    | "end" => AlignEnd
    else
      None
    end

primitive ModeLookup
  """
  Map mode name strings to PackMode values.
  """
  fun apply(name: String): (PackMode | None) =>
    match name
    | "fill" => PackFill
    | "expand" => PackExpand
    | "fixed" => PackFixed
    else
      None
    end