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

@robineb/mui-utility

v1.1.3

Published

Utility extensions for MUI

Readme

License last commit Repo Size Top Language React

@robineb/mui-utility

Utility-Komponenten für MUI-Projekte.

Status

  • Version: 1.1.3

Installation

npm install @robineb/mui-utility

Abhängigkeiten:

  • react ^18 || ^19
  • react-dom ^18 || ^19
  • @mui/material ^7 || ^8 || ^9
  • @mui/icons-material ^7 || ^8 || ^9
  • @emotion/react ^11
  • @emotion/styled ^11

Import-Anleitung

Der Root-Import ist für benannte Importe gedacht:

import {
  ActionButton,
  NotificationProvider,
  useNotification,
  Passwordfield,
  AvatarUpload,
  SocialSigninButton,
  resolveButtonWidth,
  SVGs,
  OtpInput,
} from "@robineb/mui-utility";

Subpath-Importe sind ebenfalls verfügbar:

import NotificationProvider from "@robineb/mui-utility/Notification/NotificationProvider";
import useNotification from "@robineb/mui-utility/Notification/useNotification";
import ActionButton from "@robineb/mui-utility/ActionButton";
import Passwordfield from "@robineb/mui-utility/Passwordfield";

Hinweis: Der Pfad lautet jetzt Notification (wie im Paket exportiert).

Schnellstart

import React from "react";
import { NotificationProvider, ActionButton } from "@robineb/mui-utility";

export function AppProviders({ children }: { children: React.ReactNode }) {
  return <NotificationProvider>{children}</NotificationProvider>;
}

export function ExampleAction() {
  return <ActionButton action={async () => {}}>Aktion ausführen</ActionButton>;
}

Exporte

Root-Exporte:

  • ActionButton
  • NotificationProvider
  • useNotification
  • Passwordfield
  • AvatarUpload
  • SocialSigninButton
  • OtpInput
  • resolveButtonWidth
  • SVGs

Wichtige Typ-Exporte:

  • ToastType, ToastMessage, NotificationContextValue
  • ActionButtonProps
  • PasswordfieldProps
  • AvataruploadProps
  • Social-Signin- und Provider-Typ-Exporte
  • MUIOTPInputProps

Komponenten

ActionButton

Button für Async-Aktionen mit optionalem Bestätigungsdialog und optionalen Benachrichtigungen.

Wichtige Eigenschaften (Props):

  • action: () => void | Promise
  • children: React.ReactNode
  • requireAreYouSure?: boolean
  • destructive?: boolean
  • icon?: React.ReactNode
  • Dialog?: { dialogTitle?: React.ReactNode; dialogContent?: React.ReactNode; confirmText?: string }
  • Props?: { ButtonProps?: ButtonProps; DialogProps?: DialogProps }
  • Notification?: { useNotification: true; successmessage: string; errormessage: string } | { useNotification?: false }

NotificationProvider + useNotification

Globales Snackbar/Alert-Handling über Kontext.

notify-Signatur:

notify({ message: string, type: "success" | "error" | "info" | "warning" });

Passwordfield

Passwort-Eingabefeld mit Anzeigen/Verbergen-Umschalter und optionaler Stärkeanzeige.

Wichtige Eigenschaften (Props):

  • children: React.ReactNode
  • showstrength?: boolean
  • loading?: boolean
  • error?: boolean
  • value?: string
  • onChange?: (...) => void
  • Props?: { TextfieldProps?: OutlinedInputProps }

AvatarUpload

Avatar mit Upload-Trigger und optional anpassbarem Badge/Icon.

Wichtige Eigenschaften (Props):

  • onUpload: (file: File) => void
  • image?: string
  • icon?: React.ReactNode
  • Props?: { IconButtonProps?: IconButtonProps; BadgeProps?: BadgeProps; InputProps?: React.InputHTMLAttributes }

OtpInput

Mehrere MUI-Textfelder fuer One-Time-Passwords, als kontrollierte Komponente ueber value/onChange. Vollstaendige Doku inkl. Theming-Beispiel: src/OtpInput/README.md.

Wichtige Eigenschaften (Props):

  • length?: number (Default 4)
  • value?: string
  • onChange?: (value: string) => void
  • onComplete?: (value: string) => void
  • onBlur?: (value: string, isCompleted: boolean) => void
  • validateChar?: (character: string, index: number) => boolean
  • groups?: number
  • separator?: React.ReactNode
  • autoFocus?: boolean
  • loading?: boolean
  • error?: boolean
  • TextFieldsProps?: TextFieldProps | ((index: number) => TextFieldProps)

SocialSigninButton

Social-Sign-In-Button mit large- und circle-Varianten.

Integrierte Provider:

  • google
  • microsoft
  • apple
  • github
  • facebook
  • linkedin
  • x
  • gitlab
  • discord
  • slack
  • passkey

Entwicklung

Häufige Developer-Befehle:

# build (produziert dist und Typdefinitionen)
npm run build

# unit tests (Jest)
npm test

# integration/dev flow: baut, packt das Paket, installiert es in Test/ und startet Vite
npm run test:vite

# lokalen watch-build (aktualisiert nur dist, installiert NICHT in Test automatisch)
npm run dev

Hinweis:

  • Die Tests (Jest) laufen gegen den Quellcode via ts-jest; ein vorheriger Build ist nicht nötig (siehe jest.config.ts).
  • Die Test-App (Test/) verwendet das Skript scripts/test-vite.mjs; dieses macht build -> npm pack -> npm i ../ (inside Test) -> npm run dev.
  • package.json.files = ["dist"] — nur dist wird gepackt/veröffentlicht. Vor npm pack oder publish immer npm run build ausführen.

Lizenz

MIT