import type { IGroupedParameter } from '../../types'; interface RawParameter { name: string; title: string; values: { name: string; title: string }[]; kind: 'range' | 'select' | 'chips' | 'radio'; is_filter: boolean; icon: string; group: { name: string; title: string; order: number }; } /** * Группирует параметры карточки по `group.name` в объекты с заголовком/порядком группы * и списком items (с переименованием `is_filter` → `isFilter`); группы сортируются по `order`. * @param parameters - плоский список параметров */ export function groupParametersByGroup(parameters: RawParameter[]): IGroupedParameter[] { const groups = new Map(); for (const param of parameters) { const groupName = param.group.name; if (!groups.has(groupName)) { groups.set(groupName, { title: param.group.title, order: param.group.order, items: [] }); } groups.get(groupName)!.items.push({ name: param.name, title: param.title, values: param.values, kind: param.kind, isFilter: param.is_filter, icon: param.icon, }); } return [...groups.values()].sort((a, b) => a.order - b.order); }