adminjs
Version:
Admin panel for apps written in node.js
83 lines (82 loc) • 2.22 kB
TypeScript
import { BoxProps, HeaderProps, TextProps, BadgeProps, ButtonProps, LinkProps, LabelProps, IconProps } from '@adminjs/design-system';
import { PropsWithChildren } from 'react';
import { CurrentAdmin } from '../../../current-admin.interface.js';
export type LayoutElement = string | Array<string> | Array<LayoutElement> | [
string,
PropsWithChildren<BoxProps>
] | [
PropsWithChildren<BoxProps>,
Array<LayoutElement>
] | [
'@Header',
PropsWithChildren<HeaderProps>
] | [
'@H1',
PropsWithChildren<HeaderProps>
] | [
'@H2',
PropsWithChildren<HeaderProps>
] | [
'@H3',
PropsWithChildren<HeaderProps>
] | [
'@H4',
PropsWithChildren<HeaderProps>
] | [
'@H5',
PropsWithChildren<HeaderProps>
] | [
'@Text',
PropsWithChildren<TextProps>
] | [
'@Badge',
PropsWithChildren<BadgeProps>
] | [
'@Button',
PropsWithChildren<ButtonProps>
] | [
'@Link',
PropsWithChildren<LinkProps>
] | [
'@Label',
PropsWithChildren<LabelProps>
] | [
'@Icon',
PropsWithChildren<IconProps>
] | [
string,
PropsWithChildren<any>
];
/**
* Function returning Array<LayoutElement> used by {@link Action#layout}
*
* @return {Array<LayoutElement>}
* @memberof Action
* @alias LayoutElementFunction
*/
export type LayoutElementFunction = (currentAdmin?: CurrentAdmin) => Array<LayoutElement>;
/**
* It is generated from {@link Array<LayoutElement>} passed in {@link Action#layout}
*
* @alias ParsedLayoutElement
* @memberof ActionJSON
*/
export type ParsedLayoutElement = {
/** List of paths to properties which should be rendered by given element */
properties: Array<string>;
/** props passed to React component which wraps elements */
props: PropsWithChildren<any>;
/** Nested layout elements */
layoutElements: Array<ParsedLayoutElement>;
/** Component which should be used as a wrapper */
component: string;
};
export declare const layoutElementParser: (layoutElement: LayoutElement) => ParsedLayoutElement;
export default layoutElementParser;
/**
* @load layout-element.doc.md
* @name LayoutElement
* @typedef {String | Array} LayoutElement
* @memberof Action
* @alias LayoutElement
*/