diff --git a/web/src/lib/components/elements/date-input.svelte b/web/src/lib/components/elements/date-input.svelte
index ccd405c934..f42fff4359 100644
--- a/web/src/lib/components/elements/date-input.svelte
+++ b/web/src/lib/components/elements/date-input.svelte
@@ -5,7 +5,11 @@
     type: 'date' | 'datetime-local';
   }
 
+  export let type: $$Props['type'];
   export let value: $$Props['value'] = undefined;
+  export let max: $$Props['max'] = undefined;
+
+  $: fallbackMax = type === 'date' ? '9999-12-31' : '9999-12-31T23:59';
 
   // Updating `value` directly causes the date input to reset itself or
   // interfere with user changes.
@@ -14,7 +18,9 @@
 
 <input
   {...$$restProps}
+  {type}
   {value}
+  max={max || fallbackMax}
   on:input={(e) => (updatedValue = e.currentTarget.value)}
   on:blur={() => (value = updatedValue)}
   on:keydown={(e) => {