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

@buildkitgg/fluentui-modals-manager

v1.0.3

Published

Typed Fluent UI modal management with confirmations, async forms, and nested dialogs.

Readme

@buildkitgg/fluentui-modals-manager

Managed Fluent UI dialogs with typed inputs and results.

pnpm add @buildkitgg/fluentui-modals-manager @fluentui/react-components react react-dom
import { createModalManager, ModalRenderer } from "@buildkitgg/fluentui-modals-manager"

export const modals = createModalManager()
// Mount inside your existing FluentProvider:
<ModalRenderer manager={modals} />

const confirmed = await modals.confirm({
  title: "Delete draft?",
  confirmLabel: "Delete",
  cancelLabel: "Keep draft"
})

React, React DOM and Fluent UI v9 are peer dependencies. Mount the renderer inside your FluentProvider for theme and portal support. Modal state, results, updates and confirmation semantics are shared with the shadcn adapter.

API

  • createModalManager({ labels?, adapter? }): shared React manager; defaults to Fluent dialogs.
  • ModalRenderer: renders the manager's adapter, including Fluent motion completion by default.
  • labels: application defaults for confirm, cancel and close buttons.
  • ModalManager, ModalManagerOptions, ModalAdapter, ModalRendererProps and ModalSurfaceOptions: shared setup and surface contracts.

Pass adapter: { Surface: YourSurface } when creating a manager to use a custom React surface. The binding is fixed for that manager's lifetime and overrides the package default. ModalRenderer still takes only manager; no separate renderer factory is needed. See the adapter contract for lifecycle responsibilities.

The shadcn adapter exports the same factory, renderer props and shared types. Standard modal code needs only a package import change. Its default renderer also takes only manager, with no primitive or components prop. Update application styles, providers and UI-specific custom form controls when changing design systems. If you configured a custom adapter, update or remove it to use the new design system's components.

Keep the returned modal handle to update an open instance. Standard modals use handle.update() for opening options; custom definitions use the same method with { data: partialState, title?, description?, dismissible?, surfaceProps? }. Functional updaters receive the current presentation and current.data. Every component slot's controls.update() works identically. title, body and footer accept React nodes or { component: Component }. A custom footer replaces the helper buttons, leaving variants and styling to your components. Use ariaLabel when the title has no accessible text. The updateable onClose({ id, result, reason }) callback observes settlement once.

See update examples, lifecycle and architecture and package guide.