Sebastian Krüger f214ddf0ba fix: history only saves on drag end + throttle drag updates
Fixed two critical issues with draggable bars:

1. History now only saves on drag end (not during dragging):
   - Added isDragging state to MainConverter
   - onValueChange callback now accepts dragging boolean parameter
   - History useEffect skips saving when isDragging is true
   - On mouseup/touchend, call onValueChange with dragging=false to trigger save
   - Prevents hundreds of history entries from a single drag

2. Throttled drag updates for better performance:
   - Added lastUpdateTime ref to track update frequency
   - Limited updates to 60fps (every 16ms)
   - Prevents React from being overwhelmed with rapid state updates
   - Smoother, more responsive dragging experience

How it works:
- During drag: onValueChange(value, unit, true) → isDragging=true → history skips
- On drag end: onValueChange(value, unit, false) → isDragging=false → history saves
- Drag move: throttled to max 60 updates per second

This should make bars update smoothly during drag and history
clean with only one entry per drag operation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 10:54:05 +01:00

Unit Converter

A spectacular, innovative unit conversion application built with modern web technologies to provide the best user experience for converting between various measurement units.

Tech Stack

  • Next.js 16 - React framework with App Router and static export
  • TypeScript - Type-safe development
  • Tailwind CSS 4 - Modern utility-first CSS framework
  • convert-units - Comprehensive unit conversion library

Features

Supported Units

23 measurement categories with 187 individual units:

  • Angle, Apparent Power, Area, Current, Digital
  • Each, Energy, Frequency, Illuminance, Length
  • Mass, Pace, Parts Per, Power, Pressure
  • Reactive Energy, Reactive Power, Speed, Temperature
  • Time, Voltage, Volume, Volume Flow Rate

Innovative UX Features

  • Real-time bidirectional conversion
  • Smart context-aware interface with fuzzy search
  • Visual comparison with color-coded categories
  • Keyboard shortcuts for power users
  • Mobile-first responsive design
  • Conversion history with localStorage
  • Dark mode support

Getting Started

Prerequisites

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

Installation

# Install dependencies
pnpm install

# Run development server
pnpm dev

# Build for production
pnpm build

# Start production server
pnpm start

Open http://localhost:3000 to see the app.

Project Structure

units-ui/
├── app/                  # Next.js App Router
│   ├── layout.tsx       # Root layout
│   ├── page.tsx         # Home page
│   └── globals.css      # Global styles
├── components/          # React components (coming soon)
├── lib/                 # Utility functions (coming soon)
├── public/              # Static assets
└── IMPLEMENTATION_PLAN.md  # Detailed implementation plan

Development

See IMPLEMENTATION_PLAN.md for the complete development roadmap.

License

MIT


Built with Next.js 16, Tailwind CSS 4, and convert-units

Description
No description provided
Readme 148 KiB
Languages
TypeScript 90.3%
CSS 8.2%
Dockerfile 1.4%