DashHtml.psd1

@{
    # Module identity
    RootModule        = 'DashHtml.psm1'
    ModuleVersion     = '1.5.0'
    GUID              = '3f8e9a2c-1d4b-47f5-8c6e-0a5d2b9f3e71'
    Author            = 'DashHtml Contributors'
    CompanyName       = 'DashHtml Contributors'
    Copyright         = '(c) 2026 DashHtml Contributors. MIT License.'
    Description       = 'Generate interactive self-contained HTML dashboards. Includes sortable / filterable / pageable tables, linked drill-down, client-side CSV / Excel / PDF export, KPI summary tiles (with optional sparklines, trend deltas, big-number and gauge styles), pie / donut / line / area / bar / stacked-bar / bullet charts, RAG status matrix, sequential / diverging 2-D heatmaps, parent-child topology trees, inline tabbed content blocks, chronological event feeds, dismissible alert banners, threshold cell colouring with a unified -Rag parameter, and a sticky nav bar. Six built-in theme families (Default, Azure, VMware, Grey, Company, Rag — the v1.4 family using the Office/Excel-compatible RAG palette) each with embedded light / dark variants and a runtime toggle button.'
    PowerShellVersion = '7.0'

    # Exports
    FunctionsToExport = @(
        'New-DhDashboard'
        'Add-DhTable'
        'Set-DhTableLink'
        'Export-DhDashboard'
        'Get-DhTheme'
        'Add-DhSummary'
        'Add-DhHtmlBlock'
        'Add-DhCollapsible'
        'Add-DhFilterCard'
        'Add-DhBarChart'
        'Add-DhAlertBanner'
        'Add-DhPieChart'
        'Add-DhBullet'
        'Add-DhLineChart'
        'Add-DhEventFeed'
        'Add-DhStatusGrid'
        'Add-DhTabs'
        'Add-DhHeatmap'
        'Add-DhTopologyMap'
    )
    CmdletsToExport   = @()
    VariablesToExport = @()
    AliasesToExport   = @()

    # Gallery metadata
    PrivateData = @{
        PSData = @{
            Tags         = @('HTML','Dashboard','Table','Export','CSV','Excel','PDF','Report','Infrastructure')
            LicenseUri   = 'https://github.com/nicola-vi/DashHtml/blob/main/LICENSE'
            ProjectUri   = 'https://github.com/nicola-vi/DashHtml'
            ReleaseNotes = @'
1.5.0 — Tier A widgets: inline tabs, 2-D heatmaps, topology trees.

New cmdlets:
  * Add-DhTabs - Inline tabbed content block. Local pivot within one
                         section of the dashboard flow (distinct from NavGroup
                         which partitions the whole page). Full W3C tabs
                         accessibility pattern (role=tablist / tab / tabpanel,
                         arrow-key navigation, focus-visible outline).
  * Add-DhHeatmap - Rows × Columns matrix with a sequential or diverging
                         numeric colour scale. Distinct from Add-DhStatusGrid
                         (categorical RAG). -ColorScale 'sequential' | 'diverging',
                         -Min / -Max auto-fit, -Unit suffix on values, -ShowValues
                         to render the number inside each cell. Defaults to a
                         5000-cell ceiling with a soft 1000-cell warning.
  * Add-DhTopologyMap - Parent-child tree visualisation (AD Forest → Domain → DC,
                         vCenter → Cluster → Host, network device hierarchies, etc.).
                         Recursive subtree-width layout — simple tidy tree, no
                         force-directed graph. Cycles rejected; missing parents
                         throw. Per-node Status / Icon / Badge / Tooltip /
                         LinkTableId / LinkFilter for click-to-jump navigation.
                         -Direction 'vertical' (default) or 'horizontal'.

Behaviour unchanged for everything else; fully backward compatible at the
API level. 308 Pester tests pass (up from 282 at 1.4.2).

------------------------------------------------------------------------------
1.4.2 — Small UX wins.

Added:
  * Add-DhAlertBanner -NavGroup / -NavSubGroup — per-panel banners.
    Without the params, banners remain page-global as in 1.4.x.
  * Add-DhSummary per-tile Action=@{TableId?;Filter?;Url?;Label?} — the whole
    tile becomes clickable, navigating to a registered table (with optional
    pre-filter) or opening an external URL. Same shape as the AlertBanner
    -Action. Adds .tile-clickable styling + keyboard activation (Enter/Space).
  * New-DhDashboard -AutoRefresh '30s' / '5m' / '1h' / '300' — emits a
    <meta http-equiv="refresh"> in <head>. Useful for wall-display ops
    dashboards. Omit / pass '' to disable (default).
  * Native hover tooltips (title="...") on pie slices and bar chart bars —
    label / count / percentage shown on hover. No JS library, browser-native.

282 Pester tests pass (up from 266 at 1.4.1).

------------------------------------------------------------------------------
1.4.1 — Per-NavGroup summary strips + JS hoist fix.

Added:
  * Add-DhSummary now accepts -NavGroup / -NavSubGroup / -Id, so each panel
    in a two-tier nav can have its own KPI strip. Without -NavGroup, the
    legacy top-of-page singleton behaviour is preserved. Multiple per-group
    strips can coexist alongside one global strip.
  * New example: Examples/Multi-Panel-Dashboard.ps1 — focused showcase of the
    multi-summary feature.
  * Invoke-Demo-DashHtml.ps1 moved to Examples/ and refreshed to exercise the
    full v1.4 widget set (banner, gauge, bignumber, bullet, line, pie, status
    grid, event feed, sparkline cells, per-group summary).

Fixed:
  * JS hoist: pickThresholdClass / classToAccent / classToAccentBg and the
    tile-builder helpers (buildTile, buildStandardTile, buildBignumberTile,
    buildGaugeTile, tileFormatValue, tileDeltaHtml, tileSparklineHtml) were
    nested inside renderSummary() and therefore unreachable from the bullet
    and line-chart renderers at runtime. The latent ReferenceError didn't
    surface in the Pester tests (which match emitted HTML text rather than
    executing the JS), but a browser would have thrown when rendering those
    blocks. All helpers are now at module scope and reused everywhere.

266 Pester tests pass (up from 257 at 1.4.0).

------------------------------------------------------------------------------
1.4.0 — KPI & Dashboard Primitives. Major widget expansion driven by the
IT-infrastructure KPI dashboard specification.

New cmdlets:
  * Add-DhStatusGrid - rows x columns RAG matrix (services x regions etc.)
  * Add-DhAlertBanner - top-of-page dismissible alert strip
  * Add-DhEventFeed - chronological severity-tagged audit trail
  * Add-DhPieChart - standalone pie / donut block
  * Add-DhBullet - actual-vs-target with performance bands
  * Add-DhLineChart - line / area chart with axes, multi-series, optional
                         dashed target / threshold annotation line

Add-DhSummary tile upgrades:
  * Inline sparklines (line / area / bars) below the value
  * Trend & delta indicators (Previous baseline, auto direction, TrendIsGood
    inversion for "lower is better" metrics, percent / absolute / both)
  * Style="bignumber" hero metric, full-width, large typography, optional Caption
  * Style="gauge" semicircle SVG with threshold-coloured arc + central readout

Cross-cutting:
  * Unified -Rag parameter (@{ Green; Amber; Red; NoData }) accepted on summary
    items, gauge tiles, bullet items, and table columns; replaces or supplements
    the legacy Thresholds=@(...) array shape.
  * New Rag theme family using the Office/Excel-compatible RAG palette
    (#375623 / #7F4B00 / #9C0006 / #595959) for strict-parity reports.
  * Fourth cell-nodata state added across all six themes.

Other:
  * Add-DhBarChart gains -Stacked + -SeriesField for multi-series breakdowns.
  * Add-DhTable column CellType="sparkline" with SortBy reduction (last / avg /
    max / min / sum) and SparklineStyle.
  * Two example scripts (Examples/AD-Dashboard.ps1, Examples/vSphere-Dashboard.ps1)
    mirror the spec's reference layouts.
  * Bug fix: locale-sensitive [double]::TryParse calls in v1.4 normalisers now
    use InvariantCulture; protects decimal values on locales like it-IT where
    the period is a thousands separator.

Fully backward compatible at the API level. 257 Pester tests pass (up from 116
at the start of v1.4 work).
'@

        }
    }
}