From 70c313a9531dbc80dd452785eeca26b7c4e08c2c Mon Sep 17 00:00:00 2001 From: Tim Hadwen Date: Fri, 6 Mar 2026 21:31:50 +1000 Subject: [PATCH] Redesign download page with alternating sections layout Replace card grid with full-width alternating sections matching site design. Add Toolbox app, VS Code plugin (coming soon), correct all download URLs, add MSI installer toggle, section headings, and dark advanced tools section. Co-Authored-By: Claude Opus 4.6 --- public/images/products/toolbox-icon.webp | Bin 0 -> 11650 bytes src/app/download/DownloadToggle.tsx | 37 ++ src/app/download/page.tsx | 457 +++++++++++++++-------- src/app/python/page.tsx | 18 +- 4 files changed, 354 insertions(+), 158 deletions(-) create mode 100644 public/images/products/toolbox-icon.webp create mode 100644 src/app/download/DownloadToggle.tsx diff --git a/public/images/products/toolbox-icon.webp b/public/images/products/toolbox-icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..7b552233d3d43786b5797832ab500a0ef344a024 GIT binary patch literal 11650 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 + + {open && ( +
+ + +
+ )} + + ); +} diff --git a/src/app/download/page.tsx b/src/app/download/page.tsx index a4cff44..5bba5b7 100644 --- a/src/app/download/page.tsx +++ b/src/app/download/page.tsx @@ -2,6 +2,7 @@ import Image from "next/image"; import { Metadata } from "next"; import { Container } from "@/components/layout/Container"; import { Button } from "@/components/ui/Button"; +import { DownloadToggle } from "./DownloadToggle"; export const metadata: Metadata = { title: "Download", @@ -9,157 +10,11 @@ export const metadata: Metadata = { "Download the Micromelon Code Editor, Robot Simulator, Junior, and Python library.", }; -interface PlatformLink { - label: string; - href: string; - icon: string; -} - -interface ProductCardProps { - name: string; - description: string; - image: string; - imageAlt: string; - platforms?: PlatformLink[]; - installCommand?: string; - extraLink?: { label: string; href: string }; - note?: string; - accent?: string; -} - -function ProductCard({ - name, - description, - image, - imageAlt, - platforms, - installCommand, - extraLink, - note, - accent = "border-border", -}: ProductCardProps) { - return ( -
-
- {imageAlt} -
-
-

{name}

-

{description}

- - {installCommand && ( -
-

- Install via pip: -

- - $ {installCommand} - -
- )} - - {platforms && platforms.length > 0 && ( -
-

- Available on -

-
- {platforms.map((platform) => ( - - ))} -
-
- )} - - {extraLink && ( -
- -
- )} - - {note && ( -

{note}

- )} -
-
- ); -} - -const downloadProducts: ProductCardProps[] = [ - { - name: "The Code Editor", - description: - "Our blocks & Python coding environment to program the Micromelon Rover and the Robot Simulator. Start with drag-and-drop blocks and progress to Python with the side-by-side editor.", - image: "/images/products/code-editor-laptop.gif", - imageAlt: "Micromelon Code Editor showing blocks and Python side by side", - accent: "border-brand", - platforms: [ - { label: "Windows", href: "https://micromelon-s3.s3.ap-southeast-2.amazonaws.com/Micromelon+Code+Setup.exe", icon: "\u{1F5A5}" }, - { label: "macOS", href: "https://micromelon-s3.s3.ap-southeast-2.amazonaws.com/Micromelon+Code.dmg", icon: "\u{1F4BB}" }, - { label: "iPad", href: "https://apps.apple.com/au/app/micromelon-code/id1542702054", icon: "\u{1F4F1}" }, - { label: "Android", href: "https://play.google.com/store/apps/details?id=com.nicerapps.micromeloncode", icon: "\u{1F4F1}" }, - { label: "Chromebook", href: "https://play.google.com/store/apps/details?id=com.nicerapps.micromeloncode", icon: "\u{1F4BB}" }, - ], - }, - { - name: "The Robot Simulator", - description: - "Control a simulated Micromelon Rover in a 3D virtual environment. Solve challenges, navigate environments, and test your code - no physical robot needed.", - image: "/images/products/simulator-demo.gif", - imageAlt: "Micromelon Robot Simulator 3D environment", - accent: "border-teal-400", - platforms: [ - { label: "Windows", href: "https://micromelon-s3.s3.ap-southeast-2.amazonaws.com/Micromelon+Simulator+Setup.exe", icon: "\u{1F5A5}" }, - { label: "macOS", href: "https://apps.apple.com/au/app/micromelon-simulator/id1544591007", icon: "\u{1F4BB}" }, - ], - }, - { - name: "Micromelon-Py", - description: - "A dedicated Python module providing an API for connecting and controlling Micromelon Rovers and simulated rovers. Perfect for senior students and advanced projects.", - image: "/images/content/6d295c-vscode-cover-photo.png", - imageAlt: "Micromelon Python library in VS Code", - installCommand: "pip install micromelon", - extraLink: { - label: "View on PyPI", - href: "https://pypi.org/project/micromelon/", - }, - }, - { - name: "Junior", - description: - "Ideal for students not yet confident to navigate the Code Editor, or for lesson plans which aim to teach the basics of computational thinking with a simplified interface.", - image: "/images/products/rover-render.jpg", - imageAlt: "Micromelon Junior app for young learners", - platforms: [ - { label: "iPad", href: "https://apps.apple.com/au/app/micromelon-junior/id1522717379", icon: "\u{1F4F1}" }, - { label: "Android", href: "https://play.google.com/store/apps/details?id=com.nicerapps.micromelonjunior", icon: "\u{1F4F1}" }, - ], - }, -]; - export default function DownloadPage() { return ( <> {/* Hero */} -
+

@@ -173,13 +28,309 @@ export default function DownloadPage() {

- {/* Download Cards */} -
+ {/* — For Coding — */} +
-
- {downloadProducts.map((product) => ( - - ))} +

+ For Teachers & Students +

+ +
+ + {/* Code Editor */} +
+ +
+
+ Micromelon Code Editor showing blocks and Python side by side +
+
+

+ The Code Editor +

+

+ Our blocks & Python coding environment to program the + Micromelon Rover and the Robot Simulator. Start with + drag-and-drop blocks and progress to Python with the + side-by-side editor. +

+

+ Available on +

+
+ + + + + +
+ +
+
+
+
+ + {/* Robot Simulator */} +
+ +
+
+

+ The Robot Simulator +

+

+ Control a simulated Micromelon Rover in a 3D virtual + environment. Solve challenges, navigate environments, and test + your code — no physical robot needed. +

+

+ Available on +

+
+ + +
+
+
+ Micromelon Robot Simulator 3D environment +
+
+
+
+ + {/* Junior */} +
+ +
+
+ Micromelon Junior app interface +
+
+

Junior

+

+ Ideal for students not yet confident to navigate the Code + Editor, or for lesson plans which aim to teach the basics of + computational thinking with a simplified interface. +

+

+ Available on +

+
+ + +
+
+
+
+
+ + {/* — For Teachers — */} +
+ +

+ For Teachers +

+
+
+ + {/* Toolbox App */} +
+ +
+
+

+ Micromelon Toolbox +

+

+ Manage your fleet of Micromelon Rovers. Update firmware, + configure settings, and keep every Rover in your classroom + ready to code. +

+

+ Available on +

+
+ +
+
+
+ Micromelon Toolbox App +
+
+
+
+ + {/* — Advanced Tools — */} +
+ +

+ Advanced Tools +

+
+
+ + {/* Micromelon-Py */} +
+ +
+
+ Micromelon Python library in VS Code +
+
+

Micromelon-Py

+

+ A dedicated Python module providing an API for connecting and + controlling Micromelon Rovers and simulated rovers. Perfect for + senior students and advanced projects. +

+
+

+ Install via pip: +

+ + $ pip install micromelon + +
+
+ + +
+
+
+
+
+ + {/* VS Code Plugin — Coming Soon */} +
+ +
+
+

VS Code Plugin

+

+ Code with Micromelon directly inside Visual Studio Code. Connect + to your Rover or the Robot Simulator without leaving your + favourite editor. +

+
+ + Coming Soon + +
+
+
+ Micromelon VS Code plugin +
diff --git a/src/app/python/page.tsx b/src/app/python/page.tsx index 452ccab..5de33eb 100644 --- a/src/app/python/page.tsx +++ b/src/app/python/page.tsx @@ -723,11 +723,19 @@ export default function PythonPage() {
-
- VS Code Extension +
+ + VS Code Extension + + + Coming Soon +