Skip to content

generateDays

Generates a list of days, each with time slots between a given start and end time, skipping weekends.

Use Case

This utility is designed to help create mock or real meetingsByDay data compatible with your MeetingSelector component — especially useful in development, testing, or preview environments.

Function Signature

typescript
generateDays(
  date: Date,
  nbDays: number,
  startTime: Time,
  endTime: Time,
  interval: number
): MeetingsByDayGenerated[]

Parameters

NameTypeDescription
dateDateThe starting date for slot generation.
nbDaysnumberNumber of weekdays to generate (weekends are skipped).
startTimeTimeTime of day when the slots should start (e.g. { hours: 9, minutes: 0 }).
endTimeTimeTime of day when the slots should end.
intervalnumberLength of each slot in minutes.

Returns

typescript
type MeetingsByDayGenerated = {
  date: Date;
  slots: {
    date: Date;
  }[];
};

An array of objects, each containing:

  • A date
  • An array of slot objects ({ date: Date }) between startTime and endTime spaced by interval

Behavior

  • The first day starts immediately or from startTime, depending on the current time.
  • All time slots are rounded to the next closest interval.
  • Times are set with zero seconds and milliseconds for consistency.

Example

typescript
import { generateDays } from '<framework>-meeting-selector';

const days = generateDays(
  new Date(), // today
  5, // generate 5 weekdays
  { hours: 9, minutes: 0 }, // start at 09:00
  { hours: 17, minutes: 0 }, // end at 17:00
  30 // 30-minute slots
);

console.log(days);
/*
[
  {
    date: 2025-07-16T00:00:00.000Z,
    slots: [
      { date: 2025-07-16T09:00:00.000Z },
      { date: 2025-07-16T09:30:00.000Z },
      ...
    ]
  },
  ...
]
*/

Types

typescript
export type Time = {
  hours: number;
  minutes: number;
};

export type MeetingSlotGenerated = {
  date: Date;
};

export type MeetingsByDayGenerated = {
  date: Date;
  slots: MeetingSlotGenerated[];
};