Public/New-BCYearGrid.ps1

function New-BCYearGrid {
    <#
    .SYNOPSIS
    Creates the twelve month grids for a Gregorian year.
    .DESCRIPTION
    Builds each month using the same week-start, layout, and overflow settings.
    .PARAMETER Year
    Gregorian year from 1 through 9999.
    .PARAMETER WeekStart
    Weekday shown in the first grid column of every month.
    .PARAMETER Layout
    FixedSixWeeks or Compact.
    .PARAMETER Overflow
    Adjacent or Blank.
    .EXAMPLE
    (New-BCYearGrid -Year 2027).Months.Count
    .INPUTS
    None.
    .OUTPUTS
    BetaCalendars.CalendarTools.YearGrid
    .NOTES
    All twelve grids are computed offline from the Gregorian calendar.
    .LINK
    New-BCMonthGrid
    #>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory)][ValidateRange(1,9999)][int]$Year,
        [ValidateSet('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday')][string]$WeekStart='Monday',
        [ValidateSet('FixedSixWeeks','Compact')][string]$Layout='FixedSixWeeks',
        [ValidateSet('Adjacent','Blank')][string]$Overflow='Adjacent'
    )
    $months = for ($month=1; $month -le 12; $month++) { New-BCMonthGrid -Year $Year -Month $month -WeekStart $WeekStart -Layout $Layout -Overflow $Overflow }
    [pscustomobject][ordered]@{ PSTypeName='BetaCalendars.CalendarTools.YearGrid'; Year=$Year; Months=@($months) }
}