npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

universal-dashboard

v1.1.2

Published

Library for creating custom Universal Dashboard components.

Readme

Universal Dashboard

Universal Dashboard is a platform for building web-based tools with PowerShell.

More Information about Universal Dashboard

About this Package

This package is used to create custom Universal Dashboard components. It provides features to make it easier to create components the integrate with Universal Dashboard. This package requires Universal Dashboard v3 or later running in PowerShell Universal.

How to use this package

In your source directory, install this package using the following command.

npm install universal-dashboard

This package exports a couple functions. The first is withComponentFeatures.

This function is used to inject the Universal Dashboard features are props to your control.

import { withComponentFeatures } from 'universal-dashboard'

This high-order function can be used with your component like this.

const MyComponent = () => {
    return <div />
}

export withComponentFeatures(MyComponent);

Available Props

The following are the props that are injected into your component.

render (function)

This function is used to render other Universal Dashboard components. This might be handy if you support child components for your component.

const MyComponent = props => {
    return props.children.map(x => props.render(x))
}

export withComponentFeatures(MyComponent);

setState (function)

setState is used to bubble state up into a parent scope that can then be used with Get-UDElement. When you call setState, the state values will be passed back in as props and the state will be stored for you. Any calls to Get-UDElement will return that state.

const MyComponent = props => {
    return <input type="text" onChange={x => props.setState(x.target.value)}>
}

export withComponentFeatures(MyComponent);

Other Props

Other functions will be injected for event handlers automatically. This means that any Endpoints you define in your component's PowerShell function will be available automatically as functions in your component.

Here's an example of the PowerShell script for the component.

function New-UDCoolButton {
    param(
        [Parameter()]
        [string]$Id = [Guid]::NewGuid(),
        [Parameter()]
        [Endpoint]$OnClick
    )

    $OnClick.Register($Id, $PSCmdlet)

    @{
        type = "coolbutton",
        isPlugin = $true,
        assetId = $AssetId
        id = $id 
        onClick = $OnClick
    }
}

Here's an example of the JavaScript for the component.

const MyComponent = props => {
    return <button onClick={x => props.onClick()}>
}

export withComponentFeatures(MyComponent);

Registering a Component

To register your component with Universal Dashboard, you'll need to use the registerComponent function. Pass the ID and the function for your component.

import MyComponent from './MyComponent.jsx'
import { registerComponent } from 'universal-dashboard'

registerComponent('my-component', MyComponent);

You should use this ID as the type parameter in your PowerShell hashtable.

function New-UDMyComponent {
    @{
        type = "my-component",
        isPlugin = $true,
        assetId = $AssetId
    }
}