import React, { useState, useEffect } from 'react'; import { ClockWidgetData, WidgetExport } from '../../../types'; interface ClockWidgetProps { widget: ClockWidgetData; updateWidget: (id: string, update: Partial) => void } export const ClockWidgetComponent: React.FC = ({ widget, updateWidget }) => { const [time, setTime] = useState(new Date()); useEffect(() => { const timer = setInterval(() => setTime(new Date()), 1000); return () => clearInterval(timer); }, []); const formatTime = () => { const options: Intl.DateTimeFormatOptions = { hour: 'numeric', minute: '2-digit', timeZone: widget.timezone, hour12: !widget.use24Hour }; if (widget.showSeconds) { options.second = '2-digit'; } return new Intl.DateTimeFormat('en-US', options).format(time); }; return <>
{formatTime()}
{widget.timezone}
; }; export const ClockWidgetSettings = ({ widget, updateWidget }: ClockWidgetProps) => { const handleToggleSeconds = (e: React.ChangeEvent) => { updateWidget(widget.id, { showSeconds: e.target.checked }); }; const handleToggle24Hour = (e: React.ChangeEvent) => { updateWidget(widget.id, { use24Hour: e.target.checked }); }; const handleTimezoneChange = (e: React.ChangeEvent) => { updateWidget(widget.id, { timezone: e.target.value }); }; return ( <>
Show seconds
Use 24-hour format
); }; export const ClockWidget:WidgetExport = { widget: ClockWidgetComponent, settings: ClockWidgetSettings }