diff --git a/lang/ui.ca.json b/lang/ui.ca.json
index 13b4cad61..18d357943 100644
--- a/lang/ui.ca.json
+++ b/lang/ui.ca.json
@@ -315,6 +315,10 @@
"defaultMessage": "Connecta la micro:bit a aquest ordinador amb un cable USB perquè el programa de recollida de dades es pugui descarregar.",
"description": "Project download instructions"
},
+ "connect-cannot-see-pattern": {
+ "defaultMessage": "I do not see a pattern",
+ "description": "Link to troubleshooting not seeing Bluetooth pattern"
+ },
"connect-computer": {
"defaultMessage": "Ordinador",
"description": "Label for computer icon in connection dialog"
diff --git a/lang/ui.en.json b/lang/ui.en.json
index c832a7e5c..14ed93342 100644
--- a/lang/ui.en.json
+++ b/lang/ui.en.json
@@ -315,6 +315,10 @@
"defaultMessage": "Connect the micro:bit to this computer with a USB cable so that the data collection program can be downloaded to it.",
"description": "Project download instructions"
},
+ "connect-cannot-see-pattern": {
+ "defaultMessage": "I do not see a pattern",
+ "description": "Link to troubleshooting not seeing Bluetooth pattern"
+ },
"connect-computer": {
"defaultMessage": "Computer",
"description": "Label for computer icon in connection dialog"
diff --git a/lang/ui.es-es.json b/lang/ui.es-es.json
index 837579b9f..c9f9990ff 100644
--- a/lang/ui.es-es.json
+++ b/lang/ui.es-es.json
@@ -315,6 +315,10 @@
"defaultMessage": "Conecta el micro:bit a este ordenador con un cable USB para poder descargar en él el programa de recogida de datos.",
"description": "Project download instructions"
},
+ "connect-cannot-see-pattern": {
+ "defaultMessage": "I do not see a pattern",
+ "description": "Link to troubleshooting not seeing Bluetooth pattern"
+ },
"connect-computer": {
"defaultMessage": "Ordenador",
"description": "Label for computer icon in connection dialog"
diff --git a/lang/ui.fr.json b/lang/ui.fr.json
index 1071e0bc7..38cb58712 100644
--- a/lang/ui.fr.json
+++ b/lang/ui.fr.json
@@ -315,6 +315,10 @@
"defaultMessage": "Connectez le micro:bit à cet ordinateur à l'aide d'un câble USB afin que le programme de collecte de données puisse y être téléchargé.",
"description": "Project download instructions"
},
+ "connect-cannot-see-pattern": {
+ "defaultMessage": "I do not see a pattern",
+ "description": "Link to troubleshooting not seeing Bluetooth pattern"
+ },
"connect-computer": {
"defaultMessage": "Ordinateur",
"description": "Label for computer icon in connection dialog"
diff --git a/lang/ui.ja.json b/lang/ui.ja.json
index 2a79e8d61..70fb7abc7 100644
--- a/lang/ui.ja.json
+++ b/lang/ui.ja.json
@@ -315,6 +315,10 @@
"defaultMessage": "データ収集プログラムをダウンロードできるように、micro:bitをUSBケーブルでこのコンピュータに繋げます。",
"description": "Project download instructions"
},
+ "connect-cannot-see-pattern": {
+ "defaultMessage": "I do not see a pattern",
+ "description": "Link to troubleshooting not seeing Bluetooth pattern"
+ },
"connect-computer": {
"defaultMessage": "コンピュータ",
"description": "Label for computer icon in connection dialog"
diff --git a/lang/ui.ko.json b/lang/ui.ko.json
index b097df5a7..d71d9e9cf 100644
--- a/lang/ui.ko.json
+++ b/lang/ui.ko.json
@@ -315,6 +315,10 @@
"defaultMessage": "데이터 수집 프로그램을 micro:bit에 다운로드할 수 있도록 USB 케이블로 micro:bit를 이 컴퓨터에 연결합니다.",
"description": "Project download instructions"
},
+ "connect-cannot-see-pattern": {
+ "defaultMessage": "I do not see a pattern",
+ "description": "Link to troubleshooting not seeing Bluetooth pattern"
+ },
"connect-computer": {
"defaultMessage": "컴퓨터",
"description": "Label for computer icon in connection dialog"
diff --git a/lang/ui.lol.json b/lang/ui.lol.json
index a6e216292..466b60a64 100644
--- a/lang/ui.lol.json
+++ b/lang/ui.lol.json
@@ -315,6 +315,10 @@
"defaultMessage": "crwdns362748:0crwdne362748:0",
"description": "Project download instructions"
},
+ "connect-cannot-see-pattern": {
+ "defaultMessage": "I do not see a pattern",
+ "description": "Link to troubleshooting not seeing Bluetooth pattern"
+ },
"connect-computer": {
"defaultMessage": "crwdns362750:0crwdne362750:0",
"description": "Label for computer icon in connection dialog"
diff --git a/lang/ui.nl.json b/lang/ui.nl.json
index 01a861560..42b76846d 100644
--- a/lang/ui.nl.json
+++ b/lang/ui.nl.json
@@ -315,6 +315,10 @@
"defaultMessage": "Sluit de micro:bit aan op deze computer met een USB-kabel zodat het programma voor gegevensverzameling kan worden gedownload.",
"description": "Project download instructions"
},
+ "connect-cannot-see-pattern": {
+ "defaultMessage": "I do not see a pattern",
+ "description": "Link to troubleshooting not seeing Bluetooth pattern"
+ },
"connect-computer": {
"defaultMessage": "Computer",
"description": "Label for computer icon in connection dialog"
diff --git a/lang/ui.pl.json b/lang/ui.pl.json
index d9f27b16e..eeda0c28d 100644
--- a/lang/ui.pl.json
+++ b/lang/ui.pl.json
@@ -315,6 +315,10 @@
"defaultMessage": "Połącz micro:bit z tym komputerem za pomocą kabla USB, aby program zbierania danych mógł być do niego pobrany.",
"description": "Project download instructions"
},
+ "connect-cannot-see-pattern": {
+ "defaultMessage": "I do not see a pattern",
+ "description": "Link to troubleshooting not seeing Bluetooth pattern"
+ },
"connect-computer": {
"defaultMessage": "Komputer",
"description": "Label for computer icon in connection dialog"
diff --git a/lang/ui.pt-br.json b/lang/ui.pt-br.json
index a2027f587..be8d0bfb6 100644
--- a/lang/ui.pt-br.json
+++ b/lang/ui.pt-br.json
@@ -315,6 +315,10 @@
"defaultMessage": "Conecte o micro:bit a este computador com um cabo USB para que o programa de coleta de dados possa ser baixado para ele.",
"description": "Project download instructions"
},
+ "connect-cannot-see-pattern": {
+ "defaultMessage": "I do not see a pattern",
+ "description": "Link to troubleshooting not seeing Bluetooth pattern"
+ },
"connect-computer": {
"defaultMessage": "Computador",
"description": "Label for computer icon in connection dialog"
diff --git a/lang/ui.zh-tw.json b/lang/ui.zh-tw.json
index d94a3c94e..20a108d80 100644
--- a/lang/ui.zh-tw.json
+++ b/lang/ui.zh-tw.json
@@ -315,6 +315,10 @@
"defaultMessage": "使用 USB 纜線將 micro:bit 連線到這台電腦,以便將數據收集程式下載到其中。",
"description": "Project download instructions"
},
+ "connect-cannot-see-pattern": {
+ "defaultMessage": "I do not see a pattern",
+ "description": "Link to troubleshooting not seeing Bluetooth pattern"
+ },
"connect-computer": {
"defaultMessage": "電腦",
"description": "Label for computer icon in connection dialog"
diff --git a/src/components/ConnectCableDialog.tsx b/src/components/ConnectCableDialog.tsx
index ad2f1d56a..dc4230edb 100644
--- a/src/components/ConnectCableDialog.tsx
+++ b/src/components/ConnectCableDialog.tsx
@@ -3,13 +3,14 @@
*
* SPDX-License-Identifier: MIT
*/
-import { Button, Image, Text, VStack } from "@chakra-ui/react";
+import { Image, Text, VStack } from "@chakra-ui/react";
import { FormattedMessage, useIntl } from "react-intl";
import { DataConnectionType, RadioFlowPhase } from "../data-connection-flow";
import connectCableImage from "../images/connect-cable.gif";
import ConnectContainerDialog, {
ConnectContainerDialogProps,
} from "./ConnectContainerDialog";
+import DialogFooterLink from "./DialogFooterLink";
type LinkType = "switch" | "skip" | "none";
interface Config {
@@ -80,13 +81,9 @@ const ConnectCableDialog = ({
linkType &&
onSkip &&
onSwitch && (
-
+
)
}
>
diff --git a/src/components/DialogFooterLink.tsx b/src/components/DialogFooterLink.tsx
new file mode 100644
index 000000000..944182ec6
--- /dev/null
+++ b/src/components/DialogFooterLink.tsx
@@ -0,0 +1,12 @@
+/**
+ * (c) 2026, Micro:bit Educational Foundation and contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+import { Button, ButtonProps } from "@chakra-ui/react";
+
+const DialogFooterLink = ({ ...props }: ButtonProps) => {
+ return ;
+};
+
+export default DialogFooterLink;
diff --git a/src/components/EnterBluetoothPatternDialog.tsx b/src/components/EnterBluetoothPatternDialog.tsx
index 74bcb78b9..843328c72 100644
--- a/src/components/EnterBluetoothPatternDialog.tsx
+++ b/src/components/EnterBluetoothPatternDialog.tsx
@@ -12,6 +12,7 @@ import ConnectContainerDialog, {
ConnectContainerDialogProps,
} from "./ConnectContainerDialog";
import { isNativePlatform } from "../platform";
+import DialogFooterLink from "./DialogFooterLink";
export interface EnterBluetoothPatternDialogProps
extends Omit {
@@ -60,6 +61,13 @@ const EnterBluetoothPatternDialog = ({
onNextClick={handleNextClick}
onBackClick={handleBackClick}
headingId={headingId}
+ footerLeft={
+ isNativePlatform() ? (
+
+
+
+ ) : undefined
+ }
{...props}
>
diff --git a/src/components/ResetToBluetoothModeDialog.tsx b/src/components/ResetToBluetoothModeDialog.tsx
index 5e6a09451..2211ce816 100644
--- a/src/components/ResetToBluetoothModeDialog.tsx
+++ b/src/components/ResetToBluetoothModeDialog.tsx
@@ -3,7 +3,8 @@
*
* SPDX-License-Identifier: MIT
*/
-import { AspectRatio, Image, Link, Text, VStack } from "@chakra-ui/react";
+import { AspectRatio, Image, Text, VStack } from "@chakra-ui/react";
+import { useCallback, useState } from "react";
import { FormattedMessage } from "react-intl";
import { BluetoothPairingMethod } from "../data-connection-flow/data-connection-types";
import abReset from "../images/bluetooth-mode-a+b+reset.gif";
@@ -11,7 +12,7 @@ import tripleReset from "../images/bluetooth-mode-triple-reset.gif";
import ConnectContainerDialog, {
ConnectContainerDialogProps,
} from "./ConnectContainerDialog";
-import { useCallback, useState } from "react";
+import DialogFooterLink from "./DialogFooterLink";
export interface ResetToBluetoothModeDialogProps
extends Omit {
@@ -40,20 +41,15 @@ const ResetToBluetoothModeDialog = ({
key={pairingMethod}
headingId="reset-to-bluetooth-mode-heading"
footerLeft={
-
{isTripleReset ? (
) : (
)}
-
+
}
>
diff --git a/src/components/WhatYouWillNeedDialog.tsx b/src/components/WhatYouWillNeedDialog.tsx
index 6938e1092..a0fd51e8c 100644
--- a/src/components/WhatYouWillNeedDialog.tsx
+++ b/src/components/WhatYouWillNeedDialog.tsx
@@ -3,7 +3,7 @@
*
* SPDX-License-Identifier: MIT
*/
-import { Button, Grid, GridItem, Image, Text, VStack } from "@chakra-ui/react";
+import { Grid, GridItem, Image, Text, VStack } from "@chakra-ui/react";
import { FormattedMessage } from "react-intl";
import batteryPackImage from "../images/stylised-battery-pack.svg";
import microbitImage from "../images/stylised-microbit-black.svg";
@@ -16,6 +16,7 @@ import ConnectContainerDialog, {
} from "./ConnectContainerDialog";
import ExternalLink from "./ExternalLink";
import { useDeployment } from "../deployment";
+import DialogFooterLink from "./DialogFooterLink";
const itemsConfig = {
radio: [
@@ -89,13 +90,13 @@ const WhatYouWillNeedDialog = ({
footerLeft={
{onLinkClick && (
-
+
)}
{reconnect && (