diff --git a/package.json b/package.json
index f9dd7fbba..b6265f9c7 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,10 @@
"ci": "npm run test && npm run lint && npm run build && npx prettier --check src",
"deploy": "website-deploy-aws",
"panda": "panda codegen",
+ "dev:link-ui": "rm -rf node_modules/@microbit/ui && ln -s ../../../ui/packages/ui node_modules/@microbit/ui && rm -rf styled-system && npm run panda",
+ "dev:link-ui-patterns": "rm -rf node_modules/@microbit/ui-patterns && ln -s ../../../ui/packages/ui-patterns node_modules/@microbit/ui-patterns && rm -rf styled-system && npm run panda",
+ "dev:link-theme": "npm --prefix ../ml-trainer-microbit run build && mkdir -p node_modules/@microbit-foundation && rm -rf node_modules/@microbit-foundation/ml-trainer-microbit && ln -s ../../../ml-trainer-microbit node_modules/@microbit-foundation/ml-trainer-microbit && rm -rf styled-system && npm run panda",
+ "dev:unlink-theme": "rm -rf node_modules/@microbit-foundation/ml-trainer-microbit && rm -rf styled-system && npm run panda",
"predev": "npm run panda",
"dev": "cross-env VITE_VERSION=$npm_package_version vite",
"dev:apps": "cross-env VITE_BUILD_MODE=apps VITE_VERSION=$npm_package_version vite --host",
diff --git a/src/compliance/NativeConsentDialog.tsx b/src/compliance/NativeConsentDialog.tsx
index 576e6f5b1..757e3e537 100644
--- a/src/compliance/NativeConsentDialog.tsx
+++ b/src/compliance/NativeConsentDialog.tsx
@@ -57,6 +57,7 @@ export const NativeConsentDialog = ({
<>
{" "}
{
values={{
link: (chunks: ReactNode) => (
diff --git a/src/components/BrokenFirmwareDialog.tsx b/src/components/BrokenFirmwareDialog.tsx
index 826924717..49ad59d9f 100644
--- a/src/components/BrokenFirmwareDialog.tsx
+++ b/src/components/BrokenFirmwareDialog.tsx
@@ -54,7 +54,7 @@ const BrokenFirmwareDialog = ({
values={{
link: (chunks: ReactNode) => (
{
{isNativePlatform() && tryAgain && isFindingDevice && (
-