diff --git a/src/components/EditWorksheetTimeModal.jsx b/src/components/EditWorksheetTimeModal.jsx
new file mode 100644
index 0000000..a4cd04f
--- /dev/null
+++ b/src/components/EditWorksheetTimeModal.jsx
@@ -0,0 +1,142 @@
+import { useEffect, useMemo, useState } from 'react'
+import { FaClock } from 'react-icons/fa'
+
+/** Minuten zwischen hhmm-Zeiten, Übernacht (+24h) wie useWorksheets.calculateTime. */
+function calculateMinutes(startTime, endTime) {
+ if (!startTime || !endTime) return null
+ const sh = parseInt(startTime.substring(0, 2), 10)
+ const sm = parseInt(startTime.substring(2, 4), 10)
+ const eh = parseInt(endTime.substring(0, 2), 10)
+ const em = parseInt(endTime.substring(2, 4), 10)
+ if ([sh, sm, eh, em].some(Number.isNaN)) return null
+ let diff = eh * 60 + em - (sh * 60 + sm)
+ if (diff < 0) diff += 24 * 60
+ return diff
+}
+
+function formatMinutes(minutes) {
+ if (minutes === null || minutes === undefined) return '–'
+ const h = Math.floor(minutes / 60)
+ const m = minutes % 60
+ return h > 0 ? `${h}h ${m}min` : `${m}min`
+}
+
+/**
+ * Startzeit fuer Git-Push-Worksheets nachtragen: Die Endzeit wurde beim Push
+ * automatisch gesetzt, hier wird der Arbeitsbeginn erfasst. Beim Speichern
+ * wird totalTime berechnet und isComment auf false gesetzt, damit der Eintrag
+ * in der Arbeitszeit-Statistik zaehlt.
+ */
+export default function EditWorksheetTimeModal({ isOpen, onClose, worksheet, onSave }) {
+ const [startDate, setStartDate] = useState('')
+ const [startTime, setStartTime] = useState('')
+ const [saving, setSaving] = useState(false)
+ const [error, setError] = useState('')
+
+ useEffect(() => {
+ if (isOpen && worksheet) {
+ setStartDate(worksheet.startDate || worksheet.endDate || '')
+ setStartTime(worksheet.startTime || '')
+ setError('')
+ }
+ }, [isOpen, worksheet])
+
+ const totalTime = useMemo(
+ () => calculateMinutes(startTime, worksheet?.endTime),
+ [startTime, worksheet]
+ )
+
+ if (!isOpen || !worksheet) return null
+
+ const handleSubmit = async (e) => {
+ e.preventDefault()
+ if (!/^\d{2}\.\d{2}\.\d{4}$/.test(startDate)) {
+ setError('Startdatum bitte als TT.MM.JJJJ angeben.')
+ return
+ }
+ if (!/^\d{4}$/.test(startTime)) {
+ setError('Startzeit bitte als HHMM angeben (z.B. 0930).')
+ return
+ }
+ if (totalTime === null) {
+ setError('Zeit konnte nicht berechnet werden.')
+ return
+ }
+ setSaving(true)
+ setError('')
+ const result = await onSave(worksheet, {
+ startDate,
+ startTime,
+ totalTime,
+ isComment: false,
+ })
+ setSaving(false)
+ if (result?.success) {
+ onClose()
+ } else {
+ setError(result?.error || 'Speichern fehlgeschlagen')
+ }
+ }
+
+ return (
+
+
+ ×
+
+
+
+
+ Zeit nachtragen – WSID {worksheet.wsid}
+
+
+ Die Endzeit wurde beim Git-Push automatisch gesetzt
+ ({worksheet.endDate} {worksheet.endTime ? `${worksheet.endTime.substring(0, 2)}:${worksheet.endTime.substring(2, 4)}` : ''}).
+ Trage hier ein, wann die Arbeit begonnen hat.
+