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.0'

# 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'
    'Get-PsUiIcon'
    'Get-PsUiIconFont'
    'Get-PsUiIconList'
    'Get-UiListItems'
    'Get-UiThemeTemplate'
    'Get-UiValue'
    'Hide-UiStatusBar'
    'Invoke-UiAsync'
    'New-UiAction'
    'New-UiActionCard'
    'New-UiButton'
    'New-UiButtonCard'
    'New-UiCard'
    'New-UiChart'
    'New-UiChildWindow'
    'New-UiCredential'
    'New-UiDataGrid'
    'New-UiDatePicker'
    'New-UiDropdown'
    'New-UiDropdownButton'
    'New-UiExpander'
    'New-UiGlyph'
    'New-UiGrid'
    'New-UiImage'
    'New-UiInput'
    'New-UiLabel'
    'New-UiLink'
    'New-UiList'
    'New-UiPanel'
    'New-UiProgress'
    'New-UiRadioGroup'
    '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-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.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 bare ArrayList / List / ObservableCollection and
  PsUi wraps it in a thread-safe observable wrapper, then rebinds the caller's variable so
  $list.Add() lands in the grid without [ref] ceremony. -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 = ''

}