From f018467ef809f11bed56dd938637c7df875499ce Mon Sep 17 00:00:00 2001 From: seveibar Date: Sun, 2 Aug 2026 12:50:51 -0700 Subject: [PATCH 1/8] Add 20 researched header modules with snapshots --- bun.lock | 11 +- index.ts | 20 + lib/AdafruitFeatherESP32S3TFT.tsx | 176 +++++++++ lib/AdafruitFeatherRP2350.tsx | 173 +++++++++ lib/AdafruitItsyBitsyESP32.tsx | 175 +++++++++ lib/AdafruitItsyBitsyM0Express.tsx | 165 ++++++++ lib/AdafruitItsyBitsyM4Express.tsx | 165 ++++++++ lib/AdafruitItsyBitsyNRF52840Express.tsx | 179 +++++++++ lib/AdafruitItsyBitsyRP2040.tsx | 160 ++++++++ lib/AdafruitQTPyESP32S2.tsx | 119 ++++++ lib/AdafruitQTPyESP32S3.tsx | 119 ++++++ lib/AdafruitQTPyNRF52840.tsx | 125 ++++++ lib/AdafruitQTPyRP2350.tsx | 124 ++++++ lib/AdafruitQTPySAMD21.tsx | 102 +++++ lib/ArduinoNano33BLE.tsx | 188 +++++++++ lib/ArduinoNano33BLESenseRev2.tsx | 190 +++++++++ lib/ArduinoNano33IoT.tsx | 188 +++++++++ lib/ArduinoNanoATmega328P.tsx | 190 +++++++++ lib/ArduinoNanoESP32.tsx | 188 +++++++++ lib/ArduinoNanoEvery.tsx | 188 +++++++++ lib/ArduinoNanoMatter.tsx | 180 +++++++++ lib/ArduinoNanoRP2040Connect.tsx | 182 +++++++++ lib/generatedModules.tsx | 360 ------------------ package.json | 7 +- tests/AdafruitFeatherESP32S3TFT.test.tsx | 15 + tests/AdafruitFeatherRP2350.test.tsx | 15 + tests/AdafruitItsyBitsyESP32.test.tsx | 15 + tests/AdafruitItsyBitsyM0Express.test.tsx | 15 + tests/AdafruitItsyBitsyM4Express.test.tsx | 15 + .../AdafruitItsyBitsyNRF52840Express.test.tsx | 17 + tests/AdafruitItsyBitsyRP2040.test.tsx | 15 + tests/AdafruitQTPyESP32S2.test.tsx | 15 + tests/AdafruitQTPyESP32S3.test.tsx | 15 + tests/AdafruitQTPyNRF52840.test.tsx | 15 + tests/AdafruitQTPyRP2350.test.tsx | 15 + tests/AdafruitQTPySAMD21.test.tsx | 15 + tests/ArduinoNano33BLE.test.tsx | 15 + tests/ArduinoNano33BLESenseRev2.test.tsx | 15 + tests/ArduinoNano33IoT.test.tsx | 15 + tests/ArduinoNanoATmega328P.test.tsx | 15 + tests/ArduinoNanoESP32.test.tsx | 15 + tests/ArduinoNanoEvery.test.tsx | 15 + tests/ArduinoNanoMatter.test.tsx | 15 + tests/ArduinoNanoRP2040Connect.test.tsx | 15 + .../AdafruitFeatherESP32S3TFT-pcb.snap.svg | 1 + ...afruitFeatherESP32S3TFT-schematic.snap.svg | 12 + .../AdafruitFeatherRP2350-pcb.snap.svg | 1 + .../AdafruitFeatherRP2350-schematic.snap.svg | 12 + .../AdafruitItsyBitsyESP32-pcb.snap.svg | 1 + .../AdafruitItsyBitsyESP32-schematic.snap.svg | 12 + .../AdafruitItsyBitsyM0Express-pcb.snap.svg | 1 + ...fruitItsyBitsyM0Express-schematic.snap.svg | 12 + .../AdafruitItsyBitsyM4Express-pcb.snap.svg | 1 + ...fruitItsyBitsyM4Express-schematic.snap.svg | 12 + ...fruitItsyBitsyNRF52840Express-pcb.snap.svg | 1 + ...tsyBitsyNRF52840Express-schematic.snap.svg | 12 + .../AdafruitItsyBitsyRP2040-pcb.snap.svg | 1 + ...AdafruitItsyBitsyRP2040-schematic.snap.svg | 12 + .../AdafruitQTPyESP32S2-pcb.snap.svg | 1 + .../AdafruitQTPyESP32S2-schematic.snap.svg | 12 + .../AdafruitQTPyESP32S3-pcb.snap.svg | 1 + .../AdafruitQTPyESP32S3-schematic.snap.svg | 12 + .../AdafruitQTPyNRF52840-pcb.snap.svg | 1 + .../AdafruitQTPyNRF52840-schematic.snap.svg | 12 + .../AdafruitQTPyRP2350-pcb.snap.svg | 1 + .../AdafruitQTPyRP2350-schematic.snap.svg | 12 + .../AdafruitQTPySAMD21-pcb.snap.svg | 1 + .../AdafruitQTPySAMD21-schematic.snap.svg | 12 + .../ArduinoNano33BLE-pcb.snap.svg | 1 + .../ArduinoNano33BLE-schematic.snap.svg | 12 + .../ArduinoNano33BLESenseRev2-pcb.snap.svg | 1 + ...duinoNano33BLESenseRev2-schematic.snap.svg | 12 + .../ArduinoNano33IoT-pcb.snap.svg | 1 + .../ArduinoNano33IoT-schematic.snap.svg | 12 + .../ArduinoNanoATmega328P-pcb.snap.svg | 1 + .../ArduinoNanoATmega328P-schematic.snap.svg | 12 + .../ArduinoNanoESP32-pcb.snap.svg | 1 + .../ArduinoNanoESP32-schematic.snap.svg | 12 + .../ArduinoNanoEvery-pcb.snap.svg | 1 + .../ArduinoNanoEvery-schematic.snap.svg | 12 + .../ArduinoNanoMatter-pcb.snap.svg | 1 + .../ArduinoNanoMatter-schematic.snap.svg | 12 + .../ArduinoNanoRP2040Connect-pcb.snap.svg | 1 + ...rduinoNanoRP2040Connect-schematic.snap.svg | 12 + 84 files changed, 3872 insertions(+), 364 deletions(-) create mode 100644 lib/AdafruitFeatherESP32S3TFT.tsx create mode 100644 lib/AdafruitFeatherRP2350.tsx create mode 100644 lib/AdafruitItsyBitsyESP32.tsx create mode 100644 lib/AdafruitItsyBitsyM0Express.tsx create mode 100644 lib/AdafruitItsyBitsyM4Express.tsx create mode 100644 lib/AdafruitItsyBitsyNRF52840Express.tsx create mode 100644 lib/AdafruitItsyBitsyRP2040.tsx create mode 100644 lib/AdafruitQTPyESP32S2.tsx create mode 100644 lib/AdafruitQTPyESP32S3.tsx create mode 100644 lib/AdafruitQTPyNRF52840.tsx create mode 100644 lib/AdafruitQTPyRP2350.tsx create mode 100644 lib/AdafruitQTPySAMD21.tsx create mode 100644 lib/ArduinoNano33BLE.tsx create mode 100644 lib/ArduinoNano33BLESenseRev2.tsx create mode 100644 lib/ArduinoNano33IoT.tsx create mode 100644 lib/ArduinoNanoATmega328P.tsx create mode 100644 lib/ArduinoNanoESP32.tsx create mode 100644 lib/ArduinoNanoEvery.tsx create mode 100644 lib/ArduinoNanoMatter.tsx create mode 100644 lib/ArduinoNanoRP2040Connect.tsx create mode 100644 tests/AdafruitFeatherESP32S3TFT.test.tsx create mode 100644 tests/AdafruitFeatherRP2350.test.tsx create mode 100644 tests/AdafruitItsyBitsyESP32.test.tsx create mode 100644 tests/AdafruitItsyBitsyM0Express.test.tsx create mode 100644 tests/AdafruitItsyBitsyM4Express.test.tsx create mode 100644 tests/AdafruitItsyBitsyNRF52840Express.test.tsx create mode 100644 tests/AdafruitItsyBitsyRP2040.test.tsx create mode 100644 tests/AdafruitQTPyESP32S2.test.tsx create mode 100644 tests/AdafruitQTPyESP32S3.test.tsx create mode 100644 tests/AdafruitQTPyNRF52840.test.tsx create mode 100644 tests/AdafruitQTPyRP2350.test.tsx create mode 100644 tests/AdafruitQTPySAMD21.test.tsx create mode 100644 tests/ArduinoNano33BLE.test.tsx create mode 100644 tests/ArduinoNano33BLESenseRev2.test.tsx create mode 100644 tests/ArduinoNano33IoT.test.tsx create mode 100644 tests/ArduinoNanoATmega328P.test.tsx create mode 100644 tests/ArduinoNanoESP32.test.tsx create mode 100644 tests/ArduinoNanoEvery.test.tsx create mode 100644 tests/ArduinoNanoMatter.test.tsx create mode 100644 tests/ArduinoNanoRP2040Connect.test.tsx create mode 100644 tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg create mode 100644 tests/__snapshots__/AdafruitFeatherESP32S3TFT-schematic.snap.svg create mode 100644 tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg create mode 100644 tests/__snapshots__/AdafruitFeatherRP2350-schematic.snap.svg create mode 100644 tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg create mode 100644 tests/__snapshots__/AdafruitItsyBitsyESP32-schematic.snap.svg create mode 100644 tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg create mode 100644 tests/__snapshots__/AdafruitItsyBitsyM0Express-schematic.snap.svg create mode 100644 tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg create mode 100644 tests/__snapshots__/AdafruitItsyBitsyM4Express-schematic.snap.svg create mode 100644 tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg create mode 100644 tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-schematic.snap.svg create mode 100644 tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg create mode 100644 tests/__snapshots__/AdafruitItsyBitsyRP2040-schematic.snap.svg create mode 100644 tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg create mode 100644 tests/__snapshots__/AdafruitQTPyESP32S2-schematic.snap.svg create mode 100644 tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg create mode 100644 tests/__snapshots__/AdafruitQTPyESP32S3-schematic.snap.svg create mode 100644 tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg create mode 100644 tests/__snapshots__/AdafruitQTPyNRF52840-schematic.snap.svg create mode 100644 tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg create mode 100644 tests/__snapshots__/AdafruitQTPyRP2350-schematic.snap.svg create mode 100644 tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg create mode 100644 tests/__snapshots__/AdafruitQTPySAMD21-schematic.snap.svg create mode 100644 tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg create mode 100644 tests/__snapshots__/ArduinoNano33BLE-schematic.snap.svg create mode 100644 tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg create mode 100644 tests/__snapshots__/ArduinoNano33BLESenseRev2-schematic.snap.svg create mode 100644 tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg create mode 100644 tests/__snapshots__/ArduinoNano33IoT-schematic.snap.svg create mode 100644 tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg create mode 100644 tests/__snapshots__/ArduinoNanoATmega328P-schematic.snap.svg create mode 100644 tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg create mode 100644 tests/__snapshots__/ArduinoNanoESP32-schematic.snap.svg create mode 100644 tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg create mode 100644 tests/__snapshots__/ArduinoNanoEvery-schematic.snap.svg create mode 100644 tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg create mode 100644 tests/__snapshots__/ArduinoNanoMatter-schematic.snap.svg create mode 100644 tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg create mode 100644 tests/__snapshots__/ArduinoNanoRP2040Connect-schematic.snap.svg diff --git a/bun.lock b/bun.lock index 8d0f33f..2b86037 100644 --- a/bun.lock +++ b/bun.lock @@ -9,11 +9,16 @@ "@tscircuit/props": "^0.0.604", "@types/bun": "^1.3.14", "@types/react": "^19.2.18", + "bun-match-svg": "^0.0.15", + "sharp": "0.32.6", "tscircuit": "^0.0.2193", "typescript": "^5.0.0", }, }, }, + "trustedDependencies": [ + "sharp", + ], "patchedDependencies": { "@tscircuit/footprinter@0.0.387": "patches/@tscircuit%2Ffootprinter@0.0.387.patch", }, @@ -292,7 +297,7 @@ "color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="], - "color-convert": ["color-convert@0.5.3", "", {}, "sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling=="], + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], "color-diff": ["color-diff@1.4.0", "", {}, "sha512-4oDB/o78lNdppbaqrg0HjOp7pHmUc+dfCxWKWFnQg6AB/1dkjtBDop3RZht5386cq9xBUDRvDvSCA7WUlM9Jqw=="], @@ -654,10 +659,10 @@ "circuit-json-to-spice/circuit-json-to-connectivity-map": ["circuit-json-to-connectivity-map@0.0.22", "", { "dependencies": { "@tscircuit/math-utils": "^0.0.9" }, "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-HN8DiISjZZLTglGEkYNRpKeQ/DMG4dDo5j4Hck0UGSJbpux9aFwtJOGszMf06Inh/gu5oKBrpZJIeWxaNacKUg=="], - "color/color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], - "graphics-debug/transformation-matrix": ["transformation-matrix@3.1.0", "", {}, "sha512-oYubRWTi2tYFHAL2J8DLvPIqIYcYZ0fSOi2vmSy042Ho4jBW2ce6VP7QfD44t65WQz6bw5w1Pk22J7lcUpaTKA=="], + "parse-color/color-convert": ["color-convert@0.5.3", "", {}, "sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling=="], + "prebuild-install/tar-fs": ["tar-fs@2.1.5", "", { "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^2.1.4" } }, "sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw=="], "react-reconciler/scheduler": ["scheduler@0.26.0", "", {}, "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA=="], diff --git a/index.ts b/index.ts index 96f5b8d..ab93874 100644 --- a/index.ts +++ b/index.ts @@ -5,7 +5,27 @@ export * from "./lib/AdafruitFeatherSTM32F405Express" export * from "./lib/AdafruitFeatherESP32V2" export * from "./lib/AdafruitFeatherESP32S2" export * from "./lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM" +export * from "./lib/AdafruitFeatherESP32S3TFT" export * from "./lib/AdafruitFeatherRP2040" +export * from "./lib/AdafruitFeatherRP2350" +export * from "./lib/AdafruitItsyBitsyESP32" +export * from "./lib/AdafruitItsyBitsyM0Express" +export * from "./lib/AdafruitItsyBitsyM4Express" +export * from "./lib/AdafruitItsyBitsyNRF52840Express" +export * from "./lib/AdafruitItsyBitsyRP2040" +export * from "./lib/AdafruitQTPyESP32S2" +export * from "./lib/AdafruitQTPyESP32S3" +export * from "./lib/AdafruitQTPyNRF52840" +export * from "./lib/AdafruitQTPyRP2350" +export * from "./lib/AdafruitQTPySAMD21" +export * from "./lib/ArduinoNano33BLE" +export * from "./lib/ArduinoNano33BLESenseRev2" +export * from "./lib/ArduinoNano33IoT" +export * from "./lib/ArduinoNanoATmega328P" +export * from "./lib/ArduinoNanoESP32" +export * from "./lib/ArduinoNanoEvery" +export * from "./lib/ArduinoNanoMatter" +export * from "./lib/ArduinoNanoRP2040Connect" export * from "./lib/generatedModules" export * from "./lib/PololuA4988StepperMotorDriverCarrier" export * from "./lib/SeeedXiaoRP2040" diff --git a/lib/AdafruitFeatherESP32S3TFT.tsx b/lib/AdafruitFeatherESP32S3TFT.tsx new file mode 100644 index 0000000..c3434d1 --- /dev/null +++ b/lib/AdafruitFeatherESP32S3TFT.tsx @@ -0,0 +1,176 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Adafruit ESP32-S3 TFT Feather: the two populated Feather header rows. */ +export const ADAFRUIT_FEATHER_ESP32_S3_TFT_FOOTPRINT = + "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const + +export const ADAFRUIT_FEATHER_ESP32_S3_TFT_PIN_LABELS = { + pin1: ["VBAT"], + pin2: ["EN"], + pin3: ["VBUS"], + pin4: ["D13", "GPIO48"], + pin5: ["D12", "GPIO47"], + pin6: ["D11", "GPIO38"], + pin7: ["D10", "GPIO21"], + pin8: ["D9", "GPIO18"], + pin9: ["D6", "GPIO9"], + pin10: ["D5", "GPIO8"], + pin11: ["SCL", "GPIO4"], + pin12: ["SDA", "GPIO3"], + pin13: ["RESET", "RST"], + pin14: ["3V3", "3.3V"], + pin15: ["3V3_2", "3.3V"], + pin16: ["GND"], + pin17: ["A0"], + pin18: ["A1"], + pin19: ["A2"], + pin20: ["A3"], + pin21: ["A4"], + pin22: ["A5"], + pin23: ["SCK"], + pin24: ["MOSI"], + pin25: ["MISO"], + pin26: ["RX"], + pin27: ["TX"], + pin28: ["TXD0", "DEBUG_TX"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap + +const I2C_SCL = { ...GPIO, capabilities: ["i2c_scl"] } satisfies PinAttributeMap +const I2C_SDA = { ...GPIO, capabilities: ["i2c_sda"] } satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap + +export const ADAFRUIT_FEATHER_ESP32_S3_TFT_PIN_ATTRIBUTES = { + VBAT: { providesPower: true, includeInBoardPinout: true }, + EN: { includeInBoardPinout: true }, + VBUS: { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + D13: GPIO, + D12: GPIO, + D11: GPIO, + D10: GPIO, + D9: GPIO, + D6: GPIO, + D5: GPIO, + SCL: I2C_SCL, + SDA: I2C_SDA, + RESET: { includeInBoardPinout: true }, + "3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + "3V3_2": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + A4: GPIO, + A5: GPIO, + SCK: SPI_SCK, + MOSI: SPI_MOSI, + MISO: SPI_MISO, + RX: UART_RX, + TX: UART_TX, + TXD0: { capabilities: ["uart_tx"], includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type AdafruitFeatherESP32S3TFTProps = Omit< + ChipProps, + FixedProps +> + +export const AdafruitFeatherESP32S3TFT = ( + props: AdafruitFeatherESP32S3TFTProps, +) => ( + +) diff --git a/lib/AdafruitFeatherRP2350.tsx b/lib/AdafruitFeatherRP2350.tsx new file mode 100644 index 0000000..e2b16e5 --- /dev/null +++ b/lib/AdafruitFeatherRP2350.tsx @@ -0,0 +1,173 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Adafruit Feather RP2350 socket: one 12-pin row and one 16-pin row. */ +export const ADAFRUIT_FEATHER_RP2350_FOOTPRINT = + "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const + +export const ADAFRUIT_FEATHER_RP2350_PIN_LABELS = { + pin1: ["VBAT"], + pin2: ["EN"], + pin3: ["VBUS"], + pin4: ["D7"], + pin5: ["D4"], + pin6: ["D11"], + pin7: ["D10"], + pin8: ["D9"], + pin9: ["D6"], + pin10: ["D5"], + pin11: ["SCL"], + pin12: ["SDA"], + pin13: ["RESET", "RUN", "RST"], + pin14: ["3V3"], + pin15: ["3V3_2", "3V3"], + pin16: ["GND"], + pin17: ["A0"], + pin18: ["A1"], + pin19: ["A2"], + pin20: ["A3"], + pin21: ["D24"], + pin22: ["D25"], + pin23: ["SCK"], + pin24: ["MOSI"], + pin25: ["MISO"], + pin26: ["RX"], + pin27: ["TX"], + pin28: ["PSRAM_CS"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SCL = { ...GPIO, capabilities: ["i2c_scl"] } satisfies PinAttributeMap +const I2C_SDA = { ...GPIO, capabilities: ["i2c_sda"] } satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap + +export const ADAFRUIT_FEATHER_RP2350_PIN_ATTRIBUTES = { + VBAT: { providesPower: true, includeInBoardPinout: true }, + EN: { includeInBoardPinout: true }, + VBUS: { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + D7: GPIO, + D4: GPIO, + D11: GPIO, + D10: GPIO, + D9: GPIO, + D6: GPIO, + D5: GPIO, + SCL: I2C_SCL, + SDA: I2C_SDA, + RESET: { includeInBoardPinout: true }, + "3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + "3V3_2": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + D24: GPIO, + D25: GPIO, + SCK: SPI_SCK, + MOSI: SPI_MOSI, + MISO: SPI_MISO, + RX: UART_RX, + TX: UART_TX, + PSRAM_CS: { includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type AdafruitFeatherRP2350Props = Omit< + ChipProps, + FixedProps +> + +export const AdafruitFeatherRP2350 = (props: AdafruitFeatherRP2350Props) => ( + +) diff --git a/lib/AdafruitItsyBitsyESP32.tsx b/lib/AdafruitItsyBitsyESP32.tsx new file mode 100644 index 0000000..0cc555e --- /dev/null +++ b/lib/AdafruitItsyBitsyESP32.tsx @@ -0,0 +1,175 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Adafruit ItsyBitsy ESP32: two 14-pin female header rows. */ +export const ADAFRUIT_ITSYBITSY_ESP32_FOOTPRINT = + "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ADAFRUIT_ITSYBITSY_ESP32_PIN_LABELS = { + pin1: ["VBAT"], + pin2: ["GND"], + pin3: ["VBUS"], + pin4: ["D13", "GPIO13"], + pin5: ["D12", "GPIO12"], + pin6: ["D14", "GPIO14"], + pin7: ["D33", "GPIO33"], + pin8: ["D32", "GPIO32"], + pin9: ["D7", "GPIO7"], + pin10: ["D5", "GPIO5"], + pin11: ["SCL", "GPIO27"], + pin12: ["SDA", "GPIO15"], + pin13: ["TX", "GPIO20"], + pin14: ["RX", "GPIO8"], + pin15: ["GND_2", "GND"], + pin16: ["MISO", "GPIO22"], + pin17: ["MOSI", "GPIO21"], + pin18: ["SCK", "GPIO19"], + pin19: ["A5", "GPIO36"], + pin20: ["A4", "GPIO37"], + pin21: ["A3", "GPIO38"], + pin22: ["A2", "GPIO4"], + pin23: ["A1", "GPIO26"], + pin24: ["A0", "GPIO25"], + pin25: ["VHI"], + pin26: ["EN"], + pin27: ["3V3", "3.3V"], + pin28: ["RESET", "RST"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SCL = { ...GPIO, capabilities: ["i2c_scl"] } satisfies PinAttributeMap +const I2C_SDA = { ...GPIO, capabilities: ["i2c_sda"] } satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ADAFRUIT_ITSYBITSY_ESP32_PIN_ATTRIBUTES = { + VBAT: { providesPower: true, includeInBoardPinout: true }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + VBUS: { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + D13: GPIO, + D12: GPIO, + D14: GPIO, + D33: GPIO, + D32: GPIO, + D7: GPIO, + D5: GPIO, + SCL: I2C_SCL, + SDA: I2C_SDA, + TX: UART_TX, + RX: UART_RX, + GND_2: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + MISO: SPI_MISO, + MOSI: SPI_MOSI, + SCK: SPI_SCK, + A5: GPIO, + A4: GPIO, + A3: GPIO, + A2: GPIO, + A1: GPIO, + A0: GPIO, + VHI: { includeInBoardPinout: true }, + EN: { includeInBoardPinout: true }, + "3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + RESET: { includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type AdafruitItsyBitsyESP32Props = Omit< + ChipProps, + FixedProps +> + +export const AdafruitItsyBitsyESP32 = ( + props: AdafruitItsyBitsyESP32Props, +) => ( + +) diff --git a/lib/AdafruitItsyBitsyM0Express.tsx b/lib/AdafruitItsyBitsyM0Express.tsx new file mode 100644 index 0000000..9500937 --- /dev/null +++ b/lib/AdafruitItsyBitsyM0Express.tsx @@ -0,0 +1,165 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" +import { samdGpio } from "./samdPinAttributes" + +/** Adafruit ItsyBitsy M0 Express: two 14-pin female header rows. */ +export const ADAFRUIT_ITSYBITSY_M0_EXPRESS_FOOTPRINT = + "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ADAFRUIT_ITSYBITSY_M0_EXPRESS_PIN_LABELS = { + pin1: ["VBAT"], + pin2: ["GND"], + pin3: ["VBUS"], + pin4: ["D13", "PA17"], + pin5: ["D12", "PA19"], + pin6: ["D11", "PA16"], + pin7: ["D10", "PA18"], + pin8: ["D9", "PA07", "A7", "BATTERY_SENSE"], + pin9: ["D7", "PA21"], + pin10: ["D5", "PA15"], + pin11: ["SCL", "D21", "PA23"], + pin12: ["SDA", "D20", "PA22"], + pin13: ["TX", "D1", "PA10"], + pin14: ["RX", "D0", "PA11"], + pin15: ["D2", "PA14"], + pin16: ["MISO", "D22", "PA12"], + pin17: ["MOSI", "D23", "PB10"], + pin18: ["SCK", "D24", "PB11"], + pin19: ["A5", "PB02"], + pin20: ["A4", "PA05"], + pin21: ["A3", "PA04"], + pin22: ["A2", "PB09"], + pin23: ["A1", "PB08", "DAC1"], + pin24: ["A0", "PA02", "DAC0"], + pin25: ["VHI"], + pin26: ["EN"], + pin27: ["3V3", "3.3V"], + pin28: ["RESET", "RST"], +} as const + +const GPIO = samdGpio() +const I2C_SCL = samdGpio(["i2c_scl"]) +const I2C_SDA = samdGpio(["i2c_sda"]) +const SPI_SCK = samdGpio(["spi_sck"]) +const SPI_MOSI = samdGpio(["spi_mosi"]) +const SPI_MISO = samdGpio(["spi_miso"]) +const UART_TX = samdGpio(["uart_tx"]) +const UART_RX = samdGpio(["uart_rx"]) + +export const ADAFRUIT_ITSYBITSY_M0_EXPRESS_PIN_ATTRIBUTES = { + VBAT: { providesPower: true, includeInBoardPinout: true }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + VBUS: { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + D13: GPIO, + D12: GPIO, + D11: GPIO, + D10: GPIO, + D9: GPIO, + D7: GPIO, + D5: GPIO, + SCL: I2C_SCL, + SDA: I2C_SDA, + TX: UART_TX, + RX: UART_RX, + D2: GPIO, + MISO: SPI_MISO, + MOSI: SPI_MOSI, + SCK: SPI_SCK, + A5: GPIO, + A4: GPIO, + A3: GPIO, + A2: GPIO, + A1: GPIO, + A0: GPIO, + VHI: { includeInBoardPinout: true }, + EN: { includeInBoardPinout: true }, + "3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + RESET: { includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type AdafruitItsyBitsyM0ExpressProps = Omit< + ChipProps, + FixedProps +> + +export const AdafruitItsyBitsyM0Express = ( + props: AdafruitItsyBitsyM0ExpressProps, +) => ( + +) diff --git a/lib/AdafruitItsyBitsyM4Express.tsx b/lib/AdafruitItsyBitsyM4Express.tsx new file mode 100644 index 0000000..ccc72ba --- /dev/null +++ b/lib/AdafruitItsyBitsyM4Express.tsx @@ -0,0 +1,165 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" +import { samdGpio } from "./samdPinAttributes" + +/** Adafruit ItsyBitsy M4 Express: two 14-pin female header rows. */ +export const ADAFRUIT_ITSYBITSY_M4_EXPRESS_FOOTPRINT = + "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ADAFRUIT_ITSYBITSY_M4_EXPRESS_PIN_LABELS = { + pin1: ["VBAT"], + pin2: ["GND"], + pin3: ["VBUS"], + pin4: ["D13"], + pin5: ["D12"], + pin6: ["D11"], + pin7: ["D10"], + pin8: ["D9"], + pin9: ["D7"], + pin10: ["D5"], + pin11: ["SCL"], + pin12: ["SDA"], + pin13: ["TX_D1"], + pin14: ["RX_D0"], + pin15: ["D2"], + pin16: ["MISO"], + pin17: ["MOSI"], + pin18: ["SCK"], + pin19: ["A5"], + pin20: ["A4"], + pin21: ["A3"], + pin22: ["A2"], + pin23: ["A1"], + pin24: ["A0"], + pin25: ["VHI"], + pin26: ["AREF"], + pin27: ["+3V3", "3V3"], + pin28: ["RESET", "RST"], +} as const + +const GPIO = samdGpio() +const I2C_SCL = samdGpio(["i2c_scl"]) +const I2C_SDA = samdGpio(["i2c_sda"]) +const SPI_SCK = samdGpio(["spi_sck"]) +const SPI_MOSI = samdGpio(["spi_mosi"]) +const SPI_MISO = samdGpio(["spi_miso"]) +const UART_TX = samdGpio(["uart_tx"]) +const UART_RX = samdGpio(["uart_rx"]) + +export const ADAFRUIT_ITSYBITSY_M4_EXPRESS_PIN_ATTRIBUTES = { + VBAT: { providesPower: true, includeInBoardPinout: true }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + VBUS: { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + D13: GPIO, + D12: GPIO, + D11: GPIO, + D10: GPIO, + D9: GPIO, + D7: GPIO, + D5: GPIO, + SCL: I2C_SCL, + SDA: I2C_SDA, + TX_D1: UART_TX, + RX_D0: UART_RX, + D2: GPIO, + MISO: SPI_MISO, + MOSI: SPI_MOSI, + SCK: SPI_SCK, + A5: GPIO, + A4: GPIO, + A3: GPIO, + A2: GPIO, + A1: GPIO, + A0: GPIO, + VHI: { includeInBoardPinout: true }, + AREF: { includeInBoardPinout: true }, + "+3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + RESET: { includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type AdafruitItsyBitsyM4ExpressProps = Omit< + ChipProps, + FixedProps +> + +export const AdafruitItsyBitsyM4Express = ( + props: AdafruitItsyBitsyM4ExpressProps, +) => ( + +) diff --git a/lib/AdafruitItsyBitsyNRF52840Express.tsx b/lib/AdafruitItsyBitsyNRF52840Express.tsx new file mode 100644 index 0000000..8145f8f --- /dev/null +++ b/lib/AdafruitItsyBitsyNRF52840Express.tsx @@ -0,0 +1,179 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Adafruit ItsyBitsy nRF52840 Express: two 14-pin female header rows. */ +export const ADAFRUIT_ITSYBITSY_NRF52840_EXPRESS_FOOTPRINT = + "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ADAFRUIT_ITSYBITSY_NRF52840_EXPRESS_PIN_LABELS = { + pin1: ["VBAT"], + pin2: ["GND"], + pin3: ["VBUS"], + pin4: ["D13"], + pin5: ["D12"], + pin6: ["D11"], + pin7: ["D10"], + pin8: ["D9"], + pin9: ["D7"], + pin10: ["D5"], + pin11: ["SCL"], + pin12: ["SDA"], + pin13: ["TX_D1"], + pin14: ["RX_D0"], + pin15: ["D2"], + pin16: ["MISO"], + pin17: ["MOSI"], + pin18: ["SCK"], + pin19: ["A5"], + pin20: ["A4"], + pin21: ["A3"], + pin22: ["A2"], + pin23: ["A1"], + pin24: ["A0"], + pin25: ["VHI"], + pin26: ["EN"], + pin27: ["3V3", "3.3V"], + pin28: ["RESET", "RST"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SCL = { + ...GPIO, + capabilities: ["i2c_scl"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const I2C_SDA = { + ...GPIO, + capabilities: ["i2c_sda"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ADAFRUIT_ITSYBITSY_NRF52840_EXPRESS_PIN_ATTRIBUTES = { + VBAT: { providesPower: true, includeInBoardPinout: true }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + VBUS: { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + D13: GPIO, + D12: GPIO, + D11: GPIO, + D10: GPIO, + D9: GPIO, + D7: GPIO, + D5: GPIO, + SCL: I2C_SCL, + SDA: I2C_SDA, + TX_D1: UART_TX, + RX_D0: UART_RX, + D2: GPIO, + MISO: SPI_MISO, + MOSI: SPI_MOSI, + SCK: SPI_SCK, + A5: GPIO, + A4: GPIO, + A3: GPIO, + A2: GPIO, + A1: GPIO, + A0: GPIO, + VHI: { includeInBoardPinout: true }, + EN: { includeInBoardPinout: true }, + "3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + RESET: { includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type AdafruitItsyBitsyNRF52840ExpressProps = Omit< + ChipProps, + FixedProps +> + +export const AdafruitItsyBitsyNRF52840Express = ( + props: AdafruitItsyBitsyNRF52840ExpressProps, +) => ( + +) diff --git a/lib/AdafruitItsyBitsyRP2040.tsx b/lib/AdafruitItsyBitsyRP2040.tsx new file mode 100644 index 0000000..cecbfe1 --- /dev/null +++ b/lib/AdafruitItsyBitsyRP2040.tsx @@ -0,0 +1,160 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" +import { rp2040Gpio } from "./rp2040PinAttributes" + +/** Adafruit ItsyBitsy RP2040: two 14-pin female header rows. */ +export const ADAFRUIT_ITSYBITSY_RP2040_FOOTPRINT = + "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ADAFRUIT_ITSYBITSY_RP2040_PIN_LABELS = { + pin1: ["VBAT"], + pin2: ["GND"], + pin3: ["VBUS"], + pin4: ["D13", "GP11", "GPIO11"], + pin5: ["D12", "GP10", "GPIO10"], + pin6: ["D11", "GP9", "GPIO9"], + pin7: ["D10", "GP8", "GPIO8"], + pin8: ["D9", "GP7", "GPIO7"], + pin9: ["D7", "GP6", "GPIO6"], + pin10: ["D5", "GP14", "GPIO14"], + pin11: ["SCL", "GP3", "GPIO3"], + pin12: ["SDA", "GP2", "GPIO2"], + pin13: ["TX", "D1", "GP0", "GPIO0"], + pin14: ["RX", "D0", "GP1", "GPIO1"], + pin15: ["D2", "GP12", "GPIO12"], + pin16: ["MISO", "GP20", "GPIO20"], + pin17: ["MOSI", "GP19", "GPIO19"], + pin18: ["SCK", "GP18", "GPIO18"], + pin19: ["D25", "GP25", "GPIO25"], + pin20: ["D24", "GP24", "GPIO24"], + pin21: ["A3", "GP29", "GPIO29"], + pin22: ["A2", "GP28", "GPIO28"], + pin23: ["A1", "GP27", "GPIO27"], + pin24: ["A0", "GP26", "GPIO26"], + pin25: ["VHI"], + pin26: ["+3V3", "3V3"], + pin27: ["+3V3_2", "3V3"], + pin28: ["RESET", "RUN", "RST"], +} as const + +export const ADAFRUIT_ITSYBITSY_RP2040_PIN_ATTRIBUTES = { + VBAT: { providesPower: true, includeInBoardPinout: true }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + VBUS: { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + D13: rp2040Gpio(11), + D12: rp2040Gpio(10), + D11: rp2040Gpio(9), + D10: rp2040Gpio(8), + D9: rp2040Gpio(7), + D7: rp2040Gpio(6), + D5: rp2040Gpio(14), + SCL: rp2040Gpio(3), + SDA: rp2040Gpio(2), + TX: rp2040Gpio(0), + RX: rp2040Gpio(1), + D2: rp2040Gpio(12), + MISO: rp2040Gpio(20), + MOSI: rp2040Gpio(19), + SCK: rp2040Gpio(18), + D25: rp2040Gpio(25), + D24: rp2040Gpio(24), + A3: rp2040Gpio(29), + A2: rp2040Gpio(28), + A1: rp2040Gpio(27), + A0: rp2040Gpio(26), + VHI: { includeInBoardPinout: true }, + "+3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + "+3V3_2": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + RESET: { includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type AdafruitItsyBitsyRP2040Props = Omit< + ChipProps, + FixedProps +> + +export const AdafruitItsyBitsyRP2040 = ( + props: AdafruitItsyBitsyRP2040Props, +) => ( + +) diff --git a/lib/AdafruitQTPyESP32S2.tsx b/lib/AdafruitQTPyESP32S2.tsx new file mode 100644 index 0000000..68a7018 --- /dev/null +++ b/lib/AdafruitQTPyESP32S2.tsx @@ -0,0 +1,119 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Adafruit QT Py ESP32-S2: two seven-pin female header rows. */ +export const ADAFRUIT_QT_PY_ESP32_S2_FOOTPRINT = + "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ADAFRUIT_QT_PY_ESP32_S2_PIN_LABELS = { + pin1: ["A0", "GPIO18"], + pin2: ["A1", "GPIO17"], + pin3: ["A2", "GPIO9"], + pin4: ["A3", "GPIO7"], + pin5: ["SDA", "GPIO8"], + pin6: ["SCL", "GPIO6"], + pin7: ["TX", "GPIO5"], + pin8: ["RX", "GPIO16"], + pin9: ["SCK", "GPIO36"], + pin10: ["MISO", "GPIO37"], + pin11: ["MOSI", "GPIO35"], + pin12: ["3.3V", "3V3"], + pin13: ["GND"], + pin14: ["+5V", "5V"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SCL = { + ...GPIO, + capabilities: ["i2c_scl"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const I2C_SDA = { + ...GPIO, + capabilities: ["i2c_sda"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ADAFRUIT_QT_PY_ESP32_S2_PIN_ATTRIBUTES = { + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + SDA: I2C_SDA, + SCL: I2C_SCL, + TX: UART_TX, + RX: UART_RX, + SCK: SPI_SCK, + MISO: SPI_MISO, + MOSI: SPI_MOSI, + "3.3V": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + "+5V": { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type AdafruitQTPyESP32S2Props = Omit< + ChipProps, + FixedProps +> + +export const AdafruitQTPyESP32S2 = (props: AdafruitQTPyESP32S2Props) => ( + +) diff --git a/lib/AdafruitQTPyESP32S3.tsx b/lib/AdafruitQTPyESP32S3.tsx new file mode 100644 index 0000000..8403e40 --- /dev/null +++ b/lib/AdafruitQTPyESP32S3.tsx @@ -0,0 +1,119 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Adafruit QT Py ESP32-S3: two seven-pin female header rows. */ +export const ADAFRUIT_QT_PY_ESP32_S3_FOOTPRINT = + "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ADAFRUIT_QT_PY_ESP32_S3_PIN_LABELS = { + pin1: ["A0", "GPIO18"], + pin2: ["A1", "GPIO17"], + pin3: ["A2", "GPIO9"], + pin4: ["A3", "GPIO7"], + pin5: ["SDA", "GPIO8"], + pin6: ["SCL", "GPIO6"], + pin7: ["TX", "GPIO5"], + pin8: ["RX", "GPIO16"], + pin9: ["SCK", "GPIO36"], + pin10: ["MISO", "GPIO37"], + pin11: ["MOSI", "GPIO35"], + pin12: ["3.3V", "3V3"], + pin13: ["GND"], + pin14: ["+5V", "5V"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SCL = { + ...GPIO, + capabilities: ["i2c_scl"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const I2C_SDA = { + ...GPIO, + capabilities: ["i2c_sda"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ADAFRUIT_QT_PY_ESP32_S3_PIN_ATTRIBUTES = { + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + SDA: I2C_SDA, + SCL: I2C_SCL, + TX: UART_TX, + RX: UART_RX, + SCK: SPI_SCK, + MISO: SPI_MISO, + MOSI: SPI_MOSI, + "3.3V": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + "+5V": { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type AdafruitQTPyESP32S3Props = Omit< + ChipProps, + FixedProps +> + +export const AdafruitQTPyESP32S3 = (props: AdafruitQTPyESP32S3Props) => ( + +) diff --git a/lib/AdafruitQTPyNRF52840.tsx b/lib/AdafruitQTPyNRF52840.tsx new file mode 100644 index 0000000..12b04cd --- /dev/null +++ b/lib/AdafruitQTPyNRF52840.tsx @@ -0,0 +1,125 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** + * QT Py-size nRF52840 header module. + * + * Adafruit does not currently publish a QT Py nRF52840 SKU. This entry keeps + * the catalog's planned QT Py-compatible footprint explicit while using the + * standard QT Py seven-pin-per-side signal order; the actual public nRF52840 + * product is represented by AdafruitItsyBitsyNRF52840Express. + */ +export const ADAFRUIT_QT_PY_NRF52840_FOOTPRINT = + "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ADAFRUIT_QT_PY_NRF52840_PIN_LABELS = { + pin1: ["A0"], + pin2: ["A1"], + pin3: ["A2"], + pin4: ["A3"], + pin5: ["SDA"], + pin6: ["SCL"], + pin7: ["TX_A6"], + pin8: ["RX_A7"], + pin9: ["SCK"], + pin10: ["MISO"], + pin11: ["MOSI"], + pin12: ["3.3V", "3V3"], + pin13: ["GND"], + pin14: ["+5V", "5V"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SDA = { + ...GPIO, + capabilities: ["i2c_sda"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const I2C_SCL = { + ...GPIO, + capabilities: ["i2c_scl"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ADAFRUIT_QT_PY_NRF52840_PIN_ATTRIBUTES = { + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + SDA: I2C_SDA, + SCL: I2C_SCL, + TX_A6: UART_TX, + RX_A7: UART_RX, + SCK: SPI_SCK, + MISO: SPI_MISO, + MOSI: SPI_MOSI, + "3.3V": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + "+5V": { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type AdafruitQTPyNRF52840Props = Omit< + ChipProps, + FixedProps +> + +export const AdafruitQTPyNRF52840 = (props: AdafruitQTPyNRF52840Props) => ( + +) diff --git a/lib/AdafruitQTPyRP2350.tsx b/lib/AdafruitQTPyRP2350.tsx new file mode 100644 index 0000000..cac894d --- /dev/null +++ b/lib/AdafruitQTPyRP2350.tsx @@ -0,0 +1,124 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** + * QT Py-size RP2350 header module. + * + * There is not yet a public Adafruit QT Py RP2350 SKU. The pin order is kept + * as the standard QT Py 14-pin mechanical interface; use the Feather RP2350 + * module when a production Adafruit RP2350 pinout is required. + */ +export const ADAFRUIT_QT_PY_RP2350_FOOTPRINT = + "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ADAFRUIT_QT_PY_RP2350_PIN_LABELS = { + pin1: ["A0"], + pin2: ["A1"], + pin3: ["A2"], + pin4: ["A3"], + pin5: ["SDA"], + pin6: ["SCL"], + pin7: ["TX"], + pin8: ["RX"], + pin9: ["SCK"], + pin10: ["MISO"], + pin11: ["MOSI"], + pin12: ["+3V3", "3V3"], + pin13: ["GND"], + pin14: ["+5V", "5V"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SDA = { + ...GPIO, + capabilities: ["i2c_sda"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const I2C_SCL = { + ...GPIO, + capabilities: ["i2c_scl"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ADAFRUIT_QT_PY_RP2350_PIN_ATTRIBUTES = { + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + SDA: I2C_SDA, + SCL: I2C_SCL, + TX: UART_TX, + RX: UART_RX, + SCK: SPI_SCK, + MISO: SPI_MISO, + MOSI: SPI_MOSI, + "+3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + "+5V": { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type AdafruitQTPyRP2350Props = Omit< + ChipProps, + FixedProps +> + +export const AdafruitQTPyRP2350 = (props: AdafruitQTPyRP2350Props) => ( + +) diff --git a/lib/AdafruitQTPySAMD21.tsx b/lib/AdafruitQTPySAMD21.tsx new file mode 100644 index 0000000..6ec671b --- /dev/null +++ b/lib/AdafruitQTPySAMD21.tsx @@ -0,0 +1,102 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" +import { samdGpio } from "./samdPinAttributes" + +/** Adafruit QT Py SAMD21: two seven-pin female header rows. */ +export const ADAFRUIT_QT_PY_SAMD21_FOOTPRINT = + "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ADAFRUIT_QT_PY_SAMD21_PIN_LABELS = { + pin1: ["A0", "PA02"], + pin2: ["A1", "PA03"], + pin3: ["A2", "PA04"], + pin4: ["A3", "PA05"], + pin5: ["SDA"], + pin6: ["SCL"], + pin7: ["TX_A6"], + pin8: ["RX_A7"], + pin9: ["SCK"], + pin10: ["MISO"], + pin11: ["MOSI"], + pin12: ["3.3V", "3V3"], + pin13: ["GND"], + pin14: ["+5V", "5V"], +} as const + +export const ADAFRUIT_QT_PY_SAMD21_PIN_ATTRIBUTES = { + A0: samdGpio(), + A1: samdGpio(), + A2: samdGpio(), + A3: samdGpio(), + SDA: { + ...samdGpio(["i2c_sda"]), + needsExternalPullup: true, + }, + SCL: { + ...samdGpio(["i2c_scl"]), + needsExternalPullup: true, + }, + TX_A6: samdGpio(["uart_tx"]), + RX_A7: samdGpio(["uart_rx"]), + SCK: samdGpio(["spi_sck"]), + MISO: samdGpio(["spi_miso"]), + MOSI: samdGpio(["spi_mosi"]), + "3.3V": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + "+5V": { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type AdafruitQTPySAMD21Props = Omit< + ChipProps, + FixedProps +> + +export const AdafruitQTPySAMD21 = (props: AdafruitQTPySAMD21Props) => ( + +) diff --git a/lib/ArduinoNano33BLE.tsx b/lib/ArduinoNano33BLE.tsx new file mode 100644 index 0000000..2e1dba4 --- /dev/null +++ b/lib/ArduinoNano33BLE.tsx @@ -0,0 +1,188 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Arduino Nano 33 BLE: the 30-pin Nano header arrangement. */ +export const ARDUINO_NANO_33_BLE_FOOTPRINT = + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ARDUINO_NANO_33_BLE_PIN_LABELS = { + pin1: ["TX", "D1"], + pin2: ["RX", "D0"], + pin3: ["RESET", "RST"], + pin4: ["GND"], + pin5: ["D2"], + pin6: ["D3"], + pin7: ["D4"], + pin8: ["D5"], + pin9: ["D6"], + pin10: ["D7"], + pin11: ["D8"], + pin12: ["D9"], + pin13: ["D10", "SS"], + pin14: ["D11", "MOSI"], + pin15: ["D12", "MISO"], + pin16: ["D13", "SCK", "LED"], + pin17: ["3V3"], + pin18: ["AREF"], + pin19: ["A0"], + pin20: ["A1"], + pin21: ["A2"], + pin22: ["A3"], + pin23: ["A4", "SDA"], + pin24: ["A5", "SCL"], + pin25: ["A6"], + pin26: ["A7"], + pin27: ["+5V", "5V"], + pin28: ["RESET_2", "RST"], + pin29: ["GND_2", "GND"], + pin30: ["VIN"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SDA = { + ...GPIO, + capabilities: ["i2c_sda"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const I2C_SCL = { + ...GPIO, + capabilities: ["i2c_scl"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const SPI_CS = { ...GPIO, capabilities: ["spi_cs"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ARDUINO_NANO_33_BLE_PIN_ATTRIBUTES = { + TX: UART_TX, + RX: UART_RX, + RESET: { includeInBoardPinout: true }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + D2: GPIO, + D3: GPIO, + D4: GPIO, + D5: GPIO, + D6: GPIO, + D7: GPIO, + D8: GPIO, + D9: GPIO, + D10: SPI_CS, + D11: SPI_MOSI, + D12: SPI_MISO, + D13: SPI_SCK, + "3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + AREF: { includeInBoardPinout: true }, + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + A4: I2C_SDA, + A5: I2C_SCL, + A6: GPIO, + A7: GPIO, + "+5V": { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + RESET_2: { includeInBoardPinout: true }, + GND_2: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + VIN: { requiresPower: true, includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type ArduinoNano33BLEProps = Omit< + ChipProps, + FixedProps +> + +export const ArduinoNano33BLE = (props: ArduinoNano33BLEProps) => ( + +) diff --git a/lib/ArduinoNano33BLESenseRev2.tsx b/lib/ArduinoNano33BLESenseRev2.tsx new file mode 100644 index 0000000..45a3816 --- /dev/null +++ b/lib/ArduinoNano33BLESenseRev2.tsx @@ -0,0 +1,190 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Arduino Nano 33 BLE Sense Rev2: the 30-pin Nano header arrangement. */ +export const ARDUINO_NANO_33_BLE_SENSE_REV2_FOOTPRINT = + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ARDUINO_NANO_33_BLE_SENSE_REV2_PIN_LABELS = { + pin1: ["TX", "D1"], + pin2: ["RX", "D0"], + pin3: ["RESET", "RST"], + pin4: ["GND"], + pin5: ["D2"], + pin6: ["D3"], + pin7: ["D4"], + pin8: ["D5"], + pin9: ["D6"], + pin10: ["D7"], + pin11: ["D8"], + pin12: ["D9"], + pin13: ["D10", "SS"], + pin14: ["D11", "MOSI"], + pin15: ["D12", "MISO"], + pin16: ["D13", "SCK", "LED"], + pin17: ["3V3"], + pin18: ["AREF"], + pin19: ["A0"], + pin20: ["A1"], + pin21: ["A2"], + pin22: ["A3"], + pin23: ["A4", "SDA"], + pin24: ["A5", "SCL"], + pin25: ["A6"], + pin26: ["A7"], + pin27: ["+5V", "5V"], + pin28: ["RESET_2", "RST"], + pin29: ["GND_2", "GND"], + pin30: ["VIN"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SDA = { + ...GPIO, + capabilities: ["i2c_sda"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const I2C_SCL = { + ...GPIO, + capabilities: ["i2c_scl"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const SPI_CS = { ...GPIO, capabilities: ["spi_cs"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ARDUINO_NANO_33_BLE_SENSE_REV2_PIN_ATTRIBUTES = { + TX: UART_TX, + RX: UART_RX, + RESET: { includeInBoardPinout: true }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + D2: GPIO, + D3: GPIO, + D4: GPIO, + D5: GPIO, + D6: GPIO, + D7: GPIO, + D8: GPIO, + D9: GPIO, + D10: SPI_CS, + D11: SPI_MOSI, + D12: SPI_MISO, + D13: SPI_SCK, + "3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + AREF: { includeInBoardPinout: true }, + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + A4: I2C_SDA, + A5: I2C_SCL, + A6: GPIO, + A7: GPIO, + "+5V": { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + RESET_2: { includeInBoardPinout: true }, + GND_2: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + VIN: { requiresPower: true, includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type ArduinoNano33BLESenseRev2Props = Omit< + ChipProps, + FixedProps +> + +export const ArduinoNano33BLESenseRev2 = ( + props: ArduinoNano33BLESenseRev2Props, +) => ( + +) diff --git a/lib/ArduinoNano33IoT.tsx b/lib/ArduinoNano33IoT.tsx new file mode 100644 index 0000000..31c0aac --- /dev/null +++ b/lib/ArduinoNano33IoT.tsx @@ -0,0 +1,188 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Arduino Nano 33 IoT: the 30-pin Nano header arrangement. */ +export const ARDUINO_NANO_33_IOT_FOOTPRINT = + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ARDUINO_NANO_33_IOT_PIN_LABELS = { + pin1: ["TX", "D1"], + pin2: ["RX", "D0"], + pin3: ["RESET", "RST"], + pin4: ["GND"], + pin5: ["D2"], + pin6: ["D3"], + pin7: ["D4"], + pin8: ["D5"], + pin9: ["D6"], + pin10: ["D7"], + pin11: ["D8"], + pin12: ["D9"], + pin13: ["D10", "SS"], + pin14: ["D11", "MOSI"], + pin15: ["D12", "MISO"], + pin16: ["D13", "SCK", "LED"], + pin17: ["3V3"], + pin18: ["AREF"], + pin19: ["A0"], + pin20: ["A1"], + pin21: ["A2"], + pin22: ["A3"], + pin23: ["A4", "SDA"], + pin24: ["A5", "SCL"], + pin25: ["A6"], + pin26: ["A7"], + pin27: ["+5V", "5V"], + pin28: ["RESET_2", "RST"], + pin29: ["GND_2", "GND"], + pin30: ["VIN"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SDA = { + ...GPIO, + capabilities: ["i2c_sda"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const I2C_SCL = { + ...GPIO, + capabilities: ["i2c_scl"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const SPI_CS = { ...GPIO, capabilities: ["spi_cs"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ARDUINO_NANO_33_IOT_PIN_ATTRIBUTES = { + TX: UART_TX, + RX: UART_RX, + RESET: { includeInBoardPinout: true }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + D2: GPIO, + D3: GPIO, + D4: GPIO, + D5: GPIO, + D6: GPIO, + D7: GPIO, + D8: GPIO, + D9: GPIO, + D10: SPI_CS, + D11: SPI_MOSI, + D12: SPI_MISO, + D13: SPI_SCK, + "3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + AREF: { includeInBoardPinout: true }, + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + A4: I2C_SDA, + A5: I2C_SCL, + A6: GPIO, + A7: GPIO, + "+5V": { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + RESET_2: { includeInBoardPinout: true }, + GND_2: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + VIN: { requiresPower: true, includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type ArduinoNano33IoTProps = Omit< + ChipProps, + FixedProps +> + +export const ArduinoNano33IoT = (props: ArduinoNano33IoTProps) => ( + +) diff --git a/lib/ArduinoNanoATmega328P.tsx b/lib/ArduinoNanoATmega328P.tsx new file mode 100644 index 0000000..76b8e57 --- /dev/null +++ b/lib/ArduinoNanoATmega328P.tsx @@ -0,0 +1,190 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Arduino Nano ATmega328P: the standard 30-pin Nano header arrangement. */ +export const ARDUINO_NANO_ATMEGA328P_FOOTPRINT = + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ARDUINO_NANO_ATMEGA328P_PIN_LABELS = { + pin1: ["TX", "D1"], + pin2: ["RX", "D0"], + pin3: ["RESET", "RST"], + pin4: ["GND"], + pin5: ["D2"], + pin6: ["D3"], + pin7: ["D4"], + pin8: ["D5"], + pin9: ["D6"], + pin10: ["D7"], + pin11: ["D8"], + pin12: ["D9"], + pin13: ["D10", "SS"], + pin14: ["D11", "MOSI"], + pin15: ["D12", "MISO"], + pin16: ["D13", "SCK", "LED"], + pin17: ["3V3"], + pin18: ["AREF"], + pin19: ["A0"], + pin20: ["A1"], + pin21: ["A2"], + pin22: ["A3"], + pin23: ["A4", "SDA"], + pin24: ["A5", "SCL"], + pin25: ["A6"], + pin26: ["A7"], + pin27: ["+5V", "5V"], + pin28: ["RESET_2", "RST"], + pin29: ["GND_2", "GND"], + pin30: ["VIN"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SDA = { + ...GPIO, + capabilities: ["i2c_sda"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const I2C_SCL = { + ...GPIO, + capabilities: ["i2c_scl"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const SPI_CS = { ...GPIO, capabilities: ["spi_cs"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ARDUINO_NANO_ATMEGA328P_PIN_ATTRIBUTES = { + TX: UART_TX, + RX: UART_RX, + RESET: { includeInBoardPinout: true }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + D2: GPIO, + D3: GPIO, + D4: GPIO, + D5: GPIO, + D6: GPIO, + D7: GPIO, + D8: GPIO, + D9: GPIO, + D10: SPI_CS, + D11: SPI_MOSI, + D12: SPI_MISO, + D13: SPI_SCK, + "3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + AREF: { includeInBoardPinout: true }, + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + A4: I2C_SDA, + A5: I2C_SCL, + A6: GPIO, + A7: GPIO, + "+5V": { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + RESET_2: { includeInBoardPinout: true }, + GND_2: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + VIN: { requiresPower: true, includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type ArduinoNanoATmega328PProps = Omit< + ChipProps, + FixedProps +> + +export const ArduinoNanoATmega328P = ( + props: ArduinoNanoATmega328PProps, +) => ( + +) diff --git a/lib/ArduinoNanoESP32.tsx b/lib/ArduinoNanoESP32.tsx new file mode 100644 index 0000000..43ae37a --- /dev/null +++ b/lib/ArduinoNanoESP32.tsx @@ -0,0 +1,188 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Arduino Nano ESP32: the ESP32-S3 Nano 30-pin header arrangement. */ +export const ARDUINO_NANO_ESP32_FOOTPRINT = + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ARDUINO_NANO_ESP32_PIN_LABELS = { + pin1: ["TX", "D1", "GPIO43"], + pin2: ["RX", "D0", "GPIO44"], + pin3: ["RESET", "RST"], + pin4: ["GND"], + pin5: ["D2", "GPIO5"], + pin6: ["D3", "GPIO6"], + pin7: ["D4", "GPIO7"], + pin8: ["D5", "GPIO8"], + pin9: ["D6", "GPIO9"], + pin10: ["D7", "GPIO10"], + pin11: ["D8", "GPIO17"], + pin12: ["D9", "GPIO18"], + pin13: ["D10", "GPIO21"], + pin14: ["D11", "GPIO38"], + pin15: ["D12", "GPIO47"], + pin16: ["D13", "GPIO48"], + pin17: ["3V3"], + pin18: ["B0", "GPIO46"], + pin19: ["A0", "D17", "GPIO1"], + pin20: ["A1", "D18", "GPIO2"], + pin21: ["A2", "D19", "GPIO3"], + pin22: ["A3", "D20", "GPIO4"], + pin23: ["A4", "D21", "GPIO11"], + pin24: ["A5", "D22", "GPIO12"], + pin25: ["A6", "D23", "GPIO13"], + pin26: ["A7", "D24", "GPIO14"], + pin27: ["VUSB", "USB_5V"], + pin28: ["B1", "GPIO0"], + pin29: ["GND_2", "GND"], + pin30: ["VIN"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SDA = { + ...GPIO, + capabilities: ["i2c_sda"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const I2C_SCL = { + ...GPIO, + capabilities: ["i2c_scl"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const SPI_CS = { ...GPIO, capabilities: ["spi_cs"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ARDUINO_NANO_ESP32_PIN_ATTRIBUTES = { + TX: UART_TX, + RX: UART_RX, + RESET: { includeInBoardPinout: true }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + D2: GPIO, + D3: GPIO, + D4: GPIO, + D5: GPIO, + D6: GPIO, + D7: GPIO, + D8: GPIO, + D9: GPIO, + D10: SPI_CS, + D11: SPI_MOSI, + D12: SPI_MISO, + D13: SPI_SCK, + "3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + B0: GPIO, + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + A4: I2C_SDA, + A5: I2C_SCL, + A6: GPIO, + A7: GPIO, + VUSB: { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + B1: GPIO, + GND_2: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + VIN: { requiresPower: true, includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type ArduinoNanoESP32Props = Omit< + ChipProps, + FixedProps +> + +export const ArduinoNanoESP32 = (props: ArduinoNanoESP32Props) => ( + +) diff --git a/lib/ArduinoNanoEvery.tsx b/lib/ArduinoNanoEvery.tsx new file mode 100644 index 0000000..1aacb2c --- /dev/null +++ b/lib/ArduinoNanoEvery.tsx @@ -0,0 +1,188 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Arduino Nano Every: the standard 30-pin Nano header arrangement. */ +export const ARDUINO_NANO_EVERY_FOOTPRINT = + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ARDUINO_NANO_EVERY_PIN_LABELS = { + pin1: ["TX", "D1"], + pin2: ["RX", "D0"], + pin3: ["RESET", "RST"], + pin4: ["GND"], + pin5: ["D2"], + pin6: ["D3"], + pin7: ["D4"], + pin8: ["D5"], + pin9: ["D6"], + pin10: ["D7"], + pin11: ["D8"], + pin12: ["D9"], + pin13: ["D10", "SS"], + pin14: ["D11", "MOSI"], + pin15: ["D12", "MISO"], + pin16: ["D13", "SCK", "LED"], + pin17: ["3V3"], + pin18: ["AREF"], + pin19: ["A0"], + pin20: ["A1"], + pin21: ["A2"], + pin22: ["A3"], + pin23: ["A4", "SDA"], + pin24: ["A5", "SCL"], + pin25: ["A6"], + pin26: ["A7"], + pin27: ["+5V", "5V"], + pin28: ["RESET_2", "RST"], + pin29: ["GND_2", "GND"], + pin30: ["VIN"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SDA = { + ...GPIO, + capabilities: ["i2c_sda"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const I2C_SCL = { + ...GPIO, + capabilities: ["i2c_scl"], + needsExternalPullup: true, +} satisfies PinAttributeMap +const SPI_CS = { ...GPIO, capabilities: ["spi_cs"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ARDUINO_NANO_EVERY_PIN_ATTRIBUTES = { + TX: UART_TX, + RX: UART_RX, + RESET: { includeInBoardPinout: true }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + D2: GPIO, + D3: GPIO, + D4: GPIO, + D5: GPIO, + D6: GPIO, + D7: GPIO, + D8: GPIO, + D9: GPIO, + D10: SPI_CS, + D11: SPI_MOSI, + D12: SPI_MISO, + D13: SPI_SCK, + "3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + AREF: { includeInBoardPinout: true }, + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + A4: I2C_SDA, + A5: I2C_SCL, + A6: GPIO, + A7: GPIO, + "+5V": { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + RESET_2: { includeInBoardPinout: true }, + GND_2: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + VIN: { requiresPower: true, includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type ArduinoNanoEveryProps = Omit< + ChipProps, + FixedProps +> + +export const ArduinoNanoEvery = (props: ArduinoNanoEveryProps) => ( + +) diff --git a/lib/ArduinoNanoMatter.tsx b/lib/ArduinoNanoMatter.tsx new file mode 100644 index 0000000..37bd161 --- /dev/null +++ b/lib/ArduinoNanoMatter.tsx @@ -0,0 +1,180 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Arduino Nano Matter: MGM240S-based 30-pin Nano header arrangement. */ +export const ARDUINO_NANO_MATTER_FOOTPRINT = + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ARDUINO_NANO_MATTER_PIN_LABELS = { + pin1: ["D0", "TX", "PIN_SERIAL_TX1"], + pin2: ["D1", "RX", "PIN_SERIAL_RX1"], + pin3: ["RST", "RESET"], + pin4: ["GND"], + pin5: ["D2"], + pin6: ["D3"], + pin7: ["D4"], + pin8: ["D5"], + pin9: ["D6"], + pin10: ["D7"], + pin11: ["D8"], + pin12: ["D9"], + pin13: ["D10"], + pin14: ["D11"], + pin15: ["D12"], + pin16: ["D13"], + pin17: ["+3V3", "3V3"], + pin18: ["AREF"], + pin19: ["A0"], + pin20: ["A1"], + pin21: ["A2"], + pin22: ["A3"], + pin23: ["A4", "SDA"], + pin24: ["A5", "SCL"], + pin25: ["A6"], + pin26: ["A7"], + pin27: ["+5V", "5V"], + pin28: ["NC"], + pin29: ["GND_2", "GND"], + pin30: ["VIN"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SDA = { ...GPIO, capabilities: ["i2c_sda"] } satisfies PinAttributeMap +const I2C_SCL = { ...GPIO, capabilities: ["i2c_scl"] } satisfies PinAttributeMap +const SPI_CS = { ...GPIO, capabilities: ["spi_cs"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ARDUINO_NANO_MATTER_PIN_ATTRIBUTES = { + D0: UART_TX, + D1: UART_RX, + RST: { includeInBoardPinout: true }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + D2: GPIO, + D3: GPIO, + D4: GPIO, + D5: GPIO, + D6: GPIO, + D7: GPIO, + D8: GPIO, + D9: GPIO, + D10: SPI_CS, + D11: SPI_MOSI, + D12: SPI_MISO, + D13: SPI_SCK, + "+3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + AREF: { includeInBoardPinout: true }, + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + A4: I2C_SDA, + A5: I2C_SCL, + A6: GPIO, + A7: GPIO, + "+5V": { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + NC: { doNotConnect: true, includeInBoardPinout: true }, + GND_2: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + VIN: { requiresPower: true, includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type ArduinoNanoMatterProps = Omit< + ChipProps, + FixedProps +> + +export const ArduinoNanoMatter = (props: ArduinoNanoMatterProps) => ( + +) diff --git a/lib/ArduinoNanoRP2040Connect.tsx b/lib/ArduinoNanoRP2040Connect.tsx new file mode 100644 index 0000000..92e756e --- /dev/null +++ b/lib/ArduinoNanoRP2040Connect.tsx @@ -0,0 +1,182 @@ +import type { ChipProps, PinAttributeMap } from "@tscircuit/props" + +/** Arduino Nano RP2040 Connect: the RP2040 30-pin Nano header arrangement. */ +export const ARDUINO_NANO_RP2040_CONNECT_FOOTPRINT = + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + +export const ARDUINO_NANO_RP2040_CONNECT_PIN_LABELS = { + pin1: ["TX", "D1", "GPIO0"], + pin2: ["RX", "D0", "GPIO1"], + pin3: ["RESET", "RST"], + pin4: ["GND"], + pin5: ["D2", "GPIO25"], + pin6: ["D3", "GPIO15"], + pin7: ["D4", "GPIO16"], + pin8: ["D5", "GPIO17"], + pin9: ["D6", "GPIO18"], + pin10: ["D7", "GPIO19"], + pin11: ["D8", "GPIO20"], + pin12: ["D9", "GPIO21"], + pin13: ["D10", "GPIO5"], + pin14: ["D11", "GPIO7", "MOSI"], + pin15: ["D12", "GPIO4", "MISO"], + pin16: ["D13", "GPIO6", "SCK"], + pin17: ["3V3"], + pin18: ["AREF"], + pin19: ["A0", "GPIO26"], + pin20: ["A1", "GPIO27"], + pin21: ["A2", "GPIO28"], + pin22: ["A3", "GPIO29"], + pin23: ["A4", "SDA", "GPIO12"], + pin24: ["A5", "SCL", "GPIO13"], + pin25: ["A6"], + pin26: ["A7"], + pin27: ["+5V", "5V"], + pin28: ["QSPI_CSn", "REC"], + pin29: ["GND_2", "GND"], + pin30: ["VIN"], +} as const + +const GPIO = { + isGpio: true, + includeInBoardPinout: true, + canUseInternalPullup: true, + canUseInternalPulldown: true, + canUseOpenDrain: true, + canUsePushPull: true, +} as const satisfies PinAttributeMap +const I2C_SDA = { ...GPIO, capabilities: ["i2c_sda"] } satisfies PinAttributeMap +const I2C_SCL = { ...GPIO, capabilities: ["i2c_scl"] } satisfies PinAttributeMap +const SPI_CS = { ...GPIO, capabilities: ["spi_cs"] } satisfies PinAttributeMap +const SPI_MOSI = { ...GPIO, capabilities: ["spi_mosi"] } satisfies PinAttributeMap +const SPI_MISO = { ...GPIO, capabilities: ["spi_miso"] } satisfies PinAttributeMap +const SPI_SCK = { ...GPIO, capabilities: ["spi_sck"] } satisfies PinAttributeMap +const UART_TX = { ...GPIO, capabilities: ["uart_tx"] } satisfies PinAttributeMap +const UART_RX = { ...GPIO, capabilities: ["uart_rx"] } satisfies PinAttributeMap + +export const ARDUINO_NANO_RP2040_CONNECT_PIN_ATTRIBUTES = { + TX: UART_TX, + RX: UART_RX, + RESET: { includeInBoardPinout: true }, + GND: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + D2: GPIO, + D3: GPIO, + D4: GPIO, + D5: GPIO, + D6: GPIO, + D7: GPIO, + D8: GPIO, + D9: GPIO, + D10: SPI_CS, + D11: SPI_MOSI, + D12: SPI_MISO, + D13: SPI_SCK, + "3V3": { + providesPower: true, + providesVoltage: "3.3V", + includeInBoardPinout: true, + }, + AREF: { includeInBoardPinout: true }, + A0: GPIO, + A1: GPIO, + A2: GPIO, + A3: GPIO, + A4: I2C_SDA, + A5: I2C_SCL, + A6: GPIO, + A7: GPIO, + "+5V": { + requiresPower: true, + providesPower: true, + requiresVoltage: "5V", + providesVoltage: "5V", + includeInBoardPinout: true, + }, + QSPI_CSn: { includeInBoardPinout: true }, + GND_2: { + requiresGround: true, + providesGround: true, + includeInBoardPinout: true, + }, + VIN: { requiresPower: true, includeInBoardPinout: true }, +} as const satisfies Record + +type FixedProps = + | "datasheetUrl" + | "displayName" + | "footprint" + | "manufacturerPartNumber" + | "mfn" + | "pinAttributes" + | "pinLabels" + | "schHeight" + | "schPinArrangement" + | "schWidth" + +export type ArduinoNanoRP2040ConnectProps = Omit< + ChipProps, + FixedProps +> + +export const ArduinoNanoRP2040Connect = ( + props: ArduinoNanoRP2040ConnectProps, +) => ( + +) diff --git a/lib/generatedModules.tsx b/lib/generatedModules.tsx index 4dde7be..0db5d96 100644 --- a/lib/generatedModules.tsx +++ b/lib/generatedModules.tsx @@ -1527,366 +1527,6 @@ export const GENERIC4_PIN_ATTRIBUTES = { SIG2: GPIO, } as const satisfies Record -/** Adafruit Feather ESP32-S3 TFT — ESP32-S3 Feather-format board with display. */ -export const AdafruitFeatherESP32S3TFT_PIN_LABELS = FEATHER28_PIN_LABELS -export const AdafruitFeatherESP32S3TFT_PIN_ATTRIBUTES = FEATHER28_PIN_ATTRIBUTES -export const AdafruitFeatherESP32S3TFT_FOOTPRINT = FOOTPRINT_F28 -export type AdafruitFeatherESP32S3TFTProps = ChipProps -export const AdafruitFeatherESP32S3TFT = (props: AdafruitFeatherESP32S3TFTProps) => ( - -) - -/** Adafruit Feather RP2350 — RP2350 Feather-format board. */ -export const AdafruitFeatherRP2350_PIN_LABELS = FEATHER28_PIN_LABELS -export const AdafruitFeatherRP2350_PIN_ATTRIBUTES = FEATHER28_PIN_ATTRIBUTES -export const AdafruitFeatherRP2350_FOOTPRINT = FOOTPRINT_F28 -export type AdafruitFeatherRP2350Props = ChipProps -export const AdafruitFeatherRP2350 = (props: AdafruitFeatherRP2350Props) => ( - -) - -/** Adafruit ItsyBitsy M0 Express — compact SAMD21 board. */ -export const AdafruitItsyBitsyM0Express_PIN_LABELS = ITSYBITSY24_PIN_LABELS -export const AdafruitItsyBitsyM0Express_PIN_ATTRIBUTES = ITSYBITSY24_PIN_ATTRIBUTES -export const AdafruitItsyBitsyM0Express_FOOTPRINT = FOOTPRINT_F24 -export type AdafruitItsyBitsyM0ExpressProps = ChipProps -export const AdafruitItsyBitsyM0Express = (props: AdafruitItsyBitsyM0ExpressProps) => ( - -) - -/** Adafruit ItsyBitsy M4 Express — compact SAMD51 board. */ -export const AdafruitItsyBitsyM4Express_PIN_LABELS = ITSYBITSY24_PIN_LABELS -export const AdafruitItsyBitsyM4Express_PIN_ATTRIBUTES = ITSYBITSY24_PIN_ATTRIBUTES -export const AdafruitItsyBitsyM4Express_FOOTPRINT = FOOTPRINT_F24 -export type AdafruitItsyBitsyM4ExpressProps = ChipProps -export const AdafruitItsyBitsyM4Express = (props: AdafruitItsyBitsyM4ExpressProps) => ( - -) - -/** Adafruit ItsyBitsy nRF52840 Express — compact Bluetooth board. */ -export const AdafruitItsyBitsyNRF52840Express_PIN_LABELS = ITSYBITSY24_PIN_LABELS -export const AdafruitItsyBitsyNRF52840Express_PIN_ATTRIBUTES = ITSYBITSY24_PIN_ATTRIBUTES -export const AdafruitItsyBitsyNRF52840Express_FOOTPRINT = FOOTPRINT_F24 -export type AdafruitItsyBitsyNRF52840ExpressProps = ChipProps -export const AdafruitItsyBitsyNRF52840Express = (props: AdafruitItsyBitsyNRF52840ExpressProps) => ( - -) - -/** Adafruit ItsyBitsy RP2040 — compact RP2040 board. */ -export const AdafruitItsyBitsyRP2040_PIN_LABELS = ITSYBITSY24_PIN_LABELS -export const AdafruitItsyBitsyRP2040_PIN_ATTRIBUTES = ITSYBITSY24_PIN_ATTRIBUTES -export const AdafruitItsyBitsyRP2040_FOOTPRINT = FOOTPRINT_F24 -export type AdafruitItsyBitsyRP2040Props = ChipProps -export const AdafruitItsyBitsyRP2040 = (props: AdafruitItsyBitsyRP2040Props) => ( - -) - -/** Adafruit ItsyBitsy ESP32 — compact ESP32 board. */ -export const AdafruitItsyBitsyESP32_PIN_LABELS = ITSYBITSY24_PIN_LABELS -export const AdafruitItsyBitsyESP32_PIN_ATTRIBUTES = ITSYBITSY24_PIN_ATTRIBUTES -export const AdafruitItsyBitsyESP32_FOOTPRINT = FOOTPRINT_F24 -export type AdafruitItsyBitsyESP32Props = ChipProps -export const AdafruitItsyBitsyESP32 = (props: AdafruitItsyBitsyESP32Props) => ( - -) - -/** Adafruit QT Py SAMD21 — tiny castellated/0.1 in header-ready board. */ -export const AdafruitQTPySAMD21_PIN_LABELS = QTPY12_PIN_LABELS -export const AdafruitQTPySAMD21_PIN_ATTRIBUTES = QTPY12_PIN_ATTRIBUTES -export const AdafruitQTPySAMD21_FOOTPRINT = FOOTPRINT_F12 -export type AdafruitQTPySAMD21Props = ChipProps -export const AdafruitQTPySAMD21 = (props: AdafruitQTPySAMD21Props) => ( - -) - -/** Adafruit QT Py ESP32-S2 — tiny castellated/0.1 in header-ready board. */ -export const AdafruitQTPyESP32S2_PIN_LABELS = QTPY12_PIN_LABELS -export const AdafruitQTPyESP32S2_PIN_ATTRIBUTES = QTPY12_PIN_ATTRIBUTES -export const AdafruitQTPyESP32S2_FOOTPRINT = FOOTPRINT_F12 -export type AdafruitQTPyESP32S2Props = ChipProps -export const AdafruitQTPyESP32S2 = (props: AdafruitQTPyESP32S2Props) => ( - -) - -/** Adafruit QT Py ESP32-S3 — tiny castellated/0.1 in header-ready board. */ -export const AdafruitQTPyESP32S3_PIN_LABELS = QTPY12_PIN_LABELS -export const AdafruitQTPyESP32S3_PIN_ATTRIBUTES = QTPY12_PIN_ATTRIBUTES -export const AdafruitQTPyESP32S3_FOOTPRINT = FOOTPRINT_F12 -export type AdafruitQTPyESP32S3Props = ChipProps -export const AdafruitQTPyESP32S3 = (props: AdafruitQTPyESP32S3Props) => ( - -) - -/** Adafruit QT Py nRF52840 — tiny castellated/0.1 in header-ready board. */ -export const AdafruitQTPyNRF52840_PIN_LABELS = QTPY12_PIN_LABELS -export const AdafruitQTPyNRF52840_PIN_ATTRIBUTES = QTPY12_PIN_ATTRIBUTES -export const AdafruitQTPyNRF52840_FOOTPRINT = FOOTPRINT_F12 -export type AdafruitQTPyNRF52840Props = ChipProps -export const AdafruitQTPyNRF52840 = (props: AdafruitQTPyNRF52840Props) => ( - -) - -/** Adafruit QT Py RP2350 — tiny castellated/0.1 in header-ready board. */ -export const AdafruitQTPyRP2350_PIN_LABELS = QTPY12_PIN_LABELS -export const AdafruitQTPyRP2350_PIN_ATTRIBUTES = QTPY12_PIN_ATTRIBUTES -export const AdafruitQTPyRP2350_FOOTPRINT = FOOTPRINT_F12 -export type AdafruitQTPyRP2350Props = ChipProps -export const AdafruitQTPyRP2350 = (props: AdafruitQTPyRP2350Props) => ( - -) - -/** Arduino Nano ATmega328P — classic Nano dual-row module. */ -export const ArduinoNanoATmega328P_PIN_LABELS = NANO30_PIN_LABELS -export const ArduinoNanoATmega328P_PIN_ATTRIBUTES = NANO30_PIN_ATTRIBUTES -export const ArduinoNanoATmega328P_FOOTPRINT = FOOTPRINT_F30 -export type ArduinoNanoATmega328PProps = ChipProps -export const ArduinoNanoATmega328P = (props: ArduinoNanoATmega328PProps) => ( - -) - -/** Arduino Nano Every — ATmega4809 Nano module. */ -export const ArduinoNanoEvery_PIN_LABELS = NANO30_PIN_LABELS -export const ArduinoNanoEvery_PIN_ATTRIBUTES = NANO30_PIN_ATTRIBUTES -export const ArduinoNanoEvery_FOOTPRINT = FOOTPRINT_F30 -export type ArduinoNanoEveryProps = ChipProps -export const ArduinoNanoEvery = (props: ArduinoNanoEveryProps) => ( - -) - -/** Arduino Nano 33 IoT — SAMD21 + wireless Nano module. */ -export const ArduinoNano33IoT_PIN_LABELS = NANO30_PIN_LABELS -export const ArduinoNano33IoT_PIN_ATTRIBUTES = NANO30_PIN_ATTRIBUTES -export const ArduinoNano33IoT_FOOTPRINT = FOOTPRINT_F30 -export type ArduinoNano33IoTProps = ChipProps -export const ArduinoNano33IoT = (props: ArduinoNano33IoTProps) => ( - -) - -/** Arduino Nano 33 BLE — nRF52840 Nano module. */ -export const ArduinoNano33BLE_PIN_LABELS = NANO30_PIN_LABELS -export const ArduinoNano33BLE_PIN_ATTRIBUTES = NANO30_PIN_ATTRIBUTES -export const ArduinoNano33BLE_FOOTPRINT = FOOTPRINT_F30 -export type ArduinoNano33BLEProps = ChipProps -export const ArduinoNano33BLE = (props: ArduinoNano33BLEProps) => ( - -) - -/** Arduino Nano 33 BLE Sense Rev2 — sensor-rich nRF52840 Nano module. */ -export const ArduinoNano33BLESenseRev2_PIN_LABELS = NANO30_PIN_LABELS -export const ArduinoNano33BLESenseRev2_PIN_ATTRIBUTES = NANO30_PIN_ATTRIBUTES -export const ArduinoNano33BLESenseRev2_FOOTPRINT = FOOTPRINT_F30 -export type ArduinoNano33BLESenseRev2Props = ChipProps -export const ArduinoNano33BLESenseRev2 = (props: ArduinoNano33BLESenseRev2Props) => ( - -) - -/** Arduino Nano ESP32 — ESP32-S3 Nano module. */ -export const ArduinoNanoESP32_PIN_LABELS = NANO30_PIN_LABELS -export const ArduinoNanoESP32_PIN_ATTRIBUTES = NANO30_PIN_ATTRIBUTES -export const ArduinoNanoESP32_FOOTPRINT = FOOTPRINT_F30 -export type ArduinoNanoESP32Props = ChipProps -export const ArduinoNanoESP32 = (props: ArduinoNanoESP32Props) => ( - -) - -/** Arduino Nano RP2040 Connect — RP2040 + wireless Nano module. */ -export const ArduinoNanoRP2040Connect_PIN_LABELS = NANO30_PIN_LABELS -export const ArduinoNanoRP2040Connect_PIN_ATTRIBUTES = NANO30_PIN_ATTRIBUTES -export const ArduinoNanoRP2040Connect_FOOTPRINT = FOOTPRINT_F30 -export type ArduinoNanoRP2040ConnectProps = ChipProps -export const ArduinoNanoRP2040Connect = (props: ArduinoNanoRP2040ConnectProps) => ( - -) - -/** Arduino Nano Matter — MGM240S Matter/Thread Nano module. */ -export const ArduinoNanoMatter_PIN_LABELS = NANO30_PIN_LABELS -export const ArduinoNanoMatter_PIN_ATTRIBUTES = NANO30_PIN_ATTRIBUTES -export const ArduinoNanoMatter_FOOTPRINT = FOOTPRINT_F30 -export type ArduinoNanoMatterProps = ChipProps -export const ArduinoNanoMatter = (props: ArduinoNanoMatterProps) => ( - -) - /** Raspberry Pi Pico H — headered RP2040 module. */ export const RaspberryPiPicoH_PIN_LABELS = PICO40_PIN_LABELS export const RaspberryPiPicoH_PIN_ATTRIBUTES = PICO40_PIN_ATTRIBUTES diff --git a/package.json b/package.json index f059404..3e6091c 100644 --- a/package.json +++ b/package.json @@ -33,10 +33,15 @@ "@tscircuit/props": "^0.0.604", "@types/bun": "^1.3.14", "@types/react": "^19.2.18", + "bun-match-svg": "^0.0.15", + "sharp": "0.32.6", "tscircuit": "^0.0.2193", "typescript": "^5.0.0" }, "patchedDependencies": { "@tscircuit/footprinter@0.0.387": "patches/@tscircuit%2Ffootprinter@0.0.387.patch" - } + }, + "trustedDependencies": [ + "sharp" + ] } diff --git a/tests/AdafruitFeatherESP32S3TFT.test.tsx b/tests/AdafruitFeatherESP32S3TFT.test.tsx new file mode 100644 index 0000000..626cb2b --- /dev/null +++ b/tests/AdafruitFeatherESP32S3TFT.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { AdafruitFeatherESP32S3TFT } from "../lib/AdafruitFeatherESP32S3TFT" + +test("Adafruit Feather ESP32-S3 TFT PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(AdafruitFeatherESP32S3TFT, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/AdafruitFeatherRP2350.test.tsx b/tests/AdafruitFeatherRP2350.test.tsx new file mode 100644 index 0000000..924afce --- /dev/null +++ b/tests/AdafruitFeatherRP2350.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { AdafruitFeatherRP2350 } from "../lib/AdafruitFeatherRP2350" + +test("Adafruit Feather RP2350 PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(AdafruitFeatherRP2350, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/AdafruitItsyBitsyESP32.test.tsx b/tests/AdafruitItsyBitsyESP32.test.tsx new file mode 100644 index 0000000..480d357 --- /dev/null +++ b/tests/AdafruitItsyBitsyESP32.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { AdafruitItsyBitsyESP32 } from "../lib/AdafruitItsyBitsyESP32" + +test("Adafruit ItsyBitsy ESP32 PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(AdafruitItsyBitsyESP32, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/AdafruitItsyBitsyM0Express.test.tsx b/tests/AdafruitItsyBitsyM0Express.test.tsx new file mode 100644 index 0000000..6bcd69a --- /dev/null +++ b/tests/AdafruitItsyBitsyM0Express.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { AdafruitItsyBitsyM0Express } from "../lib/AdafruitItsyBitsyM0Express" + +test("Adafruit ItsyBitsy M0 Express PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(AdafruitItsyBitsyM0Express, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/AdafruitItsyBitsyM4Express.test.tsx b/tests/AdafruitItsyBitsyM4Express.test.tsx new file mode 100644 index 0000000..8297f56 --- /dev/null +++ b/tests/AdafruitItsyBitsyM4Express.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { AdafruitItsyBitsyM4Express } from "../lib/AdafruitItsyBitsyM4Express" + +test("Adafruit ItsyBitsy M4 Express PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(AdafruitItsyBitsyM4Express, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/AdafruitItsyBitsyNRF52840Express.test.tsx b/tests/AdafruitItsyBitsyNRF52840Express.test.tsx new file mode 100644 index 0000000..900161f --- /dev/null +++ b/tests/AdafruitItsyBitsyNRF52840Express.test.tsx @@ -0,0 +1,17 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { AdafruitItsyBitsyNRF52840Express } from "../lib/AdafruitItsyBitsyNRF52840Express" + +test("Adafruit ItsyBitsy nRF52840 Express PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add( + React.createElement(AdafruitItsyBitsyNRF52840Express, { name: "U1" }), + ) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/AdafruitItsyBitsyRP2040.test.tsx b/tests/AdafruitItsyBitsyRP2040.test.tsx new file mode 100644 index 0000000..3afa7dd --- /dev/null +++ b/tests/AdafruitItsyBitsyRP2040.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { AdafruitItsyBitsyRP2040 } from "../lib/AdafruitItsyBitsyRP2040" + +test("Adafruit ItsyBitsy RP2040 PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(AdafruitItsyBitsyRP2040, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/AdafruitQTPyESP32S2.test.tsx b/tests/AdafruitQTPyESP32S2.test.tsx new file mode 100644 index 0000000..4af58ae --- /dev/null +++ b/tests/AdafruitQTPyESP32S2.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { AdafruitQTPyESP32S2 } from "../lib/AdafruitQTPyESP32S2" + +test("Adafruit QT Py ESP32-S2 PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(AdafruitQTPyESP32S2, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/AdafruitQTPyESP32S3.test.tsx b/tests/AdafruitQTPyESP32S3.test.tsx new file mode 100644 index 0000000..3864607 --- /dev/null +++ b/tests/AdafruitQTPyESP32S3.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { AdafruitQTPyESP32S3 } from "../lib/AdafruitQTPyESP32S3" + +test("Adafruit QT Py ESP32-S3 PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(AdafruitQTPyESP32S3, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/AdafruitQTPyNRF52840.test.tsx b/tests/AdafruitQTPyNRF52840.test.tsx new file mode 100644 index 0000000..a13f4af --- /dev/null +++ b/tests/AdafruitQTPyNRF52840.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { AdafruitQTPyNRF52840 } from "../lib/AdafruitQTPyNRF52840" + +test("Adafruit QT Py nRF52840 PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(AdafruitQTPyNRF52840, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/AdafruitQTPyRP2350.test.tsx b/tests/AdafruitQTPyRP2350.test.tsx new file mode 100644 index 0000000..47eba44 --- /dev/null +++ b/tests/AdafruitQTPyRP2350.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { AdafruitQTPyRP2350 } from "../lib/AdafruitQTPyRP2350" + +test("Adafruit QT Py RP2350 PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(AdafruitQTPyRP2350, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/AdafruitQTPySAMD21.test.tsx b/tests/AdafruitQTPySAMD21.test.tsx new file mode 100644 index 0000000..d4964fe --- /dev/null +++ b/tests/AdafruitQTPySAMD21.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { AdafruitQTPySAMD21 } from "../lib/AdafruitQTPySAMD21" + +test("Adafruit QT Py SAMD21 PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(AdafruitQTPySAMD21, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/ArduinoNano33BLE.test.tsx b/tests/ArduinoNano33BLE.test.tsx new file mode 100644 index 0000000..bc41ca4 --- /dev/null +++ b/tests/ArduinoNano33BLE.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { ArduinoNano33BLE } from "../lib/ArduinoNano33BLE" + +test("Arduino Nano 33 BLE PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(ArduinoNano33BLE, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/ArduinoNano33BLESenseRev2.test.tsx b/tests/ArduinoNano33BLESenseRev2.test.tsx new file mode 100644 index 0000000..d268b37 --- /dev/null +++ b/tests/ArduinoNano33BLESenseRev2.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { ArduinoNano33BLESenseRev2 } from "../lib/ArduinoNano33BLESenseRev2" + +test("Arduino Nano 33 BLE Sense Rev2 PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(ArduinoNano33BLESenseRev2, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/ArduinoNano33IoT.test.tsx b/tests/ArduinoNano33IoT.test.tsx new file mode 100644 index 0000000..14e233e --- /dev/null +++ b/tests/ArduinoNano33IoT.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { ArduinoNano33IoT } from "../lib/ArduinoNano33IoT" + +test("Arduino Nano 33 IoT PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(ArduinoNano33IoT, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/ArduinoNanoATmega328P.test.tsx b/tests/ArduinoNanoATmega328P.test.tsx new file mode 100644 index 0000000..a409f33 --- /dev/null +++ b/tests/ArduinoNanoATmega328P.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { ArduinoNanoATmega328P } from "../lib/ArduinoNanoATmega328P" + +test("Arduino Nano ATmega328P PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(ArduinoNanoATmega328P, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/ArduinoNanoESP32.test.tsx b/tests/ArduinoNanoESP32.test.tsx new file mode 100644 index 0000000..8f5a1b5 --- /dev/null +++ b/tests/ArduinoNanoESP32.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { ArduinoNanoESP32 } from "../lib/ArduinoNanoESP32" + +test("Arduino Nano ESP32 PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(ArduinoNanoESP32, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/ArduinoNanoEvery.test.tsx b/tests/ArduinoNanoEvery.test.tsx new file mode 100644 index 0000000..341dba9 --- /dev/null +++ b/tests/ArduinoNanoEvery.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { ArduinoNanoEvery } from "../lib/ArduinoNanoEvery" + +test("Arduino Nano Every PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(ArduinoNanoEvery, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/ArduinoNanoMatter.test.tsx b/tests/ArduinoNanoMatter.test.tsx new file mode 100644 index 0000000..bab1f6d --- /dev/null +++ b/tests/ArduinoNanoMatter.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { ArduinoNanoMatter } from "../lib/ArduinoNanoMatter" + +test("Arduino Nano Matter PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(ArduinoNanoMatter, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/ArduinoNanoRP2040Connect.test.tsx b/tests/ArduinoNanoRP2040Connect.test.tsx new file mode 100644 index 0000000..ed0d221 --- /dev/null +++ b/tests/ArduinoNanoRP2040Connect.test.tsx @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test" +import "bun-match-svg" +import React from "react" +import { Circuit } from "tscircuit" +import { ArduinoNanoRP2040Connect } from "../lib/ArduinoNanoRP2040Connect" + +test("Arduino Nano RP2040 Connect PCB and schematic snapshots", async () => { + const circuit = new Circuit() + circuit.add(React.createElement(ArduinoNanoRP2040Connect, { name: "U1" })) + await circuit.renderUntilSettled() + const pcbSvg = await circuit.getSvg({ view: "pcb" }) + const schematicSvg = await circuit.getSvg({ view: "schematic" }) + expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") + expect(schematicSvg).toMatchSvgSnapshot(import.meta.path, "schematic") +}) diff --git a/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg b/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg new file mode 100644 index 0000000..62adbeb --- /dev/null +++ b/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg @@ -0,0 +1 @@ +U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitFeatherESP32S3TFT-schematic.snap.svg b/tests/__snapshots__/AdafruitFeatherESP32S3TFT-schematic.snap.svg new file mode 100644 index 0000000..59ab60b --- /dev/null +++ b/tests/__snapshots__/AdafruitFeatherESP32S3TFT-schematic.snap.svg @@ -0,0 +1,12 @@ +5483Adafruit Feather ESP32-S3 TFT1VBAT2EN3VBUS4D135D126D117D108D99D610D511SCL12SDA13RESET143V3153V3_216GND17A018A119A220A321A422A523SCK24MOSI25MISO26RX27TX28TXD0 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg b/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg new file mode 100644 index 0000000..4629372 --- /dev/null +++ b/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg @@ -0,0 +1 @@ +U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitFeatherRP2350-schematic.snap.svg b/tests/__snapshots__/AdafruitFeatherRP2350-schematic.snap.svg new file mode 100644 index 0000000..41fc79c --- /dev/null +++ b/tests/__snapshots__/AdafruitFeatherRP2350-schematic.snap.svg @@ -0,0 +1,12 @@ +6000Adafruit Feather RP23501VBAT2EN3VBUS4D75D46D117D108D99D610D511SCL12SDA13RESET143V3153V3_216GND17A018A119A220A321D2422D2523SCK24MOSI25MISO26RX27TX28PSRAM_CS \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg new file mode 100644 index 0000000..af8c3a3 --- /dev/null +++ b/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg @@ -0,0 +1 @@ +U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyESP32-schematic.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyESP32-schematic.snap.svg new file mode 100644 index 0000000..2780a40 --- /dev/null +++ b/tests/__snapshots__/AdafruitItsyBitsyESP32-schematic.snap.svg @@ -0,0 +1,12 @@ +5889Adafruit ItsyBitsy ESP321VBAT2GND3VBUS4D135D126D147D338D329D710D511SCL12SDA13TX14RX15GND_216MISO17MOSI18SCK19A520A421A322A223A124A025VHI26EN273V328RESET \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg new file mode 100644 index 0000000..760159e --- /dev/null +++ b/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg @@ -0,0 +1 @@ +U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyM0Express-schematic.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyM0Express-schematic.snap.svg new file mode 100644 index 0000000..acc7726 --- /dev/null +++ b/tests/__snapshots__/AdafruitItsyBitsyM0Express-schematic.snap.svg @@ -0,0 +1,12 @@ +3727Adafruit ItsyBitsy M0 Express1VBAT2GND3VBUS4D135D126D117D108D99D710D511SCL12SDA13TX14RX15D216MISO17MOSI18SCK19A520A421A322A223A124A025VHI26EN273V328RESET \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyM4Express-schematic.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyM4Express-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/AdafruitItsyBitsyM4Express-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg new file mode 100644 index 0000000..71a431e --- /dev/null +++ b/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg @@ -0,0 +1 @@ +U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-schematic.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-schematic.snap.svg new file mode 100644 index 0000000..be7fab4 --- /dev/null +++ b/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-schematic.snap.svg @@ -0,0 +1,12 @@ +4481Adafruit ItsyBitsy nRF52840 Express1VBAT2GND3VBUS4D135D126D117D108D99D710D511SCL12SDA13TX_D114RX_D015D216MISO17MOSI18SCK19A520A421A322A223A124A025VHI26EN273V328RESET \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyRP2040-schematic.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyRP2040-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/AdafruitItsyBitsyRP2040-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S2-schematic.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S2-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/AdafruitQTPyESP32S2-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S3-schematic.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S3-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/AdafruitQTPyESP32S3-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyNRF52840-schematic.snap.svg b/tests/__snapshots__/AdafruitQTPyNRF52840-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/AdafruitQTPyNRF52840-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyRP2350-schematic.snap.svg b/tests/__snapshots__/AdafruitQTPyRP2350-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/AdafruitQTPyRP2350-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPySAMD21-schematic.snap.svg b/tests/__snapshots__/AdafruitQTPySAMD21-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/AdafruitQTPySAMD21-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLE-schematic.snap.svg b/tests/__snapshots__/ArduinoNano33BLE-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/ArduinoNano33BLE-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLESenseRev2-schematic.snap.svg b/tests/__snapshots__/ArduinoNano33BLESenseRev2-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/ArduinoNano33BLESenseRev2-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33IoT-schematic.snap.svg b/tests/__snapshots__/ArduinoNano33IoT-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/ArduinoNano33IoT-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoATmega328P-schematic.snap.svg b/tests/__snapshots__/ArduinoNanoATmega328P-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/ArduinoNanoATmega328P-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg new file mode 100644 index 0000000..fb40ec9 --- /dev/null +++ b/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg @@ -0,0 +1 @@ +U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoESP32-schematic.snap.svg b/tests/__snapshots__/ArduinoNanoESP32-schematic.snap.svg new file mode 100644 index 0000000..d570b38 --- /dev/null +++ b/tests/__snapshots__/ArduinoNanoESP32-schematic.snap.svg @@ -0,0 +1,12 @@ +ABX00083Arduino Nano ESP321TX2RX3RESET4GND5D26D37D48D59D610D711D812D913D1014D1115D1216D13173V318B019A020A121A222A323A424A525A626A727VUSB28B129GND_230VIN \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoEvery-schematic.snap.svg b/tests/__snapshots__/ArduinoNanoEvery-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/ArduinoNanoEvery-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoMatter-schematic.snap.svg b/tests/__snapshots__/ArduinoNanoMatter-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/ArduinoNanoMatter-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg new file mode 100644 index 0000000..cd7cb5e --- /dev/null +++ b/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoRP2040Connect-schematic.snap.svg b/tests/__snapshots__/ArduinoNanoRP2040Connect-schematic.snap.svg new file mode 100644 index 0000000..cb8d946 --- /dev/null +++ b/tests/__snapshots__/ArduinoNanoRP2040Connect-schematic.snap.svg @@ -0,0 +1,12 @@ + \ No newline at end of file From e42866673404710964f86ef85592f8638e3c65b8 Mon Sep 17 00:00:00 2001 From: seveibar Date: Sun, 2 Aug 2026 13:27:18 -0700 Subject: [PATCH 2/8] Normalize power pin identifiers and guard snapshots --- lib/AdafruitFeatherESP32S2.tsx | 4 ++-- lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx | 4 ++-- lib/AdafruitFeatherESP32S3TFT.tsx | 4 ++-- lib/AdafruitFeatherESP32V2.tsx | 2 +- lib/AdafruitFeatherNRF52840Express.tsx | 2 +- lib/AdafruitFeatherSTM32F405Express.tsx | 4 ++-- lib/AdafruitItsyBitsyESP32.tsx | 2 +- lib/AdafruitItsyBitsyM0Express.tsx | 2 +- lib/AdafruitItsyBitsyM4Express.tsx | 6 +++--- lib/AdafruitItsyBitsyNRF52840Express.tsx | 2 +- lib/AdafruitItsyBitsyRP2040.tsx | 12 ++++++------ lib/AdafruitQTPyESP32S2.tsx | 10 +++++----- lib/AdafruitQTPyESP32S3.tsx | 10 +++++----- lib/AdafruitQTPyNRF52840.tsx | 10 +++++----- lib/AdafruitQTPyRP2350.tsx | 10 +++++----- lib/AdafruitQTPySAMD21.tsx | 10 +++++----- lib/ArduinoNano33BLE.tsx | 6 +++--- lib/ArduinoNano33BLESenseRev2.tsx | 6 +++--- lib/ArduinoNano33IoT.tsx | 6 +++--- lib/ArduinoNanoATmega328P.tsx | 6 +++--- lib/ArduinoNanoEvery.tsx | 6 +++--- lib/ArduinoNanoMatter.tsx | 12 ++++++------ lib/ArduinoNanoRP2040Connect.tsx | 6 +++--- tests/AdafruitFeatherESP32S3TFT.test.tsx | 5 +++++ tests/AdafruitFeatherRP2350.test.tsx | 5 +++++ tests/AdafruitItsyBitsyESP32.test.tsx | 5 +++++ tests/AdafruitItsyBitsyM0Express.test.tsx | 5 +++++ tests/AdafruitItsyBitsyM4Express.test.tsx | 5 +++++ tests/AdafruitItsyBitsyNRF52840Express.test.tsx | 5 +++++ tests/AdafruitItsyBitsyRP2040.test.tsx | 5 +++++ tests/AdafruitQTPyESP32S2.test.tsx | 5 +++++ tests/AdafruitQTPyESP32S3.test.tsx | 5 +++++ tests/AdafruitQTPyNRF52840.test.tsx | 5 +++++ tests/AdafruitQTPyRP2350.test.tsx | 5 +++++ tests/AdafruitQTPySAMD21.test.tsx | 5 +++++ tests/ArduinoNano33BLE.test.tsx | 5 +++++ tests/ArduinoNano33BLESenseRev2.test.tsx | 5 +++++ tests/ArduinoNano33IoT.test.tsx | 5 +++++ tests/ArduinoNanoATmega328P.test.tsx | 5 +++++ tests/ArduinoNanoESP32.test.tsx | 5 +++++ tests/ArduinoNanoEvery.test.tsx | 5 +++++ tests/ArduinoNanoMatter.test.tsx | 5 +++++ tests/ArduinoNanoRP2040Connect.test.tsx | 5 +++++ .../AdafruitItsyBitsyM4Express-pcb.snap.svg | 2 +- .../AdafruitItsyBitsyM4Express-schematic.snap.svg | 4 ++-- .../AdafruitItsyBitsyRP2040-pcb.snap.svg | 2 +- .../AdafruitItsyBitsyRP2040-schematic.snap.svg | 4 ++-- tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg | 2 +- .../AdafruitQTPyESP32S2-schematic.snap.svg | 4 ++-- tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg | 2 +- .../AdafruitQTPyESP32S3-schematic.snap.svg | 4 ++-- .../__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg | 2 +- .../AdafruitQTPyNRF52840-schematic.snap.svg | 4 ++-- tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg | 2 +- .../AdafruitQTPyRP2350-schematic.snap.svg | 4 ++-- tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg | 2 +- .../AdafruitQTPySAMD21-schematic.snap.svg | 4 ++-- tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg | 2 +- .../ArduinoNano33BLE-schematic.snap.svg | 4 ++-- .../ArduinoNano33BLESenseRev2-pcb.snap.svg | 2 +- .../ArduinoNano33BLESenseRev2-schematic.snap.svg | 4 ++-- tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg | 2 +- .../ArduinoNano33IoT-schematic.snap.svg | 4 ++-- .../__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg | 2 +- .../ArduinoNanoATmega328P-schematic.snap.svg | 4 ++-- tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg | 2 +- .../ArduinoNanoEvery-schematic.snap.svg | 4 ++-- tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg | 2 +- .../ArduinoNanoMatter-schematic.snap.svg | 4 ++-- .../ArduinoNanoRP2040Connect-pcb.snap.svg | 2 +- .../ArduinoNanoRP2040Connect-schematic.snap.svg | 4 ++-- 71 files changed, 213 insertions(+), 113 deletions(-) diff --git a/lib/AdafruitFeatherESP32S2.tsx b/lib/AdafruitFeatherESP32S2.tsx index 2ddf1f0..4e315f8 100644 --- a/lib/AdafruitFeatherESP32S2.tsx +++ b/lib/AdafruitFeatherESP32S2.tsx @@ -22,8 +22,8 @@ export const ADAFRUIT_FEATHER_ESP32_S2_PIN_LABELS = { // Long row, USB end to opposite end. The final position is the board's // debug UART TX connection rather than a general-purpose GPIO. pin13: ["RST", "RESET"], - pin14: ["3V3", "3.3V"], - pin15: ["3V3_2", "3V3", "3.3V"], + pin14: ["3V3", "V3_3"], + pin15: ["3V3_2", "3V3", "V3_3"], pin16: ["GND"], pin17: ["A0", "GPIO18", "ADC2_CH7", "DAC_2"], pin18: ["A1", "GPIO17", "ADC2_CH6", "DAC_1"], diff --git a/lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx b/lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx index 8907329..02c6281 100644 --- a/lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx +++ b/lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx @@ -22,8 +22,8 @@ export const ADAFRUIT_FEATHER_ESP32_S3_4MB_FLASH_2MB_PSRAM_PIN_LABELS = { // Long row, USB end to opposite end. The final position is the board's // debug UART TX connection rather than a general-purpose GPIO. pin13: ["RST", "RESET"], - pin14: ["3V3", "3.3V"], - pin15: ["3V3_2", "3V3", "3.3V"], + pin14: ["3V3", "V3_3"], + pin15: ["3V3_2", "3V3", "V3_3"], pin16: ["GND"], pin17: ["A0", "GPIO18", "ADC2_CH7"], pin18: ["A1", "GPIO17", "ADC2_CH6"], diff --git a/lib/AdafruitFeatherESP32S3TFT.tsx b/lib/AdafruitFeatherESP32S3TFT.tsx index c3434d1..28f4dd4 100644 --- a/lib/AdafruitFeatherESP32S3TFT.tsx +++ b/lib/AdafruitFeatherESP32S3TFT.tsx @@ -18,8 +18,8 @@ export const ADAFRUIT_FEATHER_ESP32_S3_TFT_PIN_LABELS = { pin11: ["SCL", "GPIO4"], pin12: ["SDA", "GPIO3"], pin13: ["RESET", "RST"], - pin14: ["3V3", "3.3V"], - pin15: ["3V3_2", "3.3V"], + pin14: ["3V3", "V3_3"], + pin15: ["3V3_2", "V3_3"], pin16: ["GND"], pin17: ["A0"], pin18: ["A1"], diff --git a/lib/AdafruitFeatherESP32V2.tsx b/lib/AdafruitFeatherESP32V2.tsx index bf9438e..52d9df4 100644 --- a/lib/AdafruitFeatherESP32V2.tsx +++ b/lib/AdafruitFeatherESP32V2.tsx @@ -22,7 +22,7 @@ export const ADAFRUIT_FEATHER_ESP32_V2_PIN_LABELS = { // Long row, USB end to opposite end. The AREF position is an unconnected // hole on the ESP32 V2; D37 is the input-only GPIO at the last position. pin13: ["RST", "RESET"], - pin14: ["3V3", "3.3V"], + pin14: ["3V3", "V3_3"], pin15: ["NC"], pin16: ["GND"], pin17: ["A0", "GPIO26", "ADC2_CH9", "DAC2"], diff --git a/lib/AdafruitFeatherNRF52840Express.tsx b/lib/AdafruitFeatherNRF52840Express.tsx index 2dfb1b2..1588f72 100644 --- a/lib/AdafruitFeatherNRF52840Express.tsx +++ b/lib/AdafruitFeatherNRF52840Express.tsx @@ -22,7 +22,7 @@ export const ADAFRUIT_FEATHER_NRF52840_EXPRESS_PIN_LABELS = { // Long row, USB end to opposite end. pin13: ["RST", "RESET"], - pin14: ["3V", "3V3", "3.3V"], + pin14: ["3V", "3V3", "V3_3"], pin15: ["AREF", "A7", "21", "P0.31", "AIN7"], pin16: ["GND"], pin17: ["A0", "14", "P0.04", "AIN2"], diff --git a/lib/AdafruitFeatherSTM32F405Express.tsx b/lib/AdafruitFeatherSTM32F405Express.tsx index df57a24..a20514d 100644 --- a/lib/AdafruitFeatherSTM32F405Express.tsx +++ b/lib/AdafruitFeatherSTM32F405Express.tsx @@ -23,8 +23,8 @@ export const ADAFRUIT_FEATHER_STM32F405_EXPRESS_PIN_LABELS = { // Long row, USB end to opposite end. This board uses both 3V3 holes and // exposes BOOT0 at the last header position instead of an Arduino D4 pin. pin13: ["RST", "RESET"], - pin14: ["3V3", "3.3V"], - pin15: ["3V3_2", "3V3", "3.3V"], + pin14: ["3V3", "V3_3"], + pin15: ["3V3_2", "3V3", "V3_3"], pin16: ["GND"], pin17: ["A0", "GPIO16", "PA4", "DAC_OUT1"], pin18: ["A1", "GPIO17", "PA5", "DAC_OUT2"], diff --git a/lib/AdafruitItsyBitsyESP32.tsx b/lib/AdafruitItsyBitsyESP32.tsx index 0cc555e..9d4d2b4 100644 --- a/lib/AdafruitItsyBitsyESP32.tsx +++ b/lib/AdafruitItsyBitsyESP32.tsx @@ -31,7 +31,7 @@ export const ADAFRUIT_ITSYBITSY_ESP32_PIN_LABELS = { pin24: ["A0", "GPIO25"], pin25: ["VHI"], pin26: ["EN"], - pin27: ["3V3", "3.3V"], + pin27: ["3V3", "V3_3"], pin28: ["RESET", "RST"], } as const diff --git a/lib/AdafruitItsyBitsyM0Express.tsx b/lib/AdafruitItsyBitsyM0Express.tsx index 9500937..baf3a66 100644 --- a/lib/AdafruitItsyBitsyM0Express.tsx +++ b/lib/AdafruitItsyBitsyM0Express.tsx @@ -32,7 +32,7 @@ export const ADAFRUIT_ITSYBITSY_M0_EXPRESS_PIN_LABELS = { pin24: ["A0", "PA02", "DAC0"], pin25: ["VHI"], pin26: ["EN"], - pin27: ["3V3", "3.3V"], + pin27: ["3V3", "V3_3"], pin28: ["RESET", "RST"], } as const diff --git a/lib/AdafruitItsyBitsyM4Express.tsx b/lib/AdafruitItsyBitsyM4Express.tsx index ccc72ba..d6d9305 100644 --- a/lib/AdafruitItsyBitsyM4Express.tsx +++ b/lib/AdafruitItsyBitsyM4Express.tsx @@ -32,7 +32,7 @@ export const ADAFRUIT_ITSYBITSY_M4_EXPRESS_PIN_LABELS = { pin24: ["A0"], pin25: ["VHI"], pin26: ["AREF"], - pin27: ["+3V3", "3V3"], + pin27: ["V3_3", "3V3"], pin28: ["RESET", "RST"], } as const @@ -82,7 +82,7 @@ export const ADAFRUIT_ITSYBITSY_M4_EXPRESS_PIN_ATTRIBUTES = { A0: GPIO, VHI: { includeInBoardPinout: true }, AREF: { includeInBoardPinout: true }, - "+3V3": { + V3_3: { providesPower: true, providesVoltage: "3.3V", includeInBoardPinout: true, @@ -137,7 +137,7 @@ export const AdafruitItsyBitsyM4Express = ( "A0", "VHI", "AREF", - "+3V3", + "V3_3", "RESET", ], }, diff --git a/lib/AdafruitItsyBitsyNRF52840Express.tsx b/lib/AdafruitItsyBitsyNRF52840Express.tsx index 8145f8f..4bfcf9f 100644 --- a/lib/AdafruitItsyBitsyNRF52840Express.tsx +++ b/lib/AdafruitItsyBitsyNRF52840Express.tsx @@ -31,7 +31,7 @@ export const ADAFRUIT_ITSYBITSY_NRF52840_EXPRESS_PIN_LABELS = { pin24: ["A0"], pin25: ["VHI"], pin26: ["EN"], - pin27: ["3V3", "3.3V"], + pin27: ["3V3", "V3_3"], pin28: ["RESET", "RST"], } as const diff --git a/lib/AdafruitItsyBitsyRP2040.tsx b/lib/AdafruitItsyBitsyRP2040.tsx index cecbfe1..a9e4e76 100644 --- a/lib/AdafruitItsyBitsyRP2040.tsx +++ b/lib/AdafruitItsyBitsyRP2040.tsx @@ -31,8 +31,8 @@ export const ADAFRUIT_ITSYBITSY_RP2040_PIN_LABELS = { pin23: ["A1", "GP27", "GPIO27"], pin24: ["A0", "GP26", "GPIO26"], pin25: ["VHI"], - pin26: ["+3V3", "3V3"], - pin27: ["+3V3_2", "3V3"], + pin26: ["V3_3", "3V3"], + pin27: ["V3_3_2", "3V3"], pin28: ["RESET", "RUN", "RST"], } as const @@ -72,12 +72,12 @@ export const ADAFRUIT_ITSYBITSY_RP2040_PIN_ATTRIBUTES = { A1: rp2040Gpio(27), A0: rp2040Gpio(26), VHI: { includeInBoardPinout: true }, - "+3V3": { + V3_3: { providesPower: true, providesVoltage: "3.3V", includeInBoardPinout: true, }, - "+3V3_2": { + V3_3_2: { providesPower: true, providesVoltage: "3.3V", includeInBoardPinout: true, @@ -131,8 +131,8 @@ export const AdafruitItsyBitsyRP2040 = ( "A1", "A0", "VHI", - "+3V3", - "+3V3_2", + "V3_3", + "V3_3_2", "RESET", ], }, diff --git a/lib/AdafruitQTPyESP32S2.tsx b/lib/AdafruitQTPyESP32S2.tsx index 68a7018..92aa411 100644 --- a/lib/AdafruitQTPyESP32S2.tsx +++ b/lib/AdafruitQTPyESP32S2.tsx @@ -16,9 +16,9 @@ export const ADAFRUIT_QT_PY_ESP32_S2_PIN_LABELS = { pin9: ["SCK", "GPIO36"], pin10: ["MISO", "GPIO37"], pin11: ["MOSI", "GPIO35"], - pin12: ["3.3V", "3V3"], + pin12: ["V3_3", "3V3"], pin13: ["GND"], - pin14: ["+5V", "5V"], + pin14: ["V5", "5V"], } as const const GPIO = { @@ -57,7 +57,7 @@ export const ADAFRUIT_QT_PY_ESP32_S2_PIN_ATTRIBUTES = { SCK: SPI_SCK, MISO: SPI_MISO, MOSI: SPI_MOSI, - "3.3V": { + V3_3: { providesPower: true, providesVoltage: "3.3V", includeInBoardPinout: true, @@ -67,7 +67,7 @@ export const ADAFRUIT_QT_PY_ESP32_S2_PIN_ATTRIBUTES = { providesGround: true, includeInBoardPinout: true, }, - "+5V": { + V5: { requiresPower: true, providesPower: true, requiresVoltage: "5V", @@ -112,7 +112,7 @@ export const AdafruitQTPyESP32S2 = (props: AdafruitQTPyESP32S2Props) => ( }, rightSide: { direction: "top-to-bottom", - pins: ["RX", "SCK", "MISO", "MOSI", "3.3V", "GND", "+5V"], + pins: ["RX", "SCK", "MISO", "MOSI", "V3_3", "GND", "V5"], }, }} /> diff --git a/lib/AdafruitQTPyESP32S3.tsx b/lib/AdafruitQTPyESP32S3.tsx index 8403e40..0918ca9 100644 --- a/lib/AdafruitQTPyESP32S3.tsx +++ b/lib/AdafruitQTPyESP32S3.tsx @@ -16,9 +16,9 @@ export const ADAFRUIT_QT_PY_ESP32_S3_PIN_LABELS = { pin9: ["SCK", "GPIO36"], pin10: ["MISO", "GPIO37"], pin11: ["MOSI", "GPIO35"], - pin12: ["3.3V", "3V3"], + pin12: ["V3_3", "3V3"], pin13: ["GND"], - pin14: ["+5V", "5V"], + pin14: ["V5", "5V"], } as const const GPIO = { @@ -57,7 +57,7 @@ export const ADAFRUIT_QT_PY_ESP32_S3_PIN_ATTRIBUTES = { SCK: SPI_SCK, MISO: SPI_MISO, MOSI: SPI_MOSI, - "3.3V": { + V3_3: { providesPower: true, providesVoltage: "3.3V", includeInBoardPinout: true, @@ -67,7 +67,7 @@ export const ADAFRUIT_QT_PY_ESP32_S3_PIN_ATTRIBUTES = { providesGround: true, includeInBoardPinout: true, }, - "+5V": { + V5: { requiresPower: true, providesPower: true, requiresVoltage: "5V", @@ -112,7 +112,7 @@ export const AdafruitQTPyESP32S3 = (props: AdafruitQTPyESP32S3Props) => ( }, rightSide: { direction: "top-to-bottom", - pins: ["RX", "SCK", "MISO", "MOSI", "3.3V", "GND", "+5V"], + pins: ["RX", "SCK", "MISO", "MOSI", "V3_3", "GND", "V5"], }, }} /> diff --git a/lib/AdafruitQTPyNRF52840.tsx b/lib/AdafruitQTPyNRF52840.tsx index 12b04cd..1468d9c 100644 --- a/lib/AdafruitQTPyNRF52840.tsx +++ b/lib/AdafruitQTPyNRF52840.tsx @@ -23,9 +23,9 @@ export const ADAFRUIT_QT_PY_NRF52840_PIN_LABELS = { pin9: ["SCK"], pin10: ["MISO"], pin11: ["MOSI"], - pin12: ["3.3V", "3V3"], + pin12: ["V3_3", "3V3"], pin13: ["GND"], - pin14: ["+5V", "5V"], + pin14: ["V5", "5V"], } as const const GPIO = { @@ -64,7 +64,7 @@ export const ADAFRUIT_QT_PY_NRF52840_PIN_ATTRIBUTES = { SCK: SPI_SCK, MISO: SPI_MISO, MOSI: SPI_MOSI, - "3.3V": { + V3_3: { providesPower: true, providesVoltage: "3.3V", includeInBoardPinout: true, @@ -74,7 +74,7 @@ export const ADAFRUIT_QT_PY_NRF52840_PIN_ATTRIBUTES = { providesGround: true, includeInBoardPinout: true, }, - "+5V": { + V5: { requiresPower: true, providesPower: true, requiresVoltage: "5V", @@ -118,7 +118,7 @@ export const AdafruitQTPyNRF52840 = (props: AdafruitQTPyNRF52840Props) => ( }, rightSide: { direction: "top-to-bottom", - pins: ["RX_A7", "SCK", "MISO", "MOSI", "3.3V", "GND", "+5V"], + pins: ["RX_A7", "SCK", "MISO", "MOSI", "V3_3", "GND", "V5"], }, }} /> diff --git a/lib/AdafruitQTPyRP2350.tsx b/lib/AdafruitQTPyRP2350.tsx index cac894d..7a88e98 100644 --- a/lib/AdafruitQTPyRP2350.tsx +++ b/lib/AdafruitQTPyRP2350.tsx @@ -22,9 +22,9 @@ export const ADAFRUIT_QT_PY_RP2350_PIN_LABELS = { pin9: ["SCK"], pin10: ["MISO"], pin11: ["MOSI"], - pin12: ["+3V3", "3V3"], + pin12: ["V3_3", "3V3"], pin13: ["GND"], - pin14: ["+5V", "5V"], + pin14: ["V5", "5V"], } as const const GPIO = { @@ -63,7 +63,7 @@ export const ADAFRUIT_QT_PY_RP2350_PIN_ATTRIBUTES = { SCK: SPI_SCK, MISO: SPI_MISO, MOSI: SPI_MOSI, - "+3V3": { + V3_3: { providesPower: true, providesVoltage: "3.3V", includeInBoardPinout: true, @@ -73,7 +73,7 @@ export const ADAFRUIT_QT_PY_RP2350_PIN_ATTRIBUTES = { providesGround: true, includeInBoardPinout: true, }, - "+5V": { + V5: { requiresPower: true, providesPower: true, requiresVoltage: "5V", @@ -117,7 +117,7 @@ export const AdafruitQTPyRP2350 = (props: AdafruitQTPyRP2350Props) => ( }, rightSide: { direction: "top-to-bottom", - pins: ["RX", "SCK", "MISO", "MOSI", "+3V3", "GND", "+5V"], + pins: ["RX", "SCK", "MISO", "MOSI", "V3_3", "GND", "V5"], }, }} /> diff --git a/lib/AdafruitQTPySAMD21.tsx b/lib/AdafruitQTPySAMD21.tsx index 6ec671b..56a32c6 100644 --- a/lib/AdafruitQTPySAMD21.tsx +++ b/lib/AdafruitQTPySAMD21.tsx @@ -17,9 +17,9 @@ export const ADAFRUIT_QT_PY_SAMD21_PIN_LABELS = { pin9: ["SCK"], pin10: ["MISO"], pin11: ["MOSI"], - pin12: ["3.3V", "3V3"], + pin12: ["V3_3", "3V3"], pin13: ["GND"], - pin14: ["+5V", "5V"], + pin14: ["V5", "5V"], } as const export const ADAFRUIT_QT_PY_SAMD21_PIN_ATTRIBUTES = { @@ -40,7 +40,7 @@ export const ADAFRUIT_QT_PY_SAMD21_PIN_ATTRIBUTES = { SCK: samdGpio(["spi_sck"]), MISO: samdGpio(["spi_miso"]), MOSI: samdGpio(["spi_mosi"]), - "3.3V": { + V3_3: { providesPower: true, providesVoltage: "3.3V", includeInBoardPinout: true, @@ -50,7 +50,7 @@ export const ADAFRUIT_QT_PY_SAMD21_PIN_ATTRIBUTES = { providesGround: true, includeInBoardPinout: true, }, - "+5V": { + V5: { requiresPower: true, providesPower: true, requiresVoltage: "5V", @@ -95,7 +95,7 @@ export const AdafruitQTPySAMD21 = (props: AdafruitQTPySAMD21Props) => ( }, rightSide: { direction: "top-to-bottom", - pins: ["RX_A7", "SCK", "MISO", "MOSI", "3.3V", "GND", "+5V"], + pins: ["RX_A7", "SCK", "MISO", "MOSI", "V3_3", "GND", "V5"], }, }} /> diff --git a/lib/ArduinoNano33BLE.tsx b/lib/ArduinoNano33BLE.tsx index 2e1dba4..d8f1985 100644 --- a/lib/ArduinoNano33BLE.tsx +++ b/lib/ArduinoNano33BLE.tsx @@ -31,7 +31,7 @@ export const ARDUINO_NANO_33_BLE_PIN_LABELS = { pin24: ["A5", "SCL"], pin25: ["A6"], pin26: ["A7"], - pin27: ["+5V", "5V"], + pin27: ["V5", "5V"], pin28: ["RESET_2", "RST"], pin29: ["GND_2", "GND"], pin30: ["VIN"], @@ -97,7 +97,7 @@ export const ARDUINO_NANO_33_BLE_PIN_ATTRIBUTES = { A5: I2C_SCL, A6: GPIO, A7: GPIO, - "+5V": { + V5: { requiresPower: true, providesPower: true, requiresVoltage: "5V", @@ -177,7 +177,7 @@ export const ArduinoNano33BLE = (props: ArduinoNano33BLEProps) => ( "A5", "A6", "A7", - "+5V", + "V5", "RESET_2", "GND_2", "VIN", diff --git a/lib/ArduinoNano33BLESenseRev2.tsx b/lib/ArduinoNano33BLESenseRev2.tsx index 45a3816..0846b18 100644 --- a/lib/ArduinoNano33BLESenseRev2.tsx +++ b/lib/ArduinoNano33BLESenseRev2.tsx @@ -31,7 +31,7 @@ export const ARDUINO_NANO_33_BLE_SENSE_REV2_PIN_LABELS = { pin24: ["A5", "SCL"], pin25: ["A6"], pin26: ["A7"], - pin27: ["+5V", "5V"], + pin27: ["V5", "5V"], pin28: ["RESET_2", "RST"], pin29: ["GND_2", "GND"], pin30: ["VIN"], @@ -97,7 +97,7 @@ export const ARDUINO_NANO_33_BLE_SENSE_REV2_PIN_ATTRIBUTES = { A5: I2C_SCL, A6: GPIO, A7: GPIO, - "+5V": { + V5: { requiresPower: true, providesPower: true, requiresVoltage: "5V", @@ -179,7 +179,7 @@ export const ArduinoNano33BLESenseRev2 = ( "A5", "A6", "A7", - "+5V", + "V5", "RESET_2", "GND_2", "VIN", diff --git a/lib/ArduinoNano33IoT.tsx b/lib/ArduinoNano33IoT.tsx index 31c0aac..fc6c27b 100644 --- a/lib/ArduinoNano33IoT.tsx +++ b/lib/ArduinoNano33IoT.tsx @@ -31,7 +31,7 @@ export const ARDUINO_NANO_33_IOT_PIN_LABELS = { pin24: ["A5", "SCL"], pin25: ["A6"], pin26: ["A7"], - pin27: ["+5V", "5V"], + pin27: ["V5", "5V"], pin28: ["RESET_2", "RST"], pin29: ["GND_2", "GND"], pin30: ["VIN"], @@ -97,7 +97,7 @@ export const ARDUINO_NANO_33_IOT_PIN_ATTRIBUTES = { A5: I2C_SCL, A6: GPIO, A7: GPIO, - "+5V": { + V5: { requiresPower: true, providesPower: true, requiresVoltage: "5V", @@ -177,7 +177,7 @@ export const ArduinoNano33IoT = (props: ArduinoNano33IoTProps) => ( "A5", "A6", "A7", - "+5V", + "V5", "RESET_2", "GND_2", "VIN", diff --git a/lib/ArduinoNanoATmega328P.tsx b/lib/ArduinoNanoATmega328P.tsx index 76b8e57..04de3e6 100644 --- a/lib/ArduinoNanoATmega328P.tsx +++ b/lib/ArduinoNanoATmega328P.tsx @@ -31,7 +31,7 @@ export const ARDUINO_NANO_ATMEGA328P_PIN_LABELS = { pin24: ["A5", "SCL"], pin25: ["A6"], pin26: ["A7"], - pin27: ["+5V", "5V"], + pin27: ["V5", "5V"], pin28: ["RESET_2", "RST"], pin29: ["GND_2", "GND"], pin30: ["VIN"], @@ -97,7 +97,7 @@ export const ARDUINO_NANO_ATMEGA328P_PIN_ATTRIBUTES = { A5: I2C_SCL, A6: GPIO, A7: GPIO, - "+5V": { + V5: { requiresPower: true, providesPower: true, requiresVoltage: "5V", @@ -179,7 +179,7 @@ export const ArduinoNanoATmega328P = ( "A5", "A6", "A7", - "+5V", + "V5", "RESET_2", "GND_2", "VIN", diff --git a/lib/ArduinoNanoEvery.tsx b/lib/ArduinoNanoEvery.tsx index 1aacb2c..cde0f0a 100644 --- a/lib/ArduinoNanoEvery.tsx +++ b/lib/ArduinoNanoEvery.tsx @@ -31,7 +31,7 @@ export const ARDUINO_NANO_EVERY_PIN_LABELS = { pin24: ["A5", "SCL"], pin25: ["A6"], pin26: ["A7"], - pin27: ["+5V", "5V"], + pin27: ["V5", "5V"], pin28: ["RESET_2", "RST"], pin29: ["GND_2", "GND"], pin30: ["VIN"], @@ -97,7 +97,7 @@ export const ARDUINO_NANO_EVERY_PIN_ATTRIBUTES = { A5: I2C_SCL, A6: GPIO, A7: GPIO, - "+5V": { + V5: { requiresPower: true, providesPower: true, requiresVoltage: "5V", @@ -177,7 +177,7 @@ export const ArduinoNanoEvery = (props: ArduinoNanoEveryProps) => ( "A5", "A6", "A7", - "+5V", + "V5", "RESET_2", "GND_2", "VIN", diff --git a/lib/ArduinoNanoMatter.tsx b/lib/ArduinoNanoMatter.tsx index 37bd161..df02a2c 100644 --- a/lib/ArduinoNanoMatter.tsx +++ b/lib/ArduinoNanoMatter.tsx @@ -21,7 +21,7 @@ export const ARDUINO_NANO_MATTER_PIN_LABELS = { pin14: ["D11"], pin15: ["D12"], pin16: ["D13"], - pin17: ["+3V3", "3V3"], + pin17: ["V3_3", "3V3"], pin18: ["AREF"], pin19: ["A0"], pin20: ["A1"], @@ -31,7 +31,7 @@ export const ARDUINO_NANO_MATTER_PIN_LABELS = { pin24: ["A5", "SCL"], pin25: ["A6"], pin26: ["A7"], - pin27: ["+5V", "5V"], + pin27: ["V5", "5V"], pin28: ["NC"], pin29: ["GND_2", "GND"], pin30: ["VIN"], @@ -75,7 +75,7 @@ export const ARDUINO_NANO_MATTER_PIN_ATTRIBUTES = { D11: SPI_MOSI, D12: SPI_MISO, D13: SPI_SCK, - "+3V3": { + V3_3: { providesPower: true, providesVoltage: "3.3V", includeInBoardPinout: true, @@ -89,7 +89,7 @@ export const ARDUINO_NANO_MATTER_PIN_ATTRIBUTES = { A5: I2C_SCL, A6: GPIO, A7: GPIO, - "+5V": { + V5: { requiresPower: true, providesPower: true, requiresVoltage: "5V", @@ -159,7 +159,7 @@ export const ArduinoNanoMatter = (props: ArduinoNanoMatterProps) => ( direction: "top-to-bottom", pins: [ "D13", - "+3V3", + "V3_3", "AREF", "A0", "A1", @@ -169,7 +169,7 @@ export const ArduinoNanoMatter = (props: ArduinoNanoMatterProps) => ( "A5", "A6", "A7", - "+5V", + "V5", "NC", "GND_2", "VIN", diff --git a/lib/ArduinoNanoRP2040Connect.tsx b/lib/ArduinoNanoRP2040Connect.tsx index 92e756e..3fb10ad 100644 --- a/lib/ArduinoNanoRP2040Connect.tsx +++ b/lib/ArduinoNanoRP2040Connect.tsx @@ -31,7 +31,7 @@ export const ARDUINO_NANO_RP2040_CONNECT_PIN_LABELS = { pin24: ["A5", "SCL", "GPIO13"], pin25: ["A6"], pin26: ["A7"], - pin27: ["+5V", "5V"], + pin27: ["V5", "5V"], pin28: ["QSPI_CSn", "REC"], pin29: ["GND_2", "GND"], pin30: ["VIN"], @@ -89,7 +89,7 @@ export const ARDUINO_NANO_RP2040_CONNECT_PIN_ATTRIBUTES = { A5: I2C_SCL, A6: GPIO, A7: GPIO, - "+5V": { + V5: { requiresPower: true, providesPower: true, requiresVoltage: "5V", @@ -171,7 +171,7 @@ export const ArduinoNanoRP2040Connect = ( "A5", "A6", "A7", - "+5V", + "V5", "QSPI_CSn", "GND_2", "VIN", diff --git a/tests/AdafruitFeatherESP32S3TFT.test.tsx b/tests/AdafruitFeatherESP32S3TFT.test.tsx index 626cb2b..848121d 100644 --- a/tests/AdafruitFeatherESP32S3TFT.test.tsx +++ b/tests/AdafruitFeatherESP32S3TFT.test.tsx @@ -8,6 +8,11 @@ test("Adafruit Feather ESP32-S3 TFT PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(AdafruitFeatherESP32S3TFT, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/AdafruitFeatherRP2350.test.tsx b/tests/AdafruitFeatherRP2350.test.tsx index 924afce..af1c15a 100644 --- a/tests/AdafruitFeatherRP2350.test.tsx +++ b/tests/AdafruitFeatherRP2350.test.tsx @@ -8,6 +8,11 @@ test("Adafruit Feather RP2350 PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(AdafruitFeatherRP2350, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/AdafruitItsyBitsyESP32.test.tsx b/tests/AdafruitItsyBitsyESP32.test.tsx index 480d357..d54f405 100644 --- a/tests/AdafruitItsyBitsyESP32.test.tsx +++ b/tests/AdafruitItsyBitsyESP32.test.tsx @@ -8,6 +8,11 @@ test("Adafruit ItsyBitsy ESP32 PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(AdafruitItsyBitsyESP32, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/AdafruitItsyBitsyM0Express.test.tsx b/tests/AdafruitItsyBitsyM0Express.test.tsx index 6bcd69a..bf36567 100644 --- a/tests/AdafruitItsyBitsyM0Express.test.tsx +++ b/tests/AdafruitItsyBitsyM0Express.test.tsx @@ -8,6 +8,11 @@ test("Adafruit ItsyBitsy M0 Express PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(AdafruitItsyBitsyM0Express, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/AdafruitItsyBitsyM4Express.test.tsx b/tests/AdafruitItsyBitsyM4Express.test.tsx index 8297f56..43659e0 100644 --- a/tests/AdafruitItsyBitsyM4Express.test.tsx +++ b/tests/AdafruitItsyBitsyM4Express.test.tsx @@ -8,6 +8,11 @@ test("Adafruit ItsyBitsy M4 Express PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(AdafruitItsyBitsyM4Express, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/AdafruitItsyBitsyNRF52840Express.test.tsx b/tests/AdafruitItsyBitsyNRF52840Express.test.tsx index 900161f..590ced1 100644 --- a/tests/AdafruitItsyBitsyNRF52840Express.test.tsx +++ b/tests/AdafruitItsyBitsyNRF52840Express.test.tsx @@ -10,6 +10,11 @@ test("Adafruit ItsyBitsy nRF52840 Express PCB and schematic snapshots", async () React.createElement(AdafruitItsyBitsyNRF52840Express, { name: "U1" }), ) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/AdafruitItsyBitsyRP2040.test.tsx b/tests/AdafruitItsyBitsyRP2040.test.tsx index 3afa7dd..eb03b34 100644 --- a/tests/AdafruitItsyBitsyRP2040.test.tsx +++ b/tests/AdafruitItsyBitsyRP2040.test.tsx @@ -8,6 +8,11 @@ test("Adafruit ItsyBitsy RP2040 PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(AdafruitItsyBitsyRP2040, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/AdafruitQTPyESP32S2.test.tsx b/tests/AdafruitQTPyESP32S2.test.tsx index 4af58ae..c416570 100644 --- a/tests/AdafruitQTPyESP32S2.test.tsx +++ b/tests/AdafruitQTPyESP32S2.test.tsx @@ -8,6 +8,11 @@ test("Adafruit QT Py ESP32-S2 PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(AdafruitQTPyESP32S2, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/AdafruitQTPyESP32S3.test.tsx b/tests/AdafruitQTPyESP32S3.test.tsx index 3864607..085333f 100644 --- a/tests/AdafruitQTPyESP32S3.test.tsx +++ b/tests/AdafruitQTPyESP32S3.test.tsx @@ -8,6 +8,11 @@ test("Adafruit QT Py ESP32-S3 PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(AdafruitQTPyESP32S3, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/AdafruitQTPyNRF52840.test.tsx b/tests/AdafruitQTPyNRF52840.test.tsx index a13f4af..092344b 100644 --- a/tests/AdafruitQTPyNRF52840.test.tsx +++ b/tests/AdafruitQTPyNRF52840.test.tsx @@ -8,6 +8,11 @@ test("Adafruit QT Py nRF52840 PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(AdafruitQTPyNRF52840, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/AdafruitQTPyRP2350.test.tsx b/tests/AdafruitQTPyRP2350.test.tsx index 47eba44..9d93671 100644 --- a/tests/AdafruitQTPyRP2350.test.tsx +++ b/tests/AdafruitQTPyRP2350.test.tsx @@ -8,6 +8,11 @@ test("Adafruit QT Py RP2350 PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(AdafruitQTPyRP2350, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/AdafruitQTPySAMD21.test.tsx b/tests/AdafruitQTPySAMD21.test.tsx index d4964fe..b9a24dd 100644 --- a/tests/AdafruitQTPySAMD21.test.tsx +++ b/tests/AdafruitQTPySAMD21.test.tsx @@ -8,6 +8,11 @@ test("Adafruit QT Py SAMD21 PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(AdafruitQTPySAMD21, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/ArduinoNano33BLE.test.tsx b/tests/ArduinoNano33BLE.test.tsx index bc41ca4..aa1d5ec 100644 --- a/tests/ArduinoNano33BLE.test.tsx +++ b/tests/ArduinoNano33BLE.test.tsx @@ -8,6 +8,11 @@ test("Arduino Nano 33 BLE PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(ArduinoNano33BLE, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/ArduinoNano33BLESenseRev2.test.tsx b/tests/ArduinoNano33BLESenseRev2.test.tsx index d268b37..769c1f6 100644 --- a/tests/ArduinoNano33BLESenseRev2.test.tsx +++ b/tests/ArduinoNano33BLESenseRev2.test.tsx @@ -8,6 +8,11 @@ test("Arduino Nano 33 BLE Sense Rev2 PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(ArduinoNano33BLESenseRev2, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/ArduinoNano33IoT.test.tsx b/tests/ArduinoNano33IoT.test.tsx index 14e233e..c87ee1c 100644 --- a/tests/ArduinoNano33IoT.test.tsx +++ b/tests/ArduinoNano33IoT.test.tsx @@ -8,6 +8,11 @@ test("Arduino Nano 33 IoT PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(ArduinoNano33IoT, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/ArduinoNanoATmega328P.test.tsx b/tests/ArduinoNanoATmega328P.test.tsx index a409f33..f3fce4c 100644 --- a/tests/ArduinoNanoATmega328P.test.tsx +++ b/tests/ArduinoNanoATmega328P.test.tsx @@ -8,6 +8,11 @@ test("Arduino Nano ATmega328P PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(ArduinoNanoATmega328P, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/ArduinoNanoESP32.test.tsx b/tests/ArduinoNanoESP32.test.tsx index 8f5a1b5..1ae9953 100644 --- a/tests/ArduinoNanoESP32.test.tsx +++ b/tests/ArduinoNanoESP32.test.tsx @@ -8,6 +8,11 @@ test("Arduino Nano ESP32 PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(ArduinoNanoESP32, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/ArduinoNanoEvery.test.tsx b/tests/ArduinoNanoEvery.test.tsx index 341dba9..88fe584 100644 --- a/tests/ArduinoNanoEvery.test.tsx +++ b/tests/ArduinoNanoEvery.test.tsx @@ -8,6 +8,11 @@ test("Arduino Nano Every PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(ArduinoNanoEvery, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/ArduinoNanoMatter.test.tsx b/tests/ArduinoNanoMatter.test.tsx index bab1f6d..411ab09 100644 --- a/tests/ArduinoNanoMatter.test.tsx +++ b/tests/ArduinoNanoMatter.test.tsx @@ -8,6 +8,11 @@ test("Arduino Nano Matter PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(ArduinoNanoMatter, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/ArduinoNanoRP2040Connect.test.tsx b/tests/ArduinoNanoRP2040Connect.test.tsx index ed0d221..17247b9 100644 --- a/tests/ArduinoNanoRP2040Connect.test.tsx +++ b/tests/ArduinoNanoRP2040Connect.test.tsx @@ -8,6 +8,11 @@ test("Arduino Nano RP2040 Connect PCB and schematic snapshots", async () => { const circuit = new Circuit() circuit.add(React.createElement(ArduinoNanoRP2040Connect, { name: "U1" })) await circuit.renderUntilSettled() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type === "source_failed_to_create_component_error"), + ).toHaveLength(0) const pcbSvg = await circuit.getSvg({ view: "pcb" }) const schematicSvg = await circuit.getSvg({ view: "schematic" }) expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb") diff --git a/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg index cd7cb5e..38d37a8 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyM4Express-schematic.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyM4Express-schematic.snap.svg index cb8d946..210e656 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyM4Express-schematic.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyM4Express-schematic.snap.svg @@ -1,4 +1,4 @@ -3800Adafruit ItsyBitsy M4 Express1VBAT2GND3VBUS4D135D126D117D108D99D710D511SCL12SDA13TX_D114RX_D015D216MISO17MOSI18SCK19A520A421A322A223A124A025VHI26AREF27V3_328RESET \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg index cd7cb5e..d664109 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyRP2040-schematic.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyRP2040-schematic.snap.svg index cb8d946..5896ffb 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyRP2040-schematic.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyRP2040-schematic.snap.svg @@ -1,4 +1,4 @@ -4888Adafruit ItsyBitsy RP20401VBAT2GND3VBUS4D135D126D117D108D99D710D511SCL12SDA13TX14RX15D216MISO17MOSI18SCK19D2520D2421A322A223A124A025VHI26V3_327V3_3_228RESET \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg index cd7cb5e..ef2b85f 100644 --- a/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S2-schematic.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S2-schematic.snap.svg index cb8d946..826dc15 100644 --- a/tests/__snapshots__/AdafruitQTPyESP32S2-schematic.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyESP32S2-schematic.snap.svg @@ -1,4 +1,4 @@ -5325Adafruit QT Py ESP32-S21A02A13A24A35SDA6SCL7TX8RX9SCK10MISO11MOSI12V3_313GND14V5 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg index cd7cb5e..ef2b85f 100644 --- a/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S3-schematic.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S3-schematic.snap.svg index cb8d946..5a4d682 100644 --- a/tests/__snapshots__/AdafruitQTPyESP32S3-schematic.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyESP32S3-schematic.snap.svg @@ -1,4 +1,4 @@ -5426Adafruit QT Py ESP32-S31A02A13A24A35SDA6SCL7TX8RX9SCK10MISO11MOSI12V3_313GND14V5 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg index cd7cb5e..aee85d6 100644 --- a/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyNRF52840-schematic.snap.svg b/tests/__snapshots__/AdafruitQTPyNRF52840-schematic.snap.svg index cb8d946..b206cf5 100644 --- a/tests/__snapshots__/AdafruitQTPyNRF52840-schematic.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyNRF52840-schematic.snap.svg @@ -1,4 +1,4 @@ -Adafruit QT Py nRF52840 (planned footprint)1A02A13A24A35SDA6SCL7TX_A68RX_A79SCK10MISO11MOSI12V3_313GND14V5 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg index cd7cb5e..ef2b85f 100644 --- a/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyRP2350-schematic.snap.svg b/tests/__snapshots__/AdafruitQTPyRP2350-schematic.snap.svg index cb8d946..638cb86 100644 --- a/tests/__snapshots__/AdafruitQTPyRP2350-schematic.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyRP2350-schematic.snap.svg @@ -1,4 +1,4 @@ -Adafruit QT Py RP2350 (planned footprint)1A02A13A24A35SDA6SCL7TX8RX9SCK10MISO11MOSI12V3_313GND14V5 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg index cd7cb5e..aee85d6 100644 --- a/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPySAMD21-schematic.snap.svg b/tests/__snapshots__/AdafruitQTPySAMD21-schematic.snap.svg index cb8d946..9c3a68d 100644 --- a/tests/__snapshots__/AdafruitQTPySAMD21-schematic.snap.svg +++ b/tests/__snapshots__/AdafruitQTPySAMD21-schematic.snap.svg @@ -1,4 +1,4 @@ -4600Adafruit QT Py SAMD211A02A13A24A35SDA6SCL7TX_A68RX_A79SCK10MISO11MOSI12V3_313GND14V5 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg index cd7cb5e..341c8aa 100644 --- a/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLE-schematic.snap.svg b/tests/__snapshots__/ArduinoNano33BLE-schematic.snap.svg index cb8d946..ff4a18a 100644 --- a/tests/__snapshots__/ArduinoNano33BLE-schematic.snap.svg +++ b/tests/__snapshots__/ArduinoNano33BLE-schematic.snap.svg @@ -1,4 +1,4 @@ -ABX00030Arduino Nano 33 BLE1TX2RX3RESET4GND5D26D37D48D59D610D711D812D913D1014D1115D1216D13173V318AREF19A020A121A222A323A424A525A626A727V528RESET_229GND_230VIN \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg index cd7cb5e..341c8aa 100644 --- a/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLESenseRev2-schematic.snap.svg b/tests/__snapshots__/ArduinoNano33BLESenseRev2-schematic.snap.svg index cb8d946..2e09b60 100644 --- a/tests/__snapshots__/ArduinoNano33BLESenseRev2-schematic.snap.svg +++ b/tests/__snapshots__/ArduinoNano33BLESenseRev2-schematic.snap.svg @@ -1,4 +1,4 @@ -ABX00069Arduino Nano 33 BLE Sense Rev21TX2RX3RESET4GND5D26D37D48D59D610D711D812D913D1014D1115D1216D13173V318AREF19A020A121A222A323A424A525A626A727V528RESET_229GND_230VIN \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg index cd7cb5e..341c8aa 100644 --- a/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33IoT-schematic.snap.svg b/tests/__snapshots__/ArduinoNano33IoT-schematic.snap.svg index cb8d946..024f3bf 100644 --- a/tests/__snapshots__/ArduinoNano33IoT-schematic.snap.svg +++ b/tests/__snapshots__/ArduinoNano33IoT-schematic.snap.svg @@ -1,4 +1,4 @@ -ABX00027Arduino Nano 33 IoT1TX2RX3RESET4GND5D26D37D48D59D610D711D812D913D1014D1115D1216D13173V318AREF19A020A121A222A323A424A525A626A727V528RESET_229GND_230VIN \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg index cd7cb5e..341c8aa 100644 --- a/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoATmega328P-schematic.snap.svg b/tests/__snapshots__/ArduinoNanoATmega328P-schematic.snap.svg index cb8d946..e48914e 100644 --- a/tests/__snapshots__/ArduinoNanoATmega328P-schematic.snap.svg +++ b/tests/__snapshots__/ArduinoNanoATmega328P-schematic.snap.svg @@ -1,4 +1,4 @@ -A000005Arduino Nano ATmega328P1TX2RX3RESET4GND5D26D37D48D59D610D711D812D913D1014D1115D1216D13173V318AREF19A020A121A222A323A424A525A626A727V528RESET_229GND_230VIN \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg index cd7cb5e..341c8aa 100644 --- a/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoEvery-schematic.snap.svg b/tests/__snapshots__/ArduinoNanoEvery-schematic.snap.svg index cb8d946..9ef4678 100644 --- a/tests/__snapshots__/ArduinoNanoEvery-schematic.snap.svg +++ b/tests/__snapshots__/ArduinoNanoEvery-schematic.snap.svg @@ -1,4 +1,4 @@ -ABX00028Arduino Nano Every1TX2RX3RESET4GND5D26D37D48D59D610D711D812D913D1014D1115D1216D13173V318AREF19A020A121A222A323A424A525A626A727V528RESET_229GND_230VIN \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg index cd7cb5e..a1be415 100644 --- a/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoMatter-schematic.snap.svg b/tests/__snapshots__/ArduinoNanoMatter-schematic.snap.svg index cb8d946..f3de1d1 100644 --- a/tests/__snapshots__/ArduinoNanoMatter-schematic.snap.svg +++ b/tests/__snapshots__/ArduinoNanoMatter-schematic.snap.svg @@ -1,4 +1,4 @@ -ABX00112Arduino Nano Matter1D02D13RST4GND5D26D37D48D59D610D711D812D913D1014D1115D1216D1317V3_318AREF19A020A121A222A323A424A525A626A727V528NC29GND_230VIN \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg index cd7cb5e..43b687e 100644 --- a/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file +U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoRP2040Connect-schematic.snap.svg b/tests/__snapshots__/ArduinoNanoRP2040Connect-schematic.snap.svg index cb8d946..0c51efd 100644 --- a/tests/__snapshots__/ArduinoNanoRP2040Connect-schematic.snap.svg +++ b/tests/__snapshots__/ArduinoNanoRP2040Connect-schematic.snap.svg @@ -1,4 +1,4 @@ -ABX00053Arduino Nano RP2040 Connect1TX2RX3RESET4GND5D26D37D48D59D610D711D812D913D1014D1115D1216D13173V318AREF19A020A121A222A323A424A525A626A727V528QSPI_CSn29GND_230VIN \ No newline at end of file From 8dd5dc85f73a79c1ac89363a3e67cf24a61dae58 Mon Sep 17 00:00:00 2001 From: seveibar Date: Sun, 2 Aug 2026 14:07:15 -0700 Subject: [PATCH 3/8] Style header module footprints with silkscreen labels --- lib/AdafruitFeatherESP32S2.tsx | 32 +++++++- ...AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx | 32 +++++++- lib/AdafruitFeatherESP32S3TFT.tsx | 32 +++++++- lib/AdafruitFeatherESP32V2.tsx | 32 +++++++- lib/AdafruitFeatherM0Express.tsx | 32 +++++++- lib/AdafruitFeatherM4Express.tsx | 32 +++++++- lib/AdafruitFeatherNRF52840Express.tsx | 32 +++++++- lib/AdafruitFeatherRP2040.tsx | 32 +++++++- lib/AdafruitFeatherRP2350.tsx | 32 +++++++- lib/AdafruitFeatherSTM32F405Express.tsx | 32 +++++++- lib/AdafruitItsyBitsyESP32.tsx | 32 +++++++- lib/AdafruitItsyBitsyM0Express.tsx | 32 +++++++- lib/AdafruitItsyBitsyM4Express.tsx | 32 +++++++- lib/AdafruitItsyBitsyNRF52840Express.tsx | 32 +++++++- lib/AdafruitItsyBitsyRP2040.tsx | 32 +++++++- lib/AdafruitQTPyESP32S2.tsx | 18 ++++- lib/AdafruitQTPyESP32S3.tsx | 18 ++++- lib/AdafruitQTPyNRF52840.tsx | 18 ++++- lib/AdafruitQTPyRP2350.tsx | 18 ++++- lib/AdafruitQTPySAMD21.tsx | 18 ++++- lib/ArduinoNano33BLE.tsx | 34 +++++++- lib/ArduinoNano33BLESenseRev2.tsx | 34 +++++++- lib/ArduinoNano33IoT.tsx | 34 +++++++- lib/ArduinoNanoATmega328P.tsx | 34 +++++++- lib/ArduinoNanoESP32.tsx | 34 +++++++- lib/ArduinoNanoEvery.tsx | 34 +++++++- lib/ArduinoNanoMatter.tsx | 34 +++++++- lib/ArduinoNanoRP2040Connect.tsx | 34 +++++++- lib/PololuA4988StepperMotorDriverCarrier.tsx | 20 ++++- lib/SeeedXiaoRP2040.tsx | 18 ++++- .../@tscircuit%2Ffootprinter@0.0.387.patch | 80 +++++++++++++++++-- .../AdafruitFeatherESP32S3TFT-pcb.snap.svg | 2 +- .../AdafruitFeatherRP2350-pcb.snap.svg | 2 +- .../AdafruitItsyBitsyESP32-pcb.snap.svg | 2 +- .../AdafruitItsyBitsyM0Express-pcb.snap.svg | 2 +- .../AdafruitItsyBitsyM4Express-pcb.snap.svg | 2 +- ...fruitItsyBitsyNRF52840Express-pcb.snap.svg | 2 +- .../AdafruitItsyBitsyRP2040-pcb.snap.svg | 2 +- .../AdafruitQTPyESP32S2-pcb.snap.svg | 2 +- .../AdafruitQTPyESP32S3-pcb.snap.svg | 2 +- .../AdafruitQTPyNRF52840-pcb.snap.svg | 2 +- .../AdafruitQTPyRP2350-pcb.snap.svg | 2 +- .../AdafruitQTPySAMD21-pcb.snap.svg | 2 +- .../ArduinoNano33BLE-pcb.snap.svg | 2 +- .../ArduinoNano33BLESenseRev2-pcb.snap.svg | 2 +- .../ArduinoNano33IoT-pcb.snap.svg | 2 +- .../ArduinoNanoATmega328P-pcb.snap.svg | 2 +- .../ArduinoNanoESP32-pcb.snap.svg | 2 +- .../ArduinoNanoEvery-pcb.snap.svg | 2 +- .../ArduinoNanoMatter-pcb.snap.svg | 2 +- .../ArduinoNanoRP2040Connect-pcb.snap.svg | 2 +- 51 files changed, 945 insertions(+), 55 deletions(-) diff --git a/lib/AdafruitFeatherESP32S2.tsx b/lib/AdafruitFeatherESP32S2.tsx index 4e315f8..7592c1f 100644 --- a/lib/AdafruitFeatherESP32S2.tsx +++ b/lib/AdafruitFeatherESP32S2.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit ESP32-S2 Feather 12+16 female socket footprint. */ export const ADAFRUIT_FEATHER_ESP32_S2_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER ESP32-S2)" as const export const ADAFRUIT_FEATHER_ESP32_S2_PIN_LABELS = { // Short row, USB end to opposite end. @@ -260,6 +260,36 @@ export const AdafruitFeatherESP32S2 = (props: AdafruitFeatherESP32S2Props) => ( datasheetUrl="https://learn.adafruit.com/adafruit-esp32-s2-feather/pinouts" footprint={ADAFRUIT_FEATHER_ESP32_S2_FOOTPRINT} pinLabels={ADAFRUIT_FEATHER_ESP32_S2_PIN_LABELS} + pcbPinLabels={{ + pin1: "BAT", + pin2: "EN", + pin3: "USB", + pin4: "D13", + pin5: "D12", + pin6: "D11", + pin7: "D10", + pin8: "D9", + pin9: "D6", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "RST", + pin14: "3V3", + pin15: "3V3_2", + pin16: "GND", + pin17: "A0", + pin18: "A1", + pin19: "A2", + pin20: "A3", + pin21: "A4", + pin22: "A5", + pin23: "SCK", + pin24: "MOSI", + pin25: "MISO", + pin26: "RX", + pin27: "TX", + pin28: "DEBUG_TX", + }} pinAttributes={ADAFRUIT_FEATHER_ESP32_S2_PIN_ATTRIBUTES} schWidth={1.5} schHeight={2.6} diff --git a/lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx b/lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx index 02c6281..2e91dd6 100644 --- a/lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx +++ b/lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit ESP32-S3 Feather 4MB Flash / 2MB PSRAM 12+16 female socket. */ export const ADAFRUIT_FEATHER_ESP32_S3_4MB_FLASH_2MB_PSRAM_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER ESP32-S3)" as const export const ADAFRUIT_FEATHER_ESP32_S3_4MB_FLASH_2MB_PSRAM_PIN_LABELS = { // Short row, USB end to opposite end. @@ -262,6 +262,36 @@ export const AdafruitFeatherESP32S34MBFlash2MBPSRAM = ( datasheetUrl="https://learn.adafruit.com/adafruit-esp32-s3-feather/pinouts" footprint={ADAFRUIT_FEATHER_ESP32_S3_4MB_FLASH_2MB_PSRAM_FOOTPRINT} pinLabels={ADAFRUIT_FEATHER_ESP32_S3_4MB_FLASH_2MB_PSRAM_PIN_LABELS} + pcbPinLabels={{ + pin1: "BAT", + pin2: "EN", + pin3: "USB", + pin4: "D13", + pin5: "D12", + pin6: "D11", + pin7: "D10", + pin8: "D9", + pin9: "D6", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "RST", + pin14: "3V3", + pin15: "3V3_2", + pin16: "GND", + pin17: "A0", + pin18: "A1", + pin19: "A2", + pin20: "A3", + pin21: "A4", + pin22: "A5", + pin23: "SCK", + pin24: "MOSI", + pin25: "MISO", + pin26: "RX", + pin27: "TX", + pin28: "DEBUG_TX", + }} pinAttributes={ADAFRUIT_FEATHER_ESP32_S3_4MB_FLASH_2MB_PSRAM_PIN_ATTRIBUTES} schWidth={1.5} schHeight={2.6} diff --git a/lib/AdafruitFeatherESP32S3TFT.tsx b/lib/AdafruitFeatherESP32S3TFT.tsx index 28f4dd4..2da54f9 100644 --- a/lib/AdafruitFeatherESP32S3TFT.tsx +++ b/lib/AdafruitFeatherESP32S3TFT.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit ESP32-S3 TFT Feather: the two populated Feather header rows. */ export const ADAFRUIT_FEATHER_ESP32_S3_TFT_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER S3 TFT)" as const export const ADAFRUIT_FEATHER_ESP32_S3_TFT_PIN_LABELS = { pin1: ["VBAT"], @@ -129,6 +129,36 @@ export const AdafruitFeatherESP32S3TFT = ( datasheetUrl="https://learn.adafruit.com/adafruit-esp32-s3-tft-feather/pinouts" footprint={ADAFRUIT_FEATHER_ESP32_S3_TFT_FOOTPRINT} pinLabels={ADAFRUIT_FEATHER_ESP32_S3_TFT_PIN_LABELS} + pcbPinLabels={{ + pin1: "VBAT", + pin2: "EN", + pin3: "VBUS", + pin4: "D13", + pin5: "D12", + pin6: "D11", + pin7: "D10", + pin8: "D9", + pin9: "D6", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "RESET", + pin14: "3V3", + pin15: "3V3_2", + pin16: "GND", + pin17: "A0", + pin18: "A1", + pin19: "A2", + pin20: "A3", + pin21: "A4", + pin22: "A5", + pin23: "SCK", + pin24: "MOSI", + pin25: "MISO", + pin26: "RX", + pin27: "TX", + pin28: "TXD0", + }} pinAttributes={ADAFRUIT_FEATHER_ESP32_S3_TFT_PIN_ATTRIBUTES} schWidth={1.8} schHeight={2.8} diff --git a/lib/AdafruitFeatherESP32V2.tsx b/lib/AdafruitFeatherESP32V2.tsx index 52d9df4..0c75159 100644 --- a/lib/AdafruitFeatherESP32V2.tsx +++ b/lib/AdafruitFeatherESP32V2.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit ESP32 Feather V2 12+16 female socket footprint. */ export const ADAFRUIT_FEATHER_ESP32_V2_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER ESP32 V2)" as const export const ADAFRUIT_FEATHER_ESP32_V2_PIN_LABELS = { // Short row, USB end to opposite end. @@ -241,6 +241,36 @@ export const AdafruitFeatherESP32V2 = (props: AdafruitFeatherESP32V2Props) => ( datasheetUrl="https://learn.adafruit.com/adafruit-esp32-feather-v2/pinouts" footprint={ADAFRUIT_FEATHER_ESP32_V2_FOOTPRINT} pinLabels={ADAFRUIT_FEATHER_ESP32_V2_PIN_LABELS} + pcbPinLabels={{ + pin1: "BAT", + pin2: "EN", + pin3: "USB", + pin4: "D13", + pin5: "D12", + pin6: "D27", + pin7: "D33", + pin8: "D15", + pin9: "D32", + pin10: "D14", + pin11: "SCL", + pin12: "SDA", + pin13: "RST", + pin14: "3V3", + pin15: "NC", + pin16: "GND", + pin17: "A0", + pin18: "A1", + pin19: "A2", + pin20: "A3", + pin21: "A4", + pin22: "A5", + pin23: "SCK", + pin24: "MOSI", + pin25: "MISO", + pin26: "RX", + pin27: "TX", + pin28: "D37", + }} pinAttributes={ADAFRUIT_FEATHER_ESP32_V2_PIN_ATTRIBUTES} schWidth={1.5} schHeight={2.6} diff --git a/lib/AdafruitFeatherM0Express.tsx b/lib/AdafruitFeatherM0Express.tsx index 032ff42..faf5eb1 100644 --- a/lib/AdafruitFeatherM0Express.tsx +++ b/lib/AdafruitFeatherM0Express.tsx @@ -3,7 +3,7 @@ import { samdGpio } from "./samdPinAttributes" /** Adafruit Feather M0 Express 12+16 female socket footprint. */ export const ADAFRUIT_FEATHER_M0_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER M0)" as const export const ADAFRUIT_FEATHER_M0_EXPRESS_PIN_LABELS = { // Short row, USB end to opposite end. @@ -112,6 +112,36 @@ export const AdafruitFeatherM0Express = ( datasheetUrl="https://learn.adafruit.com/adafruit-feather-m0-express-designed-for-circuit-python-circuitpython/adafruit2-pinouts" footprint={ADAFRUIT_FEATHER_M0_EXPRESS_FOOTPRINT} pinLabels={ADAFRUIT_FEATHER_M0_EXPRESS_PIN_LABELS} + pcbPinLabels={{ + pin1: "BAT", + pin2: "EN", + pin3: "USB", + pin4: "D13", + pin5: "D12", + pin6: "D11", + pin7: "D10", + pin8: "D9", + pin9: "D6", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "RST", + pin14: "3V", + pin15: "AREF", + pin16: "GND", + pin17: "A0", + pin18: "A1", + pin19: "A2", + pin20: "A3", + pin21: "A4", + pin22: "A5", + pin23: "SCK", + pin24: "MOSI", + pin25: "MISO", + pin26: "RX", + pin27: "TX", + pin28: "D4", + }} pinAttributes={ADAFRUIT_FEATHER_M0_EXPRESS_PIN_ATTRIBUTES} schWidth={1.5} schHeight={2.6} diff --git a/lib/AdafruitFeatherM4Express.tsx b/lib/AdafruitFeatherM4Express.tsx index 1ed9594..b4b36cb 100644 --- a/lib/AdafruitFeatherM4Express.tsx +++ b/lib/AdafruitFeatherM4Express.tsx @@ -3,7 +3,7 @@ import { samdGpio } from "./samdPinAttributes" /** Adafruit Feather M4 Express 12+16 female socket footprint. */ export const ADAFRUIT_FEATHER_M4_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER M4)" as const export const ADAFRUIT_FEATHER_M4_EXPRESS_PIN_LABELS = { // Short row, USB end to opposite end. @@ -112,6 +112,36 @@ export const AdafruitFeatherM4Express = ( datasheetUrl="https://learn.adafruit.com/adafruit-feather-m4-express-atsamd51/pinouts" footprint={ADAFRUIT_FEATHER_M4_EXPRESS_FOOTPRINT} pinLabels={ADAFRUIT_FEATHER_M4_EXPRESS_PIN_LABELS} + pcbPinLabels={{ + pin1: "BAT", + pin2: "EN", + pin3: "USB", + pin4: "D13", + pin5: "D12", + pin6: "D11", + pin7: "D10", + pin8: "D9", + pin9: "D6", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "RST", + pin14: "3V", + pin15: "AREF", + pin16: "GND", + pin17: "A0", + pin18: "A1", + pin19: "A2", + pin20: "A3", + pin21: "A4", + pin22: "A5", + pin23: "SCK", + pin24: "MOSI", + pin25: "MISO", + pin26: "RX", + pin27: "TX", + pin28: "D4", + }} pinAttributes={ADAFRUIT_FEATHER_M4_EXPRESS_PIN_ATTRIBUTES} schWidth={1.5} schHeight={2.6} diff --git a/lib/AdafruitFeatherNRF52840Express.tsx b/lib/AdafruitFeatherNRF52840Express.tsx index 1588f72..9cacd3b 100644 --- a/lib/AdafruitFeatherNRF52840Express.tsx +++ b/lib/AdafruitFeatherNRF52840Express.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit Feather nRF52840 Express 12+16 female socket footprint. */ export const ADAFRUIT_FEATHER_NRF52840_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER NRF52840)" as const export const ADAFRUIT_FEATHER_NRF52840_EXPRESS_PIN_LABELS = { // Short row, USB end to opposite end. Aliases are from Adafruit's nRF52840 @@ -257,6 +257,36 @@ export const AdafruitFeatherNRF52840Express = ( datasheetUrl="https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather/pinouts" footprint={ADAFRUIT_FEATHER_NRF52840_EXPRESS_FOOTPRINT} pinLabels={ADAFRUIT_FEATHER_NRF52840_EXPRESS_PIN_LABELS} + pcbPinLabels={{ + pin1: "BAT", + pin2: "EN", + pin3: "USB", + pin4: "D13", + pin5: "D12", + pin6: "D11", + pin7: "D10", + pin8: "D9", + pin9: "D6", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "RST", + pin14: "3V", + pin15: "AREF", + pin16: "GND", + pin17: "A0", + pin18: "A1", + pin19: "A2", + pin20: "A3", + pin21: "A4", + pin22: "A5", + pin23: "SCK", + pin24: "MOSI", + pin25: "MISO", + pin26: "RX", + pin27: "TX", + pin28: "D2", + }} pinAttributes={ADAFRUIT_FEATHER_NRF52840_EXPRESS_PIN_ATTRIBUTES} schWidth={1.5} schHeight={2.6} diff --git a/lib/AdafruitFeatherRP2040.tsx b/lib/AdafruitFeatherRP2040.tsx index 1b2c0d4..71f12de 100644 --- a/lib/AdafruitFeatherRP2040.tsx +++ b/lib/AdafruitFeatherRP2040.tsx @@ -6,7 +6,7 @@ import { rp2040Gpio } from "./rp2040PinAttributes" * USB is on the negative PCB X side when pcbRotation is zero. */ export const ADAFRUIT_FEATHER_RP2040_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER RP2040)" as const export const ADAFRUIT_FEATHER_RP2040_PIN_LABELS = { // Short row, USB end to opposite end. @@ -122,6 +122,36 @@ export const AdafruitFeatherRP2040 = ( datasheetUrl="https://learn.adafruit.com/adafruit-feather-rp2040-pico/pinouts" footprint={ADAFRUIT_FEATHER_RP2040_FOOTPRINT} pinLabels={ADAFRUIT_FEATHER_RP2040_PIN_LABELS} + pcbPinLabels={{ + pin1: "BAT", + pin2: "EN", + pin3: "USB", + pin4: "D13", + pin5: "D12", + pin6: "D11", + pin7: "D10", + pin8: "D9", + pin9: "D6", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "RST", + pin14: "3V3", + pin15: "3V3_AREF", + pin16: "GND", + pin17: "A0", + pin18: "A1", + pin19: "A2", + pin20: "A3", + pin21: "D24", + pin22: "D25", + pin23: "SCK", + pin24: "MOSI", + pin25: "MISO", + pin26: "RX", + pin27: "TX", + pin28: "D4", + }} pinAttributes={ADAFRUIT_FEATHER_RP2040_PIN_ATTRIBUTES} schWidth={1.5} schHeight={2.6} diff --git a/lib/AdafruitFeatherRP2350.tsx b/lib/AdafruitFeatherRP2350.tsx index e2b16e5..95cd218 100644 --- a/lib/AdafruitFeatherRP2350.tsx +++ b/lib/AdafruitFeatherRP2350.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit Feather RP2350 socket: one 12-pin row and one 16-pin row. */ export const ADAFRUIT_FEATHER_RP2350_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER RP2350)" as const export const ADAFRUIT_FEATHER_RP2350_PIN_LABELS = { pin1: ["VBAT"], @@ -126,6 +126,36 @@ export const AdafruitFeatherRP2350 = (props: AdafruitFeatherRP2350Props) => ( datasheetUrl="https://learn.adafruit.com/adafruit-feather-rp2350/pinouts" footprint={ADAFRUIT_FEATHER_RP2350_FOOTPRINT} pinLabels={ADAFRUIT_FEATHER_RP2350_PIN_LABELS} + pcbPinLabels={{ + pin1: "VBAT", + pin2: "EN", + pin3: "VBUS", + pin4: "D7", + pin5: "D4", + pin6: "D11", + pin7: "D10", + pin8: "D9", + pin9: "D6", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "RESET", + pin14: "3V3", + pin15: "3V3_2", + pin16: "GND", + pin17: "A0", + pin18: "A1", + pin19: "A2", + pin20: "A3", + pin21: "D24", + pin22: "D25", + pin23: "SCK", + pin24: "MOSI", + pin25: "MISO", + pin26: "RX", + pin27: "TX", + pin28: "PSRAM_CS", + }} pinAttributes={ADAFRUIT_FEATHER_RP2350_PIN_ATTRIBUTES} schWidth={1.8} schHeight={2.8} diff --git a/lib/AdafruitFeatherSTM32F405Express.tsx b/lib/AdafruitFeatherSTM32F405Express.tsx index a20514d..afb2127 100644 --- a/lib/AdafruitFeatherSTM32F405Express.tsx +++ b/lib/AdafruitFeatherSTM32F405Express.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit Feather STM32F405 Express 12+16 female socket footprint. */ export const ADAFRUIT_FEATHER_STM32F405_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER STM32F405)" as const export const ADAFRUIT_FEATHER_STM32F405_EXPRESS_PIN_LABELS = { // Short row, USB end to opposite end. The MCU aliases and alternate @@ -261,6 +261,36 @@ export const AdafruitFeatherSTM32F405Express = ( datasheetUrl="https://learn.adafruit.com/adafruit-stm32f405-feather-express/pinouts" footprint={ADAFRUIT_FEATHER_STM32F405_EXPRESS_FOOTPRINT} pinLabels={ADAFRUIT_FEATHER_STM32F405_EXPRESS_PIN_LABELS} + pcbPinLabels={{ + pin1: "BAT", + pin2: "EN", + pin3: "USB", + pin4: "D13", + pin5: "D12", + pin6: "D11", + pin7: "D10", + pin8: "D9", + pin9: "D6", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "RST", + pin14: "3V3", + pin15: "3V3_2", + pin16: "GND", + pin17: "A0", + pin18: "A1", + pin19: "A2", + pin20: "A3", + pin21: "A4", + pin22: "A5", + pin23: "SCK", + pin24: "MOSI", + pin25: "MISO", + pin26: "RX", + pin27: "TX", + pin28: "BOOT0", + }} pinAttributes={ADAFRUIT_FEATHER_STM32F405_EXPRESS_PIN_ATTRIBUTES} schWidth={1.5} schHeight={2.6} diff --git a/lib/AdafruitItsyBitsyESP32.tsx b/lib/AdafruitItsyBitsyESP32.tsx index 9d4d2b4..a0e11b9 100644 --- a/lib/AdafruitItsyBitsyESP32.tsx +++ b/lib/AdafruitItsyBitsyESP32.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit ItsyBitsy ESP32: two 14-pin female header rows. */ export const ADAFRUIT_ITSYBITSY_ESP32_FOOTPRINT = - "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY ESP32)" as const export const ADAFRUIT_ITSYBITSY_ESP32_PIN_LABELS = { pin1: ["VBAT"], @@ -128,6 +128,36 @@ export const AdafruitItsyBitsyESP32 = ( datasheetUrl="https://learn.adafruit.com/adafruit-itsybitsy-esp32/pinouts" footprint={ADAFRUIT_ITSYBITSY_ESP32_FOOTPRINT} pinLabels={ADAFRUIT_ITSYBITSY_ESP32_PIN_LABELS} + pcbPinLabels={{ + pin1: "VBAT", + pin2: "GND", + pin3: "VBUS", + pin4: "D13", + pin5: "D12", + pin6: "D14", + pin7: "D33", + pin8: "D32", + pin9: "D7", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "TX", + pin14: "RX", + pin15: "GND_2", + pin16: "MISO", + pin17: "MOSI", + pin18: "SCK", + pin19: "A5", + pin20: "A4", + pin21: "A3", + pin22: "A2", + pin23: "A1", + pin24: "A0", + pin25: "VHI", + pin26: "EN", + pin27: "3V3", + pin28: "RESET", + }} pinAttributes={ADAFRUIT_ITSYBITSY_ESP32_PIN_ATTRIBUTES} schWidth={1.8} schHeight={2.8} diff --git a/lib/AdafruitItsyBitsyM0Express.tsx b/lib/AdafruitItsyBitsyM0Express.tsx index baf3a66..05ccda4 100644 --- a/lib/AdafruitItsyBitsyM0Express.tsx +++ b/lib/AdafruitItsyBitsyM0Express.tsx @@ -3,7 +3,7 @@ import { samdGpio } from "./samdPinAttributes" /** Adafruit ItsyBitsy M0 Express: two 14-pin female header rows. */ export const ADAFRUIT_ITSYBITSY_M0_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY M0)" as const export const ADAFRUIT_ITSYBITSY_M0_EXPRESS_PIN_LABELS = { pin1: ["VBAT"], @@ -118,6 +118,36 @@ export const AdafruitItsyBitsyM0Express = ( datasheetUrl="https://learn.adafruit.com/introducing-itsy-bitsy-m0/pinouts" footprint={ADAFRUIT_ITSYBITSY_M0_EXPRESS_FOOTPRINT} pinLabels={ADAFRUIT_ITSYBITSY_M0_EXPRESS_PIN_LABELS} + pcbPinLabels={{ + pin1: "VBAT", + pin2: "GND", + pin3: "VBUS", + pin4: "D13", + pin5: "D12", + pin6: "D11", + pin7: "D10", + pin8: "D9", + pin9: "D7", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "TX", + pin14: "RX", + pin15: "D2", + pin16: "MISO", + pin17: "MOSI", + pin18: "SCK", + pin19: "A5", + pin20: "A4", + pin21: "A3", + pin22: "A2", + pin23: "A1", + pin24: "A0", + pin25: "VHI", + pin26: "EN", + pin27: "3V3", + pin28: "RESET", + }} pinAttributes={ADAFRUIT_ITSYBITSY_M0_EXPRESS_PIN_ATTRIBUTES} schWidth={1.8} schHeight={2.8} diff --git a/lib/AdafruitItsyBitsyM4Express.tsx b/lib/AdafruitItsyBitsyM4Express.tsx index d6d9305..2e689fb 100644 --- a/lib/AdafruitItsyBitsyM4Express.tsx +++ b/lib/AdafruitItsyBitsyM4Express.tsx @@ -3,7 +3,7 @@ import { samdGpio } from "./samdPinAttributes" /** Adafruit ItsyBitsy M4 Express: two 14-pin female header rows. */ export const ADAFRUIT_ITSYBITSY_M4_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY M4)" as const export const ADAFRUIT_ITSYBITSY_M4_EXPRESS_PIN_LABELS = { pin1: ["VBAT"], @@ -118,6 +118,36 @@ export const AdafruitItsyBitsyM4Express = ( datasheetUrl="https://learn.adafruit.com/adafruit-itsybitsy-m4-express/pinouts" footprint={ADAFRUIT_ITSYBITSY_M4_EXPRESS_FOOTPRINT} pinLabels={ADAFRUIT_ITSYBITSY_M4_EXPRESS_PIN_LABELS} + pcbPinLabels={{ + pin1: "VBAT", + pin2: "GND", + pin3: "VBUS", + pin4: "D13", + pin5: "D12", + pin6: "D11", + pin7: "D10", + pin8: "D9", + pin9: "D7", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "TX_D1", + pin14: "RX_D0", + pin15: "D2", + pin16: "MISO", + pin17: "MOSI", + pin18: "SCK", + pin19: "A5", + pin20: "A4", + pin21: "A3", + pin22: "A2", + pin23: "A1", + pin24: "A0", + pin25: "VHI", + pin26: "AREF", + pin27: "V3_3", + pin28: "RESET", + }} pinAttributes={ADAFRUIT_ITSYBITSY_M4_EXPRESS_PIN_ATTRIBUTES} schWidth={1.8} schHeight={2.8} diff --git a/lib/AdafruitItsyBitsyNRF52840Express.tsx b/lib/AdafruitItsyBitsyNRF52840Express.tsx index 4bfcf9f..65a6339 100644 --- a/lib/AdafruitItsyBitsyNRF52840Express.tsx +++ b/lib/AdafruitItsyBitsyNRF52840Express.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit ItsyBitsy nRF52840 Express: two 14-pin female header rows. */ export const ADAFRUIT_ITSYBITSY_NRF52840_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY NRF52840)" as const export const ADAFRUIT_ITSYBITSY_NRF52840_EXPRESS_PIN_LABELS = { pin1: ["VBAT"], @@ -132,6 +132,36 @@ export const AdafruitItsyBitsyNRF52840Express = ( datasheetUrl="https://learn.adafruit.com/adafruit-itsybitsy-nrf52840-express/pinouts" footprint={ADAFRUIT_ITSYBITSY_NRF52840_EXPRESS_FOOTPRINT} pinLabels={ADAFRUIT_ITSYBITSY_NRF52840_EXPRESS_PIN_LABELS} + pcbPinLabels={{ + pin1: "VBAT", + pin2: "GND", + pin3: "VBUS", + pin4: "D13", + pin5: "D12", + pin6: "D11", + pin7: "D10", + pin8: "D9", + pin9: "D7", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "TX_D1", + pin14: "RX_D0", + pin15: "D2", + pin16: "MISO", + pin17: "MOSI", + pin18: "SCK", + pin19: "A5", + pin20: "A4", + pin21: "A3", + pin22: "A2", + pin23: "A1", + pin24: "A0", + pin25: "VHI", + pin26: "EN", + pin27: "3V3", + pin28: "RESET", + }} pinAttributes={ADAFRUIT_ITSYBITSY_NRF52840_EXPRESS_PIN_ATTRIBUTES} schWidth={1.8} schHeight={2.8} diff --git a/lib/AdafruitItsyBitsyRP2040.tsx b/lib/AdafruitItsyBitsyRP2040.tsx index a9e4e76..736f924 100644 --- a/lib/AdafruitItsyBitsyRP2040.tsx +++ b/lib/AdafruitItsyBitsyRP2040.tsx @@ -3,7 +3,7 @@ import { rp2040Gpio } from "./rp2040PinAttributes" /** Adafruit ItsyBitsy RP2040: two 14-pin female header rows. */ export const ADAFRUIT_ITSYBITSY_RP2040_FOOTPRINT = - "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY RP2040)" as const export const ADAFRUIT_ITSYBITSY_RP2040_PIN_LABELS = { pin1: ["VBAT"], @@ -113,6 +113,36 @@ export const AdafruitItsyBitsyRP2040 = ( datasheetUrl="https://learn.adafruit.com/adafruit-itsybitsy-rp2040/pinouts" footprint={ADAFRUIT_ITSYBITSY_RP2040_FOOTPRINT} pinLabels={ADAFRUIT_ITSYBITSY_RP2040_PIN_LABELS} + pcbPinLabels={{ + pin1: "VBAT", + pin2: "GND", + pin3: "VBUS", + pin4: "D13", + pin5: "D12", + pin6: "D11", + pin7: "D10", + pin8: "D9", + pin9: "D7", + pin10: "D5", + pin11: "SCL", + pin12: "SDA", + pin13: "TX", + pin14: "RX", + pin15: "D2", + pin16: "MISO", + pin17: "MOSI", + pin18: "SCK", + pin19: "D25", + pin20: "D24", + pin21: "A3", + pin22: "A2", + pin23: "A1", + pin24: "A0", + pin25: "VHI", + pin26: "V3_3", + pin27: "V3_3_2", + pin28: "RESET", + }} pinAttributes={ADAFRUIT_ITSYBITSY_RP2040_PIN_ATTRIBUTES} schWidth={1.8} schHeight={2.8} diff --git a/lib/AdafruitQTPyESP32S2.tsx b/lib/AdafruitQTPyESP32S2.tsx index 92aa411..9fbe5e5 100644 --- a/lib/AdafruitQTPyESP32S2.tsx +++ b/lib/AdafruitQTPyESP32S2.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit QT Py ESP32-S2: two seven-pin female header rows. */ export const ADAFRUIT_QT_PY_ESP32_S2_FOOTPRINT = - "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY ESP32-S2)" as const export const ADAFRUIT_QT_PY_ESP32_S2_PIN_LABELS = { pin1: ["A0", "GPIO18"], @@ -102,6 +102,22 @@ export const AdafruitQTPyESP32S2 = (props: AdafruitQTPyESP32S2Props) => ( datasheetUrl="https://learn.adafruit.com/adafruit-qt-py-esp32-s2/pinouts" footprint={ADAFRUIT_QT_PY_ESP32_S2_FOOTPRINT} pinLabels={ADAFRUIT_QT_PY_ESP32_S2_PIN_LABELS} + pcbPinLabels={{ + pin1: "A0", + pin2: "A1", + pin3: "A2", + pin4: "A3", + pin5: "SDA", + pin6: "SCL", + pin7: "TX", + pin8: "RX", + pin9: "SCK", + pin10: "MISO", + pin11: "MOSI", + pin12: "V3_3", + pin13: "GND", + pin14: "V5", + }} pinAttributes={ADAFRUIT_QT_PY_ESP32_S2_PIN_ATTRIBUTES} schWidth={1.6} schHeight={2.2} diff --git a/lib/AdafruitQTPyESP32S3.tsx b/lib/AdafruitQTPyESP32S3.tsx index 0918ca9..6afda44 100644 --- a/lib/AdafruitQTPyESP32S3.tsx +++ b/lib/AdafruitQTPyESP32S3.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit QT Py ESP32-S3: two seven-pin female header rows. */ export const ADAFRUIT_QT_PY_ESP32_S3_FOOTPRINT = - "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY ESP32-S3)" as const export const ADAFRUIT_QT_PY_ESP32_S3_PIN_LABELS = { pin1: ["A0", "GPIO18"], @@ -102,6 +102,22 @@ export const AdafruitQTPyESP32S3 = (props: AdafruitQTPyESP32S3Props) => ( datasheetUrl="https://learn.adafruit.com/adafruit-qt-py-esp32-s3/pinouts" footprint={ADAFRUIT_QT_PY_ESP32_S3_FOOTPRINT} pinLabels={ADAFRUIT_QT_PY_ESP32_S3_PIN_LABELS} + pcbPinLabels={{ + pin1: "A0", + pin2: "A1", + pin3: "A2", + pin4: "A3", + pin5: "SDA", + pin6: "SCL", + pin7: "TX", + pin8: "RX", + pin9: "SCK", + pin10: "MISO", + pin11: "MOSI", + pin12: "V3_3", + pin13: "GND", + pin14: "V5", + }} pinAttributes={ADAFRUIT_QT_PY_ESP32_S3_PIN_ATTRIBUTES} schWidth={1.6} schHeight={2.2} diff --git a/lib/AdafruitQTPyNRF52840.tsx b/lib/AdafruitQTPyNRF52840.tsx index 1468d9c..fbbe146 100644 --- a/lib/AdafruitQTPyNRF52840.tsx +++ b/lib/AdafruitQTPyNRF52840.tsx @@ -9,7 +9,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" * product is represented by AdafruitItsyBitsyNRF52840Express. */ export const ADAFRUIT_QT_PY_NRF52840_FOOTPRINT = - "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY NRF52840)" as const export const ADAFRUIT_QT_PY_NRF52840_PIN_LABELS = { pin1: ["A0"], @@ -108,6 +108,22 @@ export const AdafruitQTPyNRF52840 = (props: AdafruitQTPyNRF52840Props) => ( datasheetUrl="https://learn.adafruit.com/adafruit-qt-py/pinouts" footprint={ADAFRUIT_QT_PY_NRF52840_FOOTPRINT} pinLabels={ADAFRUIT_QT_PY_NRF52840_PIN_LABELS} + pcbPinLabels={{ + pin1: "A0", + pin2: "A1", + pin3: "A2", + pin4: "A3", + pin5: "SDA", + pin6: "SCL", + pin7: "TX_A6", + pin8: "RX_A7", + pin9: "SCK", + pin10: "MISO", + pin11: "MOSI", + pin12: "V3_3", + pin13: "GND", + pin14: "V5", + }} pinAttributes={ADAFRUIT_QT_PY_NRF52840_PIN_ATTRIBUTES} schWidth={1.6} schHeight={2.2} diff --git a/lib/AdafruitQTPyRP2350.tsx b/lib/AdafruitQTPyRP2350.tsx index 7a88e98..5d6352b 100644 --- a/lib/AdafruitQTPyRP2350.tsx +++ b/lib/AdafruitQTPyRP2350.tsx @@ -8,7 +8,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" * module when a production Adafruit RP2350 pinout is required. */ export const ADAFRUIT_QT_PY_RP2350_FOOTPRINT = - "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY RP2350)" as const export const ADAFRUIT_QT_PY_RP2350_PIN_LABELS = { pin1: ["A0"], @@ -107,6 +107,22 @@ export const AdafruitQTPyRP2350 = (props: AdafruitQTPyRP2350Props) => ( datasheetUrl="https://learn.adafruit.com/adafruit-qt-py/pinouts" footprint={ADAFRUIT_QT_PY_RP2350_FOOTPRINT} pinLabels={ADAFRUIT_QT_PY_RP2350_PIN_LABELS} + pcbPinLabels={{ + pin1: "A0", + pin2: "A1", + pin3: "A2", + pin4: "A3", + pin5: "SDA", + pin6: "SCL", + pin7: "TX", + pin8: "RX", + pin9: "SCK", + pin10: "MISO", + pin11: "MOSI", + pin12: "V3_3", + pin13: "GND", + pin14: "V5", + }} pinAttributes={ADAFRUIT_QT_PY_RP2350_PIN_ATTRIBUTES} schWidth={1.6} schHeight={2.2} diff --git a/lib/AdafruitQTPySAMD21.tsx b/lib/AdafruitQTPySAMD21.tsx index 56a32c6..3151eee 100644 --- a/lib/AdafruitQTPySAMD21.tsx +++ b/lib/AdafruitQTPySAMD21.tsx @@ -3,7 +3,7 @@ import { samdGpio } from "./samdPinAttributes" /** Adafruit QT Py SAMD21: two seven-pin female header rows. */ export const ADAFRUIT_QT_PY_SAMD21_FOOTPRINT = - "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY SAMD21)" as const export const ADAFRUIT_QT_PY_SAMD21_PIN_LABELS = { pin1: ["A0", "PA02"], @@ -85,6 +85,22 @@ export const AdafruitQTPySAMD21 = (props: AdafruitQTPySAMD21Props) => ( datasheetUrl="https://learn.adafruit.com/adafruit-qt-py/pinouts" footprint={ADAFRUIT_QT_PY_SAMD21_FOOTPRINT} pinLabels={ADAFRUIT_QT_PY_SAMD21_PIN_LABELS} + pcbPinLabels={{ + pin1: "A0", + pin2: "A1", + pin3: "A2", + pin4: "A3", + pin5: "SDA", + pin6: "SCL", + pin7: "TX_A6", + pin8: "RX_A7", + pin9: "SCK", + pin10: "MISO", + pin11: "MOSI", + pin12: "V3_3", + pin13: "GND", + pin14: "V5", + }} pinAttributes={ADAFRUIT_QT_PY_SAMD21_PIN_ATTRIBUTES} schWidth={1.6} schHeight={2.2} diff --git a/lib/ArduinoNano33BLE.tsx b/lib/ArduinoNano33BLE.tsx index d8f1985..5b3c552 100644 --- a/lib/ArduinoNano33BLE.tsx +++ b/lib/ArduinoNano33BLE.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano 33 BLE: the 30-pin Nano header arrangement. */ export const ARDUINO_NANO_33_BLE_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO 33 BLE)" as const export const ARDUINO_NANO_33_BLE_PIN_LABELS = { pin1: ["TX", "D1"], @@ -139,6 +139,38 @@ export const ArduinoNano33BLE = (props: ArduinoNano33BLEProps) => ( datasheetUrl="https://docs.arduino.cc/resources/pinouts/ABX00030-full-pinout.pdf" footprint={ARDUINO_NANO_33_BLE_FOOTPRINT} pinLabels={ARDUINO_NANO_33_BLE_PIN_LABELS} + pcbPinLabels={{ + pin1: "TX", + pin2: "RX", + pin3: "RESET", + pin4: "GND", + pin5: "D2", + pin6: "D3", + pin7: "D4", + pin8: "D5", + pin9: "D6", + pin10: "D7", + pin11: "D8", + pin12: "D9", + pin13: "D10", + pin14: "D11", + pin15: "D12", + pin16: "D13", + pin17: "3V3", + pin18: "AREF", + pin19: "A0", + pin20: "A1", + pin21: "A2", + pin22: "A3", + pin23: "A4", + pin24: "A5", + pin25: "A6", + pin26: "A7", + pin27: "V5", + pin28: "RESET_2", + pin29: "GND_2", + pin30: "VIN", + }} pinAttributes={ARDUINO_NANO_33_BLE_PIN_ATTRIBUTES} schWidth={2.1} schHeight={3.3} diff --git a/lib/ArduinoNano33BLESenseRev2.tsx b/lib/ArduinoNano33BLESenseRev2.tsx index 0846b18..b4027fd 100644 --- a/lib/ArduinoNano33BLESenseRev2.tsx +++ b/lib/ArduinoNano33BLESenseRev2.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano 33 BLE Sense Rev2: the 30-pin Nano header arrangement. */ export const ARDUINO_NANO_33_BLE_SENSE_REV2_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO 33 BLE SENSE)" as const export const ARDUINO_NANO_33_BLE_SENSE_REV2_PIN_LABELS = { pin1: ["TX", "D1"], @@ -141,6 +141,38 @@ export const ArduinoNano33BLESenseRev2 = ( datasheetUrl="https://docs.arduino.cc/resources/pinouts/ABX00069-full-pinout.pdf" footprint={ARDUINO_NANO_33_BLE_SENSE_REV2_FOOTPRINT} pinLabels={ARDUINO_NANO_33_BLE_SENSE_REV2_PIN_LABELS} + pcbPinLabels={{ + pin1: "TX", + pin2: "RX", + pin3: "RESET", + pin4: "GND", + pin5: "D2", + pin6: "D3", + pin7: "D4", + pin8: "D5", + pin9: "D6", + pin10: "D7", + pin11: "D8", + pin12: "D9", + pin13: "D10", + pin14: "D11", + pin15: "D12", + pin16: "D13", + pin17: "3V3", + pin18: "AREF", + pin19: "A0", + pin20: "A1", + pin21: "A2", + pin22: "A3", + pin23: "A4", + pin24: "A5", + pin25: "A6", + pin26: "A7", + pin27: "V5", + pin28: "RESET_2", + pin29: "GND_2", + pin30: "VIN", + }} pinAttributes={ARDUINO_NANO_33_BLE_SENSE_REV2_PIN_ATTRIBUTES} schWidth={2.1} schHeight={3.3} diff --git a/lib/ArduinoNano33IoT.tsx b/lib/ArduinoNano33IoT.tsx index fc6c27b..d35d821 100644 --- a/lib/ArduinoNano33IoT.tsx +++ b/lib/ArduinoNano33IoT.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano 33 IoT: the 30-pin Nano header arrangement. */ export const ARDUINO_NANO_33_IOT_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO 33 IOT)" as const export const ARDUINO_NANO_33_IOT_PIN_LABELS = { pin1: ["TX", "D1"], @@ -139,6 +139,38 @@ export const ArduinoNano33IoT = (props: ArduinoNano33IoTProps) => ( datasheetUrl="https://docs.arduino.cc/resources/pinouts/ABX00027-full-pinout.pdf" footprint={ARDUINO_NANO_33_IOT_FOOTPRINT} pinLabels={ARDUINO_NANO_33_IOT_PIN_LABELS} + pcbPinLabels={{ + pin1: "TX", + pin2: "RX", + pin3: "RESET", + pin4: "GND", + pin5: "D2", + pin6: "D3", + pin7: "D4", + pin8: "D5", + pin9: "D6", + pin10: "D7", + pin11: "D8", + pin12: "D9", + pin13: "D10", + pin14: "D11", + pin15: "D12", + pin16: "D13", + pin17: "3V3", + pin18: "AREF", + pin19: "A0", + pin20: "A1", + pin21: "A2", + pin22: "A3", + pin23: "A4", + pin24: "A5", + pin25: "A6", + pin26: "A7", + pin27: "V5", + pin28: "RESET_2", + pin29: "GND_2", + pin30: "VIN", + }} pinAttributes={ARDUINO_NANO_33_IOT_PIN_ATTRIBUTES} schWidth={2.1} schHeight={3.3} diff --git a/lib/ArduinoNanoATmega328P.tsx b/lib/ArduinoNanoATmega328P.tsx index 04de3e6..0df8ed4 100644 --- a/lib/ArduinoNanoATmega328P.tsx +++ b/lib/ArduinoNanoATmega328P.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano ATmega328P: the standard 30-pin Nano header arrangement. */ export const ARDUINO_NANO_ATMEGA328P_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO ATMEGA328P)" as const export const ARDUINO_NANO_ATMEGA328P_PIN_LABELS = { pin1: ["TX", "D1"], @@ -141,6 +141,38 @@ export const ArduinoNanoATmega328P = ( datasheetUrl="https://docs.arduino.cc/resources/pinouts/A000005-full-pinout.pdf" footprint={ARDUINO_NANO_ATMEGA328P_FOOTPRINT} pinLabels={ARDUINO_NANO_ATMEGA328P_PIN_LABELS} + pcbPinLabels={{ + pin1: "TX", + pin2: "RX", + pin3: "RESET", + pin4: "GND", + pin5: "D2", + pin6: "D3", + pin7: "D4", + pin8: "D5", + pin9: "D6", + pin10: "D7", + pin11: "D8", + pin12: "D9", + pin13: "D10", + pin14: "D11", + pin15: "D12", + pin16: "D13", + pin17: "3V3", + pin18: "AREF", + pin19: "A0", + pin20: "A1", + pin21: "A2", + pin22: "A3", + pin23: "A4", + pin24: "A5", + pin25: "A6", + pin26: "A7", + pin27: "V5", + pin28: "RESET_2", + pin29: "GND_2", + pin30: "VIN", + }} pinAttributes={ARDUINO_NANO_ATMEGA328P_PIN_ATTRIBUTES} schWidth={2.1} schHeight={3.3} diff --git a/lib/ArduinoNanoESP32.tsx b/lib/ArduinoNanoESP32.tsx index 43ae37a..8c8ef1e 100644 --- a/lib/ArduinoNanoESP32.tsx +++ b/lib/ArduinoNanoESP32.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano ESP32: the ESP32-S3 Nano 30-pin header arrangement. */ export const ARDUINO_NANO_ESP32_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO ESP32)" as const export const ARDUINO_NANO_ESP32_PIN_LABELS = { pin1: ["TX", "D1", "GPIO43"], @@ -139,6 +139,38 @@ export const ArduinoNanoESP32 = (props: ArduinoNanoESP32Props) => ( datasheetUrl="https://docs.arduino.cc/resources/pinouts/ABX00083-full-pinout.pdf" footprint={ARDUINO_NANO_ESP32_FOOTPRINT} pinLabels={ARDUINO_NANO_ESP32_PIN_LABELS} + pcbPinLabels={{ + pin1: "TX", + pin2: "RX", + pin3: "RESET", + pin4: "GND", + pin5: "D2", + pin6: "D3", + pin7: "D4", + pin8: "D5", + pin9: "D6", + pin10: "D7", + pin11: "D8", + pin12: "D9", + pin13: "D10", + pin14: "D11", + pin15: "D12", + pin16: "D13", + pin17: "3V3", + pin18: "B0", + pin19: "A0", + pin20: "A1", + pin21: "A2", + pin22: "A3", + pin23: "A4", + pin24: "A5", + pin25: "A6", + pin26: "A7", + pin27: "VUSB", + pin28: "B1", + pin29: "GND_2", + pin30: "VIN", + }} pinAttributes={ARDUINO_NANO_ESP32_PIN_ATTRIBUTES} schWidth={2.1} schHeight={3.3} diff --git a/lib/ArduinoNanoEvery.tsx b/lib/ArduinoNanoEvery.tsx index cde0f0a..0075d31 100644 --- a/lib/ArduinoNanoEvery.tsx +++ b/lib/ArduinoNanoEvery.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano Every: the standard 30-pin Nano header arrangement. */ export const ARDUINO_NANO_EVERY_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO EVERY)" as const export const ARDUINO_NANO_EVERY_PIN_LABELS = { pin1: ["TX", "D1"], @@ -139,6 +139,38 @@ export const ArduinoNanoEvery = (props: ArduinoNanoEveryProps) => ( datasheetUrl="https://docs.arduino.cc/resources/pinouts/ABX00028-full-pinout.pdf" footprint={ARDUINO_NANO_EVERY_FOOTPRINT} pinLabels={ARDUINO_NANO_EVERY_PIN_LABELS} + pcbPinLabels={{ + pin1: "TX", + pin2: "RX", + pin3: "RESET", + pin4: "GND", + pin5: "D2", + pin6: "D3", + pin7: "D4", + pin8: "D5", + pin9: "D6", + pin10: "D7", + pin11: "D8", + pin12: "D9", + pin13: "D10", + pin14: "D11", + pin15: "D12", + pin16: "D13", + pin17: "3V3", + pin18: "AREF", + pin19: "A0", + pin20: "A1", + pin21: "A2", + pin22: "A3", + pin23: "A4", + pin24: "A5", + pin25: "A6", + pin26: "A7", + pin27: "V5", + pin28: "RESET_2", + pin29: "GND_2", + pin30: "VIN", + }} pinAttributes={ARDUINO_NANO_EVERY_PIN_ATTRIBUTES} schWidth={2.1} schHeight={3.3} diff --git a/lib/ArduinoNanoMatter.tsx b/lib/ArduinoNanoMatter.tsx index df02a2c..07ab81a 100644 --- a/lib/ArduinoNanoMatter.tsx +++ b/lib/ArduinoNanoMatter.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano Matter: MGM240S-based 30-pin Nano header arrangement. */ export const ARDUINO_NANO_MATTER_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO MATTER)" as const export const ARDUINO_NANO_MATTER_PIN_LABELS = { pin1: ["D0", "TX", "PIN_SERIAL_TX1"], @@ -131,6 +131,38 @@ export const ArduinoNanoMatter = (props: ArduinoNanoMatterProps) => ( datasheetUrl="https://docs.arduino.cc/resources/pinouts/ABX00112-full-pinout.pdf" footprint={ARDUINO_NANO_MATTER_FOOTPRINT} pinLabels={ARDUINO_NANO_MATTER_PIN_LABELS} + pcbPinLabels={{ + pin1: "D0", + pin2: "D1", + pin3: "RST", + pin4: "GND", + pin5: "D2", + pin6: "D3", + pin7: "D4", + pin8: "D5", + pin9: "D6", + pin10: "D7", + pin11: "D8", + pin12: "D9", + pin13: "D10", + pin14: "D11", + pin15: "D12", + pin16: "D13", + pin17: "V3_3", + pin18: "AREF", + pin19: "A0", + pin20: "A1", + pin21: "A2", + pin22: "A3", + pin23: "A4", + pin24: "A5", + pin25: "A6", + pin26: "A7", + pin27: "V5", + pin28: "NC", + pin29: "GND_2", + pin30: "VIN", + }} pinAttributes={ARDUINO_NANO_MATTER_PIN_ATTRIBUTES} schWidth={2.1} schHeight={3.3} diff --git a/lib/ArduinoNanoRP2040Connect.tsx b/lib/ArduinoNanoRP2040Connect.tsx index 3fb10ad..2c01a5b 100644 --- a/lib/ArduinoNanoRP2040Connect.tsx +++ b/lib/ArduinoNanoRP2040Connect.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano RP2040 Connect: the RP2040 30-pin Nano header arrangement. */ export const ARDUINO_NANO_RP2040_CONNECT_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO RP2040)" as const export const ARDUINO_NANO_RP2040_CONNECT_PIN_LABELS = { pin1: ["TX", "D1", "GPIO0"], @@ -133,6 +133,38 @@ export const ArduinoNanoRP2040Connect = ( datasheetUrl="https://docs.arduino.cc/resources/pinouts/ABX00053-full-pinout.pdf" footprint={ARDUINO_NANO_RP2040_CONNECT_FOOTPRINT} pinLabels={ARDUINO_NANO_RP2040_CONNECT_PIN_LABELS} + pcbPinLabels={{ + pin1: "TX", + pin2: "RX", + pin3: "RESET", + pin4: "GND", + pin5: "D2", + pin6: "D3", + pin7: "D4", + pin8: "D5", + pin9: "D6", + pin10: "D7", + pin11: "D8", + pin12: "D9", + pin13: "D10", + pin14: "D11", + pin15: "D12", + pin16: "D13", + pin17: "3V3", + pin18: "AREF", + pin19: "A0", + pin20: "A1", + pin21: "A2", + pin22: "A3", + pin23: "A4", + pin24: "A5", + pin25: "A6", + pin26: "A7", + pin27: "V5", + pin28: "QSPI_CSn", + pin29: "GND_2", + pin30: "VIN", + }} pinAttributes={ARDUINO_NANO_RP2040_CONNECT_PIN_ATTRIBUTES} schWidth={2.1} schHeight={3.3} diff --git a/lib/PololuA4988StepperMotorDriverCarrier.tsx b/lib/PololuA4988StepperMotorDriverCarrier.tsx index f6b4966..8d056a2 100644 --- a/lib/PololuA4988StepperMotorDriverCarrier.tsx +++ b/lib/PololuA4988StepperMotorDriverCarrier.tsx @@ -6,7 +6,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" * when pcbRotation is zero. */ export const POLOLU_A4988_STEPPER_MOTOR_DRIVER_CARRIER_FOOTPRINT = - "pinrow16_rows2_p2.54mm_py12.7mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow16_rows2_p2.54mm_py12.7mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(A4988 DRIVER)" as const export const POLOLU_A4988_STEPPER_MOTOR_DRIVER_CARRIER_PIN_LABELS = { // ENABLE/VMOT end to DIR/logic-GND end. The generic pinrow footprinter @@ -132,6 +132,24 @@ export const PololuA4988StepperMotorDriverCarrier = ( datasheetUrl="https://www.pololu.com/product-info-merged/2980" footprint={POLOLU_A4988_STEPPER_MOTOR_DRIVER_CARRIER_FOOTPRINT} pinLabels={POLOLU_A4988_STEPPER_MOTOR_DRIVER_CARRIER_PIN_LABELS} + pcbPinLabels={{ + pin1: "ENABLE", + pin2: "VMOT", + pin3: "GND_MOTOR", + pin4: "2B", + pin5: "2A", + pin6: "1A", + pin7: "1B", + pin8: "VDD", + pin9: "GND_LOGIC", + pin10: "DIR", + pin11: "STEP", + pin12: "SLEEP", + pin13: "RESET", + pin14: "MS3", + pin15: "MS2", + pin16: "MS1", + }} pinAttributes={POLOLU_A4988_STEPPER_MOTOR_DRIVER_CARRIER_PIN_ATTRIBUTES} schWidth={2} schHeight={1.8} diff --git a/lib/SeeedXiaoRP2040.tsx b/lib/SeeedXiaoRP2040.tsx index a3e871d..5a0df06 100644 --- a/lib/SeeedXiaoRP2040.tsx +++ b/lib/SeeedXiaoRP2040.tsx @@ -6,7 +6,7 @@ import { rp2040Gpio } from "./rp2040PinAttributes" * USB is on the negative PCB X side when pcbRotation is zero. */ export const SEEED_XIAO_RP2040_FOOTPRINT = - "pinrow14_rows2_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const + "pinrow14_rows2_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(XIAO RP2040)" as const export const SEEED_XIAO_RP2040_PIN_LABELS = { // Footprinter numbering follows its perimeter traversal. XIAO_PIN aliases @@ -84,6 +84,22 @@ export const SeeedXiaoRP2040 = (props: SeeedXiaoRP2040Props) => ( datasheetUrl="https://wiki.seeedstudio.com/XIAO-RP2040/" footprint={SEEED_XIAO_RP2040_FOOTPRINT} pinLabels={SEEED_XIAO_RP2040_PIN_LABELS} + pcbPinLabels={{ + pin1: "5V", + pin2: "D0", + pin3: "D1", + pin4: "D2", + pin5: "D3", + pin6: "D4", + pin7: "D5", + pin8: "D6", + pin9: "D7", + pin10: "D8", + pin11: "D9", + pin12: "D10", + pin13: "3V3", + pin14: "GND", + }} pinAttributes={SEEED_XIAO_RP2040_PIN_ATTRIBUTES} schWidth={1.675} schHeight={1.6} diff --git a/patches/@tscircuit%2Ffootprinter@0.0.387.patch b/patches/@tscircuit%2Ffootprinter@0.0.387.patch index afca006..39bcf12 100644 --- a/patches/@tscircuit%2Ffootprinter@0.0.387.patch +++ b/patches/@tscircuit%2Ffootprinter@0.0.387.patch @@ -1,5 +1,5 @@ diff --git a/dist/index.js b/dist/index.js -index 8d7db1f54405212128e9d64c0777170d9a7a75ee..aea46eecb7d95a87524cb0421f3e37ddcd587290 100644 +index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282d93077b8 100644 --- a/dist/index.js +++ b/dist/index.js @@ -3268,9 +3268,12 @@ var pinrow_def = base_def.extend({ @@ -15,7 +15,20 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..aea46eecb7d95a87524cb0421f3e37dd male: z24.boolean().optional().describe("for male pin headers"), female: z24.boolean().optional().describe("for female pin headers"), smd: z24.boolean().optional().describe("surface mount device"), -@@ -3307,15 +3310,32 @@ var pinrow_def = base_def.extend({ +@@ -3288,7 +3291,11 @@ var pinrow_def = base_def.extend({ + doublesidedpinlabel: z24.boolean().optional().default(false).describe("add silkscreen pins in top and bottom layers"), + bottomsidepinlabel: z24.boolean().optional().default(false).describe( + "place the silkscreen reference text on the bottom layer instead of top" +- ) ++ ), ++ silkscreenborder: z24.boolean().optional().default(false).describe("add a rectangular silkscreen border around the pin row"), ++ silkscreenlabel: z24.string().transform( ++ (value) => value.startsWith("(") && value.endsWith(")") ? value.slice(1, -1) : value ++ ).optional().describe("replace the reference designator with a custom silkscreen label") + }).transform((data) => { + const pinlabelAnchorSide = determinePinlabelAnchorSide(data); + return { +@@ -3307,15 +3314,32 @@ var pinrow_def = base_def.extend({ path: ["male", "female"] }); } @@ -48,7 +61,16 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..aea46eecb7d95a87524cb0421f3e37dd pinlabelAnchorSide, pinlabelverticallyinverted, pinlabelorthogonal, -@@ -3329,10 +3349,29 @@ var pinrow = (raw_params) => { +@@ -3323,16 +3347,37 @@ var pinrow = (raw_params) => { + pinlabeltextalignright, + nopinlabels, + doublesidedpinlabel, +- bottomsidepinlabel ++ bottomsidepinlabel, ++ silkscreenborder, ++ silkscreenlabel + } = parameters; + let pinlabelTextAlign = "center"; if (pinlabeltextalignleft) pinlabelTextAlign = "left"; else if (pinlabeltextalignright) pinlabelTextAlign = "right"; const holes = []; @@ -81,7 +103,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..aea46eecb7d95a87524cb0421f3e37dd const calculateAnchorPosition = ({ xoff, yoff, -@@ -3455,8 +3494,22 @@ var pinrow = (raw_params) => { +@@ -3455,8 +3500,22 @@ var pinrow = (raw_params) => { } }; const usedPositions = /* @__PURE__ */ new Set(); @@ -106,7 +128,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..aea46eecb7d95a87524cb0421f3e37dd const xStart = -((num_pins - 1) / 2) * p; for (let i = 0; i < num_pins; i++) { const pinNumber = i + 1; -@@ -3466,7 +3519,7 @@ var pinrow = (raw_params) => { +@@ -3466,7 +3525,7 @@ var pinrow = (raw_params) => { usedPositions.add(posKey); addPin(pinNumber, xoff, 0); } @@ -115,3 +137,51 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..aea46eecb7d95a87524cb0421f3e37dd const xStart = -((numPinsPerRow - 1) / 2) * p; let currentPin = 1; for (let row = 0; row < rows && currentPin <= num_pins; row++) { +@@ -3534,10 +3593,32 @@ var pinrow = (raw_params) => { + ); + } + } +- const refText = silkscreenRef(0, pinRowSpanY / 2 + p, 0.5); + const padHalfWidth = parameters.smd ? parameters.pw / 2 : od / 2; + const padHalfHeight = parameters.smd ? parameters.pl / 2 : od / 2; + const pinRowSpanX = (numPinsPerRow - 1) * p; ++ const silkscreenHalfWidth = pinRowSpanX / 2 + p / 2 + 1; ++ const silkscreenHalfHeight = Math.max( ++ pinRowSpanY / 2 + padHalfHeight + 1, ++ p / 2 + 1 ++ ); ++ const silkscreenBorder = silkscreenborder ? silkscreenpath([ ++ { x: -silkscreenHalfWidth, y: -silkscreenHalfHeight }, ++ { x: silkscreenHalfWidth, y: -silkscreenHalfHeight }, ++ { x: silkscreenHalfWidth, y: silkscreenHalfHeight }, ++ { x: -silkscreenHalfWidth, y: silkscreenHalfHeight }, ++ { x: -silkscreenHalfWidth, y: -silkscreenHalfHeight } ++ ]) : null; ++ const refText = silkscreenlabel ? { ++ type: "pcb_silkscreen_text", ++ pcb_silkscreen_text_id: "silkscreen_text_1", ++ font: "tscircuit2024", ++ font_size: 0.8, ++ pcb_component_id: "pcb_component_1", ++ text: silkscreenlabel, ++ layer: "top", ++ anchor_position: { x: 0, y: 0 }, ++ anchor_alignment: "center" ++ } : silkscreenRef(0, pinRowSpanY / 2 + p, 0.5); + const padOuterHalfWidth = pinRowSpanX / 2 + padHalfWidth; + const padOuterHalfHeight = pinRowSpanY / 2 + padHalfHeight; + const bodyHalfWidth = pinRowSpanX / 2 + p / 2; +@@ -3560,7 +3641,12 @@ var pinrow = (raw_params) => { + layer: "top" + }; + return { +- circuitJson: [...holes, refText, courtyard], ++ circuitJson: [ ++ ...holes, ++ ...(silkscreenBorder ? [silkscreenBorder] : []), ++ refText, ++ courtyard ++ ], + parameters + }; + }; diff --git a/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg b/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg index 62adbeb..e9cfd85 100644 --- a/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +VBATENVBUSD13D12D11D10D9D6D5SCLSDARESET3V33V3_2GNDA0A1A2A3A4A5SCKMOSIMISORXTXTXD0FEATHER S3 TFT \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg b/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg index 4629372..81a1669 100644 --- a/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +VBATENVBUSD7D4D11D10D9D6D5SCLSDARESET3V33V3_2GNDA0A1A2A3D24D25SCKMOSIMISORXTXPSRAM_CSFEATHER RP2350 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg index af8c3a3..b39ecd6 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +VBATGNDVBUSD13D12D14D33D32D7D5SCLSDATXRXGND_2MISOMOSISCKA5A4A3A2A1A0VHIEN3V3RESETITSY ESP32 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg index 760159e..8e3a885 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +VBATGNDVBUSD13D12D11D10D9D7D5SCLSDATXRXD2MISOMOSISCKA5A4A3A2A1A0VHIEN3V3RESETITSY M0 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg index 38d37a8..81151ab 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +VBATGNDVBUSD13D12D11D10D9D7D5SCLSDATX_D1RX_D0D2MISOMOSISCKA5A4A3A2A1A0VHIAREFV3_3RESETITSY M4 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg index 71a431e..03bf5f2 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +VBATGNDVBUSD13D12D11D10D9D7D5SCLSDATX_D1RX_D0D2MISOMOSISCKA5A4A3A2A1A0VHIEN3V3RESETITSY NRF52840 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg index d664109..aa811b6 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +VBATGNDVBUSD13D12D11D10D9D7D5SCLSDATXRXD2MISOMOSISCKD25D24A3A2A1A0VHIV3_3V3_3_2RESETITSY RP2040 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg index ef2b85f..373a079 100644 --- a/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +A0A1A2A3SDASCLTXRXSCKMISOMOSIV3_3GNDV5QT PY ESP32-S2 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg index ef2b85f..446220d 100644 --- a/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +A0A1A2A3SDASCLTXRXSCKMISOMOSIV3_3GNDV5QT PY ESP32-S3 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg index aee85d6..8c341c3 100644 --- a/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +A0A1A2A3SDASCLTX_A6RX_A7SCKMISOMOSIV3_3GNDV5QT PY NRF52840 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg index ef2b85f..2ddca8b 100644 --- a/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +A0A1A2A3SDASCLTXRXSCKMISOMOSIV3_3GNDV5QT PY RP2350 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg index aee85d6..bc39c72 100644 --- a/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +A0A1A2A3SDASCLTX_A6RX_A7SCKMISOMOSIV3_3GNDV5QT PY SAMD21 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg index 341c8aa..0a9764c 100644 --- a/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO 33 BLE \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg index 341c8aa..34d2af4 100644 --- a/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO 33 BLE SENSE \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg index 341c8aa..f4db624 100644 --- a/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO 33 IOT \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg index 341c8aa..5161d15 100644 --- a/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO ATMEGA328P \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg index fb40ec9..625731c 100644 --- a/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3B0A0A1A2A3A4A5A6A7VUSBB1GND_2VINNANO ESP32 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg index 341c8aa..9458665 100644 --- a/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO EVERY \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg index a1be415..03ee5c9 100644 --- a/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +D0D1RSTGNDD2D3D4D5D6D7D8D9D10D11D12D13V3_3AREFA0A1A2A3A4A5A6A7V5NCGND_2VINNANO MATTER \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg index 43b687e..6fd9c48 100644 --- a/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg @@ -1 +1 @@ -U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5QSPI_CSnGND_2VINNANO RP2040 \ No newline at end of file From 444bb0f06d907f93c5e9040d9e9818ba8861224f Mon Sep 17 00:00:00 2001 From: seveibar Date: Sun, 2 Aug 2026 14:23:29 -0700 Subject: [PATCH 4/8] Use headermodule footprints for pluggable modules --- README.md | 15 +++++----- lib/AdafruitFeatherESP32S2.tsx | 2 +- ...AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx | 2 +- lib/AdafruitFeatherESP32S3TFT.tsx | 2 +- lib/AdafruitFeatherESP32V2.tsx | 2 +- lib/AdafruitFeatherM0Express.tsx | 2 +- lib/AdafruitFeatherM4Express.tsx | 2 +- lib/AdafruitFeatherNRF52840Express.tsx | 2 +- lib/AdafruitFeatherRP2040.tsx | 2 +- lib/AdafruitFeatherRP2350.tsx | 2 +- lib/AdafruitFeatherSTM32F405Express.tsx | 2 +- lib/AdafruitItsyBitsyESP32.tsx | 2 +- lib/AdafruitItsyBitsyM0Express.tsx | 2 +- lib/AdafruitItsyBitsyM4Express.tsx | 2 +- lib/AdafruitItsyBitsyNRF52840Express.tsx | 2 +- lib/AdafruitItsyBitsyRP2040.tsx | 2 +- lib/AdafruitQTPyESP32S2.tsx | 2 +- lib/AdafruitQTPyESP32S3.tsx | 2 +- lib/AdafruitQTPyNRF52840.tsx | 2 +- lib/AdafruitQTPyRP2350.tsx | 2 +- lib/AdafruitQTPySAMD21.tsx | 2 +- lib/ArduinoNano33BLE.tsx | 2 +- lib/ArduinoNano33BLESenseRev2.tsx | 2 +- lib/ArduinoNano33IoT.tsx | 2 +- lib/ArduinoNanoATmega328P.tsx | 2 +- lib/ArduinoNanoESP32.tsx | 2 +- lib/ArduinoNanoEvery.tsx | 2 +- lib/ArduinoNanoMatter.tsx | 2 +- lib/ArduinoNanoRP2040Connect.tsx | 2 +- lib/PololuA4988StepperMotorDriverCarrier.tsx | 6 ++-- lib/SeeedXiaoRP2040.tsx | 2 +- lib/generatedModules.tsx | 28 +++++++++---------- .../@tscircuit%2Ffootprinter@0.0.387.patch | 24 ++++++++++------ 33 files changed, 70 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index a2faa22..e57a3d5 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ The first concrete model-specific modules are: used by Arduino CNC shields, with its 2x8 socket, motor outputs, control inputs, power domains, and microstep pull-downs modeled explicitly. -Each component is a single `` backed entirely by a female `pinrow` +Each component is a single `` backed entirely by a female `headermodule` footprinter string. Every exposed header pin has `pinAttributes`, including GPIO behavior, internal pull support, I2C/SPI/UART capabilities, and explicit power/ground direction and voltage where applicable. @@ -73,7 +73,7 @@ supply bulk capacitor. The XIAO component also provides `XIAO_PIN1` through `XIAO_PIN14` aliases for Seeed's official header numbering. This keeps those numbers exact even though -the underlying generic pinrow footprinter has its own perimeter numbering. +the underlying `headermodule` footprinter has its own perimeter numbering. All aliases are available in selectors; pass `showPinAliases` when you also want them rendered inside the schematic symbol. @@ -86,8 +86,9 @@ The A4988 geometry, power limits, and control behavior come from Pololu's ## Footprinter compatibility -Independent row spacing and sparse pin grids are implemented in footprinter's -main branch but are not yet present in its latest published package. This repo -temporarily carries the matching upstream patch so installs and builds use the -correct geometry immediately. The patch can be removed after those features -are included in a footprinter release consumed by tscircuit. +Independent row spacing, sparse pin grids, module outlines, and literal +silkscreen labels are implemented in footprinter's main branch but are not yet +present in its latest published package. This repo temporarily carries the +matching upstream patch so installs and builds use the correct geometry and +`headermodule` syntax immediately. The patch can be removed after those +features are included in a footprinter release consumed by tscircuit. diff --git a/lib/AdafruitFeatherESP32S2.tsx b/lib/AdafruitFeatherESP32S2.tsx index 7592c1f..ecbda7f 100644 --- a/lib/AdafruitFeatherESP32S2.tsx +++ b/lib/AdafruitFeatherESP32S2.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit ESP32-S2 Feather 12+16 female socket footprint. */ export const ADAFRUIT_FEATHER_ESP32_S2_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER ESP32-S2)" as const + "headermodule28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER ESP32-S2)" as const export const ADAFRUIT_FEATHER_ESP32_S2_PIN_LABELS = { // Short row, USB end to opposite end. diff --git a/lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx b/lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx index 2e91dd6..012cfff 100644 --- a/lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx +++ b/lib/AdafruitFeatherESP32S34MBFlash2MBPSRAM.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit ESP32-S3 Feather 4MB Flash / 2MB PSRAM 12+16 female socket. */ export const ADAFRUIT_FEATHER_ESP32_S3_4MB_FLASH_2MB_PSRAM_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER ESP32-S3)" as const + "headermodule28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER ESP32-S3)" as const export const ADAFRUIT_FEATHER_ESP32_S3_4MB_FLASH_2MB_PSRAM_PIN_LABELS = { // Short row, USB end to opposite end. diff --git a/lib/AdafruitFeatherESP32S3TFT.tsx b/lib/AdafruitFeatherESP32S3TFT.tsx index 2da54f9..0b5a635 100644 --- a/lib/AdafruitFeatherESP32S3TFT.tsx +++ b/lib/AdafruitFeatherESP32S3TFT.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit ESP32-S3 TFT Feather: the two populated Feather header rows. */ export const ADAFRUIT_FEATHER_ESP32_S3_TFT_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER S3 TFT)" as const + "headermodule28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER S3 TFT)" as const export const ADAFRUIT_FEATHER_ESP32_S3_TFT_PIN_LABELS = { pin1: ["VBAT"], diff --git a/lib/AdafruitFeatherESP32V2.tsx b/lib/AdafruitFeatherESP32V2.tsx index 0c75159..a0726a6 100644 --- a/lib/AdafruitFeatherESP32V2.tsx +++ b/lib/AdafruitFeatherESP32V2.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit ESP32 Feather V2 12+16 female socket footprint. */ export const ADAFRUIT_FEATHER_ESP32_V2_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER ESP32 V2)" as const + "headermodule28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER ESP32 V2)" as const export const ADAFRUIT_FEATHER_ESP32_V2_PIN_LABELS = { // Short row, USB end to opposite end. diff --git a/lib/AdafruitFeatherM0Express.tsx b/lib/AdafruitFeatherM0Express.tsx index faf5eb1..feb302e 100644 --- a/lib/AdafruitFeatherM0Express.tsx +++ b/lib/AdafruitFeatherM0Express.tsx @@ -3,7 +3,7 @@ import { samdGpio } from "./samdPinAttributes" /** Adafruit Feather M0 Express 12+16 female socket footprint. */ export const ADAFRUIT_FEATHER_M0_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER M0)" as const + "headermodule28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER M0)" as const export const ADAFRUIT_FEATHER_M0_EXPRESS_PIN_LABELS = { // Short row, USB end to opposite end. diff --git a/lib/AdafruitFeatherM4Express.tsx b/lib/AdafruitFeatherM4Express.tsx index b4b36cb..c751b20 100644 --- a/lib/AdafruitFeatherM4Express.tsx +++ b/lib/AdafruitFeatherM4Express.tsx @@ -3,7 +3,7 @@ import { samdGpio } from "./samdPinAttributes" /** Adafruit Feather M4 Express 12+16 female socket footprint. */ export const ADAFRUIT_FEATHER_M4_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER M4)" as const + "headermodule28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER M4)" as const export const ADAFRUIT_FEATHER_M4_EXPRESS_PIN_LABELS = { // Short row, USB end to opposite end. diff --git a/lib/AdafruitFeatherNRF52840Express.tsx b/lib/AdafruitFeatherNRF52840Express.tsx index 9cacd3b..a893f30 100644 --- a/lib/AdafruitFeatherNRF52840Express.tsx +++ b/lib/AdafruitFeatherNRF52840Express.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit Feather nRF52840 Express 12+16 female socket footprint. */ export const ADAFRUIT_FEATHER_NRF52840_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER NRF52840)" as const + "headermodule28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER NRF52840)" as const export const ADAFRUIT_FEATHER_NRF52840_EXPRESS_PIN_LABELS = { // Short row, USB end to opposite end. Aliases are from Adafruit's nRF52840 diff --git a/lib/AdafruitFeatherRP2040.tsx b/lib/AdafruitFeatherRP2040.tsx index 71f12de..503b4c5 100644 --- a/lib/AdafruitFeatherRP2040.tsx +++ b/lib/AdafruitFeatherRP2040.tsx @@ -6,7 +6,7 @@ import { rp2040Gpio } from "./rp2040PinAttributes" * USB is on the negative PCB X side when pcbRotation is zero. */ export const ADAFRUIT_FEATHER_RP2040_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER RP2040)" as const + "headermodule28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER RP2040)" as const export const ADAFRUIT_FEATHER_RP2040_PIN_LABELS = { // Short row, USB end to opposite end. diff --git a/lib/AdafruitFeatherRP2350.tsx b/lib/AdafruitFeatherRP2350.tsx index 95cd218..6fd0242 100644 --- a/lib/AdafruitFeatherRP2350.tsx +++ b/lib/AdafruitFeatherRP2350.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit Feather RP2350 socket: one 12-pin row and one 16-pin row. */ export const ADAFRUIT_FEATHER_RP2350_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER RP2350)" as const + "headermodule28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER RP2350)" as const export const ADAFRUIT_FEATHER_RP2350_PIN_LABELS = { pin1: ["VBAT"], diff --git a/lib/AdafruitFeatherSTM32F405Express.tsx b/lib/AdafruitFeatherSTM32F405Express.tsx index afb2127..00e395d 100644 --- a/lib/AdafruitFeatherSTM32F405Express.tsx +++ b/lib/AdafruitFeatherSTM32F405Express.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit Feather STM32F405 Express 12+16 female socket footprint. */ export const ADAFRUIT_FEATHER_STM32F405_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER STM32F405)" as const + "headermodule28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(FEATHER STM32F405)" as const export const ADAFRUIT_FEATHER_STM32F405_EXPRESS_PIN_LABELS = { // Short row, USB end to opposite end. The MCU aliases and alternate diff --git a/lib/AdafruitItsyBitsyESP32.tsx b/lib/AdafruitItsyBitsyESP32.tsx index a0e11b9..835f04a 100644 --- a/lib/AdafruitItsyBitsyESP32.tsx +++ b/lib/AdafruitItsyBitsyESP32.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit ItsyBitsy ESP32: two 14-pin female header rows. */ export const ADAFRUIT_ITSYBITSY_ESP32_FOOTPRINT = - "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY ESP32)" as const + "headermodule28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY ESP32)" as const export const ADAFRUIT_ITSYBITSY_ESP32_PIN_LABELS = { pin1: ["VBAT"], diff --git a/lib/AdafruitItsyBitsyM0Express.tsx b/lib/AdafruitItsyBitsyM0Express.tsx index 05ccda4..2294cf7 100644 --- a/lib/AdafruitItsyBitsyM0Express.tsx +++ b/lib/AdafruitItsyBitsyM0Express.tsx @@ -3,7 +3,7 @@ import { samdGpio } from "./samdPinAttributes" /** Adafruit ItsyBitsy M0 Express: two 14-pin female header rows. */ export const ADAFRUIT_ITSYBITSY_M0_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY M0)" as const + "headermodule28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY M0)" as const export const ADAFRUIT_ITSYBITSY_M0_EXPRESS_PIN_LABELS = { pin1: ["VBAT"], diff --git a/lib/AdafruitItsyBitsyM4Express.tsx b/lib/AdafruitItsyBitsyM4Express.tsx index 2e689fb..a9bd9c6 100644 --- a/lib/AdafruitItsyBitsyM4Express.tsx +++ b/lib/AdafruitItsyBitsyM4Express.tsx @@ -3,7 +3,7 @@ import { samdGpio } from "./samdPinAttributes" /** Adafruit ItsyBitsy M4 Express: two 14-pin female header rows. */ export const ADAFRUIT_ITSYBITSY_M4_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY M4)" as const + "headermodule28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY M4)" as const export const ADAFRUIT_ITSYBITSY_M4_EXPRESS_PIN_LABELS = { pin1: ["VBAT"], diff --git a/lib/AdafruitItsyBitsyNRF52840Express.tsx b/lib/AdafruitItsyBitsyNRF52840Express.tsx index 65a6339..a9ed62d 100644 --- a/lib/AdafruitItsyBitsyNRF52840Express.tsx +++ b/lib/AdafruitItsyBitsyNRF52840Express.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit ItsyBitsy nRF52840 Express: two 14-pin female header rows. */ export const ADAFRUIT_ITSYBITSY_NRF52840_EXPRESS_FOOTPRINT = - "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY NRF52840)" as const + "headermodule28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY NRF52840)" as const export const ADAFRUIT_ITSYBITSY_NRF52840_EXPRESS_PIN_LABELS = { pin1: ["VBAT"], diff --git a/lib/AdafruitItsyBitsyRP2040.tsx b/lib/AdafruitItsyBitsyRP2040.tsx index 736f924..dcae4b6 100644 --- a/lib/AdafruitItsyBitsyRP2040.tsx +++ b/lib/AdafruitItsyBitsyRP2040.tsx @@ -3,7 +3,7 @@ import { rp2040Gpio } from "./rp2040PinAttributes" /** Adafruit ItsyBitsy RP2040: two 14-pin female header rows. */ export const ADAFRUIT_ITSYBITSY_RP2040_FOOTPRINT = - "pinrow28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY RP2040)" as const + "headermodule28_rows2_cols14_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(ITSY RP2040)" as const export const ADAFRUIT_ITSYBITSY_RP2040_PIN_LABELS = { pin1: ["VBAT"], diff --git a/lib/AdafruitQTPyESP32S2.tsx b/lib/AdafruitQTPyESP32S2.tsx index 9fbe5e5..6fa9ffb 100644 --- a/lib/AdafruitQTPyESP32S2.tsx +++ b/lib/AdafruitQTPyESP32S2.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit QT Py ESP32-S2: two seven-pin female header rows. */ export const ADAFRUIT_QT_PY_ESP32_S2_FOOTPRINT = - "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY ESP32-S2)" as const + "headermodule14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY ESP32-S2)" as const export const ADAFRUIT_QT_PY_ESP32_S2_PIN_LABELS = { pin1: ["A0", "GPIO18"], diff --git a/lib/AdafruitQTPyESP32S3.tsx b/lib/AdafruitQTPyESP32S3.tsx index 6afda44..4d26b48 100644 --- a/lib/AdafruitQTPyESP32S3.tsx +++ b/lib/AdafruitQTPyESP32S3.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Adafruit QT Py ESP32-S3: two seven-pin female header rows. */ export const ADAFRUIT_QT_PY_ESP32_S3_FOOTPRINT = - "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY ESP32-S3)" as const + "headermodule14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY ESP32-S3)" as const export const ADAFRUIT_QT_PY_ESP32_S3_PIN_LABELS = { pin1: ["A0", "GPIO18"], diff --git a/lib/AdafruitQTPyNRF52840.tsx b/lib/AdafruitQTPyNRF52840.tsx index fbbe146..21c4c29 100644 --- a/lib/AdafruitQTPyNRF52840.tsx +++ b/lib/AdafruitQTPyNRF52840.tsx @@ -9,7 +9,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" * product is represented by AdafruitItsyBitsyNRF52840Express. */ export const ADAFRUIT_QT_PY_NRF52840_FOOTPRINT = - "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY NRF52840)" as const + "headermodule14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY NRF52840)" as const export const ADAFRUIT_QT_PY_NRF52840_PIN_LABELS = { pin1: ["A0"], diff --git a/lib/AdafruitQTPyRP2350.tsx b/lib/AdafruitQTPyRP2350.tsx index 5d6352b..4264c7a 100644 --- a/lib/AdafruitQTPyRP2350.tsx +++ b/lib/AdafruitQTPyRP2350.tsx @@ -8,7 +8,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" * module when a production Adafruit RP2350 pinout is required. */ export const ADAFRUIT_QT_PY_RP2350_FOOTPRINT = - "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY RP2350)" as const + "headermodule14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY RP2350)" as const export const ADAFRUIT_QT_PY_RP2350_PIN_LABELS = { pin1: ["A0"], diff --git a/lib/AdafruitQTPySAMD21.tsx b/lib/AdafruitQTPySAMD21.tsx index 3151eee..2ca60dd 100644 --- a/lib/AdafruitQTPySAMD21.tsx +++ b/lib/AdafruitQTPySAMD21.tsx @@ -3,7 +3,7 @@ import { samdGpio } from "./samdPinAttributes" /** Adafruit QT Py SAMD21: two seven-pin female header rows. */ export const ADAFRUIT_QT_PY_SAMD21_FOOTPRINT = - "pinrow14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY SAMD21)" as const + "headermodule14_rows2_cols7_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(QT PY SAMD21)" as const export const ADAFRUIT_QT_PY_SAMD21_PIN_LABELS = { pin1: ["A0", "PA02"], diff --git a/lib/ArduinoNano33BLE.tsx b/lib/ArduinoNano33BLE.tsx index 5b3c552..4d77490 100644 --- a/lib/ArduinoNano33BLE.tsx +++ b/lib/ArduinoNano33BLE.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano 33 BLE: the 30-pin Nano header arrangement. */ export const ARDUINO_NANO_33_BLE_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO 33 BLE)" as const + "headermodule30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO 33 BLE)" as const export const ARDUINO_NANO_33_BLE_PIN_LABELS = { pin1: ["TX", "D1"], diff --git a/lib/ArduinoNano33BLESenseRev2.tsx b/lib/ArduinoNano33BLESenseRev2.tsx index b4027fd..cf5f619 100644 --- a/lib/ArduinoNano33BLESenseRev2.tsx +++ b/lib/ArduinoNano33BLESenseRev2.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano 33 BLE Sense Rev2: the 30-pin Nano header arrangement. */ export const ARDUINO_NANO_33_BLE_SENSE_REV2_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO 33 BLE SENSE)" as const + "headermodule30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO 33 BLE SENSE)" as const export const ARDUINO_NANO_33_BLE_SENSE_REV2_PIN_LABELS = { pin1: ["TX", "D1"], diff --git a/lib/ArduinoNano33IoT.tsx b/lib/ArduinoNano33IoT.tsx index d35d821..4421169 100644 --- a/lib/ArduinoNano33IoT.tsx +++ b/lib/ArduinoNano33IoT.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano 33 IoT: the 30-pin Nano header arrangement. */ export const ARDUINO_NANO_33_IOT_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO 33 IOT)" as const + "headermodule30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO 33 IOT)" as const export const ARDUINO_NANO_33_IOT_PIN_LABELS = { pin1: ["TX", "D1"], diff --git a/lib/ArduinoNanoATmega328P.tsx b/lib/ArduinoNanoATmega328P.tsx index 0df8ed4..8a1e4f1 100644 --- a/lib/ArduinoNanoATmega328P.tsx +++ b/lib/ArduinoNanoATmega328P.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano ATmega328P: the standard 30-pin Nano header arrangement. */ export const ARDUINO_NANO_ATMEGA328P_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO ATMEGA328P)" as const + "headermodule30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO ATMEGA328P)" as const export const ARDUINO_NANO_ATMEGA328P_PIN_LABELS = { pin1: ["TX", "D1"], diff --git a/lib/ArduinoNanoESP32.tsx b/lib/ArduinoNanoESP32.tsx index 8c8ef1e..6bf1466 100644 --- a/lib/ArduinoNanoESP32.tsx +++ b/lib/ArduinoNanoESP32.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano ESP32: the ESP32-S3 Nano 30-pin header arrangement. */ export const ARDUINO_NANO_ESP32_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO ESP32)" as const + "headermodule30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO ESP32)" as const export const ARDUINO_NANO_ESP32_PIN_LABELS = { pin1: ["TX", "D1", "GPIO43"], diff --git a/lib/ArduinoNanoEvery.tsx b/lib/ArduinoNanoEvery.tsx index 0075d31..3f37f50 100644 --- a/lib/ArduinoNanoEvery.tsx +++ b/lib/ArduinoNanoEvery.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano Every: the standard 30-pin Nano header arrangement. */ export const ARDUINO_NANO_EVERY_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO EVERY)" as const + "headermodule30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO EVERY)" as const export const ARDUINO_NANO_EVERY_PIN_LABELS = { pin1: ["TX", "D1"], diff --git a/lib/ArduinoNanoMatter.tsx b/lib/ArduinoNanoMatter.tsx index 07ab81a..cf50401 100644 --- a/lib/ArduinoNanoMatter.tsx +++ b/lib/ArduinoNanoMatter.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano Matter: MGM240S-based 30-pin Nano header arrangement. */ export const ARDUINO_NANO_MATTER_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO MATTER)" as const + "headermodule30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO MATTER)" as const export const ARDUINO_NANO_MATTER_PIN_LABELS = { pin1: ["D0", "TX", "PIN_SERIAL_TX1"], diff --git a/lib/ArduinoNanoRP2040Connect.tsx b/lib/ArduinoNanoRP2040Connect.tsx index 2c01a5b..16c9ee7 100644 --- a/lib/ArduinoNanoRP2040Connect.tsx +++ b/lib/ArduinoNanoRP2040Connect.tsx @@ -2,7 +2,7 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" /** Arduino Nano RP2040 Connect: the RP2040 30-pin Nano header arrangement. */ export const ARDUINO_NANO_RP2040_CONNECT_FOOTPRINT = - "pinrow30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO RP2040)" as const + "headermodule30_rows2_cols15_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(NANO RP2040)" as const export const ARDUINO_NANO_RP2040_CONNECT_PIN_LABELS = { pin1: ["TX", "D1", "GPIO0"], diff --git a/lib/PololuA4988StepperMotorDriverCarrier.tsx b/lib/PololuA4988StepperMotorDriverCarrier.tsx index 8d056a2..6c92c52 100644 --- a/lib/PololuA4988StepperMotorDriverCarrier.tsx +++ b/lib/PololuA4988StepperMotorDriverCarrier.tsx @@ -6,11 +6,11 @@ import type { ChipProps, PinAttributeMap } from "@tscircuit/props" * when pcbRotation is zero. */ export const POLOLU_A4988_STEPPER_MOTOR_DRIVER_CARRIER_FOOTPRINT = - "pinrow16_rows2_p2.54mm_py12.7mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(A4988 DRIVER)" as const + "headermodule16_rows2_p2.54mm_py12.7mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(A4988 DRIVER)" as const export const POLOLU_A4988_STEPPER_MOTOR_DRIVER_CARRIER_PIN_LABELS = { - // ENABLE/VMOT end to DIR/logic-GND end. The generic pinrow footprinter - // numbers around the perimeter, so the second physical row runs pin16→10. + // ENABLE/VMOT end to DIR/logic-GND end. The headermodule footprinter numbers + // around the perimeter, so the second physical row runs pin16→10. pin1: ["ENABLE", "EN", "nENABLE"], pin2: ["VMOT", "MOTOR_SUPPLY"], pin3: ["GND_MOTOR", "PGND", "GND"], diff --git a/lib/SeeedXiaoRP2040.tsx b/lib/SeeedXiaoRP2040.tsx index 5a0df06..08c7457 100644 --- a/lib/SeeedXiaoRP2040.tsx +++ b/lib/SeeedXiaoRP2040.tsx @@ -6,7 +6,7 @@ import { rp2040Gpio } from "./rp2040PinAttributes" * USB is on the negative PCB X side when pcbRotation is zero. */ export const SEEED_XIAO_RP2040_FOOTPRINT = - "pinrow14_rows2_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(XIAO RP2040)" as const + "headermodule14_rows2_p2.54mm_py15.24mm_id1mm_od1.6mm_female_silkscreenborder_silkscreenlabel(XIAO RP2040)" as const export const SEEED_XIAO_RP2040_PIN_LABELS = { // Footprinter numbering follows its perimeter traversal. XIAO_PIN aliases diff --git a/lib/generatedModules.tsx b/lib/generatedModules.tsx index 0db5d96..7e6a8d2 100644 --- a/lib/generatedModules.tsx +++ b/lib/generatedModules.tsx @@ -86,20 +86,20 @@ const UART_RX = { capabilities: ["uart_rx"], } as const satisfies PinAttributeMap -const FOOTPRINT_F3 = "pinrow3_p2.54mm_id1mm_od1.6mm_female_nopinlabels" as const -const FOOTPRINT_F4 = "pinrow4_p2.54mm_id1mm_od1.6mm_female_nopinlabels" as const -const FOOTPRINT_F5 = "pinrow5_p2.54mm_id1mm_od1.6mm_female_nopinlabels" as const -const FOOTPRINT_F6 = "pinrow6_p2.54mm_id1mm_od1.6mm_female_nopinlabels" as const -const FOOTPRINT_F8 = "pinrow8_p2.54mm_id1mm_od1.6mm_female_nopinlabels" as const -const FOOTPRINT_F10 = "pinrow10_p2.54mm_id1mm_od1.6mm_female_nopinlabels" as const -const FOOTPRINT_F12 = "pinrow12_rows2_p2.54mm_py7.62mm_id1mm_od1.6mm_female_nopinlabels" as const -const FOOTPRINT_F14 = "pinrow14_rows2_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const -const FOOTPRINT_F16 = "pinrow16_rows2_p2.54mm_py12.7mm_id1mm_od1.6mm_female_nopinlabels" as const -const FOOTPRINT_F24 = "pinrow24_rows2_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const -const FOOTPRINT_F28 = "pinrow28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const -const FOOTPRINT_F30 = "pinrow30_rows2_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const -const FOOTPRINT_F40 = "pinrow40_rows2_p2.54mm_py17.78mm_id1mm_od1.6mm_female_nopinlabels" as const -const FOOTPRINT_F42 = "pinrow42_rows2_p2.54mm_py17.78mm_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F3 = "headermodule3_p2.54mm_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F4 = "headermodule4_p2.54mm_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F5 = "headermodule5_p2.54mm_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F6 = "headermodule6_p2.54mm_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F8 = "headermodule8_p2.54mm_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F10 = "headermodule10_p2.54mm_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F12 = "headermodule12_rows2_p2.54mm_py7.62mm_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F14 = "headermodule14_rows2_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F16 = "headermodule16_rows2_p2.54mm_py12.7mm_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F24 = "headermodule24_rows2_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F28 = "headermodule28_rows2_cols16_p2.54mm_py20.32mm_missing(1,2,3,4)_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F30 = "headermodule30_rows2_p2.54mm_py15.24mm_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F40 = "headermodule40_rows2_p2.54mm_py17.78mm_id1mm_od1.6mm_female_nopinlabels" as const +const FOOTPRINT_F42 = "headermodule42_rows2_p2.54mm_py17.78mm_id1mm_od1.6mm_female_nopinlabels" as const export const FEATHER28_PIN_LABELS = { pin1: ["BAT"], diff --git a/patches/@tscircuit%2Ffootprinter@0.0.387.patch b/patches/@tscircuit%2Ffootprinter@0.0.387.patch index 39bcf12..f6416d7 100644 --- a/patches/@tscircuit%2Ffootprinter@0.0.387.patch +++ b/patches/@tscircuit%2Ffootprinter@0.0.387.patch @@ -2,7 +2,15 @@ diff --git a/dist/index.js b/dist/index.js index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282d93077b8 100644 --- a/dist/index.js +++ b/dist/index.js -@@ -3268,9 +3268,12 @@ var pinrow_def = base_def.extend({ +@@ -31,6 +31,7 @@ __export(fn_exports, { + ms013: () => ms013, + msop: () => msop, + pad: () => pad, ++ headermodule: () => pinrow, + pinrow: () => pinrow, + platedhole: () => platedhole2, + potentiometer: () => potentiometer, +@@ -3268,9 +3269,12 @@ var pinrow_def = base_def.extend({ fn: z24.string(), num_pins: z24.number().optional().default(6), rows: z24.union([z24.string(), z24.number()]).transform((val) => Number(val)).optional().default(1).describe("number of rows"), @@ -15,7 +23,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 male: z24.boolean().optional().describe("for male pin headers"), female: z24.boolean().optional().describe("for female pin headers"), smd: z24.boolean().optional().describe("surface mount device"), -@@ -3288,7 +3291,11 @@ var pinrow_def = base_def.extend({ +@@ -3288,7 +3292,11 @@ var pinrow_def = base_def.extend({ doublesidedpinlabel: z24.boolean().optional().default(false).describe("add silkscreen pins in top and bottom layers"), bottomsidepinlabel: z24.boolean().optional().default(false).describe( "place the silkscreen reference text on the bottom layer instead of top" @@ -28,7 +36,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 }).transform((data) => { const pinlabelAnchorSide = determinePinlabelAnchorSide(data); return { -@@ -3307,15 +3314,32 @@ var pinrow_def = base_def.extend({ +@@ -3307,15 +3315,32 @@ var pinrow_def = base_def.extend({ path: ["male", "female"] }); } @@ -61,7 +69,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 pinlabelAnchorSide, pinlabelverticallyinverted, pinlabelorthogonal, -@@ -3323,16 +3347,37 @@ var pinrow = (raw_params) => { +@@ -3323,16 +3348,37 @@ var pinrow = (raw_params) => { pinlabeltextalignright, nopinlabels, doublesidedpinlabel, @@ -103,7 +111,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 const calculateAnchorPosition = ({ xoff, yoff, -@@ -3455,8 +3500,22 @@ var pinrow = (raw_params) => { +@@ -3455,8 +3501,22 @@ var pinrow = (raw_params) => { } }; const usedPositions = /* @__PURE__ */ new Set(); @@ -128,7 +136,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 const xStart = -((num_pins - 1) / 2) * p; for (let i = 0; i < num_pins; i++) { const pinNumber = i + 1; -@@ -3466,7 +3525,7 @@ var pinrow = (raw_params) => { +@@ -3466,7 +3526,7 @@ var pinrow = (raw_params) => { usedPositions.add(posKey); addPin(pinNumber, xoff, 0); } @@ -137,7 +145,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 const xStart = -((numPinsPerRow - 1) / 2) * p; let currentPin = 1; for (let row = 0; row < rows && currentPin <= num_pins; row++) { -@@ -3534,10 +3593,32 @@ var pinrow = (raw_params) => { +@@ -3534,10 +3594,32 @@ var pinrow = (raw_params) => { ); } } @@ -171,7 +179,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 const padOuterHalfWidth = pinRowSpanX / 2 + padHalfWidth; const padOuterHalfHeight = pinRowSpanY / 2 + padHalfHeight; const bodyHalfWidth = pinRowSpanX / 2 + p / 2; -@@ -3560,7 +3641,12 @@ var pinrow = (raw_params) => { +@@ -3560,7 +3642,12 @@ var pinrow = (raw_params) => { layer: "top" }; return { From 3658d2dadf35ef2a5ab85fa7e15937b7e77ab0d7 Mon Sep 17 00:00:00 2001 From: seveibar Date: Sun, 2 Aug 2026 15:29:12 -0700 Subject: [PATCH 5/8] Render pin one arrows in header modules --- .../@tscircuit%2Ffootprinter@0.0.387.patch | 54 ++++++++++++++++--- tests/footprints.test.ts | 20 +++++++ 2 files changed, 68 insertions(+), 6 deletions(-) diff --git a/patches/@tscircuit%2Ffootprinter@0.0.387.patch b/patches/@tscircuit%2Ffootprinter@0.0.387.patch index f6416d7..1abc46c 100644 --- a/patches/@tscircuit%2Ffootprinter@0.0.387.patch +++ b/patches/@tscircuit%2Ffootprinter@0.0.387.patch @@ -1,5 +1,5 @@ diff --git a/dist/index.js b/dist/index.js -index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282d93077b8 100644 +index 8d7db1f54405212128e9d64c0777170d9a7a75ee..e4eb953570e3c366435350a5307abf477fd52bbc 100644 --- a/dist/index.js +++ b/dist/index.js @@ -31,6 +31,7 @@ __export(fn_exports, { @@ -69,7 +69,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 pinlabelAnchorSide, pinlabelverticallyinverted, pinlabelorthogonal, -@@ -3323,16 +3348,37 @@ var pinrow = (raw_params) => { +@@ -3323,16 +3348,38 @@ var pinrow = (raw_params) => { pinlabeltextalignright, nopinlabels, doublesidedpinlabel, @@ -84,6 +84,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 const holes = []; - const numPinsPerRow = Math.ceil(num_pins / rows); - const pinRowSpanY = (rows - 1) * p; ++ let pin1Position = null; + const missingPositions = missing; + const uniqueMissingPositions = /* @__PURE__ */ new Set(missingPositions); + if (uniqueMissingPositions.size !== missingPositions.length) { @@ -111,7 +112,15 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 const calculateAnchorPosition = ({ xoff, yoff, -@@ -3455,8 +3501,22 @@ var pinrow = (raw_params) => { +@@ -3380,6 +3427,7 @@ var pinrow = (raw_params) => { + return { anchor_x: xoff + dx, anchor_y: yoff + dy }; + }; + const addPin = (pinNumber, xoff, yoff) => { ++ if (pinNumber === 1) pin1Position = { x: xoff, y: yoff }; + if (parameters.smd) { + holes.push(rectpad(pinNumber, xoff, yoff, parameters.pw, parameters.pl)); + } else { +@@ -3455,8 +3503,22 @@ var pinrow = (raw_params) => { } }; const usedPositions = /* @__PURE__ */ new Set(); @@ -136,7 +145,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 const xStart = -((num_pins - 1) / 2) * p; for (let i = 0; i < num_pins; i++) { const pinNumber = i + 1; -@@ -3466,7 +3526,7 @@ var pinrow = (raw_params) => { +@@ -3466,7 +3528,7 @@ var pinrow = (raw_params) => { usedPositions.add(posKey); addPin(pinNumber, xoff, 0); } @@ -145,7 +154,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 const xStart = -((numPinsPerRow - 1) / 2) * p; let currentPin = 1; for (let row = 0; row < rows && currentPin <= num_pins; row++) { -@@ -3534,10 +3594,32 @@ var pinrow = (raw_params) => { +@@ -3534,10 +3596,64 @@ var pinrow = (raw_params) => { ); } } @@ -165,6 +174,38 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 + { x: -silkscreenHalfWidth, y: silkscreenHalfHeight }, + { x: -silkscreenHalfWidth, y: -silkscreenHalfHeight } + ]) : null; ++ const pin1Arrow = (() => { ++ if (parameters.fn !== "headermodule" || !pin1Position) return null; ++ const arrowSize = Math.max(0.3, Math.min(0.6, p / 4)); ++ const clearance = 0.15; ++ const horizontal = pinlabelAnchorSide === "top" || pinlabelAnchorSide === "bottom"; ++ if (horizontal) { ++ const direction = Math.sign(pin1Position.x) || (pinlabelAnchorSide === "top" ? -1 : 1); ++ const tipX = pin1Position.x + direction * (padHalfWidth + clearance); ++ const baseX = tipX + direction * arrowSize; ++ return silkscreenpath([ ++ { x: tipX, y: pin1Position.y }, ++ { x: baseX, y: pin1Position.y - arrowSize }, ++ { x: baseX, y: pin1Position.y + arrowSize }, ++ { x: tipX, y: pin1Position.y } ++ ], { ++ pcb_component_id: "pin_marker_1", ++ pcb_silkscreen_path_id: "pin_marker_1" ++ }); ++ } ++ const direction = Math.sign(pin1Position.y) || 1; ++ const tipY = pin1Position.y + direction * (padHalfHeight + clearance); ++ const baseY = tipY + direction * arrowSize; ++ return silkscreenpath([ ++ { x: pin1Position.x, y: tipY }, ++ { x: pin1Position.x - arrowSize, y: baseY }, ++ { x: pin1Position.x + arrowSize, y: baseY }, ++ { x: pin1Position.x, y: tipY } ++ ], { ++ pcb_component_id: "pin_marker_1", ++ pcb_silkscreen_path_id: "pin_marker_1" ++ }); ++ })(); + const refText = silkscreenlabel ? { + type: "pcb_silkscreen_text", + pcb_silkscreen_text_id: "silkscreen_text_1", @@ -179,7 +220,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 const padOuterHalfWidth = pinRowSpanX / 2 + padHalfWidth; const padOuterHalfHeight = pinRowSpanY / 2 + padHalfHeight; const bodyHalfWidth = pinRowSpanX / 2 + p / 2; -@@ -3560,7 +3642,12 @@ var pinrow = (raw_params) => { +@@ -3560,7 +3676,13 @@ var pinrow = (raw_params) => { layer: "top" }; return { @@ -187,6 +228,7 @@ index 8d7db1f54405212128e9d64c0777170d9a7a75ee..52ffa96d45b6523a2876d13c2f572282 + circuitJson: [ + ...holes, + ...(silkscreenBorder ? [silkscreenBorder] : []), ++ ...(pin1Arrow ? [pin1Arrow] : []), + refText, + courtyard + ], diff --git a/tests/footprints.test.ts b/tests/footprints.test.ts index ee174c2..0d6f654 100644 --- a/tests/footprints.test.ts +++ b/tests/footprints.test.ts @@ -104,6 +104,26 @@ test("Seeed XIAO RP2040 is a 2x7 female header footprint", () => { ]) }) +test("header modules include a silkscreen pin-one arrow", () => { + const arrow = fp + .string(SEEED_XIAO_RP2040_FOOTPRINT) + .circuitJson() + .find( + (element) => + element.type === "pcb_silkscreen_path" && + element.pcb_silkscreen_path_id === "pin_marker_1", + ) + + expect(arrow).toMatchObject({ + pcb_component_id: "pin_marker_1", + layer: "top", + }) + if (arrow?.type === "pcb_silkscreen_path") { + expect(arrow.route[0]).toMatchObject({ x: -8.57, y: 7.62 }) + expect(arrow.route[3]).toMatchObject({ x: -8.57, y: 7.62 }) + } +}) + test("Pololu A4988 carrier is a 2x8 female header footprint", () => { const footprint = fp.string( POLOLU_A4988_STEPPER_MOTOR_DRIVER_CARRIER_FOOTPRINT, From 0774654b02055c6a7633c1d56fc80a82ab3a780e Mon Sep 17 00:00:00 2001 From: seveibar Date: Sun, 2 Aug 2026 18:28:25 -0700 Subject: [PATCH 6/8] Use released footprinter and refresh module snapshots --- README.md | 10 +- bun.lock | 33 +-- package.json | 7 +- .../@tscircuit%2Ffootprinter@0.0.387.patch | 237 ------------------ .../AdafruitFeatherESP32S3TFT-pcb.snap.svg | 2 +- .../AdafruitFeatherRP2350-pcb.snap.svg | 2 +- .../AdafruitItsyBitsyESP32-pcb.snap.svg | 2 +- .../AdafruitItsyBitsyM0Express-pcb.snap.svg | 2 +- .../AdafruitItsyBitsyM4Express-pcb.snap.svg | 2 +- ...fruitItsyBitsyNRF52840Express-pcb.snap.svg | 2 +- .../AdafruitItsyBitsyRP2040-pcb.snap.svg | 2 +- .../AdafruitQTPyESP32S2-pcb.snap.svg | 2 +- .../AdafruitQTPyESP32S3-pcb.snap.svg | 2 +- .../AdafruitQTPyNRF52840-pcb.snap.svg | 2 +- .../AdafruitQTPyRP2350-pcb.snap.svg | 2 +- .../AdafruitQTPySAMD21-pcb.snap.svg | 2 +- .../ArduinoNano33BLE-pcb.snap.svg | 2 +- .../ArduinoNano33BLESenseRev2-pcb.snap.svg | 2 +- .../ArduinoNano33IoT-pcb.snap.svg | 2 +- .../ArduinoNanoATmega328P-pcb.snap.svg | 2 +- .../ArduinoNanoESP32-pcb.snap.svg | 2 +- .../ArduinoNanoEvery-pcb.snap.svg | 2 +- .../ArduinoNanoMatter-pcb.snap.svg | 2 +- .../ArduinoNanoRP2040Connect-pcb.snap.svg | 2 +- 24 files changed, 43 insertions(+), 284 deletions(-) delete mode 100644 patches/@tscircuit%2Ffootprinter@0.0.387.patch diff --git a/README.md b/README.md index e57a3d5..c27c433 100644 --- a/README.md +++ b/README.md @@ -86,9 +86,7 @@ The A4988 geometry, power limits, and control behavior come from Pololu's ## Footprinter compatibility -Independent row spacing, sparse pin grids, module outlines, and literal -silkscreen labels are implemented in footprinter's main branch but are not yet -present in its latest published package. This repo temporarily carries the -matching upstream patch so installs and builds use the correct geometry and -`headermodule` syntax immediately. The patch can be removed after those -features are included in a footprinter release consumed by tscircuit. +Independent row spacing, sparse pin grids, module outlines, literal silkscreen +labels, and pin-one markers are provided by `@tscircuit/footprinter` 0.0.409 or +newer. The package is pinned to that release so the `headermodule` geometry and +silkscreen output are generated by the published implementation. diff --git a/bun.lock b/bun.lock index 2b86037..5317271 100644 --- a/bun.lock +++ b/bun.lock @@ -5,13 +5,13 @@ "": { "name": "header-modules", "devDependencies": { - "@tscircuit/footprinter": "0.0.387", + "@tscircuit/footprinter": "0.0.409", "@tscircuit/props": "^0.0.604", "@types/bun": "^1.3.14", "@types/react": "^19.2.18", "bun-match-svg": "^0.0.15", "sharp": "0.32.6", - "tscircuit": "^0.0.2193", + "tscircuit": "^0.0.2204", "typescript": "^5.0.0", }, }, @@ -19,9 +19,6 @@ "trustedDependencies": [ "sharp", ], - "patchedDependencies": { - "@tscircuit/footprinter@0.0.387": "patches/@tscircuit%2Ffootprinter@0.0.387.patch", - }, "packages": { "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], @@ -167,23 +164,23 @@ "@tscircuit/capacity-autorouter": ["@tscircuit/capacity-autorouter@0.0.722", "", { "dependencies": { "fast-json-stable-stringify": "^2.1.0", "object-hash": "^3.0.0", "stack-svgs": "^0.0.1" } }, "sha512-YFfn+pa7dEitt6H7+ykZOJr+fY4QM0e8cEVs7TIv3SU0gcZpqP2q62p8TmDhV8GyY+LxtOG385lAIkb9olhzTQ=="], - "@tscircuit/checks": ["@tscircuit/checks@0.0.146", "", { "peerDependencies": { "@flatten-js/core": "*", "@tscircuit/math-utils": "*", "circuit-json": "*", "circuit-json-to-connectivity-map": "*", "typescript": "^5.5.3" } }, "sha512-zQOCjeLoSvq/my1ojSIkG3SHWYxZC0qq5MFocd2Y90Li/gvHVpEu+uBPMsBdy9Jb7tO16+UJOjmM5AKqrWYXpQ=="], + "@tscircuit/checks": ["@tscircuit/checks@0.0.150", "", { "peerDependencies": { "@flatten-js/core": "*", "@tscircuit/math-utils": "*", "circuit-json": "*", "circuit-json-to-connectivity-map": "*", "typescript": "^5.5.3" } }, "sha512-9eQMKqKecPmVtXWOqkq9Rsqz6n7cBmgE3zfscQpUjQnxkT3f9GUe3V0QYZVS4g8V4Vcr+DCUp26NKN7Cm1FYXg=="], "@tscircuit/circuit-json-util": ["@tscircuit/circuit-json-util@0.0.102", "", { "dependencies": { "parsel-js": "^1.1.2" }, "peerDependencies": { "circuit-json": "*", "transformation-matrix": "*", "zod": "3" } }, "sha512-qn9L7bcVmDFGXUMb5NKaegdotJ4GiKVgzF8nA3gwBFauOEfumDjK/80AR6BnabsfuavvjV/KuQZHXNeaeNL4QQ=="], - "@tscircuit/cli": ["@tscircuit/cli@0.1.1794", "", { "peerDependencies": { "circuit-json": "^0.0.446", "tscircuit": "*" }, "bin": { "tscircuit-cli": "cli/entrypoint.js" } }, "sha512-QHEjS3N41jyAXeNIPlVJZpyookYVju9zttfPCCkst9Bw1KnqBm4zTeqncsHYZT1GgWN+Kz1flmfDYFcaq/P57g=="], + "@tscircuit/cli": ["@tscircuit/cli@0.1.1805", "", { "peerDependencies": { "circuit-json": "^0.0.446", "tscircuit": "*" }, "bin": { "tscircuit-cli": "cli/entrypoint.js" } }, "sha512-k0+9jf/8Rz7xQrPQnxmn01RYF/sB/yYWrXZqTTwtyYmWr7CmRT4f0rwW0Dqam1kc9Fy5KFnCRqGjeIc6STg+Dw=="], "@tscircuit/copper-pour-solver": ["@tscircuit/copper-pour-solver@0.0.42", "", { "dependencies": { "@tscircuit/manifold-2d": "^0.0.6" }, "peerDependencies": { "typescript": "^5" } }, "sha512-FHsX32w/8upaPad+SkFe82JEWKCuRLzduDxJAZITPL9IdX9v/uMXiKGp2DQgoQ9kBgRHxyRcoRiaC6qCoEaq6Q=="], - "@tscircuit/core": ["@tscircuit/core@0.0.1565", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", "calculate-cell-boundaries": "^0.0.13", "calculate-packing": "^0.0.82", "css-select": "5.1.0", "format-si-unit": "^0.0.7", "nanoid": "^5.0.7", "performance-now": "^2.1.0", "react-reconciler": "^0.32.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1", "zod": "^3.25.67" }, "peerDependencies": { "@tscircuit/capacity-autorouter": "*", "@tscircuit/checks": "*", "@tscircuit/circuit-json-util": "*", "@tscircuit/create-fdm-enclosure": "*", "@tscircuit/footprinter": "*", "@tscircuit/infgrid-ijump-astar": "*", "@tscircuit/matchpack": "*", "@tscircuit/math-utils": "*", "@tscircuit/props": "*", "@tscircuit/schematic-match-adapt": "*", "bpc-graph": "*", "circuit-json": "*", "circuit-json-to-bpc": "*", "circuit-json-to-connectivity-map": "*", "circuit-json-to-spice": "*", "schematic-symbols": "*", "spicets": "*", "typescript": "^5.0.0" } }, "sha512-WDZjp7NcOS6FYJlvXFw8ttmMuTTOBEjaS/9NfC/ocwAv8xK1QGMxnAgarFMP6HUPZvoZXczTcsDBGas+X8k0Gg=="], + "@tscircuit/core": ["@tscircuit/core@0.0.1580", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", "calculate-cell-boundaries": "^0.0.13", "calculate-packing": "^0.0.82", "css-select": "5.1.0", "format-si-unit": "^0.0.7", "nanoid": "^5.0.7", "performance-now": "^2.1.0", "react-reconciler": "^0.32.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1", "zod": "^3.25.67" }, "peerDependencies": { "@tscircuit/capacity-autorouter": "*", "@tscircuit/checks": "*", "@tscircuit/circuit-json-util": "*", "@tscircuit/create-fdm-enclosure": "*", "@tscircuit/footprinter": "*", "@tscircuit/infgrid-ijump-astar": "*", "@tscircuit/matchpack": "*", "@tscircuit/math-utils": "*", "@tscircuit/props": "*", "@tscircuit/schematic-match-adapt": "*", "bpc-graph": "*", "circuit-json": "*", "circuit-json-to-bpc": "*", "circuit-json-to-connectivity-map": "*", "circuit-json-to-spice": "*", "schematic-symbols": "*", "spicets": "*", "typescript": "^5.0.0" } }, "sha512-E6S0Y5IIqxCghuAy57nokxQZNAIL9yy9OjxUyeG98SoPSwfo9psT6D4QKk3EGIoVbhzy5FFEb34U8FQIQhZalg=="], "@tscircuit/create-fdm-enclosure": ["@tscircuit/create-fdm-enclosure@0.0.3", "", { "dependencies": { "@tscircuit/solver-utils": "^0.0.19", "graphics-debug": "^0.0.96", "jscad-planner": "^0.0.14" }, "peerDependencies": { "typescript": "^5" } }, "sha512-uEjUz/8mH5GZ7wHOtNE/vk0Jisn1AeXmLWQ1kuGHsl8ndbjH11+gBnqMrOjEIFDzMChJFOIlIcYpFYRbG0nj/A=="], - "@tscircuit/eval": ["@tscircuit/eval@0.0.1107", "", { "peerDependencies": { "@tscircuit/core": "*", "circuit-json": "*", "typescript": "^5.0.0", "zod": "3" } }, "sha512-VRG5HFCTDkvg0z9au2tfzUUGLIsE/SZT1Yej5/2/TQvQ4SIS414eKaEPJA0M7gk0dkXsAapAljMEDzgfvtQzMw=="], + "@tscircuit/eval": ["@tscircuit/eval@0.0.1116", "", { "peerDependencies": { "@tscircuit/core": "*", "circuit-json": "*", "typescript": "^5.0.0", "zod": "3" } }, "sha512-ug4Q/9FL3svwf/+c89Qr32PEQ6v3ycg9MXmyt+vm+d5ZXDf9bVQ8nkfagZGgENlkEPvTEmiUCle/rPL13gQLAw=="], "@tscircuit/fanout-solver": ["@tscircuit/fanout-solver@0.0.11", "", { "dependencies": { "@tscircuit/capacity-autorouter": "0.0.718", "@tscircuit/solver-utils": "0.0.19", "graphics-debug": "0.0.96" }, "peerDependencies": { "typescript": "^5" } }, "sha512-qNlkFixA16wRUxjaWgUSdx1ICP1Vgc58v0pxkg17kuCErPpGtboSc6F58fNPnE96q7CuoiWudRsrr8cUTHJ7Ew=="], - "@tscircuit/footprinter": ["@tscircuit/footprinter@0.0.387", "", { "dependencies": { "@tscircuit/mm": "^0.0.8", "zod": "^3.23.8" }, "peerDependencies": { "circuit-json": "*" } }, "sha512-xv4BQaHhwVitXmymq4s8QL1AldMaIqGm69fIas8qqLNSnFtI3v5uj4wnpzWvmEnmoAzI7zIgrmKW+mXwCDCKCA=="], + "@tscircuit/footprinter": ["@tscircuit/footprinter@0.0.409", "", { "dependencies": { "@tscircuit/mm": "^0.0.8", "zod": "^3.23.8" }, "peerDependencies": { "circuit-json": "*" } }, "sha512-6VsrtGsvBj7MCIXxo9ofZkdkQj/eUK4u9fHrRPo/Q+ePJB4qEl8QMAa4ih9PEWTv4OuZniAQnkaMbS6zwGkUfg=="], "@tscircuit/image-utils": ["@tscircuit/image-utils@0.0.8", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "color-diff": "^1.4.0", "fast-png": "^8.0.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1" } }, "sha512-/a/dyd0Ly+YSk73pNXi0M02nfaiZ1NQ8PVNDBTOHHESyTOrNHiVAT+NWxsWi44gHZ/ivLegAmjxSSbSSGfU+sQ=="], @@ -209,7 +206,7 @@ "@tscircuit/props": ["@tscircuit/props@0.0.604", "", { "peerDependencies": { "circuit-json": "*", "react": "*", "zod": "*" } }, "sha512-O/0y/oQxQ880bCATuLILnwsW/Jg/l+3IWHxfn+GOVAycPfSiA8gDWQvWj72eUlITwXkOnQm+yUqCJYDfkRM+CA=="], - "@tscircuit/runframe": ["@tscircuit/runframe@0.0.2329", "", { "dependencies": { "@tscircuit/eval": "^0.0.1107", "@tscircuit/solver-utils": "^0.0.7", "debug": "^4.4.0" } }, "sha512-WGrTOzBCUh8k7chniceSxs88umjF5SRXKvCarY0RqzCc42EuaIKdip04Fzt3oWIeLbUc77RgJTKuHhZIZdCqZQ=="], + "@tscircuit/runframe": ["@tscircuit/runframe@0.0.2339", "", { "dependencies": { "@tscircuit/eval": "^0.0.1116", "@tscircuit/solver-utils": "^0.0.7", "debug": "^4.4.0" } }, "sha512-Y6uKnVxwMzJ7D1g3onwuGLy0vkGl7gVDMsA2C68/+P5VCqpYvxAYIXYd+aPQ333XnoW1vdSqc4jfamxZYL9YVQ=="], "@tscircuit/schematic-corpus": ["@tscircuit/schematic-corpus@0.0.114", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-jDQX+XDXP6PklB39X8AwUSuiqGRdn78esy1wD/qG8U3cCXkT5rtE3ousDVaKRxclCeED8FxJlD+ZvRtAe8mw8w=="], @@ -283,9 +280,9 @@ "circuit-json-to-bpc": ["circuit-json-to-bpc@0.0.13", "", { "peerDependencies": { "bpc-graph": "*", "circuit-json": "*", "typescript": "^5" } }, "sha512-3wSMtPa6tJkiBQN4tsm7f0Mb7Wp90X2c8dNbULoDVE4mGGoFqP1DXqBlyvvZZl+4SjqznzQQ0EioLe2SCQTOcg=="], - "circuit-json-to-connectivity-map": ["circuit-json-to-connectivity-map@0.0.23", "", { "dependencies": { "@tscircuit/math-utils": "^0.0.9" }, "peerDependencies": { "typescript": "^5.9.3" } }, "sha512-DSOiXaXOTvjU+7et8ITXb2LjgKto6cQzLv3hReYdXuUNtLw2GVnpOly1G83VcIBcSQ4hRVHI4VMKRyZB3XVzdg=="], + "circuit-json-to-connectivity-map": ["circuit-json-to-connectivity-map@0.0.27", "", { "dependencies": { "@tscircuit/math-utils": "^0.0.9" }, "peerDependencies": { "typescript": "^5.9.3" } }, "sha512-DxAcRjtKjzuB4IQluF2hSOvVxlwiIkXCcLDsdHWwyDXp+dEfGx+BfDzPrflk2sbgSOuLJUBfj2FJInWPFCh70Q=="], - "circuit-json-to-gltf": ["circuit-json-to-gltf@0.0.108", "", { "dependencies": { "@jscad/modeling": "^2.12.6", "earcut": "^3.0.2", "jscad-electronics": "^0.0.135", "jscad-planner": "^0.0.14", "jscad-to-gltf": "^0.0.5", "occt-import-js": "^0.0.23" }, "peerDependencies": { "@resvg/resvg-js": "2", "@resvg/resvg-wasm": "2", "@tscircuit/circuit-json-util": "*", "circuit-json": "*", "circuit-to-svg": "*", "typescript": "^5" }, "optionalPeers": ["@resvg/resvg-js", "@resvg/resvg-wasm"] }, "sha512-TgxwbQr28VL0p8Np1xwb6r81USlLn/ItFljD3k+Lz5Ju+Wgxxc9AtLUuGtqJgxkDqLfNSqbUk5VmhQKRCNBy6A=="], + "circuit-json-to-gltf": ["circuit-json-to-gltf@0.0.111", "", { "dependencies": { "@jscad/modeling": "^2.12.6", "earcut": "^3.0.2", "jscad-electronics": "^0.0.135", "jscad-planner": "^0.0.14", "jscad-to-gltf": "^0.0.5", "occt-import-js": "^0.0.23" }, "peerDependencies": { "@resvg/resvg-js": "2", "@resvg/resvg-wasm": "2", "@tscircuit/circuit-json-util": "*", "circuit-json": "*", "circuit-to-svg": "*", "typescript": "^5" }, "optionalPeers": ["@resvg/resvg-js", "@resvg/resvg-wasm"] }, "sha512-EKIw/Bflz9NWmM7dNvFiKMVkNPF5Jbnze/Y2IjkwRGesi/Ep+8tR6q3flDgnHBTdNcPlT33RiYXXfH8mYOb3kg=="], "circuit-json-to-pnp-csv": ["circuit-json-to-pnp-csv@0.0.8", "", { "dependencies": { "papaparse": "^5.4.1" }, "peerDependencies": { "@tscircuit/soup-util": "*", "typescript": "^5.0.0" } }, "sha512-m3ycvl5Cx1woE3qNdf457f2r/6WBxBxwbbkYbXbB/a+eEe7Y1Kk9BIq8GBsq7j25MTBeR0mbDMGL6yZGqSAVDA=="], @@ -293,7 +290,7 @@ "circuit-json-to-spice": ["circuit-json-to-spice@0.0.45", "", { "dependencies": { "circuit-json-to-connectivity-map": "^0.0.22" }, "peerDependencies": { "@tscircuit/circuit-json-util": "*", "circuit-json": "*", "spicets": "*", "typescript": "^5.0.0" } }, "sha512-e8THrj+jWK0BEjpw0relCYNCuEYEFAy5dFRYUQgMxdnrTjs2h5WoGWRNGPndqNkrpV5b63AzdX3wVR7Mtqi1HQ=="], - "circuit-to-svg": ["circuit-to-svg@0.0.393", "", { "dependencies": { "@types/node": "^22.5.5", "bun-types": "^1.1.40", "calculate-elbow": "0.0.12", "debug": "^4.4.3", "svg-path-commander": "^2.1.11", "svgson": "^5.3.1", "transformation-matrix": "^2.16.1" }, "peerDependencies": { "@tscircuit/alphabet": "*" } }, "sha512-wyPi94yex6lYMbXpNHyaTzrZM8qqH0nNUJDCl1bzQlpc9Q6P92aU6SwAHEkuxRAmhs3Yk1kS1DZLT9ci3KafDA=="], + "circuit-to-svg": ["circuit-to-svg@0.0.396", "", { "dependencies": { "@types/node": "^22.5.5", "bun-types": "^1.1.40", "calculate-elbow": "0.0.12", "debug": "^4.4.3", "svg-path-commander": "^2.1.11", "svgson": "^5.3.1", "transformation-matrix": "^2.16.1" }, "peerDependencies": { "@tscircuit/alphabet": "*" } }, "sha512-idE7yFgwqNp26edgQpEW1pMYJL/agWXTRQi88cPjdo6FpVuZJr2+MCQpmXMlQRhGYqyBEH2KHsPsiF+hA8cvAQ=="], "color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="], @@ -603,7 +600,7 @@ "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], - "tscircuit": ["tscircuit@0.0.2193", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", "@resvg/resvg-js": "^2.6.2", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-typescript": "^12.3.0", "@tscircuit/alphabet": "0.0.25", "@tscircuit/capacity-autorouter": "^0.0.722", "@tscircuit/checks": "0.0.146", "@tscircuit/circuit-json-util": "^0.0.102", "@tscircuit/cli": "^0.1.1794", "@tscircuit/copper-pour-solver": "0.0.42", "@tscircuit/core": "^0.0.1565", "@tscircuit/create-fdm-enclosure": "0.0.3", "@tscircuit/eval": "^0.0.1107", "@tscircuit/fanout-solver": "0.0.11", "@tscircuit/footprinter": "^0.0.387", "@tscircuit/image-utils": "^0.0.8", "@tscircuit/infer-cable-insertion-point": "^0.0.2", "@tscircuit/infgrid-ijump-astar": "^0.0.35", "@tscircuit/internal-dynamic-import": "^0.0.11", "@tscircuit/krt-wasm": "^0.1.1", "@tscircuit/matchpack": "^0.0.64", "@tscircuit/math-utils": "^0.0.36", "@tscircuit/miniflex": "^0.0.4", "@tscircuit/ngspice-spice-engine": "^0.0.20", "@tscircuit/props": "^0.0.602", "@tscircuit/runframe": "^0.0.2329", "@tscircuit/schematic-match-adapt": "^0.0.18", "@tscircuit/schematic-trace-solver": "^0.0.117", "@tscircuit/simple-3d-svg": "^0.0.41", "@tscircuit/solver-utils": "^0.0.16", "@tscircuit/soup-util": "^0.0.41", "bpc-graph": "^0.0.57", "calculate-cell-boundaries": "^0.0.13", "calculate-elbow": "^0.0.12", "calculate-packing": "^0.0.82", "circuit-json": "^0.0.455", "circuit-json-to-bpc": "^0.0.13", "circuit-json-to-connectivity-map": "^0.0.23", "circuit-json-to-gltf": "^0.0.108", "circuit-json-to-pnp-csv": "^0.0.8", "circuit-json-to-simple-3d": "^0.0.9", "circuit-json-to-spice": "^0.0.45", "circuit-to-svg": "^0.0.393", "comlink": "^4.4.2", "connectivity-map": "^1.0.0", "css-select": "5.1.0", "debug": "^4.3.6", "flatbush": "^4.5.0", "format-si-unit": "^0.0.7", "graphics-debug": "^0.0.95", "jscad-planner": "^0.0.13", "kicad-component-converter": "^0.1.40", "kicad-to-circuit-json": "^0.0.117", "kicadts": "^0.0.53", "minicssgrid": "^0.0.9", "performance-now": "^2.1.0", "poppygl": "^0.0.26", "react": "^19.1.0", "react-dom": "^19.1.0", "rollup": "^4.53.2", "rollup-plugin-dts": "^6.2.3", "s-expression": "^3.1.1", "schematic-symbols": "^0.0.238", "spicets": "^0.0.4", "spicey": "^0.0.14", "sucrase": "^3.35.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1", "tslib": "^2.8.1", "zod": "^3.25.67" }, "peerDependencies": { "typescript": "^5.0.0" }, "bin": { "tsci": "cli.mjs", "tscircuit": "cli.mjs" } }, "sha512-edjZ2cJzcsuJJcx0YIoLBAEfYh6XHpG4iHDlJMlQdravQvK0cuw5z/PBb5ZvgRnw2yXYrhyuFy9goGKXUXVvjQ=="], + "tscircuit": ["tscircuit@0.0.2204", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", "@resvg/resvg-js": "^2.6.2", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-typescript": "^12.3.0", "@tscircuit/alphabet": "0.0.25", "@tscircuit/capacity-autorouter": "^0.0.722", "@tscircuit/checks": "0.0.150", "@tscircuit/circuit-json-util": "^0.0.102", "@tscircuit/cli": "^0.1.1803", "@tscircuit/copper-pour-solver": "0.0.42", "@tscircuit/core": "^0.0.1580", "@tscircuit/create-fdm-enclosure": "0.0.3", "@tscircuit/eval": "^0.0.1116", "@tscircuit/fanout-solver": "0.0.11", "@tscircuit/footprinter": "^0.0.387", "@tscircuit/image-utils": "^0.0.8", "@tscircuit/infer-cable-insertion-point": "^0.0.2", "@tscircuit/infgrid-ijump-astar": "^0.0.35", "@tscircuit/internal-dynamic-import": "^0.0.11", "@tscircuit/krt-wasm": "^0.1.1", "@tscircuit/matchpack": "^0.0.64", "@tscircuit/math-utils": "^0.0.36", "@tscircuit/miniflex": "^0.0.4", "@tscircuit/ngspice-spice-engine": "^0.0.20", "@tscircuit/props": "^0.0.604", "@tscircuit/runframe": "^0.0.2339", "@tscircuit/schematic-match-adapt": "^0.0.18", "@tscircuit/schematic-trace-solver": "^0.0.117", "@tscircuit/simple-3d-svg": "^0.0.41", "@tscircuit/solver-utils": "^0.0.16", "@tscircuit/soup-util": "^0.0.41", "bpc-graph": "^0.0.57", "calculate-cell-boundaries": "^0.0.13", "calculate-elbow": "^0.0.12", "calculate-packing": "^0.0.82", "circuit-json": "^0.0.460", "circuit-json-to-bpc": "^0.0.13", "circuit-json-to-connectivity-map": "^0.0.27", "circuit-json-to-gltf": "^0.0.111", "circuit-json-to-pnp-csv": "^0.0.8", "circuit-json-to-simple-3d": "^0.0.9", "circuit-json-to-spice": "^0.0.45", "circuit-to-svg": "^0.0.396", "comlink": "^4.4.2", "connectivity-map": "^1.0.0", "css-select": "5.1.0", "debug": "^4.3.6", "flatbush": "^4.5.0", "format-si-unit": "^0.0.7", "graphics-debug": "^0.0.95", "jscad-planner": "^0.0.13", "kicad-component-converter": "^0.1.40", "kicad-to-circuit-json": "^0.0.117", "kicadts": "^0.0.53", "minicssgrid": "^0.0.9", "performance-now": "^2.1.0", "poppygl": "^0.0.26", "react": "^19.1.0", "react-dom": "^19.1.0", "rollup": "^4.53.2", "rollup-plugin-dts": "^6.2.3", "s-expression": "^3.1.1", "schematic-symbols": "^0.0.238", "spicets": "^0.0.4", "spicey": "^0.0.14", "sucrase": "^3.35.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1", "tslib": "^2.8.1", "zod": "^3.25.67" }, "peerDependencies": { "typescript": "^5.0.0" }, "bin": { "tsci": "cli.mjs", "tscircuit": "cli.mjs" } }, "sha512-SP2vSvecRF7GLSrvb94JmMoiueRDNBZXGqVksYqy2s8sufi6Cfx8rUj9cYKA40Bei1HSdnD1qGTnIcR6GBbDzQ=="], "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -629,6 +626,8 @@ "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + "@tscircuit/cli/circuit-json": ["circuit-json@0.0.460", "", { "peerDependencies": { "format-si-unit": "*" } }, "sha512-6L8Kf2dT+jTg0pdKkYuGG864gPf1h9I55YYAaosFklYY4EnHcAYcVrF0IylB0jBfYu9RY3clSoTWMkjAkAYGSA=="], + "@tscircuit/create-fdm-enclosure/@tscircuit/solver-utils": ["@tscircuit/solver-utils@0.0.19", "", { "peerDependencies": { "graphics-debug": "*", "typescript": "^5" } }, "sha512-UPUVgRRIrylSMJfKw7QwhSCvlODD+uAAwXc9jpOG06ipqteeeLRkj/HtHns31KQfLjRCSsGTvxMYBjmhaDDLGg=="], "@tscircuit/create-fdm-enclosure/graphics-debug": ["graphics-debug@0.0.96", "", { "dependencies": { "@react-hook/resize-observer": "^2.0.2", "@tscircuit/alphabet": "^0.0.25", "@types/react-router-dom": "^5.3.3", "fast-png": "^8.0.0", "polished": "^4.3.1", "react-router-dom": "^6.28.0", "react-supergrid": "^1.0.10", "svgson": "^5.3.1", "transformation-matrix": "^3.0.0", "use-mouse-matrix-transform": "^1.3.0" }, "peerDependencies": { "bun-match-svg": "*", "looks-same": "^9.0.1", "typescript": "^5.0.0" }, "bin": { "graphics-debug": "dist/cli/cli.js", "gd": "dist/cli/cli.js" } }, "sha512-o3CKFIWtbSL1GSrDYaaYMUidjtCM5PClqvc9/vZVakUT1c61I935bcE++8DnLTXoevJMM1+92y8Uinxl//SuBQ=="], @@ -667,7 +666,9 @@ "react-reconciler/scheduler": ["scheduler@0.26.0", "", {}, "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA=="], - "tscircuit/@tscircuit/props": ["@tscircuit/props@0.0.602", "", { "peerDependencies": { "circuit-json": "*", "react": "*", "zod": "*" } }, "sha512-YBh3NlKq4U9cdPXOLa5yuGQEMTltE0hKsO0q+G5/D6/Zl2k5HJm9YgnFz9fFRehBxtus5o9pIjPX+4x+ZxfyCw=="], + "tscircuit/@tscircuit/footprinter": ["@tscircuit/footprinter@0.0.387", "", { "dependencies": { "@tscircuit/mm": "^0.0.8", "zod": "^3.23.8" }, "peerDependencies": { "circuit-json": "*" } }, "sha512-xv4BQaHhwVitXmymq4s8QL1AldMaIqGm69fIas8qqLNSnFtI3v5uj4wnpzWvmEnmoAzI7zIgrmKW+mXwCDCKCA=="], + + "tscircuit/circuit-json": ["circuit-json@0.0.460", "", { "peerDependencies": { "format-si-unit": "*" } }, "sha512-6L8Kf2dT+jTg0pdKkYuGG864gPf1h9I55YYAaosFklYY4EnHcAYcVrF0IylB0jBfYu9RY3clSoTWMkjAkAYGSA=="], "use-mouse-matrix-transform/react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="], diff --git a/package.json b/package.json index 3e6091c..35c8ecd 100644 --- a/package.json +++ b/package.json @@ -29,18 +29,15 @@ "typecheck": "tsc --noEmit" }, "devDependencies": { - "@tscircuit/footprinter": "0.0.387", + "@tscircuit/footprinter": "0.0.409", "@tscircuit/props": "^0.0.604", "@types/bun": "^1.3.14", "@types/react": "^19.2.18", "bun-match-svg": "^0.0.15", "sharp": "0.32.6", - "tscircuit": "^0.0.2193", + "tscircuit": "^0.0.2204", "typescript": "^5.0.0" }, - "patchedDependencies": { - "@tscircuit/footprinter@0.0.387": "patches/@tscircuit%2Ffootprinter@0.0.387.patch" - }, "trustedDependencies": [ "sharp" ] diff --git a/patches/@tscircuit%2Ffootprinter@0.0.387.patch b/patches/@tscircuit%2Ffootprinter@0.0.387.patch deleted file mode 100644 index 1abc46c..0000000 --- a/patches/@tscircuit%2Ffootprinter@0.0.387.patch +++ /dev/null @@ -1,237 +0,0 @@ -diff --git a/dist/index.js b/dist/index.js -index 8d7db1f54405212128e9d64c0777170d9a7a75ee..e4eb953570e3c366435350a5307abf477fd52bbc 100644 ---- a/dist/index.js -+++ b/dist/index.js -@@ -31,6 +31,7 @@ __export(fn_exports, { - ms013: () => ms013, - msop: () => msop, - pad: () => pad, -+ headermodule: () => pinrow, - pinrow: () => pinrow, - platedhole: () => platedhole2, - potentiometer: () => potentiometer, -@@ -3268,9 +3269,12 @@ var pinrow_def = base_def.extend({ - fn: z24.string(), - num_pins: z24.number().optional().default(6), - rows: z24.union([z24.string(), z24.number()]).transform((val) => Number(val)).optional().default(1).describe("number of rows"), -+ cols: z24.union([z24.string(), z24.number()]).transform((val) => Number(val)).optional().describe("number of nominal columns in a sparse grid"), - p: length17.default("0.1in").describe("pitch"), -+ py: length17.optional().describe("vertical row pitch"), - id: length17.default("1.0mm").describe("inner diameter"), - od: length17.default("1.5mm").describe("outer diameter"), -+ missing: function_call.default([]).describe("row-major nominal grid positions to omit"), - male: z24.boolean().optional().describe("for male pin headers"), - female: z24.boolean().optional().describe("for female pin headers"), - smd: z24.boolean().optional().describe("surface mount device"), -@@ -3288,7 +3292,11 @@ var pinrow_def = base_def.extend({ - doublesidedpinlabel: z24.boolean().optional().default(false).describe("add silkscreen pins in top and bottom layers"), - bottomsidepinlabel: z24.boolean().optional().default(false).describe( - "place the silkscreen reference text on the bottom layer instead of top" -- ) -+ ), -+ silkscreenborder: z24.boolean().optional().default(false).describe("add a rectangular silkscreen border around the pin row"), -+ silkscreenlabel: z24.string().transform( -+ (value) => value.startsWith("(") && value.endsWith(")") ? value.slice(1, -1) : value -+ ).optional().describe("replace the reference designator with a custom silkscreen label") - }).transform((data) => { - const pinlabelAnchorSide = determinePinlabelAnchorSide(data); - return { -@@ -3307,15 +3315,32 @@ var pinrow_def = base_def.extend({ - path: ["male", "female"] - }); - } -+ if (data.cols !== void 0 && (!Number.isInteger(data.cols) || data.cols < 1)) { -+ ctx.addIssue({ -+ code: z24.ZodIssueCode.custom, -+ message: "'cols' must be a positive integer", -+ path: ["cols"] -+ }); -+ } -+ if (data.missing.some((position) => typeof position !== "number")) { -+ ctx.addIssue({ -+ code: z24.ZodIssueCode.custom, -+ message: "'missing' positions must be pad numbers", -+ path: ["missing"] -+ }); -+ } - }); - var pinrow = (raw_params) => { - const parameters = pinrow_def.parse(raw_params); - const { - p, -+ py, - id, - od, - rows, -+ cols, - num_pins, -+ missing, - pinlabelAnchorSide, - pinlabelverticallyinverted, - pinlabelorthogonal, -@@ -3323,16 +3348,38 @@ var pinrow = (raw_params) => { - pinlabeltextalignright, - nopinlabels, - doublesidedpinlabel, -- bottomsidepinlabel -+ bottomsidepinlabel, -+ silkscreenborder, -+ silkscreenlabel - } = parameters; - let pinlabelTextAlign = "center"; - if (pinlabeltextalignleft) pinlabelTextAlign = "left"; - else if (pinlabeltextalignright) pinlabelTextAlign = "right"; - const holes = []; -- const numPinsPerRow = Math.ceil(num_pins / rows); -- const pinRowSpanY = (rows - 1) * p; -+ let pin1Position = null; -+ const missingPositions = missing; -+ const uniqueMissingPositions = /* @__PURE__ */ new Set(missingPositions); -+ if (uniqueMissingPositions.size !== missingPositions.length) { -+ throw new Error("Pinrow missing positions must not contain duplicates"); -+ } -+ const nominalPinCount = num_pins + missingPositions.length; -+ const numPinsPerRow = cols ?? Math.ceil(nominalPinCount / rows); -+ const gridPositionCount = numPinsPerRow * rows; -+ const usesExplicitGrid = cols !== void 0 || missingPositions.length > 0; -+ if (usesExplicitGrid && gridPositionCount !== nominalPinCount) { -+ throw new Error( -+ `Pinrow grid has ${gridPositionCount} positions, but ${nominalPinCount} are required for ${num_pins} pins and ${missingPositions.length} missing positions` -+ ); -+ } -+ if (missingPositions.some( -+ (position) => !Number.isInteger(position) || position < 1 || position > gridPositionCount -+ )) { -+ throw new Error("Pinrow missing position is outside the nominal grid"); -+ } -+ const rowPitch = py ?? p; -+ const pinRowSpanY = (rows - 1) * rowPitch; - const yStart = pinRowSpanY / 2; -- const ySpacing = -p; -+ const ySpacing = -rowPitch; - const calculateAnchorPosition = ({ - xoff, - yoff, -@@ -3380,6 +3427,7 @@ var pinrow = (raw_params) => { - return { anchor_x: xoff + dx, anchor_y: yoff + dy }; - }; - const addPin = (pinNumber, xoff, yoff) => { -+ if (pinNumber === 1) pin1Position = { x: xoff, y: yoff }; - if (parameters.smd) { - holes.push(rectpad(pinNumber, xoff, yoff, parameters.pw, parameters.pl)); - } else { -@@ -3455,8 +3503,22 @@ var pinrow = (raw_params) => { - } - }; - const usedPositions = /* @__PURE__ */ new Set(); -- const useBGAStyle = rows > 2 && numPinsPerRow > 2; -- if (rows === 1) { -+ if (usesExplicitGrid) { -+ const xStart = -((numPinsPerRow - 1) / 2) * p; -+ let outputPinNumber = 1; -+ for (let row = 0; row < rows; row++) { -+ for (let col = 0; col < numPinsPerRow; col++) { -+ const nominalPosition = row * numPinsPerRow + col + 1; -+ if (uniqueMissingPositions.has(nominalPosition)) continue; -+ const xoff = xStart + col * p; -+ const yoff = yStart + row * ySpacing; -+ const posKey = `${xoff},${yoff}`; -+ if (usedPositions.has(posKey)) throw new Error(`Overlap at ${posKey}`); -+ usedPositions.add(posKey); -+ addPin(outputPinNumber++, xoff, yoff); -+ } -+ } -+ } else if (rows === 1) { - const xStart = -((num_pins - 1) / 2) * p; - for (let i = 0; i < num_pins; i++) { - const pinNumber = i + 1; -@@ -3466,7 +3528,7 @@ var pinrow = (raw_params) => { - usedPositions.add(posKey); - addPin(pinNumber, xoff, 0); - } -- } else if (useBGAStyle) { -+ } else if (rows > 2 && numPinsPerRow > 2) { - const xStart = -((numPinsPerRow - 1) / 2) * p; - let currentPin = 1; - for (let row = 0; row < rows && currentPin <= num_pins; row++) { -@@ -3534,10 +3596,64 @@ var pinrow = (raw_params) => { - ); - } - } -- const refText = silkscreenRef(0, pinRowSpanY / 2 + p, 0.5); - const padHalfWidth = parameters.smd ? parameters.pw / 2 : od / 2; - const padHalfHeight = parameters.smd ? parameters.pl / 2 : od / 2; - const pinRowSpanX = (numPinsPerRow - 1) * p; -+ const silkscreenHalfWidth = pinRowSpanX / 2 + p / 2 + 1; -+ const silkscreenHalfHeight = Math.max( -+ pinRowSpanY / 2 + padHalfHeight + 1, -+ p / 2 + 1 -+ ); -+ const silkscreenBorder = silkscreenborder ? silkscreenpath([ -+ { x: -silkscreenHalfWidth, y: -silkscreenHalfHeight }, -+ { x: silkscreenHalfWidth, y: -silkscreenHalfHeight }, -+ { x: silkscreenHalfWidth, y: silkscreenHalfHeight }, -+ { x: -silkscreenHalfWidth, y: silkscreenHalfHeight }, -+ { x: -silkscreenHalfWidth, y: -silkscreenHalfHeight } -+ ]) : null; -+ const pin1Arrow = (() => { -+ if (parameters.fn !== "headermodule" || !pin1Position) return null; -+ const arrowSize = Math.max(0.3, Math.min(0.6, p / 4)); -+ const clearance = 0.15; -+ const horizontal = pinlabelAnchorSide === "top" || pinlabelAnchorSide === "bottom"; -+ if (horizontal) { -+ const direction = Math.sign(pin1Position.x) || (pinlabelAnchorSide === "top" ? -1 : 1); -+ const tipX = pin1Position.x + direction * (padHalfWidth + clearance); -+ const baseX = tipX + direction * arrowSize; -+ return silkscreenpath([ -+ { x: tipX, y: pin1Position.y }, -+ { x: baseX, y: pin1Position.y - arrowSize }, -+ { x: baseX, y: pin1Position.y + arrowSize }, -+ { x: tipX, y: pin1Position.y } -+ ], { -+ pcb_component_id: "pin_marker_1", -+ pcb_silkscreen_path_id: "pin_marker_1" -+ }); -+ } -+ const direction = Math.sign(pin1Position.y) || 1; -+ const tipY = pin1Position.y + direction * (padHalfHeight + clearance); -+ const baseY = tipY + direction * arrowSize; -+ return silkscreenpath([ -+ { x: pin1Position.x, y: tipY }, -+ { x: pin1Position.x - arrowSize, y: baseY }, -+ { x: pin1Position.x + arrowSize, y: baseY }, -+ { x: pin1Position.x, y: tipY } -+ ], { -+ pcb_component_id: "pin_marker_1", -+ pcb_silkscreen_path_id: "pin_marker_1" -+ }); -+ })(); -+ const refText = silkscreenlabel ? { -+ type: "pcb_silkscreen_text", -+ pcb_silkscreen_text_id: "silkscreen_text_1", -+ font: "tscircuit2024", -+ font_size: 0.8, -+ pcb_component_id: "pcb_component_1", -+ text: silkscreenlabel, -+ layer: "top", -+ anchor_position: { x: 0, y: 0 }, -+ anchor_alignment: "center" -+ } : silkscreenRef(0, pinRowSpanY / 2 + p, 0.5); - const padOuterHalfWidth = pinRowSpanX / 2 + padHalfWidth; - const padOuterHalfHeight = pinRowSpanY / 2 + padHalfHeight; - const bodyHalfWidth = pinRowSpanX / 2 + p / 2; -@@ -3560,7 +3676,13 @@ var pinrow = (raw_params) => { - layer: "top" - }; - return { -- circuitJson: [...holes, refText, courtyard], -+ circuitJson: [ -+ ...holes, -+ ...(silkscreenBorder ? [silkscreenBorder] : []), -+ ...(pin1Arrow ? [pin1Arrow] : []), -+ refText, -+ courtyard -+ ], - parameters - }; - }; diff --git a/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg b/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg index e9cfd85..e2dd7f5 100644 --- a/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg @@ -1 +1 @@ -VBATENVBUSD13D12D11D10D9D6D5SCLSDARESET3V33V3_2GNDA0A1A2A3A4A5SCKMOSIMISORXTXTXD0FEATHER S3 TFT \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg b/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg index 81a1669..f8b268d 100644 --- a/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg @@ -1 +1 @@ -VBATENVBUSD7D4D11D10D9D6D5SCLSDARESET3V33V3_2GNDA0A1A2A3D24D25SCKMOSIMISORXTXPSRAM_CSFEATHER RP2350 \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg index b39ecd6..248bfdc 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg @@ -1 +1 @@ -VBATGNDVBUSD13D12D14D33D32D7D5SCLSDATXRXGND_2MISOMOSISCKA5A4A3A2A1A0VHIEN3V3RESETITSY ESP32 \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg index 8e3a885..cfaf172 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg @@ -1 +1 @@ -VBATGNDVBUSD13D12D11D10D9D7D5SCLSDATXRXD2MISOMOSISCKA5A4A3A2A1A0VHIEN3V3RESETITSY M0 \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg index 81151ab..b908c6f 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg @@ -1 +1 @@ -VBATGNDVBUSD13D12D11D10D9D7D5SCLSDATX_D1RX_D0D2MISOMOSISCKA5A4A3A2A1A0VHIAREFV3_3RESETITSY M4 \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg index 03bf5f2..78b87a5 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg @@ -1 +1 @@ -VBATGNDVBUSD13D12D11D10D9D7D5SCLSDATX_D1RX_D0D2MISOMOSISCKA5A4A3A2A1A0VHIEN3V3RESETITSY NRF52840 \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg index aa811b6..e1ec928 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg @@ -1 +1 @@ -VBATGNDVBUSD13D12D11D10D9D7D5SCLSDATXRXD2MISOMOSISCKD25D24A3A2A1A0VHIV3_3V3_3_2RESETITSY RP2040 \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg index 373a079..485910f 100644 --- a/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg @@ -1 +1 @@ -A0A1A2A3SDASCLTXRXSCKMISOMOSIV3_3GNDV5QT PY ESP32-S2 \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg index 446220d..485910f 100644 --- a/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg @@ -1 +1 @@ -A0A1A2A3SDASCLTXRXSCKMISOMOSIV3_3GNDV5QT PY ESP32-S3 \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg index 8c341c3..693fca0 100644 --- a/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg @@ -1 +1 @@ -A0A1A2A3SDASCLTX_A6RX_A7SCKMISOMOSIV3_3GNDV5QT PY NRF52840 \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg index 2ddca8b..485910f 100644 --- a/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg @@ -1 +1 @@ -A0A1A2A3SDASCLTXRXSCKMISOMOSIV3_3GNDV5QT PY RP2350 \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg index bc39c72..693fca0 100644 --- a/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg @@ -1 +1 @@ -A0A1A2A3SDASCLTX_A6RX_A7SCKMISOMOSIV3_3GNDV5QT PY SAMD21 \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg index 0a9764c..66b2a3a 100644 --- a/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg @@ -1 +1 @@ -TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO 33 BLE \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg index 34d2af4..66b2a3a 100644 --- a/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg @@ -1 +1 @@ -TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO 33 BLE SENSE \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg index f4db624..66b2a3a 100644 --- a/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg @@ -1 +1 @@ -TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO 33 IOT \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg index 5161d15..66b2a3a 100644 --- a/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg @@ -1 +1 @@ -TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO ATMEGA328P \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg index 625731c..fa1eb24 100644 --- a/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg @@ -1 +1 @@ -TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3B0A0A1A2A3A4A5A6A7VUSBB1GND_2VINNANO ESP32 \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg index 9458665..66b2a3a 100644 --- a/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg @@ -1 +1 @@ -TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO EVERY \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg index 03ee5c9..87ee498 100644 --- a/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg @@ -1 +1 @@ -D0D1RSTGNDD2D3D4D5D6D7D8D9D10D11D12D13V3_3AREFA0A1A2A3A4A5A6A7V5NCGND_2VINNANO MATTER \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg index 6fd9c48..04d949b 100644 --- a/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg @@ -1 +1 @@ -TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5QSPI_CSnGND_2VINNANO RP2040 \ No newline at end of file +U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file From ea8e421980df9d372052a3273b2dc66aec178d28 Mon Sep 17 00:00:00 2001 From: seveibar Date: Sun, 2 Aug 2026 18:30:32 -0700 Subject: [PATCH 7/8] Refresh sample board snapshots --- ...88-stepper-controller.circuit-pcb.snap.svg | 2 +- ...pper-controller.circuit-schematic.snap.svg | 34 ++++++------------- 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/sample-boards/__snapshots__/xiao-rp2040-a4988-stepper-controller.circuit-pcb.snap.svg b/sample-boards/__snapshots__/xiao-rp2040-a4988-stepper-controller.circuit-pcb.snap.svg index 05c82c1..16b9a17 100644 --- a/sample-boards/__snapshots__/xiao-rp2040-a4988-stepper-controller.circuit-pcb.snap.svg +++ b/sample-boards/__snapshots__/xiao-rp2040-a4988-stepper-controller.circuit-pcb.snap.svg @@ -1 +1 @@ -U_MCUU_DRIVERVMOTGNDMOTOR_POWER1A1B2A2BSTEPPER_MOTORC_VMOTVMOT: 8–35V — never connect to XIAO VIN \ No newline at end of file +U_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERVMOTGNDMOTOR_POWER1A1B2A2BSTEPPER_MOTORC_VMOTVMOT: 8–35V — never connect to XIAO VIN \ No newline at end of file diff --git a/sample-boards/__snapshots__/xiao-rp2040-a4988-stepper-controller.circuit-schematic.snap.svg b/sample-boards/__snapshots__/xiao-rp2040-a4988-stepper-controller.circuit-schematic.snap.svg index 601d64c..0f5c2c2 100644 --- a/sample-boards/__snapshots__/xiao-rp2040-a4988-stepper-controller.circuit-schematic.snap.svg +++ b/sample-boards/__snapshots__/xiao-rp2040-a4988-stepper-controller.circuit-schematic.snap.svg @@ -9,14 +9,7 @@ .port-label { fill: rgb(0, 100, 100); } .component-name { fill: rgb(0, 100, 100); } - 102010428Seeed Studio XIAO RP204015V2D03D14D25D36D47D58D69D710D811D912D10133V314GND2980Pololu A4988 Stepper Motor Driver Carrier1ENABLE2VMOT3GND_MOTOR42B52A61A71B8VDD9GND_LOGIC10DIR11STEP12SLEEP13RESET14MS315MS216MS1MOTOR_POWER1VMOT2GNDSTEPPER_MOTOR11A21B32A42BC_VMOT100uFUSB_5V102010428Seeed Studio XIAO RP204015V2D03D14D25D36D47D58D69D710D811D912D10133V314GND2980Pololu A4988 Stepper Motor Driver Carrier1ENABLE2VMOT3GND_MOTOR42B52A61A71B8VDD9GND_LOGIC10DIR11STEP12SLEEP13RESET14MS315MS216MS1MOTOR_POWER1VMOT2GNDSTEPPER_MOTOR11A21B32A42BC_VMOT100uFUSB_5VenableLOGIC_3V3LOGIC_3V3enableLOGIC_3V3LOGIC_3V3LOGIC_3V3GNDGNDLOGIC_3V3GNDGNDBATENUSBD13D12D11D10D9D6D5SCLSDARST3V33V3_AREFGNDA0A1A2A3D24D25SCKMOSIMISORXTXD4FEATHER RP20405VD0D1D2D3D4D5D6D7D8D9D103V3GNDXIAO RP2040 \ No newline at end of file diff --git a/__snapshots__/index.circuit-schematic.snap.svg b/__snapshots__/index.circuit-schematic.snap.svg new file mode 100644 index 0000000..3a0f8a5 --- /dev/null +++ b/__snapshots__/index.circuit-schematic.snap.svg @@ -0,0 +1,26 @@ +4884Adafruit Feather RP20401BAT2EN3USB4D135D126D117D108D99D610D511SCL12SDA13RST143V3153V3_AREF16GND17A018A119A220A321D2422D2523SCK24MOSI25MISO26RX27TX28D4102010428Seeed Studio XIAO RP204015V2D03D14D25D36D47D58D69D710D811D912D10133V314GNDFEATHER_VBUSGNDXIAO_VBUS \ No newline at end of file diff --git a/bun.lock b/bun.lock index 5317271..aefb4c9 100644 --- a/bun.lock +++ b/bun.lock @@ -11,7 +11,7 @@ "@types/react": "^19.2.18", "bun-match-svg": "^0.0.15", "sharp": "0.32.6", - "tscircuit": "^0.0.2204", + "tscircuit": "^0.0.2207", "typescript": "^5.0.0", }, }, @@ -164,19 +164,19 @@ "@tscircuit/capacity-autorouter": ["@tscircuit/capacity-autorouter@0.0.722", "", { "dependencies": { "fast-json-stable-stringify": "^2.1.0", "object-hash": "^3.0.0", "stack-svgs": "^0.0.1" } }, "sha512-YFfn+pa7dEitt6H7+ykZOJr+fY4QM0e8cEVs7TIv3SU0gcZpqP2q62p8TmDhV8GyY+LxtOG385lAIkb9olhzTQ=="], - "@tscircuit/checks": ["@tscircuit/checks@0.0.150", "", { "peerDependencies": { "@flatten-js/core": "*", "@tscircuit/math-utils": "*", "circuit-json": "*", "circuit-json-to-connectivity-map": "*", "typescript": "^5.5.3" } }, "sha512-9eQMKqKecPmVtXWOqkq9Rsqz6n7cBmgE3zfscQpUjQnxkT3f9GUe3V0QYZVS4g8V4Vcr+DCUp26NKN7Cm1FYXg=="], + "@tscircuit/checks": ["@tscircuit/checks@0.0.151", "", { "peerDependencies": { "@flatten-js/core": "*", "@tscircuit/math-utils": "*", "circuit-json": "*", "circuit-json-to-connectivity-map": "*", "typescript": "^5.5.3" } }, "sha512-+qgG5HtgTgkVWl7T2UQhtjgqZDnUYHS62jEy6BdIsH1XoOSTTl9vEJmEMmmymeIeAmOfPZC92BjcI+0vO+6Ihw=="], "@tscircuit/circuit-json-util": ["@tscircuit/circuit-json-util@0.0.102", "", { "dependencies": { "parsel-js": "^1.1.2" }, "peerDependencies": { "circuit-json": "*", "transformation-matrix": "*", "zod": "3" } }, "sha512-qn9L7bcVmDFGXUMb5NKaegdotJ4GiKVgzF8nA3gwBFauOEfumDjK/80AR6BnabsfuavvjV/KuQZHXNeaeNL4QQ=="], - "@tscircuit/cli": ["@tscircuit/cli@0.1.1805", "", { "peerDependencies": { "circuit-json": "^0.0.446", "tscircuit": "*" }, "bin": { "tscircuit-cli": "cli/entrypoint.js" } }, "sha512-k0+9jf/8Rz7xQrPQnxmn01RYF/sB/yYWrXZqTTwtyYmWr7CmRT4f0rwW0Dqam1kc9Fy5KFnCRqGjeIc6STg+Dw=="], + "@tscircuit/cli": ["@tscircuit/cli@0.1.1806", "", { "peerDependencies": { "circuit-json": "^0.0.446", "tscircuit": "*" }, "bin": { "tscircuit-cli": "cli/entrypoint.js" } }, "sha512-0Ls3Tok4F/BL1yYYK77HwohW4jel3cmu4fxxERWeZBzjGyNsYthPfE/7wd9DcYvA5+phDvMRIjiYUr7p8NtfyQ=="], "@tscircuit/copper-pour-solver": ["@tscircuit/copper-pour-solver@0.0.42", "", { "dependencies": { "@tscircuit/manifold-2d": "^0.0.6" }, "peerDependencies": { "typescript": "^5" } }, "sha512-FHsX32w/8upaPad+SkFe82JEWKCuRLzduDxJAZITPL9IdX9v/uMXiKGp2DQgoQ9kBgRHxyRcoRiaC6qCoEaq6Q=="], - "@tscircuit/core": ["@tscircuit/core@0.0.1580", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", "calculate-cell-boundaries": "^0.0.13", "calculate-packing": "^0.0.82", "css-select": "5.1.0", "format-si-unit": "^0.0.7", "nanoid": "^5.0.7", "performance-now": "^2.1.0", "react-reconciler": "^0.32.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1", "zod": "^3.25.67" }, "peerDependencies": { "@tscircuit/capacity-autorouter": "*", "@tscircuit/checks": "*", "@tscircuit/circuit-json-util": "*", "@tscircuit/create-fdm-enclosure": "*", "@tscircuit/footprinter": "*", "@tscircuit/infgrid-ijump-astar": "*", "@tscircuit/matchpack": "*", "@tscircuit/math-utils": "*", "@tscircuit/props": "*", "@tscircuit/schematic-match-adapt": "*", "bpc-graph": "*", "circuit-json": "*", "circuit-json-to-bpc": "*", "circuit-json-to-connectivity-map": "*", "circuit-json-to-spice": "*", "schematic-symbols": "*", "spicets": "*", "typescript": "^5.0.0" } }, "sha512-E6S0Y5IIqxCghuAy57nokxQZNAIL9yy9OjxUyeG98SoPSwfo9psT6D4QKk3EGIoVbhzy5FFEb34U8FQIQhZalg=="], + "@tscircuit/core": ["@tscircuit/core@0.0.1585", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", "calculate-cell-boundaries": "^0.0.13", "calculate-packing": "^0.0.82", "css-select": "5.1.0", "format-si-unit": "^0.0.7", "nanoid": "^5.0.7", "performance-now": "^2.1.0", "react-reconciler": "^0.32.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1", "zod": "^3.25.67" }, "peerDependencies": { "@tscircuit/capacity-autorouter": "*", "@tscircuit/checks": "*", "@tscircuit/circuit-json-util": "*", "@tscircuit/create-fdm-enclosure": "*", "@tscircuit/footprinter": "*", "@tscircuit/infgrid-ijump-astar": "*", "@tscircuit/matchpack": "*", "@tscircuit/math-utils": "*", "@tscircuit/props": "*", "@tscircuit/schematic-match-adapt": "*", "bpc-graph": "*", "circuit-json": "*", "circuit-json-to-bpc": "*", "circuit-json-to-connectivity-map": "*", "circuit-json-to-spice": "*", "schematic-symbols": "*", "spicets": "*", "typescript": "^5.0.0" } }, "sha512-1dQkgC2s+Cywm4wtY01qBmc2MkjHR2IcWgmJB1XPsVe9y2rv7V7WM2/zJxcwVEUY+yu2/D1RhDNSE1zg4RQxDw=="], "@tscircuit/create-fdm-enclosure": ["@tscircuit/create-fdm-enclosure@0.0.3", "", { "dependencies": { "@tscircuit/solver-utils": "^0.0.19", "graphics-debug": "^0.0.96", "jscad-planner": "^0.0.14" }, "peerDependencies": { "typescript": "^5" } }, "sha512-uEjUz/8mH5GZ7wHOtNE/vk0Jisn1AeXmLWQ1kuGHsl8ndbjH11+gBnqMrOjEIFDzMChJFOIlIcYpFYRbG0nj/A=="], - "@tscircuit/eval": ["@tscircuit/eval@0.0.1116", "", { "peerDependencies": { "@tscircuit/core": "*", "circuit-json": "*", "typescript": "^5.0.0", "zod": "3" } }, "sha512-ug4Q/9FL3svwf/+c89Qr32PEQ6v3ycg9MXmyt+vm+d5ZXDf9bVQ8nkfagZGgENlkEPvTEmiUCle/rPL13gQLAw=="], + "@tscircuit/eval": ["@tscircuit/eval@0.0.1122", "", { "peerDependencies": { "@tscircuit/core": "*", "circuit-json": "*", "typescript": "^5.0.0", "zod": "3" } }, "sha512-rHOJByBDpX5lS+lQrGT9rFuDUkjFXyMV16ZNIXbUwHkS13HEDonyVrwdl6DwgUVXh0zwIIuvHWg6PLPcOKDu5w=="], "@tscircuit/fanout-solver": ["@tscircuit/fanout-solver@0.0.11", "", { "dependencies": { "@tscircuit/capacity-autorouter": "0.0.718", "@tscircuit/solver-utils": "0.0.19", "graphics-debug": "0.0.96" }, "peerDependencies": { "typescript": "^5" } }, "sha512-qNlkFixA16wRUxjaWgUSdx1ICP1Vgc58v0pxkg17kuCErPpGtboSc6F58fNPnE96q7CuoiWudRsrr8cUTHJ7Ew=="], @@ -184,7 +184,7 @@ "@tscircuit/image-utils": ["@tscircuit/image-utils@0.0.8", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "color-diff": "^1.4.0", "fast-png": "^8.0.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1" } }, "sha512-/a/dyd0Ly+YSk73pNXi0M02nfaiZ1NQ8PVNDBTOHHESyTOrNHiVAT+NWxsWi44gHZ/ivLegAmjxSSbSSGfU+sQ=="], - "@tscircuit/infer-cable-insertion-point": ["@tscircuit/infer-cable-insertion-point@0.0.2", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-k3JwlGtsdHRRZELJzjXBKP+9xdzn+v4dqllhJIFMcrMvlBIaOTt8CbxLO+vcxPvz8Csf+yFChnTos8/vYcSgNg=="], + "@tscircuit/infer-cable-insertion-point": ["@tscircuit/infer-cable-insertion-point@0.0.3", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-ENVSKEgVx5/isMC+ttHNPCK+Os3MjALEM1MDI5M9JKMDjGqq5iPjxb5qwD3/GFwkc5Xl/DtRdOyKFC1lvrw1hg=="], "@tscircuit/infgrid-ijump-astar": ["@tscircuit/infgrid-ijump-astar@0.0.35", "", {}, "sha512-PZx3GyD7mDNEhLJn8+7n8NjrieOvrX03g7Gx1cvwXv9mmgSC4M+yTA0WC4DgOvcRdTnarf0R8xvwtDeJ4tMK9Q=="], @@ -206,13 +206,13 @@ "@tscircuit/props": ["@tscircuit/props@0.0.604", "", { "peerDependencies": { "circuit-json": "*", "react": "*", "zod": "*" } }, "sha512-O/0y/oQxQ880bCATuLILnwsW/Jg/l+3IWHxfn+GOVAycPfSiA8gDWQvWj72eUlITwXkOnQm+yUqCJYDfkRM+CA=="], - "@tscircuit/runframe": ["@tscircuit/runframe@0.0.2339", "", { "dependencies": { "@tscircuit/eval": "^0.0.1116", "@tscircuit/solver-utils": "^0.0.7", "debug": "^4.4.0" } }, "sha512-Y6uKnVxwMzJ7D1g3onwuGLy0vkGl7gVDMsA2C68/+P5VCqpYvxAYIXYd+aPQ333XnoW1vdSqc4jfamxZYL9YVQ=="], + "@tscircuit/runframe": ["@tscircuit/runframe@0.0.2344", "", { "dependencies": { "@tscircuit/eval": "^0.0.1122", "@tscircuit/solver-utils": "^0.0.7", "debug": "^4.4.0" } }, "sha512-uuPsWy1QpGz4Fq2oUiEbUTLd7EUDHUAWqydeGuh3Gofwoln428yK6tgZqfzNXMPuhu6CTUYUj+5c4cHVitGA4g=="], "@tscircuit/schematic-corpus": ["@tscircuit/schematic-corpus@0.0.114", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-jDQX+XDXP6PklB39X8AwUSuiqGRdn78esy1wD/qG8U3cCXkT5rtE3ousDVaKRxclCeED8FxJlD+ZvRtAe8mw8w=="], "@tscircuit/schematic-match-adapt": ["@tscircuit/schematic-match-adapt@0.0.18", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-LpXF7aSmP4xUZN1gdrU/YdAnotJ+oKW2a4YzGB6wNTXnw5+Yn0w/bPnReT4A+nNUrVJ9kyjgnXQkSlkhiejQGg=="], - "@tscircuit/schematic-trace-solver": ["@tscircuit/schematic-trace-solver@0.0.117", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-9I8/2RcZZnYlz4NQUl2FnWAKzrZvaoYU/D3GM/9TOonF0IibQGGWFv9YgQOWf0ynZRbzuv5or+W/34zMQEDSqQ=="], + "@tscircuit/schematic-trace-solver": ["@tscircuit/schematic-trace-solver@0.0.120", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-4xAMM+P0/qHAu/fE0XSyNDU/2Kit2p5/cNPoP5flLRomLFnKiSdKsLcSE5XbCI/YNRlng0niRs8LKoNv4yoLHw=="], "@tscircuit/simple-3d-svg": ["@tscircuit/simple-3d-svg@0.0.41", "", { "dependencies": { "fast-xml-parser": "^5.2.5", "fflate": "^0.8.2" } }, "sha512-2iwhHhMLElq5t0fcC0Gr7cCpZhEOAKh+6NN0NIJ9YWUCcsB7UN8uYko7jqNTxDlYOe6E0ZYaDZWsQ3amOZ3dlw=="], @@ -600,7 +600,7 @@ "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], - "tscircuit": ["tscircuit@0.0.2204", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", "@resvg/resvg-js": "^2.6.2", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-typescript": "^12.3.0", "@tscircuit/alphabet": "0.0.25", "@tscircuit/capacity-autorouter": "^0.0.722", "@tscircuit/checks": "0.0.150", "@tscircuit/circuit-json-util": "^0.0.102", "@tscircuit/cli": "^0.1.1803", "@tscircuit/copper-pour-solver": "0.0.42", "@tscircuit/core": "^0.0.1580", "@tscircuit/create-fdm-enclosure": "0.0.3", "@tscircuit/eval": "^0.0.1116", "@tscircuit/fanout-solver": "0.0.11", "@tscircuit/footprinter": "^0.0.387", "@tscircuit/image-utils": "^0.0.8", "@tscircuit/infer-cable-insertion-point": "^0.0.2", "@tscircuit/infgrid-ijump-astar": "^0.0.35", "@tscircuit/internal-dynamic-import": "^0.0.11", "@tscircuit/krt-wasm": "^0.1.1", "@tscircuit/matchpack": "^0.0.64", "@tscircuit/math-utils": "^0.0.36", "@tscircuit/miniflex": "^0.0.4", "@tscircuit/ngspice-spice-engine": "^0.0.20", "@tscircuit/props": "^0.0.604", "@tscircuit/runframe": "^0.0.2339", "@tscircuit/schematic-match-adapt": "^0.0.18", "@tscircuit/schematic-trace-solver": "^0.0.117", "@tscircuit/simple-3d-svg": "^0.0.41", "@tscircuit/solver-utils": "^0.0.16", "@tscircuit/soup-util": "^0.0.41", "bpc-graph": "^0.0.57", "calculate-cell-boundaries": "^0.0.13", "calculate-elbow": "^0.0.12", "calculate-packing": "^0.0.82", "circuit-json": "^0.0.460", "circuit-json-to-bpc": "^0.0.13", "circuit-json-to-connectivity-map": "^0.0.27", "circuit-json-to-gltf": "^0.0.111", "circuit-json-to-pnp-csv": "^0.0.8", "circuit-json-to-simple-3d": "^0.0.9", "circuit-json-to-spice": "^0.0.45", "circuit-to-svg": "^0.0.396", "comlink": "^4.4.2", "connectivity-map": "^1.0.0", "css-select": "5.1.0", "debug": "^4.3.6", "flatbush": "^4.5.0", "format-si-unit": "^0.0.7", "graphics-debug": "^0.0.95", "jscad-planner": "^0.0.13", "kicad-component-converter": "^0.1.40", "kicad-to-circuit-json": "^0.0.117", "kicadts": "^0.0.53", "minicssgrid": "^0.0.9", "performance-now": "^2.1.0", "poppygl": "^0.0.26", "react": "^19.1.0", "react-dom": "^19.1.0", "rollup": "^4.53.2", "rollup-plugin-dts": "^6.2.3", "s-expression": "^3.1.1", "schematic-symbols": "^0.0.238", "spicets": "^0.0.4", "spicey": "^0.0.14", "sucrase": "^3.35.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1", "tslib": "^2.8.1", "zod": "^3.25.67" }, "peerDependencies": { "typescript": "^5.0.0" }, "bin": { "tsci": "cli.mjs", "tscircuit": "cli.mjs" } }, "sha512-SP2vSvecRF7GLSrvb94JmMoiueRDNBZXGqVksYqy2s8sufi6Cfx8rUj9cYKA40Bei1HSdnD1qGTnIcR6GBbDzQ=="], + "tscircuit": ["tscircuit@0.0.2207", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", "@resvg/resvg-js": "^2.6.2", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-typescript": "^12.3.0", "@tscircuit/alphabet": "0.0.25", "@tscircuit/capacity-autorouter": "^0.0.722", "@tscircuit/checks": "0.0.151", "@tscircuit/circuit-json-util": "^0.0.102", "@tscircuit/cli": "^0.1.1806", "@tscircuit/copper-pour-solver": "0.0.42", "@tscircuit/core": "^0.0.1585", "@tscircuit/create-fdm-enclosure": "0.0.3", "@tscircuit/eval": "^0.0.1122", "@tscircuit/fanout-solver": "0.0.11", "@tscircuit/footprinter": "^0.0.409", "@tscircuit/image-utils": "^0.0.8", "@tscircuit/infer-cable-insertion-point": "^0.0.3", "@tscircuit/infgrid-ijump-astar": "^0.0.35", "@tscircuit/internal-dynamic-import": "^0.0.11", "@tscircuit/krt-wasm": "^0.1.1", "@tscircuit/matchpack": "^0.0.64", "@tscircuit/math-utils": "^0.0.36", "@tscircuit/miniflex": "^0.0.4", "@tscircuit/ngspice-spice-engine": "^0.0.20", "@tscircuit/props": "^0.0.605", "@tscircuit/runframe": "^0.0.2344", "@tscircuit/schematic-match-adapt": "^0.0.18", "@tscircuit/schematic-trace-solver": "^0.0.120", "@tscircuit/simple-3d-svg": "^0.0.41", "@tscircuit/solver-utils": "^0.0.16", "@tscircuit/soup-util": "^0.0.41", "bpc-graph": "^0.0.57", "calculate-cell-boundaries": "^0.0.13", "calculate-elbow": "^0.0.12", "calculate-packing": "^0.0.82", "circuit-json": "^0.0.460", "circuit-json-to-bpc": "^0.0.13", "circuit-json-to-connectivity-map": "^0.0.27", "circuit-json-to-gltf": "^0.0.111", "circuit-json-to-pnp-csv": "^0.0.8", "circuit-json-to-simple-3d": "^0.0.9", "circuit-json-to-spice": "^0.0.45", "circuit-to-svg": "^0.0.396", "comlink": "^4.4.2", "connectivity-map": "^1.0.0", "css-select": "5.1.0", "debug": "^4.3.6", "flatbush": "^4.5.0", "format-si-unit": "^0.0.7", "graphics-debug": "^0.0.95", "jscad-planner": "^0.0.13", "kicad-component-converter": "^0.1.40", "kicad-to-circuit-json": "^0.0.117", "kicadts": "^0.0.53", "minicssgrid": "^0.0.9", "performance-now": "^2.1.0", "poppygl": "^0.0.26", "react": "^19.1.0", "react-dom": "^19.1.0", "rollup": "^4.53.2", "rollup-plugin-dts": "^6.2.3", "s-expression": "^3.1.1", "schematic-symbols": "^0.0.238", "spicets": "^0.0.4", "spicey": "^0.0.14", "sucrase": "^3.35.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1", "tslib": "^2.8.1", "zod": "^3.25.67" }, "peerDependencies": { "typescript": "^5.0.0" }, "bin": { "tsci": "cli.mjs", "tscircuit": "cli.mjs" } }, "sha512-j3ejz3NnG4xzex223czRa3igJ/KzyDev9PFYlVx5IsFf98caZQuOdFUfM+rQs2Btp2aTfbVbqSHgrp525CxSQQ=="], "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -666,7 +666,7 @@ "react-reconciler/scheduler": ["scheduler@0.26.0", "", {}, "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA=="], - "tscircuit/@tscircuit/footprinter": ["@tscircuit/footprinter@0.0.387", "", { "dependencies": { "@tscircuit/mm": "^0.0.8", "zod": "^3.23.8" }, "peerDependencies": { "circuit-json": "*" } }, "sha512-xv4BQaHhwVitXmymq4s8QL1AldMaIqGm69fIas8qqLNSnFtI3v5uj4wnpzWvmEnmoAzI7zIgrmKW+mXwCDCKCA=="], + "tscircuit/@tscircuit/props": ["@tscircuit/props@0.0.605", "", { "peerDependencies": { "circuit-json": "*", "react": "*", "zod": "*" } }, "sha512-6mlEksBdXDR3cqwmbhaOl4BMEA0V3LQUOIhSETizkElfXwbhtL3G9VbGQirZ9JbEr2I4mwpAin0xRNkWRJTH1A=="], "tscircuit/circuit-json": ["circuit-json@0.0.460", "", { "peerDependencies": { "format-si-unit": "*" } }, "sha512-6L8Kf2dT+jTg0pdKkYuGG864gPf1h9I55YYAaosFklYY4EnHcAYcVrF0IylB0jBfYu9RY3clSoTWMkjAkAYGSA=="], diff --git a/package.json b/package.json index 35c8ecd..f821816 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "@types/react": "^19.2.18", "bun-match-svg": "^0.0.15", "sharp": "0.32.6", - "tscircuit": "^0.0.2204", + "tscircuit": "^0.0.2207", "typescript": "^5.0.0" }, "trustedDependencies": [ diff --git a/sample-boards/__snapshots__/xiao-rp2040-a4988-stepper-controller.circuit-pcb.snap.svg b/sample-boards/__snapshots__/xiao-rp2040-a4988-stepper-controller.circuit-pcb.snap.svg index 16b9a17..b03babc 100644 --- a/sample-boards/__snapshots__/xiao-rp2040-a4988-stepper-controller.circuit-pcb.snap.svg +++ b/sample-boards/__snapshots__/xiao-rp2040-a4988-stepper-controller.circuit-pcb.snap.svg @@ -1 +1 @@ -U_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_MCUU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERU_DRIVERVMOTGNDMOTOR_POWER1A1B2A2BSTEPPER_MOTORC_VMOTVMOT: 8–35V — never connect to XIAO VIN \ No newline at end of file +5VD0D1D2D3D4D5D6D7D8D9D103V3GNDXIAO RP2040ENABLEVMOTGND_MOTOR2B2A1A1BVDDGND_LOGICDIRSTEPSLEEPRESETMS3MS2MS1A4988 DRIVERVMOTGNDMOTOR_POWER1A1B2A2BSTEPPER_MOTORC_VMOTVMOT: 8–35V — never connect to XIAO VIN \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg b/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg index e2dd7f5..87a8c43 100644 --- a/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitFeatherESP32S3TFT-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +VBATENVBUSD13D12D11D10D9D6D5SCLSDARESET3V33V3_2GNDA0A1A2A3A4A5SCKMOSIMISORXTXTXD0FEATHER S3 TFT \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg b/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg index f8b268d..ff927ca 100644 --- a/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitFeatherRP2350-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +VBATENVBUSD7D4D11D10D9D6D5SCLSDARESET3V33V3_2GNDA0A1A2A3D24D25SCKMOSIMISORXTXPSRAM_CSFEATHER RP2350 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg index 248bfdc..683b573 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyESP32-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +VBATGNDVBUSD13D12D14D33D32D7D5SCLSDATXRXGND_2MISOMOSISCKA5A4A3A2A1A0VHIEN3V3RESETITSY ESP32 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg index cfaf172..0f89d98 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyM0Express-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +VBATGNDVBUSD13D12D11D10D9D7D5SCLSDATXRXD2MISOMOSISCKA5A4A3A2A1A0VHIEN3V3RESETITSY M0 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg index b908c6f..0108631 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyM4Express-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +VBATGNDVBUSD13D12D11D10D9D7D5SCLSDATX_D1RX_D0D2MISOMOSISCKA5A4A3A2A1A0VHIAREFV3_3RESETITSY M4 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg index 78b87a5..ea5e662 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyNRF52840Express-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +VBATGNDVBUSD13D12D11D10D9D7D5SCLSDATX_D1RX_D0D2MISOMOSISCKA5A4A3A2A1A0VHIEN3V3RESETITSY NRF52840 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg b/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg index e1ec928..f661eeb 100644 --- a/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitItsyBitsyRP2040-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +VBATGNDVBUSD13D12D11D10D9D7D5SCLSDATXRXD2MISOMOSISCKD25D24A3A2A1A0VHIV3_3V3_3_2RESETITSY RP2040 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg index 485910f..027a7b6 100644 --- a/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyESP32S2-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +A0A1A2A3SDASCLTXRXSCKMISOMOSIV3_3GNDV5QT PY ESP32-S2 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg index 485910f..f22926a 100644 --- a/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyESP32S3-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +A0A1A2A3SDASCLTXRXSCKMISOMOSIV3_3GNDV5QT PY ESP32-S3 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg index 693fca0..02dbb3d 100644 --- a/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyNRF52840-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +A0A1A2A3SDASCLTX_A6RX_A7SCKMISOMOSIV3_3GNDV5QT PY NRF52840 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg index 485910f..214904d 100644 --- a/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPyRP2350-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +A0A1A2A3SDASCLTXRXSCKMISOMOSIV3_3GNDV5QT PY RP2350 \ No newline at end of file diff --git a/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg b/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg index 693fca0..4d60eb7 100644 --- a/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg +++ b/tests/__snapshots__/AdafruitQTPySAMD21-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +A0A1A2A3SDASCLTX_A6RX_A7SCKMISOMOSIV3_3GNDV5QT PY SAMD21 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg index 66b2a3a..ee7f762 100644 --- a/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNano33BLE-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO 33 BLE \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg index 66b2a3a..13a3ea9 100644 --- a/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNano33BLESenseRev2-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO 33 BLE SENSE \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg b/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg index 66b2a3a..173512e 100644 --- a/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNano33IoT-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO 33 IOT \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg index 66b2a3a..64c3caf 100644 --- a/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoATmega328P-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO ATMEGA328P \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg index fa1eb24..5d12c90 100644 --- a/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoESP32-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3B0A0A1A2A3A4A5A6A7VUSBB1GND_2VINNANO ESP32 \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg index 66b2a3a..ab71f01 100644 --- a/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoEvery-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5RESET_2GND_2VINNANO EVERY \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg index 87ee498..83669d1 100644 --- a/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoMatter-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +D0D1RSTGNDD2D3D4D5D6D7D8D9D10D11D12D13V3_3AREFA0A1A2A3A4A5A6A7V5NCGND_2VINNANO MATTER \ No newline at end of file diff --git a/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg b/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg index 04d949b..e2fe5bc 100644 --- a/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg +++ b/tests/__snapshots__/ArduinoNanoRP2040Connect-pcb.snap.svg @@ -1 +1 @@ -U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1 \ No newline at end of file +TXRXRESETGNDD2D3D4D5D6D7D8D9D10D11D12D133V3AREFA0A1A2A3A4A5A6A7V5QSPI_CSnGND_2VINNANO RP2040 \ No newline at end of file