import { useState } from 'react' import { Box, UnstyledButton, Group, Text } from '@mantine/core' import { IconChevronDown, IconChevronRight } from '@tabler/icons-react' import { WidgetRenderer } from './WidgetRenderer' import type { SectionDef, QueryDef } from '../types' import type { FilterValues } from '../hooks/useFilterState' interface SectionProps { section: SectionDef queries: Record filters: FilterValues globalColumns: number getData: (widgetID: string, filters: FilterValues) => Promise[]> fillHeight?: boolean } export function Section({ section, queries, filters, globalColumns, getData, fillHeight }: SectionProps) { const [collapsed, setCollapsed] = useState(false) const columns = section.columns || globalColumns return ( section.collapsible && setCollapsed(c => !c)} style={{ flexShrink: 0, cursor: section.collapsible ? 'pointer' : 'default', userSelect: 'none' }} > {section.collapsible && ( collapsed ? : )} {section.title} {!collapsed && ( {section.widgets.map(widget => ( ))} )} ) }