import { type AsChildChildren } from '@wix/headless-utils/react';
import React from 'react';
import { type ScheduleItem } from '../services/schedule-item-service.js';
/**
* Props for the ScheduleItem Root component.
*/
export interface RootProps {
/** Schedule item data */
item: ScheduleItem;
/** Whether to render as a child component */
asChild?: boolean;
/** Child components that will have access to the schedule item */
children: React.ReactNode;
/** CSS classes to apply to the default element */
className?: string;
}
/**
* Root container that provides schedule item service context to all child components.
* Must be used as the top-level ScheduleItem component.
*
* @order 1
* @component
* @example
* ```tsx
* import { ScheduleItem } from '@wix/events/components';
*
* function ScheduleItemPage({ item }) {
* return (
*
*
*
*
*
*
*
* );
* }
* ```
*/
export declare const Root: React.ForwardRefExoticComponent>;
/**
* Props for the ScheduleItem Name component.
*/
export interface NameProps {
/** Whether to render as a child component */
asChild?: boolean;
/** Custom render function when using asChild */
children?: AsChildChildren<{
/** Schedule item name */
name: string;
}>;
/** CSS classes to apply to the default element */
className?: string;
}
/**
* Displays the schedule item name.
*
* @component
* @example
* ```tsx
* // Default usage
*
*
* // asChild with primitive
*
*
*
*
* // asChild with react component
*
* {React.forwardRef(({ name, ...props }, ref) => (
*
* {name}
*
* ))}
*
* ```
*/
export declare const Name: React.ForwardRefExoticComponent>;
/**
* Props for the ScheduleItem TimeSlot component.
*/
export interface TimeSlotProps {
/** Whether to render as a child component */
asChild?: boolean;
/** Custom render function when using asChild */
children?: AsChildChildren<{
/** Schedule item start time */
startTime: Date;
/** Schedule item end time */
endTime: Date;
/** Schedule item time zone ID */
timeZoneId: string;
/** Formatted time range string (e.g., "18:30 - 19:00") */
formattedTimeRange: string;
}>;
/** CSS classes to apply to the default element */
className?: string;
}
/**
* Displays the schedule item time slot information.
*
* @component
* @example
* ```tsx
* // Default usage
*
*
* // asChild with primitive
*
*
*
*
* // asChild with react component
*
* {React.forwardRef(({ startTime, endTime, timeZoneId, formattedTimeRange, ...props }, ref) => (
*
* ))}
*
* ```
*/
export declare const TimeSlot: React.ForwardRefExoticComponent>;
/**
* Props for the Schedule Duration component.
*/
export interface DurationProps {
/** Whether to render as a child component */
asChild?: boolean;
/** Custom render function when using asChild */
children?: AsChildChildren<{
/** Duration in minutes */
durationMinutes: number;
}>;
/** CSS classes to apply to the default element */
className?: string;
}
/**
* Displays the schedule item duration.
*
* @component
* @example
* ```tsx
* // Default usage
*
*
* // asChild with primitive
*
*
*
*
* // asChild with react component
*
* {React.forwardRef(({ durationMinutes, ...props }, ref) => (
*
* {durationMinutes > 0 ? `${durationMinutes} minutes` : ''}
*
* ))}
*
* ```
*/
export declare const Duration: React.ForwardRefExoticComponent>;
/**
* Props for the ScheduleItem Description component.
*/
export interface DescriptionProps {
/** Custom render function */
children?: AsChildChildren<{
/** Schedule item description */
description: string;
}>;
}
/**
* Provides the schedule item description in rich text format, e.g. Description
.
*
* @component
* @example
* ```tsx
* // Usage with react component
* // If using RicosViewer, use fromRichTextHtml from @wix/ricos to convert the description to RichContent
*
* {React.forwardRef(({ description, ...props }, ref) => (
*
* ))}
*
* ```
*/
export declare const Description: React.ForwardRefExoticComponent>;
/**
* Props for the ScheduleItem Stage component.
*/
export interface StageProps {
/** Whether to render as a child component */
asChild?: boolean;
/** Custom render function when using asChild */
children?: AsChildChildren<{
/** Schedule item stage name */
stageName: string;
}>;
/** CSS classes to apply to the default element */
className?: string;
}
/**
* Displays the schedule item stage.
*
* @component
* @example
* ```tsx
* // Default usage
*
*
* // asChild with primitive
*
*
*
*
* // asChild with react component
*
* {React.forwardRef(({ stageName, ...props }, ref) => (
*
* {stageName}
*
* ))}
*
* ```
*/
export declare const Stage: React.ForwardRefExoticComponent>;
/**
* Props for the ScheduleItem Tags component.
*/
export interface TagsProps {
/** Whether to render as a child component */
asChild?: boolean;
/** Child components or custom render function when using asChild */
children: React.ReactNode | AsChildChildren<{
/** Schedule item tags */
tags: string[];
}>;
/** CSS classes to apply to the default element */
className?: string;
}
/**
* Container for the schedule item tags.
*
* @component
* @example
* ```tsx
*
*
*
*
*
* ```
*/
export declare const Tags: React.ForwardRefExoticComponent>;
/**
* Props for the ScheduleItem TagRepeater component.
*/
export interface TagRepeaterProps {
/** Child components */
children: React.ReactNode;
/** CSS classes to apply to the tag element */
className?: string;
}
/**
* Repeater component that renders ScheduleItemTag.Root for each tag.
*
* @component
* @example
* ```tsx
*
*
*
* ```
*/
export declare const TagRepeater: (props: TagRepeaterProps) => React.ReactNode;