From b63a068307d81146c1c5ce16feaab41a2f0dc2e6 Mon Sep 17 00:00:00 2001 From: David Montero Crespo Date: Thu, 12 Mar 2026 02:34:56 -0300 Subject: [PATCH] feat: integrate Wokwi elements for Arduino boards in LandingPage --- frontend/src/pages/LandingPage.css | 43 ++++++++++++++++++++ frontend/src/pages/LandingPage.tsx | 63 +++++------------------------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/frontend/src/pages/LandingPage.css b/frontend/src/pages/LandingPage.css index 2f616b3..2ef6fc1 100644 --- a/frontend/src/pages/LandingPage.css +++ b/frontend/src/pages/LandingPage.css @@ -505,6 +505,49 @@ filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.5)); } +/* Wokwi element board wrappers */ +/* Elements have fixed mm dimensions; we scale them to fit the card. + At 96dpi: Uno ≈274×202px, Nano ≈170×67px, Mega ≈388×192px. + transform: scale() is visual only, so wrapper clips to the scaled size. */ +.board-element-wrap { + overflow: hidden; + filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.5)); + flex-shrink: 0; +} + +/* Uno: 274×202px → scale 0.73 → 200×147px */ +.board-element-uno { + width: 200px; + height: 147px; +} +.board-element-uno > wokwi-arduino-uno { + display: block; + transform: scale(0.73); + transform-origin: top left; +} + +/* Nano: 170×67px → scale 1.18 → 200×79px */ +.board-element-nano { + width: 200px; + height: 79px; +} +.board-element-nano > wokwi-arduino-nano { + display: block; + transform: scale(1.18); + transform-origin: top left; +} + +/* Mega: 388×192px → scale 0.515 → 200×99px */ +.board-element-mega { + width: 200px; + height: 99px; +} +.board-element-mega > wokwi-arduino-mega { + display: block; + transform: scale(0.515); + transform-origin: top left; +} + .board-info { display: flex; flex-direction: column; diff --git a/frontend/src/pages/LandingPage.tsx b/frontend/src/pages/LandingPage.tsx index 6f1b6b8..afd9ac0 100644 --- a/frontend/src/pages/LandingPage.tsx +++ b/frontend/src/pages/LandingPage.tsx @@ -1,6 +1,7 @@ import { useState, useRef, useEffect } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { useAuthStore } from '../store/useAuthStore'; +import '@wokwi/elements'; import './LandingPage.css'; const GITHUB_URL = 'https://github.com/davidmonterocrespo24/velxio'; @@ -244,39 +245,6 @@ const CircuitSchematic = () => ( ); /* ── Board SVGs ───────────────────────────────────────── */ -const BoardUno = () => ( - - - - - - {[0,1,2,3,4,5,6,7,8,9,11,12,13].map((i) => ( - - ))} - {[0,1,2,3,4,5].map((i) => ( - - ))} - - Arduino Uno - -); - -const BoardNano = () => ( - - - - - {[0,1,2,3,4,5,6,7].map((i) => ( - - ))} - {[0,1,2,3,4,5,6,7].map((i) => ( - - ))} - - Arduino Nano - -); - const BoardPico = () => ( @@ -294,23 +262,6 @@ const BoardPico = () => ( ); -const BoardMega = () => ( - - - - - - {Array.from({length: 18}).map((_, i) => ( - - ))} - {Array.from({length: 18}).map((_, i) => ( - - ))} - - - Arduino Mega 2560 - -); /* ── Features ─────────────────────────────────────────── */ const features = [ @@ -486,21 +437,27 @@ export const LandingPage: React.FC = () => {
- +
+ +
Arduino Uno ATmega328p · AVR8 · 16 MHz
- +
+ +
Arduino Nano ATmega328p · AVR8 · 16 MHz
- +
+ +
Arduino Mega ATmega2560 · AVR8 · 16 MHz