Skip to content

epam/ai-dial-ui-kit

AI DIAL UI Kit

AI-DIAL-UI-KIT project logo

The AI DIAL UI Kit is an production-ready React component library designed to streamline your development process. It features a collection of base components, such as Buttons, Inputs, Dropdowns, and more — allowing you to effortlessly reuse elements, quick and easy.

npm version License: Apache 2.0 TypeScript React

Table of Contents

✨ Highlights

  • 🎨 Unified User Experience: Ui Kit usage helps with design consistency across AI DIAL applications
  • Modern Stack: Built with latest React, TypeScript, Vite, and Tailwind CSS
  • 🎨 Highly Customizable: Deep theming capabilities with CSS custom properties
  • 🧪 Well-Tested: Comprehensive test coverage (70%+) with Vitest and React Testing Library
  • 📚 Storybook Ready: Includes interactive component documentation and development playground
  • 🛠️ Developer Experience: Leverage ESLint, Prettier, Husky for maintainable code quality
  • 📦 Distribution Ready: Deployed as NPM package ready for easy integration

📖 Documentation

Explore our components and their usage in our interactive Storybook documentation.

🚀 Quick Start

Prerequisites

  • Node.js >= 22.2.0
  • npm >= 10.7.0

Installation

npm install @epam/ai-dial-ui-kit

Basic Usage

import { DialButton } from '@epam/ai-dial-ui-kit'; import '@epam/ai-dial-ui-kit/styles.css'; function App() { return ( <div> <DialButton cssClass="dial-primary-button" onClick={() => alert('Hello AI DIAL!')} /> </div> ); }

Development

Prerequisites

  • Node.js >= 22.2.0
  • npm >= 10.7.0
  • Git

Development Setup

  1. Clone the repo

    git clone https://github.com/epam/ai-dial-ui-kit.git cd ai-dial-ui-kit
  2. Install Dependencies

    npm install
  3. Start Development Environment

    # Start Storybook for component development npm run storybook # Run tests in watch mode npm run test -- --watch # Start Vite dev server npm run dev

Running Tests

# Run all tests with coverage npm run test

Project Structure

src/ ├── components/ # React components │ ├── Button/ # Example component │ │ ├── Button.tsx │ │ ├── Button.spec.tsx │ │ └── Button.stories.tsx │ └── ... ├── styles/ # Global styles and Tailwind configuration │ ├── buttons.scss │ ├── typography.scss │ └── tailwind-entry.scss ├── types/ # TypeScript type definitions └── index.ts # Main entry point 

🎨 Theming & Customization

The library uses CSS custom properties for comprehensive theming. Override these variables to match your brand:

:root { /* Background layers */ --bg-layer-0: #000000; --bg-layer-1: #090D13; --bg-layer-2: #171B21; /* Text colors */ --text-primary: #F3F4F6; --text-secondary: #9CA3AF; --text-tertiary: #6B7280; ... }

Full list of variables is available here

📖 Storybook

Storybook is a handy library for documenting and developing of UI components.

Stories

To run fully interactive storybook:

Development mode

npm run storybook # Open http://localhost:6006

Production Build

npm run build-storybook

Production start

npx http-server ./storybook-static # Open http://127.0.0.1:8080/

Documents

To run documents only:

Development mode

npm run storybook-docs # Open http://localhost:54800/

Production build

npm run build-storybook-docs

Production start

npx http-server ./storybook-static # Open http://127.0.0.1:8080/

Storybook provides:

  • 📖 Interactive component documentation
  • 🎨 Visual testing playground
  • ♿ Accessibility testing tools
  • 📱 Responsive design testing
  • 🎯 Component isolation

🚀 Usage in Projects

Next.js Integration
  1. Install the package and peer dependencies that are not currently in your project
npm install @epam/ai-dial-ui-kit npm install react react-dom @tabler/icons-react classnames npm install @floating-ui/react monaco-editor @monaco-editor/react
  1. Import style in the root layout of the project:
// app/layout.tsx import "@epam/ai-dial-ui-kit/styles.css";
  1. Usage example
// app/page.tsx "use client"; import { DialButton } from "@epam/ai-dial-ui-kit"; export default function Home() { return ( <div className="w-full h-full flex flex-col gap-3 items-center justify-center"> <h1>Test library</h1> <DialButton onClick={() => console.log("Next.js + AI DIAL UI Kit!")} title="Click me" cssClass="dial-primary-button" /> </div> ); }

Tree Shaking

Import only the components you need:

// ✅ Good - Tree shakable imports import { DialButton, DialInput } from '@epam/ai-dial-ui-kit'; import '@epam/ai-dial-ui-kit/styles.css'; // Import styles separately // ❌ Avoid - Imports entire library import * as UIKit from '@epam/ai-dial-ui-kit';

🤝 Contributing

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

  • Code style guidelines
  • Testing requirements
  • Pull request process

🔒 Security

If you discover a security vulnerability, please refer to our Security Policy.

📄 License

Apache 2.0 - see the LICENSE file for details.

🌟 Related Projects

  • AI-DIAL - Entrypoint for all AI Dial projects

Made with ❤️ by EPAM Systems

About

A modern UI kit for building AI DIAL interfaces with React

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Contributors 7