From d3a668356b79eec3f8eb69720b3709752224ba1b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 06:19:40 -0700 Subject: [PATCH 1/5] chore(deps): update dependency web-vitals to v6.2.1 (#4683) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- static/code/stackblitz/v8/react/package-lock.json | 6 +++--- static/code/stackblitz/v9/react/package-lock.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/static/code/stackblitz/v8/react/package-lock.json b/static/code/stackblitz/v8/react/package-lock.json index 62b5d7e1df..e6fb494884 100644 --- a/static/code/stackblitz/v8/react/package-lock.json +++ b/static/code/stackblitz/v8/react/package-lock.json @@ -2142,9 +2142,9 @@ } }, "node_modules/web-vitals": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-6.2.0.tgz", - "integrity": "sha512-i2jhLkq6eB38jgJX5OIjEkyzQKgsG7FR56v7GphJNjzKAySgbRbwAfsFC0dDfHROWmCycf912SJpU2QoYIcMVg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-6.2.1.tgz", + "integrity": "sha512-rLcLXA2sx6+9dE88NHFubwTtGxpK4yYBLj6qHPdFoCaLr0cXGb4efOqtKLlm4loGA4OEKHIQKMKzZkKyOh5ctw==", "license": "Apache-2.0" }, "node_modules/yallist": { diff --git a/static/code/stackblitz/v9/react/package-lock.json b/static/code/stackblitz/v9/react/package-lock.json index 76f1a9529c..8ea6b23f5e 100644 --- a/static/code/stackblitz/v9/react/package-lock.json +++ b/static/code/stackblitz/v9/react/package-lock.json @@ -1303,9 +1303,9 @@ } }, "node_modules/web-vitals": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-6.2.0.tgz", - "integrity": "sha512-i2jhLkq6eB38jgJX5OIjEkyzQKgsG7FR56v7GphJNjzKAySgbRbwAfsFC0dDfHROWmCycf912SJpU2QoYIcMVg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-6.2.1.tgz", + "integrity": "sha512-rLcLXA2sx6+9dE88NHFubwTtGxpK4yYBLj6qHPdFoCaLr0cXGb4efOqtKLlm4loGA4OEKHIQKMKzZkKyOh5ctw==", "license": "Apache-2.0" }, "node_modules/yallist": { From 7e4848202a06c8df12cecad9f905f0453fa9dace Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 06:20:53 -0700 Subject: [PATCH 2/5] chore(deps): update dependency vue to v3.5.42 (#4682) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../code/stackblitz/v8/vue/package-lock.json | 106 +++++++++--------- .../code/stackblitz/v9/vue/package-lock.json | 106 +++++++++--------- 2 files changed, 106 insertions(+), 106 deletions(-) diff --git a/static/code/stackblitz/v8/vue/package-lock.json b/static/code/stackblitz/v8/vue/package-lock.json index a6b94ffabc..10b8fc1989 100644 --- a/static/code/stackblitz/v8/vue/package-lock.json +++ b/static/code/stackblitz/v8/vue/package-lock.json @@ -1127,39 +1127,39 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.41.tgz", - "integrity": "sha512-q0Xtv/F9w2YO/7htQhtiL+Ev2WCJbe5N2hc+XfgyKkEKqWpSxknmT8QOuGdEKNdjPq0c3F7rNpFkTo3Kfrm7pg==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.42.tgz", + "integrity": "sha512-2Ye1ilMtKXxl8qZUrQ5j0CdgenFp/HFQmta6rfRyfEsTG69L6Wk+tWuNoHYHMx9E8tF2Slvdg1FuwDvAXdy1LQ==", "license": "MIT", "dependencies": { "@babel/parser": "^7.29.8", - "@vue/shared": "3.5.41", + "@vue/shared": "3.5.42", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.41.tgz", - "integrity": "sha512-oKacVfNglLvGjnS6BXOlGL7EyG2h8X03pqXCjzotRZUaXGjbrTJUnVAQjrCqUnS+lyu31nwQjZY/d817GmCnfw==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.42.tgz", + "integrity": "sha512-qbhQZEFmycr+ni/qyuccS4sucNN7VAbDfbkvNxWOX2VfgFm90MNs3/UhRNKoPMEIVn0F8gdlYjLPvqxHwHeQOA==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.41", - "@vue/shared": "3.5.41" + "@vue/compiler-core": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.41.tgz", - "integrity": "sha512-XJhip7R2wy6vX3knCxdZN4KracFaZUef58s1KYewqluedHIJaPIVfXoYT7MF1F8nCvv6k8bWWxDC8opMkg1VTQ==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.42.tgz", + "integrity": "sha512-fkCAFB4okcAANGMThboWnScp/gzWjU0ZSkVnjTIiplmMDq2uq0tIB3j+xVu4rhv5rvOgBySCysudmbMd6xRRqw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.29.8", - "@vue/compiler-core": "3.5.41", - "@vue/compiler-dom": "3.5.41", - "@vue/compiler-ssr": "3.5.41", - "@vue/shared": "3.5.41", + "@vue/compiler-core": "3.5.42", + "@vue/compiler-dom": "3.5.42", + "@vue/compiler-ssr": "3.5.42", + "@vue/shared": "3.5.42", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.19", @@ -1167,13 +1167,13 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.41.tgz", - "integrity": "sha512-U3v5OejKEGqOI0Wy0+Sz7hGuIFZHA4LSXzrNM3IMIeDyJEBBfTpX26n3SDgToRpP2bLc9FfI2j/kSgcJ8Emq5A==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.42.tgz", + "integrity": "sha512-xmLk3wLkbizPAiLyomjgFFosf2ys9b5Ghb+oh/k2tnvipNz8OFrQOiTcWCzyK7MpBp9KkyGtfvgfLUivbmuGYA==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.41", - "@vue/shared": "3.5.41" + "@vue/compiler-dom": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/devtools-api": { @@ -1220,51 +1220,51 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.41.tgz", - "integrity": "sha512-rznsqKM0np0x18EjzF8x88MpEhdNsffbvFbckLL5+oUKz1BxAImEmO7J1ArRYSyo6aQaVoBDp7jEkT91OOxydA==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.42.tgz", + "integrity": "sha512-TzNNfKpb7hDxbQltwAut8VDQA5YP+BuRlxntHUuRjyKwlMvmAPbs3unhCvieijifY6vFfVBwsS7wG/C7uq+bEQ==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.41" + "@vue/shared": "3.5.42" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.41.tgz", - "integrity": "sha512-Vcry58hiAKwGen9Z1jUZE0feFsNArPCMOImYI8el48A9Idf6DuQYD0U05zZIF2Iad1hGhPSvcbBbAOhNr55fhg==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.42.tgz", + "integrity": "sha512-9uACtuHs7vJGkm5Bp3xu4xRDLFTIYy5DgxpToVjqGIAhAEKwQfsaLvKINhM6nFVp6bZPRFGdDqd1g52MqKsotA==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.41", - "@vue/shared": "3.5.41" + "@vue/reactivity": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.41.tgz", - "integrity": "sha512-3vVBahVBS9+U6cmXBLyb8nE6/yYo4J/CGI9eVFs3KiMc0YHuudwKyShTD65jtJy/L9PUUxNAFu4cj4LiJ0UFbw==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.42.tgz", + "integrity": "sha512-rsCmhiWLaRxGltLwhlCWyYkFn7WAbKRh0q17eZ1A6Dq6eqc2ACQ61IIryxz0LrsvCzHSilLA9JHovVwM8CNE2g==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.41", - "@vue/runtime-core": "3.5.41", - "@vue/shared": "3.5.41", + "@vue/reactivity": "3.5.42", + "@vue/runtime-core": "3.5.42", + "@vue/shared": "3.5.42", "csstype": "^3.2.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.41.tgz", - "integrity": "sha512-n6hx/pNFfbD6SuyeuMVkvqox8bwf/ET9JlA/kAz/imw8sw++wkqKe2mHX5KutjPpbKE4Z56yTHszoOjGMI9igQ==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.42.tgz", + "integrity": "sha512-2++5dUyYS4gvo7xQXSECUDhB7TS0aOl5SeVfC5qSq1Jgfhjvegw1zqhwTIR3imZ+QYPJQw9gfcFvXGAjGZ7ajQ==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.41", - "@vue/runtime-dom": "3.5.41", - "@vue/shared": "3.5.41" + "@vue/compiler-ssr": "3.5.42", + "@vue/runtime-dom": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/shared": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.41.tgz", - "integrity": "sha512-IOnwSCma8j+9xJT6b8H0dEYidC80NsYmNMlZxRsukYcSoGaDBohog5hDxzeUXdFeGWFA++vWvxqOmrr96VlqMA==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.42.tgz", + "integrity": "sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g==", "license": "MIT" }, "node_modules/acorn": { @@ -2067,16 +2067,16 @@ "license": "MIT" }, "node_modules/vue": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.41.tgz", - "integrity": "sha512-2laE0p+aK+/AOPG/XL/WepOs/GlK755LJ1XECi9kDUrz1FKNw8rb2Xzlw9JS1rqEV55nb0ttsKxVlTCcd+R5cg==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.42.tgz", + "integrity": "sha512-4RyHQTbQvOPs3MfvUO1Sg0YRrKNnA0mAVtvpd12Tg1fKDN7OHBUl1IqSn8zGJjK9nI3NkNp8cgTpVrSZC5TTcA==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.41", - "@vue/compiler-sfc": "3.5.41", - "@vue/runtime-dom": "3.5.41", - "@vue/server-renderer": "3.5.41", - "@vue/shared": "3.5.41" + "@vue/compiler-dom": "3.5.42", + "@vue/compiler-sfc": "3.5.42", + "@vue/runtime-dom": "3.5.42", + "@vue/server-renderer": "3.5.42", + "@vue/shared": "3.5.42" }, "peerDependencies": { "typescript": "*" diff --git a/static/code/stackblitz/v9/vue/package-lock.json b/static/code/stackblitz/v9/vue/package-lock.json index a63e2bc804..ee7685d7d4 100644 --- a/static/code/stackblitz/v9/vue/package-lock.json +++ b/static/code/stackblitz/v9/vue/package-lock.json @@ -437,39 +437,39 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.41.tgz", - "integrity": "sha512-q0Xtv/F9w2YO/7htQhtiL+Ev2WCJbe5N2hc+XfgyKkEKqWpSxknmT8QOuGdEKNdjPq0c3F7rNpFkTo3Kfrm7pg==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.42.tgz", + "integrity": "sha512-2Ye1ilMtKXxl8qZUrQ5j0CdgenFp/HFQmta6rfRyfEsTG69L6Wk+tWuNoHYHMx9E8tF2Slvdg1FuwDvAXdy1LQ==", "license": "MIT", "dependencies": { "@babel/parser": "^7.29.8", - "@vue/shared": "3.5.41", + "@vue/shared": "3.5.42", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.41.tgz", - "integrity": "sha512-oKacVfNglLvGjnS6BXOlGL7EyG2h8X03pqXCjzotRZUaXGjbrTJUnVAQjrCqUnS+lyu31nwQjZY/d817GmCnfw==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.42.tgz", + "integrity": "sha512-qbhQZEFmycr+ni/qyuccS4sucNN7VAbDfbkvNxWOX2VfgFm90MNs3/UhRNKoPMEIVn0F8gdlYjLPvqxHwHeQOA==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.41", - "@vue/shared": "3.5.41" + "@vue/compiler-core": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.41.tgz", - "integrity": "sha512-XJhip7R2wy6vX3knCxdZN4KracFaZUef58s1KYewqluedHIJaPIVfXoYT7MF1F8nCvv6k8bWWxDC8opMkg1VTQ==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.42.tgz", + "integrity": "sha512-fkCAFB4okcAANGMThboWnScp/gzWjU0ZSkVnjTIiplmMDq2uq0tIB3j+xVu4rhv5rvOgBySCysudmbMd6xRRqw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.29.8", - "@vue/compiler-core": "3.5.41", - "@vue/compiler-dom": "3.5.41", - "@vue/compiler-ssr": "3.5.41", - "@vue/shared": "3.5.41", + "@vue/compiler-core": "3.5.42", + "@vue/compiler-dom": "3.5.42", + "@vue/compiler-ssr": "3.5.42", + "@vue/shared": "3.5.42", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.19", @@ -477,13 +477,13 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.41.tgz", - "integrity": "sha512-U3v5OejKEGqOI0Wy0+Sz7hGuIFZHA4LSXzrNM3IMIeDyJEBBfTpX26n3SDgToRpP2bLc9FfI2j/kSgcJ8Emq5A==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.42.tgz", + "integrity": "sha512-xmLk3wLkbizPAiLyomjgFFosf2ys9b5Ghb+oh/k2tnvipNz8OFrQOiTcWCzyK7MpBp9KkyGtfvgfLUivbmuGYA==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.41", - "@vue/shared": "3.5.41" + "@vue/compiler-dom": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/devtools-api": { @@ -530,51 +530,51 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.41.tgz", - "integrity": "sha512-rznsqKM0np0x18EjzF8x88MpEhdNsffbvFbckLL5+oUKz1BxAImEmO7J1ArRYSyo6aQaVoBDp7jEkT91OOxydA==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.42.tgz", + "integrity": "sha512-TzNNfKpb7hDxbQltwAut8VDQA5YP+BuRlxntHUuRjyKwlMvmAPbs3unhCvieijifY6vFfVBwsS7wG/C7uq+bEQ==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.41" + "@vue/shared": "3.5.42" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.41.tgz", - "integrity": "sha512-Vcry58hiAKwGen9Z1jUZE0feFsNArPCMOImYI8el48A9Idf6DuQYD0U05zZIF2Iad1hGhPSvcbBbAOhNr55fhg==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.42.tgz", + "integrity": "sha512-9uACtuHs7vJGkm5Bp3xu4xRDLFTIYy5DgxpToVjqGIAhAEKwQfsaLvKINhM6nFVp6bZPRFGdDqd1g52MqKsotA==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.41", - "@vue/shared": "3.5.41" + "@vue/reactivity": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.41.tgz", - "integrity": "sha512-3vVBahVBS9+U6cmXBLyb8nE6/yYo4J/CGI9eVFs3KiMc0YHuudwKyShTD65jtJy/L9PUUxNAFu4cj4LiJ0UFbw==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.42.tgz", + "integrity": "sha512-rsCmhiWLaRxGltLwhlCWyYkFn7WAbKRh0q17eZ1A6Dq6eqc2ACQ61IIryxz0LrsvCzHSilLA9JHovVwM8CNE2g==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.41", - "@vue/runtime-core": "3.5.41", - "@vue/shared": "3.5.41", + "@vue/reactivity": "3.5.42", + "@vue/runtime-core": "3.5.42", + "@vue/shared": "3.5.42", "csstype": "^3.2.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.41.tgz", - "integrity": "sha512-n6hx/pNFfbD6SuyeuMVkvqox8bwf/ET9JlA/kAz/imw8sw++wkqKe2mHX5KutjPpbKE4Z56yTHszoOjGMI9igQ==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.42.tgz", + "integrity": "sha512-2++5dUyYS4gvo7xQXSECUDhB7TS0aOl5SeVfC5qSq1Jgfhjvegw1zqhwTIR3imZ+QYPJQw9gfcFvXGAjGZ7ajQ==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.41", - "@vue/runtime-dom": "3.5.41", - "@vue/shared": "3.5.41" + "@vue/compiler-ssr": "3.5.42", + "@vue/runtime-dom": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/shared": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.41.tgz", - "integrity": "sha512-IOnwSCma8j+9xJT6b8H0dEYidC80NsYmNMlZxRsukYcSoGaDBohog5hDxzeUXdFeGWFA++vWvxqOmrr96VlqMA==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.42.tgz", + "integrity": "sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g==", "license": "MIT" }, "node_modules/acorn": { @@ -1137,16 +1137,16 @@ "license": "MIT" }, "node_modules/vue": { - "version": "3.5.41", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.41.tgz", - "integrity": "sha512-2laE0p+aK+/AOPG/XL/WepOs/GlK755LJ1XECi9kDUrz1FKNw8rb2Xzlw9JS1rqEV55nb0ttsKxVlTCcd+R5cg==", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.42.tgz", + "integrity": "sha512-4RyHQTbQvOPs3MfvUO1Sg0YRrKNnA0mAVtvpd12Tg1fKDN7OHBUl1IqSn8zGJjK9nI3NkNp8cgTpVrSZC5TTcA==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.41", - "@vue/compiler-sfc": "3.5.41", - "@vue/runtime-dom": "3.5.41", - "@vue/server-renderer": "3.5.41", - "@vue/shared": "3.5.41" + "@vue/compiler-dom": "3.5.42", + "@vue/compiler-sfc": "3.5.42", + "@vue/runtime-dom": "3.5.42", + "@vue/server-renderer": "3.5.42", + "@vue/shared": "3.5.42" }, "peerDependencies": { "typescript": "*" From 5f845150e925aaac3d51e18111891001cc166b29 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Sep 2026 10:01:08 -0400 Subject: [PATCH 3/5] chore(deps): update dependency vue-router to v5.3.0 (#4687) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../code/stackblitz/v8/vue/package-lock.json | 122 +----------------- static/code/stackblitz/v8/vue/package.json | 2 +- .../code/stackblitz/v9/vue/package-lock.json | 118 ++--------------- static/code/stackblitz/v9/vue/package.json | 2 +- 4 files changed, 17 insertions(+), 227 deletions(-) diff --git a/static/code/stackblitz/v8/vue/package-lock.json b/static/code/stackblitz/v8/vue/package-lock.json index 10b8fc1989..026a1724df 100644 --- a/static/code/stackblitz/v8/vue/package-lock.json +++ b/static/code/stackblitz/v8/vue/package-lock.json @@ -11,7 +11,7 @@ "@ionic/vue": "8.8.19", "@ionic/vue-router": "8.8.19", "vue": "^3.2.25", - "vue-router": "5.2.0" + "vue-router": "5.3.0" }, "devDependencies": { "@vitejs/plugin-vue": "^6.0.0", @@ -20,69 +20,6 @@ "vue-tsc": "^3.0.0" } }, - "node_modules/@babel/generator": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0.tgz", - "integrity": "sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^8.0.0", - "@babel/types": "^8.0.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "@types/jsesc": "^2.5.0", - "jsesc": "^3.0.2" - }, - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/helper-string-parser": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", - "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", - "license": "MIT", - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/helper-validator-identifier": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.4.tgz", - "integrity": "sha512-4wFaiLd0bVo4cIoTXI3zKI038NIWE/cr3jvBjejOVYVxV/m8Ltav1USiGzG1fmS5J2RhgEOgXNNK46cRPnRsrg==", - "license": "MIT", - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/parser": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.4.tgz", - "integrity": "sha512-srpptsAkEbbNIC/q8nT7o+m6CQe8CJUTV/t7MYc9NnWlgYVtHOb7JH6SorxMhN0kuRJjVqXbKClG6xSbPtzz+g==", - "license": "MIT", - "dependencies": { - "@babel/types": "^8.0.4" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/types": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.4.tgz", - "integrity": "sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^8.0.0", - "@babel/helper-validator-identifier": "^8.0.4" - }, - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", @@ -1047,12 +984,6 @@ "devOptional": true, "license": "MIT" }, - "node_modules/@types/jsesc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@types/jsesc/-/jsesc-2.5.1.tgz", - "integrity": "sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==", - "license": "MIT" - }, "node_modules/@vitejs/plugin-vue": { "version": "6.0.8", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.8.tgz", @@ -1467,30 +1398,6 @@ "@stencil/core": "^4.35.3" } }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/local-pkg": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.2.1.tgz", @@ -2088,17 +1995,16 @@ } }, "node_modules/vue-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-5.2.0.tgz", - "integrity": "sha512-QAC5i0LEb1GLG0LXDQmHu8L7FX12j0KwU/JTKmLQUJMrn04gQdKP6Du+p0QwpHb3iy71vBlqnHQ8WAfOSAWhqw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-5.3.0.tgz", + "integrity": "sha512-a2PBXX9yfkS58JzSJALUffgDa09lEzKmCcEnLaepoIr88L+9hEnsgEQkcadJGID+vtHa0gFpVo064zmylA9fcg==", "license": "MIT", "dependencies": { - "@babel/generator": "^8.0.0", "@vue-macros/common": "^3.1.3", "@vue/devtools-api": "^8.1.5", "ast-walker-scope": "^0.9.0", "chokidar": "^5.0.0", - "json5": "^2.2.3", + "confbox": "^0.2.4", "local-pkg": "^1.2.1", "magic-string": "^0.30.21", "mlly": "^1.8.2", @@ -2109,8 +2015,7 @@ "scule": "^1.3.0", "tinyglobby": "^0.2.17", "unplugin": "^3.3.0", - "unplugin-utils": "^0.3.2", - "yaml": "^2.9.0" + "unplugin-utils": "^0.3.2" }, "funding": { "url": "https://github.com/sponsors/posva" @@ -2159,21 +2064,6 @@ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", "license": "MIT" - }, - "node_modules/yaml": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", - "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } } } } diff --git a/static/code/stackblitz/v8/vue/package.json b/static/code/stackblitz/v8/vue/package.json index 576ad61108..313e657427 100644 --- a/static/code/stackblitz/v8/vue/package.json +++ b/static/code/stackblitz/v8/vue/package.json @@ -11,7 +11,7 @@ "@ionic/vue": "8.8.19", "@ionic/vue-router": "8.8.19", "vue": "^3.2.25", - "vue-router": "5.2.0" + "vue-router": "5.3.0" }, "devDependencies": { "@vitejs/plugin-vue": "^6.0.0", diff --git a/static/code/stackblitz/v9/vue/package-lock.json b/static/code/stackblitz/v9/vue/package-lock.json index ee7685d7d4..cccd51c138 100644 --- a/static/code/stackblitz/v9/vue/package-lock.json +++ b/static/code/stackblitz/v9/vue/package-lock.json @@ -11,7 +11,7 @@ "@ionic/vue": "9.0.1", "@ionic/vue-router": "9.0.1", "vue": "^3.2.25", - "vue-router": "5.2.0" + "vue-router": "5.3.0" }, "devDependencies": { "@vitejs/plugin-vue": "^6.0.0", @@ -20,69 +20,6 @@ "vue-tsc": "^3.0.0" } }, - "node_modules/@babel/generator": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0.tgz", - "integrity": "sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^8.0.0", - "@babel/types": "^8.0.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "@types/jsesc": "^2.5.0", - "jsesc": "^3.0.2" - }, - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/helper-string-parser": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", - "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", - "license": "MIT", - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/helper-validator-identifier": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.4.tgz", - "integrity": "sha512-4wFaiLd0bVo4cIoTXI3zKI038NIWE/cr3jvBjejOVYVxV/m8Ltav1USiGzG1fmS5J2RhgEOgXNNK46cRPnRsrg==", - "license": "MIT", - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/parser": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.4.tgz", - "integrity": "sha512-srpptsAkEbbNIC/q8nT7o+m6CQe8CJUTV/t7MYc9NnWlgYVtHOb7JH6SorxMhN0kuRJjVqXbKClG6xSbPtzz+g==", - "license": "MIT", - "dependencies": { - "@babel/types": "^8.0.4" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/types": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.4.tgz", - "integrity": "sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^8.0.0", - "@babel/helper-validator-identifier": "^8.0.4" - }, - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.29.7", "license": "MIT", @@ -365,10 +302,6 @@ "devOptional": true, "license": "MIT" }, - "node_modules/@types/jsesc": { - "version": "2.5.1", - "license": "MIT" - }, "node_modules/@vitejs/plugin-vue": { "version": "6.0.8", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.8.tgz", @@ -644,7 +577,9 @@ } }, "node_modules/confbox": { - "version": "0.2.2", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", "license": "MIT" }, "node_modules/csstype": { @@ -725,26 +660,6 @@ "@stencil/core": "^4.43.5" } }, - "node_modules/jsesc": { - "version": "3.1.0", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/local-pkg": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.2.1.tgz", @@ -1158,17 +1073,16 @@ } }, "node_modules/vue-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-5.2.0.tgz", - "integrity": "sha512-QAC5i0LEb1GLG0LXDQmHu8L7FX12j0KwU/JTKmLQUJMrn04gQdKP6Du+p0QwpHb3iy71vBlqnHQ8WAfOSAWhqw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-5.3.0.tgz", + "integrity": "sha512-a2PBXX9yfkS58JzSJALUffgDa09lEzKmCcEnLaepoIr88L+9hEnsgEQkcadJGID+vtHa0gFpVo064zmylA9fcg==", "license": "MIT", "dependencies": { - "@babel/generator": "^8.0.0", "@vue-macros/common": "^3.1.3", "@vue/devtools-api": "^8.1.5", "ast-walker-scope": "^0.9.0", "chokidar": "^5.0.0", - "json5": "^2.2.3", + "confbox": "^0.2.4", "local-pkg": "^1.2.1", "magic-string": "^0.30.21", "mlly": "^1.8.2", @@ -1179,8 +1093,7 @@ "scule": "^1.3.0", "tinyglobby": "^0.2.17", "unplugin": "^3.3.0", - "unplugin-utils": "^0.3.2", - "yaml": "^2.9.0" + "unplugin-utils": "^0.3.2" }, "funding": { "url": "https://github.com/sponsors/posva" @@ -1227,19 +1140,6 @@ "node_modules/webpack-virtual-modules": { "version": "0.6.2", "license": "MIT" - }, - "node_modules/yaml": { - "version": "2.9.0", - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } } } } diff --git a/static/code/stackblitz/v9/vue/package.json b/static/code/stackblitz/v9/vue/package.json index e3a9dba0c2..fdd978c5cb 100644 --- a/static/code/stackblitz/v9/vue/package.json +++ b/static/code/stackblitz/v9/vue/package.json @@ -11,7 +11,7 @@ "@ionic/vue": "9.0.1", "@ionic/vue-router": "9.0.1", "vue": "^3.2.25", - "vue-router": "5.2.0" + "vue-router": "5.3.0" }, "devDependencies": { "@vitejs/plugin-vue": "^6.0.0", From 6784c8559473775e2cc56714514a5d0b7cf435e3 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Tue, 1 Sep 2026 09:58:52 -0700 Subject: [PATCH 4/5] chore(typescript): scope typechecking to src and add it to CI (#4688) --- .github/workflows/CI.yml | 2 ++ package-lock.json | 1 + package.json | 2 ++ .../ReleaseNotes/release-notes.d.json.ts | 20 +++++++++++ .../theming/SteppedColorGenerator/index.tsx | 1 - src/declarations.d.ts | 10 ++++-- .../DocItem/Layout/frontMatter.interface.ts | 23 ++++++++++++ src/theme/DocItem/Layout/index.tsx | 6 ++-- tsconfig.json | 35 ++++++++++++++++++- 9 files changed, 93 insertions(+), 7 deletions(-) create mode 100644 src/components/page/reference/ReleaseNotes/release-notes.d.json.ts create mode 100644 src/theme/DocItem/Layout/frontMatter.interface.ts diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index ddd4feec2b..e00f7ba81a 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,6 +29,8 @@ jobs: run: npm run lint - name: Test run: npm run test + - name: 🧩 Typecheck + run: npm run typecheck - name: 🔤 Spell Check run: npm run spellcheck - uses: ./.github/workflows/actions/check-translations diff --git a/package-lock.json b/package-lock.json index 9b9071b325..29521b6296 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,6 +35,7 @@ "devDependencies": { "@docusaurus/module-type-aliases": "^3.10.2", "@docusaurus/tsconfig": "^3.10.2", + "@docusaurus/types": "^3.10.2", "@ionic/prettier-config": "^4.0.0", "@types/react": "^19.2.18", "cspell": "^10.0.1", diff --git a/package.json b/package.json index 59eb086ade..71538c014d 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "prettier": "prettier \"./**/*.{html,ts,tsx,js,jsx,md,mdx}\" --cache", "start": "docusaurus start", "test": "vitest run", + "typecheck": "tsc --noEmit", "swizzle": "docusaurus swizzle", "spellcheck": "cspell --no-progress --gitignore \"**/*.{md,mdx}\"" }, @@ -65,6 +66,7 @@ "devDependencies": { "@docusaurus/module-type-aliases": "^3.10.2", "@docusaurus/tsconfig": "^3.10.2", + "@docusaurus/types": "^3.10.2", "@ionic/prettier-config": "^4.0.0", "@types/react": "^19.2.18", "cspell": "^10.0.1", diff --git a/src/components/page/reference/ReleaseNotes/release-notes.d.json.ts b/src/components/page/reference/ReleaseNotes/release-notes.d.json.ts new file mode 100644 index 0000000000..925a836aba --- /dev/null +++ b/src/components/page/reference/ReleaseNotes/release-notes.d.json.ts @@ -0,0 +1,20 @@ +/** + * Types the sibling `release-notes.json`, which `scripts/release-notes.mjs` writes + * during `generate-markdown`. That file is gitignored and does not exist until a + * build runs, so this declaration keeps type checking independent of the GitHub API + * fetch that produces it. + * + * The `.d.json.ts` name is how TypeScript types a non-JS import; it requires + * `allowArbitraryExtensions`. + */ + +declare const releases: { + body: string; + name: string; + published_at: string; + tag_name: string; + type: string; + version: string; +}[]; + +export default releases; diff --git a/src/components/page/theming/SteppedColorGenerator/index.tsx b/src/components/page/theming/SteppedColorGenerator/index.tsx index 226b6dfe51..4d76ffb993 100755 --- a/src/components/page/theming/SteppedColorGenerator/index.tsx +++ b/src/components/page/theming/SteppedColorGenerator/index.tsx @@ -1,5 +1,4 @@ import React from 'react'; -import { Component, Element, Listen, State, h } from '@stencil/core'; import { useEffect, useState } from 'react'; import CodeColor from '../CodeColor'; diff --git a/src/declarations.d.ts b/src/declarations.d.ts index 60f4e2ce67..0560735211 100644 --- a/src/declarations.d.ts +++ b/src/declarations.d.ts @@ -1,12 +1,15 @@ /** * Type declarations for custom elements used in JSX. * - * These are web components registered at runtime (not React components), so - * TypeScript has no types for them and would otherwise reject the JSX usage. + * These are not React components, so TypeScript has no types for them and would + * otherwise reject the JSX usage: * * - `device-preview`: defined in src/components/global/Playground/device-preview.js * and registered via `defineCustomElement()`. Used by the Playground to render * examples inside an iOS/MD device frame. + * - `ion-icon`: registered by Ionic Framework, which the docs site loads globally. + * - `docs-card` / `docs-cards`: no JavaScript definition anywhere in this repo. They + * are unregistered tags used purely as styling hooks by DocsCard and DocsCards. */ // The import makes this file a module, so the block below augments React's // existing types instead of replacing them. @@ -16,6 +19,9 @@ declare module 'react' { namespace JSX { interface IntrinsicElements { 'device-preview': any; + 'ion-icon': any; + 'docs-card': any; + 'docs-cards': any; } } } diff --git a/src/theme/DocItem/Layout/frontMatter.interface.ts b/src/theme/DocItem/Layout/frontMatter.interface.ts new file mode 100644 index 0000000000..babfb0118e --- /dev/null +++ b/src/theme/DocItem/Layout/frontMatter.interface.ts @@ -0,0 +1,23 @@ +/** + * Front matter fields this site adds on top of the ones Docusaurus defines. They are + * set in the front matter of pages under `docs/` and `versioned_docs/`, and read by + * the sibling `index.tsx`. + * + * This file is ours. Only `index.tsx` in this folder is a copy of upstream. + * + * Docusaurus exports `DocFrontMatter` as a type alias rather than an interface, so + * declaration merging cannot add to it in place. Intersecting with it here keeps the + * upstream fields, so reads of both these and Docusaurus's own stay checked. + */ + +import type { DocFrontMatter } from '@docusaurus/plugin-content-docs'; + +export type DocsFrontMatter = DocFrontMatter & { + /** + * Renders a phone demo beside the page content. Setting it also suppresses the + * table of contents, since the two compete for the same column. + */ + demoUrl?: string; + /** Source link shown alongside the phone demo. */ + demoSourceUrl?: string; +}; diff --git a/src/theme/DocItem/Layout/index.tsx b/src/theme/DocItem/Layout/index.tsx index 4e64afe30e..890afb5446 100644 --- a/src/theme/DocItem/Layout/index.tsx +++ b/src/theme/DocItem/Layout/index.tsx @@ -26,6 +26,7 @@ import styles from '@docusaurus/theme-classic/lib/theme/DocItem/Layout/styles.mo // CUSTOM CODE import DocDemo from '@components/global/DocDemo'; +import type {DocsFrontMatter} from './frontMatter.interface'; // CUSTOM CODE END /** @@ -37,7 +38,7 @@ function useDocTOC() { const hidden = frontMatter.hide_table_of_contents; // CUSTOM CODE - const demoUrl = frontMatter.demoUrl; + const demoUrl = (frontMatter as DocsFrontMatter).demoUrl; const canRender = !hidden && toc.length > 0 && !demoUrl; // CUSTOM CODE END @@ -57,8 +58,7 @@ function useDocTOC() { // CUSTOM CODE function useDocDemo() { const {frontMatter} = useDoc(); - const demoUrl = frontMatter.demoUrl; - const demoSourceUrl = frontMatter.demoSourceUrl; + const {demoUrl, demoSourceUrl} = frontMatter as DocsFrontMatter; return { demoUrl, demoSourceUrl, diff --git a/tsconfig.json b/tsconfig.json index a1617086e7..0762b92ab8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,4 +1,37 @@ { "extends": "@docusaurus/tsconfig", - "exclude": ["static/code/stackblitz/"], + "compilerOptions": { + /* + * `@docusaurus/tsconfig` sets `baseUrl` alongside a `@site/*` path mapping, but + * `extends` resolves `baseUrl` relative to the file that declares it, so the + * mapping points inside `node_modules/@docusaurus/tsconfig`. Redeclaring it here + * anchors it to the project root. + * + * TypeScript 6 deprecates `baseUrl` and 7 removes it. Dropping it here will not + * unblock those versions on its own, because the inherited one from + * `@docusaurus/tsconfig` triggers the same error, so this goes when upstream + * drops it. A `paths` mapping is not a substitute: the inherited `baseUrl` + * still wins. + */ + "baseUrl": ".", + /* + * Real ambient declarations for `@theme/*` and `@docusaurus/*`. Without them the + * catch-all `declare module` fallbacks in `index.d.ts` win and every swizzled + * component is typed as `any`. + */ + "types": ["@docusaurus/module-type-aliases", "@docusaurus/theme-classic"], + /* + * Lets `release-notes.d.json.ts` describe the generated `release-notes.json`. + * Ambient `declare module` cannot do this, as it does not apply to relative + * imports. + */ + "allowArbitraryExtensions": true + }, + /* + * `src` holds every TypeScript file in the project, and `index.d.ts` declares the + * `*.module.scss` imports those files rely on. Listing them explicitly also restores + * TypeScript's default excludes, notably `node_modules`, which the previous + * `exclude`-only config silently overrode. + */ + "include": ["src", "index.d.ts"] } From fd7d1209261bd88562ad13f930b02f3587c0af23 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Tue, 1 Sep 2026 10:56:24 -0700 Subject: [PATCH 5/5] chore(docs): rename doc pages to .mdx (#4684) --- ...add-to-existing.md => add-to-existing.mdx} | 12 +++++----- .../{build-options.md => build-options.mdx} | 0 ...jection-tokens.md => injection-tokens.mdx} | 0 docs/angular/{lifecycle.md => lifecycle.mdx} | 0 .../angular/{navigation.md => navigation.mdx} | 2 +- docs/angular/{overlays.md => overlays.mdx} | 0 docs/angular/{overview.md => overview.mdx} | 0 .../{performance.md => performance.mdx} | 0 docs/angular/{platform.md => platform.mdx} | 0 docs/angular/{pwa.md => pwa.mdx} | 0 .../angular/{quickstart.md => quickstart.mdx} | 14 ++++++------ docs/angular/{slides.md => slides.mdx} | 0 docs/angular/{storage.md => storage.mdx} | 0 docs/angular/{testing.md => testing.mdx} | 0 .../{virtual-scroll.md => virtual-scroll.mdx} | 0 .../{your-first-app.md => your-first-app.mdx} | 10 ++++----- ...2-taking-photos.md => 2-taking-photos.mdx} | 2 +- ...3-saving-photos.md => 3-saving-photos.mdx} | 0 ...loading-photos.md => 4-loading-photos.mdx} | 0 ...5-adding-mobile.md => 5-adding-mobile.mdx} | 4 ++-- ...oying-mobile.md => 6-deploying-mobile.mdx} | 0 .../{7-live-reload.md => 7-live-reload.mdx} | 4 ++-- .../{8-distribute.md => 8-distribute.mdx} | 2 +- docs/angular/{zoneless.md => zoneless.mdx} | 4 ++-- docs/{api.md => api.mdx} | 0 ...accordion-group.md => accordion-group.mdx} | 0 docs/api/{accordion.md => accordion.mdx} | 0 .../api/{action-sheet.md => action-sheet.mdx} | 0 docs/api/{alert.md => alert.mdx} | 0 docs/api/{app.md => app.mdx} | 0 docs/api/{avatar.md => avatar.mdx} | 0 docs/api/{back-button.md => back-button.mdx} | 0 docs/api/{backdrop.md => backdrop.mdx} | 0 docs/api/{badge.md => badge.mdx} | 0 docs/api/{breadcrumb.md => breadcrumb.mdx} | 0 docs/api/{breadcrumbs.md => breadcrumbs.mdx} | 0 docs/api/{button.md => button.mdx} | 0 docs/api/{buttons.md => buttons.mdx} | 0 .../api/{card-content.md => card-content.mdx} | 0 docs/api/{card-header.md => card-header.mdx} | 0 .../{card-subtitle.md => card-subtitle.mdx} | 0 docs/api/{card-title.md => card-title.mdx} | 0 docs/api/{card.md => card.mdx} | 0 docs/api/{checkbox.md => checkbox.mdx} | 0 docs/api/{chip.md => chip.mdx} | 0 docs/api/{col.md => col.mdx} | 0 docs/api/{content.md => content.mdx} | 2 +- ...datetime-button.md => datetime-button.mdx} | 0 docs/api/{datetime.md => datetime.mdx} | 0 docs/api/{fab-button.md => fab-button.mdx} | 0 docs/api/{fab-list.md => fab-list.mdx} | 0 docs/api/{fab.md => fab.mdx} | 0 docs/api/{footer.md => footer.mdx} | 0 docs/api/{grid.md => grid.mdx} | 4 ++-- docs/api/{header.md => header.mdx} | 0 docs/api/{icon.md => icon.mdx} | 0 docs/api/{img.md => img.mdx} | 2 +- ...content.md => infinite-scroll-content.mdx} | 2 +- ...infinite-scroll.md => infinite-scroll.mdx} | 0 docs/api/{input-otp.md => input-otp.mdx} | 0 ...rd-toggle.md => input-password-toggle.mdx} | 0 docs/api/{input.md => input.mdx} | 4 ++-- .../api/{item-divider.md => item-divider.mdx} | 0 docs/api/{item-group.md => item-group.mdx} | 0 docs/api/{item-option.md => item-option.mdx} | 0 .../api/{item-options.md => item-options.mdx} | 0 .../api/{item-sliding.md => item-sliding.mdx} | 0 docs/api/{item.md => item.mdx} | 0 docs/api/{label.md => label.mdx} | 2 +- docs/api/{list-header.md => list-header.mdx} | 0 docs/api/{list.md => list.mdx} | 0 docs/api/{loading.md => loading.mdx} | 0 docs/api/{menu-button.md => menu-button.mdx} | 0 docs/api/{menu-toggle.md => menu-toggle.mdx} | 0 docs/api/{menu.md => menu.mdx} | 0 docs/api/{modal.md => modal.mdx} | 0 docs/api/{nav-link.md => nav-link.mdx} | 0 docs/api/{nav.md => nav.mdx} | 0 docs/api/{note.md => note.mdx} | 0 ...umn-option.md => picker-column-option.mdx} | 2 +- .../{picker-column.md => picker-column.mdx} | 2 +- docs/api/{picker.md => picker.mdx} | 0 docs/api/{popover.md => popover.mdx} | 0 .../api/{progress-bar.md => progress-bar.mdx} | 0 docs/api/{radio-group.md => radio-group.mdx} | 0 docs/api/{radio.md => radio.mdx} | 0 docs/api/{range.md => range.mdx} | 0 ...esher-content.md => refresher-content.mdx} | 0 docs/api/{refresher.md => refresher.mdx} | 0 .../{reorder-group.md => reorder-group.mdx} | 0 docs/api/{reorder.md => reorder.mdx} | 0 .../{ripple-effect.md => ripple-effect.mdx} | 0 .../{route-redirect.md => route-redirect.mdx} | 2 +- docs/api/{route.md => route.mdx} | 2 +- docs/api/{router-link.md => router-link.mdx} | 0 .../{router-outlet.md => router-outlet.mdx} | 0 docs/api/{router.md => router.mdx} | 2 +- docs/api/{row.md => row.mdx} | 0 docs/api/{searchbar.md => searchbar.mdx} | 0 .../{segment-button.md => segment-button.mdx} | 2 +- ...segment-content.md => segment-content.mdx} | 4 ++-- .../api/{segment-view.md => segment-view.mdx} | 4 ++-- docs/api/{segment.md => segment.mdx} | 2 +- .../{select-option.md => select-option.mdx} | 0 docs/api/{select.md => select.mdx} | 22 +++++++++---------- .../{skeleton-text.md => skeleton-text.mdx} | 0 docs/api/{spinner.md => spinner.mdx} | 0 docs/api/{split-pane.md => split-pane.mdx} | 0 docs/api/{tab-bar.md => tab-bar.mdx} | 2 +- docs/api/{tab-button.md => tab-button.mdx} | 4 ++-- docs/api/{tab.md => tab.mdx} | 8 +++---- docs/api/{tabs.md => tabs.mdx} | 2 +- docs/api/{text.md => text.mdx} | 0 docs/api/{textarea.md => textarea.mdx} | 4 ++-- docs/api/{thumbnail.md => thumbnail.mdx} | 0 docs/api/{title.md => title.mdx} | 2 +- docs/api/{toast.md => toast.mdx} | 4 ++-- docs/api/{toggle.md => toggle.mdx} | 0 docs/api/{toolbar.md => toolbar.mdx} | 0 docs/{cli.md => cli.mdx} | 0 .../cli/configuration.mdx | 4 ++-- .../livereload.md => docs/cli/livereload.mdx | 2 +- .../{using-a-proxy.md => using-a-proxy.mdx} | 0 docs/{components.md => components.mdx} | 2 +- docs/contributing/{coc.md => coc.mdx} | 0 .../contributing/how-to-contribute.mdx | 2 +- .../core-concepts/cross-platform.mdx | 6 ++--- .../{fundamentals.md => fundamentals.mdx} | 10 ++++----- .../core-concepts/{webview.md => webview.mdx} | 8 +++---- ...s.md => what-are-progressive-web-apps.mdx} | 0 .../{app-store.md => app-store.mdx} | 0 ...ive-web-app.md => progressive-web-app.mdx} | 2 +- .../{courses.md => courses.mdx} | 0 .../{guides.md => guides.mdx} | 4 ++-- ...creating-photo-gallery-device-storage.mdx} | 0 .../first-app-v3/{intro.md => intro.mdx} | 0 ...droid-camera.md => ios-android-camera.mdx} | 0 ...y.md => realtime-updates-ionic-deploy.mdx} | 6 ++--- .../first-app-v3/{theming.md => theming.mdx} | 0 ...ing.md => track-bugs-ionic-monitoring.mdx} | 0 ...creating-photo-gallery-device-storage.mdx} | 0 .../first-app-v4/{intro.md => intro.mdx} | 2 +- ...droid-camera.md => ios-android-camera.mdx} | 2 +- .../guides/first-app-v4/theming.mdx | 2 +- .../{posts.md => posts.mdx} | 0 .../developer-resources/tools.mdx | 2 +- .../{videos.md => videos.mdx} | 0 docs/developing/{android.md => android.mdx} | 0 docs/developing/{config.md => config.mdx} | 10 ++++----- .../config/global/{index.md => index.mdx} | 0 .../per-component/{index.md => index.mdx} | 0 .../{index.md => index.mdx} | 0 .../{index.md => index.mdx} | 0 .../per-platform/{index.md => index.mdx} | 0 ...ack-button.md => hardware-back-button.mdx} | 2 +- docs/developing/{ios.md => ios.mdx} | 0 docs/developing/{keyboard.md => keyboard.mdx} | 0 .../{managing-focus.md => managing-focus.mdx} | 0 .../{previewing.md => previewing.mdx} | 10 ++++----- .../{scaffolding.md => scaffolding.mdx} | 0 docs/developing/{starting.md => starting.mdx} | 0 docs/developing/{tips.md => tips.mdx} | 2 +- docs/{index.md => index.mdx} | 12 +++++----- .../intro/cdn.md => docs/intro/cdn.mdx | 2 +- .../intro/cli.md => docs/intro/cli.mdx | 10 ++++----- .../intro/{environment.md => environment.mdx} | 8 +++---- docs/intro/{first-app.md => first-app.mdx} | 0 docs/intro/{next.md => next.mdx} | 0 ...code-extension.md => vscode-extension.mdx} | 0 docs/javascript/{overview.md => overview.mdx} | 0 .../javascript/quickstart.mdx | 12 +++++----- .../layout/css-utilities.mdx | 6 ++--- ...nt-scaling.md => dynamic-font-scaling.mdx} | 0 .../layout/global-stylesheets.mdx | 14 ++++++------ docs/layout/{structure.md => structure.mdx} | 10 ++++----- docs/{native-faq.md => native-faq.mdx} | 0 docs/{native-setup.md => native-setup.mdx} | 0 docs/{native.md => native.mdx} | 0 ...add-to-existing.md => add-to-existing.mdx} | 10 ++++----- docs/react/{lifecycle.md => lifecycle.mdx} | 0 docs/react/{navigation.md => navigation.mdx} | 6 ++--- docs/react/{overlays.md => overlays.mdx} | 0 docs/react/{overview.md => overview.mdx} | 0 .../react/{performance.md => performance.mdx} | 0 docs/react/{platform.md => platform.mdx} | 0 docs/react/{pwa.md => pwa.mdx} | 0 docs/react/{quickstart.md => quickstart.mdx} | 14 ++++++------ docs/react/{slides.md => slides.mdx} | 0 docs/react/{storage.md => storage.mdx} | 0 .../{introduction.md => introduction.mdx} | 0 .../{best-practices.md => best-practices.mdx} | 0 .../{examples.md => examples.mdx} | 0 .../unit-testing/{setup.md => setup.mdx} | 0 ...ity-functions.md => utility-functions.mdx} | 2 +- .../{virtual-scroll.md => virtual-scroll.mdx} | 0 .../{your-first-app.md => your-first-app.mdx} | 8 +++---- ...2-taking-photos.md => 2-taking-photos.mdx} | 2 +- ...3-saving-photos.md => 3-saving-photos.mdx} | 0 ...loading-photos.md => 4-loading-photos.mdx} | 0 ...5-adding-mobile.md => 5-adding-mobile.mdx} | 2 +- ...oying-mobile.md => 6-deploying-mobile.mdx} | 0 .../{7-live-reload.md => 7-live-reload.mdx} | 4 ++-- .../react/your-first-app/8-distribute.mdx | 2 +- ...browser-support.md => browser-support.mdx} | 2 +- docs/reference/{glossary.md => glossary.mdx} | 0 .../{release-notes.md => release-notes.mdx} | 0 docs/reference/{support.md => support.mdx} | 4 ++-- .../{versioning.md => versioning.mdx} | 0 docs/techniques/{security.md => security.mdx} | 2 +- docs/test/page1.md | 3 --- docs/test/page1.mdx | 3 +++ docs/test/page2.md | 3 --- docs/test/page2.mdx | 3 +++ docs/theming/{advanced.md => advanced.mdx} | 8 +++---- docs/theming/{basics.md => basics.mdx} | 10 ++++----- ...color-generator.md => color-generator.mdx} | 0 docs/theming/{colors.md => colors.mdx} | 8 +++---- ...s-shadow-parts.md => css-shadow-parts.mdx} | 10 ++++----- .../theming/css-variables.mdx | 4 ++-- docs/theming/{dark-mode.md => dark-mode.mdx} | 12 +++++----- ...ontrast-mode.md => high-contrast-mode.mdx} | 16 +++++++------- .../theming/platform-styles.mdx | 6 ++--- .../themes.md => docs/theming/themes.mdx | 2 +- docs/troubleshooting/{build.md => build.mdx} | 0 docs/troubleshooting/{cors.md => cors.mdx} | 0 .../{debugging.md => debugging.mdx} | 2 +- .../troubleshooting/native.mdx | 4 ++-- .../{runtime.md => runtime.mdx} | 0 docs/updating/{4-0.md => 4-0.mdx} | 12 +++++----- docs/updating/{5-0.md => 5-0.mdx} | 0 docs/updating/{6-0.md => 6-0.mdx} | 0 docs/updating/{7-0.md => 7-0.mdx} | 0 docs/updating/{8-0.md => 8-0.mdx} | 0 docs/updating/{9-0.md => 9-0.mdx} | 10 ++++----- .../{animations.md => animations.mdx} | 2 +- docs/utilities/{gestures.md => gestures.mdx} | 2 +- .../vue/add-to-existing.mdx | 10 ++++----- .../{build-options.md => build-options.mdx} | 0 docs/vue/{lifecycle.md => lifecycle.mdx} | 0 docs/vue/{navigation.md => navigation.mdx} | 0 docs/vue/{overview.md => overview.mdx} | 2 +- docs/vue/{performance.md => performance.mdx} | 0 docs/vue/{platform.md => platform.mdx} | 0 docs/vue/{pwa.md => pwa.mdx} | 0 .../quickstart.md => docs/vue/quickstart.mdx | 14 ++++++------ docs/vue/{slides.md => slides.mdx} | 0 docs/vue/{storage.md => storage.mdx} | 0 docs/vue/{testing.md => testing.mdx} | 0 ...troubleshooting.md => troubleshooting.mdx} | 6 ++--- ...ity-functions.md => utility-functions.mdx} | 0 .../{virtual-scroll.md => virtual-scroll.mdx} | 0 .../{your-first-app.md => your-first-app.mdx} | 8 +++---- ...2-taking-photos.md => 2-taking-photos.mdx} | 2 +- ...3-saving-photos.md => 3-saving-photos.mdx} | 0 ...loading-photos.md => 4-loading-photos.mdx} | 0 ...5-adding-mobile.md => 5-adding-mobile.mdx} | 4 ++-- ...oying-mobile.md => 6-deploying-mobile.mdx} | 0 .../{7-live-reload.md => 7-live-reload.mdx} | 4 ++-- .../vue/your-first-app/8-distribute.mdx | 2 +- docusaurus.config.js | 11 ++++++---- ...add-to-existing.md => add-to-existing.mdx} | 10 ++++----- .../{build-options.md => build-options.mdx} | 0 ...jection-tokens.md => injection-tokens.mdx} | 0 .../angular/{lifecycle.md => lifecycle.mdx} | 0 .../angular/{navigation.md => navigation.mdx} | 2 +- .../angular/{overlays.md => overlays.mdx} | 0 .../angular/{overview.md => overview.mdx} | 0 .../{performance.md => performance.mdx} | 0 .../angular/{platform.md => platform.mdx} | 0 .../version-v8/angular/{pwa.md => pwa.mdx} | 0 .../angular/{quickstart.md => quickstart.mdx} | 14 ++++++------ .../angular/{slides.md => slides.mdx} | 0 .../angular/{storage.md => storage.mdx} | 0 .../angular/{testing.md => testing.mdx} | 0 .../{virtual-scroll.md => virtual-scroll.mdx} | 0 .../{your-first-app.md => your-first-app.mdx} | 10 ++++----- ...2-taking-photos.md => 2-taking-photos.mdx} | 2 +- ...3-saving-photos.md => 3-saving-photos.mdx} | 0 ...loading-photos.md => 4-loading-photos.mdx} | 0 ...5-adding-mobile.md => 5-adding-mobile.mdx} | 4 ++-- ...oying-mobile.md => 6-deploying-mobile.mdx} | 0 .../{7-live-reload.md => 7-live-reload.mdx} | 4 ++-- .../{8-distribute.md => 8-distribute.mdx} | 2 +- versioned_docs/version-v8/{api.md => api.mdx} | 0 ...accordion-group.md => accordion-group.mdx} | 0 .../api/{accordion.md => accordion.mdx} | 0 .../api/{action-sheet.md => action-sheet.mdx} | 0 .../version-v8/api/{alert.md => alert.mdx} | 0 .../version-v8/api/{app.md => app.mdx} | 0 .../version-v8/api/{avatar.md => avatar.mdx} | 0 .../api/{back-button.md => back-button.mdx} | 0 .../api/{backdrop.md => backdrop.mdx} | 0 .../version-v8/api/{badge.md => badge.mdx} | 0 .../api/{breadcrumb.md => breadcrumb.mdx} | 0 .../api/{breadcrumbs.md => breadcrumbs.mdx} | 0 .../version-v8/api/{button.md => button.mdx} | 0 .../api/{buttons.md => buttons.mdx} | 0 .../api/{card-content.md => card-content.mdx} | 0 .../api/{card-header.md => card-header.mdx} | 0 .../{card-subtitle.md => card-subtitle.mdx} | 0 .../api/{card-title.md => card-title.mdx} | 0 .../version-v8/api/{card.md => card.mdx} | 0 .../api/{checkbox.md => checkbox.mdx} | 0 .../version-v8/api/{chip.md => chip.mdx} | 0 .../version-v8/api/{col.md => col.mdx} | 0 .../api/{content.md => content.mdx} | 2 +- ...datetime-button.md => datetime-button.mdx} | 0 .../api/{datetime.md => datetime.mdx} | 0 .../api/{fab-button.md => fab-button.mdx} | 0 .../api/{fab-list.md => fab-list.mdx} | 0 .../version-v8/api/{fab.md => fab.mdx} | 0 .../version-v8/api/{footer.md => footer.mdx} | 0 .../version-v8/api/{grid.md => grid.mdx} | 4 ++-- .../version-v8/api/{header.md => header.mdx} | 0 .../version-v8/api/{icon.md => icon.mdx} | 0 .../version-v8/api/{img.md => img.mdx} | 0 ...content.md => infinite-scroll-content.mdx} | 2 +- ...infinite-scroll.md => infinite-scroll.mdx} | 0 .../api/{input-otp.md => input-otp.mdx} | 0 ...rd-toggle.md => input-password-toggle.mdx} | 0 .../version-v8/api/{input.md => input.mdx} | 4 ++-- .../api/{item-divider.md => item-divider.mdx} | 0 .../api/{item-group.md => item-group.mdx} | 0 .../api/{item-option.md => item-option.mdx} | 0 .../api/{item-options.md => item-options.mdx} | 0 .../api/{item-sliding.md => item-sliding.mdx} | 0 .../version-v8/api/{item.md => item.mdx} | 0 .../version-v8/api/{label.md => label.mdx} | 2 +- .../api/{list-header.md => list-header.mdx} | 0 .../version-v8/api/{list.md => list.mdx} | 0 .../api/{loading.md => loading.mdx} | 0 .../api/{menu-button.md => menu-button.mdx} | 0 .../api/{menu-toggle.md => menu-toggle.mdx} | 0 .../version-v8/api/{menu.md => menu.mdx} | 0 .../version-v8/api/{modal.md => modal.mdx} | 0 .../api/{nav-link.md => nav-link.mdx} | 0 .../version-v8/api/{nav.md => nav.mdx} | 0 .../version-v8/api/{note.md => note.mdx} | 0 ...umn-option.md => picker-column-option.mdx} | 2 +- .../{picker-column.md => picker-column.mdx} | 2 +- .../{picker-legacy.md => picker-legacy.mdx} | 2 +- .../version-v8/api/{picker.md => picker.mdx} | 0 .../api/{popover.md => popover.mdx} | 0 .../api/{progress-bar.md => progress-bar.mdx} | 0 .../api/{radio-group.md => radio-group.mdx} | 0 .../version-v8/api/{radio.md => radio.mdx} | 0 .../version-v8/api/{range.md => range.mdx} | 0 ...esher-content.md => refresher-content.mdx} | 0 .../api/{refresher.md => refresher.mdx} | 0 .../{reorder-group.md => reorder-group.mdx} | 0 .../api/{reorder.md => reorder.mdx} | 0 .../{ripple-effect.md => ripple-effect.mdx} | 0 .../{route-redirect.md => route-redirect.mdx} | 2 +- .../version-v8/api/{route.md => route.mdx} | 2 +- .../api/{router-link.md => router-link.mdx} | 0 .../{router-outlet.md => router-outlet.mdx} | 0 .../version-v8/api/{router.md => router.mdx} | 0 .../version-v8/api/{row.md => row.mdx} | 0 .../api/{searchbar.md => searchbar.mdx} | 0 .../{segment-button.md => segment-button.mdx} | 2 +- ...segment-content.md => segment-content.mdx} | 4 ++-- .../api/{segment-view.md => segment-view.mdx} | 4 ++-- .../api/{segment.md => segment.mdx} | 2 +- .../{select-option.md => select-option.mdx} | 0 .../version-v8/api/{select.md => select.mdx} | 18 +++++++-------- .../{skeleton-text.md => skeleton-text.mdx} | 0 .../api/{spinner.md => spinner.mdx} | 0 .../api/{split-pane.md => split-pane.mdx} | 0 .../api/{tab-bar.md => tab-bar.mdx} | 2 +- .../api/{tab-button.md => tab-button.mdx} | 4 ++-- .../version-v8/api/{tab.md => tab.mdx} | 8 +++---- .../version-v8/api/{tabs.md => tabs.mdx} | 2 +- .../version-v8/api/{text.md => text.mdx} | 0 .../api/{textarea.md => textarea.mdx} | 4 ++-- .../api/{thumbnail.md => thumbnail.mdx} | 0 .../version-v8/api/{title.md => title.mdx} | 2 +- .../version-v8/api/{toast.md => toast.mdx} | 4 ++-- .../version-v8/api/{toggle.md => toggle.mdx} | 0 .../api/{toolbar.md => toolbar.mdx} | 0 versioned_docs/version-v8/{cli.md => cli.mdx} | 0 .../version-v8/cli/configuration.mdx | 4 ++-- .../version-v8/cli/livereload.mdx | 2 +- .../{using-a-proxy.md => using-a-proxy.mdx} | 0 .../{components.md => components.mdx} | 2 +- .../contributing/{coc.md => coc.mdx} | 0 .../contributing/how-to-contribute.mdx | 2 +- .../core-concepts/cross-platform.mdx | 6 ++--- .../{fundamentals.md => fundamentals.mdx} | 10 ++++----- .../core-concepts/{webview.md => webview.mdx} | 8 +++---- ...s.md => what-are-progressive-web-apps.mdx} | 0 .../{app-store.md => app-store.mdx} | 0 ...ive-web-app.md => progressive-web-app.mdx} | 2 +- .../{courses.md => courses.mdx} | 0 .../{guides.md => guides.mdx} | 4 ++-- ...creating-photo-gallery-device-storage.mdx} | 0 .../first-app-v3/{intro.md => intro.mdx} | 0 ...droid-camera.md => ios-android-camera.mdx} | 0 ...y.md => realtime-updates-ionic-deploy.mdx} | 6 ++--- .../first-app-v3/{theming.md => theming.mdx} | 0 ...ing.md => track-bugs-ionic-monitoring.mdx} | 0 ...creating-photo-gallery-device-storage.mdx} | 0 .../first-app-v4/{intro.md => intro.mdx} | 2 +- ...droid-camera.md => ios-android-camera.mdx} | 2 +- .../guides/first-app-v4/theming.mdx | 2 +- .../{posts.md => posts.mdx} | 0 .../version-v8/developer-resources/tools.mdx | 2 +- .../{videos.md => videos.mdx} | 0 .../developing/{android.md => android.mdx} | 0 .../developing/{config.md => config.mdx} | 10 ++++----- .../config/global/{index.md => index.mdx} | 0 .../per-component/{index.md => index.mdx} | 0 .../{index.md => index.mdx} | 0 .../{index.md => index.mdx} | 0 .../per-platform/{index.md => index.mdx} | 0 ...ack-button.md => hardware-back-button.mdx} | 2 +- .../version-v8/developing/{ios.md => ios.mdx} | 0 .../developing/{keyboard.md => keyboard.mdx} | 0 .../{managing-focus.md => managing-focus.mdx} | 0 .../{previewing.md => previewing.mdx} | 10 ++++----- .../{scaffolding.md => scaffolding.mdx} | 0 .../developing/{starting.md => starting.mdx} | 0 .../developing/{tips.md => tips.mdx} | 2 +- .../version-v8/{index.md => index.mdx} | 12 +++++----- .../version-v8/intro/cdn.mdx | 2 +- .../version-v8/intro/cli.mdx | 10 ++++----- .../intro/{environment.md => environment.mdx} | 8 +++---- .../intro/{first-app.md => first-app.mdx} | 0 .../version-v8/intro/{next.md => next.mdx} | 0 ...code-extension.md => vscode-extension.mdx} | 0 .../javascript/{overview.md => overview.mdx} | 0 .../version-v8/javascript/quickstart.mdx | 12 +++++----- .../version-v8/layout/css-utilities.mdx | 6 ++--- ...nt-scaling.md => dynamic-font-scaling.mdx} | 0 .../version-v8/layout/global-stylesheets.mdx | 14 ++++++------ .../layout/{structure.md => structure.mdx} | 10 ++++----- .../{native-faq.md => native-faq.mdx} | 0 .../{native-setup.md => native-setup.mdx} | 0 .../version-v8/{native.md => native.mdx} | 0 ...add-to-existing.md => add-to-existing.mdx} | 10 ++++----- .../react/{lifecycle.md => lifecycle.mdx} | 0 .../react/{navigation.md => navigation.mdx} | 0 .../react/{overlays.md => overlays.mdx} | 0 .../react/{overview.md => overview.mdx} | 0 .../react/{performance.md => performance.mdx} | 0 .../react/{platform.md => platform.mdx} | 0 .../version-v8/react/{pwa.md => pwa.mdx} | 0 .../react/{quickstart.md => quickstart.mdx} | 14 ++++++------ .../react/{slides.md => slides.mdx} | 0 .../react/{storage.md => storage.mdx} | 0 .../{introduction.md => introduction.mdx} | 0 .../{best-practices.md => best-practices.mdx} | 0 .../{examples.md => examples.mdx} | 0 .../unit-testing/{setup.md => setup.mdx} | 0 .../{virtual-scroll.md => virtual-scroll.mdx} | 0 .../{your-first-app.md => your-first-app.mdx} | 8 +++---- ...2-taking-photos.md => 2-taking-photos.mdx} | 2 +- ...3-saving-photos.md => 3-saving-photos.mdx} | 0 ...loading-photos.md => 4-loading-photos.mdx} | 0 ...5-adding-mobile.md => 5-adding-mobile.mdx} | 2 +- ...oying-mobile.md => 6-deploying-mobile.mdx} | 0 .../{7-live-reload.md => 7-live-reload.mdx} | 4 ++-- .../react/your-first-app/8-distribute.mdx | 2 +- ...browser-support.md => browser-support.mdx} | 2 +- .../reference/{glossary.md => glossary.mdx} | 0 .../{release-notes.md => release-notes.mdx} | 0 .../reference/{support.md => support.mdx} | 4 ++-- .../{versioning.md => versioning.mdx} | 0 .../techniques/{security.md => security.mdx} | 0 versioned_docs/version-v8/test/page1.md | 3 --- versioned_docs/version-v8/test/page1.mdx | 3 +++ versioned_docs/version-v8/test/page2.md | 3 --- versioned_docs/version-v8/test/page2.mdx | 3 +++ .../theming/{advanced.md => advanced.mdx} | 8 +++---- .../theming/{basics.md => basics.mdx} | 10 ++++----- ...color-generator.md => color-generator.mdx} | 0 .../theming/{colors.md => colors.mdx} | 8 +++---- ...s-shadow-parts.md => css-shadow-parts.mdx} | 10 ++++----- .../version-v8/theming/css-variables.mdx | 4 ++-- .../theming/{dark-mode.md => dark-mode.mdx} | 12 +++++----- ...ontrast-mode.md => high-contrast-mode.mdx} | 16 +++++++------- .../version-v8/theming/platform-styles.mdx | 6 ++--- .../version-v8/theming/themes.mdx | 2 +- .../troubleshooting/{build.md => build.mdx} | 0 .../troubleshooting/{cors.md => cors.mdx} | 0 .../{debugging.md => debugging.mdx} | 2 +- .../version-v8/troubleshooting/native.mdx | 4 ++-- .../{runtime.md => runtime.mdx} | 0 .../version-v8/updating/{4-0.md => 4-0.mdx} | 12 +++++----- .../version-v8/updating/{5-0.md => 5-0.mdx} | 0 .../version-v8/updating/{6-0.md => 6-0.mdx} | 0 .../version-v8/updating/{7-0.md => 7-0.mdx} | 0 .../version-v8/updating/{8-0.md => 8-0.mdx} | 0 .../{animations.md => animations.mdx} | 2 +- .../utilities/{gestures.md => gestures.mdx} | 2 +- .../version-v8/vue/add-to-existing.mdx | 10 ++++----- .../{build-options.md => build-options.mdx} | 0 .../vue/{lifecycle.md => lifecycle.mdx} | 0 .../vue/{navigation.md => navigation.mdx} | 0 .../vue/{overview.md => overview.mdx} | 2 +- .../vue/{performance.md => performance.mdx} | 0 .../vue/{platform.md => platform.mdx} | 0 .../version-v8/vue/{pwa.md => pwa.mdx} | 0 .../version-v8/vue/quickstart.mdx | 14 ++++++------ .../version-v8/vue/{slides.md => slides.mdx} | 0 .../vue/{storage.md => storage.mdx} | 0 .../vue/{testing.md => testing.mdx} | 0 ...troubleshooting.md => troubleshooting.mdx} | 6 ++--- ...ity-functions.md => utility-functions.mdx} | 0 .../{virtual-scroll.md => virtual-scroll.mdx} | 0 .../{your-first-app.md => your-first-app.mdx} | 8 +++---- ...2-taking-photos.md => 2-taking-photos.mdx} | 2 +- ...3-saving-photos.md => 3-saving-photos.mdx} | 0 ...loading-photos.md => 4-loading-photos.mdx} | 0 ...5-adding-mobile.md => 5-adding-mobile.mdx} | 4 ++-- ...oying-mobile.md => 6-deploying-mobile.mdx} | 0 .../{7-live-reload.md => 7-live-reload.mdx} | 4 ++-- .../vue/your-first-app/8-distribute.mdx | 2 +- 517 files changed, 513 insertions(+), 510 deletions(-) rename docs/angular/{add-to-existing.md => add-to-existing.mdx} (92%) rename docs/angular/{build-options.md => build-options.mdx} (100%) rename docs/angular/{injection-tokens.md => injection-tokens.mdx} (100%) rename docs/angular/{lifecycle.md => lifecycle.mdx} (100%) rename docs/angular/{navigation.md => navigation.mdx} (99%) rename docs/angular/{overlays.md => overlays.mdx} (100%) rename docs/angular/{overview.md => overview.mdx} (100%) rename docs/angular/{performance.md => performance.mdx} (100%) rename docs/angular/{platform.md => platform.mdx} (100%) rename docs/angular/{pwa.md => pwa.mdx} (100%) rename docs/angular/{quickstart.md => quickstart.mdx} (94%) rename docs/angular/{slides.md => slides.mdx} (100%) rename docs/angular/{storage.md => storage.mdx} (100%) rename docs/angular/{testing.md => testing.mdx} (100%) rename docs/angular/{virtual-scroll.md => virtual-scroll.mdx} (100%) rename docs/angular/{your-first-app.md => your-first-app.mdx} (95%) rename docs/angular/your-first-app/{2-taking-photos.md => 2-taking-photos.mdx} (95%) rename docs/angular/your-first-app/{3-saving-photos.md => 3-saving-photos.mdx} (100%) rename docs/angular/your-first-app/{4-loading-photos.md => 4-loading-photos.mdx} (100%) rename docs/angular/your-first-app/{5-adding-mobile.md => 5-adding-mobile.mdx} (95%) rename docs/angular/your-first-app/{6-deploying-mobile.md => 6-deploying-mobile.mdx} (100%) rename docs/angular/your-first-app/{7-live-reload.md => 7-live-reload.mdx} (96%) rename docs/angular/your-first-app/{8-distribute.md => 8-distribute.mdx} (97%) rename docs/angular/{zoneless.md => zoneless.mdx} (98%) rename docs/{api.md => api.mdx} (100%) rename docs/api/{accordion-group.md => accordion-group.mdx} (100%) rename docs/api/{accordion.md => accordion.mdx} (100%) rename docs/api/{action-sheet.md => action-sheet.mdx} (100%) rename docs/api/{alert.md => alert.mdx} (100%) rename docs/api/{app.md => app.mdx} (100%) rename docs/api/{avatar.md => avatar.mdx} (100%) rename docs/api/{back-button.md => back-button.mdx} (100%) rename docs/api/{backdrop.md => backdrop.mdx} (100%) rename docs/api/{badge.md => badge.mdx} (100%) rename docs/api/{breadcrumb.md => breadcrumb.mdx} (100%) rename docs/api/{breadcrumbs.md => breadcrumbs.mdx} (100%) rename docs/api/{button.md => button.mdx} (100%) rename docs/api/{buttons.md => buttons.mdx} (100%) rename docs/api/{card-content.md => card-content.mdx} (100%) rename docs/api/{card-header.md => card-header.mdx} (100%) rename docs/api/{card-subtitle.md => card-subtitle.mdx} (100%) rename docs/api/{card-title.md => card-title.mdx} (100%) rename docs/api/{card.md => card.mdx} (100%) rename docs/api/{checkbox.md => checkbox.mdx} (100%) rename docs/api/{chip.md => chip.mdx} (100%) rename docs/api/{col.md => col.mdx} (100%) rename docs/api/{content.md => content.mdx} (98%) rename docs/api/{datetime-button.md => datetime-button.mdx} (100%) rename docs/api/{datetime.md => datetime.mdx} (100%) rename docs/api/{fab-button.md => fab-button.mdx} (100%) rename docs/api/{fab-list.md => fab-list.mdx} (100%) rename docs/api/{fab.md => fab.mdx} (100%) rename docs/api/{footer.md => footer.mdx} (100%) rename docs/api/{grid.md => grid.mdx} (97%) rename docs/api/{header.md => header.mdx} (100%) rename docs/api/{icon.md => icon.mdx} (100%) rename docs/api/{img.md => img.mdx} (94%) rename docs/api/{infinite-scroll-content.md => infinite-scroll-content.mdx} (94%) rename docs/api/{infinite-scroll.md => infinite-scroll.mdx} (100%) rename docs/api/{input-otp.md => input-otp.mdx} (100%) rename docs/api/{input-password-toggle.md => input-password-toggle.mdx} (100%) rename docs/api/{input.md => input.mdx} (96%) rename docs/api/{item-divider.md => item-divider.mdx} (100%) rename docs/api/{item-group.md => item-group.mdx} (100%) rename docs/api/{item-option.md => item-option.mdx} (100%) rename docs/api/{item-options.md => item-options.mdx} (100%) rename docs/api/{item-sliding.md => item-sliding.mdx} (100%) rename docs/api/{item.md => item.mdx} (100%) rename docs/api/{label.md => label.mdx} (88%) rename docs/api/{list-header.md => list-header.mdx} (100%) rename docs/api/{list.md => list.mdx} (100%) rename docs/api/{loading.md => loading.mdx} (100%) rename docs/api/{menu-button.md => menu-button.mdx} (100%) rename docs/api/{menu-toggle.md => menu-toggle.mdx} (100%) rename docs/api/{menu.md => menu.mdx} (100%) rename docs/api/{modal.md => modal.mdx} (100%) rename docs/api/{nav-link.md => nav-link.mdx} (100%) rename docs/api/{nav.md => nav.mdx} (100%) rename docs/api/{note.md => note.mdx} (100%) rename docs/api/{picker-column-option.md => picker-column-option.mdx} (95%) rename docs/api/{picker-column.md => picker-column.mdx} (95%) rename docs/api/{picker.md => picker.mdx} (100%) rename docs/api/{popover.md => popover.mdx} (100%) rename docs/api/{progress-bar.md => progress-bar.mdx} (100%) rename docs/api/{radio-group.md => radio-group.mdx} (100%) rename docs/api/{radio.md => radio.mdx} (100%) rename docs/api/{range.md => range.mdx} (100%) rename docs/api/{refresher-content.md => refresher-content.mdx} (100%) rename docs/api/{refresher.md => refresher.mdx} (100%) rename docs/api/{reorder-group.md => reorder-group.mdx} (100%) rename docs/api/{reorder.md => reorder.mdx} (100%) rename docs/api/{ripple-effect.md => ripple-effect.mdx} (100%) rename docs/api/{route-redirect.md => route-redirect.mdx} (98%) rename docs/api/{route.md => route.mdx} (99%) rename docs/api/{router-link.md => router-link.mdx} (100%) rename docs/api/{router-outlet.md => router-outlet.mdx} (100%) rename docs/api/{router.md => router.mdx} (91%) rename docs/api/{row.md => row.mdx} (100%) rename docs/api/{searchbar.md => searchbar.mdx} (100%) rename docs/api/{segment-button.md => segment-button.mdx} (90%) rename docs/api/{segment-content.md => segment-content.mdx} (87%) rename docs/api/{segment-view.md => segment-view.mdx} (82%) rename docs/api/{segment.md => segment.mdx} (97%) rename docs/api/{select-option.md => select-option.mdx} (100%) rename docs/api/{select.md => select.mdx} (91%) rename docs/api/{skeleton-text.md => skeleton-text.mdx} (100%) rename docs/api/{spinner.md => spinner.mdx} (100%) rename docs/api/{split-pane.md => split-pane.mdx} (100%) rename docs/api/{tab-bar.md => tab-bar.mdx} (97%) rename docs/api/{tab-button.md => tab-button.mdx} (96%) rename docs/api/{tab.md => tab.mdx} (67%) rename docs/api/{tabs.md => tabs.mdx} (97%) rename docs/api/{text.md => text.mdx} (100%) rename docs/api/{textarea.md => textarea.mdx} (95%) rename docs/api/{thumbnail.md => thumbnail.mdx} (100%) rename docs/api/{title.md => title.mdx} (96%) rename docs/api/{toast.md => toast.mdx} (96%) rename docs/api/{toggle.md => toggle.mdx} (100%) rename docs/api/{toolbar.md => toolbar.mdx} (100%) rename docs/{cli.md => cli.mdx} (100%) rename versioned_docs/version-v8/cli/configuration.md => docs/cli/configuration.mdx (98%) rename versioned_docs/version-v8/cli/livereload.md => docs/cli/livereload.mdx (96%) rename docs/cli/{using-a-proxy.md => using-a-proxy.mdx} (100%) rename docs/{components.md => components.mdx} (99%) rename docs/contributing/{coc.md => coc.mdx} (100%) rename versioned_docs/version-v8/contributing/how-to-contribute.md => docs/contributing/how-to-contribute.mdx (99%) rename versioned_docs/version-v8/core-concepts/cross-platform.md => docs/core-concepts/cross-platform.mdx (93%) rename docs/core-concepts/{fundamentals.md => fundamentals.mdx} (84%) rename docs/core-concepts/{webview.md => webview.mdx} (80%) rename docs/core-concepts/{what-are-progressive-web-apps.md => what-are-progressive-web-apps.mdx} (100%) rename docs/deployment/{app-store.md => app-store.mdx} (100%) rename docs/deployment/{progressive-web-app.md => progressive-web-app.mdx} (94%) rename docs/developer-resources/{courses.md => courses.mdx} (100%) rename docs/developer-resources/{guides.md => guides.mdx} (76%) rename docs/developer-resources/guides/first-app-v3/{creating-photo-gallery-device-storage.md => creating-photo-gallery-device-storage.mdx} (100%) rename docs/developer-resources/guides/first-app-v3/{intro.md => intro.mdx} (100%) rename docs/developer-resources/guides/first-app-v3/{ios-android-camera.md => ios-android-camera.mdx} (100%) rename docs/developer-resources/guides/first-app-v3/{realtime-updates-ionic-deploy.md => realtime-updates-ionic-deploy.mdx} (94%) rename docs/developer-resources/guides/first-app-v3/{theming.md => theming.mdx} (100%) rename docs/developer-resources/guides/first-app-v3/{track-bugs-ionic-monitoring.md => track-bugs-ionic-monitoring.mdx} (100%) rename docs/developer-resources/guides/first-app-v4/{creating-photo-gallery-device-storage.md => creating-photo-gallery-device-storage.mdx} (100%) rename docs/developer-resources/guides/first-app-v4/{intro.md => intro.mdx} (98%) rename docs/developer-resources/guides/first-app-v4/{ios-android-camera.md => ios-android-camera.mdx} (98%) rename versioned_docs/version-v8/developer-resources/guides/first-app-v4/theming.md => docs/developer-resources/guides/first-app-v4/theming.mdx (92%) rename docs/developer-resources/{posts.md => posts.mdx} (100%) rename versioned_docs/version-v8/developer-resources/tools.md => docs/developer-resources/tools.mdx (92%) rename docs/developer-resources/{videos.md => videos.mdx} (100%) rename docs/developing/{android.md => android.mdx} (100%) rename docs/developing/{config.md => config.mdx} (99%) rename docs/developing/config/global/{index.md => index.mdx} (100%) rename docs/developing/config/per-component/{index.md => index.mdx} (100%) rename docs/developing/config/per-platform-fallback/{index.md => index.mdx} (100%) rename docs/developing/config/per-platform-overrides/{index.md => index.mdx} (100%) rename docs/developing/config/per-platform/{index.md => index.mdx} (100%) rename docs/developing/{hardware-back-button.md => hardware-back-button.mdx} (97%) rename docs/developing/{ios.md => ios.mdx} (100%) rename docs/developing/{keyboard.md => keyboard.mdx} (100%) rename docs/developing/{managing-focus.md => managing-focus.mdx} (100%) rename docs/developing/{previewing.md => previewing.mdx} (94%) rename docs/developing/{scaffolding.md => scaffolding.mdx} (100%) rename docs/developing/{starting.md => starting.mdx} (100%) rename docs/developing/{tips.md => tips.mdx} (98%) rename docs/{index.md => index.mdx} (86%) rename versioned_docs/version-v8/intro/cdn.md => docs/intro/cdn.mdx (99%) rename versioned_docs/version-v8/intro/cli.md => docs/intro/cli.mdx (79%) rename docs/intro/{environment.md => environment.mdx} (86%) rename docs/intro/{first-app.md => first-app.mdx} (100%) rename docs/intro/{next.md => next.mdx} (100%) rename docs/intro/{vscode-extension.md => vscode-extension.mdx} (100%) rename docs/javascript/{overview.md => overview.mdx} (100%) rename versioned_docs/version-v8/javascript/quickstart.md => docs/javascript/quickstart.mdx (95%) rename versioned_docs/version-v8/layout/css-utilities.md => docs/layout/css-utilities.mdx (99%) rename docs/layout/{dynamic-font-scaling.md => dynamic-font-scaling.mdx} (100%) rename versioned_docs/version-v8/layout/global-stylesheets.md => docs/layout/global-stylesheets.mdx (81%) rename docs/layout/{structure.md => structure.mdx} (66%) rename docs/{native-faq.md => native-faq.mdx} (100%) rename docs/{native-setup.md => native-setup.mdx} (100%) rename docs/{native.md => native.mdx} (100%) rename docs/react/{add-to-existing.md => add-to-existing.mdx} (92%) rename docs/react/{lifecycle.md => lifecycle.mdx} (100%) rename docs/react/{navigation.md => navigation.mdx} (98%) rename docs/react/{overlays.md => overlays.mdx} (100%) rename docs/react/{overview.md => overview.mdx} (100%) rename docs/react/{performance.md => performance.mdx} (100%) rename docs/react/{platform.md => platform.mdx} (100%) rename docs/react/{pwa.md => pwa.mdx} (100%) rename docs/react/{quickstart.md => quickstart.mdx} (93%) rename docs/react/{slides.md => slides.mdx} (100%) rename docs/react/{storage.md => storage.mdx} (100%) rename docs/react/testing/{introduction.md => introduction.mdx} (100%) rename docs/react/testing/unit-testing/{best-practices.md => best-practices.mdx} (100%) rename docs/react/testing/unit-testing/{examples.md => examples.mdx} (100%) rename docs/react/testing/unit-testing/{setup.md => setup.mdx} (100%) rename docs/react/{utility-functions.md => utility-functions.mdx} (98%) rename docs/react/{virtual-scroll.md => virtual-scroll.mdx} (100%) rename docs/react/{your-first-app.md => your-first-app.mdx} (96%) rename docs/react/your-first-app/{2-taking-photos.md => 2-taking-photos.mdx} (96%) rename docs/react/your-first-app/{3-saving-photos.md => 3-saving-photos.mdx} (100%) rename docs/react/your-first-app/{4-loading-photos.md => 4-loading-photos.mdx} (100%) rename docs/react/your-first-app/{5-adding-mobile.md => 5-adding-mobile.mdx} (96%) rename docs/react/your-first-app/{6-deploying-mobile.md => 6-deploying-mobile.mdx} (100%) rename docs/react/your-first-app/{7-live-reload.md => 7-live-reload.mdx} (95%) rename versioned_docs/version-v8/react/your-first-app/8-distribute.md => docs/react/your-first-app/8-distribute.mdx (97%) rename docs/reference/{browser-support.md => browser-support.mdx} (96%) rename docs/reference/{glossary.md => glossary.mdx} (100%) rename docs/reference/{release-notes.md => release-notes.mdx} (100%) rename docs/reference/{support.md => support.mdx} (98%) rename docs/reference/{versioning.md => versioning.mdx} (100%) rename docs/techniques/{security.md => security.mdx} (99%) delete mode 100644 docs/test/page1.md create mode 100644 docs/test/page1.mdx delete mode 100644 docs/test/page2.md create mode 100644 docs/test/page2.mdx rename docs/theming/{advanced.md => advanced.mdx} (96%) rename docs/theming/{basics.md => basics.mdx} (88%) rename docs/theming/{color-generator.md => color-generator.mdx} (100%) rename docs/theming/{colors.md => colors.mdx} (89%) rename docs/theming/{css-shadow-parts.md => css-shadow-parts.mdx} (92%) rename versioned_docs/version-v8/theming/css-variables.md => docs/theming/css-variables.mdx (93%) rename docs/theming/{dark-mode.md => dark-mode.mdx} (92%) rename docs/theming/{high-contrast-mode.md => high-contrast-mode.mdx} (83%) rename versioned_docs/version-v8/theming/platform-styles.md => docs/theming/platform-styles.mdx (89%) rename versioned_docs/version-v8/theming/themes.md => docs/theming/themes.mdx (98%) rename docs/troubleshooting/{build.md => build.mdx} (100%) rename docs/troubleshooting/{cors.md => cors.mdx} (100%) rename docs/troubleshooting/{debugging.md => debugging.mdx} (99%) rename versioned_docs/version-v8/troubleshooting/native.md => docs/troubleshooting/native.mdx (97%) rename docs/troubleshooting/{runtime.md => runtime.mdx} (100%) rename docs/updating/{4-0.md => 4-0.mdx} (96%) rename docs/updating/{5-0.md => 5-0.mdx} (100%) rename docs/updating/{6-0.md => 6-0.mdx} (100%) rename docs/updating/{7-0.md => 7-0.mdx} (100%) rename docs/updating/{8-0.md => 8-0.mdx} (100%) rename docs/updating/{9-0.md => 9-0.mdx} (99%) rename docs/utilities/{animations.md => animations.mdx} (99%) rename docs/utilities/{gestures.md => gestures.mdx} (99%) rename versioned_docs/version-v8/vue/add-to-existing.md => docs/vue/add-to-existing.mdx (92%) rename docs/vue/{build-options.md => build-options.mdx} (100%) rename docs/vue/{lifecycle.md => lifecycle.mdx} (100%) rename docs/vue/{navigation.md => navigation.mdx} (100%) rename docs/vue/{overview.md => overview.mdx} (92%) rename docs/vue/{performance.md => performance.mdx} (100%) rename docs/vue/{platform.md => platform.mdx} (100%) rename docs/vue/{pwa.md => pwa.mdx} (100%) rename versioned_docs/version-v8/vue/quickstart.md => docs/vue/quickstart.mdx (93%) rename docs/vue/{slides.md => slides.mdx} (100%) rename docs/vue/{storage.md => storage.mdx} (100%) rename docs/vue/{testing.md => testing.mdx} (100%) rename docs/vue/{troubleshooting.md => troubleshooting.mdx} (93%) rename docs/vue/{utility-functions.md => utility-functions.mdx} (100%) rename docs/vue/{virtual-scroll.md => virtual-scroll.mdx} (100%) rename docs/vue/{your-first-app.md => your-first-app.mdx} (96%) rename docs/vue/your-first-app/{2-taking-photos.md => 2-taking-photos.mdx} (96%) rename docs/vue/your-first-app/{3-saving-photos.md => 3-saving-photos.mdx} (100%) rename docs/vue/your-first-app/{4-loading-photos.md => 4-loading-photos.mdx} (100%) rename docs/vue/your-first-app/{5-adding-mobile.md => 5-adding-mobile.mdx} (95%) rename docs/vue/your-first-app/{6-deploying-mobile.md => 6-deploying-mobile.mdx} (100%) rename docs/vue/your-first-app/{7-live-reload.md => 7-live-reload.mdx} (95%) rename versioned_docs/version-v8/vue/your-first-app/8-distribute.md => docs/vue/your-first-app/8-distribute.mdx (97%) rename versioned_docs/version-v8/angular/{add-to-existing.md => add-to-existing.mdx} (92%) rename versioned_docs/version-v8/angular/{build-options.md => build-options.mdx} (100%) rename versioned_docs/version-v8/angular/{injection-tokens.md => injection-tokens.mdx} (100%) rename versioned_docs/version-v8/angular/{lifecycle.md => lifecycle.mdx} (100%) rename versioned_docs/version-v8/angular/{navigation.md => navigation.mdx} (99%) rename versioned_docs/version-v8/angular/{overlays.md => overlays.mdx} (100%) rename versioned_docs/version-v8/angular/{overview.md => overview.mdx} (100%) rename versioned_docs/version-v8/angular/{performance.md => performance.mdx} (100%) rename versioned_docs/version-v8/angular/{platform.md => platform.mdx} (100%) rename versioned_docs/version-v8/angular/{pwa.md => pwa.mdx} (100%) rename versioned_docs/version-v8/angular/{quickstart.md => quickstart.mdx} (94%) rename versioned_docs/version-v8/angular/{slides.md => slides.mdx} (100%) rename versioned_docs/version-v8/angular/{storage.md => storage.mdx} (100%) rename versioned_docs/version-v8/angular/{testing.md => testing.mdx} (100%) rename versioned_docs/version-v8/angular/{virtual-scroll.md => virtual-scroll.mdx} (100%) rename versioned_docs/version-v8/angular/{your-first-app.md => your-first-app.mdx} (95%) rename versioned_docs/version-v8/angular/your-first-app/{2-taking-photos.md => 2-taking-photos.mdx} (96%) rename versioned_docs/version-v8/angular/your-first-app/{3-saving-photos.md => 3-saving-photos.mdx} (100%) rename versioned_docs/version-v8/angular/your-first-app/{4-loading-photos.md => 4-loading-photos.mdx} (100%) rename versioned_docs/version-v8/angular/your-first-app/{5-adding-mobile.md => 5-adding-mobile.mdx} (95%) rename versioned_docs/version-v8/angular/your-first-app/{6-deploying-mobile.md => 6-deploying-mobile.mdx} (100%) rename versioned_docs/version-v8/angular/your-first-app/{7-live-reload.md => 7-live-reload.mdx} (94%) rename versioned_docs/version-v8/angular/your-first-app/{8-distribute.md => 8-distribute.mdx} (97%) rename versioned_docs/version-v8/{api.md => api.mdx} (100%) rename versioned_docs/version-v8/api/{accordion-group.md => accordion-group.mdx} (100%) rename versioned_docs/version-v8/api/{accordion.md => accordion.mdx} (100%) rename versioned_docs/version-v8/api/{action-sheet.md => action-sheet.mdx} (100%) rename versioned_docs/version-v8/api/{alert.md => alert.mdx} (100%) rename versioned_docs/version-v8/api/{app.md => app.mdx} (100%) rename versioned_docs/version-v8/api/{avatar.md => avatar.mdx} (100%) rename versioned_docs/version-v8/api/{back-button.md => back-button.mdx} (100%) rename versioned_docs/version-v8/api/{backdrop.md => backdrop.mdx} (100%) rename versioned_docs/version-v8/api/{badge.md => badge.mdx} (100%) rename versioned_docs/version-v8/api/{breadcrumb.md => breadcrumb.mdx} (100%) rename versioned_docs/version-v8/api/{breadcrumbs.md => breadcrumbs.mdx} (100%) rename versioned_docs/version-v8/api/{button.md => button.mdx} (100%) rename versioned_docs/version-v8/api/{buttons.md => buttons.mdx} (100%) rename versioned_docs/version-v8/api/{card-content.md => card-content.mdx} (100%) rename versioned_docs/version-v8/api/{card-header.md => card-header.mdx} (100%) rename versioned_docs/version-v8/api/{card-subtitle.md => card-subtitle.mdx} (100%) rename versioned_docs/version-v8/api/{card-title.md => card-title.mdx} (100%) rename versioned_docs/version-v8/api/{card.md => card.mdx} (100%) rename versioned_docs/version-v8/api/{checkbox.md => checkbox.mdx} (100%) rename versioned_docs/version-v8/api/{chip.md => chip.mdx} (100%) rename versioned_docs/version-v8/api/{col.md => col.mdx} (100%) rename versioned_docs/version-v8/api/{content.md => content.mdx} (98%) rename versioned_docs/version-v8/api/{datetime-button.md => datetime-button.mdx} (100%) rename versioned_docs/version-v8/api/{datetime.md => datetime.mdx} (100%) rename versioned_docs/version-v8/api/{fab-button.md => fab-button.mdx} (100%) rename versioned_docs/version-v8/api/{fab-list.md => fab-list.mdx} (100%) rename versioned_docs/version-v8/api/{fab.md => fab.mdx} (100%) rename versioned_docs/version-v8/api/{footer.md => footer.mdx} (100%) rename versioned_docs/version-v8/api/{grid.md => grid.mdx} (97%) rename versioned_docs/version-v8/api/{header.md => header.mdx} (100%) rename versioned_docs/version-v8/api/{icon.md => icon.mdx} (100%) rename versioned_docs/version-v8/api/{img.md => img.mdx} (100%) rename versioned_docs/version-v8/api/{infinite-scroll-content.md => infinite-scroll-content.mdx} (94%) rename versioned_docs/version-v8/api/{infinite-scroll.md => infinite-scroll.mdx} (100%) rename versioned_docs/version-v8/api/{input-otp.md => input-otp.mdx} (100%) rename versioned_docs/version-v8/api/{input-password-toggle.md => input-password-toggle.mdx} (100%) rename versioned_docs/version-v8/api/{input.md => input.mdx} (96%) rename versioned_docs/version-v8/api/{item-divider.md => item-divider.mdx} (100%) rename versioned_docs/version-v8/api/{item-group.md => item-group.mdx} (100%) rename versioned_docs/version-v8/api/{item-option.md => item-option.mdx} (100%) rename versioned_docs/version-v8/api/{item-options.md => item-options.mdx} (100%) rename versioned_docs/version-v8/api/{item-sliding.md => item-sliding.mdx} (100%) rename versioned_docs/version-v8/api/{item.md => item.mdx} (100%) rename versioned_docs/version-v8/api/{label.md => label.mdx} (88%) rename versioned_docs/version-v8/api/{list-header.md => list-header.mdx} (100%) rename versioned_docs/version-v8/api/{list.md => list.mdx} (100%) rename versioned_docs/version-v8/api/{loading.md => loading.mdx} (100%) rename versioned_docs/version-v8/api/{menu-button.md => menu-button.mdx} (100%) rename versioned_docs/version-v8/api/{menu-toggle.md => menu-toggle.mdx} (100%) rename versioned_docs/version-v8/api/{menu.md => menu.mdx} (100%) rename versioned_docs/version-v8/api/{modal.md => modal.mdx} (100%) rename versioned_docs/version-v8/api/{nav-link.md => nav-link.mdx} (100%) rename versioned_docs/version-v8/api/{nav.md => nav.mdx} (100%) rename versioned_docs/version-v8/api/{note.md => note.mdx} (100%) rename versioned_docs/version-v8/api/{picker-column-option.md => picker-column-option.mdx} (95%) rename versioned_docs/version-v8/api/{picker-column.md => picker-column.mdx} (95%) rename versioned_docs/version-v8/api/{picker-legacy.md => picker-legacy.mdx} (98%) rename versioned_docs/version-v8/api/{picker.md => picker.mdx} (100%) rename versioned_docs/version-v8/api/{popover.md => popover.mdx} (100%) rename versioned_docs/version-v8/api/{progress-bar.md => progress-bar.mdx} (100%) rename versioned_docs/version-v8/api/{radio-group.md => radio-group.mdx} (100%) rename versioned_docs/version-v8/api/{radio.md => radio.mdx} (100%) rename versioned_docs/version-v8/api/{range.md => range.mdx} (100%) rename versioned_docs/version-v8/api/{refresher-content.md => refresher-content.mdx} (100%) rename versioned_docs/version-v8/api/{refresher.md => refresher.mdx} (100%) rename versioned_docs/version-v8/api/{reorder-group.md => reorder-group.mdx} (100%) rename versioned_docs/version-v8/api/{reorder.md => reorder.mdx} (100%) rename versioned_docs/version-v8/api/{ripple-effect.md => ripple-effect.mdx} (100%) rename versioned_docs/version-v8/api/{route-redirect.md => route-redirect.mdx} (98%) rename versioned_docs/version-v8/api/{route.md => route.mdx} (99%) rename versioned_docs/version-v8/api/{router-link.md => router-link.mdx} (100%) rename versioned_docs/version-v8/api/{router-outlet.md => router-outlet.mdx} (100%) rename versioned_docs/version-v8/api/{router.md => router.mdx} (100%) rename versioned_docs/version-v8/api/{row.md => row.mdx} (100%) rename versioned_docs/version-v8/api/{searchbar.md => searchbar.mdx} (100%) rename versioned_docs/version-v8/api/{segment-button.md => segment-button.mdx} (90%) rename versioned_docs/version-v8/api/{segment-content.md => segment-content.mdx} (87%) rename versioned_docs/version-v8/api/{segment-view.md => segment-view.mdx} (82%) rename versioned_docs/version-v8/api/{segment.md => segment.mdx} (97%) rename versioned_docs/version-v8/api/{select-option.md => select-option.mdx} (100%) rename versioned_docs/version-v8/api/{select.md => select.mdx} (94%) rename versioned_docs/version-v8/api/{skeleton-text.md => skeleton-text.mdx} (100%) rename versioned_docs/version-v8/api/{spinner.md => spinner.mdx} (100%) rename versioned_docs/version-v8/api/{split-pane.md => split-pane.mdx} (100%) rename versioned_docs/version-v8/api/{tab-bar.md => tab-bar.mdx} (97%) rename versioned_docs/version-v8/api/{tab-button.md => tab-button.mdx} (96%) rename versioned_docs/version-v8/api/{tab.md => tab.mdx} (67%) rename versioned_docs/version-v8/api/{tabs.md => tabs.mdx} (97%) rename versioned_docs/version-v8/api/{text.md => text.mdx} (100%) rename versioned_docs/version-v8/api/{textarea.md => textarea.mdx} (95%) rename versioned_docs/version-v8/api/{thumbnail.md => thumbnail.mdx} (100%) rename versioned_docs/version-v8/api/{title.md => title.mdx} (96%) rename versioned_docs/version-v8/api/{toast.md => toast.mdx} (96%) rename versioned_docs/version-v8/api/{toggle.md => toggle.mdx} (100%) rename versioned_docs/version-v8/api/{toolbar.md => toolbar.mdx} (100%) rename versioned_docs/version-v8/{cli.md => cli.mdx} (100%) rename docs/cli/configuration.md => versioned_docs/version-v8/cli/configuration.mdx (98%) rename docs/cli/livereload.md => versioned_docs/version-v8/cli/livereload.mdx (96%) rename versioned_docs/version-v8/cli/{using-a-proxy.md => using-a-proxy.mdx} (100%) rename versioned_docs/version-v8/{components.md => components.mdx} (99%) rename versioned_docs/version-v8/contributing/{coc.md => coc.mdx} (100%) rename docs/contributing/how-to-contribute.md => versioned_docs/version-v8/contributing/how-to-contribute.mdx (99%) rename docs/core-concepts/cross-platform.md => versioned_docs/version-v8/core-concepts/cross-platform.mdx (93%) rename versioned_docs/version-v8/core-concepts/{fundamentals.md => fundamentals.mdx} (84%) rename versioned_docs/version-v8/core-concepts/{webview.md => webview.mdx} (80%) rename versioned_docs/version-v8/core-concepts/{what-are-progressive-web-apps.md => what-are-progressive-web-apps.mdx} (100%) rename versioned_docs/version-v8/deployment/{app-store.md => app-store.mdx} (100%) rename versioned_docs/version-v8/deployment/{progressive-web-app.md => progressive-web-app.mdx} (94%) rename versioned_docs/version-v8/developer-resources/{courses.md => courses.mdx} (100%) rename versioned_docs/version-v8/developer-resources/{guides.md => guides.mdx} (76%) rename versioned_docs/version-v8/developer-resources/guides/first-app-v3/{creating-photo-gallery-device-storage.md => creating-photo-gallery-device-storage.mdx} (100%) rename versioned_docs/version-v8/developer-resources/guides/first-app-v3/{intro.md => intro.mdx} (100%) rename versioned_docs/version-v8/developer-resources/guides/first-app-v3/{ios-android-camera.md => ios-android-camera.mdx} (100%) rename versioned_docs/version-v8/developer-resources/guides/first-app-v3/{realtime-updates-ionic-deploy.md => realtime-updates-ionic-deploy.mdx} (94%) rename versioned_docs/version-v8/developer-resources/guides/first-app-v3/{theming.md => theming.mdx} (100%) rename versioned_docs/version-v8/developer-resources/guides/first-app-v3/{track-bugs-ionic-monitoring.md => track-bugs-ionic-monitoring.mdx} (100%) rename versioned_docs/version-v8/developer-resources/guides/first-app-v4/{creating-photo-gallery-device-storage.md => creating-photo-gallery-device-storage.mdx} (100%) rename versioned_docs/version-v8/developer-resources/guides/first-app-v4/{intro.md => intro.mdx} (98%) rename versioned_docs/version-v8/developer-resources/guides/first-app-v4/{ios-android-camera.md => ios-android-camera.mdx} (98%) rename docs/developer-resources/guides/first-app-v4/theming.md => versioned_docs/version-v8/developer-resources/guides/first-app-v4/theming.mdx (92%) rename versioned_docs/version-v8/developer-resources/{posts.md => posts.mdx} (100%) rename docs/developer-resources/tools.md => versioned_docs/version-v8/developer-resources/tools.mdx (92%) rename versioned_docs/version-v8/developer-resources/{videos.md => videos.mdx} (100%) rename versioned_docs/version-v8/developing/{android.md => android.mdx} (100%) rename versioned_docs/version-v8/developing/{config.md => config.mdx} (99%) rename versioned_docs/version-v8/developing/config/global/{index.md => index.mdx} (100%) rename versioned_docs/version-v8/developing/config/per-component/{index.md => index.mdx} (100%) rename versioned_docs/version-v8/developing/config/per-platform-fallback/{index.md => index.mdx} (100%) rename versioned_docs/version-v8/developing/config/per-platform-overrides/{index.md => index.mdx} (100%) rename versioned_docs/version-v8/developing/config/per-platform/{index.md => index.mdx} (100%) rename versioned_docs/version-v8/developing/{hardware-back-button.md => hardware-back-button.mdx} (97%) rename versioned_docs/version-v8/developing/{ios.md => ios.mdx} (100%) rename versioned_docs/version-v8/developing/{keyboard.md => keyboard.mdx} (100%) rename versioned_docs/version-v8/developing/{managing-focus.md => managing-focus.mdx} (100%) rename versioned_docs/version-v8/developing/{previewing.md => previewing.mdx} (94%) rename versioned_docs/version-v8/developing/{scaffolding.md => scaffolding.mdx} (100%) rename versioned_docs/version-v8/developing/{starting.md => starting.mdx} (100%) rename versioned_docs/version-v8/developing/{tips.md => tips.mdx} (98%) rename versioned_docs/version-v8/{index.md => index.mdx} (86%) rename docs/intro/cdn.md => versioned_docs/version-v8/intro/cdn.mdx (99%) rename docs/intro/cli.md => versioned_docs/version-v8/intro/cli.mdx (79%) rename versioned_docs/version-v8/intro/{environment.md => environment.mdx} (86%) rename versioned_docs/version-v8/intro/{first-app.md => first-app.mdx} (100%) rename versioned_docs/version-v8/intro/{next.md => next.mdx} (100%) rename versioned_docs/version-v8/intro/{vscode-extension.md => vscode-extension.mdx} (100%) rename versioned_docs/version-v8/javascript/{overview.md => overview.mdx} (100%) rename docs/javascript/quickstart.md => versioned_docs/version-v8/javascript/quickstart.mdx (95%) rename docs/layout/css-utilities.md => versioned_docs/version-v8/layout/css-utilities.mdx (99%) rename versioned_docs/version-v8/layout/{dynamic-font-scaling.md => dynamic-font-scaling.mdx} (100%) rename docs/layout/global-stylesheets.md => versioned_docs/version-v8/layout/global-stylesheets.mdx (81%) rename versioned_docs/version-v8/layout/{structure.md => structure.mdx} (66%) rename versioned_docs/version-v8/{native-faq.md => native-faq.mdx} (100%) rename versioned_docs/version-v8/{native-setup.md => native-setup.mdx} (100%) rename versioned_docs/version-v8/{native.md => native.mdx} (100%) rename versioned_docs/version-v8/react/{add-to-existing.md => add-to-existing.mdx} (92%) rename versioned_docs/version-v8/react/{lifecycle.md => lifecycle.mdx} (100%) rename versioned_docs/version-v8/react/{navigation.md => navigation.mdx} (100%) rename versioned_docs/version-v8/react/{overlays.md => overlays.mdx} (100%) rename versioned_docs/version-v8/react/{overview.md => overview.mdx} (100%) rename versioned_docs/version-v8/react/{performance.md => performance.mdx} (100%) rename versioned_docs/version-v8/react/{platform.md => platform.mdx} (100%) rename versioned_docs/version-v8/react/{pwa.md => pwa.mdx} (100%) rename versioned_docs/version-v8/react/{quickstart.md => quickstart.mdx} (92%) rename versioned_docs/version-v8/react/{slides.md => slides.mdx} (100%) rename versioned_docs/version-v8/react/{storage.md => storage.mdx} (100%) rename versioned_docs/version-v8/react/testing/{introduction.md => introduction.mdx} (100%) rename versioned_docs/version-v8/react/testing/unit-testing/{best-practices.md => best-practices.mdx} (100%) rename versioned_docs/version-v8/react/testing/unit-testing/{examples.md => examples.mdx} (100%) rename versioned_docs/version-v8/react/testing/unit-testing/{setup.md => setup.mdx} (100%) rename versioned_docs/version-v8/react/{virtual-scroll.md => virtual-scroll.mdx} (100%) rename versioned_docs/version-v8/react/{your-first-app.md => your-first-app.mdx} (96%) rename versioned_docs/version-v8/react/your-first-app/{2-taking-photos.md => 2-taking-photos.mdx} (96%) rename versioned_docs/version-v8/react/your-first-app/{3-saving-photos.md => 3-saving-photos.mdx} (100%) rename versioned_docs/version-v8/react/your-first-app/{4-loading-photos.md => 4-loading-photos.mdx} (100%) rename versioned_docs/version-v8/react/your-first-app/{5-adding-mobile.md => 5-adding-mobile.mdx} (96%) rename versioned_docs/version-v8/react/your-first-app/{6-deploying-mobile.md => 6-deploying-mobile.mdx} (100%) rename versioned_docs/version-v8/react/your-first-app/{7-live-reload.md => 7-live-reload.mdx} (95%) rename docs/react/your-first-app/8-distribute.md => versioned_docs/version-v8/react/your-first-app/8-distribute.mdx (97%) rename versioned_docs/version-v8/reference/{browser-support.md => browser-support.mdx} (95%) rename versioned_docs/version-v8/reference/{glossary.md => glossary.mdx} (100%) rename versioned_docs/version-v8/reference/{release-notes.md => release-notes.mdx} (100%) rename versioned_docs/version-v8/reference/{support.md => support.mdx} (98%) rename versioned_docs/version-v8/reference/{versioning.md => versioning.mdx} (100%) rename versioned_docs/version-v8/techniques/{security.md => security.mdx} (100%) delete mode 100644 versioned_docs/version-v8/test/page1.md create mode 100644 versioned_docs/version-v8/test/page1.mdx delete mode 100644 versioned_docs/version-v8/test/page2.md create mode 100644 versioned_docs/version-v8/test/page2.mdx rename versioned_docs/version-v8/theming/{advanced.md => advanced.mdx} (96%) rename versioned_docs/version-v8/theming/{basics.md => basics.mdx} (88%) rename versioned_docs/version-v8/theming/{color-generator.md => color-generator.mdx} (100%) rename versioned_docs/version-v8/theming/{colors.md => colors.mdx} (89%) rename versioned_docs/version-v8/theming/{css-shadow-parts.md => css-shadow-parts.mdx} (92%) rename docs/theming/css-variables.md => versioned_docs/version-v8/theming/css-variables.mdx (93%) rename versioned_docs/version-v8/theming/{dark-mode.md => dark-mode.mdx} (92%) rename versioned_docs/version-v8/theming/{high-contrast-mode.md => high-contrast-mode.mdx} (83%) rename docs/theming/platform-styles.md => versioned_docs/version-v8/theming/platform-styles.mdx (89%) rename docs/theming/themes.md => versioned_docs/version-v8/theming/themes.mdx (98%) rename versioned_docs/version-v8/troubleshooting/{build.md => build.mdx} (100%) rename versioned_docs/version-v8/troubleshooting/{cors.md => cors.mdx} (100%) rename versioned_docs/version-v8/troubleshooting/{debugging.md => debugging.mdx} (99%) rename docs/troubleshooting/native.md => versioned_docs/version-v8/troubleshooting/native.mdx (97%) rename versioned_docs/version-v8/troubleshooting/{runtime.md => runtime.mdx} (100%) rename versioned_docs/version-v8/updating/{4-0.md => 4-0.mdx} (96%) rename versioned_docs/version-v8/updating/{5-0.md => 5-0.mdx} (100%) rename versioned_docs/version-v8/updating/{6-0.md => 6-0.mdx} (100%) rename versioned_docs/version-v8/updating/{7-0.md => 7-0.mdx} (100%) rename versioned_docs/version-v8/updating/{8-0.md => 8-0.mdx} (100%) rename versioned_docs/version-v8/utilities/{animations.md => animations.mdx} (99%) rename versioned_docs/version-v8/utilities/{gestures.md => gestures.mdx} (99%) rename docs/vue/add-to-existing.md => versioned_docs/version-v8/vue/add-to-existing.mdx (92%) rename versioned_docs/version-v8/vue/{build-options.md => build-options.mdx} (100%) rename versioned_docs/version-v8/vue/{lifecycle.md => lifecycle.mdx} (100%) rename versioned_docs/version-v8/vue/{navigation.md => navigation.mdx} (100%) rename versioned_docs/version-v8/vue/{overview.md => overview.mdx} (92%) rename versioned_docs/version-v8/vue/{performance.md => performance.mdx} (100%) rename versioned_docs/version-v8/vue/{platform.md => platform.mdx} (100%) rename versioned_docs/version-v8/vue/{pwa.md => pwa.mdx} (100%) rename docs/vue/quickstart.md => versioned_docs/version-v8/vue/quickstart.mdx (93%) rename versioned_docs/version-v8/vue/{slides.md => slides.mdx} (100%) rename versioned_docs/version-v8/vue/{storage.md => storage.mdx} (100%) rename versioned_docs/version-v8/vue/{testing.md => testing.mdx} (100%) rename versioned_docs/version-v8/vue/{troubleshooting.md => troubleshooting.mdx} (93%) rename versioned_docs/version-v8/vue/{utility-functions.md => utility-functions.mdx} (100%) rename versioned_docs/version-v8/vue/{virtual-scroll.md => virtual-scroll.mdx} (100%) rename versioned_docs/version-v8/vue/{your-first-app.md => your-first-app.mdx} (96%) rename versioned_docs/version-v8/vue/your-first-app/{2-taking-photos.md => 2-taking-photos.mdx} (96%) rename versioned_docs/version-v8/vue/your-first-app/{3-saving-photos.md => 3-saving-photos.mdx} (100%) rename versioned_docs/version-v8/vue/your-first-app/{4-loading-photos.md => 4-loading-photos.mdx} (100%) rename versioned_docs/version-v8/vue/your-first-app/{5-adding-mobile.md => 5-adding-mobile.mdx} (95%) rename versioned_docs/version-v8/vue/your-first-app/{6-deploying-mobile.md => 6-deploying-mobile.mdx} (100%) rename versioned_docs/version-v8/vue/your-first-app/{7-live-reload.md => 7-live-reload.mdx} (95%) rename docs/vue/your-first-app/8-distribute.md => versioned_docs/version-v8/vue/your-first-app/8-distribute.mdx (97%) diff --git a/docs/angular/add-to-existing.md b/docs/angular/add-to-existing.mdx similarity index 92% rename from docs/angular/add-to-existing.md rename to docs/angular/add-to-existing.mdx index 8a551abfd4..bf2ab3d2ef 100644 --- a/docs/angular/add-to-existing.md +++ b/docs/angular/add-to-existing.mdx @@ -14,7 +14,7 @@ import DocsCards from '@components/global/DocsCards'; /> -This guide covers how to add Ionic Angular to an existing Angular project. If you're looking to start a new project from scratch, check out the [Ionic Angular Quickstart](/docs/angular/quickstart.md) guide. For an overview of how Ionic Angular works with Angular, including version support and tooling, check out the [Ionic Angular Overview](/docs/angular/overview.md). +This guide covers how to add Ionic Angular to an existing Angular project. If you're looking to start a new project from scratch, check out the [Ionic Angular Quickstart](/docs/angular/quickstart.mdx) guide. For an overview of how Ionic Angular works with Angular, including version support and tooling, check out the [Ionic Angular Overview](/docs/angular/overview.mdx). :::tip @@ -76,7 +76,7 @@ Replace the existing `styles` array in `angular.json` with the following: :::info -While `core.css` is required, `normalize.css`, `structure.css`, and `typography.css` are recommended but not required. They normalize cross-browser differences, ensure proper scrolling behavior, and provide consistent typography and form styling. Without them, you may need to handle these concerns yourself. For more details, refer to [Global Stylesheets](/docs/layout/global-stylesheets.md). +While `core.css` is required, `normalize.css`, `structure.css`, and `typography.css` are recommended but not required. They normalize cross-browser differences, ensure proper scrolling behavior, and provide consistent typography and form styling. Without them, you may need to handle these concerns yourself. For more details, refer to [Global Stylesheets](/docs/layout/global-stylesheets.mdx). ::: @@ -96,7 +96,7 @@ export const appConfig: ApplicationConfig = { }; ``` -This reflects the Angular 21 and 22 scaffold, which is zoneless by default. If your existing app is on Angular 18 through 20, it still has `provideZoneChangeDetection({ eventCoalescing: true })`; keep that provider and add `provideIonicAngular({})` alongside it. Refer to [Zoneless Change Detection](/docs/angular/zoneless.md) for details. +This reflects the Angular 21 and 22 scaffold, which is zoneless by default. If your existing app is on Angular 18 through 20, it still has `provideZoneChangeDetection({ eventCoalescing: true })`; keep that provider and add `provideIonicAngular({})` alongside it. Refer to [Zoneless Change Detection](/docs/angular/zoneless.mdx) for details. ## Using Individual Components @@ -123,7 +123,7 @@ import { IonButton, IonDatetime } from '@ionic/angular'; export class App {} ``` -Visit the [components](/docs/components.md) page for all of the available Ionic components. +Visit the [components](/docs/components.mdx) page for all of the available Ionic components. ## Using Ionic Pages @@ -172,7 +172,7 @@ Replace the existing `styles` array in `angular.json` with the following: ] ``` -These stylesheets set up the overall page structure and provide [CSS utilities](/docs/layout/css-utilities.md) for faster development. Some stylesheets are optional. For details on which stylesheets are required, check out [Global Stylesheets](/docs/layout/global-stylesheets.md). +These stylesheets set up the overall page structure and provide [CSS utilities](/docs/layout/css-utilities.mdx) for faster development. Some stylesheets are optional. For details on which stylesheets are required, check out [Global Stylesheets](/docs/layout/global-stylesheets.mdx). #### 2. Set up Theming @@ -191,7 +191,7 @@ Create a `src/theme/variables.css` file with the following content: @import '@ionic/angular/css/palettes/dark.system.css'; ``` -This file enables [dark mode support](/docs/theming/dark-mode.md) for your Ionic app when the system is set to prefer a dark appearance. You can customize the theming behavior by uncommenting different dark palette imports or adding custom CSS variables. +This file enables [dark mode support](/docs/theming/dark-mode.mdx) for your Ionic app when the system is set to prefer a dark appearance. You can customize the theming behavior by uncommenting different dark palette imports or adding custom CSS variables. #### 3. Update the App Component diff --git a/docs/angular/build-options.md b/docs/angular/build-options.mdx similarity index 100% rename from docs/angular/build-options.md rename to docs/angular/build-options.mdx diff --git a/docs/angular/injection-tokens.md b/docs/angular/injection-tokens.mdx similarity index 100% rename from docs/angular/injection-tokens.md rename to docs/angular/injection-tokens.mdx diff --git a/docs/angular/lifecycle.md b/docs/angular/lifecycle.mdx similarity index 100% rename from docs/angular/lifecycle.md rename to docs/angular/lifecycle.mdx diff --git a/docs/angular/navigation.md b/docs/angular/navigation.mdx similarity index 99% rename from docs/angular/navigation.md rename to docs/angular/navigation.mdx index d543120209..b26fec782e 100644 --- a/docs/angular/navigation.md +++ b/docs/angular/navigation.mdx @@ -197,7 +197,7 @@ export class AppRoutingModule {} :::tip -If you are using `routerLink`, `routerDirection`, or `routerAction` be sure to also import the `IonRouterLink` directive for Ionic components or the `IonRouterLinkWithHref` directive for `` elements. An example of this is available in the [Ionic Angular Build Options docs](./build-options.md#migrating-from-modules-to-standalone). +If you are using `routerLink`, `routerDirection`, or `routerAction` be sure to also import the `IonRouterLink` directive for Ionic components or the `IonRouterLinkWithHref` directive for `` elements. An example of this is available in the [Ionic Angular Build Options docs](./build-options.mdx#migrating-from-modules-to-standalone). ::: diff --git a/docs/angular/overlays.md b/docs/angular/overlays.mdx similarity index 100% rename from docs/angular/overlays.md rename to docs/angular/overlays.mdx diff --git a/docs/angular/overview.md b/docs/angular/overview.mdx similarity index 100% rename from docs/angular/overview.md rename to docs/angular/overview.mdx diff --git a/docs/angular/performance.md b/docs/angular/performance.mdx similarity index 100% rename from docs/angular/performance.md rename to docs/angular/performance.mdx diff --git a/docs/angular/platform.md b/docs/angular/platform.mdx similarity index 100% rename from docs/angular/platform.md rename to docs/angular/platform.mdx diff --git a/docs/angular/pwa.md b/docs/angular/pwa.mdx similarity index 100% rename from docs/angular/pwa.md rename to docs/angular/pwa.mdx diff --git a/docs/angular/quickstart.md b/docs/angular/quickstart.mdx similarity index 94% rename from docs/angular/quickstart.md rename to docs/angular/quickstart.mdx index a060df0e17..4ba89d6935 100644 --- a/docs/angular/quickstart.md +++ b/docs/angular/quickstart.mdx @@ -174,17 +174,17 @@ And the template, in the `home.page.html` file, uses those components: ``` -This creates a page with a header and scrollable content area. The second header shows a [collapsible large title](/docs/api/title.md#collapsible-large-titles) that displays on iOS devices when at the top of the content, then condenses to show the smaller title in the first header when scrolling down. +This creates a page with a header and scrollable content area. The second header shows a [collapsible large title](/docs/api/title.mdx#collapsible-large-titles) that displays on iOS devices when at the top of the content, then condenses to show the smaller title in the first header when scrolling down. :::tip[Learn More] -For detailed information about Ionic layout components, refer to the [Header](/docs/api/header.md), [Toolbar](/docs/api/toolbar.md), [Title](/docs/api/title.md), and [Content](/docs/api/content.md) documentation. +For detailed information about Ionic layout components, refer to the [Header](/docs/api/header.mdx), [Toolbar](/docs/api/toolbar.mdx), [Title](/docs/api/title.mdx), and [Content](/docs/api/content.mdx) documentation. ::: ## Add an Ionic Component -You can enhance your Home page with more Ionic UI components. For example, add a [Button](/docs/api/button.md) at the end of the `ion-content`: +You can enhance your Home page with more Ionic UI components. For example, add a [Button](/docs/api/button.mdx) at the end of the `ion-content`: ```html title="src/app/home/home.page.html" @@ -215,7 +215,7 @@ ionic generate page new A route will be automatically added to `app.routes.ts`. -In `new.page.html`, you can add a [Back Button](/docs/api/back-button.md) to the [Toolbar](/docs/api/toolbar.md): +In `new.page.html`, you can add a [Back Button](/docs/api/back-button.mdx) to the [Toolbar](/docs/api/toolbar.mdx): ```html title="src/app/new/new.page.html" @@ -262,7 +262,7 @@ import { RouterLink } from '@angular/router'; :::info -Navigating can also be performed using Angular's Router service. Refer to the [Angular Navigation documentation](/docs/angular/navigation.md#navigating-to-different-routes) for more information. +Navigating can also be performed using Angular's Router service. Refer to the [Angular Navigation documentation](/docs/angular/navigation.mdx#navigating-to-different-routes) for more information. ::: @@ -307,7 +307,7 @@ export class NewPage implements OnInit { Alternatively, you can register icons in `app.component.ts` to use them throughout your app. -For more information, refer to the [Icon documentation](/docs/api/icon.md) and the [Ionicons documentation](https://ionic.io/ionicons/). +For more information, refer to the [Icon documentation](/docs/api/icon.mdx) and the [Ionicons documentation](https://ionic.io/ionicons/). ## Call Component Methods @@ -393,7 +393,7 @@ To call methods on Ionic components: 1. Create a `ViewChild` reference for the component 2. Call the method directly on the component instance -You can find available methods for each component in the [Methods](/docs/api/content.md#methods) section of their API documentation. +You can find available methods for each component in the [Methods](/docs/api/content.mdx#methods) section of their API documentation. ## Run on a Device diff --git a/docs/angular/slides.md b/docs/angular/slides.mdx similarity index 100% rename from docs/angular/slides.md rename to docs/angular/slides.mdx diff --git a/docs/angular/storage.md b/docs/angular/storage.mdx similarity index 100% rename from docs/angular/storage.md rename to docs/angular/storage.mdx diff --git a/docs/angular/testing.md b/docs/angular/testing.mdx similarity index 100% rename from docs/angular/testing.md rename to docs/angular/testing.mdx diff --git a/docs/angular/virtual-scroll.md b/docs/angular/virtual-scroll.mdx similarity index 100% rename from docs/angular/virtual-scroll.md rename to docs/angular/virtual-scroll.mdx diff --git a/docs/angular/your-first-app.md b/docs/angular/your-first-app.mdx similarity index 95% rename from docs/angular/your-first-app.md rename to docs/angular/your-first-app.mdx index e59d85e9b6..a1e5363b11 100644 --- a/docs/angular/your-first-app.md +++ b/docs/angular/your-first-app.mdx @@ -26,7 +26,7 @@ Here’s the finished app running on all 3 platforms: :::note -Looking for the previous version of this guide that covered Ionic 4 and Cordova? Refer to the [Ionic 4 and Cordova guide](../developer-resources/guides/first-app-v4/intro.md). +Looking for the previous version of this guide that covered Ionic 4 and Cordova? Refer to the [Ionic 4 and Cordova guide](../developer-resources/guides/first-app-v4/intro.mdx). ::: @@ -36,7 +36,7 @@ We'll create a Photo Gallery app that offers the ability to take photos with you Highlights include: -- One Angular-based codebase that runs on the web, iOS, and Android using Ionic Framework [UI components](../components.md). +- One Angular-based codebase that runs on the web, iOS, and Android using Ionic Framework [UI components](../components.mdx). - Deployed as a native iOS and Android mobile app using [Capacitor](https://capacitorjs.com), Ionic's official native app runtime. - Photo Gallery functionality powered by the Capacitor [Camera](../native/camera.md), [Filesystem](../native/filesystem.md), and [Preferences](../native/preferences.md) APIs. @@ -70,7 +70,7 @@ npm install -g @ionic/cli native-run cordova-res The `-g` option means _install globally_. When packages are installed globally, `EACCES` permission errors can occur. -Consider setting up npm to operate globally without elevated permissions. Refer to [Resolving Permission Errors](../developing/tips.md#resolving-permission-errors) for more information. +Consider setting up npm to operate globally without elevated permissions. Refer to [Resolving Permission Errors](../developing/tips.mdx#resolving-permission-errors) for more information. ::: @@ -174,7 +174,7 @@ Open `/src/app/tab2/tab2.page.html`. It contains: ``` -`ion-header` represents the top navigation and toolbar, with "Tab 2" as the title (there are two of them due to iOS [Collapsible Large Title](../api/title.md#collapsible-large-titles) support). Rename both `ion-title` elements to: +`ion-header` represents the top navigation and toolbar, with "Tab 2" as the title (there are two of them due to iOS [Collapsible Large Title](../api/title.mdx#collapsible-large-titles) support). Rename both `ion-title` elements to: ```html @@ -196,7 +196,7 @@ Open `/src/app/tab2/tab2.page.html`. It contains: ``` -We put the visual aspects of our app into ``. In this case, it’s where we’ll add a button that opens the device’s camera as well as displays the image captured by the camera. Start by adding a [floating action button](../api/fab.md) (FAB) to the bottom of the page and set the camera image as the icon. +We put the visual aspects of our app into ``. In this case, it’s where we’ll add a button that opens the device’s camera as well as displays the image captured by the camera. Start by adding a [floating action button](../api/fab.mdx) (FAB) to the bottom of the page and set the camera image as the icon. ```html diff --git a/docs/angular/your-first-app/2-taking-photos.md b/docs/angular/your-first-app/2-taking-photos.mdx similarity index 95% rename from docs/angular/your-first-app/2-taking-photos.md rename to docs/angular/your-first-app/2-taking-photos.mdx index 3ce57cbd0b..ee52853881 100644 --- a/docs/angular/your-first-app/2-taking-photos.md +++ b/docs/angular/your-first-app/2-taking-photos.mdx @@ -231,7 +231,7 @@ export interface UserPhoto { } ``` -Next, switch to `tab2.page.html` to display the images. We'll add a [Grid component](../../api/grid.md) so the photos display neatly as they're added to the gallery. Inside the grid, loop through each photo in the `PhotoService`'s `photos` signal with the built-in [`@for`](https://angular.dev/guide/templates/control-flow#for-block-repeaters) block - calling `photoService.photos()` reads the signal's current value. For each item, add an `` element and set its `src` property to the photo's path. +Next, switch to `tab2.page.html` to display the images. We'll add a [Grid component](../../api/grid.mdx) so the photos display neatly as they're added to the gallery. Inside the grid, loop through each photo in the `PhotoService`'s `photos` signal with the built-in [`@for`](https://angular.dev/guide/templates/control-flow#for-block-repeaters) block - calling `photoService.photos()` reads the signal's current value. For each item, add an `` element and set its `src` property to the photo's path. ```html diff --git a/docs/angular/your-first-app/3-saving-photos.md b/docs/angular/your-first-app/3-saving-photos.mdx similarity index 100% rename from docs/angular/your-first-app/3-saving-photos.md rename to docs/angular/your-first-app/3-saving-photos.mdx diff --git a/docs/angular/your-first-app/4-loading-photos.md b/docs/angular/your-first-app/4-loading-photos.mdx similarity index 100% rename from docs/angular/your-first-app/4-loading-photos.md rename to docs/angular/your-first-app/4-loading-photos.mdx diff --git a/docs/angular/your-first-app/5-adding-mobile.md b/docs/angular/your-first-app/5-adding-mobile.mdx similarity index 95% rename from docs/angular/your-first-app/5-adding-mobile.md rename to docs/angular/your-first-app/5-adding-mobile.mdx index 2ac9768a4b..b3736d50de 100644 --- a/docs/angular/your-first-app/5-adding-mobile.md +++ b/docs/angular/your-first-app/5-adding-mobile.mdx @@ -17,7 +17,7 @@ Our photo gallery app won’t be complete until it runs on iOS, Android, and the Let’s start with making some small code changes - then our app will “just work” when we deploy it to a device. -Import the Ionic [Platform API](../platform.md) into `photo.service.ts`, which is used to retrieve information about the current device. In this case, it’s useful for selecting which code to execute based on the platform the app is running on (web or mobile). +Import the Ionic [Platform API](../platform.mdx) into `photo.service.ts`, which is used to retrieve information about the current device. In this case, it’s useful for selecting which code to execute based on the platform the app is running on (web or mobile). Add `Platform` to the imports at the top of the file and a new property `platform` to the `PhotoService` class. We'll also need to update the constructor to set the user's platform. @@ -85,7 +85,7 @@ private async savePicture(photo: Photo) { } ``` -When running on mobile, set `filepath` to the result of the `writeFile()` operation - `savedFile.uri`. When setting the `webviewPath`, use the special `Capacitor.convertFileSrc()` method ([details on the File Protocol](../../core-concepts/webview.md#file-protocol)). To use this method, we'll need to import Capacitor into `photo.service.ts`. +When running on mobile, set `filepath` to the result of the `writeFile()` operation - `savedFile.uri`. When setting the `webviewPath`, use the special `Capacitor.convertFileSrc()` method ([details on the File Protocol](../../core-concepts/webview.mdx#file-protocol)). To use this method, we'll need to import Capacitor into `photo.service.ts`. ```ts import { Injectable, inject, signal } from '@angular/core'; diff --git a/docs/angular/your-first-app/6-deploying-mobile.md b/docs/angular/your-first-app/6-deploying-mobile.mdx similarity index 100% rename from docs/angular/your-first-app/6-deploying-mobile.md rename to docs/angular/your-first-app/6-deploying-mobile.mdx diff --git a/docs/angular/your-first-app/7-live-reload.md b/docs/angular/your-first-app/7-live-reload.mdx similarity index 96% rename from docs/angular/your-first-app/7-live-reload.md rename to docs/angular/your-first-app/7-live-reload.mdx index 2d3a9462cf..c300e4730a 100644 --- a/docs/angular/your-first-app/7-live-reload.md +++ b/docs/angular/your-first-app/7-live-reload.mdx @@ -13,7 +13,7 @@ sidebar_label: Live Reload So far, we’ve learned how easy it is to develop a cross-platform app that works everywhere. The development experience is pretty quick, but what if I told you there was a way to go faster? -We can use the Ionic CLI’s [Live Reload functionality](../../cli/livereload.md) to boost our productivity when building Ionic apps. When active, Live Reload will reload the browser and/or WebView when changes in the app are detected. +We can use the Ionic CLI’s [Live Reload functionality](../../cli/livereload.mdx) to boost our productivity when building Ionic apps. When active, Live Reload will reload the browser and/or WebView when changes in the app are detected. ## Live Reload @@ -156,7 +156,7 @@ export class Tab2Page implements OnInit { } ``` -Open `tab2.page.html` and wrap each image in a `