import React, { useState } from 'react'; import { Website } from '../types'; interface WebsiteTileProps { website: Website; isEditing: boolean; onEdit: (website: Website) => void; onMove: (website: Website, direction: 'left' | 'right') => void; tileSize?: string; } const getTileSizeClass = (size: string | undefined) => { switch (size) { case 'small': return 'w-28 h-28'; case 'medium': return 'w-32 h-32'; case 'large': return 'w-36 h-36'; default: return 'w-32 h-32'; } }; // Returns normal icon size in px const getIconPixelSize = (size: string | undefined): number => { switch (size) { case 'small': return 32; case 'medium': return 40; case 'large': return 48; default: return 40; } }; // Returns loading icon size in px const getIconLoadingPixelSize = (size: string | undefined): number => { switch (size) { case 'small': return 24; case 'medium': return 32; case 'large': return 40; default: return 32; } }; const WebsiteTile: React.FC = ({ website, isEditing, onEdit, onMove, tileSize }) => { const [isLoading, setIsLoading] = useState(false); const handleClick = (e: React.MouseEvent) => { if (isEditing) { e.preventDefault(); return; } setIsLoading(true); // Simulate loading time (dev purpose) // e.preventDefault(); // setTimeout(() => { // setIsLoading(false); // }, 3500); // Small delay to show spinner before navigation }; const iconSizeClass = `w-[${getIconPixelSize(tileSize)}px] h-[${getIconPixelSize(tileSize)}px]`; const iconSizeLoadingClass = `w-[${getIconLoadingPixelSize(tileSize)}px] h-[${getIconLoadingPixelSize(tileSize)}px]`; return (
{isLoading && (
)}
{`${website.name}
{website.name}
{isEditing && (
)}
); }; export default WebsiteTile;