UNPKG

@tensorify.io/sdk

Version:

TypeScript SDK for developing Tensorify plugins with comprehensive validation, frontend enforcement, and publishing tools

200 lines 4.83 kB
/** * Visual configuration types for the Tensorify SDK * Defines how plugins appear and behave in the frontend */ /** * Visual appearance types for handles */ export declare enum HandleViewType { DEFAULT = "default",// Standard circular VERTICAL_BOX = "verticalBox",// Rectangular vertical CIRCLE_LG = "circle-lg",// Large circular DIAMOND = "diamond",// Diamond shaped SQUARE = "square",// Square shaped TRIANGLE = "triangle" } /** * Physical positions for handles on the node (8-point system) */ export declare enum HandlePosition { TOP = "top", TOP_RIGHT = "top-right", RIGHT = "right", BOTTOM_RIGHT = "bottom-right", BOTTOM = "bottom", BOTTOM_LEFT = "bottom-left", LEFT = "left", TOP_LEFT = "top-left" } /** * Edge styling types for connections */ export declare enum EdgeType { DEFAULT = "default", SOLID = "solid", DOTTED = "dotted", DASHED = "dashed", ACCENT = "accent", MUTED = "muted", SUCCESS = "success", WARNING = "warning", ERROR = "error" } /** * Data types for handle validation */ export type HandleDataType = "any" | "string" | "number" | "boolean" | "object" | "array"; /** * Validation rules for handle inputs */ export interface HandleValidation { minLength?: number; maxLength?: number; pattern?: string; customValidator?: string; } /** * Input handle definition */ export interface InputHandle { /** Unique handle identifier */ id: string; /** Physical position on node */ position: HandlePosition; /** Visual appearance type */ viewType: HandleViewType; /** Shows red star (*) if true */ required: boolean; /** Display label */ label: string; /** Edge styling */ edgeType: EdgeType; /** Data type for validation */ dataType: HandleDataType; /** Optional validation rules */ validation?: HandleValidation; /** Tooltip description */ description?: string; } /** * Output handle definition */ export interface OutputHandle { /** Unique handle identifier */ id: string; /** Physical position on node */ position: HandlePosition; /** Visual appearance type */ viewType: HandleViewType; /** Display label */ label: string; /** Edge styling */ edgeType: EdgeType; /** Data type information */ dataType: HandleDataType; /** Tooltip description */ description?: string; } /** * Container types for nodes */ export declare enum NodeViewContainerType { DEFAULT = "default",// Standard rectangular BOX = "box",// Rounded rectangular CIRCLE = "circle",// Circular LEFT_ROUND = "left-round" } /** * Icon types supported */ export declare enum IconType { SVG = "svg",// Raw SVG markup FONTAWESOME = "fontawesome",// FontAwesome icons LUCIDE = "lucide" } /** * Icon position options */ export type IconPosition = "center" | "top" | "left" | "bottom" | "right"; /** * Node icon configuration */ export interface NodeIcon { /** Icon type */ type: IconType; /** Icon value (SVG, FA name like "fa:discord", or Lucide ID) */ value: string; /** Position for secondary icons */ position?: IconPosition; } /** * Node size configuration */ export interface NodeSize { width: number; height: number; minWidth?: number; minHeight?: number; maxWidth?: number; maxHeight?: number; aspectRatio?: "fixed" | "flexible"; } /** * Node padding configuration */ export interface NodePadding { /** Internal content padding */ inner: number; /** External border padding */ outer: number; /** Additional padding like "Failure" node */ extraPadding: boolean; } /** * Node styling configuration */ export interface NodeStyling { borderRadius: number; borderWidth: number; borderColor?: string; backgroundColor?: string; /** Shadow intensity */ shadowLevel: 0 | 1 | 2 | 3; theme: "light" | "dark" | "auto"; } /** * Node icons configuration */ export interface NodeIcons { /** Center icon */ primary?: NodeIcon; /** Positioned icons */ secondary: NodeIcon[]; showIconBackground: boolean; iconSize: "small" | "medium" | "large"; } /** * Node labels configuration */ export interface NodeLabels { /** Main title */ title?: string; /** Subtitle */ titleDescription?: string; /** Template with {placeholders} */ dynamicLabelTemplate?: string; showLabels: boolean; labelPosition: "top" | "bottom" | "overlay"; } /** * Complete visual configuration for a node */ export interface NodeVisualConfig { containerType: NodeViewContainerType; size: NodeSize; padding: NodePadding; styling: NodeStyling; icons: NodeIcons; labels: NodeLabels; } //# sourceMappingURL=visual.d.ts.map