Store editor
Event details section
Date, time, repeat and location for an event product.
Available
Needs mock props
Examples
Rendered live from the maintained Storybook story. Lantern stores only the story id and embeds Storybook rather than duplicating the component or its demo.
Event details section
Rendered live from Storybook
Storybook must be running for this to load — bun run start:storybook from the monorepo root, or set NEXT_PUBLIC_STORYBOOK_URL to a deployed instance.
Props
The component's public API, read from its TypeScript source. Descriptions come from TSDoc on the prop, so this table cannot drift from the component.
| Prop | Type | Default | Description |
|---|---|---|---|
eventDate* | string | — | `yyyy-MM-dd`. |
onEventDateChange* | (date: string) => void | — | Undocumented — add TSDoc to the prop in the library. |
eventTime* | string | — | `HH:mm`, 24-hour. |
onEventTimeChange* | (time: string) => void | — | Undocumented — add TSDoc to the prop in the library. |
eventEndDate | string | "" | Undocumented — add TSDoc to the prop in the library. |
onEventEndDateChange | (date: string) => void | — | Undocumented — add TSDoc to the prop in the library. |
eventEndTime | string | "" | Undocumented — add TSDoc to the prop in the library. |
onEventEndTimeChange | (time: string) => void | — | Undocumented — add TSDoc to the prop in the library. |
repeatOption | RepeatOption | "none" | Undocumented — add TSDoc to the prop in the library. |
onRepeatOptionChange | (option: RepeatOption) => void | — | Undocumented — add TSDoc to the prop in the library. |
locationType | LocationType | "" | Undocumented — add TSDoc to the prop in the library. |
onLocationTypeChange | (type: LocationType) => void | — | Undocumented — add TSDoc to the prop in the library. |
locationValue | string | "" | Undocumented — add TSDoc to the prop in the library. |
onLocationValueChange | (value: string) => void | — | Undocumented — add TSDoc to the prop in the library. |
allDay | boolean | — | Controlled all-day flag. Leave undefined to let the section own it. |
initialAllDay | boolean | false | Seeds the all-day flag when uncontrolled, so both trees are snapshottable. |
onAllDayChange | (allDay: boolean) => void | — | Undocumented — add TSDoc to the prop in the library. |
zoomInstalled | boolean | false | Whether the Zoom integration is connected. The app read this from an installed-apps context; it is a prop here. |
onInstallZoom | () => void | — | Fired by the "Install Zoom" button. The app raised an install toast. |
isInstallingZoom | boolean | false | Renders the install button in its spinner state. |
isGeneratingZoomLink | boolean | false | Renders the meeting-link field in its "Generating meeting link..." state. The app faked this with `Math.random()` behind an 1100ms timer; link generation is the host's job now, and this is how it reports progress. |
onRequestZoomLink | () => void | — | Fired once when Zoom is selected, connected, and no link exists yet — the host's cue to mint one and push it back through `onLocationValueChange`. |
zoomIconSrc | string | PLACEHOLDER_VIDEO_APP_ICON | Icon for the Zoom row. Defaults to an inline SVG; never a remote URL. |
installedBadgeLabel | string | "Installed" | Copy on the "connected" pill in the Zoom row. |
initialCopied | boolean | false | Seeds the copy button's confirmation tick so it is a static story. |
onCopyLink | (value: string) => void | — | Overrides the clipboard write. Defaults to `navigator.clipboard.writeText`. |
copyResetMs | number | 1500 | How long the tick stays up after a copy. `0` leaves it up indefinitely. |
now | Date | EVENT_DETAILS_DEFAULT_NOW | Reference "now" for `autoInitializeSchedule`. Fixed by default — this component never reads the machine clock on its own. |
autoInitializeSchedule | boolean | false | Seed an empty date/time on mount (today, the next half hour, and a one-hour end). The app always did this; it is opt-in here, because a section that writes to its host on mount is a surprise in a design system. |
mirrorEndDate | boolean | true | Keep the end date pinned to the start date — the app's single-day row. |
timeStepMinutes | number | 30 | Minutes between rows in the time lists. |
defaultOpenControl | EventDetailsOpenControl | — | Opens one of the dropdowns on mount so each menu is a static story. |
className | string | — | Undocumented — add TSDoc to the prop in the library. |
Reference
Transcribed from the component audit. If this disagrees with the source, the source is right.
- Source
src/components/store/editor/sections/EventDetailsSection.tsx- Portability
- Needs its app dependencies replaced by props before it renders in isolation.
- Notes
- Takes a now value; its 24-hour option builder is exported.