xpaintdev / components /ZoomSlider.tsx
suisuyy
Initialize xpaintai project with core files and basic structure
763be49
import React from 'react';
interface ZoomSliderProps {
zoomLevel: number;
onZoomChange: (newZoomLevel: number) => void;
}
const ZoomSlider: React.FC<ZoomSliderProps> = ({ zoomLevel, onZoomChange }) => {
const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
onZoomChange(parseFloat(event.target.value));
};
const zoomPercentage = Math.round(zoomLevel * 100);
return (
<div
className="fixed bottom-4 left-1/2 -translate-x-1/2 z-30 bg-slate-700 bg-opacity-80 backdrop-blur-sm text-white p-3 rounded-lg shadow-xl flex items-center space-x-3"
role="toolbar"
aria-label="Zoom controls"
>
<label htmlFor="zoom-slider" className="text-xs font-medium whitespace-nowrap">
Zoom: <span className="font-bold">{zoomPercentage}%</span>
</label>
<input
type="range"
id="zoom-slider"
min="0.2" // 20%
max="3.0" // 300%
step="0.01"
value={zoomLevel}
onChange={handleChange}
className="w-32 md:w-40 h-2 bg-slate-500 rounded-lg appearance-none cursor-pointer accent-sky-500"
aria-valuemin={20}
aria-valuemax={300}
aria-valuenow={zoomPercentage}
aria-label={`Current zoom level ${zoomPercentage} percent`}
/>
</div>
);
};
export default ZoomSlider;