/**
* Core TimeSlotList Components
* Provides low-level access to TimeSlotListService via render props
*/
import React from 'react';
import { type TimeSlotListServiceConfig } from '../../../services/time-slot-list/index.js';
import type { TimeSlot } from '@wix/auto_sdk_bookings_availability-time-slots';
/**
* Props for Root component
*/
export interface RootProps {
children: React.ReactNode;
config: TimeSlotListServiceConfig;
}
/**
* Root component that provides TimeSlotListService context to its children.
*
* @component
* @example
* ```tsx
*
* // Your components
*
* ```
*/
export declare function Root(props: RootProps): React.ReactNode;
/**
* Props for Timezone render prop component
*/
export interface TimezoneProps {
children: (data: {
/** Raw IANA timezone string (e.g., "America/New_York") */
timezone: string | undefined;
/** User-friendly display name (e.g., "Eastern Standard Time") */
displayName: string;
}) => React.ReactNode;
}
/**
* Core component that provides access to the current timezone via render props.
*
* @component
* @example
* ```tsx
*
* {({ timezone, displayName }) => (
* {displayName} // "Eastern Standard Time"
* )}
*
* ```
*/
export declare function Timezone(props: TimezoneProps): React.ReactNode;
/**
* Render props for ListData component
*/
export interface ListDataRenderProps {
timeSlots: TimeSlot[];
hasMore: boolean;
isLoading: boolean;
error: string | null;
loadMore: () => Promise;
hasSelectedTimeSlot: boolean;
}
/**
* Props for ListData render prop component
*/
export interface ListDataProps {
children: (data: ListDataRenderProps) => React.ReactNode;
}
/**
* Core component that provides access to time slots list data via render props.
* Use this to build list containers with GenericList.
*
* @component
* @example
* ```tsx
*
* {({ timeSlots, hasMore, isLoading, loadMore, hasSelectedTimeSlot }) => (
*
* {children}
*
* )}
*
* ```
*/
export declare function ListData(props: ListDataProps): React.ReactNode;
/**
* Render props for DateRange component
*/
export interface DateRangeRenderProps {
startDate: Date;
endDate: Date;
setDateRange: (start: Date, end: Date) => void;
/** IANA timezone string for the time slots (e.g., "America/New_York") */
timezone: string | undefined;
}
/**
* Props for DateRange render prop component
*/
export interface DateRangeProps {
children: (data: DateRangeRenderProps) => React.ReactNode;
}
/**
* Core component that provides access to date range data and actions via render props.
* Use this to build date range inputs for calendar/week view navigation.
*
* @component
* @example
* ```tsx
*
* {({ startDate, endDate, setDateRange }) => (
* setDateRange(start, end)}
* />
* )}
*
* ```
*/
export declare function DateRange(props: DateRangeProps): React.ReactNode;