/**
 * 布局类型：一种 layout 对应一种「视图的集合」
 * - grid: 搜索 + 表格 + 分页
 * - card: 搜索 + 卡片列表 + 分页
 * 后续可扩展 list、kanban 等
 */

/**
 * 列表区布局变体：`phone` 时 Grid 收紧列宽与单元格 padding，ToolBar 可配合 compact-narrow。
 * 与业务组件 `variant="phone"` 对齐，由宿主显式传入 RecordBoard。
 */

/**
 * 列字段类型：对应 Pisell 表单组件，传入列 type 时用该组件自动渲染列（只读）与筛选项（编辑）
 */

/** 无 type 时筛选项可传入自定义组件，需支持 value / onChange 以接入 Form */

/** 选项格式，用于 getOptions / options；color 用于只读态 Tag 展示 */

/** 同步或异步返回选项列表，singleSelect/multipleSelect 的 fieldProps.getOptions 或 filter.getOptions 使用 */

/** 列筛选配置：不传列 type 时使用。可配置 type + options/props，或传入 component（接收 value/onChange）。 */

/**
 * RecordBoard 列类型扩展（与 antd Table Column 兼容，仅增加可选字段）。
 *
 * 有 type（如 singleLineText）时：
 * - 表格：自动用对应 Pisell 组件只读渲染；传入 render 则优先使用（覆盖）。
 * - 筛选：自动用对应组件编辑态；传入 filter（type 或 component）则优先使用（覆盖）。
 * - 排序：自动从组件 SortOptions 派生；传入 sort 则优先使用（覆盖）。
 *
 * 无 type 时：
 * - 表格：无 render 则纯文本；可自定义 render。
 * - 筛选：需配置 filterable + filter（type 或 component，component 需 value/onChange）。
 * - 排序：需配置 sortable + sort（type 或 getSortItems）。
 */

/**
 * 分页状态（与容器内部一致）
 */

/**
 * 列表请求结果（与 dataSource / useRequest 等对齐）
 */

/** ShellFrame 内容区：表格、平面图、日历或大屏资源墙（与 GridLayout 同级切换） */

/** 日历 Y 轴资源行（与 BookingCalendarDemo 中 court 对齐） */

/**
 * 日历格内预约条数据（与 BookingCalendarDemo 内部 booking 形状一致）；
 * `raw` 为宿主预约行时，业务层可用其打开详情弹窗。
 */

/** 日视图时间轴上的一条预约 overlay（与 BookingCalendarDemo 内部结构对齐） */

/** 表头时间分组合并（声明式）；与 {@link RecordBoardCalendarProps.renderTimelineHeader} 二选一优先用 render */

/** 自定义时间列表头时注入的上下文 */

/** 自定义左侧资源格 */

/** 自定义日视图中间预约条外层容器内层（定位仍由日历负责） */

/**
 * 月 / 周格内单条预约插槽参数。
 * 未使用 {@link RecordBoardCalendarProps.renderMonthWeekBooking} 时，月 / 周格仅默认 booking（紫）/ block（红），不展示状态徽标与按状态的底色。
 */

/** 拖拽改期的投放目标（与日历内部确认态 moveDraft 字段一致）。 */

/**
 * 对接 `POST /shop/schedule/blocked-time` 的请求体（与后台字段一致）。
 */

/** 日视图连续空闲槽合并后的一段（与内置锁台面版预填一致） */

/** 日视图多选的空闲格 */

/**
 * 日视图「从选区新建」：与 {@link groupSelectedSlots} 合并后的一段一致（单 court、单日、连续小时）。
 */

/**
 * 底部栏「新建预约」传给宿主的上下文。
 * 传入 {@link RecordBoardCalendarProps.onCreateBookingFromSelection} 后，
 * 日历**不再**调用 {@link CalendarPersistContextValue.beforePersist} / **不再**写入本地 `bookings`
 *（适用于 Pisell Reservation 等受控数据源场景）。
 */

/** 宿主弹出锁台/屏蔽表单时由日历传入的上下文（替代内置锁台面版） */

/** 日历视图槽位 props：由 Shell 合并根级与子槽后传入 PisellRecordBoardCalendarView */

/**
 * 平面图槽位 props：与 PisellFloorMapLayout 对齐；items/renderItem 可省略（由 RecordBoard 默认 [] / () => null）。
 */

/** 大屏资源墙单卡数据（与画布资源 id 对齐，见 {@link resourceId}） */

/**
 * 控制台「Resource & Layout」中与版式/轮播相关的可持久化字段（不含资源多选，其走 filter；不含配色，其走 appearanceTheme）。
 */

/** {@link RecordBoardResourceWallLayoutPersist} 默认值，与 {@link PisellRecordBoardResourceWallView} 历史初始 state 一致 */
export var DEFAULT_RESOURCE_WALL_LAYOUT_PERSIST = {
  layoutKey: '2x3',
  customCols: 3,
  customRows: 2,
  pageDurationSec: 10,
  boardingSoonBeforeMin: 10,
  heroMaxWidthRatio: 0.6
};

/**
 * 大屏资源墙视图 props；与 Shell 内 `PisellRecordBoard.ResourceWall` 合并（子优先）。
 * 展示顺序默认由 `searchParams.filter.values[filterFieldKey]`（默认 `resource_wall_resource_ids`）非空 `string[]` 决定；
 * **未写该键、值非数组、或 `[]`**：不展示卡片。**仅渲染 `cards` 中能按 `resourceId` 命中的项**；
 * 命中不到的 id（例如磁盘残留的旧店铺 / 已删资源）直接剔除、不再回退成「数字占位卡」，磁盘清洗由宿主负责。
 * 当 `searchParams.sort` 的字段名与 {@link RecordBoardResourceWallProps.statusSortFieldKeys} 匹配（默认 `status`）时，
 * 在筛选顺序基础上按卡占用态重排：升序空闲在前，降序占用（inUse/将结/已结束）在前。
 */

/**
 * RecordBoard 容器 Context 值
 * 与具体 layout 类型无关，所有 layout 共用同一套数据与操作
 */

/**
 * 各 layout 下子组件的可选透传配置（类似 ChildComponentProps）
 */
/**
 * BatchActionBar 透传配置，与 PisellBatchActionBar 的 props 对齐。
 * 具体类型见 PisellBatchActionBarProps，此处仅做透传用。
 */

/** Filter 透传配置，与 PisellFilter 的 props 对齐 */

/**
 * ToolBar 透传配置。
 * - 继承 PisellToolBar 的 slots：topLeft、topRight、bottomLeft、bottomRight、tabs。
 * - search：默认在工具栏内渲染 PisellFind；为对象时透传为 PisellFind 的 props；为 false 时不渲染搜索。
 * - filter：默认在工具栏右侧渲染 PisellFilter；为对象时透传 PisellFilter props；为 false 时不渲染。筛选值绑定 searchParams.filter，变更触发 onSearch。
 */

/** Search 透传配置，与 PisellFind 的 props 对齐 */

/**
 * Grid 布局透传配置，对应 RecordBoardGridView 的 props（useRecordBoardContext('grid') 会将其合并到 context）。
 * 基于 antd TableProps，省略由 context 注入或组件自管的项（dataSource、loading、pagination、columns、scroll、size、rowSelection）。
 * 多选用 selectedKeys/selectedRows/onSelectionChange；其余 Table props（如 onRow、onHeaderRow、expandable、rowClassName、summary）透传。
 */

/**
 * RecordBoard 容器 Props。
 * 仅打散传参：列表/分页/搜索/多选/列显隐、以及 grid/toolBar/search/paginationConfig/batchActionBar/cardList 独立传入。
 */