A modern, lightweight UI component library built with Lit and Vite. Create beautiful, accessible web components with TypeScript support.
- 🚀 Modern: Built with Lit 3.0 and latest web standards
- 📦 Lightweight: Tree-shakeable components with minimal bundle size
- 🎨 Beautiful: Modern design with smooth animations and hover effects
- ♿ Accessible: WCAG compliant with proper ARIA attributes
- 🔧 TypeScript: Full TypeScript support with type definitions
- 🎯 Framework Agnostic: Works with any framework or vanilla JavaScript
- 📱 Responsive: Mobile-first design approach
npm install @your-username/lit-ui
// Import individual components
import '@your-username/lit-ui/dist/index.js';
// Or import specific components
import { LitButton, LitCard, LitInput } from '@your-username/lit-ui';
<!DOCTYPE html>
<html>
<head>
<script type="module" src="node_modules/@your-username/lit-ui/dist/index.js"></script>
</head>
<body>
<lit-button variant="primary">Click me!</lit-button>
<lit-card>
<h3 slot="header">Card Title</h3>
<p slot="content">Card content goes here</p>
<lit-button slot="footer" variant="outline">Action</lit-button>
</lit-card>
<lit-input label="Email" type="email" placeholder="Enter your email"></lit-input>
</body>
</html>
import '@your-username/lit-ui';
function App() {
return (
<div>
<lit-button variant="primary" onClick={handleClick}>
Click me!
</lit-button>
<lit-input
label="Email"
type="email"
onLit-input={handleInput}
/>
</div>
);
}
<template>
<div>
<lit-button variant="primary" @lit-click="handleClick">
Click me!
</lit-button>
<lit-input
label="Email"
type="email"
@lit-input="handleInput"
/>
</div>
</template>
<script>
import '@your-username/lit-ui';
export default {
methods: {
handleClick(event) {
console.log('Button clicked!', event.detail);
},
handleInput(event) {
console.log('Input changed:', event.detail.value);
}
}
}
</script>
A versatile button component with multiple variants and states.
<lit-button variant="primary" size="medium">Primary Button</lit-button>
<lit-button variant="outline" loading>Loading...</lit-button>
<lit-button variant="danger" disabled>Disabled</lit-button>
Props:
-
variant
:'primary' | 'secondary' | 'outline' | 'ghost' | 'danger'
(default:'primary'
) -
size
:'small' | 'medium' | 'large'
(default:'medium'
) -
disabled
:boolean
(default:false
) -
loading
:boolean
(default:false
) -
type
:'button' | 'submit' | 'reset'
(default:'button'
)
Events:
-
lit-click
: Fired when button is clicked
A flexible card component with header, content, and footer slots.
<lit-card variant="elevated" hoverable>
<h3 slot="header">Card Title</h3>
<p slot="content">Card content</p>
<div slot="footer">
<lit-button variant="primary">Action</lit-button>
</div>
</lit-card>
Props:
-
variant
:'default' | 'elevated' | 'outlined'
(default:'default'
) -
hoverable
:boolean
(default:false
)
Slots:
-
header
: Card header content -
content
: Main card content (default slot also works) -
footer
: Card footer content
A modern input component with floating labels and validation.
<lit-input
label="Email Address"
type="email"
placeholder="you@example.com"
required
error="Please enter a valid email"
></lit-input>
Props:
-
type
:'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search'
(default:'text'
) -
value
:string
(default:''
) -
placeholder
:string
(default:''
) -
label
:string
(default:''
) -
error
:string
(default:''
) -
disabled
:boolean
(default:false
) -
required
:boolean
(default:false
) -
name
:string
(default:''
)
Events:
-
lit-input
: Fired when input value changes -
lit-focus
: Fired when input gains focus -
lit-blur
: Fired when input loses focus
You can customize the appearance using CSS custom properties:
:root {
--focus-color: #3b82f6;
--primary-color: #1d4ed8;
--danger-color: #dc2626;
}
Since these are web components, you can style them using CSS:
lit-button {
margin: 8px;
}
lit-card {
max-width: 400px;
}
lit-input {
width: 100%;
margin-bottom: 16px;
}
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/your-username/lit-ui.git
cd lit-ui
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Run tests
npm test
# Lint code
npm run lint
lit-ui/
├── src/
│ ├── components/
│ │ ├── button/
│ │ ├── card/
│ │ └── input/
│ └── index.ts
├── dist/ # Built files
├── package.json
├── vite.config.ts
├── tsconfig.json
└── README.md
MIT License - see LICENSE file for details.
Contributions are welcome! Please read our Contributing Guide for details.
- 📧 Email: your.email@example.com
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions