import { h } from 'vue' import IvyIcon from '@/views/_components/icon/IvyIcon.vue' import type { TableColumn } from '@/views/_components/table/IvyTableColumn' import { starCellRenderer } from '@/views/_components/table/renderers' import type { StarCellOptions } from '@/views/_components/table/renderers/starCellRenderer' export interface StarColumnOptions> { onChange: StarCellOptions['onChange'] field: StarCellOptions['field'] ariaLabel?: StarCellOptions['ariaLabel'] title?: string width?: number minWidth?: number headerColor?: string overrides?: Partial } export function starColumn>( options: StarColumnOptions, ): TableColumn { const width = options.width ?? 32 return { key: 'star', width, minWidth: options.minWidth ?? width, title: options.title, headerRenderer: () => h(IvyIcon, { name: 'star', type: 'outline', size: 'd', color: options.headerColor ?? 'var(--map-base-dusk-symbol-2)', }), cellRenderer: starCellRenderer({ onChange: options.onChange, field: options.field, ariaLabel: options.ariaLabel, }), visible: true, showInModal: true, ...options.overrides, } }