๐ฏ UI toolkit with a French touch ๐ซ๐ท
Modern โข Lightweight โข TypeScript-first โข Accessible
- ๐ฏ Vue 3 Native - Built from the ground up for Vue 3 Composition API
- ๐จ Stylus Powered - Flexible theming system with Stylus CSS
- ๐ฆ Tree Shakeable - Import only what you need
- ๐ง TypeScript First - Full TypeScript support out of the box
- โฟ Accessible - WCAG compliant components
- ๐ชถ Lightweight - Minimal bundle size impact
- ๐๏ธ Customizable - Easy to theme and extend
๐ฎ Try it live: https://oui.holtwick.de
๐ฑ Scan QR code for mobile demo:
Get up and running in under 2 minutes!
npm install oui-kit
# or
pnpm add oui-kit
# or
yarn add oui-kit
// main.ts
import { createApp } from 'vue'
import App from './App.vue'
// Import oui-kit styles
import 'oui-kit/css'
const app = createApp(App)
app.mount('#app')
<script setup lang="ts">
import { OuiButton, OuiModal, useNotification } from 'oui-kit'
import { ref } from 'vue'
const showModal = ref(false)
const { notify } = useNotification()
function handleSuccess() {
notify('๐ Success! Your component is working!', 'success')
}
function handleInfo() {
notify('โน๏ธ This is an info message', 'info')
}
</script>
<template>
<div class="demo-container">
<h2>Welcome to Oui Kit!</h2>
<div class="button-group">
<OuiButton variant="primary" @click="handleSuccess">
๐ Show Success
</OuiButton>
<OuiButton variant="secondary" @click="handleInfo">
โน๏ธ Show Info
</OuiButton>
<OuiButton variant="outline" @click="showModal = true">
๐ฑ Open Modal
</OuiButton>
</div>
<OuiModal v-model="showModal" title="๐จ Hello from Oui Kit!">
<p>This modal demonstrates the power of Oui Kit components.</p>
<p>Enjoy building beautiful Vue.js applications! ๐</p>
</OuiModal>
</div>
</template>
<style lang="stylus">
@import 'oui-kit/stylus'
.demo-container
padding: $spacing-lg
max-width: 600px
margin: 0 auto
.button-group
display: flex
gap: $spacing-md
flex-wrap: wrap
margin-top: $spacing-md
</style>
Component | Description | Features |
---|---|---|
OuiButton | Versatile button component | Multiple variants, sizes, loading states |
OuiModal | Beautiful modal dialogs | Backdrop blur, animations, accessibility |
OuiNotification | Toast notification system | Auto-dismiss, positions, custom styling |
OuiFloat | Floating positioning | Tooltips, dropdowns, popovers |
Composable | Description | Use Case |
---|---|---|
useNotification | Reactive notification system | Show success/error messages |
useModal | Modal state management | Programmatic modal control |
useFloat | Floating element positioning | Tooltips, dropdowns, menus |
// Import only what you need
import * as OuiKit from 'oui-kit'
// Or import everything (not recommended for production)
import { OuiButton, OuiModal, useNotification } from 'oui-kit'
import { OuiButton } from 'oui-kit/button'
import { OuiModal } from 'oui-kit/modal'
import { useNotification } from 'oui-kit/notification'
- Node.js 18+
- pnpm (recommended) or npm
We welcome contributions! Please see our Contributing Guide for details on:
- Code style and formatting
- Testing requirements
- Git workflow and commit conventions
- Development setup
oui-kit supports all modern browsers:
- Chrome 88+
- Firefox 85+
- Safari 14+
- Edge 88+
MIT License - see LICENSE file for details.
Derives from this previous work:
- ๐ Documentation
- ๐ Issues
- ๐ฌ Discussions
- โค๏ธ Sponsor