import type { SchemaTypes } from '@datocms/cma-client'; import { Ctx } from '../ctx/base'; import { Icon } from '../icon'; type Field = SchemaTypes.Field; type ItemType = SchemaTypes.ItemType; export type CustomMarksForStructuredTextFieldHook = { /** * Use this function to define a number of custom marks for a specific * Structured Text field * * @tag structuredText */ customMarksForStructuredTextField: (field: Field, ctx: CustomMarksForStructuredTextFieldCtx) => StructuredTextCustomMark[] | undefined; }; export type CustomMarksForStructuredTextFieldCtx = Ctx<{ itemType: ItemType; }>; /** * An object expressing a custom mark for a Structured Text field * * @see {isStructuredTextCustomMark} */ export type StructuredTextCustomMark = { /** ID of mark */ id: string; /** Label representing the custom mark */ label: string; /** * Icon to be shown alongside the label. Can be a FontAwesome icon name (ie. * `"address-book"`) or a custom SVG definition. To maintain visual * consistency with the rest of the interface, try to use FontAwesome icons * whenever possible */ icon: Icon; /** * Expresses where you want the custom mark button to be placed inside the * toolbar. If not specified, the item will be placed after the standard marks * provided by DatoCMS itself. */ placement?: StructuredTextCustomMarkPlacement; /** * If multiple custom marks specify the same `placement` for their toolbar * button, they will be sorted by ascending `rank`. If you want to specify an * explicit value for `rank`, make sure to offer a way for final users to * customize it inside the plugin's settings form, otherwise the hardcoded * value you choose might clash with the one of another plugin! */ rank?: number; /** * Keyboard shortcut associated with the custom mark, expressed using the * https://github.com/ianstormtaylor/is-hotkey syntax (ie. `mod+shift+x`) */ keyboardShortcut?: string; /** How the custom mark will be styled inside the editor */ appliedStyle: React.CSSProperties; }; export type StructuredTextCustomMarkPlacement = [ 'before' | 'after', 'strong' | 'emphasis' | 'underline' | 'code' | 'highlight' | 'strikethrough' ]; export declare function isStructuredTextCustomMark(value: unknown): value is StructuredTextCustomMark; export declare function isReturnTypeOfCustomMarksForStructuredTextFieldHook(value: unknown): value is StructuredTextCustomMark[] | undefined; export {};