The availability settings atom enables a user to set their available time slots. This atom allows users to define specific time slots when they are available for meetings or events, helping them manage their schedules effectively and avoid double bookings.

First, for the AvailabilitySettings toggle animation to work set the reading direction on the <html> element:

<html dir="ltr"> ... </html>

Below code snippet can be used to render the availability settings atom

import { AvailabilitySettings } from "@calcom/atoms";

export default function Availability() {
  return (
    <>
       <AvailabilitySettings
          onUpdateSuccess={() => {
            console.log("Updated schedule successfully");
          }}
          onDeleteSuccess={() => {
            console.log("Deleted schedule successfully");
          }}
       />
    </>
  )
}

For a demonstration of the availability settings atom, please refer to the video below.

If a user wishes to add further adjustments to their availability for special occasions or events, they can use the date overrides feature. Date overrides enables users to pick any date that they’re currently available and set specific hours for availability on that day or mark themselves entirely unavailable. Once that day is passed, the date override is automatically deleted.

Below code snippet can be used to render date overrides into the availability settings atom

import { AvailabilitySettings } from "@calcom/atoms";

export default function Availability() {
  return (
    <>
       <AvailabilitySettings
          enableOverrides={true}
          onUpdateSuccess={() => {
            console.log("Updated schedule successfully");
          }}
          onDeleteSuccess={() => {
            console.log("Deleted schedule successfully");
          }}
       />
    </>
  )
}

For a demonstration of the availability settings atom with date overrides, please refer to the video below.

We offer all kinds of customizations to the availability settings atom via props and customClassNames.

Below is a list of props that can be passed to the availability settings atom.

NameRequiredDescription
idNoThe ID of the schedule which fetches a user’s availability
labelsNoHelpful if you want to pass in custom labels for i18n
customClassNamesNoTo pass in custom classnames from outside for styling the atom
onUpdateSuccessNoA callback function to handle updating user availability successfully
onBeforeUpdateNoValidates schedule before it is sent to the server; if true, the schedule is sent, else it is not
onUpdateErrorNoA callback function that gets triggered when the user availability fails to update
onDeleteSuccessNoA callback function that gets triggered when the user availability is deleted successfully
onDeleteErrorNoA callback function that gets triggered when the user availability fails to delete
enableOverridesNoAllows user to enable or disable date overrides display in the atom; defaults to disabled

Along with the props, Availability settings atom accepts custom styles via the customClassNames prop. Below is a list of props that fall under this customClassNames prop.

NameDescription
containerClassNameAdds styling to the whole availability settings component
ctaClassNameAdds stylings only to certain call-to-action buttons
editableHeadingClassNameEditable heading or title can be styled
formClassNameForm which contains the days and toggles
timezoneSelectClassNameAdds styling to the timezone select component
subtitlesClassNameStyles the subtitle
scheduleContainerStyles the entire schedule component
scheduleDayAdds styling to just the day of a particular schedule
dayRangesAdds styling to day ranges
timeRangesTime ranges in the availability settings can be customized
labelAndSwitchContainerAdds styling to label and switches
overridesModalClassNamesAdds styling to the date overrides modal
Please ensure all custom classnames are valid Tailwind CSS classnames.