import type { CSSProperties, ReactNode } from 'react'; import type { Dayjs } from 'dayjs'; import type { PisellTimeNavigatorProps } from '../pisellTimeNavigator/types'; import type { PisellReservationScheduleProps } from '../pisellReservationSchedule/types'; /** * 组合值:顶栏选中日(营业日锚定)+ 时间轴游标绝对时刻 `at`。 * 跨日营业时 `at` 可为其它自然日时刻,顶栏 `date` 通常不变;展示用 {@link formatScheduleAtLabel}(带日期)。 */ export interface ReservationScheduleBandValue { date: Dayjs; at: Dayjs; } export declare type TimeNavigatorPassthroughProps = Omit; /** * PisellReservationScheduleBand:营业日条 + 横向时间轴 */ export interface PisellReservationScheduleBandProps { /** * 受控:选中日 + 轴上时刻 */ value?: ReservationScheduleBandValue; /** * 日历日或时刻任一变化时触发 */ onChange?: (next: ReservationScheduleBandValue) => void; /** * 非受控初始值(可只传部分字段) */ defaultValue?: Partial; /** * 透传给 PisellReservationSchedule(如 minDate / maxDate) */ scheduleProps?: Omit; /** * 透传给 PisellTimeNavigator(不含 value/onChange/referenceDate) */ timeNavigatorProps?: TimeNavigatorPassthroughProps; /** * 顶栏日程行:PisellReservationSchedule 左侧自定义内容(如标题) */ scheduleStartSlot?: ReactNode; /** * 顶栏日程行:PisellReservationSchedule 右侧自定义内容(如状态、主按钮) */ scheduleEndSlot?: ReactNode; /** * 顶栏日程行:紧挨在选日组件之后(如「跟随当前」),与中间列同一 flex 区 */ scheduleAfterDateSlot?: ReactNode; /** * 为 true 时隐藏下方时间导航轴(如日历视图仅需要选日/选周/选月) */ hideTimeNavigator?: boolean; /** * 为 true 时在整个日程带上叠加载层(如切换营业日后拉预约列表期间) */ dataLoading?: boolean; /** * 加载层内文案,由业务侧 {@link locales.getText} 等注入 */ dataLoadingTip?: ReactNode; className?: string; style?: CSSProperties; /** * 追加到内部 `.pisell-reservation-schedule-band-schedule-row` 的类名(如手机端无视图切换时改为一行布局)。 */ scheduleRowClassName?: string; }