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

@tarviks/fluentui9

v0.3.1

Published

Personal iteration mirror of @capsitech/fluentui9 — not for production use, will be merged back once stable.

Readme

@tarviks/fluentui9

Personal npm mirror of @capsitech/fluentui9, used to iterate quickly without cutting a release in the main Capsitech repo on every change.

This is a temporary workspace. Once the API stabilizes, the code here should be copied back into Capsitech.FluentUIComponentsV9 as-is and published as @capsitech/fluentui9 from there. See DX-ROADMAP.md for the in-progress checklist of what "stable enough to move" means, component by component.

Quickstart

Every component requires AOFluentProviderV9 as an ancestor — it supplies theme tokens and the portal mount node that Popover/Dialog/Menu render into.

import { AOFluentProviderV9, PrimaryButton } from '@tarviks/fluentui9';

function App() {
  return (
    <AOFluentProviderV9>
      <PrimaryButton onClick={() => console.log('clicked')}>Click me</PrimaryButton>
    </AOFluentProviderV9>
  );
}

Every component ships its own Storybook story and .docs.mdx page under src/Components/<Name>/ — run yarn start and browse Components/ for the full catalog and live-editable examples.

Components

Button (Default/Primary/Icon/Action/CommandBar/Compound/Menu/Split, plus Danger/Success/Warning/Confirm variants), AudioPlayer, ColorPicker, CommandBar, ContentEditorComponent (rich text editor), DatePicker / DateRangePicker, FileComponents, Loading (FullPageSpinner, LoadingStack, LoadingOverlay), Modal (plain + Formik-integrated), Nav, Notification, Pagination, Panel (plain + Formik-integrated), Picker, QueryBuilder, Resizer, Stats, SubwayNav, Toast, Wizard.

No DataGrid/DetailsList equivalent exists yet — any screen with a v8 DetailsList-based table can't fully migrate to v9 without keeping the table itself on v8. Worth a table/data-grid wrapper if that becomes a blocker for a real migration.

Versioning

This package follows Semantic Versioning (MAJOR.MINOR.PATCH), with the standard semver rule for a pre-1.0 package (currently 0.1.x): MAJOR stays 0 until the public API (component props, exports, AOFluentProviderV9) is considered stable enough for another team to depend on without expecting frequent breaking changes. Until then:

| Bump | When | Example | |---|---|---| | PATCH (0.1.50.1.6) | Bug fixes, internal refactors, test/docs/infra-only changes, or a backward-compatible addition (new optional prop, new component) that doesn't change any existing behavior. | Fixing a broken ref, adding a new optional prop, tightening a type that was already correct at the value level. | | MINOR (0.1.x0.2.0) | Anything a consumer's existing code could break on: a prop's type or default behavior changes, a prop or export is removed, a component's rendered output changes in a way that could break someone's styling/tests. Per semver's own spec for 0.y.z, breaking changes bump y (MINOR), not x (PATCH) — don't ship a breaking change as a patch just because the fix itself is small. | Removing a deprecated prop, changing what onChange passes as its argument, renaming an export. | | MAJOR (0.x.y1.0.0) | Reserved for the one-time move to declaring the API stable — not used for ordinary breaking changes while still in 0.x. After 1.0.0, standard semver applies in full: MAJOR for breaking changes, MINOR for backward-compatible features, PATCH for backward-compatible fixes. | — |

Before publishing: update CHANGELOG.md's [Unreleased] section with what actually changed — this is how the next person (including future-you) answers "what's actually in 0.1.6" without reading git log. See CONTRIBUTING.md for the full pre-release checklist.

Picking the right scriptbuild:publish (alias for build:publish:patch) is the default; use the explicit variant when a change is MINOR/MAJOR per the table above:

yarn build:publish:patch # (or plain `yarn build:publish`) — bug fixes, non-breaking additions
yarn build:publish:minor # breaking change while still pre-1.0
yarn build:publish:major # the one-time jump to 1.0.0 once the API is declared stable

Each runs the test suite, bumps the version via npm version, builds, and publishes — in that order, so a failing test or build never reaches the registry.

Publishing (run locally, under your own npm login)

npm login           # once, stores your token locally — never share it
yarn install
yarn build:publish   # see "Versioning" above for which script to actually run

Known gotcha: multiple @fluentui/react-motion versions in your app tree

If your app throws presenceFn is not a function (or similar) at runtime, it means your dependency tree resolved more than one copy of @fluentui/react-motion — usually because some other package in your app also depends on @fluentui/react-components/@fluentui/react-dialog at a different version, and each pulls its own react-motion that your package manager didn't dedupe. This package now depends on exact (non-^) versions of its @fluentui/react-* dependencies specifically to reduce how often this happens, but a library's own resolutions/overrides field only applies when that library is the workspace root — once installed as a dependency of your app, it's ignored. If you still hit this, add the same pin to your app's root package.json:

// Yarn
"resolutions": {
  "@fluentui/react-motion": "9.16.1"
}
// npm / pnpm
"overrides": {
  "@fluentui/react-motion": "9.16.1"
}

Match the version to whatever @fluentui/react-components this package currently depends on (see dependencies in this package's package.json), and re-run install.