vue-classed-components
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

vue-classed-components

A utility library for Vue 3 that helps you create type-safe components with class variations. Inspired by react-twc and class-variance-authority.

Features

  • ✨ Full TypeScript support.
  • 🎨 Powerful style variant system based on class-variance-authority
  • 🔧 Support for all native HTML elements and Vue components
  • 🔄 Compatible with existing CSS solutions (Tailwind CSS, UnoCSS, etc.)
  • 📦 Lightweight with no extra dependencies

Use Cases

  • Creating reusable components with multiple style variants
  • Wanting a styled-components-like development experience in Vue 3 projects
  • Projects using atomic CSS frameworks like Tailwind CSS

Installation

npm install vue-classed-components
# or
yarn add vue-classed-components
# or
pnpm add vue-classed-components

Basic Usage

For detailed usage of variants, please refer to class-variance-authority.

import { classed } from "vue-classed-components";

const Button = classed.button("px-4 py-2 rounded", {
  variants: {
    variant: {
      primary: "bg-blue-500 text-white",
      secondary: "bg-gray-500 text-white",
      danger: "bg-red-500 text-white",
    },
    size: {
      small: "text-sm",
      medium: "text-base",
      large: "text-lg",
    },
  },
  defaultVariants: {
    variant: "primary",
    size: "medium",
  },
});

const FloatButton = classed(
  Button,
  "fixed bottom-4 right-4 rounded-full shadow-lg",
);

Use in your component:

<template>
  <Button variant="primary" size="large"> Click me </Button>
  <FloatButton> Click me </FloatButton>
</template>

Acknowledgement

This project is inspired by:

Thanks for these amazing projects.

License

MIT License © 2024-Present varHarrie

Package Sidebar

Install

npm i vue-classed-components

Weekly Downloads

1

Version

1.1.0

License

MIT

Unpacked Size

10.3 kB

Total Files

6

Last publish

Collaborators

  • varharrie