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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@kihayu/neo-components

v0.1.13

Published

> **BRUTALIST COMPONENT LIBRARY FOR VUE 3**

Readme

▨▨▨ NEO COMPONENTS ▨▨▨

BRUTALIST COMPONENT LIBRARY FOR VUE 3

+ TYPESCRIPT-FIRST • TAILWIND CSS • ACCESSIBLE • ATOMIC DESIGN

Overview

A Vue 3 component library featuring uncompromising brutalist aesthetics with strict TypeScript typing and atomic design principles. Bold. Raw. Functional.

▨▨▨ TECH STACK ▨▨▨

+ [ VUE 3 ]           Modern, Progressive JavaScript Framework with Composition API
+ [ VITE ]            Next Generation Frontend Tooling
+ [ TAILWINDCSS ]     Utility-First CSS Framework
+ [ LUCIDE ]          Beautiful & Consistent Icons
+ [ VITEST ]          Next Generation Testing Framework
+ [ STORYBOOK ]       Frontend Workshop for UI Development
+ [ MOTION ]          Animation Library for smooth transitions

▣▣▣ Preview ▣▣▣

The public storybook instance of the component library can be found here.

▣▣▣ GETTING STARTED ▣▣▣

┌───────────────────┐
│   PREREQUISITES   │
└───────────────────┘

! BUN PACKAGE MANAGER // REQUIRED
┌───────────────────┐
│   INSTALLATION    │
└───────────────────┘

1. Clone the repository

> git clone [email protected]:kihayu/neo-components.git
> cd neo-components

2. Install dependencies

> bun install --frozen-lockfile

▣▣▣ USAGE AS A LIBRARY ▣▣▣

You can consume neo-components directly in any Vue 3 app.

1) Install

Install the package and peer dependencies:

npm install neo-components vue lucide-vue-next reka-ui
# or
pnpm add neo-components vue lucide-vue-next reka-ui
# or
bun add neo-components vue lucide-vue-next reka-ui

2) Import global styles once

Import the built CSS in your app entry (e.g., src/main.ts):

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

// Import Neo Components styles
import 'neo-components/dist/neo-components.css'

createApp(App).mount('#app')

3) Use components and types

<script setup lang="ts">
import { NeoButton, NeoTable, type TableVariants, type NeoButtonProps } from 'neo-components'

type User = { id: number; name: string; role: string }
const users: User[] = [
  { id: 1, name: 'Alice', role: 'Designer' },
  { id: 2, name: 'Bob', role: 'Engineer' },
]
</script>

<template>
  <NeoButton>Click me</NeoButton>
  <NeoTable :data="users" :columns="[{ key: 'name', header: 'Name' }, { key: 'role', header: 'Role' }]" />
  
</template>

Notes:

  • All .vue components are exported from the package root. You can import atoms, molecules, and UI primitives directly: import { NeoButton, NeoDialog } from 'neo-components'.
  • TypeScript interfaces for Props/Emits are re-exported for most components, e.g. NeoButtonProps, NeoPaginationEmits, etc.
  • CVA variant types are available from the respective UI groups (e.g., TableVariants, DialogContentVariants).
  • The library is tree-shakable; CSS is marked as a side effect so styles are preserved by bundlers.

▣ Global Plugin Registration (optional)

If you prefer to register all components globally, use the provided plugin:

// main.ts
import { createApp } from 'vue'
import App from './App.vue'
import { NeoComponentsPlugin } from 'neo-components'
import 'neo-components/dist/neo-components.css'

createApp(App).use(NeoComponentsPlugin).mount('#app')

This registers every component with names like NeoButton, NeoTable, etc.

Alternatively, you can programmatically register them on an existing app instance:

import { registerNeoComponents } from 'neo-components'
registerNeoComponents(app)
┌───────────────────┐
│   DEVELOPMENT     │
└───────────────────┘

Start the development server:

> bun run storybook
┌───────────────────────────────────┐
│   PRODUCTION BUILD                │
└───────────────────────────────────┘

> bun run storybook-build
┌───────────────────┐
│   LINTING         │
└───────────────────┘

> bun lint

▣▣▣ LICENSE ▣▣▣

╔═══════════════════════════════════════════════╗
║  MIT LICENSE                                  ║
║  Copyright © 2025                             ║
║  Permission is hereby granted, free of charge ║
╚═══════════════════════════════════════════════╝

See the LICENSE file for full details.

▣▣▣ ACCESSIBILITY ▣▣▣

This project includes a structured accessibility knowledge base aligned to WCAG 2.1 Level AA.

Refer to the framework for scope, workflow, and governance details.