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

@sabrenski/spire-ui

v0.0.27

Published

A dependency-free Vue 3 component library built with pure CSS and OKLCH colors

Readme

Spire UI

A dependency-free Vue 3 component library built with pure CSS. Uses OKLCH color space for perceptually uniform colors and follows a 3-layer CSS architecture.

Features

  • Zero runtime dependencies - Pure CSS styling with no external CSS frameworks
  • Vue 3 Composition API - Built with <script setup> and TypeScript
  • OKLCH Color Space - Perceptually uniform colors for consistent UI
  • 3-Layer CSS Architecture - Tokens, theme, and component styles
  • Polymorphic Components - Flexible as prop for semantic HTML
  • Accessible - ARIA attributes and keyboard navigation
  • Tree-shakeable - Import only what you need

Installation

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

Peer Dependencies

npm install vue@^3.3.0

Optional peer dependency for chart components:

npm install chart.js@^4.4.0

Quick Start

// main.ts
import { createApp } from 'vue'
import App from './App.vue'

// Import Spire UI styles
import 'spire-ui/style.css'

createApp(App).mount('#app')
<script setup lang="ts">
import { Button, Input, Modal, useToast } from 'spire-ui'

const toast = useToast()

function handleClick() {
  toast.success('Button clicked!')
}
</script>

<template>
  <Button @click="handleClick">Click me</Button>
</template>

Components

Layout & Structure

  • Card - Container with header, content, footer, and image slots
  • Modal - Dialog overlay with focus trap and scroll lock
  • Drawer - Slide-in panel from any edge
  • Tabs - Tabbed content navigation
  • Accordion - Collapsible content sections

Form Controls

  • Button - Primary action element with variants and states
  • Input - Text input with validation states
  • Textarea - Multi-line text input
  • Select - Dropdown selection
  • Combobox - Searchable dropdown with autocomplete
  • Checkbox - Boolean toggle with indeterminate state
  • Radio - Single selection from group
  • Switch - Toggle switch control
  • FileUpload - File input with drag-and-drop
  • DatePicker - Calendar date selection with range support
  • TimePicker - iOS-style time selection with scroll snap

Selection

  • SegmentedControl - Mutually exclusive options
  • ToggleButton - Pressable button with on/off state
  • ToggleGroup - Group of toggle buttons
  • ChoiceChip - Selectable chip
  • ChoiceChipGroup - Group of choice chips

Display

  • Avatar - User profile image with fallback
  • Badge - Status indicator
  • BadgeContainer - Position badges relative to content
  • Icon - Flexible icon adapter
  • Heading - Typography for headings (h1-h6)
  • Text - Typography for body text
  • Spinner - Loading indicator
  • Skeleton - Loading placeholder
  • Progress - Progress indicator

Feedback

  • Toast - Notification messages
  • Tooltip - Contextual information on hover
  • Callout - Highlighted information block
  • EmptyState - Placeholder for empty content

Data Display

  • DataTable - Sortable data table
  • Breadcrumb - Navigation breadcrumbs

Overlay

  • Dropdown - Floating menu with submenus
  • Popover - Floating content panel

Charts (requires chart.js)

  • LineChart - Line/area charts
  • BarChart - Vertical/horizontal bar charts
  • DonutChart - Donut/pie charts

Composables

import {
  useClickOutside,
  useClipboard,
  useEventListener,
  useFocusTrap,
  useHoverReveal,
  useId,
  useMagnetic,
  useRelativePosition,
  useRipple,
  useScrollLock,
  useStagger,
  useToast
} from 'spire-ui'

CSS Architecture

Spire UI uses a 3-layer CSS system:

  1. Tokens (tokens.css) - Primitive values (colors, spacing, typography)
  2. Theme (theme.css) - Semantic tokens mapping to intent
  3. Components - Scoped styles using semantic tokens

Colors are defined in OKLCH format for perceptual uniformity:

--color-primary: oklch(0.55 0.25 275);

Icon Integration

The Icon component accepts:

  • Vue components from any icon library
  • HugeIcons data array format
<script setup>
import { Icon } from 'spire-ui'
import { Home01Icon } from '@hugeicons/core-free-icons'
</script>

<template>
  <Icon :icon="Home01Icon" size="md" />
</template>

Configure default icons globally:

import { configureIcons } from 'spire-ui'
import { CheckIcon, AlertIcon } from '@hugeicons/core-free-icons'

configureIcons({
  check: CheckIcon,
  alert: AlertIcon
})

Theme Provider

Wrap your app with SpireProvider for theming:

<script setup>
import { SpireProvider } from 'spire-ui'
</script>

<template>
  <SpireProvider theme="light" mood="professional">
    <App />
  </SpireProvider>
</template>

Development

# Install dependencies
pnpm install

# Start playground dev server
pnpm dev

# Run tests
pnpm test

# Build for production
pnpm build

# Type check
pnpm typecheck

Project Structure

packages/
  ui/                 # Component library
    src/
      components/     # Vue components
      composables/    # Vue composables
      styles/         # CSS tokens and theme
      utils/          # Utility functions
      config/         # Configuration
  playground/         # Development environment

License

MIT