drizzle-cube
Version:
Drizzle ORM-first semantic layer with Cube.js compatibility. Type-safe analytics and dashboards with SQL injection protection.
119 lines (118 loc) • 3.48 kB
TypeScript
import { IconifyIcon } from '@iconify/types';
import { ComponentType, CSSProperties } from 'react';
/**
* Icon categories for organization and filtering
*/
export type IconCategory = 'action' | 'field' | 'chart' | 'measure' | 'state' | 'navigation';
/**
* Standard icon component props
*/
export interface IconProps {
className?: string;
'aria-hidden'?: boolean;
style?: CSSProperties;
}
/**
* Icon component type that can be used in JSX
*/
export type IconComponent = ComponentType<IconProps>;
/**
* Icon definition with Iconify data and metadata
*/
export interface IconDefinition {
/** The Iconify icon data */
icon: IconifyIcon;
/** Category for filtering/organization */
category: IconCategory;
/** Optional description */
description?: string;
}
/**
* Complete icon registry with all available icons
*/
export interface IconRegistry {
close: IconDefinition;
add: IconDefinition;
edit: IconDefinition;
delete: IconDefinition;
refresh: IconDefinition;
copy: IconDefinition;
duplicate: IconDefinition;
settings: IconDefinition;
filter: IconDefinition;
share: IconDefinition;
expand: IconDefinition;
collapse: IconDefinition;
search: IconDefinition;
menu: IconDefinition;
run: IconDefinition;
check: IconDefinition;
link: IconDefinition;
eye: IconDefinition;
eyeOff: IconDefinition;
adjustments: IconDefinition;
desktop: IconDefinition;
table: IconDefinition;
sun: IconDefinition;
moon: IconDefinition;
ellipsisHorizontal: IconDefinition;
documentText: IconDefinition;
bookOpen: IconDefinition;
codeBracket: IconDefinition;
swatch: IconDefinition;
measure: IconDefinition;
dimension: IconDefinition;
timeDimension: IconDefinition;
segment: IconDefinition;
chartBar: IconDefinition;
chartLine: IconDefinition;
chartArea: IconDefinition;
chartPie: IconDefinition;
chartScatter: IconDefinition;
chartBubble: IconDefinition;
chartRadar: IconDefinition;
chartRadialBar: IconDefinition;
chartTreemap: IconDefinition;
chartTable: IconDefinition;
chartActivityGrid: IconDefinition;
chartKpiNumber: IconDefinition;
chartKpiDelta: IconDefinition;
chartKpiText: IconDefinition;
chartMarkdown: IconDefinition;
measureCount: IconDefinition;
measureCountDistinct: IconDefinition;
measureCountDistinctApprox: IconDefinition;
measureSum: IconDefinition;
measureAvg: IconDefinition;
measureMin: IconDefinition;
measureMax: IconDefinition;
measureRunningTotal: IconDefinition;
measureCalculated: IconDefinition;
measureNumber: IconDefinition;
success: IconDefinition;
warning: IconDefinition;
error: IconDefinition;
info: IconDefinition;
loading: IconDefinition;
sparkles: IconDefinition;
chevronUp: IconDefinition;
chevronDown: IconDefinition;
chevronLeft: IconDefinition;
chevronRight: IconDefinition;
chevronUpDown: IconDefinition;
arrowUp: IconDefinition;
arrowDown: IconDefinition;
arrowRight: IconDefinition;
arrowPath: IconDefinition;
}
/**
* Type for icon registry keys
*/
export type IconName = keyof IconRegistry;
/**
* Partial icon registry for user overrides
* Users can provide just the IconifyIcon or a full IconDefinition
*/
export type PartialIconRegistry = Partial<{
[K in keyof IconRegistry]: IconifyIcon | Partial<IconDefinition>;
}>;