diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6452724858e..6f589964046 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -2,21 +2,24 @@
Thanks for your interest in contributing to Ionic's documentation! :tada: Check the guidelines below for suggestions and requirements before submitting your contribution.
-- [Contributing Guide](#contributing-guide)
- - [Development Workflow](#development-workflow)
- - [Previewing Changes](#previewing-changes)
- - [Linting Documentation](#linting-documentation)
- - [Spell Check](#spell-check)
- - [Using VS Code on Windows](#using-vs-code-on-windows)
- - [Project Structure](#project-structure)
- - [Directories](#directories)
- - [Authoring Content](#authoring-content)
- - [Authoring Locally](#authoring-locally)
- - [Translation](#translation)
- - [Reporting Issues](#reporting-issues)
- - [Pull Request Guidelines](#pull-request-guidelines)
- - [Deploying](#deploying)
- - [License](#license)
+
+ TABLE OF CONTENTS
+
+
+- [Development Workflow](#development-workflow)
+ - [Previewing Changes](#previewing-changes)
+ - [Linting Documentation](#linting-documentation)
+ - [Spell Check](#spell-check)
+- [Using VS Code on Windows](#using-vs-code-on-windows)
+- [Project Structure](#project-structure)
+ - [Directories](#directories)
+- [Authoring Content](#authoring-content)
+ - [Reference Content](#reference-content)
+- [Translation](#translation)
+- [Reporting Issues](#reporting-issues)
+- [Pull Request Guidelines](#pull-request-guidelines)
+- [Deploying](#deploying)
+- [License](#license)
---
diff --git a/docs/components.md b/docs/components.md
index d951640a809..4d1b2cf28a2 100644
--- a/docs/components.md
+++ b/docs/components.md
@@ -19,14 +19,18 @@ import DocsCards from '@components/global/DocsCards';
`}
-Ionic apps are made of high-level building blocks called Components, which allow you to quickly construct the UI for your app. Ionic comes stock with a number of components, including cards, lists, and tabs. Once you’re familiar with the basics, refer to the [API Index](api.md) for a complete list of each component and sub-component.
+Ionic apps are made of high-level building blocks called Components, which allow you to quickly construct the UI for your app. Ionic comes stock with a number of components, including cards, lists, and tabs. Once you're familiar with the basics, refer to the [API Index](api.md) for a complete list of each component and sub-component.
-
- Action Sheets display a set of options with the ability to confirm or cancel an action.
-
+
+ Accordions provide collapsible sections in your content to reduce vertical space while providing a way of organizing and grouping information.
+
+
+
+ Action Sheets display a set of options with the ability to confirm or cancel an action.
+
Alerts are a great way to offer the user the ability to choose a specific action or list of actions.
@@ -36,13 +40,18 @@ Ionic apps are made of high-level building blocks called Components, which allow
Badges are a small component that typically communicate a numerical value to the user.
+
+ Breadcrumbs are navigation items that are used to indicate where a user is on an app.
+
+
Buttons let your users take action. They're an essential way to interact with and navigate through an app.
-
- Cards are a great way to display an important piece of content, and can contain images, buttons, text, and more.
+
+ Cards are a great way to display an important piece of content, and can contain images, buttons, text, and more.
+
@@ -57,7 +66,7 @@ Ionic apps are made of high-level building blocks called Components, which allow
Content is the quintessential way to interact with and navigate through an app.
-
+
Date & time pickers are used to present an interface that makes it easy for users to select dates and times.
@@ -65,32 +74,38 @@ Ionic apps are made of high-level building blocks called Components, which allow
Floating action buttons are circular buttons that perform a primary action on a screen.
-
- Beautifully designed icons for use in web, iOS, and Android apps.
-
-
The grid is a powerful mobile-first system for building custom layouts.
+
+ Beautifully designed icons for use in web, iOS, and Android apps.
+
+
Infinite scroll allows you to load new data as the user scrolls through your app.
-
+
Inputs provides a way for users to enter data in your app.
-
- Items are an all-purpose UI container that can be used as part of a list.
+
+
+ Items are elements that can contain text, icons, avatars, images, inputs, and any other native or custom elements.
+ Items can be swiped, deleted, reordered, edited, and more.
+
Lists can display rows of information, such as a contact list, playlist, or menu.
-
- Navigation is how users move between different pages in your app.
+
+
+ A collection of media components, including avatars, icons, images, and thumbnails, designed to enhance visual
+ content.
+
@@ -101,6 +116,10 @@ Ionic apps are made of high-level building blocks called Components, which allow
Modals slide in and off screen to display a temporary UI and are often used for login or sign-up pages.
+
+ Navigation is how users move between different pages in your app.
+
+
Popover provides an easy way to present information or options without changing contexts.
@@ -113,12 +132,12 @@ Ionic apps are made of high-level building blocks called Components, which allow
Radio inputs allow you to present a set of exclusive options.
-
- Refresher provides pull-to-refresh functionality on a content component.
+
+ Range sliders let users select a value by dragging a knob along a track.
-
- Searchbar is used to search or filter items, usually from a toolbar.
+
+ Refresher provides pull-to-refresh functionality on a content component.
@@ -129,6 +148,10 @@ Ionic apps are made of high-level building blocks called Components, which allow
Routing allows navigation based on the current path.
+
+ Searchbar is used to search or filter items, usually from a toolbar.
+
+
Segments provide a set of exclusive buttons that can be used as a filter or view switcher.
@@ -142,14 +165,18 @@ Ionic apps are made of high-level building blocks called Components, which allow
- Toast is used to show a notification over the top of an app's content. It can be temporary or dismissible.
+ Toasts are subtle notifications that appear over your app's content without interrupting user interaction.
Toggles are an input for binary options, often used for options and switches.
-
- Toolbars are used to house information and actions relating to your app.
-
+
+ Toolbars are used to house information and actions relating to your app.
+
+
+
+ Text is used to style or change the color of text within an application.
+
diff --git a/docs/developing/config.md b/docs/developing/config.md
index 0f70b8da46d..6cce3de4a1d 100644
--- a/docs/developing/config.md
+++ b/docs/developing/config.md
@@ -51,6 +51,14 @@ import PerPlatformOverridesExample from '@site/docs/developing/config/per-platfo
+## Accessing the Mode
+
+In some cases, you may need to access the current Ionic mode programmatically within your application logic. This can be useful for applying conditional behavior, fetching specific assets, or performing other actions based on the active styling mode.
+
+import IonicMode from '@site/static/usage/v8/config/mode/index.md';
+
+
+
## Reading the Config (Angular)
Ionic Angular provides a `Config` provider for accessing the Ionic Config.
diff --git a/docs/theming/high-contrast-mode.md b/docs/theming/high-contrast-mode.md
index 9896eac1180..148f7c72157 100644
--- a/docs/theming/high-contrast-mode.md
+++ b/docs/theming/high-contrast-mode.md
@@ -120,7 +120,7 @@ This approach activates the high contrast palette when the [CSS media query for
The following example uses the system settings to decide when to show high contrast mode.
:::info
-Not sure how to change the system settings? Here's how to enable high contrast mode on [Windows 11](hhttps://support.microsoft.com/en-us/windows/turn-high-contrast-mode-on-or-off-in-windows-909e9d89-a0f9-a3a9-b993-7a6dcee85025) and on [macOS](https://support.apple.com/guide/mac-help/change-display-settings-for-accessibility-unac089/mac).
+Not sure how to change the system settings? Here's how to enable high contrast mode on [Windows 11](https://support.microsoft.com/en-us/windows/turn-high-contrast-mode-on-or-off-in-windows-909e9d89-a0f9-a3a9-b993-7a6dcee85025) and on [macOS](https://support.apple.com/guide/mac-help/change-display-settings-for-accessibility-unac089/mac).
:::
import SystemHighContrastMode from '@site/static/usage/v8/theming/system-high-contrast-mode/index.md';
@@ -178,7 +178,7 @@ This approach activates the high contrast palette when the `.ion-palette-high-co
The following example combines site settings, system settings, and the toggle to decide when to show high contrast mode. The site's palette takes precedence over system settings. If your system settings differ from the site's palette when the demo loads, it will use the site's palette.
:::info
-Not sure how to change the system settings? Here's how to enable high contrast mode on [Windows 11](hhttps://support.microsoft.com/en-us/windows/turn-high-contrast-mode-on-or-off-in-windows-909e9d89-a0f9-a3a9-b993-7a6dcee85025) and on [macOS](https://support.apple.com/guide/mac-help/change-display-settings-for-accessibility-unac089/mac).
+Not sure how to change the system settings? Here's how to enable high contrast mode on [Windows 11](https://support.microsoft.com/en-us/windows/turn-high-contrast-mode-on-or-off-in-windows-909e9d89-a0f9-a3a9-b993-7a6dcee85025) and on [macOS](https://support.apple.com/guide/mac-help/change-display-settings-for-accessibility-unac089/mac).
:::
import ClassHighContrastMode from '@site/static/usage/v8/theming/class-high-contrast-mode/index.md';
diff --git a/renovate.json b/renovate.json
index 8847d1082e2..2e83911a07d 100644
--- a/renovate.json
+++ b/renovate.json
@@ -22,6 +22,13 @@
"matchPackageNames": ["react", "react-dom"],
"groupName": "react"
},
+ {
+ "matchPackageNames": ["vite", "vite-plugin-static-copy"],
+ "groupName": "vite-html",
+ "matchFileNames": [
+ "static/code/stackblitz/**/html/package.json"
+ ]
+ },
{
"matchPackageNames": ["vite", "@vitejs/plugin-react"],
"groupName": "vite-react",
diff --git a/sidebars.js b/sidebars.js
index 115eca21382..bbcc8f72b49 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -252,15 +252,15 @@ module.exports = {
},
{
type: 'category',
- label: 'Action Sheet',
+ label: 'Accordion',
collapsed: false,
- items: ['api/action-sheet'],
+ items: ['api/accordion', 'api/accordion-group'],
},
{
type: 'category',
- label: 'Accordion',
+ label: 'Action Sheet',
collapsed: false,
- items: ['api/accordion', 'api/accordion-group'],
+ items: ['api/action-sheet'],
},
{
type: 'category',
@@ -276,7 +276,7 @@ module.exports = {
},
{
type: 'category',
- label: 'Breadcrumb',
+ label: 'Breadcrumbs',
collapsed: false,
items: ['api/breadcrumb', 'api/breadcrumbs'],
},
@@ -337,19 +337,19 @@ module.exports = {
},
{
type: 'category',
- label: 'Infinite Scroll',
+ label: 'Icons',
collapsed: false,
- items: ['api/infinite-scroll', 'api/infinite-scroll-content'],
+ items: ['api/icon'],
},
{
type: 'category',
- label: 'Icons',
+ label: 'Infinite Scroll',
collapsed: false,
- items: ['api/icon'],
+ items: ['api/infinite-scroll', 'api/infinite-scroll-content'],
},
{
type: 'category',
- label: 'Input',
+ label: 'Inputs',
collapsed: false,
items: ['api/input', 'api/input-password-toggle', 'api/input-otp', 'api/textarea'],
},
diff --git a/src/components/global/Playground/index.tsx b/src/components/global/Playground/index.tsx
index 9d7f033b445..3489ae7840b 100644
--- a/src/components/global/Playground/index.tsx
+++ b/src/components/global/Playground/index.tsx
@@ -153,7 +153,7 @@ export default function Playground({
* The major version of Ionic to use in the generated StackBlitz examples.
* This will also load assets for StackBlitz from the specified version directory.
*/
- version: number;
+ version: string;
}) {
if (!code || Object.keys(code).length === 0) {
console.warn('No code usage examples provided for this Playground example.');
diff --git a/src/components/global/Playground/stackblitz.utils.ts b/src/components/global/Playground/stackblitz.utils.ts
index aed074d6328..a9461afc6d2 100644
--- a/src/components/global/Playground/stackblitz.utils.ts
+++ b/src/components/global/Playground/stackblitz.utils.ts
@@ -38,10 +38,10 @@ export interface EditorOptions {
*/
mode?: string;
- version?: number;
+ version?: string;
}
-const loadSourceFiles = async (files: string[], version: number) => {
+const loadSourceFiles = async (files: string[], version: string) => {
const versionDir = `v${version}`;
const sourceFiles = await Promise.all(files.map((f) => fetch(`/docs/code/stackblitz/${versionDir}/${f}`)));
return await Promise.all(sourceFiles.map((res) => res.text()));
@@ -54,20 +54,32 @@ const openHtmlEditor = async (code: string, options?: EditorOptions) => {
options?.includeIonContent ? 'html/index.withContent.html' : 'html/index.html',
'html/variables.css',
'html/package.json',
+ 'html/tsconfig.json',
+ 'html/vite.config.ts',
],
options.version
);
+ const package_json = JSON.parse(defaultFiles[3]);
+
+ if (options?.dependencies) {
+ package_json.dependencies = {
+ ...package_json.dependencies,
+ ...options.dependencies,
+ };
+ }
+
const indexHtml = 'index.html';
const files = {
+ 'package.json': JSON.stringify(package_json, null, 2),
'index.ts': defaultFiles[0],
[indexHtml]: defaultFiles[1],
'theme/variables.css': defaultFiles[2],
+ 'tsconfig.json': defaultFiles[4],
+ 'vite.config.ts': defaultFiles[5],
...options?.files,
};
- const package_json = defaultFiles[3];
-
files[indexHtml] = defaultFiles[1].replace(/{{ TEMPLATE }}/g, code).replace(
'',
`
@@ -82,23 +94,11 @@ const openHtmlEditor = async (code: string, options?: EditorOptions) => {
`
);
- let dependencies = {};
- try {
- dependencies = {
- ...dependencies,
- ...JSON.parse(package_json).dependencies,
- ...options?.dependencies,
- };
- } catch (e) {
- console.error('Failed to parse package.json contents', e);
- }
-
sdk.openProject({
- template: 'typescript',
+ template: 'node',
title: options?.title ?? DEFAULT_EDITOR_TITLE,
description: options?.description ?? DEFAULT_EDITOR_DESCRIPTION,
files,
- dependencies,
});
};
@@ -155,7 +155,14 @@ const openAngularEditor = async (code: string, options?: EditorOptions) => {
...options?.files,
};
- files[main] = files[main].replace('provideIonicAngular()', `provideIonicAngular({ mode: '${options?.mode}' })`);
+ if (options?.version === '6') {
+ files[main] = files[main].replace(
+ 'importProvidersFrom(IonicModule.forRoot({ }))',
+ `importProvidersFrom(IonicModule.forRoot({ mode: '${options?.mode}' }))`
+ );
+ } else {
+ files[main] = files[main].replace('provideIonicAngular()', `provideIonicAngular({ mode: '${options?.mode}' })`);
+ }
sdk.openProject({
template: 'node',
diff --git a/static/code/stackblitz/v6/angular/angular.json b/static/code/stackblitz/v6/angular/angular.json
index 811624f69b5..167ced0d882 100644
--- a/static/code/stackblitz/v6/angular/angular.json
+++ b/static/code/stackblitz/v6/angular/angular.json
@@ -4,11 +4,10 @@
"newProjectRoot": "projects",
"projects": {
"app": {
+ "projectType": "application",
"root": "",
"sourceRoot": "src",
- "projectType": "application",
"prefix": "app",
- "schematics": {},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
@@ -16,38 +15,53 @@
"outputPath": "dist",
"index": "src/index.html",
"main": "src/main.ts",
- "polyfills": "src/polyfills.ts",
- "tsConfig": "src/tsconfig.app.json",
- "assets": ["src/favicon.ico", "src/assets"],
+ "polyfills": [
+ "src/polyfills.ts"
+ ],
+ "tsConfig": "tsconfig.app.json",
+ "assets": [
+ {
+ "glob": "**/*",
+ "input": "src/assets",
+ "output": "assets"
+ }
+ ],
"styles": ["src/styles.css", "src/global.css", "src/theme/variables.css"],
"scripts": []
},
"configurations": {
"production": {
- "fileReplacements": [
- {
- "replace": "src/environments/environment.ts",
- "with": "src/environments/environment.prod.ts"
- }
- ],
- "optimization": true,
- "outputHashing": "all",
- "sourceMap": false,
- "extractCss": true,
- "namedChunks": false,
- "aot": true,
- "extractLicenses": true,
- "vendorChunk": false,
- "buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
+ },
+ {
+ "type": "anyComponentStyle",
+ "maximumWarning": "2kb",
+ "maximumError": "4kb"
}
- ]
+ ],
+ "fileReplacements": [
+ {
+ "replace": "src/environments/environment.ts",
+ "with": "src/environments/environment.prod.ts"
+ }
+ ],
+ "outputHashing": "all"
+ },
+ "development": {
+ "optimization": false,
+ "extractLicenses": false,
+ "sourceMap": true,
+ "namedChunks": true
+ },
+ "ci": {
+ "progress": false
}
- }
+ },
+ "defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
@@ -57,8 +71,15 @@
"configurations": {
"production": {
"browserTarget": "app:build:production"
+ },
+ "development": {
+ "browserTarget": "app:build:development"
+ },
+ "ci": {
+ "progress": false
}
- }
+ },
+ "defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
@@ -73,46 +94,41 @@
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "src/karma.conf.js",
- "styles": ["src/styles.css"],
- "scripts": [],
- "assets": ["src/favicon.ico", "src/assets"]
- }
- },
- "lint": {
- "builder": "@angular-devkit/build-angular:tslint",
- "options": {
- "tsConfig": ["src/tsconfig.app.json", "src/tsconfig.spec.json"],
- "exclude": ["**/node_modules/**"]
- }
- }
- }
- },
- "app-e2e": {
- "root": "e2e/",
- "projectType": "application",
- "prefix": "",
- "architect": {
- "e2e": {
- "builder": "@angular-devkit/build-angular:protractor",
- "options": {
- "protractorConfig": "e2e/protractor.conf.js",
- "devServerTarget": "app:serve"
+ "assets": [
+ {
+ "glob": "**/*",
+ "input": "src/assets",
+ "output": "assets"
+ }
+ ],
+ "styles": ["src/styles.css", "src/global.css", "src/theme/variables.css"],
+ "scripts": []
},
"configurations": {
- "production": {
- "devServerTarget": "app:serve:production"
+ "ci": {
+ "progress": false,
+ "watch": false
}
}
},
"lint": {
- "builder": "@angular-devkit/build-angular:tslint",
+ "builder": "@angular-eslint/builder:lint",
"options": {
- "tsConfig": "e2e/tsconfig.e2e.json",
- "exclude": ["**/node_modules/**"]
+ "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"]
}
}
}
}
},
- "defaultProject": "app"
+ "cli": {
+ "schematicCollections": ["@ionic/angular-toolkit"]
+ },
+ "schematics": {
+ "@angular-eslint/schematics:application": {
+ "setParserOptionsProject": true
+ },
+ "@angular-eslint/schematics:library": {
+ "setParserOptionsProject": true
+ }
+ }
}
diff --git a/static/code/stackblitz/v6/angular/app.component.html b/static/code/stackblitz/v6/angular/app.component.html
index 1031647a0e0..3aeab946d20 100644
--- a/static/code/stackblitz/v6/angular/app.component.html
+++ b/static/code/stackblitz/v6/angular/app.component.html
@@ -1,3 +1,5 @@
-
+
+
+
diff --git a/static/code/stackblitz/v6/angular/app.component.ts b/static/code/stackblitz/v6/angular/app.component.ts
index ed440084f8f..dabad158164 100644
--- a/static/code/stackblitz/v6/angular/app.component.ts
+++ b/static/code/stackblitz/v6/angular/app.component.ts
@@ -1,8 +1,13 @@
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { RouterOutlet } from '@angular/router';
+import { ExampleComponent } from './example.component';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
- styleUrls: ['app.component.css']
+ styleUrls: ['app.component.css'],
+ imports: [IonicModule, ExampleComponent, RouterOutlet],
+ standalone: true
})
export class AppComponent { }
diff --git a/static/code/stackblitz/v6/angular/app.component.withContent.html b/static/code/stackblitz/v6/angular/app.component.withContent.html
index 96ebf597215..df5c543377f 100644
--- a/static/code/stackblitz/v6/angular/app.component.withContent.html
+++ b/static/code/stackblitz/v6/angular/app.component.withContent.html
@@ -1,5 +1,7 @@
-
+
+
+
diff --git a/static/code/stackblitz/v6/angular/app.component.withContent.ts b/static/code/stackblitz/v6/angular/app.component.withContent.ts
new file mode 100644
index 00000000000..2078352ad98
--- /dev/null
+++ b/static/code/stackblitz/v6/angular/app.component.withContent.ts
@@ -0,0 +1,15 @@
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { RouterOutlet } from '@angular/router';
+import { ExampleComponent } from './example.component';
+
+@Component({
+ selector: 'app-root',
+ templateUrl: 'app.component.html',
+ styleUrls: ['app.component.css'],
+ imports: [IonicModule, ExampleComponent, RouterOutlet],
+ standalone: true
+})
+export class AppComponent {
+ constructor() {}
+}
diff --git a/static/code/stackblitz/v6/angular/app.routes.ts b/static/code/stackblitz/v6/angular/app.routes.ts
new file mode 100644
index 00000000000..4a49853c7f4
--- /dev/null
+++ b/static/code/stackblitz/v6/angular/app.routes.ts
@@ -0,0 +1,13 @@
+import { Routes } from '@angular/router';
+
+export const routes: Routes = [
+ {
+ path: 'example',
+ loadComponent: () => import('./example.component').then((m) => m.ExampleComponent),
+ },
+ {
+ path: '',
+ redirectTo: 'example',
+ pathMatch: 'full',
+ },
+];
\ No newline at end of file
diff --git a/static/code/stackblitz/v6/angular/example.component.ts b/static/code/stackblitz/v6/angular/example.component.ts
index 6b67261e0b3..b1cd8b6af79 100644
--- a/static/code/stackblitz/v6/angular/example.component.ts
+++ b/static/code/stackblitz/v6/angular/example.component.ts
@@ -1,8 +1,11 @@
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
- styleUrls: ['example.component.css']
+ styleUrls: ['example.component.css'],
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent { }
diff --git a/static/code/stackblitz/v6/angular/index.html b/static/code/stackblitz/v6/angular/index.html
new file mode 100644
index 00000000000..79599e62e32
--- /dev/null
+++ b/static/code/stackblitz/v6/angular/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+ Ionic App
+
+
+
+
+
+
+
+
diff --git a/static/code/stackblitz/v6/angular/main.ts b/static/code/stackblitz/v6/angular/main.ts
index 518110491b2..13819b6a52c 100644
--- a/static/code/stackblitz/v6/angular/main.ts
+++ b/static/code/stackblitz/v6/angular/main.ts
@@ -1,7 +1,14 @@
-import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
+import { bootstrapApplication } from '@angular/platform-browser';
+import { RouteReuseStrategy, provideRouter, withPreloading, PreloadAllModules } from '@angular/router';
+import { IonicRouteStrategy, IonicModule } from '@ionic/angular';
+import { importProvidersFrom } from '@angular/core';
+import { routes } from './app/app.routes';
+import { AppComponent } from './app/app.component';
-import { AppModule } from './app/app.module';
-
-platformBrowserDynamic()
- .bootstrapModule(AppModule)
- .catch((err: any) => console.error(err));
+bootstrapApplication(AppComponent, {
+ providers: [
+ { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
+ importProvidersFrom(IonicModule.forRoot({ })),
+ provideRouter(routes, withPreloading(PreloadAllModules)),
+ ],
+})
\ No newline at end of file
diff --git a/static/code/stackblitz/v6/angular/package.json b/static/code/stackblitz/v6/angular/package.json
index 0ecc1227dd5..a80e5d13a5f 100644
--- a/static/code/stackblitz/v6/angular/package.json
+++ b/static/code/stackblitz/v6/angular/package.json
@@ -1,7 +1,31 @@
{
+ "name": "angular-starter",
+ "private": true,
+ "scripts": {
+ "ng": "ng",
+ "start": "ng serve",
+ "build": "ng build"
+ },
"dependencies": {
+ "@angular/animations": "^15.0.0",
+ "@angular/common": "^15.0.0",
+ "@angular/compiler": "^15.0.0",
+ "@angular/core": "^15.0.0",
+ "@angular/forms": "^15.0.0",
+ "@angular/platform-browser": "^15.0.0",
+ "@angular/platform-browser-dynamic": "^15.0.0",
+ "@angular/router": "^15.0.0",
+ "rxjs": "~7.8.0",
+ "tslib": "^2.3.0",
+ "zone.js": "~0.12.0",
"@ionic/angular": "^6.0.0",
"@ionic/core": "^6.0.0",
- "@angular/platform-browser-dynamic": "17.3.2"
+ "ionicons": "8.0.13"
+ },
+ "devDependencies": {
+ "@angular-devkit/build-angular": "^15.0.0",
+ "@angular/cli": "^15.0.0",
+ "@angular/compiler-cli": "^15.0.0",
+ "typescript": "~4.9.4"
}
}
diff --git a/static/code/stackblitz/v6/angular/tsconfig.app.json b/static/code/stackblitz/v6/angular/tsconfig.app.json
new file mode 100644
index 00000000000..f69a169a56e
--- /dev/null
+++ b/static/code/stackblitz/v6/angular/tsconfig.app.json
@@ -0,0 +1,9 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../out-tsc/app",
+ "types": []
+ },
+ "files": ["src/main.ts", "src/polyfills.ts"],
+ "include": ["src/**/*.d.ts"]
+}
diff --git a/static/code/stackblitz/v6/html/index.html b/static/code/stackblitz/v6/html/index.html
index 8a59c2afc0f..fb14e96ba98 100644
--- a/static/code/stackblitz/v6/html/index.html
+++ b/static/code/stackblitz/v6/html/index.html
@@ -1,14 +1,19 @@
-
+
+
-
-
+
+
+
+ Ionic App
{{ TEMPLATE }}
+
+
diff --git a/static/code/stackblitz/v6/html/index.withContent.html b/static/code/stackblitz/v6/html/index.withContent.html
index 3cd31834675..404344868cd 100644
--- a/static/code/stackblitz/v6/html/index.withContent.html
+++ b/static/code/stackblitz/v6/html/index.withContent.html
@@ -1,8 +1,11 @@
-
+
+
-
-
+
+
+
+ Ionic App
@@ -11,6 +14,8 @@
{{ TEMPLATE }}
+
+
diff --git a/static/code/stackblitz/v6/html/package.json b/static/code/stackblitz/v6/html/package.json
index b6dbee21fd0..113d2325e30 100644
--- a/static/code/stackblitz/v6/html/package.json
+++ b/static/code/stackblitz/v6/html/package.json
@@ -1,5 +1,20 @@
{
+ "name": "html-starter",
+ "private": true,
+ "type": "module",
+ "main": "index.ts",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "start": "vite preview"
+ },
"dependencies": {
- "@ionic/core": "^6.0.0"
+ "@ionic/core": "^6.0.0",
+ "ionicons": "8.0.13"
+ },
+ "devDependencies": {
+ "typescript": "^5.0.0",
+ "vite": "^7.0.0",
+ "vite-plugin-static-copy": "^3.1.0"
}
}
diff --git a/static/code/stackblitz/v6/html/tsconfig.json b/static/code/stackblitz/v6/html/tsconfig.json
new file mode 100644
index 00000000000..0b999e71b8e
--- /dev/null
+++ b/static/code/stackblitz/v6/html/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "compilerOptions": {
+ "baseUrl": "./",
+ "target": "esnext",
+ "module": "nodenext",
+ "moduleResolution": "nodenext",
+ "outDir": "dist",
+ "strict": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "forceConsistentCasingInFileNames": true,
+ "lib": ["esnext", "dom"],
+ "resolveJsonModule": true,
+ "allowSyntheticDefaultImports": true,
+ "isolatedModules": true,
+ "types": ["node"]
+ },
+ "include": ["src/**/*.ts"]
+}
diff --git a/static/code/stackblitz/v6/html/vite.config.ts b/static/code/stackblitz/v6/html/vite.config.ts
new file mode 100644
index 00000000000..3e356ac9e72
--- /dev/null
+++ b/static/code/stackblitz/v6/html/vite.config.ts
@@ -0,0 +1,18 @@
+import { defineConfig } from 'vite';
+import { viteStaticCopy } from 'vite-plugin-static-copy';
+
+export default defineConfig({
+ optimizeDeps: {
+ exclude: ['@ionic/core'],
+ },
+ plugins: [
+ viteStaticCopy({
+ targets: [
+ {
+ src: 'node_modules/ionicons/dist/svg/*',
+ dest: 'svg'
+ }
+ ]
+ })
+ ]
+});
diff --git a/static/code/stackblitz/v7/angular/package.json b/static/code/stackblitz/v7/angular/package.json
index 34470f65907..18cdecc15dd 100644
--- a/static/code/stackblitz/v7/angular/package.json
+++ b/static/code/stackblitz/v7/angular/package.json
@@ -17,7 +17,7 @@
"@angular/router": "^20.0.0",
"@ionic/angular": "^7.0.0",
"@ionic/core": "^7.0.0",
- "ionicons": "8.0.9",
+ "ionicons": "8.0.13",
"rxjs": "^7.8.1",
"tslib": "^2.5.0",
"zone.js": "~0.15.0"
diff --git a/static/code/stackblitz/v7/html/index.html b/static/code/stackblitz/v7/html/index.html
index 5e77463a672..fb14e96ba98 100644
--- a/static/code/stackblitz/v7/html/index.html
+++ b/static/code/stackblitz/v7/html/index.html
@@ -1,14 +1,19 @@
-
+
+
-
-
+
+
+
+ Ionic App
{{ TEMPLATE }}
+
+
diff --git a/static/code/stackblitz/v7/html/index.withContent.html b/static/code/stackblitz/v7/html/index.withContent.html
index 242233075dc..404344868cd 100644
--- a/static/code/stackblitz/v7/html/index.withContent.html
+++ b/static/code/stackblitz/v7/html/index.withContent.html
@@ -1,8 +1,11 @@
-
+
+
-
-
+
+
+
+ Ionic App
@@ -11,6 +14,8 @@
{{ TEMPLATE }}
+
+
diff --git a/static/code/stackblitz/v7/html/package.json b/static/code/stackblitz/v7/html/package.json
index 7b9f1727b1c..5f2b336cbc1 100644
--- a/static/code/stackblitz/v7/html/package.json
+++ b/static/code/stackblitz/v7/html/package.json
@@ -1,6 +1,20 @@
{
+ "name": "html-starter",
+ "private": true,
+ "type": "module",
+ "main": "index.ts",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "start": "vite preview"
+ },
"dependencies": {
"@ionic/core": "^7.0.0",
- "ionicons": "8.0.9"
+ "ionicons": "8.0.13"
+ },
+ "devDependencies": {
+ "typescript": "^5.0.0",
+ "vite": "^7.0.0",
+ "vite-plugin-static-copy": "^3.1.0"
}
}
diff --git a/static/code/stackblitz/v7/html/tsconfig.json b/static/code/stackblitz/v7/html/tsconfig.json
new file mode 100644
index 00000000000..0b999e71b8e
--- /dev/null
+++ b/static/code/stackblitz/v7/html/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "compilerOptions": {
+ "baseUrl": "./",
+ "target": "esnext",
+ "module": "nodenext",
+ "moduleResolution": "nodenext",
+ "outDir": "dist",
+ "strict": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "forceConsistentCasingInFileNames": true,
+ "lib": ["esnext", "dom"],
+ "resolveJsonModule": true,
+ "allowSyntheticDefaultImports": true,
+ "isolatedModules": true,
+ "types": ["node"]
+ },
+ "include": ["src/**/*.ts"]
+}
diff --git a/static/code/stackblitz/v7/html/vite.config.ts b/static/code/stackblitz/v7/html/vite.config.ts
new file mode 100644
index 00000000000..3e356ac9e72
--- /dev/null
+++ b/static/code/stackblitz/v7/html/vite.config.ts
@@ -0,0 +1,18 @@
+import { defineConfig } from 'vite';
+import { viteStaticCopy } from 'vite-plugin-static-copy';
+
+export default defineConfig({
+ optimizeDeps: {
+ exclude: ['@ionic/core'],
+ },
+ plugins: [
+ viteStaticCopy({
+ targets: [
+ {
+ src: 'node_modules/ionicons/dist/svg/*',
+ dest: 'svg'
+ }
+ ]
+ })
+ ]
+});
diff --git a/static/code/stackblitz/v7/react/package-lock.json b/static/code/stackblitz/v7/react/package-lock.json
index 39a3442c710..fae0bad76f2 100644
--- a/static/code/stackblitz/v7/react/package-lock.json
+++ b/static/code/stackblitz/v7/react/package-lock.json
@@ -1047,9 +1047,9 @@
"integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA=="
},
"node_modules/@types/node": {
- "version": "22.15.33",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.33.tgz",
- "integrity": "sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==",
+ "version": "22.16.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.3.tgz",
+ "integrity": "sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==",
"dependencies": {
"undici-types": "~6.21.0"
}
@@ -1691,9 +1691,9 @@
"integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
},
"node_modules/vite": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.0.tgz",
- "integrity": "sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.4.tgz",
+ "integrity": "sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==",
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.4.6",
@@ -2349,9 +2349,9 @@
"integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA=="
},
"@types/node": {
- "version": "22.15.33",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.33.tgz",
- "integrity": "sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==",
+ "version": "22.16.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.3.tgz",
+ "integrity": "sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==",
"requires": {
"undici-types": "~6.21.0"
}
@@ -2800,9 +2800,9 @@
"integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
},
"vite": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.0.tgz",
- "integrity": "sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.4.tgz",
+ "integrity": "sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==",
"requires": {
"esbuild": "^0.25.0",
"fdir": "^6.4.6",
diff --git a/static/code/stackblitz/v7/vue/package-lock.json b/static/code/stackblitz/v7/vue/package-lock.json
index bec257c24a8..250b36a4d8d 100644
--- a/static/code/stackblitz/v7/vue/package-lock.json
+++ b/static/code/stackblitz/v7/vue/package-lock.json
@@ -15,9 +15,9 @@
},
"devDependencies": {
"@vitejs/plugin-vue": "^6.0.0",
- "typescript": "^4.5.4",
+ "typescript": "^5.0.0",
"vite": "^7.0.0",
- "vue-tsc": "^2.0.0"
+ "vue-tsc": "^3.0.0"
}
},
"node_modules/@babel/helper-string-parser": {
@@ -489,6 +489,27 @@
"@ionic/vue": "7.8.6"
}
},
+ "node_modules/@isaacs/balanced-match": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
+ "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
+ "dev": true,
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@isaacs/brace-expansion": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
+ "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/balanced-match": "^4.0.1"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
@@ -795,27 +816,27 @@
}
},
"node_modules/@volar/language-core": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.3.4.tgz",
- "integrity": "sha512-wXBhY11qG6pCDAqDnbBRFIDSIwbqkWI7no+lj5+L7IlA7HRIjRP7YQLGzT0LF4lS6eHkMSsclXqy9DwYJasZTQ==",
+ "version": "2.4.17",
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.17.tgz",
+ "integrity": "sha512-chmRZMbKmcGpKMoO7Reb70uiLrzo0KWC2CkFttKUuKvrE+VYgi+fL9vWMJ07Fv5ulX0V1TAyyacN9q3nc5/ecA==",
"dev": true,
"dependencies": {
- "@volar/source-map": "2.3.4"
+ "@volar/source-map": "2.4.17"
}
},
"node_modules/@volar/source-map": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.3.4.tgz",
- "integrity": "sha512-C+t63nwcblqLIVTYXaVi/+gC8NukDaDIQI72J3R7aXGvtgaVB16c+J8Iz7/VfOy7kjYv7lf5GhBny6ACw9fTGQ==",
+ "version": "2.4.17",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.17.tgz",
+ "integrity": "sha512-QDybtQyO3Ms/NjFqNHTC5tbDN2oK5VH7ZaKrcubtfHBDj63n2pizHC3wlMQ+iT55kQXZUUAbmBX5L1C8CHFeBw==",
"dev": true
},
"node_modules/@volar/typescript": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.3.4.tgz",
- "integrity": "sha512-acCvt7dZECyKcvO5geNybmrqOsu9u8n5XP1rfiYsOLYGPxvHRav9BVmEdRyZ3vvY6mNyQ1wLL5Hday4IShe17w==",
+ "version": "2.4.17",
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.17.tgz",
+ "integrity": "sha512-3paEFNh4P5DkgNUB2YkTRrfUekN4brAXxd3Ow1syMqdIPtCZHbUy4AW99S5RO/7mzyTWPMdDSo3mqTpB/LPObQ==",
"dev": true,
"dependencies": {
- "@volar/language-core": "2.3.4",
+ "@volar/language-core": "2.4.17",
"path-browserify": "^1.0.1",
"vscode-uri": "^3.0.8"
}
@@ -866,25 +887,35 @@
"@vue/shared": "3.5.17"
}
},
+ "node_modules/@vue/compiler-vue2": {
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz",
+ "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==",
+ "dev": true,
+ "dependencies": {
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
"node_modules/@vue/devtools-api": {
"version": "6.6.4",
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
},
"node_modules/@vue/language-core": {
- "version": "2.0.22",
- "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.22.tgz",
- "integrity": "sha512-dNTAAtEOuMiz7N1s5tKpypnVVCtawxVSF5BukD0ELcYSw+DSbrSlYYSw8GuwvurodCeYFSHsmslE+c2sYDNoiA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.0.1.tgz",
+ "integrity": "sha512-sq+/Mc1IqIexWEQ+Q2XPiDb5SxSvY5JPqHnMOl/PlF5BekslzduX8dglSkpC17VeiAQB6dpS+4aiwNLJRduCNw==",
"dev": true,
"dependencies": {
- "@volar/language-core": "~2.3.1",
- "@vue/compiler-dom": "^3.4.0",
- "@vue/shared": "^3.4.0",
- "computeds": "^0.0.1",
- "minimatch": "^9.0.3",
+ "@volar/language-core": "2.4.17",
+ "@vue/compiler-dom": "^3.5.0",
+ "@vue/compiler-vue2": "^2.7.16",
+ "@vue/shared": "^3.5.0",
+ "alien-signals": "^2.0.5",
+ "minimatch": "^10.0.1",
"muggle-string": "^0.4.1",
- "path-browserify": "^1.0.1",
- "vue-template-compiler": "^2.7.14"
+ "path-browserify": "^1.0.1"
},
"peerDependencies": {
"typescript": "*"
@@ -940,25 +971,10 @@
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.17.tgz",
"integrity": "sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg=="
},
- "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
- },
- "node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/computeds": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz",
- "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
+ "node_modules/alien-signals": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-2.0.5.tgz",
+ "integrity": "sha512-PdJB6+06nUNAClInE3Dweq7/2xVAYM64vvvS1IHVHSJmgeOtEdrAGyp7Z2oJtYm0B342/Exd2NT0uMJaThcjLQ==",
"dev": true
},
"node_modules/csstype": {
@@ -1073,18 +1089,6 @@
"@stencil/core": "^4.0.3"
}
},
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/magic-string": {
"version": "0.30.17",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
@@ -1094,15 +1098,15 @@
}
},
"node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
+ "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
"dev": true,
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "@isaacs/brace-expansion": "^5.0.0"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -1220,21 +1224,6 @@
"fsevents": "~2.3.2"
}
},
- "node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -1265,22 +1254,22 @@
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "version": "5.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"devOptional": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
- "node": ">=4.2.0"
+ "node": ">=14.17"
}
},
"node_modules/vite": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.0.tgz",
- "integrity": "sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.4.tgz",
+ "integrity": "sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==",
"dev": true,
"dependencies": {
"esbuild": "^0.25.0",
@@ -1391,38 +1380,21 @@
"vue": "^3.2.0"
}
},
- "node_modules/vue-template-compiler": {
- "version": "2.7.14",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
- "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
- "dev": true,
- "dependencies": {
- "de-indent": "^1.0.2",
- "he": "^1.2.0"
- }
- },
"node_modules/vue-tsc": {
- "version": "2.0.22",
- "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.22.tgz",
- "integrity": "sha512-lMBIwPBO0sxCcmvu45yt1b035AaQ8/XSXQDk8m75y4j0jSXY/y/XzfEtssQ9JMS47lDaR10O3/926oCs8OeGUw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.0.1.tgz",
+ "integrity": "sha512-UvMLQD0hAGL1g/NfEQelnSVB4H5gtf/gz2lJKjMMwWNOUmSNyWkejwJagAxEbSjtV5CPPJYslOtoSuqJ63mhdg==",
"dev": true,
"dependencies": {
- "@volar/typescript": "~2.3.1",
- "@vue/language-core": "2.0.22",
- "semver": "^7.5.4"
+ "@volar/typescript": "2.4.17",
+ "@vue/language-core": "3.0.1"
},
"bin": {
"vue-tsc": "bin/vue-tsc.js"
},
"peerDependencies": {
- "typescript": "*"
+ "typescript": ">=5.0.0"
}
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
}
},
"dependencies": {
@@ -1655,6 +1627,21 @@
"@ionic/vue": "7.8.6"
}
},
+ "@isaacs/balanced-match": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
+ "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
+ "dev": true
+ },
+ "@isaacs/brace-expansion": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
+ "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
+ "dev": true,
+ "requires": {
+ "@isaacs/balanced-match": "^4.0.1"
+ }
+ },
"@jridgewell/sourcemap-codec": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
@@ -1827,27 +1814,27 @@
}
},
"@volar/language-core": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.3.4.tgz",
- "integrity": "sha512-wXBhY11qG6pCDAqDnbBRFIDSIwbqkWI7no+lj5+L7IlA7HRIjRP7YQLGzT0LF4lS6eHkMSsclXqy9DwYJasZTQ==",
+ "version": "2.4.17",
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.17.tgz",
+ "integrity": "sha512-chmRZMbKmcGpKMoO7Reb70uiLrzo0KWC2CkFttKUuKvrE+VYgi+fL9vWMJ07Fv5ulX0V1TAyyacN9q3nc5/ecA==",
"dev": true,
"requires": {
- "@volar/source-map": "2.3.4"
+ "@volar/source-map": "2.4.17"
}
},
"@volar/source-map": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.3.4.tgz",
- "integrity": "sha512-C+t63nwcblqLIVTYXaVi/+gC8NukDaDIQI72J3R7aXGvtgaVB16c+J8Iz7/VfOy7kjYv7lf5GhBny6ACw9fTGQ==",
+ "version": "2.4.17",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.17.tgz",
+ "integrity": "sha512-QDybtQyO3Ms/NjFqNHTC5tbDN2oK5VH7ZaKrcubtfHBDj63n2pizHC3wlMQ+iT55kQXZUUAbmBX5L1C8CHFeBw==",
"dev": true
},
"@volar/typescript": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.3.4.tgz",
- "integrity": "sha512-acCvt7dZECyKcvO5geNybmrqOsu9u8n5XP1rfiYsOLYGPxvHRav9BVmEdRyZ3vvY6mNyQ1wLL5Hday4IShe17w==",
+ "version": "2.4.17",
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.17.tgz",
+ "integrity": "sha512-3paEFNh4P5DkgNUB2YkTRrfUekN4brAXxd3Ow1syMqdIPtCZHbUy4AW99S5RO/7mzyTWPMdDSo3mqTpB/LPObQ==",
"dev": true,
"requires": {
- "@volar/language-core": "2.3.4",
+ "@volar/language-core": "2.4.17",
"path-browserify": "^1.0.1",
"vscode-uri": "^3.0.8"
}
@@ -1898,25 +1885,35 @@
"@vue/shared": "3.5.17"
}
},
+ "@vue/compiler-vue2": {
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz",
+ "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==",
+ "dev": true,
+ "requires": {
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
"@vue/devtools-api": {
"version": "6.6.4",
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
},
"@vue/language-core": {
- "version": "2.0.22",
- "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.22.tgz",
- "integrity": "sha512-dNTAAtEOuMiz7N1s5tKpypnVVCtawxVSF5BukD0ELcYSw+DSbrSlYYSw8GuwvurodCeYFSHsmslE+c2sYDNoiA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.0.1.tgz",
+ "integrity": "sha512-sq+/Mc1IqIexWEQ+Q2XPiDb5SxSvY5JPqHnMOl/PlF5BekslzduX8dglSkpC17VeiAQB6dpS+4aiwNLJRduCNw==",
"dev": true,
"requires": {
- "@volar/language-core": "~2.3.1",
- "@vue/compiler-dom": "^3.4.0",
- "@vue/shared": "^3.4.0",
- "computeds": "^0.0.1",
- "minimatch": "^9.0.3",
+ "@volar/language-core": "2.4.17",
+ "@vue/compiler-dom": "^3.5.0",
+ "@vue/compiler-vue2": "^2.7.16",
+ "@vue/shared": "^3.5.0",
+ "alien-signals": "^2.0.5",
+ "minimatch": "^10.0.1",
"muggle-string": "^0.4.1",
- "path-browserify": "^1.0.1",
- "vue-template-compiler": "^2.7.14"
+ "path-browserify": "^1.0.1"
}
},
"@vue/reactivity": {
@@ -1961,25 +1958,10 @@
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.17.tgz",
"integrity": "sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg=="
},
- "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
- },
- "brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0"
- }
- },
- "computeds": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz",
- "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
+ "alien-signals": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-2.0.5.tgz",
+ "integrity": "sha512-PdJB6+06nUNAClInE3Dweq7/2xVAYM64vvvS1IHVHSJmgeOtEdrAGyp7Z2oJtYm0B342/Exd2NT0uMJaThcjLQ==",
"dev": true
},
"csstype": {
@@ -2064,15 +2046,6 @@
"@stencil/core": "^4.0.3"
}
},
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
"magic-string": {
"version": "0.30.17",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
@@ -2082,12 +2055,12 @@
}
},
"minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
+ "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
"dev": true,
"requires": {
- "brace-expansion": "^2.0.1"
+ "@isaacs/brace-expansion": "^5.0.0"
}
},
"muggle-string": {
@@ -2158,15 +2131,6 @@
"fsevents": "~2.3.2"
}
},
- "semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
"source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -2188,15 +2152,15 @@
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "version": "5.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"devOptional": true
},
"vite": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.0.tgz",
- "integrity": "sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.4.tgz",
+ "integrity": "sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==",
"dev": true,
"requires": {
"esbuild": "^0.25.0",
@@ -2234,32 +2198,15 @@
"@vue/devtools-api": "^6.6.4"
}
},
- "vue-template-compiler": {
- "version": "2.7.14",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
- "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
- "dev": true,
- "requires": {
- "de-indent": "^1.0.2",
- "he": "^1.2.0"
- }
- },
"vue-tsc": {
- "version": "2.0.22",
- "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.22.tgz",
- "integrity": "sha512-lMBIwPBO0sxCcmvu45yt1b035AaQ8/XSXQDk8m75y4j0jSXY/y/XzfEtssQ9JMS47lDaR10O3/926oCs8OeGUw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.0.1.tgz",
+ "integrity": "sha512-UvMLQD0hAGL1g/NfEQelnSVB4H5gtf/gz2lJKjMMwWNOUmSNyWkejwJagAxEbSjtV5CPPJYslOtoSuqJ63mhdg==",
"dev": true,
"requires": {
- "@volar/typescript": "~2.3.1",
- "@vue/language-core": "2.0.22",
- "semver": "^7.5.4"
+ "@volar/typescript": "2.4.17",
+ "@vue/language-core": "3.0.1"
}
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
}
}
}
diff --git a/static/code/stackblitz/v7/vue/package.json b/static/code/stackblitz/v7/vue/package.json
index 120fd34f021..3cdc1a52022 100644
--- a/static/code/stackblitz/v7/vue/package.json
+++ b/static/code/stackblitz/v7/vue/package.json
@@ -15,8 +15,8 @@
},
"devDependencies": {
"@vitejs/plugin-vue": "^6.0.0",
- "typescript": "^4.5.4",
+ "typescript": "^5.0.0",
"vite": "^7.0.0",
- "vue-tsc": "^2.0.0"
+ "vue-tsc": "^3.0.0"
}
}
diff --git a/static/code/stackblitz/v8/angular/package.json b/static/code/stackblitz/v8/angular/package.json
index f13be41d5e3..91a623bcbf2 100644
--- a/static/code/stackblitz/v8/angular/package.json
+++ b/static/code/stackblitz/v8/angular/package.json
@@ -15,9 +15,9 @@
"@angular/platform-browser": "^20.0.0",
"@angular/platform-browser-dynamic": "^20.0.0",
"@angular/router": "^20.0.0",
- "@ionic/angular": "8.6.2",
- "@ionic/core": "8.6.2",
- "ionicons": "8.0.9",
+ "@ionic/angular": "8.6.4",
+ "@ionic/core": "8.6.4",
+ "ionicons": "8.0.13",
"rxjs": "^7.8.1",
"tslib": "^2.5.0",
"zone.js": "~0.15.0"
diff --git a/static/code/stackblitz/v8/html/index.html b/static/code/stackblitz/v8/html/index.html
index 34f05146a9a..fb14e96ba98 100644
--- a/static/code/stackblitz/v8/html/index.html
+++ b/static/code/stackblitz/v8/html/index.html
@@ -1,14 +1,19 @@
-
+
+
-
-
+
+
+
+ Ionic App
{{ TEMPLATE }}
+
+
diff --git a/static/code/stackblitz/v8/html/index.withContent.html b/static/code/stackblitz/v8/html/index.withContent.html
index af371907653..404344868cd 100644
--- a/static/code/stackblitz/v8/html/index.withContent.html
+++ b/static/code/stackblitz/v8/html/index.withContent.html
@@ -1,8 +1,11 @@
-
+
+
-
-
+
+
+
+ Ionic App
@@ -11,6 +14,8 @@
{{ TEMPLATE }}
+
+
diff --git a/static/code/stackblitz/v8/html/package.json b/static/code/stackblitz/v8/html/package.json
index f32b562a61f..6b85efe2a20 100644
--- a/static/code/stackblitz/v8/html/package.json
+++ b/static/code/stackblitz/v8/html/package.json
@@ -1,6 +1,20 @@
{
+ "name": "html-starter",
+ "private": true,
+ "type": "module",
+ "main": "index.ts",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "start": "vite preview"
+ },
"dependencies": {
- "@ionic/core": "8.6.2",
- "ionicons": "8.0.9"
+ "@ionic/core": "8.6.4",
+ "ionicons": "8.0.13"
+ },
+ "devDependencies": {
+ "typescript": "^5.0.0",
+ "vite": "^7.0.0",
+ "vite-plugin-static-copy": "^3.1.0"
}
}
diff --git a/static/code/stackblitz/v8/html/tsconfig.json b/static/code/stackblitz/v8/html/tsconfig.json
new file mode 100644
index 00000000000..0b999e71b8e
--- /dev/null
+++ b/static/code/stackblitz/v8/html/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "compilerOptions": {
+ "baseUrl": "./",
+ "target": "esnext",
+ "module": "nodenext",
+ "moduleResolution": "nodenext",
+ "outDir": "dist",
+ "strict": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "forceConsistentCasingInFileNames": true,
+ "lib": ["esnext", "dom"],
+ "resolveJsonModule": true,
+ "allowSyntheticDefaultImports": true,
+ "isolatedModules": true,
+ "types": ["node"]
+ },
+ "include": ["src/**/*.ts"]
+}
diff --git a/static/code/stackblitz/v8/html/vite.config.ts b/static/code/stackblitz/v8/html/vite.config.ts
new file mode 100644
index 00000000000..3e356ac9e72
--- /dev/null
+++ b/static/code/stackblitz/v8/html/vite.config.ts
@@ -0,0 +1,18 @@
+import { defineConfig } from 'vite';
+import { viteStaticCopy } from 'vite-plugin-static-copy';
+
+export default defineConfig({
+ optimizeDeps: {
+ exclude: ['@ionic/core'],
+ },
+ plugins: [
+ viteStaticCopy({
+ targets: [
+ {
+ src: 'node_modules/ionicons/dist/svg/*',
+ dest: 'svg'
+ }
+ ]
+ })
+ ]
+});
diff --git a/static/code/stackblitz/v8/react/package-lock.json b/static/code/stackblitz/v8/react/package-lock.json
index 2c477241a81..ce933c0919b 100644
--- a/static/code/stackblitz/v8/react/package-lock.json
+++ b/static/code/stackblitz/v8/react/package-lock.json
@@ -8,8 +8,8 @@
"name": "vite-react-typescript",
"version": "0.1.0",
"dependencies": {
- "@ionic/react": "8.6.2",
- "@ionic/react-router": "8.6.2",
+ "@ionic/react": "8.6.4",
+ "@ionic/react-router": "8.6.4",
"@types/node": "^22.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
@@ -661,9 +661,9 @@
}
},
"node_modules/@ionic/core": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.2.tgz",
- "integrity": "sha512-CGZ9CDp/XHtm9WrK3wt0ZtR2f2B76qEvJIaF/juCqmpza9Al6u2L9R/NTEwInDRCWfbkAIF22nHNH54/VvN78Q==",
+ "version": "8.6.4",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.4.tgz",
+ "integrity": "sha512-6kOx0yQAkXkMvhe6fQPA034LgmCh4aL0nJ+GwzNMwLYAe2fVq6mRdM37jNldGiGIZ0Q9Te2sHTFTM/IGItuIyQ==",
"dependencies": {
"@stencil/core": "4.33.1",
"ionicons": "^7.2.2",
@@ -671,11 +671,11 @@
}
},
"node_modules/@ionic/react": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.6.2.tgz",
- "integrity": "sha512-SXE1RnzGqj0MGKGs6D4UCk4rOghbLYI5qwANdZJuBxlIcrcBJuAySjneuTGt+Y3UHS8W3YZHFujRv2Gvb+zvqQ==",
+ "version": "8.6.4",
+ "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.6.4.tgz",
+ "integrity": "sha512-X2jIi4TN/u9hlsy/BrubyJbIZ4Pn8cnbBFu/emQ1y7VH0rpVVWPgeHb8cKMJPNbKzszuvO+f5huGliNIYFIQ8A==",
"dependencies": {
- "@ionic/core": "8.6.2",
+ "@ionic/core": "8.6.4",
"ionicons": "^7.0.0",
"tslib": "*"
},
@@ -685,11 +685,11 @@
}
},
"node_modules/@ionic/react-router": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/@ionic/react-router/-/react-router-8.6.2.tgz",
- "integrity": "sha512-wNVYZHEHkRkNimiK24bJ8KsWjuQyug7C+J/rNER7BKtZDzU3kWKVjvzD3P7kaiOf/DtVo+OrZNvYQJOuoIEhWg==",
+ "version": "8.6.4",
+ "resolved": "https://registry.npmjs.org/@ionic/react-router/-/react-router-8.6.4.tgz",
+ "integrity": "sha512-AOPVK/aJv5MJMjWG3fpzAFtNq4WNOQFdU4YSpXcYAhmiAWuIIRobX3/bHT4Y3lXirXohqHbtFl50VMMe3rpVFA==",
"dependencies": {
- "@ionic/react": "8.6.2",
+ "@ionic/react": "8.6.4",
"tslib": "*"
},
"peerDependencies": {
@@ -1153,9 +1153,9 @@
"integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA=="
},
"node_modules/@types/node": {
- "version": "22.15.33",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.33.tgz",
- "integrity": "sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==",
+ "version": "22.16.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.3.tgz",
+ "integrity": "sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==",
"dependencies": {
"undici-types": "~6.21.0"
}
@@ -1797,9 +1797,9 @@
"integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
},
"node_modules/vite": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.0.tgz",
- "integrity": "sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.4.tgz",
+ "integrity": "sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==",
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.4.6",
@@ -2215,9 +2215,9 @@
"optional": true
},
"@ionic/core": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.2.tgz",
- "integrity": "sha512-CGZ9CDp/XHtm9WrK3wt0ZtR2f2B76qEvJIaF/juCqmpza9Al6u2L9R/NTEwInDRCWfbkAIF22nHNH54/VvN78Q==",
+ "version": "8.6.4",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.4.tgz",
+ "integrity": "sha512-6kOx0yQAkXkMvhe6fQPA034LgmCh4aL0nJ+GwzNMwLYAe2fVq6mRdM37jNldGiGIZ0Q9Te2sHTFTM/IGItuIyQ==",
"requires": {
"@stencil/core": "4.33.1",
"ionicons": "^7.2.2",
@@ -2225,21 +2225,21 @@
}
},
"@ionic/react": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.6.2.tgz",
- "integrity": "sha512-SXE1RnzGqj0MGKGs6D4UCk4rOghbLYI5qwANdZJuBxlIcrcBJuAySjneuTGt+Y3UHS8W3YZHFujRv2Gvb+zvqQ==",
+ "version": "8.6.4",
+ "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.6.4.tgz",
+ "integrity": "sha512-X2jIi4TN/u9hlsy/BrubyJbIZ4Pn8cnbBFu/emQ1y7VH0rpVVWPgeHb8cKMJPNbKzszuvO+f5huGliNIYFIQ8A==",
"requires": {
- "@ionic/core": "8.6.2",
+ "@ionic/core": "8.6.4",
"ionicons": "^7.0.0",
"tslib": "*"
}
},
"@ionic/react-router": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/@ionic/react-router/-/react-router-8.6.2.tgz",
- "integrity": "sha512-wNVYZHEHkRkNimiK24bJ8KsWjuQyug7C+J/rNER7BKtZDzU3kWKVjvzD3P7kaiOf/DtVo+OrZNvYQJOuoIEhWg==",
+ "version": "8.6.4",
+ "resolved": "https://registry.npmjs.org/@ionic/react-router/-/react-router-8.6.4.tgz",
+ "integrity": "sha512-AOPVK/aJv5MJMjWG3fpzAFtNq4WNOQFdU4YSpXcYAhmiAWuIIRobX3/bHT4Y3lXirXohqHbtFl50VMMe3rpVFA==",
"requires": {
- "@ionic/react": "8.6.2",
+ "@ionic/react": "8.6.4",
"tslib": "*"
}
},
@@ -2515,9 +2515,9 @@
"integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA=="
},
"@types/node": {
- "version": "22.15.33",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.33.tgz",
- "integrity": "sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==",
+ "version": "22.16.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.3.tgz",
+ "integrity": "sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==",
"requires": {
"undici-types": "~6.21.0"
}
@@ -2966,9 +2966,9 @@
"integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
},
"vite": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.0.tgz",
- "integrity": "sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.4.tgz",
+ "integrity": "sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==",
"requires": {
"esbuild": "^0.25.0",
"fdir": "^6.4.6",
diff --git a/static/code/stackblitz/v8/react/package.json b/static/code/stackblitz/v8/react/package.json
index 8491f5fd6e5..e1a5d1090fc 100644
--- a/static/code/stackblitz/v8/react/package.json
+++ b/static/code/stackblitz/v8/react/package.json
@@ -3,8 +3,8 @@
"version": "0.1.0",
"private": true,
"dependencies": {
- "@ionic/react": "8.6.2",
- "@ionic/react-router": "8.6.2",
+ "@ionic/react": "8.6.4",
+ "@ionic/react-router": "8.6.4",
"@types/node": "^22.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
diff --git a/static/code/stackblitz/v8/vue/package-lock.json b/static/code/stackblitz/v8/vue/package-lock.json
index b8a14f759b9..a63c5b831d3 100644
--- a/static/code/stackblitz/v8/vue/package-lock.json
+++ b/static/code/stackblitz/v8/vue/package-lock.json
@@ -8,16 +8,16 @@
"name": "vite-vue-starter",
"version": "0.0.0",
"dependencies": {
- "@ionic/vue": "8.6.2",
- "@ionic/vue-router": "8.6.2",
+ "@ionic/vue": "8.6.4",
+ "@ionic/vue-router": "8.6.4",
"vue": "^3.2.25",
"vue-router": "4.5.1"
},
"devDependencies": {
"@vitejs/plugin-vue": "^6.0.0",
- "typescript": "^4.5.4",
+ "typescript": "^5.0.0",
"vite": "^7.0.0",
- "vue-tsc": "^2.0.0"
+ "vue-tsc": "^3.0.0"
}
},
"node_modules/@babel/helper-string-parser": {
@@ -463,9 +463,9 @@
}
},
"node_modules/@ionic/core": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.2.tgz",
- "integrity": "sha512-CGZ9CDp/XHtm9WrK3wt0ZtR2f2B76qEvJIaF/juCqmpza9Al6u2L9R/NTEwInDRCWfbkAIF22nHNH54/VvN78Q==",
+ "version": "8.6.4",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.4.tgz",
+ "integrity": "sha512-6kOx0yQAkXkMvhe6fQPA034LgmCh4aL0nJ+GwzNMwLYAe2fVq6mRdM37jNldGiGIZ0Q9Te2sHTFTM/IGItuIyQ==",
"dependencies": {
"@stencil/core": "4.33.1",
"ionicons": "^7.2.2",
@@ -473,21 +473,42 @@
}
},
"node_modules/@ionic/vue": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.6.2.tgz",
- "integrity": "sha512-bqhKOxKwxp/aK9DR8NkXeaaPyth0TjgIGpzy28JKd/Q3fJ5eICkEn+gctRlC1L/4nBr6DponSEHfncSeEBQfoQ==",
+ "version": "8.6.4",
+ "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.6.4.tgz",
+ "integrity": "sha512-vhFxCUk2hwPbJS1uTcZkVFB+9eFfzeis5TyL1mDmlULFhbGI/YTLTcWcXWSdG/myg4yPeb8brObWpMq36StJVw==",
"dependencies": {
- "@ionic/core": "8.6.2",
+ "@ionic/core": "8.6.4",
"@stencil/vue-output-target": "0.10.7",
"ionicons": "^7.0.0"
}
},
"node_modules/@ionic/vue-router": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/@ionic/vue-router/-/vue-router-8.6.2.tgz",
- "integrity": "sha512-Qx+xhNgqLqACH665vMKP4ZjIagqepKCXJ9cyCpwKaS76SeXxTK4OLSSGv6oOT7UIjGAe8xZH8DQ6LRLFpvvEtw==",
+ "version": "8.6.4",
+ "resolved": "https://registry.npmjs.org/@ionic/vue-router/-/vue-router-8.6.4.tgz",
+ "integrity": "sha512-5d6Tu2IHe2LcOYQpuISsuqVGWJttPwoDCTBMemgjeDJeQUoUSFfS0NggtLm+d+wCQN+lgZubvrZ1os2x63Hvng==",
"dependencies": {
- "@ionic/vue": "8.6.2"
+ "@ionic/vue": "8.6.4"
+ }
+ },
+ "node_modules/@isaacs/balanced-match": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
+ "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
+ "dev": true,
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@isaacs/brace-expansion": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
+ "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/balanced-match": "^4.0.1"
+ },
+ "engines": {
+ "node": "20 || >=22"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
@@ -923,27 +944,27 @@
}
},
"node_modules/@volar/language-core": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.3.4.tgz",
- "integrity": "sha512-wXBhY11qG6pCDAqDnbBRFIDSIwbqkWI7no+lj5+L7IlA7HRIjRP7YQLGzT0LF4lS6eHkMSsclXqy9DwYJasZTQ==",
+ "version": "2.4.17",
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.17.tgz",
+ "integrity": "sha512-chmRZMbKmcGpKMoO7Reb70uiLrzo0KWC2CkFttKUuKvrE+VYgi+fL9vWMJ07Fv5ulX0V1TAyyacN9q3nc5/ecA==",
"dev": true,
"dependencies": {
- "@volar/source-map": "2.3.4"
+ "@volar/source-map": "2.4.17"
}
},
"node_modules/@volar/source-map": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.3.4.tgz",
- "integrity": "sha512-C+t63nwcblqLIVTYXaVi/+gC8NukDaDIQI72J3R7aXGvtgaVB16c+J8Iz7/VfOy7kjYv7lf5GhBny6ACw9fTGQ==",
+ "version": "2.4.17",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.17.tgz",
+ "integrity": "sha512-QDybtQyO3Ms/NjFqNHTC5tbDN2oK5VH7ZaKrcubtfHBDj63n2pizHC3wlMQ+iT55kQXZUUAbmBX5L1C8CHFeBw==",
"dev": true
},
"node_modules/@volar/typescript": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.3.4.tgz",
- "integrity": "sha512-acCvt7dZECyKcvO5geNybmrqOsu9u8n5XP1rfiYsOLYGPxvHRav9BVmEdRyZ3vvY6mNyQ1wLL5Hday4IShe17w==",
+ "version": "2.4.17",
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.17.tgz",
+ "integrity": "sha512-3paEFNh4P5DkgNUB2YkTRrfUekN4brAXxd3Ow1syMqdIPtCZHbUy4AW99S5RO/7mzyTWPMdDSo3mqTpB/LPObQ==",
"dev": true,
"dependencies": {
- "@volar/language-core": "2.3.4",
+ "@volar/language-core": "2.4.17",
"path-browserify": "^1.0.1",
"vscode-uri": "^3.0.8"
}
@@ -994,25 +1015,35 @@
"@vue/shared": "3.5.17"
}
},
+ "node_modules/@vue/compiler-vue2": {
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz",
+ "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==",
+ "dev": true,
+ "dependencies": {
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
"node_modules/@vue/devtools-api": {
"version": "6.6.4",
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
},
"node_modules/@vue/language-core": {
- "version": "2.0.22",
- "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.22.tgz",
- "integrity": "sha512-dNTAAtEOuMiz7N1s5tKpypnVVCtawxVSF5BukD0ELcYSw+DSbrSlYYSw8GuwvurodCeYFSHsmslE+c2sYDNoiA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.0.1.tgz",
+ "integrity": "sha512-sq+/Mc1IqIexWEQ+Q2XPiDb5SxSvY5JPqHnMOl/PlF5BekslzduX8dglSkpC17VeiAQB6dpS+4aiwNLJRduCNw==",
"dev": true,
"dependencies": {
- "@volar/language-core": "~2.3.1",
- "@vue/compiler-dom": "^3.4.0",
- "@vue/shared": "^3.4.0",
- "computeds": "^0.0.1",
- "minimatch": "^9.0.3",
+ "@volar/language-core": "2.4.17",
+ "@vue/compiler-dom": "^3.5.0",
+ "@vue/compiler-vue2": "^2.7.16",
+ "@vue/shared": "^3.5.0",
+ "alien-signals": "^2.0.5",
+ "minimatch": "^10.0.1",
"muggle-string": "^0.4.1",
- "path-browserify": "^1.0.1",
- "vue-template-compiler": "^2.7.14"
+ "path-browserify": "^1.0.1"
},
"peerDependencies": {
"typescript": "*"
@@ -1068,25 +1099,10 @@
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.17.tgz",
"integrity": "sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg=="
},
- "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
- },
- "node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/computeds": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz",
- "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
+ "node_modules/alien-signals": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-2.0.5.tgz",
+ "integrity": "sha512-PdJB6+06nUNAClInE3Dweq7/2xVAYM64vvvS1IHVHSJmgeOtEdrAGyp7Z2oJtYm0B342/Exd2NT0uMJaThcjLQ==",
"dev": true
},
"node_modules/csstype": {
@@ -1201,18 +1217,6 @@
"@stencil/core": "^4.0.3"
}
},
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/magic-string": {
"version": "0.30.17",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
@@ -1222,15 +1226,15 @@
}
},
"node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
+ "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
"dev": true,
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "@isaacs/brace-expansion": "^5.0.0"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -1348,21 +1352,6 @@
"fsevents": "~2.3.2"
}
},
- "node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -1393,22 +1382,22 @@
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "version": "5.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"devOptional": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
- "node": ">=4.2.0"
+ "node": ">=14.17"
}
},
"node_modules/vite": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.0.tgz",
- "integrity": "sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.4.tgz",
+ "integrity": "sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==",
"dev": true,
"dependencies": {
"esbuild": "^0.25.0",
@@ -1519,38 +1508,21 @@
"vue": "^3.2.0"
}
},
- "node_modules/vue-template-compiler": {
- "version": "2.7.14",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
- "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
- "dev": true,
- "dependencies": {
- "de-indent": "^1.0.2",
- "he": "^1.2.0"
- }
- },
"node_modules/vue-tsc": {
- "version": "2.0.22",
- "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.22.tgz",
- "integrity": "sha512-lMBIwPBO0sxCcmvu45yt1b035AaQ8/XSXQDk8m75y4j0jSXY/y/XzfEtssQ9JMS47lDaR10O3/926oCs8OeGUw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.0.1.tgz",
+ "integrity": "sha512-UvMLQD0hAGL1g/NfEQelnSVB4H5gtf/gz2lJKjMMwWNOUmSNyWkejwJagAxEbSjtV5CPPJYslOtoSuqJ63mhdg==",
"dev": true,
"dependencies": {
- "@volar/typescript": "~2.3.1",
- "@vue/language-core": "2.0.22",
- "semver": "^7.5.4"
+ "@volar/typescript": "2.4.17",
+ "@vue/language-core": "3.0.1"
},
"bin": {
"vue-tsc": "bin/vue-tsc.js"
},
"peerDependencies": {
- "typescript": "*"
+ "typescript": ">=5.0.0"
}
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
}
},
"dependencies": {
@@ -1757,9 +1729,9 @@
"optional": true
},
"@ionic/core": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.2.tgz",
- "integrity": "sha512-CGZ9CDp/XHtm9WrK3wt0ZtR2f2B76qEvJIaF/juCqmpza9Al6u2L9R/NTEwInDRCWfbkAIF22nHNH54/VvN78Q==",
+ "version": "8.6.4",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.4.tgz",
+ "integrity": "sha512-6kOx0yQAkXkMvhe6fQPA034LgmCh4aL0nJ+GwzNMwLYAe2fVq6mRdM37jNldGiGIZ0Q9Te2sHTFTM/IGItuIyQ==",
"requires": {
"@stencil/core": "4.33.1",
"ionicons": "^7.2.2",
@@ -1767,21 +1739,36 @@
}
},
"@ionic/vue": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.6.2.tgz",
- "integrity": "sha512-bqhKOxKwxp/aK9DR8NkXeaaPyth0TjgIGpzy28JKd/Q3fJ5eICkEn+gctRlC1L/4nBr6DponSEHfncSeEBQfoQ==",
+ "version": "8.6.4",
+ "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.6.4.tgz",
+ "integrity": "sha512-vhFxCUk2hwPbJS1uTcZkVFB+9eFfzeis5TyL1mDmlULFhbGI/YTLTcWcXWSdG/myg4yPeb8brObWpMq36StJVw==",
"requires": {
- "@ionic/core": "8.6.2",
+ "@ionic/core": "8.6.4",
"@stencil/vue-output-target": "0.10.7",
"ionicons": "^7.0.0"
}
},
"@ionic/vue-router": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/@ionic/vue-router/-/vue-router-8.6.2.tgz",
- "integrity": "sha512-Qx+xhNgqLqACH665vMKP4ZjIagqepKCXJ9cyCpwKaS76SeXxTK4OLSSGv6oOT7UIjGAe8xZH8DQ6LRLFpvvEtw==",
+ "version": "8.6.4",
+ "resolved": "https://registry.npmjs.org/@ionic/vue-router/-/vue-router-8.6.4.tgz",
+ "integrity": "sha512-5d6Tu2IHe2LcOYQpuISsuqVGWJttPwoDCTBMemgjeDJeQUoUSFfS0NggtLm+d+wCQN+lgZubvrZ1os2x63Hvng==",
+ "requires": {
+ "@ionic/vue": "8.6.4"
+ }
+ },
+ "@isaacs/balanced-match": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
+ "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
+ "dev": true
+ },
+ "@isaacs/brace-expansion": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
+ "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
+ "dev": true,
"requires": {
- "@ionic/vue": "8.6.2"
+ "@isaacs/balanced-match": "^4.0.1"
}
},
"@jridgewell/sourcemap-codec": {
@@ -2022,27 +2009,27 @@
}
},
"@volar/language-core": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.3.4.tgz",
- "integrity": "sha512-wXBhY11qG6pCDAqDnbBRFIDSIwbqkWI7no+lj5+L7IlA7HRIjRP7YQLGzT0LF4lS6eHkMSsclXqy9DwYJasZTQ==",
+ "version": "2.4.17",
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.17.tgz",
+ "integrity": "sha512-chmRZMbKmcGpKMoO7Reb70uiLrzo0KWC2CkFttKUuKvrE+VYgi+fL9vWMJ07Fv5ulX0V1TAyyacN9q3nc5/ecA==",
"dev": true,
"requires": {
- "@volar/source-map": "2.3.4"
+ "@volar/source-map": "2.4.17"
}
},
"@volar/source-map": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.3.4.tgz",
- "integrity": "sha512-C+t63nwcblqLIVTYXaVi/+gC8NukDaDIQI72J3R7aXGvtgaVB16c+J8Iz7/VfOy7kjYv7lf5GhBny6ACw9fTGQ==",
+ "version": "2.4.17",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.17.tgz",
+ "integrity": "sha512-QDybtQyO3Ms/NjFqNHTC5tbDN2oK5VH7ZaKrcubtfHBDj63n2pizHC3wlMQ+iT55kQXZUUAbmBX5L1C8CHFeBw==",
"dev": true
},
"@volar/typescript": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.3.4.tgz",
- "integrity": "sha512-acCvt7dZECyKcvO5geNybmrqOsu9u8n5XP1rfiYsOLYGPxvHRav9BVmEdRyZ3vvY6mNyQ1wLL5Hday4IShe17w==",
+ "version": "2.4.17",
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.17.tgz",
+ "integrity": "sha512-3paEFNh4P5DkgNUB2YkTRrfUekN4brAXxd3Ow1syMqdIPtCZHbUy4AW99S5RO/7mzyTWPMdDSo3mqTpB/LPObQ==",
"dev": true,
"requires": {
- "@volar/language-core": "2.3.4",
+ "@volar/language-core": "2.4.17",
"path-browserify": "^1.0.1",
"vscode-uri": "^3.0.8"
}
@@ -2093,25 +2080,35 @@
"@vue/shared": "3.5.17"
}
},
+ "@vue/compiler-vue2": {
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz",
+ "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==",
+ "dev": true,
+ "requires": {
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
"@vue/devtools-api": {
"version": "6.6.4",
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
},
"@vue/language-core": {
- "version": "2.0.22",
- "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.22.tgz",
- "integrity": "sha512-dNTAAtEOuMiz7N1s5tKpypnVVCtawxVSF5BukD0ELcYSw+DSbrSlYYSw8GuwvurodCeYFSHsmslE+c2sYDNoiA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.0.1.tgz",
+ "integrity": "sha512-sq+/Mc1IqIexWEQ+Q2XPiDb5SxSvY5JPqHnMOl/PlF5BekslzduX8dglSkpC17VeiAQB6dpS+4aiwNLJRduCNw==",
"dev": true,
"requires": {
- "@volar/language-core": "~2.3.1",
- "@vue/compiler-dom": "^3.4.0",
- "@vue/shared": "^3.4.0",
- "computeds": "^0.0.1",
- "minimatch": "^9.0.3",
+ "@volar/language-core": "2.4.17",
+ "@vue/compiler-dom": "^3.5.0",
+ "@vue/compiler-vue2": "^2.7.16",
+ "@vue/shared": "^3.5.0",
+ "alien-signals": "^2.0.5",
+ "minimatch": "^10.0.1",
"muggle-string": "^0.4.1",
- "path-browserify": "^1.0.1",
- "vue-template-compiler": "^2.7.14"
+ "path-browserify": "^1.0.1"
}
},
"@vue/reactivity": {
@@ -2156,25 +2153,10 @@
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.17.tgz",
"integrity": "sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg=="
},
- "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
- },
- "brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0"
- }
- },
- "computeds": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz",
- "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
+ "alien-signals": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-2.0.5.tgz",
+ "integrity": "sha512-PdJB6+06nUNAClInE3Dweq7/2xVAYM64vvvS1IHVHSJmgeOtEdrAGyp7Z2oJtYm0B342/Exd2NT0uMJaThcjLQ==",
"dev": true
},
"csstype": {
@@ -2259,15 +2241,6 @@
"@stencil/core": "^4.0.3"
}
},
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
"magic-string": {
"version": "0.30.17",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
@@ -2277,12 +2250,12 @@
}
},
"minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
+ "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
"dev": true,
"requires": {
- "brace-expansion": "^2.0.1"
+ "@isaacs/brace-expansion": "^5.0.0"
}
},
"muggle-string": {
@@ -2353,15 +2326,6 @@
"fsevents": "~2.3.2"
}
},
- "semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
"source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -2383,15 +2347,15 @@
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "version": "5.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"devOptional": true
},
"vite": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.0.tgz",
- "integrity": "sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.4.tgz",
+ "integrity": "sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==",
"dev": true,
"requires": {
"esbuild": "^0.25.0",
@@ -2429,32 +2393,15 @@
"@vue/devtools-api": "^6.6.4"
}
},
- "vue-template-compiler": {
- "version": "2.7.14",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
- "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
- "dev": true,
- "requires": {
- "de-indent": "^1.0.2",
- "he": "^1.2.0"
- }
- },
"vue-tsc": {
- "version": "2.0.22",
- "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.22.tgz",
- "integrity": "sha512-lMBIwPBO0sxCcmvu45yt1b035AaQ8/XSXQDk8m75y4j0jSXY/y/XzfEtssQ9JMS47lDaR10O3/926oCs8OeGUw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.0.1.tgz",
+ "integrity": "sha512-UvMLQD0hAGL1g/NfEQelnSVB4H5gtf/gz2lJKjMMwWNOUmSNyWkejwJagAxEbSjtV5CPPJYslOtoSuqJ63mhdg==",
"dev": true,
"requires": {
- "@volar/typescript": "~2.3.1",
- "@vue/language-core": "2.0.22",
- "semver": "^7.5.4"
+ "@volar/typescript": "2.4.17",
+ "@vue/language-core": "3.0.1"
}
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
}
}
}
diff --git a/static/code/stackblitz/v8/vue/package.json b/static/code/stackblitz/v8/vue/package.json
index e62f0405cae..8111b8628cb 100644
--- a/static/code/stackblitz/v8/vue/package.json
+++ b/static/code/stackblitz/v8/vue/package.json
@@ -8,15 +8,15 @@
"preview": "vite preview"
},
"dependencies": {
- "@ionic/vue": "8.6.2",
- "@ionic/vue-router": "8.6.2",
+ "@ionic/vue": "8.6.4",
+ "@ionic/vue-router": "8.6.4",
"vue": "^3.2.25",
"vue-router": "4.5.1"
},
"devDependencies": {
"@vitejs/plugin-vue": "^6.0.0",
- "typescript": "^4.5.4",
+ "typescript": "^5.0.0",
"vite": "^7.0.0",
- "vue-tsc": "^2.0.0"
+ "vue-tsc": "^3.0.0"
}
}
diff --git a/static/icons/component-action-sheet-icon.png b/static/icons/component-action-sheet-icon.png
new file mode 100644
index 00000000000..50dee9de006
Binary files /dev/null and b/static/icons/component-action-sheet-icon.png differ
diff --git a/static/icons/component-breadcrumbs-icon.png b/static/icons/component-breadcrumbs-icon.png
new file mode 100644
index 00000000000..2e7a4165fcf
Binary files /dev/null and b/static/icons/component-breadcrumbs-icon.png differ
diff --git a/static/icons/component-icons-icon.png b/static/icons/component-icons-icon.png
new file mode 100644
index 00000000000..1e444bc4e3e
Binary files /dev/null and b/static/icons/component-icons-icon.png differ
diff --git a/static/icons/component-input-otp-icon.png b/static/icons/component-input-otp-icon.png
new file mode 100644
index 00000000000..416847abf39
Binary files /dev/null and b/static/icons/component-input-otp-icon.png differ
diff --git a/static/icons/component-media-icon.png b/static/icons/component-media-icon.png
index 3c21044bfad..7534e9f6944 100644
Binary files a/static/icons/component-media-icon.png and b/static/icons/component-media-icon.png differ
diff --git a/static/icons/component-navigation-icon.png b/static/icons/component-navigation-icon.png
new file mode 100644
index 00000000000..e0c808a709c
Binary files /dev/null and b/static/icons/component-navigation-icon.png differ
diff --git a/static/icons/component-searchbar-icon.png b/static/icons/component-searchbar-icon.png
new file mode 100644
index 00000000000..4341738560d
Binary files /dev/null and b/static/icons/component-searchbar-icon.png differ
diff --git a/static/icons/component-typography-icon.png b/static/icons/component-typography-icon.png
index d2632af52fc..c375549eda8 100644
Binary files a/static/icons/component-typography-icon.png and b/static/icons/component-typography-icon.png differ
diff --git a/static/icons/feature-component-accordion-icon.png b/static/icons/feature-component-accordion-icon.png
new file mode 100644
index 00000000000..847a1095418
Binary files /dev/null and b/static/icons/feature-component-accordion-icon.png differ
diff --git a/static/icons/feature-component-datetime-icon.png b/static/icons/feature-component-datetime-icon.png
new file mode 100644
index 00000000000..b6838937042
Binary files /dev/null and b/static/icons/feature-component-datetime-icon.png differ
diff --git a/static/icons/feature-component-item-icon.png b/static/icons/feature-component-item-icon.png
new file mode 100644
index 00000000000..c3353db553b
Binary files /dev/null and b/static/icons/feature-component-item-icon.png differ
diff --git a/static/icons/feature-component-refresher-icon.png b/static/icons/feature-component-refresher-icon.png
new file mode 100644
index 00000000000..528354fbad0
Binary files /dev/null and b/static/icons/feature-component-refresher-icon.png differ
diff --git a/static/usage/v6/accordion/customization/advanced-expansion-styles/angular/example_component_ts.md b/static/usage/v6/accordion/customization/advanced-expansion-styles/angular/example_component_ts.md
index 4db53a836a9..1b3dae1494b 100644
--- a/static/usage/v6/accordion/customization/advanced-expansion-styles/angular/example_component_ts.md
+++ b/static/usage/v6/accordion/customization/advanced-expansion-styles/angular/example_component_ts.md
@@ -1,10 +1,13 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
styleUrls: ['example.component.css'],
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {}
```
diff --git a/static/usage/v6/accordion/customization/icons/angular.md b/static/usage/v6/accordion/customization/icons/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/accordion/customization/icons/angular.md
rename to static/usage/v6/accordion/customization/icons/angular/example_component_html.md
diff --git a/static/usage/v6/accordion/customization/icons/angular/example_component_ts.md b/static/usage/v6/accordion/customization/icons/angular/example_component_ts.md
new file mode 100644
index 00000000000..e225a168a07
--- /dev/null
+++ b/static/usage/v6/accordion/customization/icons/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { caretDownCircle } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ caretDownCircle });
+ }
+}
+```
\ No newline at end of file
diff --git a/static/usage/v6/accordion/customization/icons/index.md b/static/usage/v6/accordion/customization/icons/index.md
index 691d4b933b1..b7668a6ee7c 100644
--- a/static/usage/v6/accordion/customization/icons/index.md
+++ b/static/usage/v6/accordion/customization/icons/index.md
@@ -3,7 +3,8 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
`,
+ imports: [IonicModule],
+ standalone: true
})
export class PageOneComponent {
component = PageTwoComponent;
diff --git a/static/usage/v6/back-button/basic/angular/page_two_component_ts.md b/static/usage/v6/back-button/basic/angular/page_two_component_ts.md
index b2cda11d2a8..8caa5a483e8 100644
--- a/static/usage/v6/back-button/basic/angular/page_two_component_ts.md
+++ b/static/usage/v6/back-button/basic/angular/page_two_component_ts.md
@@ -1,5 +1,6 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-page-two',
@@ -17,6 +18,8 @@ import { Component } from '@angular/core';
Use the back button to navigate to the previous page.
`,
+ imports: [IonicModule],
+ standalone: true
})
export class PageTwoComponent {}
```
diff --git a/static/usage/v6/back-button/basic/index.md b/static/usage/v6/back-button/basic/index.md
index 6c29748fe6f..5015c2398fe 100644
--- a/static/usage/v6/back-button/basic/index.md
+++ b/static/usage/v6/back-button/basic/index.md
@@ -2,7 +2,6 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
-import angular_app_module_ts from './angular/app_module_ts.md';
import angular_example_component_html from './angular/example_component_html.md';
import angular_example_component_ts from './angular/example_component_ts.md';
import angular_page_one_component_ts from './angular/page_one_component_ts.md';
@@ -26,7 +25,6 @@ import vue_page_two from './vue/page_two_vue.md';
'src/app/example.component.ts': angular_example_component_ts,
'src/app/page-one.component.ts': angular_page_one_component_ts,
'src/app/page-two.component.ts': angular_page_two_component_ts,
- 'src/app/app.module.ts': angular_app_module_ts,
},
},
react: {
diff --git a/static/usage/v6/back-button/custom/angular/app_module_ts.md b/static/usage/v6/back-button/custom/angular/app_module_ts.md
deleted file mode 100644
index 3c20b511446..00000000000
--- a/static/usage/v6/back-button/custom/angular/app_module_ts.md
+++ /dev/null
@@ -1,20 +0,0 @@
-```ts
-import { NgModule } from '@angular/core';
-import { BrowserModule } from '@angular/platform-browser';
-import { RouterModule } from '@angular/router';
-
-import { IonicModule } from '@ionic/angular';
-
-import { AppComponent } from './app.component';
-import { ExampleComponent } from './example.component';
-
-import { PageOneComponent } from './page-one.component';
-import { PageTwoComponent } from './page-two.component';
-
-@NgModule({
- imports: [BrowserModule, RouterModule.forRoot([]), IonicModule.forRoot({})],
- declarations: [AppComponent, ExampleComponent, PageOneComponent, PageTwoComponent],
- bootstrap: [AppComponent],
-})
-export class AppModule {}
-```
diff --git a/static/usage/v6/back-button/custom/angular/example_component_ts.md b/static/usage/v6/back-button/custom/angular/example_component_ts.md
index b123a4858ce..ea06d82a402 100644
--- a/static/usage/v6/back-button/custom/angular/example_component_ts.md
+++ b/static/usage/v6/back-button/custom/angular/example_component_ts.md
@@ -1,11 +1,14 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
import { PageOneComponent } from './page-one.component';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
component = PageOneComponent;
diff --git a/static/usage/v6/back-button/custom/angular/page_one_component_ts.md b/static/usage/v6/back-button/custom/angular/page_one_component_ts.md
index d181c5a5268..821db5df9a4 100644
--- a/static/usage/v6/back-button/custom/angular/page_one_component_ts.md
+++ b/static/usage/v6/back-button/custom/angular/page_one_component_ts.md
@@ -1,6 +1,6 @@
```ts
import { Component } from '@angular/core';
-
+import { IonicModule } from '@ionic/angular';
import { PageTwoComponent } from './page-two.component';
@Component({
@@ -19,6 +19,8 @@ import { PageTwoComponent } from './page-two.component';
`,
+ imports: [IonicModule],
+ standalone: true
})
export class PageOneComponent {
component = PageTwoComponent;
diff --git a/static/usage/v6/back-button/custom/angular/page_two_component_ts.md b/static/usage/v6/back-button/custom/angular/page_two_component_ts.md
index 05a1bd64d79..2cfa4a7dfbd 100644
--- a/static/usage/v6/back-button/custom/angular/page_two_component_ts.md
+++ b/static/usage/v6/back-button/custom/angular/page_two_component_ts.md
@@ -1,5 +1,8 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { caretBack } from 'ionicons/icons';
@Component({
selector: 'app-page-two',
@@ -17,6 +20,17 @@ import { Component } from '@angular/core';
Use the back button to navigate to the previous page.
`,
+ imports: [IonicModule],
+ standalone: true
})
-export class PageTwoComponent {}
+export class PageTwoComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ caretBack });
+ }
+}
```
diff --git a/static/usage/v6/back-button/custom/index.md b/static/usage/v6/back-button/custom/index.md
index 30f58541ecb..69bde337fa3 100644
--- a/static/usage/v6/back-button/custom/index.md
+++ b/static/usage/v6/back-button/custom/index.md
@@ -2,7 +2,6 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
-import angular_app_module_ts from './angular/app_module_ts.md';
import angular_example_component_html from './angular/example_component_html.md';
import angular_example_component_ts from './angular/example_component_ts.md';
import angular_page_one_component_ts from './angular/page_one_component_ts.md';
@@ -26,7 +25,6 @@ import vue_page_two from './vue/page_two_vue.md';
'src/app/example.component.ts': angular_example_component_ts,
'src/app/page-one.component.ts': angular_page_one_component_ts,
'src/app/page-two.component.ts': angular_page_two_component_ts,
- 'src/app/app.module.ts': angular_app_module_ts,
},
},
react: {
diff --git a/static/usage/v6/breadcrumbs/collapsing-items/expand-on-click/angular/example_component_ts.md b/static/usage/v6/breadcrumbs/collapsing-items/expand-on-click/angular/example_component_ts.md
index 8ae69af72a5..38122fed8e3 100644
--- a/static/usage/v6/breadcrumbs/collapsing-items/expand-on-click/angular/example_component_ts.md
+++ b/static/usage/v6/breadcrumbs/collapsing-items/expand-on-click/angular/example_component_ts.md
@@ -1,9 +1,12 @@
```ts
import { Component, ViewChild } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
maxBreadcrumbs = 4;
diff --git a/static/usage/v6/breadcrumbs/collapsing-items/popover-on-click/angular/example_component_ts.md b/static/usage/v6/breadcrumbs/collapsing-items/popover-on-click/angular/example_component_ts.md
index aabfb29a821..22380950ca4 100644
--- a/static/usage/v6/breadcrumbs/collapsing-items/popover-on-click/angular/example_component_ts.md
+++ b/static/usage/v6/breadcrumbs/collapsing-items/popover-on-click/angular/example_component_ts.md
@@ -1,9 +1,13 @@
```ts
import { Component, ViewChild } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [CommonModule, IonicModule],
+ standalone: true
})
export class ExampleComponent {
@ViewChild('popover') popover;
diff --git a/static/usage/v6/breadcrumbs/icons/custom-separators/angular.md b/static/usage/v6/breadcrumbs/icons/custom-separators/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/breadcrumbs/icons/custom-separators/angular.md
rename to static/usage/v6/breadcrumbs/icons/custom-separators/angular/example_component_html.md
diff --git a/static/usage/v6/breadcrumbs/icons/custom-separators/angular/example_component_ts.md b/static/usage/v6/breadcrumbs/icons/custom-separators/angular/example_component_ts.md
new file mode 100644
index 00000000000..dcd6b853b2b
--- /dev/null
+++ b/static/usage/v6/breadcrumbs/icons/custom-separators/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { arrowForwardCircle } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ arrowForwardCircle });
+ }
+}
+```
\ No newline at end of file
diff --git a/static/usage/v6/breadcrumbs/icons/custom-separators/index.md b/static/usage/v6/breadcrumbs/icons/custom-separators/index.md
index a9305b79feb..83c578d8742 100644
--- a/static/usage/v6/breadcrumbs/icons/custom-separators/index.md
+++ b/static/usage/v6/breadcrumbs/icons/custom-separators/index.md
@@ -3,10 +3,21 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
diff --git a/static/usage/v6/breadcrumbs/icons/icons-on-items/angular.md b/static/usage/v6/breadcrumbs/icons/icons-on-items/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/breadcrumbs/icons/icons-on-items/angular.md
rename to static/usage/v6/breadcrumbs/icons/icons-on-items/angular/example_component_html.md
diff --git a/static/usage/v6/breadcrumbs/icons/icons-on-items/angular/example_component_ts.md b/static/usage/v6/breadcrumbs/icons/icons-on-items/angular/example_component_ts.md
new file mode 100644
index 00000000000..a679de8d05c
--- /dev/null
+++ b/static/usage/v6/breadcrumbs/icons/icons-on-items/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { home, flash, camera, film } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ home, flash, camera, film });
+ }
+}
+```
\ No newline at end of file
diff --git a/static/usage/v6/breadcrumbs/icons/icons-on-items/index.md b/static/usage/v6/breadcrumbs/icons/icons-on-items/index.md
index 0f2e9ac47cc..584eec676de 100644
--- a/static/usage/v6/breadcrumbs/icons/icons-on-items/index.md
+++ b/static/usage/v6/breadcrumbs/icons/icons-on-items/index.md
@@ -3,11 +3,22 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
diff --git a/static/usage/v6/buttons/types/angular.md b/static/usage/v6/buttons/types/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/buttons/types/angular.md
rename to static/usage/v6/buttons/types/angular/example_component_html.md
diff --git a/static/usage/v6/buttons/types/angular/example_component_ts.md b/static/usage/v6/buttons/types/angular/example_component_ts.md
new file mode 100644
index 00000000000..34d9c7d9c6a
--- /dev/null
+++ b/static/usage/v6/buttons/types/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { personCircle, search, ellipsisHorizontal, ellipsisVertical, helpCircle, star, create } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent{
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ personCircle, search, ellipsisHorizontal, ellipsisVertical, helpCircle, star, create });
+ }
+}
+```
\ No newline at end of file
diff --git a/static/usage/v6/buttons/types/index.md b/static/usage/v6/buttons/types/index.md
index f0bee55af1c..dc1a527af29 100644
--- a/static/usage/v6/buttons/types/index.md
+++ b/static/usage/v6/buttons/types/index.md
@@ -3,11 +3,22 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
diff --git a/static/usage/v6/content/scroll-events/angular/example_component_ts.md b/static/usage/v6/content/scroll-events/angular/example_component_ts.md
index 7e3f7625f57..658772dd54e 100644
--- a/static/usage/v6/content/scroll-events/angular/example_component_ts.md
+++ b/static/usage/v6/content/scroll-events/angular/example_component_ts.md
@@ -1,10 +1,12 @@
```ts
import { Component } from '@angular/core';
-import { ScrollDetail } from '@ionic/angular';
+import { IonicModule, ScrollDetail } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
handleScrollStart() {
diff --git a/static/usage/v6/content/scroll-methods/angular/example_component_ts.md b/static/usage/v6/content/scroll-methods/angular/example_component_ts.md
index 1975fe3b341..bba0e43f6ff 100644
--- a/static/usage/v6/content/scroll-methods/angular/example_component_ts.md
+++ b/static/usage/v6/content/scroll-methods/angular/example_component_ts.md
@@ -1,10 +1,12 @@
```ts
import { Component, ViewChild } from '@angular/core';
-import { IonContent } from '@ionic/angular';
+import { IonicModule, IonContent } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
@ViewChild(IonContent) content: IonContent;
diff --git a/static/usage/v6/datetime/date-constraints/advanced/angular/example_component_ts.md b/static/usage/v6/datetime/date-constraints/advanced/angular/example_component_ts.md
index 3021390e188..8d011a739b5 100644
--- a/static/usage/v6/datetime/date-constraints/advanced/angular/example_component_ts.md
+++ b/static/usage/v6/datetime/date-constraints/advanced/angular/example_component_ts.md
@@ -1,9 +1,12 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
isWeekday = (dateString: string) => {
diff --git a/static/usage/v6/datetime/highlightedDates/array/angular/example_component_ts.md b/static/usage/v6/datetime/highlightedDates/array/angular/example_component_ts.md
index 4ca93b85f44..5efbdc20571 100644
--- a/static/usage/v6/datetime/highlightedDates/array/angular/example_component_ts.md
+++ b/static/usage/v6/datetime/highlightedDates/array/angular/example_component_ts.md
@@ -1,9 +1,12 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
highlightedDates = [
diff --git a/static/usage/v6/datetime/highlightedDates/callback/angular/example_component_ts.md b/static/usage/v6/datetime/highlightedDates/callback/angular/example_component_ts.md
index 60f9c700d05..2d4359fee21 100644
--- a/static/usage/v6/datetime/highlightedDates/callback/angular/example_component_ts.md
+++ b/static/usage/v6/datetime/highlightedDates/callback/angular/example_component_ts.md
@@ -1,9 +1,12 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
highlightedDates = (isoString) => {
diff --git a/static/usage/v6/icon/basic/angular.md b/static/usage/v6/icon/basic/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/icon/basic/angular.md
rename to static/usage/v6/icon/basic/angular/example_component_html.md
diff --git a/static/usage/v6/icon/basic/angular/example_component_ts.md b/static/usage/v6/icon/basic/angular/example_component_ts.md
new file mode 100644
index 00000000000..0ca64333da3
--- /dev/null
+++ b/static/usage/v6/icon/basic/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { logoIonic } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ logoIonic });
+ }
+}
+```
\ No newline at end of file
diff --git a/static/usage/v6/icon/basic/index.md b/static/usage/v6/icon/basic/index.md
index 6b3a026b7dc..ec92154552f 100644
--- a/static/usage/v6/icon/basic/index.md
+++ b/static/usage/v6/icon/basic/index.md
@@ -3,6 +3,22 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
-
+
diff --git a/static/usage/v6/infinite-scroll/basic/angular/example_component_ts.md b/static/usage/v6/infinite-scroll/basic/angular/example_component_ts.md
index 390ba6b75f1..ebf6b9ed53b 100644
--- a/static/usage/v6/infinite-scroll/basic/angular/example_component_ts.md
+++ b/static/usage/v6/infinite-scroll/basic/angular/example_component_ts.md
@@ -1,12 +1,13 @@
```tsx
import { Component, OnInit } from '@angular/core';
-
-import { InfiniteScrollCustomEvent } from '@ionic/angular';
+import { CommonModule } from '@angular/common';
+import { IonicModule, InfiniteScrollCustomEvent } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
- styleUrls: ['example.component.scss'],
+ imports: [CommonModule, IonicModule],
+ standalone: true
})
export class ExampleComponent implements OnInit {
items = [];
diff --git a/static/usage/v6/infinite-scroll/custom-infinite-scroll-content/angular/example_component_ts.md b/static/usage/v6/infinite-scroll/custom-infinite-scroll-content/angular/example_component_ts.md
index 415ed5dba8b..ea0f1eb9cae 100644
--- a/static/usage/v6/infinite-scroll/custom-infinite-scroll-content/angular/example_component_ts.md
+++ b/static/usage/v6/infinite-scroll/custom-infinite-scroll-content/angular/example_component_ts.md
@@ -1,12 +1,14 @@
```tsx
import { Component, OnInit } from '@angular/core';
-
-import { InfiniteScrollCustomEvent } from '@ionic/angular';
+import { CommonModule } from '@angular/common';
+import { IonicModule, InfiniteScrollCustomEvent } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
- styleUrls: ['example.component.scss'],
+ styleUrls: ['example.component.css'],
+ imports: [CommonModule, IonicModule],
+ standalone: true
})
export class ExampleComponent implements OnInit {
items = [];
diff --git a/static/usage/v6/infinite-scroll/infinite-scroll-content/angular/example_component_ts.md b/static/usage/v6/infinite-scroll/infinite-scroll-content/angular/example_component_ts.md
index 415ed5dba8b..542b7f41ba9 100644
--- a/static/usage/v6/infinite-scroll/infinite-scroll-content/angular/example_component_ts.md
+++ b/static/usage/v6/infinite-scroll/infinite-scroll-content/angular/example_component_ts.md
@@ -1,12 +1,13 @@
```tsx
import { Component, OnInit } from '@angular/core';
-
-import { InfiniteScrollCustomEvent } from '@ionic/angular';
+import { CommonModule } from '@angular/common';
+import { IonicModule, InfiniteScrollCustomEvent } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
- styleUrls: ['example.component.scss'],
+ imports: [CommonModule, IonicModule],
+ standalone: true
})
export class ExampleComponent implements OnInit {
items = [];
diff --git a/static/usage/v6/input/filtering/angular/example_component_ts.md b/static/usage/v6/input/filtering/angular/example_component_ts.md
index b0fc6a3331f..edfd287601c 100644
--- a/static/usage/v6/input/filtering/angular/example_component_ts.md
+++ b/static/usage/v6/input/filtering/angular/example_component_ts.md
@@ -1,10 +1,13 @@
```ts
import { Component, ViewChild } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
import type { IonInput } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
inputModel = '';
diff --git a/static/usage/v6/item/buttons/angular.md b/static/usage/v6/item/buttons/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/item/buttons/angular.md
rename to static/usage/v6/item/buttons/angular/example_component_html.md
diff --git a/static/usage/v6/item/buttons/angular/example_component_ts.md b/static/usage/v6/item/buttons/angular/example_component_ts.md
new file mode 100644
index 00000000000..4a6b6830389
--- /dev/null
+++ b/static/usage/v6/item/buttons/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { home, star, navigate } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ home, star, navigate });
+ }
+}
+```
\ No newline at end of file
diff --git a/static/usage/v6/item/buttons/index.md b/static/usage/v6/item/buttons/index.md
index d46337926bc..09299818a97 100644
--- a/static/usage/v6/item/buttons/index.md
+++ b/static/usage/v6/item/buttons/index.md
@@ -3,6 +3,22 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
-
+
diff --git a/static/usage/v6/item/counter/angular/example_component_ts.md b/static/usage/v6/item/counter/angular/example_component_ts.md
index 2c08dc06fc2..ae875052f85 100644
--- a/static/usage/v6/item/counter/angular/example_component_ts.md
+++ b/static/usage/v6/item/counter/angular/example_component_ts.md
@@ -1,9 +1,12 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
customCounterFormatter(inputLength: number, maxLength: number) {
diff --git a/static/usage/v6/item/icons/angular.md b/static/usage/v6/item/icons/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/item/icons/angular.md
rename to static/usage/v6/item/icons/angular/example_component_html.md
diff --git a/static/usage/v6/item/icons/angular/example_component_ts.md b/static/usage/v6/item/icons/angular/example_component_ts.md
new file mode 100644
index 00000000000..fd72c48805d
--- /dev/null
+++ b/static/usage/v6/item/icons/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { informationCircle, star } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ informationCircle, star });
+ }
+}
+```
\ No newline at end of file
diff --git a/static/usage/v6/item/icons/index.md b/static/usage/v6/item/icons/index.md
index 97b18d73650..92c2fdc5f3e 100644
--- a/static/usage/v6/item/icons/index.md
+++ b/static/usage/v6/item/icons/index.md
@@ -3,6 +3,22 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
-
+
diff --git a/static/usage/v6/item/lines/angular.md b/static/usage/v6/item/lines/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/item/lines/angular.md
rename to static/usage/v6/item/lines/angular/example_component_html.md
diff --git a/static/usage/v6/item/lines/angular/example_component_ts.md b/static/usage/v6/item/lines/angular/example_component_ts.md
new file mode 100644
index 00000000000..7322fe3faae
--- /dev/null
+++ b/static/usage/v6/item/lines/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { star, informationCircle } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ star, informationCircle });
+ }
+}
+```
\ No newline at end of file
diff --git a/static/usage/v6/item/lines/index.md b/static/usage/v6/item/lines/index.md
index f1ccef30f7e..5d7f93525ae 100644
--- a/static/usage/v6/item/lines/index.md
+++ b/static/usage/v6/item/lines/index.md
@@ -3,6 +3,22 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
-
+
diff --git a/static/usage/v6/loading/controller/angular/example_component_ts.md b/static/usage/v6/loading/controller/angular/example_component_ts.md
index bd4b86eef29..38ffd0010e4 100644
--- a/static/usage/v6/loading/controller/angular/example_component_ts.md
+++ b/static/usage/v6/loading/controller/angular/example_component_ts.md
@@ -1,11 +1,13 @@
```ts
import { Component } from '@angular/core';
-import { LoadingController } from '@ionic/angular';
+import { IonicModule, LoadingController } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
constructor(private loadingCtrl: LoadingController) {}
diff --git a/static/usage/v6/loading/spinners/angular/example_component_ts.md b/static/usage/v6/loading/spinners/angular/example_component_ts.md
index 7e522cb3a64..ba83143f18d 100644
--- a/static/usage/v6/loading/spinners/angular/example_component_ts.md
+++ b/static/usage/v6/loading/spinners/angular/example_component_ts.md
@@ -1,11 +1,13 @@
```ts
import { Component } from '@angular/core';
-import { LoadingController } from '@ionic/angular';
+import { IonicModule, LoadingController } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
constructor(private loadingCtrl: LoadingController) {}
diff --git a/static/usage/v6/loading/theming/angular/example_component_ts.md b/static/usage/v6/loading/theming/angular/example_component_ts.md
index 800335c91ad..30bf2c4c8e0 100644
--- a/static/usage/v6/loading/theming/angular/example_component_ts.md
+++ b/static/usage/v6/loading/theming/angular/example_component_ts.md
@@ -1,11 +1,13 @@
```ts
import { Component } from '@angular/core';
-import { LoadingController } from '@ionic/angular';
+import { IonicModule, LoadingController } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
constructor(private loadingCtrl: LoadingController) {}
diff --git a/static/usage/v6/menu/type/angular/example_component_html.md b/static/usage/v6/menu/type/angular/example_component_html.md
index fd995d7a32f..738aca5079b 100644
--- a/static/usage/v6/menu/type/angular/example_component_html.md
+++ b/static/usage/v6/menu/type/angular/example_component_html.md
@@ -20,7 +20,7 @@
Select an overlay type:
-
+
overlay
diff --git a/static/usage/v6/menu/type/angular/example_component_ts.md b/static/usage/v6/menu/type/angular/example_component_ts.md
index 5f03ec13b76..1950bbb5e86 100644
--- a/static/usage/v6/menu/type/angular/example_component_ts.md
+++ b/static/usage/v6/menu/type/angular/example_component_ts.md
@@ -1,9 +1,13 @@
```ts
import { Component } from '@angular/core';
+import { FormsModule } from '@angular/forms';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [FormsModule, IonicModule],
+ standalone: true
})
export class ExampleComponent {
menuType: string = 'overlay';
diff --git a/static/usage/v6/modal/can-dismiss/boolean/angular/example_component_ts.md b/static/usage/v6/modal/can-dismiss/boolean/angular/example_component_ts.md
index b13c147dc2d..88be5262118 100644
--- a/static/usage/v6/modal/can-dismiss/boolean/angular/example_component_ts.md
+++ b/static/usage/v6/modal/can-dismiss/boolean/angular/example_component_ts.md
@@ -1,10 +1,12 @@
```ts
import { Component } from '@angular/core';
-import { CheckboxCustomEvent } from '@ionic/angular';
+import { IonicModule, CheckboxCustomEvent } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
canDismiss = false;
diff --git a/static/usage/v6/modal/can-dismiss/function/angular/example_component_ts.md b/static/usage/v6/modal/can-dismiss/function/angular/example_component_ts.md
index a62465cfee3..93cc0c51c83 100644
--- a/static/usage/v6/modal/can-dismiss/function/angular/example_component_ts.md
+++ b/static/usage/v6/modal/can-dismiss/function/angular/example_component_ts.md
@@ -1,11 +1,13 @@
```ts
import { Component } from '@angular/core';
-import { ActionSheetController } from '@ionic/angular';
+import { IonicModule, ActionSheetController } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
presentingElement = undefined;
diff --git a/static/usage/v6/modal/can-dismiss/prevent-swipe-to-close/angular/example_component_ts.md b/static/usage/v6/modal/can-dismiss/prevent-swipe-to-close/angular/example_component_ts.md
index 788b9a14c0f..2721c21e79f 100644
--- a/static/usage/v6/modal/can-dismiss/prevent-swipe-to-close/angular/example_component_ts.md
+++ b/static/usage/v6/modal/can-dismiss/prevent-swipe-to-close/angular/example_component_ts.md
@@ -1,9 +1,12 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
async canDismiss(data?: any, role?: string) {
diff --git a/static/usage/v6/modal/card/basic/angular/example_component_ts.md b/static/usage/v6/modal/card/basic/angular/example_component_ts.md
index 5a28a156a32..3fff7fde680 100644
--- a/static/usage/v6/modal/card/basic/angular/example_component_ts.md
+++ b/static/usage/v6/modal/card/basic/angular/example_component_ts.md
@@ -1,9 +1,12 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
// Typically referenced to your ion-router-outlet
diff --git a/static/usage/v6/modal/controller/angular/app_module_ts.md b/static/usage/v6/modal/controller/angular/app_module_ts.md
deleted file mode 100644
index e9e4f00dff3..00000000000
--- a/static/usage/v6/modal/controller/angular/app_module_ts.md
+++ /dev/null
@@ -1,19 +0,0 @@
-```ts
-import { NgModule } from '@angular/core';
-import { BrowserModule } from '@angular/platform-browser';
-import { FormsModule } from '@angular/forms';
-
-import { IonicModule } from '@ionic/angular';
-
-import { AppComponent } from './app.component';
-import { ExampleComponent } from './example.component';
-
-import { ModalExampleComponent } from './modal-example.component';
-
-@NgModule({
- imports: [BrowserModule, FormsModule, IonicModule.forRoot({})],
- declarations: [AppComponent, ExampleComponent, ModalExampleComponent],
- bootstrap: [AppComponent],
-})
-export class AppModule {}
-```
diff --git a/static/usage/v6/modal/controller/angular/example_component_ts.md b/static/usage/v6/modal/controller/angular/example_component_ts.md
index 920a2335257..36e27e8ee33 100644
--- a/static/usage/v6/modal/controller/angular/example_component_ts.md
+++ b/static/usage/v6/modal/controller/angular/example_component_ts.md
@@ -1,12 +1,14 @@
```ts
import { Component } from '@angular/core';
-import { ModalController } from '@ionic/angular';
+import { IonicModule, ModalController } from '@ionic/angular';
import { ModalExampleComponent } from './modal-example.component';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
message = 'This modal example uses the modalController to present and dismiss modals.';
diff --git a/static/usage/v6/modal/controller/angular/modal-example_component_ts.md b/static/usage/v6/modal/controller/angular/modal-example_component_ts.md
index 621996015b4..c01da56515b 100644
--- a/static/usage/v6/modal/controller/angular/modal-example_component_ts.md
+++ b/static/usage/v6/modal/controller/angular/modal-example_component_ts.md
@@ -1,11 +1,13 @@
```ts
import { Component } from '@angular/core';
-
-import { ModalController } from '@ionic/angular';
+import { FormsModule } from '@angular/forms';
+import { IonicModule, ModalController } from '@ionic/angular';
@Component({
selector: 'app-modal-example',
templateUrl: 'modal-example.component.html',
+ imports: [FormsModule, IonicModule],
+ standalone: true
})
export class ModalExampleComponent {
name: string;
diff --git a/static/usage/v6/modal/controller/index.md b/static/usage/v6/modal/controller/index.md
index 2f1d5c9b961..fa08d9ba1be 100644
--- a/static/usage/v6/modal/controller/index.md
+++ b/static/usage/v6/modal/controller/index.md
@@ -6,7 +6,6 @@ import react from './react.md';
import vue_example from './vue/example_vue.md';
import vue_modal from './vue/modal_vue.md';
-import angular_app_module_ts from './angular/app_module_ts.md';
import angular_example_component_html from './angular/example_component_html.md';
import angular_example_component_ts from './angular/example_component_ts.md';
import angular_modal_example_component_ts from './angular/modal-example_component_ts.md';
@@ -29,7 +28,6 @@ import angular_modal_example_component_html from './angular/modal-example_compon
'src/app/example.component.ts': angular_example_component_ts,
'src/app/modal-example.component.html': angular_modal_example_component_html,
'src/app/modal-example.component.ts': angular_modal_example_component_ts,
- 'src/app/app.module.ts': angular_app_module_ts,
},
},
}}
diff --git a/static/usage/v6/modal/inline/basic/angular/example_component_ts.md b/static/usage/v6/modal/inline/basic/angular/example_component_ts.md
index a21954ec5f1..8a756a79d36 100644
--- a/static/usage/v6/modal/inline/basic/angular/example_component_ts.md
+++ b/static/usage/v6/modal/inline/basic/angular/example_component_ts.md
@@ -1,11 +1,14 @@
```ts
import { Component, ViewChild } from '@angular/core';
-import { IonModal } from '@ionic/angular';
+import { FormsModule } from '@angular/forms';
+import { IonicModule, IonModal } from '@ionic/angular';
import { OverlayEventDetail } from '@ionic/core/components';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [FormsModule, IonicModule],
+ standalone: true
})
export class ExampleComponent {
@ViewChild(IonModal) modal: IonModal;
diff --git a/static/usage/v6/modal/inline/is-open/angular/example_component_ts.md b/static/usage/v6/modal/inline/is-open/angular/example_component_ts.md
index 321577939a9..fb4be0a7328 100644
--- a/static/usage/v6/modal/inline/is-open/angular/example_component_ts.md
+++ b/static/usage/v6/modal/inline/is-open/angular/example_component_ts.md
@@ -1,9 +1,12 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
isModalOpen = false;
diff --git a/static/usage/v6/modal/sheet/background-content/angular/example_component_ts.md b/static/usage/v6/modal/sheet/background-content/angular/example_component_ts.md
index e132d2f84c7..8473fe29d8a 100644
--- a/static/usage/v6/modal/sheet/background-content/angular/example_component_ts.md
+++ b/static/usage/v6/modal/sheet/background-content/angular/example_component_ts.md
@@ -1,10 +1,13 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
styleUrls: ['example.component.css'],
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
count = 0;
diff --git a/static/usage/v6/modal/styling/animations/angular/example_component_ts.md b/static/usage/v6/modal/styling/animations/angular/example_component_ts.md
index c4a743b2745..95789450895 100644
--- a/static/usage/v6/modal/styling/animations/angular/example_component_ts.md
+++ b/static/usage/v6/modal/styling/animations/angular/example_component_ts.md
@@ -1,10 +1,12 @@
```ts
import { Component } from '@angular/core';
-import { AnimationController } from '@ionic/angular';
+import { IonicModule, AnimationController } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
constructor(private animationCtrl: AnimationController) {}
diff --git a/static/usage/v6/nav/nav-link/angular/app_module_ts.md b/static/usage/v6/nav/nav-link/angular/app_module_ts.md
deleted file mode 100644
index d3b8b44f6ce..00000000000
--- a/static/usage/v6/nav/nav-link/angular/app_module_ts.md
+++ /dev/null
@@ -1,21 +0,0 @@
-```ts
-import { NgModule } from '@angular/core';
-import { BrowserModule } from '@angular/platform-browser';
-import { RouterModule } from '@angular/router';
-
-import { IonicModule } from '@ionic/angular';
-
-import { AppComponent } from './app.component';
-import { ExampleComponent } from './example.component';
-
-import { PageOneComponent } from './page-one.component';
-import { PageTwoComponent } from './page-two.component';
-import { PageThreeComponent } from './page-three.component';
-
-@NgModule({
- imports: [BrowserModule, RouterModule.forRoot([]), IonicModule.forRoot({})],
- declarations: [AppComponent, ExampleComponent, PageOneComponent, PageTwoComponent, PageThreeComponent],
- bootstrap: [AppComponent],
-})
-export class AppModule {}
-```
diff --git a/static/usage/v6/nav/nav-link/angular/example_component_ts.md b/static/usage/v6/nav/nav-link/angular/example_component_ts.md
index b123a4858ce..370b2ed24e1 100644
--- a/static/usage/v6/nav/nav-link/angular/example_component_ts.md
+++ b/static/usage/v6/nav/nav-link/angular/example_component_ts.md
@@ -1,11 +1,13 @@
```ts
import { Component } from '@angular/core';
-
+import { IonicModule } from '@ionic/angular';
import { PageOneComponent } from './page-one.component';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
component = PageOneComponent;
diff --git a/static/usage/v6/nav/nav-link/angular/page_one_component_ts.md b/static/usage/v6/nav/nav-link/angular/page_one_component_ts.md
index 06c42b342cf..3b6dd80abc4 100644
--- a/static/usage/v6/nav/nav-link/angular/page_one_component_ts.md
+++ b/static/usage/v6/nav/nav-link/angular/page_one_component_ts.md
@@ -1,6 +1,6 @@
```ts
import { Component } from '@angular/core';
-
+import { IonicModule } from '@ionic/angular';
import { PageTwoComponent } from './page-two.component';
@Component({
@@ -18,6 +18,8 @@ import { PageTwoComponent } from './page-two.component';
`,
+ imports: [IonicModule],
+ standalone: true
})
export class PageOneComponent {
component = PageTwoComponent;
diff --git a/static/usage/v6/nav/nav-link/angular/page_three_component_ts.md b/static/usage/v6/nav/nav-link/angular/page_three_component_ts.md
index d9e95ed7218..025f44e021f 100644
--- a/static/usage/v6/nav/nav-link/angular/page_three_component_ts.md
+++ b/static/usage/v6/nav/nav-link/angular/page_three_component_ts.md
@@ -1,5 +1,6 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-page-one',
@@ -16,6 +17,8 @@ import { Component } from '@angular/core';
Page Three
`,
+ imports: [IonicModule],
+ standalone: true
})
export class PageThreeComponent {}
```
diff --git a/static/usage/v6/nav/nav-link/angular/page_two_component_ts.md b/static/usage/v6/nav/nav-link/angular/page_two_component_ts.md
index d6edd90a593..35cbfd185fa 100644
--- a/static/usage/v6/nav/nav-link/angular/page_two_component_ts.md
+++ b/static/usage/v6/nav/nav-link/angular/page_two_component_ts.md
@@ -1,6 +1,6 @@
```ts
import { Component } from '@angular/core';
-
+import { IonicModule } from '@ionic/angular';
import { PageThreeComponent } from './page-three.component';
@Component({
@@ -23,6 +23,8 @@ import { PageThreeComponent } from './page-three.component';
`,
+ imports: [IonicModule],
+ standalone: true
})
export class PageTwoComponent {
component = PageThreeComponent;
diff --git a/static/usage/v6/nav/nav-link/index.md b/static/usage/v6/nav/nav-link/index.md
index 2fdeadbbbdd..0f81390a599 100644
--- a/static/usage/v6/nav/nav-link/index.md
+++ b/static/usage/v6/nav/nav-link/index.md
@@ -2,7 +2,6 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
-import angular_app_module_ts from './angular/app_module_ts.md';
import angular_example_component_html from './angular/example_component_html.md';
import angular_example_component_ts from './angular/example_component_ts.md';
import angular_page_one_component_ts from './angular/page_one_component_ts.md';
@@ -30,7 +29,6 @@ import vue_page_three from './vue/page_three_vue.md';
'src/app/page-one.component.ts': angular_page_one_component_ts,
'src/app/page-two.component.ts': angular_page_two_component_ts,
'src/app/page-three.component.ts': angular_page_three_component_ts,
- 'src/app/app.module.ts': angular_app_module_ts,
},
},
react: {
diff --git a/static/usage/v6/picker/multiple-column/angular/example_component_ts.md b/static/usage/v6/picker/multiple-column/angular/example_component_ts.md
index ce535b1391a..55b1da9dbd4 100644
--- a/static/usage/v6/picker/multiple-column/angular/example_component_ts.md
+++ b/static/usage/v6/picker/multiple-column/angular/example_component_ts.md
@@ -1,10 +1,12 @@
```ts
import { Component } from '@angular/core';
-import { PickerController } from '@ionic/angular';
+import { IonicModule, PickerController } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
constructor(private pickerCtrl: PickerController) {}
diff --git a/static/usage/v6/picker/single-column/angular/example_component_ts.md b/static/usage/v6/picker/single-column/angular/example_component_ts.md
index 849da3f0f16..91001efb481 100644
--- a/static/usage/v6/picker/single-column/angular/example_component_ts.md
+++ b/static/usage/v6/picker/single-column/angular/example_component_ts.md
@@ -1,10 +1,12 @@
```ts
import { Component } from '@angular/core';
-import { PickerController } from '@ionic/angular';
+import { IonicModule, PickerController } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
constructor(private pickerCtrl: PickerController) {}
diff --git a/static/usage/v6/popover/customization/positioning/angular/example_component_ts.md b/static/usage/v6/popover/customization/positioning/angular/example_component_ts.md
index 4db53a836a9..1b3dae1494b 100644
--- a/static/usage/v6/popover/customization/positioning/angular/example_component_ts.md
+++ b/static/usage/v6/popover/customization/positioning/angular/example_component_ts.md
@@ -1,10 +1,13 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
styleUrls: ['example.component.css'],
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {}
```
diff --git a/static/usage/v6/popover/presenting/controller/angular/app_module_ts.md b/static/usage/v6/popover/presenting/controller/angular/app_module_ts.md
deleted file mode 100644
index 887ca3acf89..00000000000
--- a/static/usage/v6/popover/presenting/controller/angular/app_module_ts.md
+++ /dev/null
@@ -1,19 +0,0 @@
-```ts
-import { NgModule } from '@angular/core';
-import { FormsModule } from '@angular/forms';
-import { BrowserModule } from '@angular/platform-browser';
-
-import { IonicModule } from '@ionic/angular';
-
-import { AppComponent } from './app.component';
-import { ExampleComponent } from './example.component';
-
-import { PopoverComponent } from './popover.component';
-
-@NgModule({
- imports: [BrowserModule, FormsModule, IonicModule.forRoot({})],
- declarations: [AppComponent, ExampleComponent, PopoverComponent],
- bootstrap: [AppComponent],
-})
-export class AppModule {}
-```
diff --git a/static/usage/v6/popover/presenting/controller/angular/example_component_ts.md b/static/usage/v6/popover/presenting/controller/angular/example_component_ts.md
index bf0e0165d78..bb01bd2c127 100644
--- a/static/usage/v6/popover/presenting/controller/angular/example_component_ts.md
+++ b/static/usage/v6/popover/presenting/controller/angular/example_component_ts.md
@@ -1,13 +1,15 @@
```ts
import { Component, ViewChild } from '@angular/core';
-import { PopoverController } from '@ionic/angular';
+import { IonicModule, PopoverController } from '@ionic/angular';
import { PopoverComponent } from './popover.component';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
roleMsg = '';
diff --git a/static/usage/v6/popover/presenting/controller/angular/popover_component_ts.md b/static/usage/v6/popover/presenting/controller/angular/popover_component_ts.md
index 2900a32240c..ce19e40b408 100644
--- a/static/usage/v6/popover/presenting/controller/angular/popover_component_ts.md
+++ b/static/usage/v6/popover/presenting/controller/angular/popover_component_ts.md
@@ -1,10 +1,12 @@
```ts
import { Component } from '@angular/core';
-import { PopoverController } from '@ionic/angular';
+import { IonicModule, PopoverController } from '@ionic/angular';
@Component({
selector: 'app-popover',
templateUrl: 'popover.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class PopoverComponent {}
```
diff --git a/static/usage/v6/popover/presenting/controller/index.md b/static/usage/v6/popover/presenting/controller/index.md
index 4906017d235..e51317d21fe 100644
--- a/static/usage/v6/popover/presenting/controller/index.md
+++ b/static/usage/v6/popover/presenting/controller/index.md
@@ -10,7 +10,6 @@ import angular_example_component_html from './angular/example_component_html.md'
import angular_example_component_ts from './angular/example_component_ts.md';
import angular_popover_component_html from './angular/popover_component_html.md';
import angular_popover_component_ts from './angular/popover_component_ts.md';
-import angular_app_module from './angular/app_module_ts.md';
) {
diff --git a/static/usage/v6/reorder/custom-icon/angular/example_component_ts.md b/static/usage/v6/reorder/custom-icon/angular/example_component_ts.md
index 7a5c867f791..c8d1d3d7d7f 100644
--- a/static/usage/v6/reorder/custom-icon/angular/example_component_ts.md
+++ b/static/usage/v6/reorder/custom-icon/angular/example_component_ts.md
@@ -1,13 +1,25 @@
```ts
import { Component } from '@angular/core';
-
-import { ItemReorderEventDetail } from '@ionic/angular';
+import { IonicModule, ItemReorderEventDetail } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { pizza } from 'ionicons/icons'
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ pizza });
+ }
+
handleReorder(ev: CustomEvent) {
// The `from` and `to` properties contain the index of the item
// when the drag started and ended, respectively
diff --git a/static/usage/v6/reorder/custom-scroll-target/angular/example_component_ts.md b/static/usage/v6/reorder/custom-scroll-target/angular/example_component_ts.md
index 2cd3dd66740..d85638526b6 100644
--- a/static/usage/v6/reorder/custom-scroll-target/angular/example_component_ts.md
+++ b/static/usage/v6/reorder/custom-scroll-target/angular/example_component_ts.md
@@ -1,12 +1,14 @@
```ts
import { Component } from '@angular/core';
-import { ItemReorderEventDetail } from '@ionic/angular';
+import { IonicModule, ItemReorderEventDetail } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
styleUrls: ['./example.component.css'],
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
handleReorder(ev: CustomEvent) {
diff --git a/static/usage/v6/reorder/toggling-disabled/angular/example_component_ts.md b/static/usage/v6/reorder/toggling-disabled/angular/example_component_ts.md
index af0ff643b26..82b984f02af 100644
--- a/static/usage/v6/reorder/toggling-disabled/angular/example_component_ts.md
+++ b/static/usage/v6/reorder/toggling-disabled/angular/example_component_ts.md
@@ -1,11 +1,13 @@
```ts
import { Component } from '@angular/core';
-import { ItemReorderEventDetail } from '@ionic/angular';
+import { IonicModule, ItemReorderEventDetail } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
public isDisabled = true;
diff --git a/static/usage/v6/reorder/updating-data/angular/example_component_ts.md b/static/usage/v6/reorder/updating-data/angular/example_component_ts.md
index 11e2f59d553..70e52c80f30 100644
--- a/static/usage/v6/reorder/updating-data/angular/example_component_ts.md
+++ b/static/usage/v6/reorder/updating-data/angular/example_component_ts.md
@@ -1,11 +1,13 @@
```ts
import { Component } from '@angular/core';
-
-import { ItemReorderEventDetail } from '@ionic/angular';
+import { CommonModule } from '@angular/common';
+import { IonicModule, ItemReorderEventDetail } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [CommonModule, IonicModule],
+ standalone: true
})
export class ExampleComponent {
items = [1, 2, 3, 4, 5];
diff --git a/static/usage/v6/reorder/wrapper/angular/example_component_ts.md b/static/usage/v6/reorder/wrapper/angular/example_component_ts.md
index 7a5c867f791..bba98788a9a 100644
--- a/static/usage/v6/reorder/wrapper/angular/example_component_ts.md
+++ b/static/usage/v6/reorder/wrapper/angular/example_component_ts.md
@@ -1,11 +1,13 @@
```ts
import { Component } from '@angular/core';
-import { ItemReorderEventDetail } from '@ionic/angular';
+import { IonicModule, ItemReorderEventDetail } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
handleReorder(ev: CustomEvent) {
diff --git a/static/usage/v6/searchbar/cancel-button/angular.md b/static/usage/v6/searchbar/cancel-button/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/searchbar/cancel-button/angular.md
rename to static/usage/v6/searchbar/cancel-button/angular/example_component_html.md
diff --git a/static/usage/v6/searchbar/cancel-button/angular/example_component_ts.md b/static/usage/v6/searchbar/cancel-button/angular/example_component_ts.md
new file mode 100644
index 00000000000..15d1ac8b9b8
--- /dev/null
+++ b/static/usage/v6/searchbar/cancel-button/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { trash } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ trash });
+ }
+}
+```
diff --git a/static/usage/v6/searchbar/cancel-button/index.md b/static/usage/v6/searchbar/cancel-button/index.md
index 4ad2c30b731..514ad222d50 100644
--- a/static/usage/v6/searchbar/cancel-button/index.md
+++ b/static/usage/v6/searchbar/cancel-button/index.md
@@ -3,11 +3,22 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
diff --git a/static/usage/v6/searchbar/clear-button/angular.md b/static/usage/v6/searchbar/clear-button/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/searchbar/clear-button/angular.md
rename to static/usage/v6/searchbar/clear-button/angular/example_component_html.md
diff --git a/static/usage/v6/searchbar/clear-button/angular/example_component_ts.md b/static/usage/v6/searchbar/clear-button/angular/example_component_ts.md
new file mode 100644
index 00000000000..de602d23876
--- /dev/null
+++ b/static/usage/v6/searchbar/clear-button/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { trashBin } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ trashBin });
+ }
+}
+```
diff --git a/static/usage/v6/searchbar/clear-button/index.md b/static/usage/v6/searchbar/clear-button/index.md
index aa821ec048b..1aa1969a5e0 100644
--- a/static/usage/v6/searchbar/clear-button/index.md
+++ b/static/usage/v6/searchbar/clear-button/index.md
@@ -3,11 +3,22 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
diff --git a/static/usage/v6/searchbar/debounce/angular/example_component_ts.md b/static/usage/v6/searchbar/debounce/angular/example_component_ts.md
index 1017ac602f9..f0b1bc3058a 100644
--- a/static/usage/v6/searchbar/debounce/angular/example_component_ts.md
+++ b/static/usage/v6/searchbar/debounce/angular/example_component_ts.md
@@ -1,9 +1,13 @@
```ts
import { Component } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [CommonModule, IonicModule],
+ standalone: true
})
export class ExampleComponent {
public data = [
diff --git a/static/usage/v6/searchbar/search-icon/angular.md b/static/usage/v6/searchbar/search-icon/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/searchbar/search-icon/angular.md
rename to static/usage/v6/searchbar/search-icon/angular/example_component_html.md
diff --git a/static/usage/v6/searchbar/search-icon/angular/example_component_ts.md b/static/usage/v6/searchbar/search-icon/angular/example_component_ts.md
new file mode 100644
index 00000000000..ca4327f025d
--- /dev/null
+++ b/static/usage/v6/searchbar/search-icon/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { searchCircle } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ searchCircle });
+ }
+}
+```
diff --git a/static/usage/v6/searchbar/search-icon/index.md b/static/usage/v6/searchbar/search-icon/index.md
index c3611623923..e7dbf671773 100644
--- a/static/usage/v6/searchbar/search-icon/index.md
+++ b/static/usage/v6/searchbar/search-icon/index.md
@@ -3,6 +3,22 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
-
+
diff --git a/static/usage/v6/segment-button/layout/angular.md b/static/usage/v6/segment-button/layout/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/segment-button/layout/angular.md
rename to static/usage/v6/segment-button/layout/angular/example_component_html.md
diff --git a/static/usage/v6/segment-button/layout/angular/example_component_ts.md b/static/usage/v6/segment-button/layout/angular/example_component_ts.md
new file mode 100644
index 00000000000..d9efe5ebb6b
--- /dev/null
+++ b/static/usage/v6/segment-button/layout/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { call, heart, pin } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ call, heart, pin });
+ }
+}
+```
\ No newline at end of file
diff --git a/static/usage/v6/segment-button/layout/index.md b/static/usage/v6/segment-button/layout/index.md
index 5ddcc6a17b8..7667f27685c 100644
--- a/static/usage/v6/segment-button/layout/index.md
+++ b/static/usage/v6/segment-button/layout/index.md
@@ -3,11 +3,22 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
diff --git a/static/usage/v6/segment/scrollable/angular.md b/static/usage/v6/segment/scrollable/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/segment/scrollable/angular.md
rename to static/usage/v6/segment/scrollable/angular/example_component_html.md
diff --git a/static/usage/v6/segment/scrollable/angular/example_component_ts.md b/static/usage/v6/segment/scrollable/angular/example_component_ts.md
new file mode 100644
index 00000000000..cc1db4d8b9e
--- /dev/null
+++ b/static/usage/v6/segment/scrollable/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { home, heart, pin, star, call, globe, basket, barbell, trash, person } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ home, heart, pin, star, call, globe, basket, barbell, trash, person });
+ }
+}
+```
\ No newline at end of file
diff --git a/static/usage/v6/segment/scrollable/index.md b/static/usage/v6/segment/scrollable/index.md
index de206ca652a..99fb5dd2b5b 100644
--- a/static/usage/v6/segment/scrollable/index.md
+++ b/static/usage/v6/segment/scrollable/index.md
@@ -3,11 +3,22 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
diff --git a/static/usage/v6/select/basic/responding-to-interaction/angular/example_component_ts.md b/static/usage/v6/select/basic/responding-to-interaction/angular/example_component_ts.md
index 18c0b1eaa1b..bb9cd83a61d 100644
--- a/static/usage/v6/select/basic/responding-to-interaction/angular/example_component_ts.md
+++ b/static/usage/v6/select/basic/responding-to-interaction/angular/example_component_ts.md
@@ -1,9 +1,13 @@
```ts
import { Component } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [CommonModule, IonicModule],
+ standalone: true
})
export class ExampleComponent {
logs: string[] = [];
diff --git a/static/usage/v6/select/customization/interface-options/angular/example_component_ts.md b/static/usage/v6/select/customization/interface-options/angular/example_component_ts.md
index c3f34d0adaf..182ba06c748 100644
--- a/static/usage/v6/select/customization/interface-options/angular/example_component_ts.md
+++ b/static/usage/v6/select/customization/interface-options/angular/example_component_ts.md
@@ -1,9 +1,12 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
customAlertOptions = {
diff --git a/static/usage/v6/select/customization/styling-select/angular/example_component_ts.md b/static/usage/v6/select/customization/styling-select/angular/example_component_ts.md
index 4db53a836a9..1b3dae1494b 100644
--- a/static/usage/v6/select/customization/styling-select/angular/example_component_ts.md
+++ b/static/usage/v6/select/customization/styling-select/angular/example_component_ts.md
@@ -1,10 +1,13 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
styleUrls: ['example.component.css'],
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {}
```
diff --git a/static/usage/v6/select/objects-as-values/multiple-selection/angular/example_component_ts.md b/static/usage/v6/select/objects-as-values/multiple-selection/angular/example_component_ts.md
index 76fa7e51e49..b40026fbcc5 100644
--- a/static/usage/v6/select/objects-as-values/multiple-selection/angular/example_component_ts.md
+++ b/static/usage/v6/select/objects-as-values/multiple-selection/angular/example_component_ts.md
@@ -1,9 +1,13 @@
```ts
import { Component } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [CommonModule, IonicModule],
+ standalone: true
})
export class ExampleComponent {
currentFood = undefined;
diff --git a/static/usage/v6/select/objects-as-values/using-comparewith/angular/example_component_ts.md b/static/usage/v6/select/objects-as-values/using-comparewith/angular/example_component_ts.md
index afbd5f454cd..c4702a09f86 100644
--- a/static/usage/v6/select/objects-as-values/using-comparewith/angular/example_component_ts.md
+++ b/static/usage/v6/select/objects-as-values/using-comparewith/angular/example_component_ts.md
@@ -1,9 +1,13 @@
```ts
import { Component } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [CommonModule, IonicModule],
+ standalone: true
})
export class ExampleComponent {
currentFood = undefined;
diff --git a/static/usage/v6/select/typeahead/angular/app_module_ts.md b/static/usage/v6/select/typeahead/angular/app_module_ts.md
deleted file mode 100644
index 0fa58037717..00000000000
--- a/static/usage/v6/select/typeahead/angular/app_module_ts.md
+++ /dev/null
@@ -1,19 +0,0 @@
-```ts
-import { NgModule } from '@angular/core';
-import { BrowserModule } from '@angular/platform-browser';
-import { FormsModule } from '@angular/forms';
-
-import { IonicModule } from '@ionic/angular';
-
-import { AppComponent } from './app.component';
-import { ExampleComponent } from './example.component';
-
-import { TypeaheadComponent } from './typeahead.component';
-
-@NgModule({
- imports: [BrowserModule, FormsModule, IonicModule.forRoot({})],
- declarations: [AppComponent, ExampleComponent, TypeaheadComponent],
- bootstrap: [AppComponent],
-})
-export class AppModule {}
-```
diff --git a/static/usage/v6/select/typeahead/angular/example_component_ts.md b/static/usage/v6/select/typeahead/angular/example_component_ts.md
index ded6fa60b0f..261d85387f2 100644
--- a/static/usage/v6/select/typeahead/angular/example_component_ts.md
+++ b/static/usage/v6/select/typeahead/angular/example_component_ts.md
@@ -1,11 +1,14 @@
```ts
import { Component, ViewChild } from '@angular/core';
-import { IonModal } from '@ionic/angular';
+import { IonicModule, IonModal } from '@ionic/angular';
+import { TypeaheadComponent } from './typeahead.component';
import { Item } from './types';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule, TypeaheadComponent],
+ standalone: true
})
export class ExampleComponent {
@ViewChild('modal', { static: true }) modal!: IonModal;
diff --git a/static/usage/v6/select/typeahead/angular/modal-example_component_ts.md b/static/usage/v6/select/typeahead/angular/modal-example_component_ts.md
index 9bd21f1b404..7fa35713398 100644
--- a/static/usage/v6/select/typeahead/angular/modal-example_component_ts.md
+++ b/static/usage/v6/select/typeahead/angular/modal-example_component_ts.md
@@ -1,11 +1,14 @@
```ts
-import { Component, Input, Output, EventEmitter } from '@angular/core';
-import type { OnInit } from '@angular/core';
+import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { IonicModule } from '@ionic/angular';
import { Item } from './types';
@Component({
selector: 'app-typeahead',
templateUrl: 'typeahead.component.html',
+ imports: [CommonModule, IonicModule],
+ standalone: true
})
export class TypeaheadComponent implements OnInit {
@Input() items: Item[] = [];
diff --git a/static/usage/v6/select/typeahead/index.md b/static/usage/v6/select/typeahead/index.md
index aa76c597de1..bd7317bc117 100644
--- a/static/usage/v6/select/typeahead/index.md
+++ b/static/usage/v6/select/typeahead/index.md
@@ -10,7 +10,6 @@ import vue_example from './vue/example_vue.md';
import vue_types_ts from './vue/vue_types_ts.md';
import vue_typeahead_component from './vue/typeahead_component_vue.md';
-import angular_app_module_ts from './angular/app_module_ts.md';
import angular_example_component_html from './angular/example_component_html.md';
import angular_example_component_ts from './angular/example_component_ts.md';
import angular_modal_example_component_ts from './angular/modal-example_component_ts.md';
@@ -41,7 +40,6 @@ import angular_types_ts from './angular/angular_types_ts.md';
'src/app/example.component.ts': angular_example_component_ts,
'src/app/typeahead.component.html': angular_modal_example_component_html,
'src/app/typeahead.component.ts': angular_modal_example_component_ts,
- 'src/app/app.module.ts': angular_app_module_ts,
'src/app/types.ts': angular_types_ts,
},
},
diff --git a/static/usage/v6/skeleton-text/basic/angular/example_component_ts.md b/static/usage/v6/skeleton-text/basic/angular/example_component_ts.md
index 8423962a3e9..40d968506a8 100644
--- a/static/usage/v6/skeleton-text/basic/angular/example_component_ts.md
+++ b/static/usage/v6/skeleton-text/basic/angular/example_component_ts.md
@@ -1,10 +1,14 @@
```ts
import { Component } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
styleUrls: ['example.component.css'],
+ imports: [CommonModule, IonicModule],
+ standalone: true
})
export class ExampleComponent {
public loaded = false;
diff --git a/static/usage/v6/tabs/router/angular/app_component_html.md b/static/usage/v6/tabs/router/angular/app_component_html.md
deleted file mode 100644
index 7636539f28a..00000000000
--- a/static/usage/v6/tabs/router/angular/app_component_html.md
+++ /dev/null
@@ -1,3 +0,0 @@
-```html
-
-```
diff --git a/static/usage/v6/tabs/router/angular/app_module_ts.md b/static/usage/v6/tabs/router/angular/app_module_ts.md
deleted file mode 100644
index e36b8c6316e..00000000000
--- a/static/usage/v6/tabs/router/angular/app_module_ts.md
+++ /dev/null
@@ -1,19 +0,0 @@
-```ts
-import { NgModule } from '@angular/core';
-import { FormsModule } from '@angular/forms';
-import { BrowserModule } from '@angular/platform-browser';
-
-import { IonicModule } from '@ionic/angular';
-
-import { AppComponent } from './app.component';
-import { ExampleComponent } from './example.component';
-
-import { AppRoutingModule } from './app-routing.module';
-
-@NgModule({
- imports: [BrowserModule, FormsModule, AppRoutingModule, IonicModule.forRoot({})],
- declarations: [AppComponent, ExampleComponent],
- bootstrap: [AppComponent],
-})
-export class AppModule {}
-```
diff --git a/static/usage/v6/tabs/router/angular/app_routes_ts.md b/static/usage/v6/tabs/router/angular/app_routes_ts.md
new file mode 100644
index 00000000000..12354f4efa7
--- /dev/null
+++ b/static/usage/v6/tabs/router/angular/app_routes_ts.md
@@ -0,0 +1,33 @@
+```ts
+import { Routes } from '@angular/router';
+
+export const routes: Routes = [
+ {
+ path: '',
+ loadComponent: () => import('./example.component').then((m) => m.ExampleComponent),
+ children: [
+ {
+ path: 'home',
+ loadComponent: () => import('./home/home-page.component').then((m) => m.HomePageComponent),
+ },
+ {
+ path: 'radio',
+ loadComponent: () => import('./radio/radio-page.component').then((m) => m.RadioPageComponent),
+ },
+ {
+ path: 'library',
+ loadComponent: () => import('./library/library-page.component').then((m) => m.LibraryPageComponent),
+ },
+ {
+ path: 'search',
+ loadComponent: () => import('./search/search-page.component').then((m) => m.SearchPageComponent),
+ },
+ {
+ path: '',
+ redirectTo: '/home',
+ pathMatch: 'full',
+ },
+ ]
+ },
+];
+```
\ No newline at end of file
diff --git a/static/usage/v6/tabs/router/angular/app_routing_module_ts.md b/static/usage/v6/tabs/router/angular/app_routing_module_ts.md
deleted file mode 100644
index 7ff1067030f..00000000000
--- a/static/usage/v6/tabs/router/angular/app_routing_module_ts.md
+++ /dev/null
@@ -1,42 +0,0 @@
-```ts
-import { NgModule } from '@angular/core';
-import { RouterModule } from '@angular/router';
-
-import { ExampleComponent } from './example.component';
-
-@NgModule({
- imports: [
- RouterModule.forRoot([
- {
- path: '',
- component: ExampleComponent,
- children: [
- {
- path: '',
- pathMatch: 'full',
- redirectTo: 'home',
- },
- {
- path: 'home',
- loadChildren: () => import('./home/home-page.module').then((m) => m.HomePageModule),
- },
- {
- path: 'radio',
- loadChildren: () => import('./radio/radio-page.module').then((m) => m.RadioPageModule),
- },
- {
- path: 'library',
- loadChildren: () => import('./library/library-page.module').then((m) => m.LibraryPageModule),
- },
- {
- path: 'search',
- loadChildren: () => import('./search/search-page.module').then((m) => m.SearchPageModule),
- },
- ],
- },
- ]),
- ],
- exports: [RouterModule],
-})
-export class AppRoutingModule {}
-```
diff --git a/static/usage/v6/tabs/router/angular/example_component_html.md b/static/usage/v6/tabs/router/angular/example_component_html.md
index 67be68b564c..50736b8d969 100644
--- a/static/usage/v6/tabs/router/angular/example_component_html.md
+++ b/static/usage/v6/tabs/router/angular/example_component_html.md
@@ -1,19 +1,20 @@
```html
+
-
+
Listen Now
-
+
Radio
-
+
Library
-
+
Search
diff --git a/static/usage/v6/tabs/router/angular/example_component_ts.md b/static/usage/v6/tabs/router/angular/example_component_ts.md
new file mode 100644
index 00000000000..6c41e6987d3
--- /dev/null
+++ b/static/usage/v6/tabs/router/angular/example_component_ts.md
@@ -0,0 +1,25 @@
+```ts
+import { Component } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { RouterModule } from '@angular/router';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { playCircle, library, radio, search } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [CommonModule, IonicModule, RouterModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ playCircle, library, radio, search });
+ }
+}
+```
\ No newline at end of file
diff --git a/static/usage/v6/tabs/router/angular/home_page_component_ts.md b/static/usage/v6/tabs/router/angular/home_page_component_ts.md
index 9e2ef0a3e8c..72d45fbf0b6 100644
--- a/static/usage/v6/tabs/router/angular/home_page_component_ts.md
+++ b/static/usage/v6/tabs/router/angular/home_page_component_ts.md
@@ -1,9 +1,13 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-home-page',
templateUrl: './home-page.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class HomePageComponent {}
+
```
diff --git a/static/usage/v6/tabs/router/angular/home_page_module_ts.md b/static/usage/v6/tabs/router/angular/home_page_module_ts.md
deleted file mode 100644
index 2a1fb15b460..00000000000
--- a/static/usage/v6/tabs/router/angular/home_page_module_ts.md
+++ /dev/null
@@ -1,14 +0,0 @@
-```ts
-import { NgModule } from '@angular/core';
-import { RouterModule } from '@angular/router';
-import { HomePageComponent } from './home-page.component';
-
-import { IonicModule } from '@ionic/angular';
-
-@NgModule({
- imports: [IonicModule, RouterModule.forChild([{ path: '', component: HomePageComponent }])],
- declarations: [HomePageComponent],
- exports: [HomePageComponent],
-})
-export class HomePageModule {}
-```
diff --git a/static/usage/v6/tabs/router/angular/library_page_component_ts.md b/static/usage/v6/tabs/router/angular/library_page_component_ts.md
index f5a92a4868a..e98a5767193 100644
--- a/static/usage/v6/tabs/router/angular/library_page_component_ts.md
+++ b/static/usage/v6/tabs/router/angular/library_page_component_ts.md
@@ -1,9 +1,13 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-library-page',
templateUrl: './library-page.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class LibraryPageComponent {}
+
```
diff --git a/static/usage/v6/tabs/router/angular/library_page_module_ts.md b/static/usage/v6/tabs/router/angular/library_page_module_ts.md
deleted file mode 100644
index 8e2ab48cf39..00000000000
--- a/static/usage/v6/tabs/router/angular/library_page_module_ts.md
+++ /dev/null
@@ -1,14 +0,0 @@
-```ts
-import { NgModule } from '@angular/core';
-import { RouterModule } from '@angular/router';
-import { IonicModule } from '@ionic/angular';
-
-import { LibraryPageComponent } from './library-page.component';
-
-@NgModule({
- imports: [IonicModule, RouterModule.forChild([{ path: '', component: LibraryPageComponent }])],
- declarations: [LibraryPageComponent],
- exports: [LibraryPageComponent],
-})
-export class LibraryPageModule {}
-```
diff --git a/static/usage/v6/tabs/router/angular/radio_page_component_ts.md b/static/usage/v6/tabs/router/angular/radio_page_component_ts.md
index d29209c00dd..0a0e41154be 100644
--- a/static/usage/v6/tabs/router/angular/radio_page_component_ts.md
+++ b/static/usage/v6/tabs/router/angular/radio_page_component_ts.md
@@ -1,9 +1,13 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-radio-page',
templateUrl: './radio-page.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class RadioPageComponent {}
+
```
diff --git a/static/usage/v6/tabs/router/angular/radio_page_module_ts.md b/static/usage/v6/tabs/router/angular/radio_page_module_ts.md
deleted file mode 100644
index f50a0088632..00000000000
--- a/static/usage/v6/tabs/router/angular/radio_page_module_ts.md
+++ /dev/null
@@ -1,14 +0,0 @@
-```ts
-import { NgModule } from '@angular/core';
-import { RouterModule } from '@angular/router';
-import { RadioPageComponent } from './radio-page.component';
-
-import { IonicModule } from '@ionic/angular';
-
-@NgModule({
- imports: [IonicModule, RouterModule.forChild([{ path: '', component: RadioPageComponent }])],
- declarations: [RadioPageComponent],
- exports: [RadioPageComponent],
-})
-export class RadioPageModule {}
-```
diff --git a/static/usage/v6/tabs/router/angular/search_page_component_ts.md b/static/usage/v6/tabs/router/angular/search_page_component_ts.md
index bd6e723d332..1c4f7e91650 100644
--- a/static/usage/v6/tabs/router/angular/search_page_component_ts.md
+++ b/static/usage/v6/tabs/router/angular/search_page_component_ts.md
@@ -1,9 +1,13 @@
```ts
import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-search-page',
templateUrl: './search-page.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class SearchPageComponent {}
+
```
diff --git a/static/usage/v6/tabs/router/angular/search_page_module_ts.md b/static/usage/v6/tabs/router/angular/search_page_module_ts.md
deleted file mode 100644
index a1d599c5d9b..00000000000
--- a/static/usage/v6/tabs/router/angular/search_page_module_ts.md
+++ /dev/null
@@ -1,14 +0,0 @@
-```ts
-import { NgModule } from '@angular/core';
-import { RouterModule } from '@angular/router';
-import { SearchPageComponent } from './search-page.component';
-
-import { IonicModule } from '@ionic/angular';
-
-@NgModule({
- imports: [IonicModule, RouterModule.forChild([{ path: '', component: SearchPageComponent }])],
- declarations: [SearchPageComponent],
- exports: [SearchPageComponent],
-})
-export class SearchPageModule {}
-```
diff --git a/static/usage/v6/tabs/router/index.md b/static/usage/v6/tabs/router/index.md
index 7acff190150..bd728e9f3df 100644
--- a/static/usage/v6/tabs/router/index.md
+++ b/static/usage/v6/tabs/router/index.md
@@ -2,28 +2,22 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
-import angular_app_component_html from './angular/app_component_html.md';
-import angular_app_module_ts from './angular/app_module_ts.md';
-import angular_app_routing_module_ts from './angular/app_routing_module_ts.md';
-
import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
-import angular_home_page_module_ts from './angular/home_page_module_ts.md';
import angular_home_page_component_ts from './angular/home_page_component_ts.md';
import angular_home_page_component_html from './angular/home_page_component_html.md';
-import angular_library_page_module_ts from './angular/library_page_module_ts.md';
import angular_library_page_component_ts from './angular/library_page_component_ts.md';
import angular_library_page_component_html from './angular/library_page_component_html.md';
-import angular_radio_page_module_ts from './angular/radio_page_module_ts.md';
import angular_radio_page_component_ts from './angular/radio_page_component_ts.md';
import angular_radio_page_component_html from './angular/radio_page_component_html.md';
-import angular_search_page_module_ts from './angular/search_page_module_ts.md';
import angular_search_page_component_ts from './angular/search_page_component_ts.md';
import angular_search_page_component_html from './angular/search_page_component_html.md';
+import app_routes_ts from './angular/app_routes_ts.md';
import angular_global_css from './angular/global_css.md';
import vue_app_vue from './vue/app_vue.md';
@@ -48,22 +42,18 @@ import react_search_page_tsx from './react/search_page_tsx.md';
angular: {
files: {
'src/app/example.component.html': angular_example_component_html,
+ 'src/app/example.component.ts': angular_example_component_ts,
+ 'src/app/app.routes.ts':
+ app_routes_ts,
'src/app/home/home-page.component.ts': angular_home_page_component_ts,
'src/app/home/home-page.component.html': angular_home_page_component_html,
'src/global.css': angular_global_css,
- 'src/app/home/home-page.module.ts': angular_home_page_module_ts,
'src/app/library/library-page.component.ts': angular_library_page_component_ts,
'src/app/library/library-page.component.html': angular_library_page_component_html,
- 'src/app/library/library-page.module.ts': angular_library_page_module_ts,
'src/app/radio/radio-page.component.ts': angular_radio_page_component_ts,
'src/app/radio/radio-page.component.html': angular_radio_page_component_html,
- 'src/app/radio/radio-page.module.ts': angular_radio_page_module_ts,
'src/app/search/search-page.component.ts': angular_search_page_component_ts,
'src/app/search/search-page.component.html': angular_search_page_component_html,
- 'src/app/search/search-page.module.ts': angular_search_page_module_ts,
- 'src/app/app.module.ts': angular_app_module_ts,
- 'src/app/app.component.html': angular_app_component_html,
- 'src/app/app-routing.module.ts': angular_app_routing_module_ts,
},
},
vue: {
diff --git a/static/usage/v6/text/basic/angular.md b/static/usage/v6/text/basic/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/text/basic/angular.md
rename to static/usage/v6/text/basic/angular/example_component_html.md
diff --git a/static/usage/v6/text/basic/angular/example_component_ts.md b/static/usage/v6/text/basic/angular/example_component_ts.md
new file mode 100644
index 00000000000..6ed4de437b4
--- /dev/null
+++ b/static/usage/v6/text/basic/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { warning } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent {
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ warning });
+ }
+}
+```
diff --git a/static/usage/v6/text/basic/index.md b/static/usage/v6/text/basic/index.md
index 06efaf44145..24f162c246d 100644
--- a/static/usage/v6/text/basic/index.md
+++ b/static/usage/v6/text/basic/index.md
@@ -3,6 +3,20 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
-
+
diff --git a/static/usage/v6/toast/buttons/angular/example_component_ts.md b/static/usage/v6/toast/buttons/angular/example_component_ts.md
index faf1f33ed5b..3ecbef74070 100644
--- a/static/usage/v6/toast/buttons/angular/example_component_ts.md
+++ b/static/usage/v6/toast/buttons/angular/example_component_ts.md
@@ -1,10 +1,12 @@
```ts
import { Component } from '@angular/core';
-import { ToastController } from '@ionic/angular';
+import { IonicModule, ToastController } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
handlerMessage = '';
diff --git a/static/usage/v6/toast/icon/angular/example_component_ts.md b/static/usage/v6/toast/icon/angular/example_component_ts.md
index d72053bd950..76fb647250e 100644
--- a/static/usage/v6/toast/icon/angular/example_component_ts.md
+++ b/static/usage/v6/toast/icon/angular/example_component_ts.md
@@ -1,13 +1,24 @@
```ts
import { Component } from '@angular/core';
-import { ToastController } from '@ionic/angular';
+import { IonicModule, ToastController } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { globe } from 'ionicons/icons';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
- constructor(private toastController: ToastController) {}
+ constructor(private toastController: ToastController) {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ globe });
+ }
async presentToast() {
const toast = await this.toastController.create({
diff --git a/static/usage/v6/toast/layout/angular/example_component_ts.md b/static/usage/v6/toast/layout/angular/example_component_ts.md
index 01636b04a97..c8193f8d7f4 100644
--- a/static/usage/v6/toast/layout/angular/example_component_ts.md
+++ b/static/usage/v6/toast/layout/angular/example_component_ts.md
@@ -1,11 +1,12 @@
```ts
import { Component } from '@angular/core';
-import { ToastController } from '@ionic/angular';
-import type { ToastOptions } from '@ionic/angular';
+import { IonicModule, ToastController, ToastOptions } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
constructor(private toastController: ToastController) {}
diff --git a/static/usage/v6/toast/presenting/controller/angular/example_component_ts.md b/static/usage/v6/toast/presenting/controller/angular/example_component_ts.md
index db133a99f1e..7ca690867d4 100644
--- a/static/usage/v6/toast/presenting/controller/angular/example_component_ts.md
+++ b/static/usage/v6/toast/presenting/controller/angular/example_component_ts.md
@@ -1,10 +1,12 @@
```ts
import { Component } from '@angular/core';
-import { ToastController } from '@ionic/angular';
+import { IonicModule, ToastController } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
constructor(private toastController: ToastController) {}
diff --git a/static/usage/v6/toast/theming/angular/example_component_ts.md b/static/usage/v6/toast/theming/angular/example_component_ts.md
index 7f490b9bacc..e537ed3839c 100644
--- a/static/usage/v6/toast/theming/angular/example_component_ts.md
+++ b/static/usage/v6/toast/theming/angular/example_component_ts.md
@@ -1,10 +1,12 @@
```ts
import { Component } from '@angular/core';
-import { ToastController } from '@ionic/angular';
+import { IonicModule, ToastController } from '@ionic/angular';
@Component({
selector: 'app-example',
templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
})
export class ExampleComponent {
constructor(private toastController: ToastController) {}
diff --git a/static/usage/v6/toolbar/buttons/angular.md b/static/usage/v6/toolbar/buttons/angular/example_component_html.md
similarity index 100%
rename from static/usage/v6/toolbar/buttons/angular.md
rename to static/usage/v6/toolbar/buttons/angular/example_component_html.md
diff --git a/static/usage/v6/toolbar/buttons/angular/example_component_ts.md b/static/usage/v6/toolbar/buttons/angular/example_component_ts.md
new file mode 100644
index 00000000000..34d9c7d9c6a
--- /dev/null
+++ b/static/usage/v6/toolbar/buttons/angular/example_component_ts.md
@@ -0,0 +1,23 @@
+```ts
+import { Component } from '@angular/core';
+import { IonicModule } from '@ionic/angular';
+import { addIcons } from 'ionicons';
+import { personCircle, search, ellipsisHorizontal, ellipsisVertical, helpCircle, star, create } from 'ionicons/icons';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: 'example.component.html',
+ imports: [IonicModule],
+ standalone: true
+})
+export class ExampleComponent{
+ constructor() {
+ /**
+ * Any icons you want to use in your application
+ * can be registered in app.component.ts and then
+ * referenced by name anywhere in your application.
+ */
+ addIcons({ personCircle, search, ellipsisHorizontal, ellipsisVertical, helpCircle, star, create });
+ }
+}
+```
\ No newline at end of file
diff --git a/static/usage/v6/toolbar/buttons/index.md b/static/usage/v6/toolbar/buttons/index.md
index 2ac28550f9d..2423b16df41 100644
--- a/static/usage/v6/toolbar/buttons/index.md
+++ b/static/usage/v6/toolbar/buttons/index.md
@@ -3,11 +3,22 @@ import Playground from '@site/src/components/global/Playground';
import javascript from './javascript.md';
import react from './react.md';
import vue from './vue.md';
-import angular from './angular.md';
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
diff --git a/static/usage/v7/config/mode/angular/example_component_html.md b/static/usage/v7/config/mode/angular/example_component_html.md
new file mode 100644
index 00000000000..759329a97da
--- /dev/null
+++ b/static/usage/v7/config/mode/angular/example_component_html.md
@@ -0,0 +1,5 @@
+```html
+
+ Current mode: {{ mode }}
+
+```
diff --git a/static/usage/v7/config/mode/angular/example_component_ts.md b/static/usage/v7/config/mode/angular/example_component_ts.md
new file mode 100644
index 00000000000..5f0d31b1a3c
--- /dev/null
+++ b/static/usage/v7/config/mode/angular/example_component_ts.md
@@ -0,0 +1,16 @@
+```ts
+import { Component } from '@angular/core';
+import { Config, IonButton } from '@ionic/angular/standalone';
+
+@Component({
+ selector: 'app-example',
+ templateUrl: './example.component.html',
+ imports: [IonButton],
+})
+export class ExampleComponent {
+ mode: string;
+ constructor(public config: Config) {
+ this.mode = this.config.get('mode');
+ }
+}
+```
diff --git a/static/usage/v7/config/mode/demo.html b/static/usage/v7/config/mode/demo.html
new file mode 100644
index 00000000000..8762f394ba5
--- /dev/null
+++ b/static/usage/v7/config/mode/demo.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+ Ionic Config Mode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/usage/v7/config/mode/index.md b/static/usage/v7/config/mode/index.md
new file mode 100644
index 00000000000..f81cca1df75
--- /dev/null
+++ b/static/usage/v7/config/mode/index.md
@@ -0,0 +1,24 @@
+import Playground from '@site/src/components/global/Playground';
+
+import javascript from './javascript.md';
+import react from './react.md';
+import vue from './vue.md';
+
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
+
+
diff --git a/static/usage/v7/config/mode/javascript.md b/static/usage/v7/config/mode/javascript.md
new file mode 100644
index 00000000000..86b8b111d5f
--- /dev/null
+++ b/static/usage/v7/config/mode/javascript.md
@@ -0,0 +1,12 @@
+```html
+
+
+
+```
diff --git a/static/usage/v7/config/mode/react.md b/static/usage/v7/config/mode/react.md
new file mode 100644
index 00000000000..3699e778a85
--- /dev/null
+++ b/static/usage/v7/config/mode/react.md
@@ -0,0 +1,25 @@
+```tsx
+import React, { useState, useEffect } from 'react';
+import { IonButton } from '@ionic/react';
+import { getMode } from '@ionic/core';
+
+function Example() {
+ const [mode, setMode] = useState('');
+
+ useEffect(() => {
+ const mode = getMode() || 'md';
+ setMode(mode);
+ }, []);
+
+ const color = mode === 'ios' ? 'secondary' : 'tertiary';
+ const fill = mode === 'ios' ? 'outline' : 'solid';
+
+ return (
+
+ Current mode: {mode}
+
+ );
+}
+
+export default Example;
+```
diff --git a/static/usage/v7/config/mode/vue.md b/static/usage/v7/config/mode/vue.md
new file mode 100644
index 00000000000..a227337a408
--- /dev/null
+++ b/static/usage/v7/config/mode/vue.md
@@ -0,0 +1,20 @@
+```html
+
+ Current mode: {{ mode }}
+
+
+
+```
diff --git a/static/usage/v7/input/start-end-slots/react.md b/static/usage/v7/input/start-end-slots/react.md
index b638d8c8f07..e15086ee6f4 100644
--- a/static/usage/v7/input/start-end-slots/react.md
+++ b/static/usage/v7/input/start-end-slots/react.md
@@ -10,7 +10,7 @@ function Example() {
-
+
diff --git a/static/usage/v7/refresher/advanced/angular/example_component_ts.md b/static/usage/v7/refresher/advanced/angular/example_component_ts.md
index db6bd8d6099..b7d91143633 100644
--- a/static/usage/v7/refresher/advanced/angular/example_component_ts.md
+++ b/static/usage/v7/refresher/advanced/angular/example_component_ts.md
@@ -11,6 +11,7 @@ import {
IonRefresherContent,
IonTitle,
IonToolbar,
+ RefresherCustomEvent,
} from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
@@ -82,10 +83,10 @@ export class ExampleComponent {
}
}
- handleRefresh(event: CustomEvent) {
+ handleRefresh(event: RefresherCustomEvent) {
setTimeout(() => {
this.addItems(3, true);
- (event.target as HTMLIonRefresherElement).complete();
+ event.target.complete();
}, 2000);
}
}
diff --git a/static/usage/v7/refresher/advanced/react/main_tsx.md b/static/usage/v7/refresher/advanced/react/main_tsx.md
index f4cdf27d4eb..2ddb57ac50a 100644
--- a/static/usage/v7/refresher/advanced/react/main_tsx.md
+++ b/static/usage/v7/refresher/advanced/react/main_tsx.md
@@ -11,7 +11,7 @@ import {
IonRefresherContent,
IonTitle,
IonToolbar,
- RefresherEventDetail,
+ RefresherCustomEvent,
} from '@ionic/react';
import { ellipse } from 'ionicons/icons';
@@ -44,7 +44,7 @@ function Example() {
}
}, []);
- function handleRefresh(event: CustomEvent) {
+ function handleRefresh(event: RefresherCustomEvent) {
setTimeout(() => {
addItems(3, true);
event.detail.complete();
diff --git a/static/usage/v7/refresher/advanced/vue.md b/static/usage/v7/refresher/advanced/vue.md
index c5ec3047d44..8a34a29f86e 100644
--- a/static/usage/v7/refresher/advanced/vue.md
+++ b/static/usage/v7/refresher/advanced/vue.md
@@ -51,6 +51,7 @@
IonRefresherContent,
IonTitle,
IonToolbar,
+ RefresherCustomEvent,
},
setup() {
const names = [
@@ -82,7 +83,7 @@
addItems(5);
- const handleRefresh = (event: CustomEvent) => {
+ const handleRefresh = (event: RefresherCustomEvent) => {
setTimeout(() => {
addItems(3, true);
event.target.complete();
diff --git a/static/usage/v7/refresher/basic/angular/example_component_ts.md b/static/usage/v7/refresher/basic/angular/example_component_ts.md
index 8edb4e4dc1f..da27a11e0af 100644
--- a/static/usage/v7/refresher/basic/angular/example_component_ts.md
+++ b/static/usage/v7/refresher/basic/angular/example_component_ts.md
@@ -7,6 +7,7 @@ import {
IonRefresherContent,
IonTitle,
IonToolbar,
+ RefresherCustomEvent,
} from '@ionic/angular/standalone';
@Component({
@@ -16,10 +17,10 @@ import {
imports: [IonContent, IonHeader, IonRefresher, IonRefresherContent, IonTitle, IonToolbar],
})
export class ExampleComponent {
- handleRefresh(event: CustomEvent) {
+ handleRefresh(event: RefresherCustomEvent) {
setTimeout(() => {
// Any calls to load data go here
- (event.target as HTMLIonRefresherElement).complete();
+ event.target.complete();
}, 2000);
}
}
diff --git a/static/usage/v7/refresher/basic/react.md b/static/usage/v7/refresher/basic/react.md
index 02b0504208b..bcdd53422d8 100644
--- a/static/usage/v7/refresher/basic/react.md
+++ b/static/usage/v7/refresher/basic/react.md
@@ -7,11 +7,11 @@ import {
IonRefresherContent,
IonTitle,
IonToolbar,
- RefresherEventDetail,
+ RefresherCustomEvent,
} from '@ionic/react';
function Example() {
- function handleRefresh(event: CustomEvent) {
+ function handleRefresh(event: RefresherCustomEvent) {
setTimeout(() => {
// Any calls to load data go here
event.detail.complete();
diff --git a/static/usage/v7/refresher/basic/vue.md b/static/usage/v7/refresher/basic/vue.md
index 870081dcfbf..fceacabdd6c 100644
--- a/static/usage/v7/refresher/basic/vue.md
+++ b/static/usage/v7/refresher/basic/vue.md
@@ -16,13 +16,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/usage/v8/config/mode/index.md b/static/usage/v8/config/mode/index.md
new file mode 100644
index 00000000000..2a39f7cc794
--- /dev/null
+++ b/static/usage/v8/config/mode/index.md
@@ -0,0 +1,24 @@
+import Playground from '@site/src/components/global/Playground';
+
+import javascript from './javascript.md';
+import react from './react.md';
+import vue from './vue.md';
+
+import angular_example_component_html from './angular/example_component_html.md';
+import angular_example_component_ts from './angular/example_component_ts.md';
+
+
diff --git a/static/usage/v8/config/mode/javascript.md b/static/usage/v8/config/mode/javascript.md
new file mode 100644
index 00000000000..86b8b111d5f
--- /dev/null
+++ b/static/usage/v8/config/mode/javascript.md
@@ -0,0 +1,12 @@
+```html
+
+
+
+```
diff --git a/static/usage/v8/config/mode/react.md b/static/usage/v8/config/mode/react.md
new file mode 100644
index 00000000000..3de2faf85a1
--- /dev/null
+++ b/static/usage/v8/config/mode/react.md
@@ -0,0 +1,24 @@
+```tsx
+import React, { useState, useEffect } from 'react';
+import { IonButton } from '@ionic/react';
+import { getMode } from '@ionic/core';
+
+function Example() {
+ const [mode, setMode] = useState('');
+
+ useEffect(() => {
+ const mode = getMode() || 'md';
+ setMode(mode);
+ }, []);
+
+ const color = mode === 'ios' ? 'secondary' : 'tertiary';
+ const fill = mode === 'ios' ? 'outline' : 'solid';
+
+ return (
+
+ Current mode: {mode}
+
+ );
+}
+export default Example;
+```
diff --git a/static/usage/v8/config/mode/vue.md b/static/usage/v8/config/mode/vue.md
new file mode 100644
index 00000000000..a227337a408
--- /dev/null
+++ b/static/usage/v8/config/mode/vue.md
@@ -0,0 +1,20 @@
+```html
+
+ Current mode: {{ mode }}
+
+
+
+```
diff --git a/static/usage/v8/input/start-end-slots/react.md b/static/usage/v8/input/start-end-slots/react.md
index b638d8c8f07..e15086ee6f4 100644
--- a/static/usage/v8/input/start-end-slots/react.md
+++ b/static/usage/v8/input/start-end-slots/react.md
@@ -10,7 +10,7 @@ function Example() {
-
+
diff --git a/static/usage/v8/refresher/advanced/angular/example_component_ts.md b/static/usage/v8/refresher/advanced/angular/example_component_ts.md
index db6bd8d6099..b7d91143633 100644
--- a/static/usage/v8/refresher/advanced/angular/example_component_ts.md
+++ b/static/usage/v8/refresher/advanced/angular/example_component_ts.md
@@ -11,6 +11,7 @@ import {
IonRefresherContent,
IonTitle,
IonToolbar,
+ RefresherCustomEvent,
} from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
@@ -82,10 +83,10 @@ export class ExampleComponent {
}
}
- handleRefresh(event: CustomEvent) {
+ handleRefresh(event: RefresherCustomEvent) {
setTimeout(() => {
this.addItems(3, true);
- (event.target as HTMLIonRefresherElement).complete();
+ event.target.complete();
}, 2000);
}
}
diff --git a/static/usage/v8/refresher/advanced/react/main_tsx.md b/static/usage/v8/refresher/advanced/react/main_tsx.md
index f4cdf27d4eb..2ddb57ac50a 100644
--- a/static/usage/v8/refresher/advanced/react/main_tsx.md
+++ b/static/usage/v8/refresher/advanced/react/main_tsx.md
@@ -11,7 +11,7 @@ import {
IonRefresherContent,
IonTitle,
IonToolbar,
- RefresherEventDetail,
+ RefresherCustomEvent,
} from '@ionic/react';
import { ellipse } from 'ionicons/icons';
@@ -44,7 +44,7 @@ function Example() {
}
}, []);
- function handleRefresh(event: CustomEvent) {
+ function handleRefresh(event: RefresherCustomEvent) {
setTimeout(() => {
addItems(3, true);
event.detail.complete();
diff --git a/static/usage/v8/refresher/advanced/vue.md b/static/usage/v8/refresher/advanced/vue.md
index c5ec3047d44..8a34a29f86e 100644
--- a/static/usage/v8/refresher/advanced/vue.md
+++ b/static/usage/v8/refresher/advanced/vue.md
@@ -51,6 +51,7 @@
IonRefresherContent,
IonTitle,
IonToolbar,
+ RefresherCustomEvent,
},
setup() {
const names = [
@@ -82,7 +83,7 @@
addItems(5);
- const handleRefresh = (event: CustomEvent) => {
+ const handleRefresh = (event: RefresherCustomEvent) => {
setTimeout(() => {
addItems(3, true);
event.target.complete();
diff --git a/static/usage/v8/refresher/basic/angular/example_component_ts.md b/static/usage/v8/refresher/basic/angular/example_component_ts.md
index 8edb4e4dc1f..da27a11e0af 100644
--- a/static/usage/v8/refresher/basic/angular/example_component_ts.md
+++ b/static/usage/v8/refresher/basic/angular/example_component_ts.md
@@ -7,6 +7,7 @@ import {
IonRefresherContent,
IonTitle,
IonToolbar,
+ RefresherCustomEvent,
} from '@ionic/angular/standalone';
@Component({
@@ -16,10 +17,10 @@ import {
imports: [IonContent, IonHeader, IonRefresher, IonRefresherContent, IonTitle, IonToolbar],
})
export class ExampleComponent {
- handleRefresh(event: CustomEvent) {
+ handleRefresh(event: RefresherCustomEvent) {
setTimeout(() => {
// Any calls to load data go here
- (event.target as HTMLIonRefresherElement).complete();
+ event.target.complete();
}, 2000);
}
}
diff --git a/static/usage/v8/refresher/basic/react.md b/static/usage/v8/refresher/basic/react.md
index 02b0504208b..bcdd53422d8 100644
--- a/static/usage/v8/refresher/basic/react.md
+++ b/static/usage/v8/refresher/basic/react.md
@@ -7,11 +7,11 @@ import {
IonRefresherContent,
IonTitle,
IonToolbar,
- RefresherEventDetail,
+ RefresherCustomEvent,
} from '@ionic/react';
function Example() {
- function handleRefresh(event: CustomEvent) {
+ function handleRefresh(event: RefresherCustomEvent) {
setTimeout(() => {
// Any calls to load data go here
event.detail.complete();
diff --git a/static/usage/v8/refresher/basic/vue.md b/static/usage/v8/refresher/basic/vue.md
index 870081dcfbf..fceacabdd6c 100644
--- a/static/usage/v8/refresher/basic/vue.md
+++ b/static/usage/v8/refresher/basic/vue.md
@@ -16,13 +16,21 @@