diff --git a/BREAKING.md b/BREAKING.md
index 3794dbdda4b..593943213fb 100644
--- a/BREAKING.md
+++ b/BREAKING.md
@@ -14,9 +14,19 @@ This is a comprehensive list of the breaking changes introduced in the major ver
## Version 9.x
+- [Browser and Platform Support](#version-9x-browser-platform-support)
- [Components](#version-9x-components)
- [Router Outlet](#version-9x-router-outlet)
+
+
+This section details the desktop browser, JavaScript framework, and mobile platform versions that are supported by Ionic 9.
+
+**Minimum JavaScript Framework Versions**
+| Framework | Supported Version |
+| --------- | --------------------- |
+| React | 18+ |
+
Components
Router Outlet
diff --git a/core/api.txt b/core/api.txt
index be1cde11f2e..36d5e6ec216 100644
--- a/core/api.txt
+++ b/core/api.txt
@@ -1421,7 +1421,7 @@ ion-radio,prop,justify,"end" | "space-between" | "start" | undefined,undefined,f
ion-radio,prop,labelPlacement,"end" | "fixed" | "stacked" | "start",'start',false,false
ion-radio,prop,mode,"ios" | "md",undefined,false,false
ion-radio,prop,name,string,this.inputId,false,false
-ion-radio,prop,value,any,undefined,false,false
+ion-radio,prop,value,any,undefined,false,true
ion-radio,event,ionBlur,void,true
ion-radio,event,ionFocus,void,true
ion-radio,css-prop,--border-radius,ios
diff --git a/core/package-lock.json b/core/package-lock.json
index 01a06435345..3f56a486f6f 100644
--- a/core/package-lock.json
+++ b/core/package-lock.json
@@ -25,7 +25,7 @@
"@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-virtual": "^2.0.3",
"@stencil/angular-output-target": "^0.10.0",
- "@stencil/react-output-target": "0.5.3",
+ "@stencil/react-output-target": "^1.5.0",
"@stencil/sass": "^3.0.9",
"@stencil/vue-output-target": "0.10.8",
"@types/jest": "^29.5.6",
@@ -95,6 +95,7 @@
"version": "7.16.12",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@babel/code-frame": "^7.16.7",
"@babel/generator": "^7.16.8",
@@ -634,6 +635,7 @@
"integrity": "sha512-S4ajn4G/fS3VJj8salxqH/3LO5PPWv1VxGKQ27OCajnDcLJjEg9VXwgMPnlypgkIOqCJ2fmQLtk8GT+BlI9/rw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.1.0"
}
@@ -668,6 +670,13 @@
"@capacitor/core": ">=8.0.0"
}
},
+ "node_modules/@emotion/unitless": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
+ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
"dev": true,
@@ -852,6 +861,7 @@
"version": "4.33.0",
"dev": true,
"license": "BSD-2-Clause",
+ "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "4.33.0",
"@typescript-eslint/types": "4.33.0",
@@ -1565,6 +1575,16 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@lit/react": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@lit/react/-/react-1.0.8.tgz",
+ "integrity": "sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peerDependencies": {
+ "@types/react": "17 || 18 || 19"
+ }
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.3",
"dev": true,
@@ -1659,6 +1679,8 @@
},
"node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.34.9",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz",
+ "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==",
"cpu": [
"arm64"
],
@@ -1793,6 +1815,7 @@
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.0.tgz",
"integrity": "sha512-6Uj2Z3lzLuufYAE7asZ6NLKgSwsB9uxl84Eh34PASnUjfj32GkrP4DtKK7fNeh1WFGGyffsTDka3gwtl+4reUg==",
"license": "MIT",
+ "peer": true,
"bin": {
"stencil": "bin/stencil"
},
@@ -1812,11 +1835,32 @@
}
},
"node_modules/@stencil/react-output-target": {
- "version": "0.5.3",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@stencil/react-output-target/-/react-output-target-1.5.0.tgz",
+ "integrity": "sha512-0xu0ZKhDpnat1d5nM4wEQvLReqYtYVdekb6SCyvdwTm2/0KEU4+eKSurpzVVX7U/qjAOL8P8RK78J2Y32FH2sg==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@lit/react": "^1.0.7",
+ "html-react-parser": "^5.2.2",
+ "react-style-stringify": "^1.2.0",
+ "ts-morph": "^22.0.0"
+ },
"peerDependencies": {
- "@stencil/core": ">=2.0.0 || >=3 || >= 4.0.0-beta.0 || >= 4.0.0"
+ "@stencil/core": ">=3 || >= 4.0.0-beta.0 || >= 4.0.0",
+ "react": "^18 || ^19",
+ "react-dom": "^18 || ^19"
+ },
+ "peerDependenciesMeta": {
+ "@stencil/core": {
+ "optional": false
+ },
+ "react": {
+ "optional": false
+ },
+ "react-dom": {
+ "optional": false
+ }
}
},
"node_modules/@stencil/sass": {
@@ -1864,6 +1908,45 @@
"postcss-syntax": ">=0.36.2"
}
},
+ "node_modules/@ts-morph/common": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.23.0.tgz",
+ "integrity": "sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-glob": "^3.3.2",
+ "minimatch": "^9.0.3",
+ "mkdirp": "^3.0.1",
+ "path-browserify": "^1.0.1"
+ }
+ },
+ "node_modules/@ts-morph/common/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@ts-morph/common/node_modules/minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@types/babel__core": {
"version": "7.20.3",
"dev": true,
@@ -1982,6 +2065,17 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/react": {
+ "version": "19.2.14",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz",
+ "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "csstype": "^3.2.2"
+ }
+ },
"node_modules/@types/resolve": {
"version": "1.17.1",
"dev": true,
@@ -2217,6 +2311,7 @@
"version": "6.7.2",
"dev": true,
"license": "BSD-2-Clause",
+ "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "6.7.2",
"@typescript-eslint/types": "6.7.2",
@@ -2442,7 +2537,6 @@
"integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@babel/parser": "^7.28.5",
"@vue/shared": "3.5.25",
@@ -2457,7 +2551,6 @@
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"dev": true,
"license": "BSD-2-Clause",
- "peer": true,
"engines": {
"node": ">=0.12"
},
@@ -2470,8 +2563,7 @@
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@vue/compiler-dom": {
"version": "3.5.25",
@@ -2479,7 +2571,6 @@
"integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/compiler-core": "3.5.25",
"@vue/shared": "3.5.25"
@@ -2491,7 +2582,6 @@
"integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@babel/parser": "^7.28.5",
"@vue/compiler-core": "3.5.25",
@@ -2509,8 +2599,7 @@
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@vue/compiler-sfc/node_modules/postcss": {
"version": "8.5.6",
@@ -2532,7 +2621,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -2548,7 +2636,6 @@
"integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.25",
"@vue/shared": "3.5.25"
@@ -2560,7 +2647,6 @@
"integrity": "sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/shared": "3.5.25"
}
@@ -2571,7 +2657,6 @@
"integrity": "sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/reactivity": "3.5.25",
"@vue/shared": "3.5.25"
@@ -2583,7 +2668,6 @@
"integrity": "sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/reactivity": "3.5.25",
"@vue/runtime-core": "3.5.25",
@@ -2597,7 +2681,6 @@
"integrity": "sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/compiler-ssr": "3.5.25",
"@vue/shared": "3.5.25"
@@ -2611,8 +2694,7 @@
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.25.tgz",
"integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@zeit/schemas": {
"version": "2.21.0",
@@ -2635,6 +2717,7 @@
"version": "7.4.0",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -3623,6 +3706,13 @@
"node": ">= 0.12.0"
}
},
+ "node_modules/code-block-writer": {
+ "version": "13.0.3",
+ "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz",
+ "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/collect-v8-coverage": {
"version": "1.0.2",
"dev": true,
@@ -3797,8 +3887,7 @@
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/debug": {
"version": "2.6.9",
@@ -4092,6 +4181,7 @@
"version": "7.32.0",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@babel/code-frame": "7.12.11",
"@eslint/eslintrc": "^0.4.3",
@@ -5147,11 +5237,194 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/html-dom-parser": {
+ "version": "5.1.8",
+ "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-5.1.8.tgz",
+ "integrity": "sha512-MCIUng//mF2qTtGHXJWr6OLfHWmg3Pm8ezpfiltF83tizPWY17JxT4dRLE8lykJ5bChJELoY3onQKPbufJHxYA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/remarkablemark"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domhandler": "5.0.3",
+ "htmlparser2": "10.1.0"
+ }
+ },
+ "node_modules/html-dom-parser/node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/html-dom-parser/node_modules/dom-serializer/node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/html-dom-parser/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/html-dom-parser/node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/html-dom-parser/node_modules/domutils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/html-dom-parser/node_modules/entities": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
+ "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/html-dom-parser/node_modules/htmlparser2": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
+ "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.2.2",
+ "entities": "^7.0.1"
+ }
+ },
"node_modules/html-escaper": {
"version": "2.0.2",
"dev": true,
"license": "MIT"
},
+ "node_modules/html-react-parser": {
+ "version": "5.2.17",
+ "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-5.2.17.tgz",
+ "integrity": "sha512-m+K/7Moq1jodAB4VL0RXSOmtwLUYoAsikZhwd+hGQe5Vtw2dbWfpFd60poxojMU0Tsh9w59mN1QLEcoHz0Dx9w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/remarkablemark"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/html-react-parser"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domhandler": "5.0.3",
+ "html-dom-parser": "5.1.8",
+ "react-property": "2.0.2",
+ "style-to-js": "1.1.21"
+ },
+ "peerDependencies": {
+ "@types/react": "0.14 || 15 || 16 || 17 || 18 || 19",
+ "react": "0.14 || 15 || 16 || 17 || 18 || 19"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/html-react-parser/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/html-react-parser/node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
"node_modules/html-tags": {
"version": "3.1.0",
"dev": true,
@@ -5273,6 +5546,13 @@
"node": "*"
}
},
+ "node_modules/inline-style-parser": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz",
+ "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/internal-slot": {
"version": "1.0.3",
"dev": true,
@@ -7287,7 +7567,6 @@
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.5"
}
@@ -7592,6 +7871,22 @@
"node": ">= 6"
}
},
+ "node_modules/mkdirp": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+ "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/ms": {
"version": "2.1.2",
"dev": true,
@@ -7609,7 +7904,6 @@
}
],
"license": "MIT",
- "peer": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -7859,6 +8153,13 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/path-exists": {
"version": "3.0.0",
"dev": true,
@@ -7966,6 +8267,7 @@
"integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==",
"dev": true,
"license": "Apache-2.0",
+ "peer": true,
"bin": {
"playwright-core": "cli.js"
},
@@ -7977,6 +8279,7 @@
"version": "7.0.35",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
@@ -8082,6 +8385,7 @@
"version": "0.36.2",
"dev": true,
"license": "MIT",
+ "peer": true,
"peerDependencies": {
"postcss": ">=5.0.0"
}
@@ -8130,6 +8434,7 @@
"version": "2.6.1",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"prettier": "bin-prettier.js"
},
@@ -8237,11 +8542,56 @@
"rc": "cli.js"
}
},
+ "node_modules/react": {
+ "version": "19.2.4",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz",
+ "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "19.2.4",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz",
+ "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "scheduler": "^0.27.0"
+ },
+ "peerDependencies": {
+ "react": "^19.2.4"
+ }
+ },
"node_modules/react-is": {
"version": "18.2.0",
"dev": true,
"license": "MIT"
},
+ "node_modules/react-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.2.tgz",
+ "integrity": "sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/react-style-stringify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/react-style-stringify/-/react-style-stringify-1.2.0.tgz",
+ "integrity": "sha512-88JZckqgbfXJaGcDQoTFKRmBwHBF0Ddaxz3PL9Q+vywAJruBY+NdN+ZiKSBe7r/pWtjbt0naZdtH5oNI1X3FLA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@emotion/unitless": "^0.10.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/read-pkg": {
"version": "5.2.0",
"dev": true,
@@ -8487,6 +8837,7 @@
"version": "2.35.1",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"rollup": "dist/bin/rollup"
},
@@ -8547,6 +8898,13 @@
"node": ">=8.9.0"
}
},
+ "node_modules/scheduler": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/semver": {
"version": "5.7.1",
"dev": true,
@@ -8708,7 +9066,6 @@
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"dev": true,
"license": "BSD-3-Clause",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -8917,6 +9274,26 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/style-to-js": {
+ "version": "1.1.21",
+ "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz",
+ "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "style-to-object": "1.0.14"
+ }
+ },
+ "node_modules/style-to-object": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz",
+ "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "inline-style-parser": "0.2.7"
+ }
+ },
"node_modules/stylelint": {
"version": "13.13.1",
"dev": true,
@@ -9282,6 +9659,17 @@
"typescript": ">=4.2.0"
}
},
+ "node_modules/ts-morph": {
+ "version": "22.0.0",
+ "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-22.0.0.tgz",
+ "integrity": "sha512-M9MqFGZREyeb5fTl6gNHKZLqBQA0TjA1lea+CR48R8EBTDuWrNqW6ccC5QvjNR4s6wDumD3LTCjOFSp9iwlzaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ts-morph/common": "~0.23.0",
+ "code-block-writer": "^13.0.1"
+ }
+ },
"node_modules/tsconfig-paths": {
"version": "3.14.1",
"dev": true,
diff --git a/core/package.json b/core/package.json
index 47566399094..4f34f4077b9 100644
--- a/core/package.json
+++ b/core/package.json
@@ -50,7 +50,7 @@
"@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-virtual": "^2.0.3",
"@stencil/angular-output-target": "^0.10.0",
- "@stencil/react-output-target": "0.5.3",
+ "@stencil/react-output-target": "^1.5.0",
"@stencil/sass": "^3.0.9",
"@stencil/vue-output-target": "0.10.8",
"@types/jest": "^29.5.6",
diff --git a/core/src/components/radio/radio.tsx b/core/src/components/radio/radio.tsx
index bb343c8c858..9268c66b247 100644
--- a/core/src/components/radio/radio.tsx
+++ b/core/src/components/radio/radio.tsx
@@ -61,7 +61,7 @@ export class Radio implements ComponentInterface {
/**
* the value of the radio.
*/
- @Prop() value?: any | null;
+ @Prop({ reflect: true }) value?: any | null;
@Watch('value')
valueChanged() {
diff --git a/core/stencil.config.ts b/core/stencil.config.ts
index 8a090b65bff..1630e3a6f2d 100644
--- a/core/stencil.config.ts
+++ b/core/stencil.config.ts
@@ -125,11 +125,7 @@ export const config: Config = {
],
outputTargets: [
reactOutputTarget({
- componentCorePackage,
- includeImportCustomElements: true,
- includePolyfills: false,
- includeDefineCustomElements: false,
- proxiesFile: '../packages/react/src/components/proxies.ts',
+ outDir: '../packages/react/src/components',
excludeComponents: [
// Routing
'ion-router',
diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json
index 3395ac5f3dc..a07f7cf3bc9 100644
--- a/packages/react/package-lock.json
+++ b/packages/react/package-lock.json
@@ -10,6 +10,7 @@
"license": "MIT",
"dependencies": {
"@ionic/core": "^8.8.3",
+ "@stencil/react-output-target": "^1.5.0",
"ionicons": "^8.0.13",
"tslib": "*"
},
@@ -18,12 +19,11 @@
"@ionic/prettier-config": "^2.0.0",
"@rollup/plugin-typescript": "^11.1.5",
"@testing-library/jest-dom": "^5.11.6",
- "@testing-library/react": "^12.1.5",
- "@testing-library/react-hooks": "^7.0.1",
+ "@testing-library/react": "^13.4.0",
"@types/jest": "^26.0.15",
"@types/node": "^14.0.14",
- "@types/react": "^17.0.79",
- "@types/react-dom": "^17.0.25",
+ "@types/react": "^18.3.28",
+ "@types/react-dom": "^18.3.7",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"@typescript-eslint/parser": "^5.48.2",
"eslint": "^7.32.0",
@@ -32,8 +32,8 @@
"jest-environment-jsdom": "^29.7.0",
"np": "^6.4.0",
"prettier": "^2.8.3",
- "react": "^17.0.2",
- "react-dom": "^17.0.2",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
"rimraf": "^3.0.2",
"rollup": "^4.2.0",
"ts-jest": "^29.1.3",
@@ -99,6 +99,7 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz",
"integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
"dev": true,
+ "peer": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.24.7",
@@ -662,6 +663,12 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
+ "node_modules/@emotion/unitless": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
+ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==",
+ "license": "MIT"
+ },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
@@ -801,6 +808,7 @@
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz",
"integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==",
"dev": true,
+ "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "4.33.0",
"@typescript-eslint/types": "4.33.0",
@@ -1424,11 +1432,19 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@lit/react": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@lit/react/-/react-1.0.8.tgz",
+ "integrity": "sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw==",
+ "license": "BSD-3-Clause",
+ "peerDependencies": {
+ "@types/react": "17 || 18 || 19"
+ }
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
"dependencies": {
"@nodelib/fs.stat": "2.0.5",
"run-parallel": "^1.1.9"
@@ -1441,7 +1457,6 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
"engines": {
"node": ">= 8"
}
@@ -1450,7 +1465,6 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
"fastq": "^1.6.0"
@@ -1733,6 +1747,7 @@
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.0.tgz",
"integrity": "sha512-6Uj2Z3lzLuufYAE7asZ6NLKgSwsB9uxl84Eh34PASnUjfj32GkrP4DtKK7fNeh1WFGGyffsTDka3gwtl+4reUg==",
"license": "MIT",
+ "peer": true,
"bin": {
"stencil": "bin/stencil"
},
@@ -1855,6 +1870,34 @@
"win32"
]
},
+ "node_modules/@stencil/react-output-target": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@stencil/react-output-target/-/react-output-target-1.5.0.tgz",
+ "integrity": "sha512-0xu0ZKhDpnat1d5nM4wEQvLReqYtYVdekb6SCyvdwTm2/0KEU4+eKSurpzVVX7U/qjAOL8P8RK78J2Y32FH2sg==",
+ "license": "MIT",
+ "dependencies": {
+ "@lit/react": "^1.0.7",
+ "html-react-parser": "^5.2.2",
+ "react-style-stringify": "^1.2.0",
+ "ts-morph": "^22.0.0"
+ },
+ "peerDependencies": {
+ "@stencil/core": ">=3 || >= 4.0.0-beta.0 || >= 4.0.0",
+ "react": "^18 || ^19",
+ "react-dom": "^18 || ^19"
+ },
+ "peerDependenciesMeta": {
+ "@stencil/core": {
+ "optional": false
+ },
+ "react": {
+ "optional": false
+ },
+ "react-dom": {
+ "optional": false
+ }
+ }
+ },
"node_modules/@szmarczak/http-timer": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
@@ -1960,50 +2003,22 @@
}
},
"node_modules/@testing-library/react": {
- "version": "12.1.5",
- "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz",
- "integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.12.5",
- "@testing-library/dom": "^8.0.0",
- "@types/react-dom": "<18.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "react": "<18.0.0",
- "react-dom": "<18.0.0"
- }
- },
- "node_modules/@testing-library/react-hooks": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-7.0.2.tgz",
- "integrity": "sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==",
+ "version": "13.4.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz",
+ "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.12.5",
- "@types/react": ">=16.9.0",
- "@types/react-dom": ">=16.9.0",
- "@types/react-test-renderer": ">=16.9.0",
- "react-error-boundary": "^3.1.0"
+ "@testing-library/dom": "^8.5.0",
+ "@types/react-dom": "^18.0.0"
},
"engines": {
"node": ">=12"
},
"peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0",
- "react-test-renderer": ">=16.9.0"
- },
- "peerDependenciesMeta": {
- "react-dom": {
- "optional": true
- },
- "react-test-renderer": {
- "optional": true
- }
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
}
},
"node_modules/@tootallnate/once": {
@@ -2015,6 +2030,42 @@
"node": ">= 10"
}
},
+ "node_modules/@ts-morph/common": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.23.0.tgz",
+ "integrity": "sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-glob": "^3.3.2",
+ "minimatch": "^9.0.3",
+ "mkdirp": "^3.0.1",
+ "path-browserify": "^1.0.1"
+ }
+ },
+ "node_modules/@ts-morph/common/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@ts-morph/common/node_modules/minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@types/aria-query": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
@@ -2204,36 +2255,27 @@
"node_modules/@types/prop-types": {
"version": "15.7.9",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz",
- "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==",
- "dev": true
+ "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g=="
},
"node_modules/@types/react": {
- "version": "17.0.79",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.79.tgz",
- "integrity": "sha512-gavKA8AwJAML9zWHuiQRASjrrPJHbT/zrUDHiUGUf+l5a3pkEd6atvjjq+8y2vfRHBJLQJjFpxSa9I8qe9zHAw==",
- "dev": true,
+ "version": "18.3.28",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.28.tgz",
+ "integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
+ "csstype": "^3.2.2"
}
},
"node_modules/@types/react-dom": {
- "version": "17.0.25",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.25.tgz",
- "integrity": "sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA==",
- "dev": true,
- "dependencies": {
- "@types/react": "^17"
- }
- },
- "node_modules/@types/react-test-renderer": {
- "version": "18.0.5",
- "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.5.tgz",
- "integrity": "sha512-PsnmF4Hpi61PTRX+dTxkjgDdtZ09kFFgPXczoF+yBfOVxn7xBLPvKP1BUrSasYHmerj33rhoJuvpIMsJuyRqHw==",
+ "version": "18.3.7",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz",
+ "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==",
"dev": true,
- "dependencies": {
- "@types/react": "*"
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "^18.0.0"
}
},
"node_modules/@types/responselike": {
@@ -2245,12 +2287,6 @@
"@types/node": "*"
}
},
- "node_modules/@types/scheduler": {
- "version": "0.16.8",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz",
- "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==",
- "dev": true
- },
"node_modules/@types/semver": {
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz",
@@ -2457,6 +2493,7 @@
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
"integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
"dev": true,
+ "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "5.62.0",
"@typescript-eslint/types": "5.62.0",
@@ -2618,6 +2655,7 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true,
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -3174,8 +3212,7 @@
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/boxen": {
"version": "4.2.0",
@@ -3222,7 +3259,6 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
"dependencies": {
"fill-range": "^7.0.1"
},
@@ -3249,6 +3285,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "peer": true,
"dependencies": {
"caniuse-lite": "^1.0.30001646",
"electron-to-chromium": "^1.5.4",
@@ -3604,6 +3641,12 @@
"node": ">= 0.12.0"
}
},
+ "node_modules/code-block-writer": {
+ "version": "13.0.3",
+ "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz",
+ "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==",
+ "license": "MIT"
+ },
"node_modules/code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
@@ -3809,10 +3852,10 @@
"dev": true
},
"node_modules/csstype": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
- "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
- "dev": true
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
+ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
+ "license": "MIT"
},
"node_modules/data-urls": {
"version": "3.0.2",
@@ -4149,6 +4192,32 @@
"integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
"dev": true
},
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
"node_modules/domexception": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
@@ -4162,6 +4231,35 @@
"node": ">=12"
}
},
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
"node_modules/dot-prop": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
@@ -4254,7 +4352,6 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dev": true,
"engines": {
"node": ">=0.12"
},
@@ -4473,6 +4570,7 @@
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
"integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
"dev": true,
+ "peer": true,
"dependencies": {
"@babel/code-frame": "7.12.11",
"@eslint/eslintrc": "^0.4.3",
@@ -4922,7 +5020,6 @@
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
"integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
- "dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
@@ -4950,7 +5047,6 @@
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
"integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
- "dev": true,
"dependencies": {
"reusify": "^1.0.4"
}
@@ -5034,7 +5130,6 @@
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -5291,7 +5386,6 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -5579,6 +5673,22 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
+ "node_modules/html-dom-parser": {
+ "version": "5.1.8",
+ "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-5.1.8.tgz",
+ "integrity": "sha512-MCIUng//mF2qTtGHXJWr6OLfHWmg3Pm8ezpfiltF83tizPWY17JxT4dRLE8lykJ5bChJELoY3onQKPbufJHxYA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/remarkablemark"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domhandler": "5.0.3",
+ "htmlparser2": "10.1.0"
+ }
+ },
"node_modules/html-encoding-sniffer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
@@ -5597,6 +5707,68 @@
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"dev": true
},
+ "node_modules/html-react-parser": {
+ "version": "5.2.17",
+ "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-5.2.17.tgz",
+ "integrity": "sha512-m+K/7Moq1jodAB4VL0RXSOmtwLUYoAsikZhwd+hGQe5Vtw2dbWfpFd60poxojMU0Tsh9w59mN1QLEcoHz0Dx9w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/remarkablemark"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/html-react-parser"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domhandler": "5.0.3",
+ "html-dom-parser": "5.1.8",
+ "react-property": "2.0.2",
+ "style-to-js": "1.1.21"
+ },
+ "peerDependencies": {
+ "@types/react": "0.14 || 15 || 16 || 17 || 18 || 19",
+ "react": "0.14 || 15 || 16 || 17 || 18 || 19"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
+ "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.2.2",
+ "entities": "^7.0.1"
+ }
+ },
+ "node_modules/htmlparser2/node_modules/entities": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
+ "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
"node_modules/http-cache-semantics": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
@@ -5744,6 +5916,12 @@
"integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
"dev": true
},
+ "node_modules/inline-style-parser": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz",
+ "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==",
+ "license": "MIT"
+ },
"node_modules/inquirer": {
"version": "7.3.3",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
@@ -6190,7 +6368,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -6217,7 +6394,6 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
"dependencies": {
"is-extglob": "^2.1.1"
},
@@ -6278,7 +6454,6 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
"engines": {
"node": ">=0.12.0"
}
@@ -6693,6 +6868,7 @@
"resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
"integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
"dev": true,
+ "peer": true,
"dependencies": {
"@jest/core": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -7974,8 +8150,7 @@
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"node_modules/js-yaml": {
"version": "3.14.1",
@@ -8680,7 +8855,6 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dev": true,
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
},
@@ -8830,7 +9004,6 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
"engines": {
"node": ">= 8"
}
@@ -8839,7 +9012,6 @@
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
"dependencies": {
"braces": "^3.0.2",
"picomatch": "^2.3.1"
@@ -8934,6 +9106,21 @@
"node": ">= 6"
}
},
+ "node_modules/mkdirp": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+ "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -9727,6 +9914,12 @@
"url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "license": "MIT"
+ },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -9785,7 +9978,6 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
"engines": {
"node": ">=8.6"
},
@@ -9867,6 +10059,7 @@
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
"dev": true,
+ "peer": true,
"bin": {
"prettier": "bin-prettier.js"
},
@@ -10027,7 +10220,6 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -10077,46 +10269,30 @@
}
},
"node_modules/react": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
- "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
- "dev": true,
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
+ "loose-envify": "^1.1.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-dom": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
- "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
- "dev": true,
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "scheduler": "^0.20.2"
- },
- "peerDependencies": {
- "react": "17.0.2"
- }
- },
- "node_modules/react-error-boundary": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz",
- "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.12.5"
- },
- "engines": {
- "node": ">=10",
- "npm": ">=6"
+ "scheduler": "^0.23.2"
},
"peerDependencies": {
- "react": ">=16.13.1"
+ "react": "^18.3.1"
}
},
"node_modules/react-is": {
@@ -10125,6 +10301,24 @@
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
"dev": true
},
+ "node_modules/react-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.2.tgz",
+ "integrity": "sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug==",
+ "license": "MIT"
+ },
+ "node_modules/react-style-stringify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/react-style-stringify/-/react-style-stringify-1.2.0.tgz",
+ "integrity": "sha512-88JZckqgbfXJaGcDQoTFKRmBwHBF0Ddaxz3PL9Q+vywAJruBY+NdN+ZiKSBe7r/pWtjbt0naZdtH5oNI1X3FLA==",
+ "license": "MIT",
+ "dependencies": {
+ "@emotion/unitless": "^0.10.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/read-pkg": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
@@ -10365,7 +10559,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true,
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
@@ -10391,6 +10584,7 @@
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.3.0.tgz",
"integrity": "sha512-scIi1NrKLDIYSPK66jjECtII7vIgdAMFmFo8h6qm++I6nN9qDSV35Ku6erzGVqYjx+lj+j5wkusRMr++8SyDZg==",
"dev": true,
+ "peer": true,
"bin": {
"rollup": "dist/bin/rollup"
},
@@ -10427,7 +10621,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -10515,13 +10708,12 @@
}
},
"node_modules/scheduler": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
- "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
- "dev": true,
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "license": "MIT",
"dependencies": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
+ "loose-envify": "^1.1.0"
}
},
"node_modules/scoped-regex": {
@@ -10911,6 +11103,24 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/style-to-js": {
+ "version": "1.1.21",
+ "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz",
+ "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "style-to-object": "1.0.14"
+ }
+ },
+ "node_modules/style-to-object": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz",
+ "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==",
+ "license": "MIT",
+ "dependencies": {
+ "inline-style-parser": "0.2.7"
+ }
+ },
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -11112,7 +11322,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
"dependencies": {
"is-number": "^7.0.0"
},
@@ -11222,6 +11431,16 @@
"node": ">=12"
}
},
+ "node_modules/ts-morph": {
+ "version": "22.0.0",
+ "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-22.0.0.tgz",
+ "integrity": "sha512-M9MqFGZREyeb5fTl6gNHKZLqBQA0TjA1lea+CR48R8EBTDuWrNqW6ccC5QvjNR4s6wDumD3LTCjOFSp9iwlzaw==",
+ "license": "MIT",
+ "dependencies": {
+ "@ts-morph/common": "~0.23.0",
+ "code-block-writer": "^13.0.1"
+ }
+ },
"node_modules/tsconfig-paths": {
"version": "3.14.2",
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
@@ -11393,6 +11612,7 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
"integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
"dev": true,
+ "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
diff --git a/packages/react/package.json b/packages/react/package.json
index a08514a5476..0f649238f4d 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -41,6 +41,7 @@
],
"dependencies": {
"@ionic/core": "^8.8.3",
+ "@stencil/react-output-target": "^1.5.0",
"ionicons": "^8.0.13",
"tslib": "*"
},
@@ -53,12 +54,11 @@
"@ionic/prettier-config": "^2.0.0",
"@rollup/plugin-typescript": "^11.1.5",
"@testing-library/jest-dom": "^5.11.6",
- "@testing-library/react": "^12.1.5",
- "@testing-library/react-hooks": "^7.0.1",
+ "@testing-library/react": "^13.4.0",
"@types/jest": "^26.0.15",
"@types/node": "^14.0.14",
- "@types/react": "^17.0.79",
- "@types/react-dom": "^17.0.25",
+ "@types/react": "^18.3.28",
+ "@types/react-dom": "^18.3.7",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"@typescript-eslint/parser": "^5.48.2",
"eslint": "^7.32.0",
@@ -67,8 +67,8 @@
"jest-environment-jsdom": "^29.7.0",
"np": "^6.4.0",
"prettier": "^2.8.3",
- "react": "^17.0.2",
- "react-dom": "^17.0.2",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
"rimraf": "^3.0.2",
"rollup": "^4.2.0",
"ts-jest": "^29.1.3",
diff --git a/packages/react/src/components/IonIcon.tsx b/packages/react/src/components/IonIcon.tsx
index a873f3c4577..cf02827e838 100644
--- a/packages/react/src/components/IonIcon.tsx
+++ b/packages/react/src/components/IonIcon.tsx
@@ -21,6 +21,7 @@ interface IonIconProps {
type InternalProps = IonIconProps & {
forwardedRef?: React.ForwardedRef;
+ children: React.ReactNode;
};
class IonIconContainer extends React.PureComponent {
diff --git a/packages/react/src/components/IonPage.tsx b/packages/react/src/components/IonPage.tsx
index 6b0b05b5be6..67e6dadfbec 100644
--- a/packages/react/src/components/IonPage.tsx
+++ b/packages/react/src/components/IonPage.tsx
@@ -11,6 +11,7 @@ interface IonPageProps extends IonicReactProps {}
interface IonPageInternalProps extends IonPageProps {
forwardedRef?: React.ForwardedRef;
+ children: React.ReactNode;
}
class IonPageInternal extends React.Component {
diff --git a/packages/react/src/components/IonRouterOutlet.tsx b/packages/react/src/components/IonRouterOutlet.tsx
index d7c75b13189..d5eba02dd3f 100644
--- a/packages/react/src/components/IonRouterOutlet.tsx
+++ b/packages/react/src/components/IonRouterOutlet.tsx
@@ -16,6 +16,7 @@ type Props = LocalJSX.IonRouterOutlet & {
interface InternalProps extends Props {
forwardedRef?: React.ForwardedRef;
+ children: React.ReactNode;
}
// eslint-disable-next-line @typescript-eslint/no-empty-interface
diff --git a/packages/react/src/components/components.ts b/packages/react/src/components/components.ts
new file mode 100644
index 00000000000..7080edec552
--- /dev/null
+++ b/packages/react/src/components/components.ts
@@ -0,0 +1,1440 @@
+'use client';
+
+/**
+ * This file was automatically generated by the Stencil React Output Target.
+ * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+/* eslint-disable */
+
+import type { EventName, StencilReactComponent } from '@stencil/react-output-target/runtime';
+import { createComponent } from '@stencil/react-output-target/runtime';
+import React from 'react';
+
+import {
+ type AccordionGroupChangeEventDetail,
+ type BreadcrumbCollapsedClickEventDetail,
+ type CheckboxChangeEventDetail,
+ type DatetimeChangeEventDetail,
+ type InputChangeEventDetail,
+ type InputInputEventDetail,
+ type InputOtpChangeEventDetail,
+ type InputOtpCompleteEventDetail,
+ type InputOtpInputEventDetail,
+ type IonAccordionGroupCustomEvent,
+ type IonBackdropCustomEvent,
+ type IonBreadcrumbsCustomEvent,
+ type IonCheckboxCustomEvent,
+ type IonContentCustomEvent,
+ type IonDatetimeCustomEvent,
+ type IonImgCustomEvent,
+ type IonInfiniteScrollCustomEvent,
+ type IonInputCustomEvent,
+ type IonInputOtpCustomEvent,
+ type IonItemOptionsCustomEvent,
+ type IonItemSlidingCustomEvent,
+ type IonMenuCustomEvent,
+ type IonNavCustomEvent,
+ type IonPickerColumnCustomEvent,
+ type IonRadioCustomEvent,
+ type IonRadioGroupCustomEvent,
+ type IonRangeCustomEvent,
+ type IonRefresherCustomEvent,
+ type IonReorderGroupCustomEvent,
+ type IonSearchbarCustomEvent,
+ type IonSegmentCustomEvent,
+ type IonSegmentViewCustomEvent,
+ type IonSelectCustomEvent,
+ type IonSplitPaneCustomEvent,
+ type IonTextareaCustomEvent,
+ type IonToggleCustomEvent,
+ type ItemReorderEventDetail,
+ type MenuCloseEventDetail,
+ type PickerColumnChangeEventDetail,
+ type RadioGroupChangeEventDetail,
+ type RangeChangeEventDetail,
+ type RangeKnobMoveEndEventDetail,
+ type RangeKnobMoveStartEventDetail,
+ type RefresherEventDetail,
+ type RefresherPullEndEventDetail,
+ type ReorderEndEventDetail,
+ type ReorderMoveEventDetail,
+ type ScrollBaseDetail,
+ type ScrollDetail,
+ type SearchbarChangeEventDetail,
+ type SearchbarInputEventDetail,
+ type SegmentChangeEventDetail,
+ type SegmentViewScrollEvent,
+ type SelectChangeEventDetail,
+ type TextareaChangeEventDetail,
+ type TextareaInputEventDetail,
+ type ToggleChangeEventDetail,
+} from '@ionic/core';
+import type { Components } from '@ionic/core/components';
+import {
+ IonAccordionGroup as IonAccordionGroupElement,
+ defineCustomElement as defineIonAccordionGroup,
+} from '@ionic/core/components/ion-accordion-group.js';
+import {
+ IonAccordion as IonAccordionElement,
+ defineCustomElement as defineIonAccordion,
+} from '@ionic/core/components/ion-accordion.js';
+import {
+ IonAvatar as IonAvatarElement,
+ defineCustomElement as defineIonAvatar,
+} from '@ionic/core/components/ion-avatar.js';
+import {
+ IonBackdrop as IonBackdropElement,
+ defineCustomElement as defineIonBackdrop,
+} from '@ionic/core/components/ion-backdrop.js';
+import {
+ IonBadge as IonBadgeElement,
+ defineCustomElement as defineIonBadge,
+} from '@ionic/core/components/ion-badge.js';
+import {
+ IonBreadcrumbs as IonBreadcrumbsElement,
+ defineCustomElement as defineIonBreadcrumbs,
+} from '@ionic/core/components/ion-breadcrumbs.js';
+import {
+ IonButtons as IonButtonsElement,
+ defineCustomElement as defineIonButtons,
+} from '@ionic/core/components/ion-buttons.js';
+import {
+ IonCardContent as IonCardContentElement,
+ defineCustomElement as defineIonCardContent,
+} from '@ionic/core/components/ion-card-content.js';
+import {
+ IonCardHeader as IonCardHeaderElement,
+ defineCustomElement as defineIonCardHeader,
+} from '@ionic/core/components/ion-card-header.js';
+import {
+ IonCardSubtitle as IonCardSubtitleElement,
+ defineCustomElement as defineIonCardSubtitle,
+} from '@ionic/core/components/ion-card-subtitle.js';
+import {
+ IonCardTitle as IonCardTitleElement,
+ defineCustomElement as defineIonCardTitle,
+} from '@ionic/core/components/ion-card-title.js';
+import {
+ IonCheckbox as IonCheckboxElement,
+ defineCustomElement as defineIonCheckbox,
+} from '@ionic/core/components/ion-checkbox.js';
+import { IonChip as IonChipElement, defineCustomElement as defineIonChip } from '@ionic/core/components/ion-chip.js';
+import { IonCol as IonColElement, defineCustomElement as defineIonCol } from '@ionic/core/components/ion-col.js';
+import {
+ IonContent as IonContentElement,
+ defineCustomElement as defineIonContent,
+} from '@ionic/core/components/ion-content.js';
+import {
+ IonDatetimeButton as IonDatetimeButtonElement,
+ defineCustomElement as defineIonDatetimeButton,
+} from '@ionic/core/components/ion-datetime-button.js';
+import {
+ IonDatetime as IonDatetimeElement,
+ defineCustomElement as defineIonDatetime,
+} from '@ionic/core/components/ion-datetime.js';
+import {
+ IonFabList as IonFabListElement,
+ defineCustomElement as defineIonFabList,
+} from '@ionic/core/components/ion-fab-list.js';
+import { IonFab as IonFabElement, defineCustomElement as defineIonFab } from '@ionic/core/components/ion-fab.js';
+import {
+ IonFooter as IonFooterElement,
+ defineCustomElement as defineIonFooter,
+} from '@ionic/core/components/ion-footer.js';
+import { IonGrid as IonGridElement, defineCustomElement as defineIonGrid } from '@ionic/core/components/ion-grid.js';
+import {
+ IonHeader as IonHeaderElement,
+ defineCustomElement as defineIonHeader,
+} from '@ionic/core/components/ion-header.js';
+import { IonImg as IonImgElement, defineCustomElement as defineIonImg } from '@ionic/core/components/ion-img.js';
+import {
+ IonInfiniteScrollContent as IonInfiniteScrollContentElement,
+ defineCustomElement as defineIonInfiniteScrollContent,
+} from '@ionic/core/components/ion-infinite-scroll-content.js';
+import {
+ IonInfiniteScroll as IonInfiniteScrollElement,
+ defineCustomElement as defineIonInfiniteScroll,
+} from '@ionic/core/components/ion-infinite-scroll.js';
+import {
+ IonInputOtp as IonInputOtpElement,
+ defineCustomElement as defineIonInputOtp,
+} from '@ionic/core/components/ion-input-otp.js';
+import {
+ IonInputPasswordToggle as IonInputPasswordToggleElement,
+ defineCustomElement as defineIonInputPasswordToggle,
+} from '@ionic/core/components/ion-input-password-toggle.js';
+import {
+ IonInput as IonInputElement,
+ defineCustomElement as defineIonInput,
+} from '@ionic/core/components/ion-input.js';
+import {
+ IonItemDivider as IonItemDividerElement,
+ defineCustomElement as defineIonItemDivider,
+} from '@ionic/core/components/ion-item-divider.js';
+import {
+ IonItemGroup as IonItemGroupElement,
+ defineCustomElement as defineIonItemGroup,
+} from '@ionic/core/components/ion-item-group.js';
+import {
+ IonItemOptions as IonItemOptionsElement,
+ defineCustomElement as defineIonItemOptions,
+} from '@ionic/core/components/ion-item-options.js';
+import {
+ IonItemSliding as IonItemSlidingElement,
+ defineCustomElement as defineIonItemSliding,
+} from '@ionic/core/components/ion-item-sliding.js';
+import {
+ IonLabel as IonLabelElement,
+ defineCustomElement as defineIonLabel,
+} from '@ionic/core/components/ion-label.js';
+import {
+ IonListHeader as IonListHeaderElement,
+ defineCustomElement as defineIonListHeader,
+} from '@ionic/core/components/ion-list-header.js';
+import { IonList as IonListElement, defineCustomElement as defineIonList } from '@ionic/core/components/ion-list.js';
+import {
+ IonMenuButton as IonMenuButtonElement,
+ defineCustomElement as defineIonMenuButton,
+} from '@ionic/core/components/ion-menu-button.js';
+import {
+ IonMenuToggle as IonMenuToggleElement,
+ defineCustomElement as defineIonMenuToggle,
+} from '@ionic/core/components/ion-menu-toggle.js';
+import { IonMenu as IonMenuElement, defineCustomElement as defineIonMenu } from '@ionic/core/components/ion-menu.js';
+import {
+ IonNavLink as IonNavLinkElement,
+ defineCustomElement as defineIonNavLink,
+} from '@ionic/core/components/ion-nav-link.js';
+import { IonNav as IonNavElement, defineCustomElement as defineIonNav } from '@ionic/core/components/ion-nav.js';
+import { IonNote as IonNoteElement, defineCustomElement as defineIonNote } from '@ionic/core/components/ion-note.js';
+import {
+ IonPickerColumnOption as IonPickerColumnOptionElement,
+ defineCustomElement as defineIonPickerColumnOption,
+} from '@ionic/core/components/ion-picker-column-option.js';
+import {
+ IonPickerColumn as IonPickerColumnElement,
+ defineCustomElement as defineIonPickerColumn,
+} from '@ionic/core/components/ion-picker-column.js';
+import {
+ IonPicker as IonPickerElement,
+ defineCustomElement as defineIonPicker,
+} from '@ionic/core/components/ion-picker.js';
+import {
+ IonProgressBar as IonProgressBarElement,
+ defineCustomElement as defineIonProgressBar,
+} from '@ionic/core/components/ion-progress-bar.js';
+import {
+ IonRadioGroup as IonRadioGroupElement,
+ defineCustomElement as defineIonRadioGroup,
+} from '@ionic/core/components/ion-radio-group.js';
+import {
+ IonRadio as IonRadioElement,
+ defineCustomElement as defineIonRadio,
+} from '@ionic/core/components/ion-radio.js';
+import {
+ IonRange as IonRangeElement,
+ defineCustomElement as defineIonRange,
+} from '@ionic/core/components/ion-range.js';
+import {
+ IonRefresherContent as IonRefresherContentElement,
+ defineCustomElement as defineIonRefresherContent,
+} from '@ionic/core/components/ion-refresher-content.js';
+import {
+ IonRefresher as IonRefresherElement,
+ defineCustomElement as defineIonRefresher,
+} from '@ionic/core/components/ion-refresher.js';
+import {
+ IonReorderGroup as IonReorderGroupElement,
+ defineCustomElement as defineIonReorderGroup,
+} from '@ionic/core/components/ion-reorder-group.js';
+import {
+ IonReorder as IonReorderElement,
+ defineCustomElement as defineIonReorder,
+} from '@ionic/core/components/ion-reorder.js';
+import {
+ IonRippleEffect as IonRippleEffectElement,
+ defineCustomElement as defineIonRippleEffect,
+} from '@ionic/core/components/ion-ripple-effect.js';
+import { IonRow as IonRowElement, defineCustomElement as defineIonRow } from '@ionic/core/components/ion-row.js';
+import {
+ IonSearchbar as IonSearchbarElement,
+ defineCustomElement as defineIonSearchbar,
+} from '@ionic/core/components/ion-searchbar.js';
+import {
+ IonSegmentButton as IonSegmentButtonElement,
+ defineCustomElement as defineIonSegmentButton,
+} from '@ionic/core/components/ion-segment-button.js';
+import {
+ IonSegmentContent as IonSegmentContentElement,
+ defineCustomElement as defineIonSegmentContent,
+} from '@ionic/core/components/ion-segment-content.js';
+import {
+ IonSegmentView as IonSegmentViewElement,
+ defineCustomElement as defineIonSegmentView,
+} from '@ionic/core/components/ion-segment-view.js';
+import {
+ IonSegment as IonSegmentElement,
+ defineCustomElement as defineIonSegment,
+} from '@ionic/core/components/ion-segment.js';
+import {
+ IonSelectModal as IonSelectModalElement,
+ defineCustomElement as defineIonSelectModal,
+} from '@ionic/core/components/ion-select-modal.js';
+import {
+ IonSelectOption as IonSelectOptionElement,
+ defineCustomElement as defineIonSelectOption,
+} from '@ionic/core/components/ion-select-option.js';
+import {
+ IonSelect as IonSelectElement,
+ defineCustomElement as defineIonSelect,
+} from '@ionic/core/components/ion-select.js';
+import {
+ IonSkeletonText as IonSkeletonTextElement,
+ defineCustomElement as defineIonSkeletonText,
+} from '@ionic/core/components/ion-skeleton-text.js';
+import {
+ IonSpinner as IonSpinnerElement,
+ defineCustomElement as defineIonSpinner,
+} from '@ionic/core/components/ion-spinner.js';
+import {
+ IonSplitPane as IonSplitPaneElement,
+ defineCustomElement as defineIonSplitPane,
+} from '@ionic/core/components/ion-split-pane.js';
+import { IonTab as IonTabElement, defineCustomElement as defineIonTab } from '@ionic/core/components/ion-tab.js';
+import { IonText as IonTextElement, defineCustomElement as defineIonText } from '@ionic/core/components/ion-text.js';
+import {
+ IonTextarea as IonTextareaElement,
+ defineCustomElement as defineIonTextarea,
+} from '@ionic/core/components/ion-textarea.js';
+import {
+ IonThumbnail as IonThumbnailElement,
+ defineCustomElement as defineIonThumbnail,
+} from '@ionic/core/components/ion-thumbnail.js';
+import {
+ IonTitle as IonTitleElement,
+ defineCustomElement as defineIonTitle,
+} from '@ionic/core/components/ion-title.js';
+import {
+ IonToggle as IonToggleElement,
+ defineCustomElement as defineIonToggle,
+} from '@ionic/core/components/ion-toggle.js';
+import {
+ IonToolbar as IonToolbarElement,
+ defineCustomElement as defineIonToolbar,
+} from '@ionic/core/components/ion-toolbar.js';
+
+export type IonAccordionEvents = NonNullable;
+
+export const IonAccordion: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-accordion',
+ elementClass: IonAccordionElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonAccordionEvents,
+ defineCustomElement: defineIonAccordion,
+ });
+
+export type IonAccordionGroupEvents = {
+ onIonChange: EventName>;
+};
+
+export const IonAccordionGroup: StencilReactComponent<
+ IonAccordionGroupElement,
+ IonAccordionGroupEvents,
+ Components.IonAccordionGroup
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-accordion-group',
+ elementClass: IonAccordionGroupElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: { onIonChange: 'ionChange' } as IonAccordionGroupEvents,
+ defineCustomElement: defineIonAccordionGroup,
+});
+
+export type IonAvatarEvents = NonNullable;
+
+export const IonAvatar: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-avatar',
+ elementClass: IonAvatarElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonAvatarEvents,
+ defineCustomElement: defineIonAvatar,
+ });
+
+export type IonBackdropEvents = { onIonBackdropTap: EventName> };
+
+export const IonBackdrop: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-backdrop',
+ elementClass: IonBackdropElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: { onIonBackdropTap: 'ionBackdropTap' } as IonBackdropEvents,
+ defineCustomElement: defineIonBackdrop,
+ });
+
+export type IonBadgeEvents = NonNullable;
+
+export const IonBadge: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-badge',
+ elementClass: IonBadgeElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonBadgeEvents,
+ defineCustomElement: defineIonBadge,
+ });
+
+export type IonBreadcrumbsEvents = {
+ onIonCollapsedClick: EventName>;
+};
+
+export const IonBreadcrumbs: StencilReactComponent<
+ IonBreadcrumbsElement,
+ IonBreadcrumbsEvents,
+ Components.IonBreadcrumbs
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-breadcrumbs',
+ elementClass: IonBreadcrumbsElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: { onIonCollapsedClick: 'ionCollapsedClick' } as IonBreadcrumbsEvents,
+ defineCustomElement: defineIonBreadcrumbs,
+});
+
+export type IonButtonsEvents = NonNullable;
+
+export const IonButtons: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-buttons',
+ elementClass: IonButtonsElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonButtonsEvents,
+ defineCustomElement: defineIonButtons,
+ });
+
+export type IonCardContentEvents = NonNullable;
+
+export const IonCardContent: StencilReactComponent<
+ IonCardContentElement,
+ IonCardContentEvents,
+ Components.IonCardContent
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-card-content',
+ elementClass: IonCardContentElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonCardContentEvents,
+ defineCustomElement: defineIonCardContent,
+});
+
+export type IonCardHeaderEvents = NonNullable;
+
+export const IonCardHeader: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-card-header',
+ elementClass: IonCardHeaderElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonCardHeaderEvents,
+ defineCustomElement: defineIonCardHeader,
+ });
+
+export type IonCardSubtitleEvents = NonNullable;
+
+export const IonCardSubtitle: StencilReactComponent<
+ IonCardSubtitleElement,
+ IonCardSubtitleEvents,
+ Components.IonCardSubtitle
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-card-subtitle',
+ elementClass: IonCardSubtitleElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonCardSubtitleEvents,
+ defineCustomElement: defineIonCardSubtitle,
+});
+
+export type IonCardTitleEvents = NonNullable;
+
+export const IonCardTitle: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-card-title',
+ elementClass: IonCardTitleElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonCardTitleEvents,
+ defineCustomElement: defineIonCardTitle,
+ });
+
+export type IonCheckboxEvents = {
+ onIonChange: EventName>;
+ onIonFocus: EventName>;
+ onIonBlur: EventName>;
+};
+
+export const IonCheckbox: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-checkbox',
+ elementClass: IonCheckboxElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonChange: 'ionChange',
+ onIonFocus: 'ionFocus',
+ onIonBlur: 'ionBlur',
+ } as IonCheckboxEvents,
+ defineCustomElement: defineIonCheckbox,
+ });
+
+export type IonChipEvents = NonNullable;
+
+export const IonChip: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-chip',
+ elementClass: IonChipElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonChipEvents,
+ defineCustomElement: defineIonChip,
+ });
+
+export type IonColEvents = NonNullable;
+
+export const IonCol: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-col',
+ elementClass: IonColElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonColEvents,
+ defineCustomElement: defineIonCol,
+ });
+
+export type IonContentEvents = {
+ onIonScrollStart: EventName>;
+ onIonScroll: EventName>;
+ onIonScrollEnd: EventName>;
+};
+
+export const IonContent: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-content',
+ elementClass: IonContentElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonScrollStart: 'ionScrollStart',
+ onIonScroll: 'ionScroll',
+ onIonScrollEnd: 'ionScrollEnd',
+ } as IonContentEvents,
+ defineCustomElement: defineIonContent,
+ });
+
+export type IonDatetimeEvents = {
+ onIonCancel: EventName>;
+ onIonChange: EventName>;
+ onIonFocus: EventName>;
+ onIonBlur: EventName>;
+};
+
+export const IonDatetime: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-datetime',
+ elementClass: IonDatetimeElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonCancel: 'ionCancel',
+ onIonChange: 'ionChange',
+ onIonFocus: 'ionFocus',
+ onIonBlur: 'ionBlur',
+ } as IonDatetimeEvents,
+ defineCustomElement: defineIonDatetime,
+ });
+
+export type IonDatetimeButtonEvents = NonNullable;
+
+export const IonDatetimeButton: StencilReactComponent<
+ IonDatetimeButtonElement,
+ IonDatetimeButtonEvents,
+ Components.IonDatetimeButton
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-datetime-button',
+ elementClass: IonDatetimeButtonElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonDatetimeButtonEvents,
+ defineCustomElement: defineIonDatetimeButton,
+});
+
+export type IonFabEvents = NonNullable;
+
+export const IonFab: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-fab',
+ elementClass: IonFabElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonFabEvents,
+ defineCustomElement: defineIonFab,
+ });
+
+export type IonFabListEvents = NonNullable;
+
+export const IonFabList: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-fab-list',
+ elementClass: IonFabListElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonFabListEvents,
+ defineCustomElement: defineIonFabList,
+ });
+
+export type IonFooterEvents = NonNullable;
+
+export const IonFooter: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-footer',
+ elementClass: IonFooterElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonFooterEvents,
+ defineCustomElement: defineIonFooter,
+ });
+
+export type IonGridEvents = NonNullable;
+
+export const IonGrid: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-grid',
+ elementClass: IonGridElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonGridEvents,
+ defineCustomElement: defineIonGrid,
+ });
+
+export type IonHeaderEvents = NonNullable;
+
+export const IonHeader: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-header',
+ elementClass: IonHeaderElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonHeaderEvents,
+ defineCustomElement: defineIonHeader,
+ });
+
+export type IonImgEvents = {
+ onIonImgWillLoad: EventName>;
+ onIonImgDidLoad: EventName>;
+ onIonError: EventName>;
+};
+
+export const IonImg: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-img',
+ elementClass: IonImgElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonImgWillLoad: 'ionImgWillLoad',
+ onIonImgDidLoad: 'ionImgDidLoad',
+ onIonError: 'ionError',
+ } as IonImgEvents,
+ defineCustomElement: defineIonImg,
+ });
+
+export type IonInfiniteScrollEvents = { onIonInfinite: EventName> };
+
+export const IonInfiniteScroll: StencilReactComponent<
+ IonInfiniteScrollElement,
+ IonInfiniteScrollEvents,
+ Components.IonInfiniteScroll
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-infinite-scroll',
+ elementClass: IonInfiniteScrollElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: { onIonInfinite: 'ionInfinite' } as IonInfiniteScrollEvents,
+ defineCustomElement: defineIonInfiniteScroll,
+});
+
+export type IonInfiniteScrollContentEvents = NonNullable;
+
+export const IonInfiniteScrollContent: StencilReactComponent<
+ IonInfiniteScrollContentElement,
+ IonInfiniteScrollContentEvents,
+ Components.IonInfiniteScrollContent
+> = /*@__PURE__*/ createComponent<
+ IonInfiniteScrollContentElement,
+ IonInfiniteScrollContentEvents,
+ Components.IonInfiniteScrollContent
+>({
+ tagName: 'ion-infinite-scroll-content',
+ elementClass: IonInfiniteScrollContentElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonInfiniteScrollContentEvents,
+ defineCustomElement: defineIonInfiniteScrollContent,
+});
+
+export type IonInputEvents = {
+ onIonInput: EventName>;
+ onIonChange: EventName>;
+ onIonBlur: EventName>;
+ onIonFocus: EventName>;
+};
+
+export const IonInput: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-input',
+ elementClass: IonInputElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonInput: 'ionInput',
+ onIonChange: 'ionChange',
+ onIonBlur: 'ionBlur',
+ onIonFocus: 'ionFocus',
+ } as IonInputEvents,
+ defineCustomElement: defineIonInput,
+ });
+
+export type IonInputOtpEvents = {
+ onIonInput: EventName>;
+ onIonChange: EventName>;
+ onIonComplete: EventName>;
+ onIonBlur: EventName>;
+ onIonFocus: EventName>;
+};
+
+export const IonInputOtp: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-input-otp',
+ elementClass: IonInputOtpElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonInput: 'ionInput',
+ onIonChange: 'ionChange',
+ onIonComplete: 'ionComplete',
+ onIonBlur: 'ionBlur',
+ onIonFocus: 'ionFocus',
+ } as IonInputOtpEvents,
+ defineCustomElement: defineIonInputOtp,
+ });
+
+export type IonInputPasswordToggleEvents = NonNullable;
+
+export const IonInputPasswordToggle: StencilReactComponent<
+ IonInputPasswordToggleElement,
+ IonInputPasswordToggleEvents,
+ Components.IonInputPasswordToggle
+> = /*@__PURE__*/ createComponent<
+ IonInputPasswordToggleElement,
+ IonInputPasswordToggleEvents,
+ Components.IonInputPasswordToggle
+>({
+ tagName: 'ion-input-password-toggle',
+ elementClass: IonInputPasswordToggleElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonInputPasswordToggleEvents,
+ defineCustomElement: defineIonInputPasswordToggle,
+});
+
+export type IonItemDividerEvents = NonNullable;
+
+export const IonItemDivider: StencilReactComponent<
+ IonItemDividerElement,
+ IonItemDividerEvents,
+ Components.IonItemDivider
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-item-divider',
+ elementClass: IonItemDividerElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonItemDividerEvents,
+ defineCustomElement: defineIonItemDivider,
+});
+
+export type IonItemGroupEvents = NonNullable;
+
+export const IonItemGroup: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-item-group',
+ elementClass: IonItemGroupElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonItemGroupEvents,
+ defineCustomElement: defineIonItemGroup,
+ });
+
+export type IonItemOptionsEvents = { onIonSwipe: EventName> };
+
+export const IonItemOptions: StencilReactComponent<
+ IonItemOptionsElement,
+ IonItemOptionsEvents,
+ Components.IonItemOptions
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-item-options',
+ elementClass: IonItemOptionsElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: { onIonSwipe: 'ionSwipe' } as IonItemOptionsEvents,
+ defineCustomElement: defineIonItemOptions,
+});
+
+export type IonItemSlidingEvents = { onIonDrag: EventName> };
+
+export const IonItemSliding: StencilReactComponent<
+ IonItemSlidingElement,
+ IonItemSlidingEvents,
+ Components.IonItemSliding
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-item-sliding',
+ elementClass: IonItemSlidingElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: { onIonDrag: 'ionDrag' } as IonItemSlidingEvents,
+ defineCustomElement: defineIonItemSliding,
+});
+
+export type IonLabelEvents = NonNullable;
+
+export const IonLabel: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-label',
+ elementClass: IonLabelElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonLabelEvents,
+ defineCustomElement: defineIonLabel,
+ });
+
+export type IonListEvents = NonNullable;
+
+export const IonList: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-list',
+ elementClass: IonListElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonListEvents,
+ defineCustomElement: defineIonList,
+ });
+
+export type IonListHeaderEvents = NonNullable;
+
+export const IonListHeader: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-list-header',
+ elementClass: IonListHeaderElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonListHeaderEvents,
+ defineCustomElement: defineIonListHeader,
+ });
+
+export type IonMenuEvents = {
+ onIonWillOpen: EventName>;
+ onIonWillClose: EventName>;
+ onIonDidOpen: EventName>;
+ onIonDidClose: EventName>;
+};
+
+export const IonMenu: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-menu',
+ elementClass: IonMenuElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonWillOpen: 'ionWillOpen',
+ onIonWillClose: 'ionWillClose',
+ onIonDidOpen: 'ionDidOpen',
+ onIonDidClose: 'ionDidClose',
+ } as IonMenuEvents,
+ defineCustomElement: defineIonMenu,
+ });
+
+export type IonMenuButtonEvents = NonNullable;
+
+export const IonMenuButton: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-menu-button',
+ elementClass: IonMenuButtonElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonMenuButtonEvents,
+ defineCustomElement: defineIonMenuButton,
+ });
+
+export type IonMenuToggleEvents = NonNullable;
+
+export const IonMenuToggle: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-menu-toggle',
+ elementClass: IonMenuToggleElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonMenuToggleEvents,
+ defineCustomElement: defineIonMenuToggle,
+ });
+
+export type IonNavEvents = {
+ onIonNavWillChange: EventName>;
+ onIonNavDidChange: EventName>;
+};
+
+export const IonNav: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-nav',
+ elementClass: IonNavElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonNavWillChange: 'ionNavWillChange',
+ onIonNavDidChange: 'ionNavDidChange',
+ } as IonNavEvents,
+ defineCustomElement: defineIonNav,
+ });
+
+export type IonNavLinkEvents = NonNullable;
+
+export const IonNavLink: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-nav-link',
+ elementClass: IonNavLinkElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonNavLinkEvents,
+ defineCustomElement: defineIonNavLink,
+ });
+
+export type IonNoteEvents = NonNullable;
+
+export const IonNote: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-note',
+ elementClass: IonNoteElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonNoteEvents,
+ defineCustomElement: defineIonNote,
+ });
+
+export type IonPickerEvents = NonNullable;
+
+export const IonPicker: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-picker',
+ elementClass: IonPickerElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonPickerEvents,
+ defineCustomElement: defineIonPicker,
+ });
+
+export type IonPickerColumnEvents = {
+ onIonChange: EventName>;
+};
+
+export const IonPickerColumn: StencilReactComponent<
+ IonPickerColumnElement,
+ IonPickerColumnEvents,
+ Components.IonPickerColumn
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-picker-column',
+ elementClass: IonPickerColumnElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: { onIonChange: 'ionChange' } as IonPickerColumnEvents,
+ defineCustomElement: defineIonPickerColumn,
+});
+
+export type IonPickerColumnOptionEvents = NonNullable;
+
+export const IonPickerColumnOption: StencilReactComponent<
+ IonPickerColumnOptionElement,
+ IonPickerColumnOptionEvents,
+ Components.IonPickerColumnOption
+> = /*@__PURE__*/ createComponent<
+ IonPickerColumnOptionElement,
+ IonPickerColumnOptionEvents,
+ Components.IonPickerColumnOption
+>({
+ tagName: 'ion-picker-column-option',
+ elementClass: IonPickerColumnOptionElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonPickerColumnOptionEvents,
+ defineCustomElement: defineIonPickerColumnOption,
+});
+
+export type IonProgressBarEvents = NonNullable;
+
+export const IonProgressBar: StencilReactComponent<
+ IonProgressBarElement,
+ IonProgressBarEvents,
+ Components.IonProgressBar
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-progress-bar',
+ elementClass: IonProgressBarElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonProgressBarEvents,
+ defineCustomElement: defineIonProgressBar,
+});
+
+export type IonRadioEvents = {
+ onIonFocus: EventName>;
+ onIonBlur: EventName>;
+};
+
+export const IonRadio: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-radio',
+ elementClass: IonRadioElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonFocus: 'ionFocus',
+ onIonBlur: 'ionBlur',
+ } as IonRadioEvents,
+ defineCustomElement: defineIonRadio,
+ });
+
+export type IonRadioGroupEvents = { onIonChange: EventName> };
+
+export const IonRadioGroup: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-radio-group',
+ elementClass: IonRadioGroupElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: { onIonChange: 'ionChange' } as IonRadioGroupEvents,
+ defineCustomElement: defineIonRadioGroup,
+ });
+
+export type IonRangeEvents = {
+ onIonChange: EventName>;
+ onIonInput: EventName>;
+ onIonFocus: EventName>;
+ onIonBlur: EventName>;
+ onIonKnobMoveStart: EventName>;
+ onIonKnobMoveEnd: EventName>;
+};
+
+export const IonRange: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-range',
+ elementClass: IonRangeElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonChange: 'ionChange',
+ onIonInput: 'ionInput',
+ onIonFocus: 'ionFocus',
+ onIonBlur: 'ionBlur',
+ onIonKnobMoveStart: 'ionKnobMoveStart',
+ onIonKnobMoveEnd: 'ionKnobMoveEnd',
+ } as IonRangeEvents,
+ defineCustomElement: defineIonRange,
+ });
+
+export type IonRefresherEvents = {
+ onIonRefresh: EventName>;
+ onIonPull: EventName>;
+ onIonStart: EventName>;
+ onIonPullStart: EventName>;
+ onIonPullEnd: EventName>;
+};
+
+export const IonRefresher: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-refresher',
+ elementClass: IonRefresherElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonRefresh: 'ionRefresh',
+ onIonPull: 'ionPull',
+ onIonStart: 'ionStart',
+ onIonPullStart: 'ionPullStart',
+ onIonPullEnd: 'ionPullEnd',
+ } as IonRefresherEvents,
+ defineCustomElement: defineIonRefresher,
+ });
+
+export type IonRefresherContentEvents = NonNullable;
+
+export const IonRefresherContent: StencilReactComponent<
+ IonRefresherContentElement,
+ IonRefresherContentEvents,
+ Components.IonRefresherContent
+> = /*@__PURE__*/ createComponent<
+ IonRefresherContentElement,
+ IonRefresherContentEvents,
+ Components.IonRefresherContent
+>({
+ tagName: 'ion-refresher-content',
+ elementClass: IonRefresherContentElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonRefresherContentEvents,
+ defineCustomElement: defineIonRefresherContent,
+});
+
+export type IonReorderEvents = NonNullable;
+
+export const IonReorder: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-reorder',
+ elementClass: IonReorderElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonReorderEvents,
+ defineCustomElement: defineIonReorder,
+ });
+
+export type IonReorderGroupEvents = {
+ onIonItemReorder: EventName>;
+ onIonReorderStart: EventName>;
+ onIonReorderMove: EventName>;
+ onIonReorderEnd: EventName>;
+};
+
+export const IonReorderGroup: StencilReactComponent<
+ IonReorderGroupElement,
+ IonReorderGroupEvents,
+ Components.IonReorderGroup
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-reorder-group',
+ elementClass: IonReorderGroupElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonItemReorder: 'ionItemReorder',
+ onIonReorderStart: 'ionReorderStart',
+ onIonReorderMove: 'ionReorderMove',
+ onIonReorderEnd: 'ionReorderEnd',
+ } as IonReorderGroupEvents,
+ defineCustomElement: defineIonReorderGroup,
+});
+
+export type IonRippleEffectEvents = NonNullable;
+
+export const IonRippleEffect: StencilReactComponent<
+ IonRippleEffectElement,
+ IonRippleEffectEvents,
+ Components.IonRippleEffect
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-ripple-effect',
+ elementClass: IonRippleEffectElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonRippleEffectEvents,
+ defineCustomElement: defineIonRippleEffect,
+});
+
+export type IonRowEvents = NonNullable;
+
+export const IonRow: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-row',
+ elementClass: IonRowElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonRowEvents,
+ defineCustomElement: defineIonRow,
+ });
+
+export type IonSearchbarEvents = {
+ onIonInput: EventName>;
+ onIonChange: EventName>;
+ onIonCancel: EventName>;
+ onIonClear: EventName>;
+ onIonBlur: EventName>;
+ onIonFocus: EventName>;
+};
+
+export const IonSearchbar: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-searchbar',
+ elementClass: IonSearchbarElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonInput: 'ionInput',
+ onIonChange: 'ionChange',
+ onIonCancel: 'ionCancel',
+ onIonClear: 'ionClear',
+ onIonBlur: 'ionBlur',
+ onIonFocus: 'ionFocus',
+ } as IonSearchbarEvents,
+ defineCustomElement: defineIonSearchbar,
+ });
+
+export type IonSegmentEvents = { onIonChange: EventName> };
+
+export const IonSegment: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-segment',
+ elementClass: IonSegmentElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: { onIonChange: 'ionChange' } as IonSegmentEvents,
+ defineCustomElement: defineIonSegment,
+ });
+
+export type IonSegmentButtonEvents = NonNullable;
+
+export const IonSegmentButton: StencilReactComponent<
+ IonSegmentButtonElement,
+ IonSegmentButtonEvents,
+ Components.IonSegmentButton
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-segment-button',
+ elementClass: IonSegmentButtonElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonSegmentButtonEvents,
+ defineCustomElement: defineIonSegmentButton,
+});
+
+export type IonSegmentContentEvents = NonNullable;
+
+export const IonSegmentContent: StencilReactComponent<
+ IonSegmentContentElement,
+ IonSegmentContentEvents,
+ Components.IonSegmentContent
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-segment-content',
+ elementClass: IonSegmentContentElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonSegmentContentEvents,
+ defineCustomElement: defineIonSegmentContent,
+});
+
+export type IonSegmentViewEvents = {
+ onIonSegmentViewScroll: EventName>;
+};
+
+export const IonSegmentView: StencilReactComponent<
+ IonSegmentViewElement,
+ IonSegmentViewEvents,
+ Components.IonSegmentView
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-segment-view',
+ elementClass: IonSegmentViewElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: { onIonSegmentViewScroll: 'ionSegmentViewScroll' } as IonSegmentViewEvents,
+ defineCustomElement: defineIonSegmentView,
+});
+
+export type IonSelectEvents = {
+ onIonChange: EventName>;
+ onIonCancel: EventName>;
+ onIonDismiss: EventName>;
+ onIonFocus: EventName>;
+ onIonBlur: EventName>;
+};
+
+export const IonSelect: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-select',
+ elementClass: IonSelectElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonChange: 'ionChange',
+ onIonCancel: 'ionCancel',
+ onIonDismiss: 'ionDismiss',
+ onIonFocus: 'ionFocus',
+ onIonBlur: 'ionBlur',
+ } as IonSelectEvents,
+ defineCustomElement: defineIonSelect,
+ });
+
+export type IonSelectModalEvents = NonNullable;
+
+export const IonSelectModal: StencilReactComponent<
+ IonSelectModalElement,
+ IonSelectModalEvents,
+ Components.IonSelectModal
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-select-modal',
+ elementClass: IonSelectModalElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonSelectModalEvents,
+ defineCustomElement: defineIonSelectModal,
+});
+
+export type IonSelectOptionEvents = NonNullable;
+
+export const IonSelectOption: StencilReactComponent<
+ IonSelectOptionElement,
+ IonSelectOptionEvents,
+ Components.IonSelectOption
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-select-option',
+ elementClass: IonSelectOptionElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonSelectOptionEvents,
+ defineCustomElement: defineIonSelectOption,
+});
+
+export type IonSkeletonTextEvents = NonNullable;
+
+export const IonSkeletonText: StencilReactComponent<
+ IonSkeletonTextElement,
+ IonSkeletonTextEvents,
+ Components.IonSkeletonText
+> = /*@__PURE__*/ createComponent({
+ tagName: 'ion-skeleton-text',
+ elementClass: IonSkeletonTextElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonSkeletonTextEvents,
+ defineCustomElement: defineIonSkeletonText,
+});
+
+export type IonSpinnerEvents = NonNullable;
+
+export const IonSpinner: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-spinner',
+ elementClass: IonSpinnerElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonSpinnerEvents,
+ defineCustomElement: defineIonSpinner,
+ });
+
+export type IonSplitPaneEvents = { onIonSplitPaneVisible: EventName> };
+
+export const IonSplitPane: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-split-pane',
+ elementClass: IonSplitPaneElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: { onIonSplitPaneVisible: 'ionSplitPaneVisible' } as IonSplitPaneEvents,
+ defineCustomElement: defineIonSplitPane,
+ });
+
+export type IonTabEvents = NonNullable;
+
+export const IonTab: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-tab',
+ elementClass: IonTabElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonTabEvents,
+ defineCustomElement: defineIonTab,
+ });
+
+export type IonTextEvents = NonNullable;
+
+export const IonText: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-text',
+ elementClass: IonTextElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonTextEvents,
+ defineCustomElement: defineIonText,
+ });
+
+export type IonTextareaEvents = {
+ onIonChange: EventName>;
+ onIonInput: EventName>;
+ onIonBlur: EventName>;
+ onIonFocus: EventName>;
+};
+
+export const IonTextarea: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-textarea',
+ elementClass: IonTextareaElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonChange: 'ionChange',
+ onIonInput: 'ionInput',
+ onIonBlur: 'ionBlur',
+ onIonFocus: 'ionFocus',
+ } as IonTextareaEvents,
+ defineCustomElement: defineIonTextarea,
+ });
+
+export type IonThumbnailEvents = NonNullable;
+
+export const IonThumbnail: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-thumbnail',
+ elementClass: IonThumbnailElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonThumbnailEvents,
+ defineCustomElement: defineIonThumbnail,
+ });
+
+export type IonTitleEvents = NonNullable;
+
+export const IonTitle: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-title',
+ elementClass: IonTitleElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonTitleEvents,
+ defineCustomElement: defineIonTitle,
+ });
+
+export type IonToggleEvents = {
+ onIonChange: EventName>;
+ onIonFocus: EventName>;
+ onIonBlur: EventName>;
+};
+
+export const IonToggle: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-toggle',
+ elementClass: IonToggleElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {
+ onIonChange: 'ionChange',
+ onIonFocus: 'ionFocus',
+ onIonBlur: 'ionBlur',
+ } as IonToggleEvents,
+ defineCustomElement: defineIonToggle,
+ });
+
+export type IonToolbarEvents = NonNullable;
+
+export const IonToolbar: StencilReactComponent =
+ /*@__PURE__*/ createComponent({
+ tagName: 'ion-toolbar',
+ elementClass: IonToolbarElement,
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
+ react: React,
+ events: {} as IonToolbarEvents,
+ defineCustomElement: defineIonToolbar,
+ });
diff --git a/packages/react/src/components/createControllerComponent.tsx b/packages/react/src/components/createControllerComponent.tsx
index 15688a7f3b9..63631caf130 100644
--- a/packages/react/src/components/createControllerComponent.tsx
+++ b/packages/react/src/components/createControllerComponent.tsx
@@ -122,6 +122,6 @@ export const createControllerComponent = ((props, ref) => {
- return ;
+ return ;
});
};
diff --git a/packages/react/src/components/createOverlayComponent.tsx b/packages/react/src/components/createOverlayComponent.tsx
index 701d8b8214e..7109685c462 100644
--- a/packages/react/src/components/createOverlayComponent.tsx
+++ b/packages/react/src/components/createOverlayComponent.tsx
@@ -139,6 +139,6 @@ export const createOverlayComponent = ((props, ref) => {
- return ;
+ return ;
});
};
diff --git a/packages/react/src/components/index.ts b/packages/react/src/components/index.ts
index 12ce0320d76..2c4ea3d5704 100644
--- a/packages/react/src/components/index.ts
+++ b/packages/react/src/components/index.ts
@@ -99,7 +99,7 @@ export {
TransitionOptions,
} from '@ionic/core/components';
-export * from './proxies';
+export * from './components';
export * from './routing-proxies';
// createControllerComponent
diff --git a/packages/react/src/components/navigation/IonNav.tsx b/packages/react/src/components/navigation/IonNav.tsx
index 8d2ca03e3ae..7859b311f10 100644
--- a/packages/react/src/components/navigation/IonNav.tsx
+++ b/packages/react/src/components/navigation/IonNav.tsx
@@ -15,6 +15,7 @@ const IonNavInner = createReactComponent;
+ children?: React.ReactNode;
};
// eslint-disable-next-line @typescript-eslint/no-unused-vars
diff --git a/packages/react/src/components/navigation/IonTabBar.tsx b/packages/react/src/components/navigation/IonTabBar.tsx
index 124b00f6990..3f25e697963 100644
--- a/packages/react/src/components/navigation/IonTabBar.tsx
+++ b/packages/react/src/components/navigation/IonTabBar.tsx
@@ -24,6 +24,7 @@ interface InternalProps extends IonTabBarProps {
onSetCurrentTab: (tab: string, routeInfo: RouteInfo) => void;
routeInfo: RouteInfo;
tabsContext?: IonTabsContextState;
+ children?: React.ReactNode;
}
interface TabUrls {
diff --git a/packages/react/src/components/navigation/IonTabs.tsx b/packages/react/src/components/navigation/IonTabs.tsx
index 445c1f3a714..135e51fec08 100644
--- a/packages/react/src/components/navigation/IonTabs.tsx
+++ b/packages/react/src/components/navigation/IonTabs.tsx
@@ -6,8 +6,8 @@ import { NavContext } from '../../contexts/NavContext';
import PageManager from '../../routing/PageManager';
import { HTMLElementSSR } from '../../utils/HTMLElementSSR';
import { IonRouterOutlet } from '../IonRouterOutlet';
+import { IonTab } from '../components';
import { IonTabsInner } from '../inner-proxies';
-import { IonTab } from '../proxies';
import type { IonTabsContextState } from './IonTabsContext';
import { IonTabsContext } from './IonTabsContext';
@@ -42,7 +42,7 @@ type ChildFunction = (ionTabContext: IonTabsContextState) => React.ReactNode;
interface Props extends LocalJSX.IonTabs {
className?: string;
- children: ChildFunction | React.ReactNode;
+ children: React.ReactNode;
onIonTabsWillChange?: (event: CustomEvent<{ tab: string }>) => void;
onIonTabsDidChange?: (event: CustomEvent<{ tab: string }>) => void;
}
diff --git a/packages/react/src/components/proxies.ts b/packages/react/src/components/proxies.ts
deleted file mode 100644
index 7fa7626bbc4..00000000000
--- a/packages/react/src/components/proxies.ts
+++ /dev/null
@@ -1,152 +0,0 @@
-/* eslint-disable */
-/* tslint:disable */
-/* auto-generated react proxies */
-import { createReactComponent } from './react-component-lib';
-
-import type { JSX } from '@ionic/core/components';
-
-import { defineCustomElement as defineIonAccordion } from '@ionic/core/components/ion-accordion.js';
-import { defineCustomElement as defineIonAccordionGroup } from '@ionic/core/components/ion-accordion-group.js';
-import { defineCustomElement as defineIonAvatar } from '@ionic/core/components/ion-avatar.js';
-import { defineCustomElement as defineIonBackdrop } from '@ionic/core/components/ion-backdrop.js';
-import { defineCustomElement as defineIonBadge } from '@ionic/core/components/ion-badge.js';
-import { defineCustomElement as defineIonBreadcrumbs } from '@ionic/core/components/ion-breadcrumbs.js';
-import { defineCustomElement as defineIonButtons } from '@ionic/core/components/ion-buttons.js';
-import { defineCustomElement as defineIonCardContent } from '@ionic/core/components/ion-card-content.js';
-import { defineCustomElement as defineIonCardHeader } from '@ionic/core/components/ion-card-header.js';
-import { defineCustomElement as defineIonCardSubtitle } from '@ionic/core/components/ion-card-subtitle.js';
-import { defineCustomElement as defineIonCardTitle } from '@ionic/core/components/ion-card-title.js';
-import { defineCustomElement as defineIonCheckbox } from '@ionic/core/components/ion-checkbox.js';
-import { defineCustomElement as defineIonChip } from '@ionic/core/components/ion-chip.js';
-import { defineCustomElement as defineIonCol } from '@ionic/core/components/ion-col.js';
-import { defineCustomElement as defineIonContent } from '@ionic/core/components/ion-content.js';
-import { defineCustomElement as defineIonDatetime } from '@ionic/core/components/ion-datetime.js';
-import { defineCustomElement as defineIonDatetimeButton } from '@ionic/core/components/ion-datetime-button.js';
-import { defineCustomElement as defineIonFab } from '@ionic/core/components/ion-fab.js';
-import { defineCustomElement as defineIonFabList } from '@ionic/core/components/ion-fab-list.js';
-import { defineCustomElement as defineIonFooter } from '@ionic/core/components/ion-footer.js';
-import { defineCustomElement as defineIonGrid } from '@ionic/core/components/ion-grid.js';
-import { defineCustomElement as defineIonHeader } from '@ionic/core/components/ion-header.js';
-import { defineCustomElement as defineIonImg } from '@ionic/core/components/ion-img.js';
-import { defineCustomElement as defineIonInfiniteScroll } from '@ionic/core/components/ion-infinite-scroll.js';
-import { defineCustomElement as defineIonInfiniteScrollContent } from '@ionic/core/components/ion-infinite-scroll-content.js';
-import { defineCustomElement as defineIonInput } from '@ionic/core/components/ion-input.js';
-import { defineCustomElement as defineIonInputOtp } from '@ionic/core/components/ion-input-otp.js';
-import { defineCustomElement as defineIonInputPasswordToggle } from '@ionic/core/components/ion-input-password-toggle.js';
-import { defineCustomElement as defineIonItemDivider } from '@ionic/core/components/ion-item-divider.js';
-import { defineCustomElement as defineIonItemGroup } from '@ionic/core/components/ion-item-group.js';
-import { defineCustomElement as defineIonItemOptions } from '@ionic/core/components/ion-item-options.js';
-import { defineCustomElement as defineIonItemSliding } from '@ionic/core/components/ion-item-sliding.js';
-import { defineCustomElement as defineIonLabel } from '@ionic/core/components/ion-label.js';
-import { defineCustomElement as defineIonList } from '@ionic/core/components/ion-list.js';
-import { defineCustomElement as defineIonListHeader } from '@ionic/core/components/ion-list-header.js';
-import { defineCustomElement as defineIonMenu } from '@ionic/core/components/ion-menu.js';
-import { defineCustomElement as defineIonMenuButton } from '@ionic/core/components/ion-menu-button.js';
-import { defineCustomElement as defineIonMenuToggle } from '@ionic/core/components/ion-menu-toggle.js';
-import { defineCustomElement as defineIonNav } from '@ionic/core/components/ion-nav.js';
-import { defineCustomElement as defineIonNavLink } from '@ionic/core/components/ion-nav-link.js';
-import { defineCustomElement as defineIonNote } from '@ionic/core/components/ion-note.js';
-import { defineCustomElement as defineIonPicker } from '@ionic/core/components/ion-picker.js';
-import { defineCustomElement as defineIonPickerColumn } from '@ionic/core/components/ion-picker-column.js';
-import { defineCustomElement as defineIonPickerColumnOption } from '@ionic/core/components/ion-picker-column-option.js';
-import { defineCustomElement as defineIonProgressBar } from '@ionic/core/components/ion-progress-bar.js';
-import { defineCustomElement as defineIonRadio } from '@ionic/core/components/ion-radio.js';
-import { defineCustomElement as defineIonRadioGroup } from '@ionic/core/components/ion-radio-group.js';
-import { defineCustomElement as defineIonRange } from '@ionic/core/components/ion-range.js';
-import { defineCustomElement as defineIonRefresher } from '@ionic/core/components/ion-refresher.js';
-import { defineCustomElement as defineIonRefresherContent } from '@ionic/core/components/ion-refresher-content.js';
-import { defineCustomElement as defineIonReorder } from '@ionic/core/components/ion-reorder.js';
-import { defineCustomElement as defineIonReorderGroup } from '@ionic/core/components/ion-reorder-group.js';
-import { defineCustomElement as defineIonRippleEffect } from '@ionic/core/components/ion-ripple-effect.js';
-import { defineCustomElement as defineIonRow } from '@ionic/core/components/ion-row.js';
-import { defineCustomElement as defineIonSearchbar } from '@ionic/core/components/ion-searchbar.js';
-import { defineCustomElement as defineIonSegment } from '@ionic/core/components/ion-segment.js';
-import { defineCustomElement as defineIonSegmentButton } from '@ionic/core/components/ion-segment-button.js';
-import { defineCustomElement as defineIonSegmentContent } from '@ionic/core/components/ion-segment-content.js';
-import { defineCustomElement as defineIonSegmentView } from '@ionic/core/components/ion-segment-view.js';
-import { defineCustomElement as defineIonSelect } from '@ionic/core/components/ion-select.js';
-import { defineCustomElement as defineIonSelectModal } from '@ionic/core/components/ion-select-modal.js';
-import { defineCustomElement as defineIonSelectOption } from '@ionic/core/components/ion-select-option.js';
-import { defineCustomElement as defineIonSkeletonText } from '@ionic/core/components/ion-skeleton-text.js';
-import { defineCustomElement as defineIonSpinner } from '@ionic/core/components/ion-spinner.js';
-import { defineCustomElement as defineIonSplitPane } from '@ionic/core/components/ion-split-pane.js';
-import { defineCustomElement as defineIonTab } from '@ionic/core/components/ion-tab.js';
-import { defineCustomElement as defineIonText } from '@ionic/core/components/ion-text.js';
-import { defineCustomElement as defineIonTextarea } from '@ionic/core/components/ion-textarea.js';
-import { defineCustomElement as defineIonThumbnail } from '@ionic/core/components/ion-thumbnail.js';
-import { defineCustomElement as defineIonTitle } from '@ionic/core/components/ion-title.js';
-import { defineCustomElement as defineIonToggle } from '@ionic/core/components/ion-toggle.js';
-import { defineCustomElement as defineIonToolbar } from '@ionic/core/components/ion-toolbar.js';
-
-export const IonAccordion = /*@__PURE__*/createReactComponent('ion-accordion', undefined, undefined, defineIonAccordion);
-export const IonAccordionGroup = /*@__PURE__*/createReactComponent('ion-accordion-group', undefined, undefined, defineIonAccordionGroup);
-export const IonAvatar = /*@__PURE__*/createReactComponent('ion-avatar', undefined, undefined, defineIonAvatar);
-export const IonBackdrop = /*@__PURE__*/createReactComponent('ion-backdrop', undefined, undefined, defineIonBackdrop);
-export const IonBadge = /*@__PURE__*/createReactComponent('ion-badge', undefined, undefined, defineIonBadge);
-export const IonBreadcrumbs = /*@__PURE__*/createReactComponent('ion-breadcrumbs', undefined, undefined, defineIonBreadcrumbs);
-export const IonButtons = /*@__PURE__*/createReactComponent('ion-buttons', undefined, undefined, defineIonButtons);
-export const IonCardContent = /*@__PURE__*/createReactComponent('ion-card-content', undefined, undefined, defineIonCardContent);
-export const IonCardHeader = /*@__PURE__*/createReactComponent('ion-card-header', undefined, undefined, defineIonCardHeader);
-export const IonCardSubtitle = /*@__PURE__*/createReactComponent