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

em-ui-library

v1.0.9

Published

## Description EM UI Library is a custom React component library built following Atomic Design principles. It contains basic UI elements (atoms), composed components (molecules), larger units (organisms), templates, and layouts for rapid application dev

Downloads

7

Readme

EM UI Library

Description

EM UI Library is a custom React component library built following Atomic Design principles.
It contains basic UI elements (atoms), composed components (molecules), larger units (organisms), templates, and layouts for rapid application development.


Library Structure

  • atoms – basic components like buttons, inputs, labels, checkboxes, etc.
  • molecules – composed components such as Card, Modal, Notification, Tabs, ButtonGroup.
  • organisms – larger units like Login form, Register form, Dashboard, Notification Center.
  • templates – predefined page templates that assemble organisms.
  • layouts – base application layouts (e.g. main layout with navigation, sidebar, etc.).

Components list


Installation and Usage

Installing the library in your project

npm install em-ui-library

Using Components

Atoms

import { Button } from 'em-ui-library';

function App() {
  return (
    <div>
      <Login />
      <Button>Click me</Button>
    </div>
  );
}

Molecules

Accordion

import { Accordion } from 'em-ui-library';

<Accordion title="More information">
  <p>accordion example</p>
</Accordion>

Avatar

import { Avatar } from 'em-ui-library';

<Avatar src="https://example.com/avatar.jpg" alt="avatar" />

Badge

import { Badge } from 'em-ui-library';

<Badge type="info">New</Badge>

ButtonGroup

import { ButtonGroup, Button } from 'em-ui-library';

<ButtonGroup>
  <Button>Save</Button>
  <Button>Cancel</Button>
</ButtonGroup>

Card

import { Card } from 'em-ui-library';

<Card>
  <h3>Name</h3>
  <p>Card info</p>
</Card>

FormField

import { FormField, Input, Label } from 'em-ui-library';

<FormField>
  <Label htmlFor="email">Email</Label>
  <Input id="email" type="email" />
</FormField>

Modal

import { Modal, Button } from 'em-ui-library';

<Modal isOpen={true} onClose={() => console.log('Close')}>
  <h2>Warning</h2>
  <p>Continue?</p>
  <Button>OK</Button>
</Modal>

Notification

import { Notification } from 'em-ui-library';

function App() {
  return (
    <Notification
      type="success"
      message="Saved!"
    />
  );
}

Tabs

import { Tabs } from 'em-ui-library';

<Tabs
  tabs={[
    { id: 1, label: "Tab 1" },
    { id: 2, label: "Tab 2" },
  ]}
/>

Tooltip

import { Tooltip } from 'em-ui-library';

<Tooltip content="Info">
  <button>?</button>
</Tooltip>

Organisms

Dashboard

import { Dashboard } from 'em-ui-library';

const stats = [
  { id: 1, title: 'Users', value: 1500, icon: '👥' },
  { id: 2, title: 'Money', value: '450 000 $', icon: '💰' },
];

<Dashboard stats={stats} />

Header

import { Header } from 'em-ui-library';

<Header title="Administration" />

Footer

import { Footer } from 'em-ui-library';

<Footer>
  <p>© 2025 EM Company</p>
</Footer>

ListView

import { ListView } from 'em-ui-library';

<ListView
  items={[
    { id: 1, title: 'Log 1' },
    { id: 2, title: 'Log 2' },
  ]}
/>

Login

import { Login } from 'em-ui-library';

<Login onSubmit={(data) => console.log('Login:', data)} />

NotificationCenter

import { NotificationCenter } from 'em-ui-library';

const notifications = [
  { id: 1, type: 'success', message: 'Saved' },
  { id: 2, type: 'error', message: 'Server error' },
];

<NotificationCenter
  notifications={notifications}
  onDismiss={(id) => console.log('Closed', id)}
/>

Register

import { Register } from 'em-ui-library';

<Register onSubmit={(data) => console.log('Registered:', data)} />

SearchBar

import { SearchBar } from 'em-ui-library';

<SearchBar
  placeholder="Search user"
  onSearch={(query) => console.log('Search:', query)}
/>

Sidebar

import { Sidebar } from 'em-ui-library';

<Sidebar
  items={[
    { id: 1, label: 'Dashboard' },
    { id: 2, label: 'Settings' },
  ]}
/>

UserProfile

import { UserProfile } from 'em-ui-library';
import 'em-ui-library/dist/index.css';

function App() {
  const user = {
    name: 'Name Surname',
    email: '[email protected]',
    avatar: 'https://i.pravatar.cc/80?u=jan' 
  };

  const handleEdit = () => {
    console.log('Edit profile');
  };

  const handleLogout = () => {
    console.log('Logout');
  };

  return (
    <UserProfile
      user={user}
      onEdit={handleEdit}
      onLogout={handleLogout}
    />
  );
}

export default App;

Templates

AuthLayout

import { AuthLayout } from 'em-ui-library';
import 'em-ui-library/dist/index.css';

function App() {
  return (
    <AuthLayout>
      <p>Please, login.</p>
      {/* Login form or other content */}
    </AuthLayout>
  );
}

export default App;

DashboardLayout

import { DashboardLayout } from 'em-ui-library';
import 'em-ui-library/dist/index.css';

function App() {
  const user = { name: 'Name', email: '[email protected]' };

  const handleLogout = () => {

  };

  return (
    <DashboardLayout user={user} onLogout={handleLogout}>
    </DashboardLayout>
  );
}

export default App;

FormLayout

import React from 'react';
import { FormLayout } from 'em-ui-library';
import 'em-ui-library/dist/index.css';

function App() {
  return (
    <FormLayout title="Registrace" description="Fill credentials">
      <form>
        <div>
          <label htmlFor="email">E-mail</label><br />
          <input type="email" id="email" name="email" />
        </div>
        <div>
          <label htmlFor="password">Password</label><br />
          <input type="password" id="password" name="password" />
        </div>
        <button type="submit">Register</button>
      </form>
    </FormLayout>
  );
}

export default App;

ProfileLayout

import { ProfileLayout } from 'em-ui-library';

const user = {
  name: 'Name Surname',
  email: '[email protected]',
  avatar: 'https://example.com/avatar.jpg',
};

const tabs = [
  { id: 1, label: 'Profile' },
  { id: 2, label: 'Settings' },
];

<ProfileLayout user={user} tabs={tabs}>
  <p>Profile</p>
</ProfileLayout>

SettingsLayout

import { SettingsLayout } from 'em-ui-library';

<SettingsLayout>
  <h2>Account settings</h2>
</SettingsLayout>

EM UI Library

Popis

EM UI Library je vlastní React komponentová knihovna postavená podle principů Atomic Designu.
Obsahuje základní UI prvky (atoms), složené komponenty (molecules), větší celky (organisms), šablony (templates) a layouty pro rychlou tvorbu aplikací.


Struktura knihovny

  • atoms – základní komponenty jako tlačítka, inputy, labely, checkboxy atd.
  • molecules – složené komponenty, např. Card, Modal, Notification, Tabs, ButtonGroup.
  • organisms – větší celky jako Login formulář, Register formulář, Dashboard, Notification Center.
  • templates – předdefinované šablony stránek skládající organisms.
  • layouts – základní layouty aplikace (např. hlavní layout s navigací, sidebar apod.).

Komponenty


Instalace a použití

Instalace knihovny do projektu


npm install em-ui-library

Příklady použití komponentů v praxi

Atoms

import { Button } from 'em-ui-library';

function App() {
  return (
    <div>
      <Login />
      <Button>Click me</Button>
    </div>
  );
}

Molecules

Accordion

import { Accordion } from 'em-ui-library';

<Accordion title="Více informací">
  <p>Obsah akordeonu</p>
</Accordion>

Avatar

import { Avatar } from 'em-ui-library';

<Avatar src="https://example.com/avatar.jpg" alt="Roman Kalita" />

Badge

import { Badge } from 'em-ui-library';

<Badge type="info">Nové</Badge>

ButtonGroup

import { ButtonGroup, Button } from 'em-ui-library';

<ButtonGroup>
  <Button>Uložit</Button>
  <Button>Zrušit</Button>
</ButtonGroup>

Card

import { Card } from 'em-ui-library';

<Card>
  <h3>Název</h3>
  <p>Obsah karty</p>
</Card>

FormField

import { FormField, Input, Label } from 'em-ui-library';

<FormField>
  <Label htmlFor="email">Email</Label>
  <Input id="email" type="email" />
</FormField>

Modal

import { Modal, Button } from 'em-ui-library';

<Modal isOpen={true} onClose={() => console.log('Zavřeno')}>
  <h2>Upozornění</h2>
  <p>Chcete pokračovat?</p>
  <Button>OK</Button>
</Modal>

Notification

import { Notification } from 'em-ui-library';

function App() {
  return (
    <Notification
      type="success"
      message="Uloženo úspěšně!"
    />
  );
}

Tabs

import { Tabs } from 'em-ui-library';

<Tabs
  tabs={[
    { id: 1, label: "Přehled" },
    { id: 2, label: "Nastavení" },
  ]}
/>

Tooltip

import { Tooltip } from 'em-ui-library';

<Tooltip content="Nápověda">
  <button>?</button>
</Tooltip>

Organisms

Dashboard

import { Dashboard } from 'em-ui-library';

const stats = [
  { id: 1, title: 'Uživatelé', value: 1500, icon: '👥' },
  { id: 2, title: 'Tržby', value: '450 000 Kč', icon: '💰' },
];

<Dashboard stats={stats} />

Header

import { Header } from 'em-ui-library';

<Header title="Administrace" />

Footer

import { Footer } from 'em-ui-library';

<Footer>
  <p>© 2025 EM Company</p>
</Footer>

ListView

import { ListView } from 'em-ui-library';

<ListView
  items={[
    { id: 1, title: 'Záznam 1' },
    { id: 2, title: 'Záznam 2' },
  ]}
/>

Login

import { Login } from 'em-ui-library';

<Login onSubmit={(data) => console.log('Přihlášen:', data)} />

NotificationCenter

import { NotificationCenter } from 'em-ui-library';

const notifications = [
  { id: 1, type: 'success', message: 'Úspěšně uloženo' },
  { id: 2, type: 'error', message: 'Chyba serveru' },
];

<NotificationCenter
  notifications={notifications}
  onDismiss={(id) => console.log('Zavřeno', id)}
/>

Register

import { Register } from 'em-ui-library';

<Register onSubmit={(data) => console.log('Registrován:', data)} />

SearchBar

import { SearchBar } from 'em-ui-library';

<SearchBar
  placeholder="Hledat uživatele"
  onSearch={(query) => console.log('Hledat:', query)}
/>

Sidebar

import { Sidebar } from 'em-ui-library';

<Sidebar
  items={[
    { id: 1, label: 'Dashboard' },
    { id: 2, label: 'Nastavení' },
  ]}
/>

UserProfile

import { UserProfile } from 'em-ui-library';
import 'em-ui-library/dist/index.css';

function App() {
  const user = {
    name: 'Name Surname',
    email: '[email protected]',
    avatar: 'https://i.pravatar.cc/80?u=jan' 
  };

  const handleEdit = () => {
    console.log('Edit profilu');
  };

  const handleLogout = () => {
    console.log('Odhlášeno');
  };

  return (
    <UserProfile
      user={user}
      onEdit={handleEdit}
      onLogout={handleLogout}
    />
  );
}

export default App;

Templates

AuthLayout

import { AuthLayout } from 'em-ui-library';
import 'em-ui-library/dist/index.css';

function App() {
  return (
    <AuthLayout>
      <p>Přihlašte se.</p>
      {/* Např. přihlašovací formulář */}
    </AuthLayout>
  );
}

export default App;

DashboardLayout

import { DashboardLayout } from 'em-ui-library';
import 'em-ui-library/dist/index.css';

function App() {
  const user = { name: 'Name', email: '[email protected]' };

  const handleLogout = () => {

  };

  return (
    <DashboardLayout user={user} onLogout={handleLogout}>
    </DashboardLayout>
  );
}

export default App;

FormLayout

import React from 'react';
import { FormLayout } from 'em-ui-library';
import 'em-ui-library/dist/index.css';

function App() {
  return (
    <FormLayout title="Registrace" description="Zadejte prosím své údaje.">
      <form>
        <div>
          <label htmlFor="email">E-mail</label><br />
          <input type="email" id="email" name="email" />
        </div>
        <div>
          <label htmlFor="password">Heslo</label><br />
          <input type="password" id="password" name="password" />
        </div>
        <button type="submit">Registrovat</button>
      </form>
    </FormLayout>
  );
}

export default App;

ProfileLayout

import { ProfileLayout } from 'em-ui-library';

const user = {
  name: 'Jméno přijmení',
  email: '[email protected]',
  avatar: 'https://example.com/avatar.jpg',
};

const tabs = [
  { id: 1, label: 'Profil' },
  { id: 2, label: 'Nastavení' },
];

<ProfileLayout user={user} tabs={tabs}>
  <p>Obsah profilu</p>
</ProfileLayout>

SettingsLayout

import { SettingsLayout } from 'em-ui-library';

<SettingsLayout>
  <h2>Nastavení účtu</h2>
</SettingsLayout>