field-date
A native date input, plus the natural-language combobox datetime.js arms unless the caller passes Plain. Type "tomorrow" into it.
Enhanced input: type "tomorrow", or "in 3 weeks"
Put this inside <section rst-box><form rst-form>.
<div rst-field >
<label rst-field-label for ="field-date_live" >Publish on</label >
<input rst-input id ="field-date_live" name ="field-date_live" type ="date" value ="2026-09-04" aria-describedby ="field-date_live-hint" data-rst-date data-rst-date-words ="{"ago":"ago","am":"am|a.m.","at":"at","day":"day|days","hour":"hour|hours|h","in":"in","last":"last","midnight":"midnight","minute":"minute|minutes|min|mins|m","month":"month|months","next":"next","noon":"noon|midday","pm":"pm|p.m.","today":"today","tomorrow":"tomorrow","week":"week|weeks","yesterday":"yesterday"}" data-rst-date-set ="Set" data-rst-date-hint ="Try: {example}" data-rst-date-pick ="Open the calendar" data-rst-date-calendar ="Calendar" data-rst-date-prev-month ="Previous month" data-rst-date-next-month ="Next month" data-rst-date-results ="{n} suggestions" data-rst-date-result-one ="1 suggestion" data-rst-date-quick-today ="Today" data-rst-date-quick-tomorrow ="Tomorrow" data-rst-date-quick-next-week ="In a week" data-rst-date-quick-plus-1h ="An hour later" data-rst-date-quick-plus-2h ="Two hours later" data-rst-date-quick-end-of-day ="End of that day" data-rst-date-quick-next-day ="Same time next day" >
<small rst-field-hint id ="field-date_live-hint" >The day it goes live.</small >
</div >
Put this inside <section rst-box><form rst-form>.
{{ template "field-date" dict
"Name" "field-date_live"
"Label" "Publish on"
"Value" "2026-09-04"
"Hint" "The day it goes live." }}
The words it parses ride out on data-rst-date-words, resolved through this page's catalog: the field parses the language the page is in.
Required, with an error
Put this inside <section rst-box><form rst-form>.
<div rst-field >
<label rst-field-label for ="field-date_error" >Publish on <span rst-field-required aria-hidden ="true" >*</span ></label >
<input rst-input id ="field-date_error" name ="field-date_error" type ="date" required aria-invalid ="true" aria-describedby ="field-date_error-error" data-rst-date data-rst-date-words ="{"ago":"ago","am":"am|a.m.","at":"at","day":"day|days","hour":"hour|hours|h","in":"in","last":"last","midnight":"midnight","minute":"minute|minutes|min|mins|m","month":"month|months","next":"next","noon":"noon|midday","pm":"pm|p.m.","today":"today","tomorrow":"tomorrow","week":"week|weeks","yesterday":"yesterday"}" data-rst-date-set ="Set" data-rst-date-hint ="Try: {example}" data-rst-date-pick ="Open the calendar" data-rst-date-calendar ="Calendar" data-rst-date-prev-month ="Previous month" data-rst-date-next-month ="Next month" data-rst-date-results ="{n} suggestions" data-rst-date-result-one ="1 suggestion" data-rst-date-quick-today ="Today" data-rst-date-quick-tomorrow ="Tomorrow" data-rst-date-quick-next-week ="In a week" data-rst-date-quick-plus-1h ="An hour later" data-rst-date-quick-plus-2h ="Two hours later" data-rst-date-quick-end-of-day ="End of that day" data-rst-date-quick-next-day ="Same time next day" >
<small rst-field-error id ="field-date_error-error" >Pick a date after today.</small >
</div >
Put this inside <section rst-box><form rst-form>.
{{ template "field-date" dict
"Name" "field-date_error"
"Label" "Publish on"
"Required" true
"Error" "Pick a date after today." }}
Bounded
Put this inside <section rst-box><form rst-form>.
<div rst-field >
<label rst-field-label for ="field-date_bounded" >Within this year</label >
<input rst-input id ="field-date_bounded" name ="field-date_bounded" type ="date" value ="2026-09-04" min ="2026-01-01" max ="2026-12-31" data-rst-date data-rst-date-words ="{"ago":"ago","am":"am|a.m.","at":"at","day":"day|days","hour":"hour|hours|h","in":"in","last":"last","midnight":"midnight","minute":"minute|minutes|min|mins|m","month":"month|months","next":"next","noon":"noon|midday","pm":"pm|p.m.","today":"today","tomorrow":"tomorrow","week":"week|weeks","yesterday":"yesterday"}" data-rst-date-set ="Set" data-rst-date-hint ="Try: {example}" data-rst-date-pick ="Open the calendar" data-rst-date-calendar ="Calendar" data-rst-date-prev-month ="Previous month" data-rst-date-next-month ="Next month" data-rst-date-results ="{n} suggestions" data-rst-date-result-one ="1 suggestion" data-rst-date-quick-today ="Today" data-rst-date-quick-tomorrow ="Tomorrow" data-rst-date-quick-next-week ="In a week" data-rst-date-quick-plus-1h ="An hour later" data-rst-date-quick-plus-2h ="Two hours later" data-rst-date-quick-end-of-day ="End of that day" data-rst-date-quick-next-day ="Same time next day" >
</div >
Put this inside <section rst-box><form rst-form>.
{{ template "field-date" dict
"Name" "field-date_bounded"
"Label" "Within this year"
"Value" "2026-09-04"
"Min" "2026-01-01"
"Max" "2026-12-31" }}
Plain: the bare native input
Put this inside <section rst-box><form rst-form>.
<div rst-field >
<label rst-field-label for ="field-date_plain" >Publish on</label >
<input rst-input id ="field-date_plain" name ="field-date_plain" type ="date" value ="2026-09-04" >
</div >
Put this inside <section rst-box><form rst-form>.
{{ template "field-date" dict
"Name" "field-date_plain"
"Label" "Publish on"
"Value" "2026-09-04"
"Plain" true }}
No enhancement attributes at all, so datetime.js has nothing to find. The native picker still opens.