import React from 'react'; import './BucketButtonGroup.less'; /** * 通用「桶 → 底层 key 数组」按钮组,HUD 抽屉里的支付状态 / 预约状态快筛都走这个组件。 * * 设计动机: * - 业务方在抽屉里只关心少量"业务桶"(如未支付 / 已支付 / 在场),但底层枚举更细 * (`partially_paid` / `payment_processing` / `arrived` / `started` …); * - 直接渲染所有底层 key 会有 7+ 个按钮把抽屉撑爆,且语义不连贯; * - 桶 → 底层 key 多对一映射在前端组件里完成,写入 `searchParams.filter.values.` * 仍是底层 key 数组,与 Filter modal 的 multi-select / 后端查询参数完全兼容。 * * "选中"判定:桶 keys 任一在 value 中即视为选中(容忍历史/边角态 key)。 * "切换"行为:选中 → 剔除该桶所有 key;未选中 → 加入该桶所有 key(保留 value 中已有非桶 key)。 */ export interface BucketDef { /** 桶唯一 id,仅用于 React key */ id: string; /** 按钮文案(已经过国际化) */ label: string; /** 该桶承载的底层 enum key 集合 */ keys: string[]; } export interface BucketButtonGroupProps { /** 由外层 Form 注入:底层 key 数组 */ value?: string[]; /** 由外层 Form 注入:底层 key 数组变更回调 */ onChange?: (v: string[]) => void; /** 桶定义,按 UI 顺序 */ buckets: BucketDef[]; } export declare function BucketButtonGroup(props: BucketButtonGroupProps): React.JSX.Element; export default BucketButtonGroup;