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

trimble-terra-flyout

v1.0.4

Published

A React flyout navigation component for Trimble Terra applications.

Downloads

1,718

Readme

trimble-terra-flyout

A React flyout navigation component for Trimble Terra applications.

Storybook · npm

Installation

npm install trimble-terra-flyout

Peer dependencies

| Package | Version | | ----------- | --------------------- | | react | ^18.3.1 \|\| ^19.0.0 | | react-dom | ^18.3.1 \|\| ^19.0.0 |

Quick start

import { useState } from 'react';
import { Flyout, FlyoutToggle } from 'trimble-terra-flyout';
import 'trimble-terra-flyout/styles.css';

export default function App() {
  const [open, setOpen] = useState(false);

  return (
    <>
      <FlyoutToggle isDeployed={open} onClick={() => setOpen(true)} />

      <Flyout
        sectorFlyoutDeployed={open}
        authenticated={true}
        close={() => setOpen(false)}
        profile={{ name: 'Jane Doe', email: '[email protected]' }}
        customLinks={{
          links: [
            { text: 'Home', url: '/' },
            { text: 'About', url: '/about' },
          ],
        }}
      />
    </>
  );
}

Style import — you can use either of these paths; they resolve to the same file:

import 'trimble-terra-flyout/styles.css';   // package exports map
import 'trimble-terra-flyout/dist/styles.css'; // direct path

API

<Flyout>

| Prop | Type | Default | Description | | --- | --- | --- | --- | | sectorFlyoutDeployed | boolean | false | Whether the flyout panel is visible | | authenticated | boolean | false | Show authenticated vs. unauthenticated state | | close | () => void | — | Called when the user closes the flyout | | profile | ProfileProps | — | User profile (name, email, role, organization, image) | | accountSwitcher | AccountSwitcherProps | — | Account-switcher configuration | | customLinks | CustomLinksProps | — | Custom navigation links section | | marketingLinks | MarketingLinksProps | — | Marketing links section | | myAccountLinks | MyAccountLinksProps | — | "My Account" links section | | ecommerceLinks | EcommerceLinksProps | — | E-commerce links section | | legalLinks | LegalLinksProps | — | Legal / footer links section | | createAccount | CreateAccountProps | — | Create-account prompt for unauthenticated users | | logo | LogoProps | — | Custom logo (image source, alt text, link) | | Link | any | — | Custom router link component (e.g. React Router Link) | | login | boolean | — | Show login state | | signInBtnMethod | () => void | — | Called when the "Sign In" button is clicked | | signInLabel | string | — | Label for the sign-in button | | signOutBtnMethod | () => void | — | Called when the "Sign Out" button is clicked | | signOutLabel | string | — | Label for the sign-out button | | disableSearch | boolean | — | Hide the search input | | searchPlaceholder | string | — | Placeholder text for the search input | | desktopSearchDeployed | boolean | — | Whether desktop search is expanded | | setDesktopSearchDeployed | (v: boolean) => void | — | Toggle desktop search expansion | | setGlobalSearch | (v: boolean) => void | — | Toggle global search | | backbtnLabel | string | — | Label for the back button | | oldVersion | boolean | — | Render the legacy layout |

<FlyoutToggle>

| Prop | Type | Default | Description | | --- | --- | --- | --- | | isDeployed | boolean | false | When true the toggle is hidden (flyout is already open) | | onClick | () => void | — | Called when the toggle button is clicked |

Key types

interface ProfileProps {
  name: string;
  email?: string;
  role?: string;
  organization?: string;
  image?: { src: string; alt: string };
}

interface LinkProps {
  url: string;
  text: string;
}

interface CustomLinksProps {
  title?: string;
  links: LinkProps[];
  enabled?: boolean;
}

interface AccountType {
  id: string;
  name: string;
  role: string;
  formattedRole: string;
  sourceSystems: string[];
  isDefaultAccount: boolean;
  isDisabled: boolean;
}

Full type definitions are available in dist/index.d.ts after install.

Browser support

The component targets modern evergreen browsers (Chrome, Firefox, Safari, Edge). It ships as an ESM bundle.

Known issues & roadmap

| # | Issue | Scope | | --- | --- | --- | | K1 | JS files need conversion to TS | 1 file: formatSpecialCharText.js | | K2 | Excessive : any usage | 10 instances across 5 files | | K3 | eslint-disable overuse | 5 instances, including one blanket disable in useMouse.ts | | K3.5 | eslint-plugin-react-hooks disabled | — | | K4 | dangerouslySetInnerHTML used in 5 places | — | | K5 | Typo isAccountResticted in AccountSwitcherProps | — | | K6 | SCSS bloat / CSS size | — |

Contributing

See DEV_README.md for local development setup, build steps, CI, publishing, and project structure.

License

Proprietary — Trimble Inc.