PsUi.psd1

#
# Module manifest for module 'PsUi'
#
# Generated by: Jacob LaBonte
#
# Updated: 2026-07-24
#

@{

# Script module or binary module file associated with this manifest.
RootModule = '.\PsUi.psm1'

# Version number of this module.
ModuleVersion = '1.1.1'

# Supported PSEditions
CompatiblePSEditions = @('Desktop', 'Core')

# ID used to uniquely identify this module
GUID = '205560a1-3780-4ce1-9ff3-480141781fe4'

# Author of this module
Author = 'Jacob LaBonte'

# Company or vendor of this module
CompanyName = 'Jacob LaBonte'

# Copyright statement for this module
Copyright = '(c) 2026 Jacob LaBonte. All rights reserved.'

# What this module does
Description = 'WPF toolkit for PowerShell. DSL-based controls, async execution, theming. No XAML.'

# Minimum version of the Windows PowerShell engine required by this module
PowerShellVersion = '5.1'

# Name of the Windows PowerShell host required by this module
# PowerShellHostName = ''

# Minimum version of the Windows PowerShell host required by this module
# PowerShellHostVersion = ''

# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# DotNetFrameworkVersion = ''

# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# CLRVersion = ''

# Processor architecture (None, X86, Amd64) required by this module
# ProcessorArchitecture = ''

# Modules that must be imported into the global environment prior to importing this module
# RequiredModules = @()

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()

# Script files (.ps1) that are run in the caller's environment prior to importing this module.
# ScriptsToProcess = @()

# Type files (.ps1xml) to be loaded when importing this module
# TypesToProcess = @()

# Format files (.ps1xml) to be loaded when importing this module
# FormatsToProcess = @()

# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
# NestedModules = @()

# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
# Only public functions are exported. Private functions are injected into async runspaces via ModuleContext.
FunctionsToExport = @(
    'Add-UiDataGridItem'
    'Add-UiListItem'
    'Clear-UiDataGridItems'
    'Clear-UiList'
    'Clear-UiStatus'
    'Close-UiWindow'
    'Get-PsUiIcon'
    'Get-PsUiIconFont'
    'Get-PsUiIconList'
    'Get-UiListItems'
    'Get-UiSession'
    'Get-UiThemeTemplate'
    'Get-UiValue'
    'Hide-UiStatusBar'
    'Invoke-UiAsync'
    'New-UiAction'
    'New-UiActionCard'
    'New-UiButton'
    'New-UiButtonCard'
    'New-UiCard'
    'New-UiChart'
    'New-UiChildWindow'
    'New-UiColumn'
    'New-UiCredential'
    'New-UiDataGrid'
    'New-UiDatePicker'
    'New-UiDialogButton'
    'New-UiDropdown'
    'New-UiDropdownButton'
    'New-UiExpander'
    'New-UiGlyph'
    'New-UiGrid'
    'New-UiHeaderAction'
    'New-UiImage'
    'New-UiInput'
    'New-UiLabel'
    'New-UiLink'
    'New-UiList'
    'New-UiMenuItem'
    'New-UiPanel'
    'New-UiProgress'
    'New-UiRadioGroup'
    'New-UiResultAction'
    'New-UiSeparator'
    'New-UiSlider'
    'New-UiSpacer'
    'New-UiStatusBar'
    'New-UiTab'
    'New-UiTextArea'
    'New-UiTimePicker'
    'New-UiToggle'
    'New-UiTool'
    'New-UiTree'
    'New-UiWebView'
    'Out-CSVDataGrid'
    'Out-Datagrid'
    'Out-TextEditor'
    'Register-UiHotkey'
    'Register-UiTheme'
    'Remove-UiListItem'
    'Reset-UiSession'
    'Set-PsUiIconFont'
    'Set-UiCapturedVariable'
    'Set-UiDataGridItems'
    'Set-UiProgress'
    'Set-UiStatusBar'
    'Set-UiValue'
    'Show-UiChoiceDialog'
    'Show-UiConfirmDialog'
    'Show-UiCredentialDialog'
    'Show-UiDialog'
    'Show-UiFilePicker'
    'Show-UiFolderPicker'
    'Show-UiGlyphBrowser'
    'Show-UiInputDialog'
    'Show-UiMessageDialog'
    'Show-UiOuPicker'
    'Show-UiPromptDialog'
    'Show-UiSaveDialog'
    'Show-UiStatusBar'
    'Show-WindowsObjectPicker'
    'Stop-UiAsync'
    'Test-PsUiIcon'
    'Update-UiChart'
    'Write-Status'
    'Write-UiHostDirect'
)

# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
CmdletsToExport = @(
    'New-UiWindow'
)

# Variables to export from this module
VariablesToExport = @()

# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
AliasesToExport = @()

# DSC resources to export from this module
# DscResourcesToExport = @()

# List of all modules packaged with this module
# ModuleList = @()

# List of all files packaged with this module
# FileList = @()

# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
PrivateData = @{

    PSData = @{

        # Tags applied to this module. These help with module discovery in online galleries.
        Tags = @('GUI', 'Windows', 'WPF', 'Dialog', 'DataGrid', 'DSL', 'Theme', 'Async')

        # A URL to the license for this module.
        LicenseUri = 'https://github.com/jlabon2/PsUi/blob/main/LICENSE'

        # A URL to the main website for this project.
        ProjectUri = 'https://github.com/jlabon2/PsUi'

        # A URL to an icon representing this module.
        # IconUri = ''

        # ReleaseNotes of this module
        ReleaseNotes = @'
Version 1.1.1:
- Implicit window: call a control with no New-UiWindow around it and PsUi reads the script for
  the statements that build controls, then puts a window around them titled after the file.
- Get-UiSession is exported, and resolves outside a window.
- Functions that standin for the five parameters that took nested hashtables: New-UiMenuItem,
  New-UiResultAction, New-UiDialogButton, New-UiColumn, New-UiHeaderAction. Keys are real
  parameters with tab completion and Get-Help. The legacy hashtable form still binds.
- -Sync is now -NoAsync on New-UiColumn and New-UiMenuItem, matching New-UiButton. The old
  spelling still binds as an alias.
- -WPFProperties attached properties ('Grid.Row', 'DockPanel.Dock') apply instead of being
  silently skipped, and string values convert to the target type. Tag is refused with a
  warning on a control that already holds one.
- Set-UiValue and Get-UiValue work from async actions again, and the session store now beats
  a same named variable that was in scope when the button was built.
- Chart fixes: -Width and -Height reach the chart, a single point draws on bar, line, pie and
  the legend, and a custom -LabelProperty no longer empties the data.
- New-UiButton -Parameters splats on a sync click, and -Width under 16 no longer crashes.
- New-UiWebView: a throwing navigation callback warns instead of taking the window down,
  -OnNavigating cancels only on a real $false, and the view stops oversizing the window or
  drawing over the title bar.
- A control inside a card, tab or expander could vanish without a warning.
- Dialogs opened before any window drew their inputs with no border or fill.
- New-UiProgress -Severity gave every bar the accent blue.
 
Version 1.1.0:
- DataGrid overhaul: New-UiDataGrid as an embeddable grid, cell-embedded Button/Toggle/Link
  controls, opt-in editing, RowDetailsTemplate, RowBackground, FrozenColumns, EmptyMessage,
  RowContextMenu, SanitizeFormulas. Add-/Set-/Clear-UiDataGridItems helpers for mutating
  the backing collection from button actions.
- -ItemsSource binds your variable: pass a plain ArrayList / List / ObservableCollection and
  PsUi wraps it in a threadsafe observable list, then rebinds the variable so
  $list.Add() lands in the grid without [ref] usage. -NoBind opts out.
- Status bar suite: New-UiStatusBar + companion functions. -Intercept routes Write-Warning
  and Write-Error to badge counters; -AutoProgress embeds a progress bar driven by
  Write-Progress; -CaptureHost routes Write-Host to status text. Severity tinting with
  indicator glyphs; popup detail views on the badge counts.
- Icon font picker: Set-PsUiIconFont / Test-PsUiIcon. Pick Segoe MDL2 Assets or Segoe Fluent
  Icons per session or per window. Auto-detect, fallback chain, 125 new Fluent-modern names
  in CharList.json.
- New-UiTree: -ParentCheckBoxes and -ChildCheckBoxes for AD-style pickers, cascade defaults
  on, -NoCascade opts out, -WhenEnabled / -Checked for per-item rules.
- -Fill on data controls and New-UiGrid (replacing -FillParent; legacy alias kept).
- New-UiTool: UserPicker, GroupPicker, MemberPicker, OUPicker helpers; -HelperOptions connects
  helper buttons to other controls; helper-button errors surface in themed dialogs.
- Out-TextEditor / Out-CSVDataGrid theme inheritance fix (standalone calls no longer flip
  the parent window's theme).
- AsyncObservableCollection: cross-thread reentrancy fix, second-window dispatcher fix,
  seed-from-IEnumerable constructors, AttachMirror for two-way collection sync.
- net452 target alongside net472 and net6.0-windows for WinPE / older Windows.
- New-UiWindow -Theme Auto is now the default (follows the system light/dark preference).
 
Version 1.0.4:
- PsUi.psm1: Import-Module -Force no longer wipes static state out from under live windows
- New-UiTree: dotted property paths (e.g. 'Manager.Name') now walk into child objects instead
  of being read as one literal property name (also IdProperty, PathProperty, DisplayProperty)
- New-UiTree: path-mode parent nodes carry a stand-in tag so click handlers always have
  something to read; gets promoted to the real item if a matching piped item arrives later
- New-UiTree: replaced broken Get-Process help example with one that works on PS 5.1 and 7+
- Dropped dead VirtualizingPanel setters from the tree style
 
Version 1.0.3:
- Fix -EnabledWhen dispatcher error on TextBox/PasswordBox controls (GitHub #3)
- Fix tab content clipping when content overflows the window height
- Auto-size windows now scroll properly when MaxHeight is reached
 
Version 1.0.2:
- Add -EnabledWhen to 6 controls (Button, Input, TextArea, Dropdown, Tab, Action)
- New-UiTextArea: -ReadOnly switch
- Batch variable injection for faster window startup
 
Version 1.0.1:
- New-UiButton: -ScrollToTop switch for controlling post-completion scroll position
- New-UiTool: Detect missing help files in PS 7+, offer online docs fallback
- Show-UiFilterBuilder: Fix combobox vertical centering
- CI: Add Pester test workflow
'@


    } # End of PSData hashtable

} # End of PrivateData hashtable

# HelpInfo URI of this module
# HelpInfoURI = ''

# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ''

}