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

@mk-kit/ui

v0.37.0

Published

Themable, accessible Angular 22 component library for admin dashboards and UIs. Signals-based, WCAG 2.1 AA, controlled entirely through CSS variables with light/dark out of the box.

Readme

@mk-kit/ui

Themable, accessible Angular component library for admin dashboards, back-offices and internal tools.

175+ standalone components, directives and services — data tables, charts, date & time pickers, editors, kanban, overlays, an app shell — written for Angular 22 with signals and OnPush from day one. Every visual value is a --mk-* CSS custom property; light and dark ship out of the box; WCAG 2.1 AA is the target, not the marketing. MIT licensed. Zero runtime dependencies beyond Angular.

Install

ng add @mk-kit/ui

ng add installs the package and wires the theme stylesheet into angular.json. By hand instead:

npm install @mk-kit/ui

Peer dependencies: @angular/core, @angular/common, @angular/forms, @angular/platform-browser (^22) and rxjs (^7.8).

Setup

1. Import the theme stylesheet once (in angular.json styles or your global stylesheet):

@import '@mk-kit/ui/styles.css';

2. Add the mk-app class to <body> (or a top-level wrapper) so background, text colour, fonts and themed scrollbars apply:

<body class="mk-app">

3. Use components — everything is standalone; import what you need:

import { Component, inject } from '@angular/core';
import { MkButton, MkCard, MkThemeService } from '@mk-kit/ui';

@Component({
  selector: 'app-root',
  imports: [MkButton, MkCard],
  template: `
    <mk-card variant="elevated">
      <button mkButton tone="primary" (click)="theme.toggle()">
        Toggle theme
      </button>
    </mk-card>
  `,
})
export class AppRoot {
  protected readonly theme = inject(MkThemeService);
}

What's inside

| Group | Highlights | |---|---| | Forms & inputs (53)** | text, number, password (strength meter), OTP, phone (country prefix), postal code, currency, card number, IBAN, tax id, masked input, tag input, select, autocomplete, multi-select, tree-select, transfer list, checkbox, radio, switch, slider, range slider, rating, colour picker, file upload (dropzone), signature pad, numeric keypad & on-screen keyboard, repeater (FormArray), form field with automatic validation messages, form error summary, listbox, cascader (multi-column select), floating labels | | Date & time | calendar, date picker, date-range picker, time picker, month/year picker, week picker, inline mini date, event calendar with editable week/day grid (drag to move / resize) | | Tables & grids (7)** | data table — sort, multi-select, expandable rows, tree rows, grouping, sticky header, column resize / reorder / pin, inline cell edit, responsive stacking, CSV export, print styles — plus MkTableDataSource for server-side sort/page/filter, query builder (mk-query-builder → predicate / readable text / MkTableDataSource.setQuery()) | | Charts (12) | line/area, bar (stacked, horizontal, label fitting), donut, gauge, progress ring, scatter/bubble, radar, funnel, treemap, heatmap, calendar heatmap, sparkline — SVG, themed, accessible | | Data display (25) | cards, lists, stat cards, badges, tags, chips, avatars & groups, timeline, description list, tree, empty state, countdown, QR code, diff view, JSON viewer, code block, virtual scroll, carousel, kanban | | Navigation & layout (21) | app shell (responsive sidebar), stack / flex / grid layout primitives, nav list & groups, tabs, stepper, breadcrumb, pagination, menu, context menu, command palette (⌘K), page header, toolbar, splitter, drawer, scroll area, FAB, back-to-top | | Feedback & overlays (21)** | dialogs (+ confirm() / alert() / prompt()), bottom sheet, drawer, popover, popconfirm, hovercard, tooltip, toast, snackbar, alert, banner, result page, notification center, product tour, progress bar, loading bar, spinner, skeletons, block UI (region / page overlay), draggable & resizable dialogs | | Editors & interactions (25)** | block editor (Notion-style, HTML round-trip), rich text, markdown renderer, code editor, log viewer, drag & drop, sortable list, @mentions, hotkeys, undo/redo history, permissions (*mkCan), clipboard, intersect, infinite scroll, ripple, scrollspy, chat (streaming message log, tool cards, prompt box) | | Media (6) | image with states, gallery, lightbox, cropper, media manager | | Core services | theme (light/dark/system + density), breakpoints, overlay & anchored panels, focus trap, live announcer, icon registry (426 built-in icons), i18n |

The full, searchable index lives in the docs (/components-index).

Entry points

Import from the umbrella @mk-kit/ui, or from a group to keep bundles lean:

import { MkTable } from '@mk-kit/ui/table';
import { MkLineChart } from '@mk-kit/ui/data';
import { MkDatePicker } from '@mk-kit/ui/datetime';

Available: core, forms, datetime, table, data, navigation, feedback, directives, dnd, media, icon, button, checkbox, chip, context-menu, layout, chat, query-builder, rich-text, block-editor. sideEffects: false throughout.

Theming

The entire look is driven by --mk-* custom properties on :root. Override any of them — globally, or scoped to a subtree — to re-brand at runtime, no rebuild:

:root {
  --mk-primary: #0f766e;
  --mk-primary-contrast: #ffffff;
  --mk-radius-md: 4px;
  --mk-font-sans: 'Inter', system-ui, sans-serif;
}

[data-mk-theme='dark'] {
  --mk-primary: #2dd4bf;
  --mk-primary-contrast: #042f2e;
}

The docs include a theme builder that exports a ready-to-paste :root block.

Dark mode

Dark mode follows the OS prefers-color-scheme with no JavaScript. To let users choose, set data-mk-theme on <html> ("light" | "dark") or use MkThemeService:

const theme = inject(MkThemeService);
theme.setTheme('dark');      // force dark
theme.setTheme('system');    // follow the OS
theme.toggle();              // flip light/dark
theme.resolvedTheme();       // signal: 'light' | 'dark'

The choice is persisted to localStorage; the service is SSR-safe.

Density & touch

Three densities — comfortable, compact, touch — via data-mk-density or MkThemeService.setDensity(). Touch density enlarges every hit target; inputs use 16px text on coarse pointers, drag starts on long-press, overlays respect safe-area insets.

Internationalisation

Every string the library renders comes from one provider:

import { provideMkI18n } from '@mk-kit/ui/core';

bootstrapApplication(AppRoot, {
  providers: [provideMkI18n({ close: 'Zamknij', noData: 'Brak danych' })],
});

Overrides can be scoped to a component subtree for mixed-locale screens. Layout and arrow keys flip under dir="rtl".

Accessibility

Target: WCAG 2.1 AA. Semantic roles and complete aria-* wiring, roving tabindex for composite widgets, focus trapping and background inert for modals, an Escape that closes only the topmost overlay, live-region announcements for async state, contrast-checked tokens in both themes, prefers-reduced-motion and forced-colors support. Axe runs over rendered fixtures in the test suite; information is never conveyed by colour alone.

SSR & zoneless

Every component guards non-browser platforms (an SSR smoke suite renders the whole library on the server), and nothing depends on Zone.js.

Coming from PrimeNG?

The admin surface maps closely — p-tablemk-table, p-selectmk-select, p-datePickermk-date-picker, DialogServiceMkDialogService, MessageServiceMkToastService — and the parts PrimeUI sells separately (charts, text editor, scheduler, task board) are here under MIT. The docs landing page carries a mapping table.

Versioning & support

mk-kit tracks the current Angular major. A matching release follows each new Angular major within weeks; the previous major keeps receiving fixes for six months. Releases are published from CI with npm provenance (npm audit signatures).

Contributing

See CONTRIBUTING.md (DCO sign-off), SECURITY.md for vulnerability reports, and TRADEMARK.md for use of the name and logo.

License

MIT © Mateusz Kornaś. Part of the built-in icon set is derived from Lucide (ISC) — see THIRD_PARTY_NOTICES.md.