/** * 预约页拆出的轻量子组件(无业务数据请求): * - `RecordBoardBodyViewCapture`:同步 bodyView 到 ref,并可通知宿主; * - `ScheduleSyncOnFloorEnter`:从表格回到平面图/日历、或从日历回到平面图时,用当前营业日 patch 列表时间窗口; * - `PisellReservationToolbarTabs`:平面图/日历为日程带 + Segmented;表格 / 资源墙不展示日程带,仅 extraTabs; * - `ReservationGridTopRight` / `PisellReservationScheduleEndActions` / `ReservationFloorMapCanvasTabsTrailing`:工具栏与画布尾区。 */ import React from 'react'; import { type Dayjs } from 'dayjs'; import type { PisellFloorMapLayoutRef, RecordBoardBodyView, ReservationScheduleBandValue, TimeRangeOption } from '@pisell/materials'; import type { PisellReservationProps } from '../types'; /** 无 UI:将 RecordBoard Context 中的 `bodyView` 写入 ref,并可选通知宿主(如预约页按视图切换 booking 的 form_record_ids) */ export declare function RecordBoardBodyViewCapture(props: { bodyViewRef: React.MutableRefObject; onBodyViewChange?: (v: RecordBoardBodyView) => void; }): null; /** * 视图切换时统一收敛 `floorDayBookingData.searchParams`: * - 从 grid / 任意非视图区切到 floorMap / calendar / resourceWall 时,锚定当前营业日单日窗; * - 从 calendar / resourceWall 切回 floorMap 时,除锚定单日窗外,必须清掉 calendar 周/月视图写入的 * `compact_fields` / `enable_remote_memory_cache`(否则 osServer 在非今日锚定下会走 compact with, * booking 缺失 resources,平面图合并落空); * - 从 calendar 切到 grid / resourceWall 时,单独清 calendar-only flags,避免之后再切回 floorMap 时残留。 * * 注意:此组件必须常驻挂载(放在 `` 内、`` 外), * 否则 ShellFrame 会按 bodyView 条件渲染 children,导致它只在 grid 视图下挂载而无法观测到切换事件。 */ export declare function ScheduleSyncOnFloorEnter(props: { schedule: ReservationScheduleBandValue; isInternalListData: boolean; patchSearchParams: (updater: (prev: Record) => Record) => void; /** 店铺 core `operating_day_boundary`,与列表 `booking_time_start_between` / 顶栏一致 */ operatingDayBoundary?: unknown; /** 与时间轴 `range` 一致,用于「今天」视图下 pickReferenceDateContainingNow */ timelineRange: TimeRangeOption; }): null; export declare type PisellReservationToolbarTabsProps = { extraTabs?: React.ReactNode; schedule: ReservationScheduleBandValue; onScheduleChange: (next: ReservationScheduleBandValue) => void; scheduleProps?: PisellReservationProps['scheduleProps']; timeNavigatorProps?: PisellReservationProps['timeNavigatorProps']; scheduleStartSlot?: React.ReactNode; scheduleEndSlot?: React.ReactNode; followWallClock: boolean; onFollowWallClockToggle: () => void; onTimeNavigatorUserInteraction: () => void; loadDensity?: (params: { referenceDate: Dayjs; stepMinutes: number; }) => Promise; /** 日历视图下顶栏日程切换步长(资源 / 日 / 周 / 月) */ calendarGranularity?: 'resource' | 'day' | 'week' | 'month'; /** `variant==='phone'` 时深色顶栏视图切换用 Select,其它控件尺寸收紧 */ phoneLayout?: boolean; }; export declare function ReservationMobileToolbarBodyViewSelect(): React.JSX.Element | null; /** * 顶栏 tabs:**仅平面图、日历**下为日程带 + 时间轴 + 标题旁切换;表格 / 资源墙不展示 ScheduleBand, * 切换器由 RecordBoard 工具栏顶行承担(表格态在 Find 左侧;资源墙无 Find 时在顶行左侧),与历史行为一致。 */ export declare function PisellReservationToolbarTabs(props: PisellReservationToolbarTabsProps): React.JSX.Element | null; /** 表格视图时展示工具栏右上角透传;平面图时收起(编辑入口在画布 Tab 行右侧) */ export declare function ReservationGridTopRight(props: { extra?: React.ReactNode; }): React.JSX.Element | null; export declare type PisellReservationScheduleEndActionsProps = { onNewReservation?: () => void; calendarGranularity?: 'resource' | 'day' | 'week' | 'month'; onCalendarGranularityChange?: (u: 'resource' | 'day' | 'week' | 'month') => void; phoneLayout?: boolean; }; /** 顶栏日程带右侧:日历粒度(与左上角 Segmented 同款)+ 新建 */ export declare function PisellReservationScheduleEndActions(props: PisellReservationScheduleEndActionsProps): React.JSX.Element; export declare type ReservationFloorMapCanvasTabsTrailingProps = { isFloorModeControlled: boolean; mapEditInternal: boolean; setMapEditInternal: React.Dispatch>; floorMapLayoutRef: React.RefObject; /** `variant==='phone'`:Dock 尾区编辑入口改为与缩放区一致的图标按钮 */ phoneLayout?: boolean; }; export declare type ReservationFloorMapDockToolButtonsProps = { appearanceMode: 'light' | 'dark'; onToggleAppearanceMode: () => void; }; /** 平面图左下 Dock 展开区:与缩放/网格平级的业务工具按钮。 */ export declare function ReservationFloorMapDockToolButtons(props: ReservationFloorMapDockToolButtonsProps): React.JSX.Element; /** 平面图左下 Dock 展开区:编辑 / 完成编辑(经 PisellFloorMapLayout.viewportDockTrailing) */ export declare function ReservationFloorMapCanvasTabsTrailing(props: ReservationFloorMapCanvasTabsTrailingProps): React.JSX.Element | null; /** 默认顶栏标题 slot */ export declare function ReservationDefaultScheduleStart(): React.JSX.Element; /** 场控页顶栏标题 slot */ export declare function ReservationVenueScheduleStart(): React.JSX.Element;