mod-arch-shared
Version:
Shared UI components and utilities for modular architecture micro-frontend projects
48 lines • 1.61 kB
TypeScript
import React from 'react';
interface CommonFilterConfig {
label: string;
placeholder: string;
}
export interface TextFilterConfig extends CommonFilterConfig {
type: 'text';
}
export interface SelectFilterConfig extends CommonFilterConfig {
type: 'select';
options: {
value: string;
label: string;
}[];
}
export interface MultiselectFilterConfig extends CommonFilterConfig {
type: 'multiselect';
options: {
value: string;
label: string;
}[];
}
export type FilterConfig = TextFilterConfig | SelectFilterConfig | MultiselectFilterConfig;
export type FilterType = FilterConfig['type'];
export type FilterConfigMap<K extends string> = {
[key in K]: FilterConfig;
};
/** Filter value type - string for text/select, string[] for multiselect */
export type FilterValue = string | string[];
export type FilterState<K extends string> = Record<K, FilterValue>;
export interface ToolbarFilterProps<K extends string> {
filterConfig: FilterConfigMap<K>;
visibleFilterKeys: readonly K[];
filterValues: FilterState<K>;
onFilterChange: (key: K, value: FilterValue) => void;
onClearAllFilters: () => void;
toolbarActions?: React.ReactNode;
testIdPrefix?: string;
}
export interface ToolbarFilterRef<K extends string> {
clearAll: () => void;
setFilter: (key: K, value: FilterValue) => void;
}
declare const ToolbarFilter: <K extends string>(props: ToolbarFilterProps<K> & {
ref?: React.ForwardedRef<ToolbarFilterRef<K>>;
}) => React.ReactElement;
export default ToolbarFilter;
//# sourceMappingURL=ToolbarFilter.d.ts.map