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

markora-ui

v0.1.4

Published

Premium React and Next.js UI library with polished components, templates, and product-ready foundations.

Readme

✨ Markora UI - Premium React Component Library

A production-ready React and Next.js UI library featuring beautifully crafted components, advanced templates, and a modern design system built with TypeScript, Tailwind CSS, and React.

npm version MIT License TypeScript React


🎯 Why Markora UI?

  • 60+ Professional Components - Production-ready instead of disconnected snippets
  • Fully Type-Safe - Complete TypeScript support with IntelliSense
  • Accessibility First - WCAG 2.1 compliant, keyboard navigation built-in
  • Theme System - Light & dark mode with customizable design tokens
  • Zero Runtime - Tailwind CSS based, styles ship as CSS only
  • Tree-Shakeable - Import only what you need, optimize bundle size
  • Interactive Docs - Live component showcase with copy-paste code
  • Built for Teams - Works seamlessly with React, Next.js, and modern tooling

📦 Installation

Prerequisites

  • React 18.2+ or 19.0+
  • Tailwind CSS 3.0+
  • Node.js 16+

Quick Install

npm install markora-ui
# or
yarn add markora-ui
# or
pnpm add markora-ui

🚀 Getting Started

Step 1: Configure Tailwind CSS

If you haven't already, set up Tailwind CSS:

npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p

Step 2: Update tailwind.config.ts

Include MarkoraUI in your Tailwind config:

import type { Config } from 'tailwindcss';

export default {
  content: [
    './index.html',
    './src/**/*.{js,ts,jsx,tsx}',
    './node_modules/markora-ui/**/*.{js,mjs,ts,mts}',
  ],
  theme: {
    extend: {},
  },
  plugins: [],
} satisfies Config;

Step 3: Import Styles

In your app's entry point:

import 'markora-ui/styles.css';

Step 4: Start Using Components

import { Button, Card, CardContent, CardHeader, CardTitle } from 'markora-ui';

export default function App() {
  return (
    <div className="p-8">
      <Card>
        <CardHeader>
          <CardTitle>Welcome to Markora UI</CardTitle>
        </CardHeader>
        <CardContent>
          <Button variant="primary" size="lg">
            Get Started
          </Button>
        </CardContent>
      </Card>
    </div>
  );
}

📚 Component Library

Form Components (16)

  • Input - Text, email, password inputs with validation
  • InputField - Labeled input with helper text and error states
  • Textarea - Multi-line text input
  • TextareaField - Textarea with labels and validation
  • Select - Single and multi-select dropdowns
  • Combobox - Searchable select component
  • Checkbox - Standalone and groups
  • Radio - Radio button groups
  • FileUpload - File upload component
  • Switch - Toggle switches
  • DatePicker - Calendar date selection
  • InputGroup - Grouped inputs with addons
  • NumberInput - Number input with increment/decrement
  • InputOTP - One-time password inputs
  • NativeSelect - Native select element
  • SegmentedControl - Segmented control component

Button Components (5)

  • Button - Primary, secondary, outline, destructive, ghost variants
  • IconButton - Compact button for icons only
  • ButtonGroup - Group related buttons
  • MarkoriButton - Premium styled button variant
  • ActionBar - Toolbar for grouped actions

Data Display (15)

  • Table - Basic data table
  • DataTable - Advanced table with sorting/filtering
  • Card - Container with header, content, footer
  • Badge - Labels and status indicators
  • Stat - Metric display with trends
  • Rating - Star rating component
  • Avatar - User profile pictures
  • AvatarGroup - Multiple avatars grouped
  • Progress - Progress bars
  • ProgressCircle - Circular progress indicator
  • Timeline - Event timeline
  • Pagination - Page navigation
  • Divider - Visual separator
  • Typography - Text styles and variants
  • Chart - Data visualization (bar, line, area)

Navigation (8)

  • Tabs - Tab navigation
  • Breadcrumb - Breadcrumb navigation
  • Navigation - Navigation menu
  • NavigationMenu - Complex navigation structures
  • Sidebar - Collapsible sidebar
  • Menubar - Menu bar component
  • Dock - Floating dock navigation
  • TreeView - Hierarchical tree navigation

Overlay Components (8)

  • Dialog - Modal dialog
  • Sheet - Drawer/slide-out dialog
  • Popover - Floating popover
  • Tooltip - Tooltip with placements
  • DropdownMenu - Dropdown menu
  • ContextMenu - Right-click context menu
  • HoverCard - Hover reveal card
  • Modal - Modal dialog variant

Feedback (6)

  • Toast - Toast notifications (via Sonner)
  • Callout - Alert callout boxes
  • Banner - Top/bottom banners
  • AlertDialog - Alert dialogs
  • Skeleton - Loading skeleton
  • Spinner - Loading spinner

Special Components (12+)

  • Accordion - Collapsible sections
  • Carousel - Image carousel
  • Clipboard - Copy to clipboard
  • Collapsible - Collapsible content
  • Command - Command palette
  • EmptyState - Empty state UI
  • Label - Form labels
  • Kbd - Keyboard key display
  • Marquee - Scrolling marquee
  • Separator - Visual separator
  • Slider - Range slider
  • ScrollArea - Scrollable container

Premium Effects (8+)

  • BorderBeam - Animated border beam
  • Meteors - Meteor rain effect
  • OrbitingCircles - Orbiting circles animation
  • SpotlightCard - Spotlight hover effect
  • BackgroundGradient - Gradient backgrounds
  • CelestialPulse - Pulsing celestial effect
  • GradientText - Gradient text
  • HolographicDataDeck - Holographic data display

Templates & Layouts (5+)

  • PricingCard - Pricing tier cards
  • FeatureCard - Feature showcase cards
  • ProductShowcaseCarousel - Product showcase
  • InteractiveOrbNavigation - Interactive orb nav
  • SocialPulseWidget - Social metrics widget

💡 Usage Examples

Basic Form

import { InputField, Select, Button } from 'markora-ui';
import { useState } from 'react';

export default function ContactForm() {
  const [email, setEmail] = useState('');
  
  return (
    <form className="space-y-4 max-w-md">
      <InputField
        label="Email Address"
        type="email"
        placeholder="[email protected]"
        value={email}
        onChange={(e) => setEmail(e.target.value)}
        hint="We'll never share your email"
      />
      <Select
        label="Subject"
        options={[
          { label: 'Support', value: 'support' },
          { label: 'Sales', value: 'sales' },
          { label: 'General', value: 'general' },
        ]}
      />
      <Button fullWidth variant="primary">
        Submit
      </Button>
    </form>
  );
}

With Next.js 14+

// app/layout.tsx
import 'markora-ui/styles.css';
import { ThemeProvider } from 'markora-ui';

export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        <ThemeProvider>{children}</ThemeProvider>
      </body>
    </html>
  );
}

// app/page.tsx
'use client';

import { Button, Card, CardContent, CardHeader, CardTitle } from 'markora-ui';

export default function Page() {
  return (
    <Card>
      <CardHeader>
        <CardTitle>Launch faster</CardTitle>
      </CardHeader>
      <CardContent>
        <Button variant="primary">Ship with Markora UI</Button>
      </CardContent>
    </Card>
  );
}

Dark Mode

import { ThemeProvider, ThemeToggle, Button } from 'markora-ui';

export default function App() {
  return (
    <ThemeProvider defaultTheme="light" storageKey="theme">
      <div className="p-8">
        <ThemeToggle />
        <Button>Hello World</Button>
      </div>
    </ThemeProvider>
  );
}

Custom Styling

All components support Tailwind classes:

<Button 
  variant="primary"
  className="shadow-lg hover:shadow-xl transition-shadow duration-300"
>
  Enhanced Button
</Button>

🎨 Theming

Available Theme Variables

--background        /* Page background */
--foreground        /* Text foreground */
--card              /* Card background */
--card-foreground   /* Card text */
--primary           /* Primary accent */
--primary-foreground
--secondary         /* Secondary accent */
--secondary-foreground
--destructive       /* Danger state */
--destructive-foreground
--muted             /* Muted text */
--muted-foreground
--accent            /* Accent color */
--accent-foreground
--border            /* Border color */

Light & Dark Mode

The library automatically supports system preferences. Override with:

<ThemeProvider attribute="class" defaultTheme="dark" storageKey="app-theme">
  {children}
</ThemeProvider>

📖 Interactive Docs

Run the development server to explore all components:

npm run dev

Navigate to http://localhost:5173 to see:

  • Live component previews
  • Editable examples
  • Copy-paste code snippets
  • All variants for each component

🔧 Advanced Usage

Extending Components

import { Button, type ButtonProps } from 'markora-ui';

interface CustomButtonProps extends ButtonProps {
  analytics?: string;
}

export function CustomButton({ analytics, ...props }: CustomButtonProps) {
  return (
    <Button 
      {...props}
      onClick={(e) => {
        // Track analytics
        console.log('Clicked:', analytics);
        props.onClick?.(e);
      }}
    />
  );
}

With CSS Modules

import styles from './page.module.css';
import { Button } from 'markora-ui';

export default function Page() {
  return (
    <Button variant="primary" className={styles.button}>
      Styled Button
    </Button>
  );
}

📦 Bundle Size

Minified and tree-shaken:

| Format | Size | Gzipped | |--------|------|---------| | ESM | ~45KB | ~12KB | | CJS | ~48KB | ~13KB | | CSS | ~8KB | ~2KB |

  • Form Components: ~8KB
  • Buttons: ~2KB
  • Data Display: ~12KB
  • Navigation: ~6KB
  • Overlays: ~8KB
  • Effects & Templates: ~9KB

✅ Browser Support

| Browser | Minimum Version | |---------|-----------------| | Chrome | Latest | | Firefox | Latest | | Safari | 13+ | | Edge | Latest | | iOS Safari | 13+ | | Android Chrome | 81+ |


🤝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Development

# Install dependencies
npm install

# Start dev server
npm run dev

# Build library package only (outputs to dist/)
npm run build:lib

# Build docs website only (outputs to website-dist/)
npm run build:site

# Build both library + website
npm run build

# Run tests
npm run test

# Lint code
npm run lint

# Format code
npm run format

📄 License

MIT © 2024 Markora UI


🙋 Support & Community


🎉 Changelog

See CHANGELOG.md for version history and breaking changes.


Made with ❤️ by the Markora UI Team