Skip to content
/ oui Public

Just another Vue3 UI lib with a proper French-sounding name ๐ŸŽจ ๐Ÿ‡ซ๐Ÿ‡ท

License

Notifications You must be signed in to change notification settings

holtwick/oui

Repository files navigation

๐ŸŽจ Oui Kit

๐ŸŽฏ UI toolkit with a French touch ๐Ÿ‡ซ๐Ÿ‡ท

Modern โ€ข Lightweight โ€ข TypeScript-first โ€ข Accessible

npm version license downloads

๐Ÿš€ Get Started โ€ข ๐Ÿ“š Documentation โ€ข ๐ŸŽฎ Live Demo

โœจ Why Oui Kit?

  • ๐ŸŽฏ 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:

QR Code to demo website

๐Ÿš€ Quick Start

Get up and running in under 2 minutes!

npm install oui-kit
# or
pnpm add oui-kit
# or
yarn add oui-kit

๐ŸŽฏ Usage

Basic Setup

// 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')

Your First Component

<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>

๐Ÿงฉ Available Components

๐ŸŽจ UI Components

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

๐Ÿ”ง Composables & Utilities

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

Tree Shaking

// 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'

๐Ÿ› ๏ธ Development

Prerequisites

  • Node.js 18+
  • pnpm (recommended) or npm

Contributing

We welcome contributions! Please see our Contributing Guide for details on:

  • Code style and formatting
  • Testing requirements
  • Git workflow and commit conventions
  • Development setup

Browser Support

oui-kit supports all modern browsers:

  • Chrome 88+
  • Firefox 85+
  • Safari 14+
  • Edge 88+

License

MIT License - see LICENSE file for details.

Acknowledgments

Derives from this previous work:

Support

About

Just another Vue3 UI lib with a proper French-sounding name ๐ŸŽจ ๐Ÿ‡ซ๐Ÿ‡ท

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project