/**
* Core StaffMemberList Component
* Bridge between StaffMemberListService and headless components using render props
*
* @module Core/StaffMemberList
*/
import React from 'react';
import { type StaffMemberListServiceConfig } from '../../../services/staff-member-list/staff-member-list.js';
import type { StaffMemberData } from '../../../services/staff-member-list/staff-member-list.def.js';
/**
* Props for StaffMemberList.Root component
*/
export interface RootProps {
children: React.ReactNode;
staffMemberListServiceConfig: StaffMemberListServiceConfig;
}
/**
* Root component that provides StaffMemberList service context
*
* @component
* @example
* ```tsx
*
*
* {({ staffMembers }) => (
* // render staff members
* )}
*
*
* ```
*/
export declare function Root(props: RootProps): React.ReactNode;
/**
* Render props for StaffMembers component
*/
export interface StaffMembersRenderProps {
/** Staff members array from the service */
staffMembers: StaffMemberData[];
/** Whether there are any staff members */
hasStaffMembers: boolean;
/** Whether staff members are currently loading */
isLoading: boolean;
/** Error message if any */
error: string | null;
}
/**
* Props for StaffMembers render prop component
*/
export interface StaffMembersProps {
children: (data: StaffMembersRenderProps) => React.ReactNode;
}
/**
* Core component that provides access to staff members list via render props
*
* @component
* @example
* ```tsx
*
* {({ staffMembers, hasStaffMembers, isLoading }) => (
* isLoading ? : staffMembers.map(...)
* )}
*
* ```
*/
export declare function StaffMembers(props: StaffMembersProps): React.ReactNode;
/**
* Render props for Actions component
*/
export interface ActionsRenderProps {
/** Select a staff member */
select: (staffMember: StaffMemberData) => void;
/** Currently selected staff member */
selectedStaffMember: StaffMemberData | null;
/** Clear the staff member resource from BookingService */
clear: () => void;
}
/**
* Props for Actions render prop component
*/
export interface ActionsProps {
children: (actions: ActionsRenderProps) => React.ReactNode;
}
/**
* Core component that provides staff member actions via render props
*
* @component
* @example
* ```tsx
*
* {({ select, selectedStaffMember }) => (
*
* )}
*
* ```
*/
export declare function Actions(props: ActionsProps): React.ReactNode;