import React from 'react'; type IconProps = React.SVGProps & { title?: string; titleId?: string }; /** * Toolbar icons drawn on the Heroicons outline grid (24px, 1.5 stroke, round caps) * so they can sit next to the Heroicons that the toolbar still uses. * A 22% fill of the current color (`tint`) marks the "data" part of a glyph. */ function createIcon(children: React.ReactNode) { return function ToolbarIcon({ title, titleId, ...props }: IconProps) { return ( {title ? {title} : null} {children} ); }; } const tint = { fill: 'currentColor', fillOpacity: 0.22 } as const; /** One stacked column whose lower segment (from `split` down to the baseline) is tinted. */ const stackedColumn = (x: number, top: number, split: number) => ( <> ); // ---------- toolbar actions ---------- /** The familiar cube, with a small sigma badge that spells out "aggregate". */ export const AggregationIcon = createIcon( <> ); export const MarkTypeIcon = createIcon( <> ); export const TransposeIcon = createIcon( <> ); export const SortAscendingIcon = createIcon( <> ); export const SortDescendingIcon = createIcon( <> ); export const TableSummaryIcon = createIcon( <> ); export const ComputedFieldIcon = createIcon( <> ); export const AxesZoomIcon = createIcon( <> ); export const LayoutSizeIcon = createIcon( <> ); export const CoordSystemIcon = createIcon(); export const DebugIcon = createIcon( <> ); export const ExportChartIcon = createIcon( <> ); export const ExportCsvIcon = createIcon( <> ); export const RowLimitIcon = createIcon( <> ); // ---------- mark types ---------- export const MarkAutoIcon = createIcon( <> ); export const MarkBarIcon = createIcon( <> ); export const MarkLineIcon = createIcon(); export const MarkAreaIcon = createIcon(); export const MarkTrailIcon = createIcon(); export const MarkPointIcon = createIcon( <> ); export const MarkCircleIcon = createIcon( <> ); export const MarkTickIcon = createIcon(); export const MarkRectIcon = createIcon( <> ); export const MarkArcIcon = createIcon( <> ); export const MarkTextIcon = createIcon(); export const MarkBoxplotIcon = createIcon( <> ); export const MarkTableIcon = createIcon( <> ); export const MarkChoroplethIcon = createIcon( <> ); // ---------- stack modes ---------- export const StackNoneIcon = createIcon( <> ); export const StackIcon = createIcon( <> {stackedColumn(3.25, 11, 16)} {stackedColumn(9.75, 4, 13)} {stackedColumn(16.25, 8, 15)} ); export const StackNormalizeIcon = createIcon( <> {stackedColumn(3.25, 3.5, 14)} {stackedColumn(9.75, 3.5, 9)} {stackedColumn(16.25, 3.5, 12)} ); export const StackCenterIcon = createIcon( <> ); // ---------- layout modes ---------- export const LayoutFixedIcon = createIcon( <> ); export const LayoutAutoIcon = createIcon( <> ); export const LayoutFullIcon = createIcon( <> ); // ---------- coordinate systems ---------- export const CoordGenericIcon = createIcon( <> );