magner
Version:
Universal admin panel magnetic to any backend
47 lines (36 loc) • 1.32 kB
text/typescript
import type { TranslateData } from 'lib/utils/core/translate';
import type { RouteLocationRaw, RouteLocation } from 'vue-router';
import type { ActionButton } from 'lib/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>[],
}