magner
Version:
Universal admin panel magnetic to any backend
38 lines (37 loc) • 1.41 kB
TypeScript
import type { TranslateData } from '../../../utils/core/translate';
import type { RouteLocationRaw, RouteLocation } from 'vue-router';
import type { ActionButton } from '../../../types/utils/actions';
type TagType = 'success' | 'warning' | 'danger' | 'info';
type TagSize = 'small' | 'default' | 'large';
type TagTheme = 'dark' | 'light' | 'plain';
export interface PageHeaderTab {
label: TranslateData;
/** Leave only one tab active for the better UX */
active?: boolean;
/** In the tab, you can specify a function which takes a current route
* as an argument and returns the vue-router acceptable link */
link: ((route: RouteLocation) => RouteLocationRaw) | RouteLocationRaw;
/** Hide the tab if it is used in the empty (New) entity card */
hideIfNew?: boolean;
}
export interface PageHeader<EMITTERS = string, ENTITY = {}> {
/** New title */
newTitle?: TranslateData;
/** Card or Table title */
title?: TranslateData;
/** Tag title */
tag?: {
name: keyof ENTITY;
props: Partial<{
type: TagType;
size: TagSize;
effect: TagTheme;
round: boolean;
}>;
};
/** Tabs are the links to other pages represented in the form of tabs */
tabs?: PageHeaderTab[];
/** Actions are buttons placed in page header */
actions?: ActionButton<EMITTERS, ENTITY>[];
}
export {};