Docs/TuffEx
Universal Developer

TuffEx

Modern Vue3 component library with beautiful animations

TuffEx

TuffEx (Chinese name: Ta Fu) is a modern Vue3 component library focused on tactile experience and smooth animations. It's part of the Tuff ecosystem and provides beautiful, interactive UI components.

Migration in Progress - TuffEx is migrating components from Tuff core app. Tech stack upgraded to Vue 3.5 / Vite 6 / TypeScript 5.8.

Installation

EXAMPLE.BASH
# npm
npm install @talex-touch/tuffex

# yarn
yarn add @talex-touch/tuffex

# pnpm (recommended)
pnpm add @talex-touch/tuffex

Quick Start

Full Import

EXAMPLE.TYPESCRIPT
import { createApp } from 'vue'
import TuffUI from '@talex-touch/tuffex'
import '@talex-touch/tuffex/style.css'

const app = createApp(App)
app.use(TuffUI)
app.mount('#app')

On-Demand Import (Recommended)

EXAMPLE.TYPESCRIPT
import { createApp } from 'vue'
import { TuffButton, TuffSwitch, TuffFlatButton } from '@talex-touch/tuffex'
import '@talex-touch/tuffex/style.css'

const app = createApp(App)
app.use(TuffButton)
app.use(TuffSwitch)
app.use(TuffFlatButton)

Core Features

FeatureDescription
🎭 Living Tactile ExperienceElastic responses and damping effects for natural interactions
🌊 Silky Animation System60fps smooth animations based on Bézier curves
💎 Modern Visual LanguageGlassmorphism aesthetics with frosted glass effects
Performance OptimizedVue3 Composition API + Tree Shaking, 50%+ smaller bundles
🔗 Tuff EcosystemSeamlessly integrated with Tuff desktop application

Available Components

Released

ComponentDescriptionSource
TuffButtonInteractive button with tactile feedbackbutton/
TuffFlatButtonFlat button with hover effects and loadingbase/button/FlatButton
TuffSwitchToggle switch with smooth animationsbase/switch/TSwitch
TuffInputInput with clearable and textarea supportbase/input/FlatInput
TuffCheckboxCheckbox with SVG tick animationbase/checkbox/TCheckbox
TuffSelectDropdown select with floating positioningbase/select/TSelect
TuffSelectItemSelect option itembase/select/TSelectItem
TuffProgressProgress bar with indeterminate modebase/ProgressBar

Planned

ComponentDescriptionSource
TuffModalModal dialog with entrance animationsbase/dialog/
TuffScrollCustom scrollbar with native feelbase/TouchScroll
TuffTabsTab navigation with indicator animationstabs/
TuffMenuMenu componentmenu/

Theming

TUFF UI supports custom theming through CSS variables:

EXAMPLE.CSS
:root {
  /* Primary colors */
  --tx-color-primary: #409eff;
  --tx-color-primary-light-3: #79bbff;
  
  /* Text colors */
  --tx-text-color-primary: #303133;
  --tx-text-color-secondary: #909399;
  
  /* Border and radius */
  --tx-border-color: #dcdfe6;
  --tx-border-radius-base: 4px;
  
  /* Transitions */
  --tx-transition-duration: 0.3s;
}

Tech Stack

TechnologyVersionPurpose
Vue3.5+Composition API
TypeScript5.8+Type safety
Vite6.0+Build tooling
Sass1.89+Style preprocessing
VueUse13.0+Composition utilities

Development

EXAMPLE.BASH
# In monorepo root
pnpm install

# In packages/tuffex directory
pnpm docs:dev    # Start docs server at :8000
pnpm build       # Build library

Design Philosophy

  1. Tactile First - Every component should feel responsive and alive
  2. Performance - Animations must never compromise performance
  3. Accessibility - WCAG 2.1 AA compliance for all components
  4. Composability - Components work together seamlessly

Browser Support

  • Chrome 90+
  • Firefox 88+
  • Safari 14+
  • Edge 90+
Was this helpful?