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

finx-ui

v1.0.2

Published

Vue 3 Fintech UI Component Library

Readme

FinX UI

Modern Vue 3 Fintech Component Library

A production-ready, lightweight component library built with Vue 3 and Tailwind CSS, specifically designed for building beautiful fintech applications.

npm version License: MIT Vue 3 Tailwind CSS

📚 Storybook Documentation🚀 Quick Start💬 Support


🎯 About FinX UI

FinX UI is a comprehensive Vue 3 component library designed specifically for fintech applications. With 35+ production-ready components, extensive theming support, and full accessibility compliance, FinX UI helps you build professional financial interfaces faster.

Key Highlights:

  • 🎨 8 Pre-configured Themes - Instant theme switching with persistent storage
  • ⚡ Production Ready - Battle-tested components used in real fintech applications
  • 📦 Zero Configuration - Works out of the box with sensible defaults
  • ♿ Accessible First - WCAG compliant with full keyboard navigation
  • 🌳 Tree Shakeable - ESM + UMD builds for optimal bundle size
  • 📱 Mobile Optimized - 7 specialized mobile-first components (FXM prefix)

📚 Component Documentation

🎭 Interactive Storybook

The best way to explore FinX UI components is through our interactive Storybook documentation. Storybook provides:

  • Live Component Playground - Test components with different props and states
  • 📖 Complete API Reference - Detailed documentation for props, events, and slots
  • 🎨 Visual Examples - See all variants, sizes, and states at a glance
  • 💻 Code Snippets - Copy-paste ready code examples
  • Accessibility Testing - Built-in accessibility checks

Run Storybook locally:

# Clone and install
git clone https://github.com/davidpriyadi/finx-ui.git
cd finx-ui
npm install

# Start Storybook
npm run storybook
# Opens at http://localhost:6006

📖 Read the Storybook Guide →

📦 Component Categories

Form Components

  • FxButton, FxInput, FxCheckbox, FxRadioGroup, FxSelect, FxCombobox
  • FxSwitch, FxDatePicker, FxRangeCalendar, FxSlider

Display Components

  • FxCard, FxBadge, FxAlert, FxAvatar, FxProgress, FxEmpty

Data Components

  • FxTable, FxDataTable (with search, sort, pagination), FxAccordion

Navigation Components

  • FxBreadcrumb, FxSidebar, FxTabs

Feedback Components

  • FxAlertDialog, FxToast, FxToastProvider, FxSonner, FxSpinner, FxTooltip

Mobile Components (FXM)

  • FxmBottomNav, FxmAppBar, FxmFloatingActionButton, FxmBottomSheet, FxmTabs

Utility Components

  • FxScrollArea, FxButtonGroup, FxLabel

📖 View Full Component Documentation →


📦 Installation

NPM

npm install finx-ui

Yarn

yarn add finx-ui

PNPM

pnpm add finx-ui

Peer Dependencies

FinX UI requires the following peer dependencies:

npm install vue@^3.3.0 lucide-vue-next@^0.263.0 radix-vue@^1.0.0

📖 Complete Setup Guide →


🚀 Quick Start

1. Install and Setup

# Install FinX UI and dependencies
npm install finx-ui vue@^3.3.0 lucide-vue-next@^0.263.0 radix-vue@^1.0.0

# Install Tailwind CSS (if not already installed)
npm install -D tailwindcss@^3.3.6 postcss autoprefixer
npx tailwindcss init -p

2. Configure Tailwind CSS

Update your tailwind.config.js:

/** @type {import('tailwindcss').Config} */
export default {
  content: [
    "./index.html",
    "./src/**/*.{vue,js,ts,jsx,tsx}",
    "./node_modules/finx-ui/**/*.{vue,js}"  // Add this line
  ],
  theme: {
    extend: {}
  },
  plugins: []
}

3. Import Styles

In your main CSS file (e.g., src/assets/main.css):

@tailwind base;
@tailwind components;
@tailwind utilities;

4. Register FinX UI

In your main.js:

import { createApp } from 'vue'
import App from './App.vue'
import FinxUI from 'finx-ui'
import 'finx-ui/dist/style.css'

const app = createApp(App)
app.use(FinxUI)
app.mount('#app')

5. Start Using Components

<template>
  <div class="p-8 space-y-4">
    <fx-card>
      <template #header>
        <h2 class="text-xl font-semibold">Welcome to FinX UI</h2>
      </template>
      
      <div class="space-y-4">
        <fx-input 
          v-model="name" 
          label="Name" 
          placeholder="Enter your name"
        />
        
        <fx-button variant="primary" @click="handleSubmit">
          Submit
        </fx-button>
      </div>
    </fx-card>
  </div>
</template>

<script setup>
import { ref } from 'vue'

const name = ref('')

const handleSubmit = () => {
  console.log('Name:', name.value)
}
</script>

📖 Complete Usage Guide → | View in Storybook →


💡 Usage Examples

Basic Form

<template>
  <fx-card padding="large">
    <form @submit.prevent="handleSubmit" class="space-y-4">
      <fx-input
        v-model="email"
        type="email"
        label="Email"
        placeholder="[email protected]"
        :error-message="emailError"
        required
      />
      
      <fx-input
        v-model="password"
        type="password"
        label="Password"
        required
      />
      
      <fx-button type="submit" variant="primary" class="w-full">
        Sign In
      </fx-button>
    </form>
  </fx-card>
</template>

<script setup>
import { ref, computed } from 'vue'

const email = ref('')
const password = ref('')

const emailError = computed(() => {
  if (!email.value.includes('@')) return 'Invalid email'
  return ''
})

const handleSubmit = () => {
  console.log('Login:', { email: email.value })
}
</script>

Data Table with Search

<template>
  <fx-data-table
    :columns="columns"
    :data="users"
    :page-size="10"
    searchable
    selectable
    v-model:current-page="currentPage"
    v-model:selected-rows="selectedRows"
  />
</template>

<script setup>
import { ref } from 'vue'

const currentPage = ref(1)
const selectedRows = ref([])

const columns = [
  { key: 'id', label: 'ID', sortable: true },
  { key: 'name', label: 'Name', sortable: true },
  { key: 'email', label: 'Email' },
  { key: 'status', label: 'Status' }
]

const users = [
  { id: 1, name: 'John Doe', email: '[email protected]', status: 'Active' },
  { id: 2, name: 'Jane Smith', email: '[email protected]', status: 'Inactive' }
]
</script>

Theme Switching

<template>
  <div class="p-8">
    <h2 class="text-xl font-semibold mb-4">Select Theme</h2>
    
    <fx-select
      v-model="currentTheme"
      :options="themeOptions"
      label="Theme"
      @change="handleThemeChange"
    />
  </div>
</template>

<script setup>
import { ref } from 'vue'
import { useTheme } from 'finx-ui'

const { currentTheme, setTheme } = useTheme()

const themeOptions = [
  { value: 'blue', label: 'Blue' },
  { value: 'purple', label: 'Purple' },
  { value: 'green', label: 'Green' },
  { value: 'orange', label: 'Orange' },
  { value: 'pink', label: 'Pink' },
  { value: 'indigo', label: 'Indigo' },
  { value: 'teal', label: 'Teal' },
  { value: 'red', label: 'Red' }
]

const handleThemeChange = (theme) => {
  setTheme(theme)
}
</script>

Mobile Bottom Navigation

<template>
  <div class="app-container">
    <!-- Main content -->
    <div class="content pb-20">
      <h1>My App</h1>
    </div>

    <!-- Bottom Navigation -->
    <fxm-bottom-nav fixed>
      <fxm-bottom-nav-item
        :icon="HomeIcon"
        label="Home"
        :active="currentTab === 'home'"
        @click="currentTab = 'home'"
      />
      <fxm-bottom-nav-item
        :icon="SearchIcon"
        label="Search"
        :active="currentTab === 'search'"
        @click="currentTab = 'search'"
      />
      <fxm-bottom-nav-item
        :icon="UserIcon"
        label="Profile"
        :active="currentTab === 'profile'"
        @click="currentTab = 'profile'"
      />
    </fxm-bottom-nav>
  </div>
</template>

<script setup>
import { ref } from 'vue'
import { Home, Search, User } from 'lucide-vue-next'

const currentTab = ref('home')
const HomeIcon = Home
const SearchIcon = Search
const UserIcon = User
</script>

💡 Explore more examples in Storybook - See components in action with live code examples and interactive controls.


🎨 Theming & Customization

FinX UI includes 8 pre-configured color themes with instant switching and persistent storage:

  • Blue (default), Purple, Green, Orange
  • Pink, Indigo, Teal, Red

Using Themes

import { useTheme } from 'finx-ui'

const { currentTheme, setTheme, availableThemes } = useTheme()

// Change theme
setTheme('purple')

// Available themes: ['blue', 'purple', 'green', 'orange', 'pink', 'indigo', 'teal', 'red']

Custom Tailwind Colors

Override default colors in your tailwind.config.js:

export default {
  theme: {
    extend: {
      colors: {
        primary: {
          50: '#eff6ff',
          // ... your custom color scale
          900: '#1e3a8a',
        }
      }
    }
  }
}

📖 Complete Theming Guide →


📖 Resources & Documentation

📚 Core Documentation

🎯 Specialized Guides

🚀 Deployment


🎭 Live Examples

Dashboard Demo

FinX UI includes a complete fintech dashboard example showcasing:

  • 📊 Interactive charts and data visualization
  • 📈 Real-time statistics cards with trends
  • 📋 Advanced data tables with search and pagination
  • 🎨 Theme switching with 8 color schemes
# Run the dashboard example
git clone https://github.com/davidpriyadi/finx-ui.git
cd finx-ui
npm install
npm run dev
# Open http://localhost:5173/dashboard.html

📖 Dashboard Documentation →


❓ FAQ

The best way is through our Storybook documentation:

npm run storybook

This opens an interactive playground where you can test every component with different props and states.

Yes! FinX UI supports tree-shaking. Import only what you need:

import { FxButton, FxInput } from 'finx-ui'

Yes, type definitions are included in the package. While FinX UI is written in JavaScript, it provides full TypeScript support.

FinX UI is built with Tailwind CSS. You can:

  1. Use Tailwind utility classes directly on components
  2. Customize the Tailwind theme in your tailwind.config.js
  3. Override component styles with custom CSS

Yes! All FinX UI components are WCAG compliant with:

  • Full keyboard navigation support
  • Proper ARIA labels and semantic HTML
  • Screen reader compatibility
  • Focus management

Yes! FinX UI works with Nuxt 3. Follow the standard installation steps and register components globally in a plugin or import them as needed.


🛠️ Development

Want to contribute or run the project locally?

# Clone and install
git clone https://github.com/davidpriyadi/finx-ui.git
cd finx-ui
npm install

# Development server with examples
npm run dev

# Run Storybook
npm run storybook

# Build library
npm run build

# Build Storybook
npm run build-storybook

Project Structure

finx-ui/
├── src/
│   ├── components/       # Component source files
│   ├── stories/          # Storybook stories
│   ├── styles/           # Global styles
│   └── index.js          # Main entry point
├── examples/             # Development examples
├── docs/                 # Documentation
├── .storybook/           # Storybook configuration
└── dist/                 # Built files (generated)

🤝 Contributing

We welcome contributions! Whether it's:

  • 🐛 Bug reports and fixes
  • ✨ New features and components
  • 📖 Documentation improvements
  • 💡 Ideas and suggestions

Please feel free to open an issue or submit a Pull Request.


📄 License

MIT License - feel free to use FinX UI in your personal and commercial projects.


📧 Support

Need help? Have questions?


Built with ❤️ for the fintech community

⭐ Star us on GitHub🐛 Report a Bug💡 Request a Feature