Props for tscircuit builtin component types
npm install @tscircuit/propsThis repo contains all the prop definitions and zod parsers for tscircuit builtin TSX components, e.g. , , etc. All tscircuit features typically start with a new props definition.
Contributor Getting Started Video
This repo is the source-of-truth for defining the React props, API changes begin here. The focus of the API is on ergonomics for
the user (unlike circuit-json which focuses on ergonomics for a renderer)
``ts
import type { ResistorProps, ResistorPropsInput } from "@tscircuit/props";
import { resistorProps } from "@tscircuit/props";
resistorProps.parse({ resistance: "10k" } as ResistorPropsInput);
// { resistance: 10_000 }
`
| Component | Props Interface |
| ------------------------------ | ------------------------------------------------------------------------------------------ |
| | AnalogSimulationProps |
| | BatteryProps |
| | BoardProps |
| | BreakoutProps |
| | BreakoutPointProps |
| | CadAssemblyProps |
| | CadModelProps |
| | CapacitorProps |
| | ChipProps |
| | ConnectorProps |
| | ConstrainedLayoutProps |
| | ConstraintProps |
| | CopperPourProps |
| | CopperTextProps |
| | CourtyardCircleProps |
| | CourtyardOutlineProps |
| | CourtyardPillProps |
| | CourtyardRectProps |
| | CrystalProps |
| | CurrentSourceProps |
| | RectCutoutProps |
| | DiodeProps |
| | FabricationNoteDimensionProps |
| | FabricationNotePathProps |
| | FabricationNoteRectProps |
| | FabricationNoteTextProps |
| | FiducialProps |
| | FootprintProps |
| | FuseProps |
| | BaseGroupProps |
| | CircleHoleProps |
| | InductorProps |
| | InterconnectProps |
| | JumperProps |
| | LedProps |
| | MosfetProps |
| | MountedBoardProps |
| | NetProps |
| | NetAliasProps |
| | NetLabelProps |
| | OpAmpProps |
| | PanelProps |
| | PcbKeepoutProps |
| | PcbNoteDimensionProps |
| | PcbNoteLineProps |
| | PcbNotePathProps |
| | PcbNoteRectProps |
| | PcbNoteTextProps |
| | PcbTraceProps |
| | PinHeaderProps |
| | PinoutProps |
| | CirclePlatedHoleProps |
| | PortProps |
| | PotentiometerProps |
| | PowerSourceProps |
| | PushButtonProps |
| | ResistorProps |
| | ResonatorProps |
| | SchematicArcProps |
| | SchematicBoxProps |
| | SchematicCellProps |
| | SchematicCircleProps |
| | SchematicLineProps |
| | SchematicPathProps |
| | SchematicRectProps |
| | SchematicRowProps |
| | SchematicTableProps |
| | SchematicTextProps |
| | SilkscreenCircleProps |
| | SilkscreenLineProps |
| | SilkscreenPathProps |
| | SilkscreenRectProps |
| | SilkscreenTextProps |
| | RectSmtPadProps |
| | SolderJumperProps |
| | RectSolderPasteProps |
| | StampboardProps |
| | SubcircuitProps |
| | SubpanelProps |
| | SwitchProps |
| | SymbolProps |
| | TestpointProps |
| | ToolingrailProps |
| | TraceProps |
| | TraceHintProps |
| | TransistorProps |
| | ViaProps |
| | VoltageProbeProps |
| | VoltageSourceProps |
`tsx
import { resistorProps, type ResistorProps } from "@tscircuit/props";
// Validate component props
const validatedProps = resistorProps.parse({ resistance: "10k" });
// { resistance: 10000 }
// Type safety
const myResistor: ResistorProps = {
name: "R1",
resistance: 10000,
footprint: "0805",
};
`
Below are the TypeScript interface definitions for all component props:
`ts`
export interface CommonComponentProps extends CommonLayoutProps {
key?: any;
name: string;
pinAttributes?: Record
supplierPartNumbers?: SupplierPartNumbers;
cadModel?: CadModelProp;
children?: any;
symbolName?: string;
doNotPlace?: boolean;
}
`ts
export interface SubcircuitGroupProps extends BaseGroupProps {
manualEdits?: ManualEditsFileInput;
routingDisabled?: boolean;
defaultTraceWidth?: Distance;
minTraceWidth?: Distance;
nominalTraceWidth?: Distance;
pcbRouteCache?: PcbRouteCache;
autorouter?: AutorouterProp;
/**
* If true, we'll automatically layout the schematic for this group. Must be
* a subcircuit (currently). This is eventually going to be replaced with more
* sophisticated layout options/modes and will be enabled by default.
*/
schAutoLayoutEnabled?: boolean;
/**
* If true, net labels will automatically be created for complex traces
*/
schTraceAutoLabelEnabled?: boolean;
/* Maximum length a trace can span on the schematic /
schMaxTraceDistance?: Distance;
partsEngine?: PartsEngine;
}
`
`ts`
export interface AnalogSimulationProps {
simulationType?: "spice_transient_analysis";
duration?: number | string;
timePerStep?: number | string;
spiceEngine?: AutocompleteString<"spicey" | "ngspice">;
}
`ts`
export interface BatteryProps<
PinLabel extends string = string,
> extends CommonComponentProps
capacity?: number | string;
voltage?: number | string;
standard?: "AA" | "AAA" | "9V" | "CR2032" | "18650" | "C";
schOrientation?: SchematicOrientation;
}
`ts`
export interface BoardProps extends Omit<
SubcircuitGroupProps,
"subcircuit" | "connections"
> {
title?: string;
material?: "fr4" | "fr1";
/* Number of layers for the PCB /
layers?: 1 | 2 | 4 | 6 | 8;
borderRadius?: Distance;
thickness?: Distance;
boardAnchorPosition?: Point;
anchorAlignment?: z.infer
boardAnchorAlignment?: z.infer
/* Color applied to both top and bottom solder masks /
solderMaskColor?: BoardColor;
/* Color of the top solder mask /
topSolderMaskColor?: BoardColor;
/* Color of the bottom solder mask /
bottomSolderMaskColor?: BoardColor;
/* Color applied to both top and bottom silkscreens /
silkscreenColor?: BoardColor;
/* Color of the top silkscreen /
topSilkscreenColor?: BoardColor;
/* Color of the bottom silkscreen /
bottomSilkscreenColor?: BoardColor;
/* Whether the board should be assembled on both sides /
doubleSidedAssembly?: boolean;
/* Whether this board should be omitted from the schematic view /
schematicDisabled?: boolean;
}
`ts`
export interface BreakoutProps extends Omit<
SubcircuitGroupProps,
"subcircuit"
> {
padding?: Distance;
paddingLeft?: Distance;
paddingRight?: Distance;
paddingTop?: Distance;
paddingBottom?: Distance;
}
`ts`
export interface BreakoutPointProps extends Omit<
PcbLayoutProps,
"pcbRotation" | "layer"
> {
connection: string;
}
`ts
export interface CadAssemblyProps {
/**
* The layer that the CAD assembly is designed for. If you set this to "top"
* then it means the children were intended to represent the top layer. If
* the
* components will be mirrored.
*
* Generally, you shouldn't set this except where it can help prevent
* confusion because you have a complex multi-layer assembly. Default is
* "top" and this is most intuitive.
*/
originalLayer?: LayerRef;
children?: any;
}
`
`ts`
export interface CadModelProps extends CadModelBase {
modelUrl: string;
stepUrl?: string;
pcbX?: Distance;
pcbY?: Distance;
pcbLeftEdgeX?: Distance;
pcbRightEdgeX?: Distance;
pcbTopEdgeY?: Distance;
pcbBottomEdgeY?: Distance;
pcbOffsetX?: Distance;
pcbOffsetY?: Distance;
pcbZ?: Distance;
}
`ts`
export interface CapacitorProps<
PinLabel extends string = string,
> extends CommonComponentProps
capacitance: number | string;
maxVoltageRating?: number | string;
schShowRatings?: boolean;
polarized?: boolean;
decouplingFor?: string;
decouplingTo?: string;
bypassFor?: string;
bypassTo?: string;
maxDecouplingTraceLength?: number;
schOrientation?: SchematicOrientation;
schSize?: SchematicSymbolSize;
connections?: Connections
}
`ts`
export interface ChipPropsSU<
PinLabel extends SchematicPinLabel = SchematicPinLabel,
> extends CommonComponentProps
manufacturerPartNumber?: string;
pinLabels?: PinLabelsProp
/**
* Whether to show pin aliases in the schematic
*/
showPinAliases?: boolean;
/**
* Labels for PCB pins
*/
pcbPinLabels?: Record
schPinArrangement?: SchematicPortArrangement;
/* @deprecated Use schPinArrangement instead. /
schPortArrangement?: SchematicPortArrangement;
pinCompatibleVariants?: PinCompatibleVariant[];
schPinStyle?: SchematicPinStyle;
schPinSpacing?: Distance;
schWidth?: Distance;
schHeight?: Distance;
noSchematicRepresentation?: boolean;
internallyConnectedPins?: (string | number)[][];
externallyConnectedPins?: string[][];
connections?: Connections
}
`ts`
export interface ConnectorProps extends CommonComponentProps {
manufacturerPartNumber?: string;
pinLabels?: Record<
number | SchematicPinLabel,
SchematicPinLabel | SchematicPinLabel[]
>;
schPinStyle?: SchematicPinStyle;
schPinSpacing?: number | string;
schWidth?: number | string;
schHeight?: number | string;
schDirection?: "left" | "right";
schPortArrangement?: SchematicPortArrangement;
/**
* Groups of pins that are internally connected
* e.g., [["1","2"], ["2","3"]]
*/
internallyConnectedPins?: (string | number)[][];
/**
* Connector standard, e.g. usb_c, m2
*/
standard?: "usb_c" | "m2";
}
`ts`
export interface ConstrainedLayoutProps {
name?: string;
pcbOnly?: boolean;
schOnly?: boolean;
}
`ts
export type ConstraintProps =
| PcbXDistConstraint
| PcbYDistConstraint
| PcbSameYConstraint
| PcbSameXConstraint;
// -----------------------------------------------------------------------------
// Zod
// -----------------------------------------------------------------------------
`
`ts`
export interface CopperPourProps {
name?: string;
layer: LayerRefInput;
connectsTo: string;
padMargin?: Distance;
traceMargin?: Distance;
clearance?: Distance;
boardEdgeMargin?: Distance;
cutoutMargin?: Distance;
outline?: Point[];
coveredWithSolderMask?: boolean;
}
`ts`
export type CopperTextProps = z.input
`ts`
export type CourtyardCircleProps = z.input
`ts`
export type CourtyardOutlineProps = z.input
`ts`
export type CourtyardPillProps = z.input
`ts`
export type CourtyardRectProps = z.input
`ts`
export interface CrystalProps<
PinLabel extends string = string,
> extends CommonComponentProps
frequency: number | string;
loadCapacitance: number | string;
manufacturerPartNumber?: string;
mpn?: string;
pinVariant?: PinVariant;
schOrientation?: SchematicOrientation;
connections?: Connections
}
`ts`
export interface CurrentSourceProps<
PinLabel extends string = string,
> extends CommonComponentProps
current?: number | string;
frequency?: number | string;
peakToPeakCurrent?: number | string;
waveShape?: WaveShape;
phase?: number | string;
dutyCycle?: number | string;
connections?: Connections
}
`ts`
export interface RectCutoutProps extends Omit<
PcbLayoutProps,
"layer" | "pcbRotation"
> {
name?: string;
shape: "rect";
width: Distance;
height: Distance;
}
`ts`
export interface DiodeProps<
PinLabel extends string = string,
> extends CommonComponentProps
connections?: {
anode?: string | string[] | readonly string[];
cathode?: string | string[] | readonly string[];
pin1?: string | string[] | readonly string[];
pin2?: string | string[] | readonly string[];
pos?: string | string[] | readonly string[];
neg?: string | string[] | readonly string[];
};
variant?: "standard" | "schottky" | "zener" | "avalanche" | "photo" | "tvs";
standard?: boolean;
schottky?: boolean;
zener?: boolean;
avalanche?: boolean;
photo?: boolean;
tvs?: boolean;
schOrientation?: SchematicOrientation;
}
`ts`
export interface FabricationNoteDimensionProps extends Omit<
PcbLayoutProps,
| "pcbLeftEdgeX"
| "pcbRightEdgeX"
| "pcbTopEdgeY"
| "pcbBottomEdgeY"
| "pcbX"
| "pcbY"
| "pcbOffsetX"
| "pcbOffsetY"
| "pcbRotation"
> {
from: string | Point;
to: string | Point;
text?: string;
offset?: string | number;
font?: "tscircuit2024";
fontSize?: string | number;
color?: string;
arrowSize?: string | number;
units?: "in" | "mm";
outerEdgeToEdge?: true;
centerToCenter?: true;
innerEdgeToEdge?: true;
}
`ts`
export type FabricationNotePathProps = z.input
`ts`
export type FabricationNoteRectProps = z.input
`ts`
export interface FabricationNoteTextProps extends PcbLayoutProps {
text: string;
anchorAlignment?:
| "center"
| "top_left"
| "top_right"
| "bottom_left"
| "bottom_right";
font?: "tscircuit2024";
fontSize?: string | number;
color?: string;
}
`ts`
export interface FiducialProps extends CommonComponentProps {
soldermaskPullback?: Distance;
padDiameter?: Distance;
}
`ts`
export interface FootprintProps {
children?: any;
/**
* The layer that the footprint is designed for. If you set this to "top"
* then it means the children were intended to represent the top layer. If
* the
* components will be mirrored.
*
* Generally, you shouldn't set this except where it can help prevent
* confusion because you have a complex multi-layer footprint. Default is
* "top" and this is most intuitive.
*/
originalLayer?: LayerRef;
/**
* Serialized circuit JSON describing a precompiled footprint
*/
circuitJson?: any[];
/**
* Can be a footprint or kicad string
*/
src?: FootprintProp;
}
`ts
export interface FuseProps<
PinLabel extends string = string,
> extends CommonComponentProps
/**
* Current rating of the fuse in amperes
*/
currentRating: number | string;
/**
* Voltage rating of the fuse
*/
voltageRating?: number | string;
/**
* Whether to show ratings on schematic
*/
schShowRatings?: boolean;
schOrientation?: SchematicOrientation;
/**
* Connections to other components
*/
connections?: Connections
}
`
`ts
export interface BaseGroupProps extends CommonLayoutProps, LayoutConfig {
name?: string;
key?: any;
children?: any;
pcbStyle?: PcbStyle;
/**
* Title to display above this group in the schematic view
*/
schTitle?: string;
/**
* If true, render this group as a single schematic box
*/
showAsSchematicBox?: boolean;
/**
* Mapping of external pin names to internal connection targets
*/
connections?: Connections;
/**
* Arrangement for pins when rendered as a schematic box
*/
schPinArrangement?: SchematicPinArrangement;
/**
* Spacing between pins when rendered as a schematic box
*/
schPinSpacing?: Distance;
/**
* Styles to apply to individual pins in the schematic box representation
*/
schPinStyle?: SchematicPinStyle;
pcbWidth?: Distance;
pcbHeight?: Distance;
minTraceWidth?: Distance;
nominalTraceWidth?: Distance;
schWidth?: Distance;
schHeight?: Distance;
pcbLayout?: LayoutConfig;
schLayout?: LayoutConfig;
cellBorder?: Border | null;
border?: Border | null;
schPadding?: Distance;
schPaddingLeft?: Distance;
schPaddingRight?: Distance;
schPaddingTop?: Distance;
schPaddingBottom?: Distance;
pcbPadding?: Distance;
pcbPaddingLeft?: Distance;
pcbPaddingRight?: Distance;
pcbPaddingTop?: Distance;
pcbPaddingBottom?: Distance;
/**
* Anchor to use when interpreting pcbX/pcbY/pcbOffsetX/pcbOffsetY relative to pcbPosition
*/
pcbAnchorAlignment?: AutocompleteString
/* @deprecated Use pcbGrid /
grid?: boolean;
/* @deprecated Use pcbFlex /
flex?: boolean | string;
pcbGrid?: boolean;
pcbGridCols?: number | string;
pcbGridRows?: number | string;
pcbGridTemplateRows?: string;
pcbGridTemplateColumns?: string;
pcbGridTemplate?: string;
pcbGridGap?: number | string;
pcbGridRowGap?: number | string;
pcbGridColumnGap?: number | string;
pcbFlex?: boolean | string;
pcbFlexGap?: number | string;
pcbFlexDirection?: "row" | "column";
pcbAlignItems?: "start" | "center" | "end" | "stretch";
pcbJustifyContent?:
| "start"
| "center"
| "end"
| "stretch"
| "space-between"
| "space-around"
| "space-evenly";
pcbFlexRow?: boolean;
pcbFlexColumn?: boolean;
pcbGap?: number | string;
pcbPack?: boolean;
pcbPackGap?: number | string;
schGrid?: boolean;
schGridCols?: number | string;
schGridRows?: number | string;
schGridTemplateRows?: string;
schGridTemplateColumns?: string;
schGridTemplate?: string;
schGridGap?: number | string;
schGridRowGap?: number | string;
schGridColumnGap?: number | string;
schFlex?: boolean | string;
schFlexGap?: number | string;
schFlexDirection?: "row" | "column";
schAlignItems?: "start" | "center" | "end" | "stretch";
schJustifyContent?:
| "start"
| "center"
| "end"
| "stretch"
| "space-between"
| "space-around"
| "space-evenly";
schFlexRow?: boolean;
schFlexColumn?: boolean;
schGap?: number | string;
schPack?: boolean;
schMatchAdapt?: boolean;
}
`
`ts`
export interface CircleHoleProps extends PcbLayoutProps {
name?: string;
shape?: "circle";
diameter?: Distance;
radius?: Distance;
solderMaskMargin?: Distance;
coveredWithSolderMask?: boolean;
}
`ts`
export interface InductorProps<
PinLabel extends string = string,
> extends CommonComponentProps
inductance: number | string;
maxCurrentRating?: number | string;
schOrientation?: SchematicOrientation;
connections?: Connections
}
`ts`
export interface InterconnectProps extends CommonComponentProps {
standard?: "TSC0001_36P_XALT_2025_11" | "0805" | "0603" | "1206";
pinLabels?: Record<
number | SchematicPinLabel,
SchematicPinLabel | SchematicPinLabel[]
>;
/**
* Groups of pins that are internally connected
* e.g., [["1","2"], ["2","3"]]
*/
internallyConnectedPins?: (string | number)[][];
}
`ts`
export interface JumperProps extends CommonComponentProps {
manufacturerPartNumber?: string;
pinLabels?: Record<
number | SchematicPinLabel,
SchematicPinLabel | SchematicPinLabel[]
>;
schPinStyle?: SchematicPinStyle;
schPinSpacing?: number | string;
schWidth?: number | string;
schHeight?: number | string;
schDirection?: "left" | "right";
schPinArrangement?: SchematicPortArrangement;
/**
* @deprecated Use schPinArrangement instead.
*/
schPortArrangement?: SchematicPortArrangement;
/**
* Labels for PCB pins
*/
pcbPinLabels?: Record
/**
* Number of pins on the jumper (2 or 3)
*/
pinCount?: 2 | 3;
/**
* Groups of pins that are internally connected
* e.g., [["1","2"], ["2","3"]]
*/
internallyConnectedPins?: (string | number)[][];
/**
* Connections to other components
*/
connections?: Connections
}
`ts`
export type LedProps = z.input
`ts`
export interface MosfetProps<
PinLabel extends string = string,
> extends CommonComponentProps
channelType: "n" | "p";
mosfetMode: "enhancement" | "depletion";
}
`ts`
export interface MountedBoardProps extends SubcircuitGroupProps {
boardToBoardDistance?: Distance;
mountOrientation?: "faceDown" | "faceUp";
}
`ts`
export interface NetProps {
name: string;
connectsTo?: string | string[];
highlightColor?: string;
isPowerNet?: boolean;
isGroundNet?: boolean;
}
`ts`
export interface NetAliasProps {
net?: string;
connection?: string;
schX?: number | string;
schY?: number | string;
schRotation?: number | string;
anchorSide?: "left" | "top" | "right" | "bottom";
}
`ts`
export interface NetLabelProps {
net?: string;
connection?: string;
connectsTo?: string | string[];
schX?: number | string;
schY?: number | string;
schRotation?: number | string;
anchorSide?: "left" | "top" | "right" | "bottom";
}
`ts`
export interface OpAmpProps<
PinLabel extends string = string,
> extends CommonComponentProps
connections?: Connections
}
`ts`
export interface PanelProps extends Omit<
BaseGroupProps,
"height" | "layoutMode" | "width"
> {
width?: Distance;
height?: Distance;
children?: BaseGroupProps["children"];
anchorAlignment?: z.infer
/**
* If true, prevent a solder mask from being applied to this panel.
*/
noSolderMask?: boolean;
/* Method for panelization /
panelizationMethod?: "tab-routing" | "none";
/* Gap between boards in a panel /
boardGap?: Distance;
layoutMode?: "grid" | "pack" | "none";
row?: number;
col?: number;
cellWidth?: Distance;
cellHeight?: Distance;
tabWidth?: Distance;
tabLength?: Distance;
mouseBites?: boolean;
edgePadding?: Distance;
edgePaddingLeft?: Distance;
edgePaddingRight?: Distance;
edgePaddingTop?: Distance;
edgePaddingBottom?: Distance;
}
`ts`
export type PcbKeepoutProps = z.input
`ts`
export interface PcbNoteDimensionProps extends Omit<
PcbLayoutProps,
| "pcbLeftEdgeX"
| "pcbRightEdgeX"
| "pcbTopEdgeY"
| "pcbBottomEdgeY"
| "pcbX"
| "pcbY"
| "pcbOffsetX"
| "pcbOffsetY"
| "pcbRotation"
> {
from: string | Point;
to: string | Point;
text?: string;
offset?: string | number;
font?: "tscircuit2024";
fontSize?: string | number;
color?: string;
arrowSize?: string | number;
units?: "in" | "mm";
outerEdgeToEdge?: true;
centerToCenter?: true;
innerEdgeToEdge?: true;
}
`ts`
export interface PcbNoteLineProps extends Omit<
PcbLayoutProps,
| "pcbLeftEdgeX"
| "pcbRightEdgeX"
| "pcbTopEdgeY"
| "pcbBottomEdgeY"
| "pcbX"
| "pcbY"
| "pcbOffsetX"
| "pcbOffsetY"
| "pcbRotation"
> {
x1: string | number;
y1: string | number;
x2: string | number;
y2: string | number;
strokeWidth?: string | number;
color?: string;
isDashed?: boolean;
}
`ts`
export interface PcbNotePathProps extends Omit<
PcbLayoutProps,
| "pcbLeftEdgeX"
| "pcbRightEdgeX"
| "pcbTopEdgeY"
| "pcbBottomEdgeY"
| "pcbX"
| "pcbY"
| "pcbOffsetX"
| "pcbOffsetY"
| "pcbRotation"
> {
route: RouteHintPointInput[];
strokeWidth?: string | number;
color?: string;
}
`ts`
export interface PcbNoteRectProps extends Omit
width: string | number;
height: string | number;
strokeWidth?: string | number;
isFilled?: boolean;
hasStroke?: boolean;
isStrokeDashed?: boolean;
color?: string;
cornerRadius?: string | number;
}
`ts`
export interface PcbNoteTextProps extends PcbLayoutProps {
text: string;
anchorAlignment?:
| "center"
| "top_left"
| "top_right"
| "bottom_left"
| "bottom_right";
font?: "tscircuit2024";
fontSize?: string | number;
color?: string;
}
`ts`
export type PcbTraceProps = z.input
`ts
export interface PinHeaderProps extends CommonComponentProps {
/**
* Number of pins in the header
*/
pinCount: number;
/**
* Distance between pins
*/
pitch?: number | string;
/**
* Schematic facing direction
*/
schFacingDirection?: "up" | "down" | "left" | "right";
/**
* Whether the header is male, female, or unpopulated
*/
gender?: "male" | "female" | "unpopulated";
/**
* Whether to show pin labels in silkscreen
*/
showSilkscreenPinLabels?: boolean;
/**
* Labels for PCB pins
*/
pcbPinLabels?: Record
/**
* Whether the header has two rows of pins
*/
doubleRow?: boolean;
/**
* If true, the header is a right-angle style connector
*/
rightAngle?: boolean;
/**
* Orientation of the header on the PCB
*/
pcbOrientation?: PcbOrientation;
/**
* Diameter of the through-hole for each pin
*/
holeDiameter?: number | string;
/**
* Diameter of the plated area around each hole
*/
platedDiameter?: number | string;
/**
* Labels for each pin
*/
pinLabels?: Record
/**
* Connections to other components
*/
connections?: Connections
/**
* Direction the header is facing
*/
facingDirection?: "left" | "right";
/**
* Pin arrangement in schematic view
*/
schPinArrangement?: SchematicPinArrangement;
/**
* Schematic pin style (margins, etc)
*/
schPinStyle?: SchematicPinStyle;
/**
* Schematic pin spacing
*/
schPinSpacing?: number | string;
/**
* Schematic width
*/
schWidth?: number | string;
/**
* Schematic height
*/
schHeight?: number | string;
}
`
`ts`
export interface CirclePlatedHoleProps extends Omit<
PcbLayoutProps,
"pcbRotation" | "layer"
> {
name?: string;
connectsTo?: string | string[];
shape: "circle";
holeDiameter: number | string;
outerDiameter: number | string;
padDiameter?: number | string;
portHints?: PortHints;
solderMaskMargin?: Distance;
coveredWithSolderMask?: boolean;
}
`ts`
export type PortProps = z.input
`ts`
export interface PotentiometerProps extends CommonComponentProps {
maxResistance: number | string;
pinVariant?: PotentiometerPinVariant;
}
`ts`
export type PowerSourceProps = z.input
`ts`
export type PushButtonProps
ChipProps
`ts`
export interface ResistorProps<
PinLabel extends string = string,
> extends CommonComponentProps
resistance: number | string;
tolerance?: number | string;
pullupFor?: string;
pullupTo?: string;
pulldownFor?: string;
pulldownTo?: string;
schOrientation?: SchematicOrientation;
schSize?: SchematicSymbolSize;
connections?: Connections
}
`ts`
export interface ResonatorProps extends CommonComponentProps {
frequency: number | string;
loadCapacitance: number | string;
pinVariant?: ResonatorPinVariant;
}
`ts`
export interface SchematicArcProps {
center: Point;
radius: Distance;
startAngleDegrees: number | string;
endAngleDegrees: number | string;
direction?: "clockwise" | "counterclockwise";
strokeWidth?: Distance;
color?: string;
isDashed?: boolean;
}
`ts`
export interface SchematicBoxProps {
schX?: Distance;
schY?: Distance;
width?: Distance;
height?: Distance;
overlay?: string[];
padding?: Distance;
paddingLeft?: Distance;
paddingRight?: Distance;
paddingTop?: Distance;
paddingBottom?: Distance;
title?: string;
titleAlignment?: z.infer
titleColor?: string;
titleFontSize?: Distance;
titleInside?: boolean;
strokeStyle?: "solid" | "dashed";
}
`ts`
export interface SchematicCellProps {
children?: string;
horizontalAlign?: "left" | "center" | "right";
verticalAlign?: "top" | "middle" | "bottom";
fontSize?: number | string;
rowSpan?: number;
colSpan?: number;
width?: number | string;
text?: string;
}
`ts`
export interface SchematicCircleProps {
center: Point;
radius: Distance;
strokeWidth?: Distance;
color?: string;
isFilled?: boolean;
fillColor?: string;
isDashed?: boolean;
}
`ts`
export interface SchematicLineProps {
x1: Distance;
y1: Distance;
x2: Distance;
y2: Distance;
strokeWidth?: Distance;
color?: string;
isDashed?: boolean;
}
`ts`
export interface SchematicPathProps {
points?: Point[];
svgPath?: string;
strokeWidth?: Distance;
strokeColor?: string;
isFilled?: boolean;
fillColor?: string;
}
`ts`
export interface SchematicRectProps {
schX?: Distance;
schY?: Distance;
width: Distance;
height: Distance;
rotation?: number | string;
strokeWidth?: Distance;
color?: string;
isFilled?: boolean;
fillColor?: string;
isDashed?: boolean;
cornerRadius?: Distance;
}
`ts`
export interface SchematicRowProps {
children?: any;
height?: number | string;
}
`ts`
export interface SchematicTableProps {
schX?: number | string;
schY?: number | string;
children?: any;
cellPadding?: number | string;
borderWidth?: number | string;
anchor?: z.infer
fontSize?: number | string;
}
`ts`
export interface SchematicTextProps {
schX?: Distance;
schY?: Distance;
text: string;
fontSize?: number;
anchor?: z.infer
color?: string;
schRotation?: number | string;
}
`ts`
export type SilkscreenCircleProps = z.input
`ts`
export type SilkscreenLineProps = z.input
`ts`
export type SilkscreenPathProps = z.input
`ts`
export type SilkscreenRectProps = z.input
`ts`
export type SilkscreenTextProps = z.input
`ts`
export interface RectSmtPadProps extends Omit
name?: string;
shape: "rect";
width: Distance;
height: Distance;
rectBorderRadius?: Distance;
cornerRadius?: Distance;
portHints?: PortHints;
coveredWithSolderMask?: boolean;
solderMaskMargin?: Distance;
solderMaskMarginLeft?: Distance;
solderMaskMarginRight?: Distance;
solderMaskMarginTop?: Distance;
solderMaskMarginBottom?: Distance;
}
`ts`
export interface SolderJumperProps extends JumperProps {
/**
* Pins that are bridged with solder by default
*/
bridgedPins?: string[][];
/**
* If true, all pins are connected with cuttable traces
*/
bridged?: boolean;
}
`ts`
export interface RectSolderPasteProps extends Omit<
PcbLayoutProps,
"pcbRotation"
> {
shape: "rect";
width: Distance;
height: Distance;
}
`ts`
export interface StampboardProps extends BoardProps {
leftPinCount?: number;
rightPinCount?: number;
topPinCount?: number;
bottomPinCount?: number;
leftPins?: string[];
rightPins?: string[];
topPins?: string[];
bottomPins?: string[];
pinPitch?: number | string;
innerHoles?: boolean;
}
`ts`
export type SubcircuitProps = SubcircuitGroupProps;
`ts`
export interface SwitchProps extends CommonComponentProps {
type?: "spst" | "spdt" | "dpst" | "dpdt";
isNormallyClosed?: boolean;
spdt?: boolean;
spst?: boolean;
dpst?: boolean;
dpdt?: boolean;
simSwitchFrequency?: number | string;
simCloseAt?: number | string;
simOpenAt?: number | string;
simStartClosed?: boolean;
simStartOpen?: boolean;
connections?: Connections
}
`ts`
export interface SymbolProps {
/**
* The facing direction that the symbol is designed for. If you set this to "right",
* then it means the children were intended to represent the symbol facing right.
* Generally, you shouldn't set this except where it can help prevent confusion
* because you have a complex symbol. Default is "right" and this is most intuitive.
*/
originalFacingDirection?: "up" | "down" | "left" | "right";
width?: string | number;
height?: string | number;
name?: string;
}
`ts`
export interface TestpointProps extends CommonComponentProps {
/**
* The footprint variant of the testpoint either a surface pad or through-hole
*/
footprintVariant?: "pad" | "through_hole";
/**
* The shape of the pad if using a pad variant
*/
padShape?: "rect" | "circle";
/**
* Diameter of the copper pad (applies to both SMD pads and plated holes)
*/
padDiameter?: number | string;
/**
* Diameter of the hole if using a through-hole testpoint
*/
holeDiameter?: number | string;
/**
* Width of the pad when padShape is rect
*/
width?: number | string;
/**
* Height of the pad when padShape is rect
*/
height?: number | string;
connections?: TestpointConnections;
}
`ts`
export interface ToolingrailProps {
children?: any;
}
`ts`
export type TraceProps = z.input
`ts`
export type TraceHintProps = z.input
`ts`
export interface TransistorProps<
PinLabel extends string = string,
> extends CommonComponentProps
type: "npn" | "pnp" | "bjt" | "jfet" | "mosfet" | "igbt";
connections?: Connections
}
`ts`
export interface ViaProps extends CommonLayoutProps {
name?: string;
fromLayer: LayerRefInput;
toLayer: LayerRefInput;
holeDiameter?: number | string;
outerDiameter?: number | string;
connectsTo?: string | string[];
netIsAssignable?: boolean;
}
`ts`
export interface VoltageProbeProps extends Omit
name?: string;
connectsTo: string;
referenceTo?: string;
color?: string;
}
`ts`
export interface VoltageSourceProps<
PinLabel extends string = string,
> extends CommonComponentProps
voltage?: number | string;
frequency?: number | string;
peakToPeakVoltage?: number | string;
waveShape?: WaveShape;
phase?: number | string;
dutyCycle?: number | string;
connections?: Connections
}
`ts
export interface PlatformConfig {
partsEngine?: PartsEngine;
autorouter?: AutorouterProp;
autorouterMap?: Record
// TODO this follows a subset of the localStorage interface
localCacheEngine?: any;
registryApiUrl?: string;
cloudAutorouterUrl?: string;
projectName?: string;
projectBaseUrl?: string;
version?: string;
url?: string;
printBoardInformationToSilkscreen?: boolean;
includeBoardFiles?: string[];
snapshotsDir?: string;
defaultSpiceEngine?: AutocompleteString<"spicey" | "ngspice">;
pcbDisabled?: boolean;
schematicDisabled?: boolean;
partsEngineDisabled?: boolean;
spiceEngineMap?: Record
footprintLibraryMap?: Record<
string,
| ((
path: string,
options?: { resolvedPcbStyle?: PcbStyle },
) => Promise
| Record<
string,
| any[]
| ((
path: string,
options?: { resolvedPcbStyle?: PcbStyle },
) => Promise
>
>;
footprintFileParserMap?: Record
resolveProjectStaticFileImportUrl?: (path: string) => Promise
nodeModulesResolver?: (modulePath: string) => Promise
platformFetch?: typeof fetch;
}
`
`ts``
export interface ProjectConfig extends Pick<
PlatformConfig,
| "projectName"
| "projectBaseUrl"
| "version"
| "url"
| "printBoardInformationToSilkscreen"
| "includeBoardFiles"
| "snapshotsDir"
| "defaultSpiceEngine"
> {}