From 33db2629e3244b043624ef89dd6162c52906d30a Mon Sep 17 00:00:00 2001 From: chelsea Date: Thu, 19 Feb 2026 19:26:44 -0600 Subject: [PATCH] Add every-N-day frequency toggle to new routine page The schedule editor on /dashboard/routines/new was missing the Weekly/Every N Days toggle that was added to the edit page. Co-Authored-By: Claude Opus 4.6 --- .../src/app/dashboard/routines/new/page.tsx | 132 +++++++++++++----- 1 file changed, 96 insertions(+), 36 deletions(-) diff --git a/synculous-client/src/app/dashboard/routines/new/page.tsx b/synculous-client/src/app/dashboard/routines/new/page.tsx index 24366e6..42fa869 100644 --- a/synculous-client/src/app/dashboard/routines/new/page.tsx +++ b/synculous-client/src/app/dashboard/routines/new/page.tsx @@ -50,6 +50,9 @@ export default function NewRoutinePage() { const [scheduleDays, setScheduleDays] = useState(['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']); const [scheduleTime, setScheduleTime] = useState('08:00'); const [scheduleRemind, setScheduleRemind] = useState(true); + const [scheduleFrequency, setScheduleFrequency] = useState<'weekly' | 'every_n_days'>('weekly'); + const [scheduleIntervalDays, setScheduleIntervalDays] = useState(2); + const [scheduleStartDate, setScheduleStartDate] = useState(() => new Date().toISOString().split('T')[0]); const toggleDay = (day: string) => { setScheduleDays(prev => @@ -128,11 +131,16 @@ export default function NewRoutinePage() { }); } - if (scheduleDays.length > 0) { + if (scheduleFrequency === 'every_n_days' || scheduleDays.length > 0) { await api.routines.setSchedule(routine.id, { days: scheduleDays, time: scheduleTime, remind: scheduleRemind, + frequency: scheduleFrequency, + ...(scheduleFrequency === 'every_n_days' && { + interval_days: scheduleIntervalDays, + start_date: scheduleStartDate, + }), }); } @@ -226,58 +234,110 @@ export default function NewRoutinePage() { {/* Schedule */}

Schedule (optional)

- - {/* Quick select buttons */} + + {/* Frequency selector */}
-
-
- -
- {DAY_OPTIONS.map((day) => ( + {scheduleFrequency === 'every_n_days' ? ( +
+
+ +
+ setScheduleIntervalDays(Math.max(2, Number(e.target.value)))} + className="w-20 px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-indigo-500 outline-none" + /> + days +
+
+
+ + setScheduleStartDate(e.target.value)} + className="w-full px-4 py-3 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-indigo-500 outline-none" + /> +
+
+ ) : ( + <> + {/* Quick select buttons */} +
- ))} -
-
- + + +
+ +
+ +
+ {DAY_OPTIONS.map((day) => ( + + ))} +
+
+ + )} +
- +

Send reminder