private record RootTocEntry()

in src/TemplateRefGenerator/Generators/TocGenerator.cs [115:174]


    private record RootTocEntry(
        string Name,
        string DisplayName,
        string MainHref,
        string ChangeLogHref);

    public static string GenerateRootToc(ConfigLoader configLoader, IReadOnlyList<string> providerNamespaces)
    {
        var sb = new StringBuilder();
        var config = configLoader.GetConfiguration();
        var titleMapping = config.TocTitleMapping.ToDictionary(x => x.Key, x => x.Value, StringComparer.OrdinalIgnoreCase);

        var tocEntries = providerNamespaces.Select(provider => 
            new RootTocEntry(
                Name: titleMapping.TryGetValue(provider, out var title) ? title : provider,
                DisplayName: provider,
                MainHref: $"./{provider.ToLowerInvariant()}/toc.yml",
                ChangeLogHref: $"./{provider.ToLowerInvariant()}/change-log/toc.yml"))
            .OrderBy(x => x.Name, StringComparer.OrdinalIgnoreCase)
            .ToArray();

        sb.Append($"""
- name: Overview
  items:
  - name: Define resources
    href: index.md

""");

        sb.Append($"""
- name: Change log
  items:

""");
        foreach (var tocEntry in tocEntries)
        {
        sb.Append($"""
  - name: {tocEntry.Name}
    href: {tocEntry.ChangeLogHref}

""");
        }

        sb.Append($"""
- name: Reference
  expanded: true
  items:

""");
        foreach (var tocEntry in tocEntries)
        {
        sb.Append($"""
  - name: {tocEntry.Name}
    href: {tocEntry.MainHref}

""");
        }

        return sb.ToString();
    }