@rdlabo/ionic-theme-ios27 0.2.1 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +84 -126
- package/dist/css/utils/structured-list.css +1 -0
- package/dist/native/components/searchable-tabs.d.ts +2 -0
- package/dist/native/components/searchable-tabs.d.ts.map +1 -1
- package/dist/native/components/searchable-tabs.js +131 -21
- package/dist/native/runtime.d.ts.map +1 -1
- package/dist/native/runtime.js +14 -7
- package/docs/migration.md +105 -3
- package/docs/native-ui-shell.md +15 -3
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellSearchController.swift +243 -64
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellTabBar.swift +77 -6
- package/ios/Sources/IonicNativeUIShellPlugin/IonicNativeUIShellPlugin.swift +79 -12
- package/ios/Tests/IonicNativeUIShellPluginTests/ShellSnapshotTests.swift +258 -2
- package/node_modules/@rdlabo/ionic-theme-utils/package.json +4 -0
- package/node_modules/@rdlabo/ionic-theme-utils/scripts/copy-structured-list.mjs +14 -0
- package/package.json +4 -3
- package/src/native/components/searchable-tabs.ts +142 -22
- package/src/native/runtime.ts +11 -6
- package/src/styles/components/ion-list.scss +1 -1
- package/src/styles/md-ion-list-inset.scss +1 -1
- package/src/styles/utils/dark/ion-list.scss +1 -1
- package/src/styles/utils/structured-list.scss +310 -0
- package/docs/ios-adaptive.md +0 -90
- /package/docs/{experimental-animation.md → animation.md} +0 -0
package/docs/ios-adaptive.md
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Adaptive iOS themes
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Adaptive iOS themes
|
|
6
|
-
|
|
7
|
-
Use CSS feature queries to choose a theme while keeping Ionic's default iOS styles on older browsers. Safari 27 adds `:heading` support; see the [WebKit announcement](https://webkit.org/blog/17967/news-from-wwdc26-webkit-in-safari-27-beta/).
|
|
8
|
-
|
|
9
|
-
These checks detect browser capabilities, not the operating system version. Other browsers may support the same features. Keep Ionic mode and platform-specific animation configuration consistent with your application.
|
|
10
|
-
|
|
11
|
-
## Load only the iOS 27 theme
|
|
12
|
-
|
|
13
|
-
In your global Sass stylesheet, use `meta.load-css` inside the feature query. Unlike `@use`, it can emit the theme inside `@supports`.
|
|
14
|
-
|
|
15
|
-
```scss
|
|
16
|
-
@use 'sass:meta';
|
|
17
|
-
|
|
18
|
-
@supports selector(:heading) {
|
|
19
|
-
@include meta.load-css('@rdlabo/ionic-theme-ios27/src/styles/default-variables');
|
|
20
|
-
@include meta.load-css('@rdlabo/ionic-theme-ios27/src/styles/ionic-theme-ios27');
|
|
21
|
-
@include meta.load-css('@rdlabo/ionic-theme-ios27/src/styles/ionic-theme-ios27-dark-class');
|
|
22
|
-
@include meta.load-css('@rdlabo/ionic-theme-ios27/src/styles/md-remove-ios-class-effect');
|
|
23
|
-
}
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Use the iOS 26 and iOS 27 themes together
|
|
27
|
-
|
|
28
|
-
Install both packages:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
npm install @rdlabo/ionic-theme-ios26 @rdlabo/ionic-theme-ios27
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
Use this global Sass configuration instead of unconditional theme imports:
|
|
35
|
-
|
|
36
|
-
```scss
|
|
37
|
-
@use 'sass:meta';
|
|
38
|
-
|
|
39
|
-
@supports selector(:heading) {
|
|
40
|
-
@include meta.load-css('@rdlabo/ionic-theme-ios27/src/styles/default-variables');
|
|
41
|
-
@include meta.load-css('@rdlabo/ionic-theme-ios27/src/styles/ionic-theme-ios27');
|
|
42
|
-
@include meta.load-css('@rdlabo/ionic-theme-ios27/src/styles/ionic-theme-ios27-dark-class');
|
|
43
|
-
@include meta.load-css('@rdlabo/ionic-theme-ios27/src/styles/md-remove-ios-class-effect');
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
@supports (text-wrap: pretty) and (not selector(:heading)) {
|
|
47
|
-
@include meta.load-css('@rdlabo/ionic-theme-ios26/src/styles/default-variables');
|
|
48
|
-
@include meta.load-css('@rdlabo/ionic-theme-ios26/src/styles/ionic-theme-ios26');
|
|
49
|
-
@include meta.load-css('@rdlabo/ionic-theme-ios26/src/styles/ionic-theme-ios26-dark-class');
|
|
50
|
-
@include meta.load-css('@rdlabo/ionic-theme-ios26/src/styles/md-remove-ios-class-effect');
|
|
51
|
-
}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
The branches are mutually exclusive. Browsers without either feature retain Ionic's default styling. The `text-wrap: pretty` check preserves the earlier theme's capability-based fallback for older Safari versions.
|
|
55
|
-
|
|
56
|
-
Both examples use class-based dark mode. Load Ionic's matching dark palette in your application; for system or always-dark mode, replace the `-dark-class` imports with the matching variant. If you also use `md-ion-list-inset`, load the corresponding package's stylesheet inside each branch.
|
|
57
|
-
|
|
58
|
-
## Select matching JavaScript animations
|
|
59
|
-
|
|
60
|
-
Use the same feature checks for dynamic imports before initializing Ionic. Call this loader for the iOS platform; leave other platforms on their existing animation configuration.
|
|
61
|
-
|
|
62
|
-
```ts
|
|
63
|
-
async function loadIOSAnimations() {
|
|
64
|
-
if (typeof CSS === 'undefined') {
|
|
65
|
-
return {};
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const theme = CSS.supports('selector(:heading)')
|
|
69
|
-
? await import('@rdlabo/ionic-theme-ios27')
|
|
70
|
-
: CSS.supports('text-wrap: pretty')
|
|
71
|
-
? await import('@rdlabo/ionic-theme-ios26')
|
|
72
|
-
: undefined;
|
|
73
|
-
|
|
74
|
-
if (!theme) {
|
|
75
|
-
return {};
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return {
|
|
79
|
-
navAnimation: theme.iosTransitionAnimation,
|
|
80
|
-
popoverEnter: theme.popoverEnterAnimation,
|
|
81
|
-
popoverLeave: theme.popoverLeaveAnimation,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// In your browser bootstrap, before initializing Ionic:
|
|
86
|
-
const animations = isPlatform('ios') ? await loadIOSAnimations() : {};
|
|
87
|
-
provideIonicAngular({ ...animations });
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Import `isPlatform` and `provideIonicAngular` from your Ionic Angular entry point as shown in the README. Pass the same options to `setupIonicReact` or `IonicVue` when using those frameworks. The imports are selected at runtime; the bundler may still emit chunks for both packages. In server-rendered apps, run the selection during browser initialization.
|
|
File without changes
|