@rdlabo/ionic-theme-ios27 1.2.1 → 2.0.0-2
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 +24 -279
- package/dist/css/components/ion-toolbar.css +1 -1
- package/dist/css/ionic-theme-ios27.css +1 -1
- package/dist/css/vertical-bars.css +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/layout/index.d.ts +18 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +26 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/segment/index.js +3 -3
- package/dist/segment/index.js.map +1 -1
- package/dist/sheets-of-glass/index.js +7 -7
- package/dist/sheets-of-glass/index.js.map +1 -1
- package/dist/tab-bar-searchable/dismiss-button.js +53 -3
- package/dist/tab-bar-searchable/dismiss-button.js.map +1 -1
- package/dist/tab-bar-searchable/index.js +18 -3
- package/dist/tab-bar-searchable/index.js.map +1 -1
- package/dist/transition/ios.transition.d.ts.map +1 -1
- package/dist/transition/ios.transition.js +7 -4
- package/dist/transition/ios.transition.js.map +1 -1
- package/dist/transition/native-ui.d.ts +6 -0
- package/dist/transition/native-ui.d.ts.map +1 -0
- package/dist/{native-integration/index.js → transition/native-ui.js} +16 -30
- package/dist/transition/native-ui.js.map +1 -0
- package/docs/adaptive-themes.md +161 -0
- package/docs/add-native-ui.md +53 -0
- package/docs/animation.md +19 -3
- package/docs/eslint.md +3 -1
- package/docs/features.md +9 -5
- package/docs/migration.md +33 -22
- package/docs/setup.md +94 -0
- package/docs/special-markup.md +41 -10
- package/docs/using-ion-item-group.md +2 -2
- package/docs/vertical-bars-layout.md +137 -0
- package/package.json +12 -42
- package/src/index.ts +3 -1
- package/src/layout/index.ts +29 -0
- package/src/segment/index.ts +3 -3
- package/src/sheets-of-glass/index.ts +7 -7
- package/src/styles/components/ion-toolbar.scss +1 -1
- package/src/styles/vertical-bars.scss +15 -18
- package/src/tab-bar-searchable/dismiss-button.ts +73 -4
- package/src/tab-bar-searchable/index.ts +20 -3
- package/src/transition/ios.transition.ts +7 -4
- package/src/{native-integration/index.ts → transition/native-ui.ts} +17 -46
- package/Package.swift +0 -21
- package/dist/_virtual/_rolldown/runtime.js +0 -13
- package/dist/native/components/index.d.ts +0 -19
- package/dist/native/components/index.d.ts.map +0 -1
- package/dist/native/components/index.js +0 -40
- package/dist/native/components/index.js.map +0 -1
- package/dist/native/components/ion-back-button.d.ts +0 -9
- package/dist/native/components/ion-back-button.d.ts.map +0 -1
- package/dist/native/components/ion-back-button.js +0 -20
- package/dist/native/components/ion-back-button.js.map +0 -1
- package/dist/native/components/ion-button.d.ts +0 -10
- package/dist/native/components/ion-button.d.ts.map +0 -1
- package/dist/native/components/ion-button.js +0 -23
- package/dist/native/components/ion-button.js.map +0 -1
- package/dist/native/components/ion-buttons.d.ts +0 -11
- package/dist/native/components/ion-buttons.d.ts.map +0 -1
- package/dist/native/components/ion-buttons.js +0 -30
- package/dist/native/components/ion-buttons.js.map +0 -1
- package/dist/native/components/ion-fab.d.ts +0 -10
- package/dist/native/components/ion-fab.d.ts.map +0 -1
- package/dist/native/components/ion-fab.js +0 -132
- package/dist/native/components/ion-fab.js.map +0 -1
- package/dist/native/components/ion-menu-button.d.ts +0 -13
- package/dist/native/components/ion-menu-button.d.ts.map +0 -1
- package/dist/native/components/ion-menu-button.js +0 -31
- package/dist/native/components/ion-menu-button.js.map +0 -1
- package/dist/native/components/ion-segment.d.ts +0 -11
- package/dist/native/components/ion-segment.d.ts.map +0 -1
- package/dist/native/components/ion-segment.js +0 -30
- package/dist/native/components/ion-segment.js.map +0 -1
- package/dist/native/components/ion-tab-bar.d.ts +0 -11
- package/dist/native/components/ion-tab-bar.d.ts.map +0 -1
- package/dist/native/components/ion-tab-bar.js +0 -50
- package/dist/native/components/ion-tab-bar.js.map +0 -1
- package/dist/native/components/searchable-tabs.d.ts +0 -20
- package/dist/native/components/searchable-tabs.d.ts.map +0 -1
- package/dist/native/components/searchable-tabs.js +0 -383
- package/dist/native/components/searchable-tabs.js.map +0 -1
- package/dist/native/definitions.d.ts +0 -152
- package/dist/native/definitions.d.ts.map +0 -1
- package/dist/native/definitions.js +0 -0
- package/dist/native/foldable/fold-state.d.ts +0 -5
- package/dist/native/foldable/fold-state.d.ts.map +0 -1
- package/dist/native/foldable/fold-state.js +0 -14
- package/dist/native/foldable/fold-state.js.map +0 -1
- package/dist/native/foldable/types.d.ts +0 -12
- package/dist/native/foldable/types.d.ts.map +0 -1
- package/dist/native/foldable/types.js +0 -0
- package/dist/native/index.d.ts +0 -11
- package/dist/native/index.d.ts.map +0 -1
- package/dist/native/index.js +0 -242
- package/dist/native/index.js.map +0 -1
- package/dist/native/prehide.d.ts +0 -7
- package/dist/native/prehide.d.ts.map +0 -1
- package/dist/native/prehide.js +0 -230
- package/dist/native/prehide.js.map +0 -1
- package/dist/native/runtime.d.ts +0 -5
- package/dist/native/runtime.d.ts.map +0 -1
- package/dist/native/runtime.js +0 -640
- package/dist/native/runtime.js.map +0 -1
- package/dist/native/shared/candidate.d.ts +0 -21
- package/dist/native/shared/candidate.d.ts.map +0 -1
- package/dist/native/shared/candidate.js +0 -98
- package/dist/native/shared/candidate.js.map +0 -1
- package/dist/native/shared/crossfade.d.ts +0 -10
- package/dist/native/shared/crossfade.d.ts.map +0 -1
- package/dist/native/shared/crossfade.js +0 -50
- package/dist/native/shared/crossfade.js.map +0 -1
- package/dist/native/shared/dom.d.ts +0 -46
- package/dist/native/shared/dom.d.ts.map +0 -1
- package/dist/native/shared/dom.js +0 -172
- package/dist/native/shared/dom.js.map +0 -1
- package/dist/native/shared/events.d.ts +0 -11
- package/dist/native/shared/events.d.ts.map +0 -1
- package/dist/native/shared/events.js +0 -13
- package/dist/native/shared/events.js.map +0 -1
- package/dist/native/shared/icons.d.ts +0 -8
- package/dist/native/shared/icons.d.ts.map +0 -1
- package/dist/native/shared/icons.js +0 -61
- package/dist/native/shared/icons.js.map +0 -1
- package/dist/native/shared/modal.d.ts +0 -10
- package/dist/native/shared/modal.d.ts.map +0 -1
- package/dist/native/shared/modal.js +0 -160
- package/dist/native/shared/modal.js.map +0 -1
- package/dist/native/vertical-bars-web-search.d.ts +0 -9
- package/dist/native/vertical-bars-web-search.d.ts.map +0 -1
- package/dist/native/vertical-bars-web-search.js +0 -84
- package/dist/native/vertical-bars-web-search.js.map +0 -1
- package/dist/native/vertical-bars-web.d.ts +0 -5
- package/dist/native/vertical-bars-web.d.ts.map +0 -1
- package/dist/native/vertical-bars-web.js +0 -341
- package/dist/native/vertical-bars-web.js.map +0 -1
- package/dist/native-integration/index.d.ts +0 -23
- package/dist/native-integration/index.d.ts.map +0 -1
- package/dist/native-integration/index.js.map +0 -1
- package/dist/native-integration/transition.d.ts +0 -5
- package/dist/native-integration/transition.d.ts.map +0 -1
- package/dist/native-integration/transition.js +0 -16
- package/dist/native-integration/transition.js.map +0 -1
- package/dist/vertical-bars.d.ts +0 -5
- package/dist/vertical-bars.js +0 -4
- package/docs/e2e-testing.md +0 -51
- package/docs/feedback.md +0 -65
- package/docs/iphone-duo-with-original-theme.md +0 -158
- package/docs/iphone-duo.md +0 -150
- package/docs/native-ui-shell.md +0 -285
- package/docs/vertical-bars.md +0 -285
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellButton.swift +0 -71
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellButtons.swift +0 -24
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellComponents.swift +0 -18
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellFab.swift +0 -83
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellSearchController.swift +0 -432
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellSegment.swift +0 -91
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellTabBar.swift +0 -221
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellVerticalBars.swift +0 -437
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellVerticalSearch.swift +0 -118
- package/ios/Sources/IonicNativeUIShellPlugin/IonicNativeUIShellPlugin.swift +0 -396
- package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellCrossfade.swift +0 -35
- package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellHost.swift +0 -8
- package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellRendering.swift +0 -27
- package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellSnapshot.swift +0 -135
- package/ios/Tests/IonicNativeUIShellPluginTests/ShellSnapshotTests.swift +0 -650
- package/src/native/components/index.ts +0 -53
- package/src/native/components/ion-back-button.ts +0 -19
- package/src/native/components/ion-button.ts +0 -24
- package/src/native/components/ion-buttons.ts +0 -38
- package/src/native/components/ion-fab.ts +0 -151
- package/src/native/components/ion-menu-button.ts +0 -24
- package/src/native/components/ion-segment.ts +0 -27
- package/src/native/components/ion-tab-bar.ts +0 -50
- package/src/native/components/searchable-tabs.ts +0 -459
- package/src/native/definitions.ts +0 -191
- package/src/native/foldable/fold-state.ts +0 -9
- package/src/native/foldable/types.ts +0 -4
- package/src/native/index.ts +0 -281
- package/src/native/prehide.ts +0 -265
- package/src/native/runtime.ts +0 -781
- package/src/native/shared/candidate.ts +0 -150
- package/src/native/shared/crossfade.ts +0 -50
- package/src/native/shared/dom.ts +0 -286
- package/src/native/shared/events.ts +0 -8
- package/src/native/shared/icons.ts +0 -57
- package/src/native/shared/modal.ts +0 -157
- package/src/native/vertical-bars-web-search.ts +0 -80
- package/src/native/vertical-bars-web.ts +0 -411
- package/src/native-integration/transition.ts +0 -15
- package/src/vertical-bars.ts +0 -11
package/docs/eslint.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
title: Keep lists consistent with ESLint
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
+
# Keep lists consistent with ESLint
|
|
6
|
+
|
|
5
7
|
Catch missing list groups before they reach the screen. In Ionic Angular apps, `@rdlabo/eslint-plugin-rules` checks the markup used by iOS 27.
|
|
6
8
|
|
|
7
9
|
## Enable the list check
|
|
@@ -60,7 +62,7 @@ Group the items and import `IonItemGroup` in the standalone component:
|
|
|
60
62
|
|
|
61
63
|
The rule checks all `ion-list` elements, including non-inset lists. Radio, reorder, and accordion groups are also supported. It checks Angular templates; it does not inspect React or Vue templates.
|
|
62
64
|
|
|
63
|
-
See [Using ion-item-group](
|
|
65
|
+
See [Using ion-item-group](using-ion-item-group.md) for layout examples and the [rule reference](https://docs.rdlabo.dev/projects/eslint-plugin-rules/docs/rules/require-ion-item-group) for supported structures and automatic fixes.
|
|
64
66
|
|
|
65
67
|
## Keep it checked
|
|
66
68
|
|
package/docs/features.md
CHANGED
|
@@ -4,16 +4,20 @@ title: Features
|
|
|
4
4
|
|
|
5
5
|
# Features
|
|
6
6
|
|
|
7
|
-
Customize the theme with CSS variables and Sass mixins, or adopt it one component at a time. Markup-specific opt-ins are documented in [Special markup and classes](
|
|
7
|
+
Customize the theme with CSS variables and Sass mixins, or adopt it one component at a time. Markup-specific opt-ins are documented in [Special markup and classes](special-markup.md).
|
|
8
8
|
|
|
9
9
|
## CSS variables
|
|
10
10
|
|
|
11
11
|
To customize the library's default styles to match your design, several CSS variables are provided. See this file for details:
|
|
12
12
|
[Default variables](../src/styles/default-variables.scss)
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
| Variable | Default | Purpose |
|
|
15
|
+
| ------------------------------------- | ------------------------------------------ | ----------------------------------------------------------------- |
|
|
16
|
+
| `--ios-theme-menu-background-rgb` | Light: `225, 230, 240`; dark: `26, 31, 34` | Menu surface RGB channels; set on `ion-menu`. |
|
|
17
|
+
| `--ios-theme-menu-background-opacity` | `0.96` | Menu surface opacity; set on `ion-menu`. |
|
|
18
|
+
| `--ios-theme-button-press-duration` | `380ms` | Duration of the button's `:active` scaling with slight overshoot. |
|
|
15
19
|
|
|
16
|
-
|
|
20
|
+
Use `--ios-theme-button-press-duration` instead of the shared activated-transition duration variables to customize button press scaling.
|
|
17
21
|
|
|
18
22
|
## Liquid Glass mixin
|
|
19
23
|
|
|
@@ -27,9 +31,9 @@ ion-textarea label.textarea-wrapper {
|
|
|
27
31
|
}
|
|
28
32
|
```
|
|
29
33
|
|
|
30
|
-
## Native UI
|
|
34
|
+
## Native UI (Preview)
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
Once your theme is working, [add Native UI](add-native-ui.md) to render supported fixed controls with UIKit and SwiftUI on iOS. Keep theme styles for Web content and fallback controls. Native UI is an optional preview; adding styles alone does not enable it.
|
|
33
37
|
|
|
34
38
|
## Selective component imports
|
|
35
39
|
|
package/docs/migration.md
CHANGED
|
@@ -1,42 +1,50 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
2
|
+
title: Theme migration
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
#
|
|
5
|
+
# Theme migration
|
|
6
6
|
|
|
7
|
-
## Native UI
|
|
7
|
+
## Native UI package separation
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Theme styles and ordinary theme API imports remain supported. If you previously used native controls through this package, the `/native` and `/vertical-bars` entries have been removed:
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
11
|
+
| Previous import | Replacement |
|
|
12
|
+
| ----------------------------------------- | ------------------------------------------- |
|
|
13
|
+
| `@rdlabo/ionic-theme-ios27/native` | `@rdlabo/capacitor-native-ui` |
|
|
14
|
+
| `@rdlabo/ionic-theme-ios27/vertical-bars` | `@rdlabo/capacitor-native-ui/vertical-bars` |
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
Add the native package as a direct application dependency, update imports, rebuild Web assets, and run `npx cap sync ios`. Follow the [Native UI migration guide](https://github.com/rdlabo-dev/ionic-theme-ios27/blob/main/packages/capacitor-native-ui/docs/migration.md) for 1.2.1 startup settings and native project changes. Theme-only apps do not need native startup or plugin setup.
|
|
17
|
+
|
|
18
|
+
## Device layout in 2.0
|
|
19
|
+
|
|
20
|
+
Install Foldable alongside the theme as part of the standard setup:
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
+ navAnimation: withNativeUIShellTransition(existingTransition),
|
|
21
|
-
};
|
|
22
|
+
```sh
|
|
23
|
+
npm install @rdlabo/ionic-theme-ios27 @erkamyaman/capacitor-foldable
|
|
22
24
|
```
|
|
23
25
|
|
|
24
|
-
|
|
26
|
+
Replace the former device-layout APIs with Foldable subscriptions:
|
|
25
27
|
|
|
26
|
-
|
|
28
|
+
| Previous API | Replacement |
|
|
29
|
+
| ------------------------------------ | ----------------------------------------------------------------------------------- |
|
|
30
|
+
| `DeviceLayout`, `HingeStatus` | `BarPlacement`, `FoldState` and `HingeStatus` from `@erkamyaman/capacitor-foldable` |
|
|
31
|
+
| `getDeviceLayout()` | `Foldable.getBarPlacement()` and `Foldable.getFoldState()` |
|
|
32
|
+
| `deviceLayoutChange` | `barPlacementChange` and `foldStateChange` listeners |
|
|
33
|
+
| Start/stop device-layout monitoring | Subscribe with `addListener()`; remove each listener at teardown |
|
|
34
|
+
| One-shot WebView corner-radius reads | Native UI's `getWebViewMetrics()` |
|
|
27
35
|
|
|
28
|
-
See [
|
|
36
|
+
Apply placement with `setVerticalBarsLayout` and posture with `applyFoldStateClasses`, both imported from the theme. Read the initial state as well as subscribing to changes. See [device layout and split panes](vertical-bars-layout.md#read-the-device-layout) and [rail projection](../../capacitor-native-ui/docs/vertical-bars.md#use-with-capacitor-foldable) for the current setup. Installing the packages alone does not subscribe to device events or activate projection.
|
|
29
37
|
|
|
30
38
|
## From the iOS 26 theme
|
|
31
39
|
|
|
32
|
-
For an app using `@rdlabo/ionic-theme-ios26`, the recommended migration keeps that package and adds `@rdlabo/ionic-theme-ios27`. The [
|
|
40
|
+
For an app using `@rdlabo/ionic-theme-ios26`, the recommended migration keeps that package and adds `@rdlabo/ionic-theme-ios27`. The [adaptive theme setup](adaptive-themes.md) selects iOS 27 or iOS 26 styles by browser capability and leaves Ionic's default iOS appearance on older browsers.
|
|
33
41
|
|
|
34
42
|
### 1. Add the new package
|
|
35
43
|
|
|
36
44
|
Keep the iOS 26 package and add iOS 27. The new theme requires `@ionic/core` 8.8.1 or later (Ionic 8 or 9).
|
|
37
45
|
|
|
38
46
|
```bash
|
|
39
|
-
npm install @rdlabo/ionic-theme-ios27
|
|
47
|
+
npm install @rdlabo/ionic-theme-ios27 @erkamyaman/capacitor-foldable
|
|
40
48
|
```
|
|
41
49
|
|
|
42
50
|
### 2. Make the styles adaptive
|
|
@@ -127,17 +135,20 @@ To switch entirely to iOS 27, remove the iOS 26 package and replace its styleshe
|
|
|
127
135
|
+ @use '@rdlabo/ionic-theme-ios27/src/styles/md-remove-ios-class-effect.scss';
|
|
128
136
|
```
|
|
129
137
|
|
|
130
|
-
Change the animation import from `@rdlabo/ionic-theme-ios26` to `@rdlabo/ionic-theme-ios27`; the existing `isPlatform('ios')` configuration can stay. See the
|
|
138
|
+
Change the animation import from `@rdlabo/ionic-theme-ios26` to `@rdlabo/ionic-theme-ios27`; the existing `isPlatform('ios')` configuration can stay. See the [iOS 27 setup](setup.md). Unconditional imports apply the new styles on every browser using Ionic iOS mode.
|
|
131
139
|
|
|
132
140
|
## iOS 27 naming
|
|
133
141
|
|
|
134
142
|
For the iOS 27 branch or an iOS 27-only app, use `@rdlabo/ionic-theme-ios27`. Its stylesheets are `ionic-theme-ios27.scss` or `ionic-theme-ios27.css`, including the `-dark-always`, `-dark-system`, and `-dark-class` variants. Keep the iOS 26 stylesheet names in the iOS 26 branch of an adaptive setup.
|
|
135
143
|
|
|
136
|
-
|
|
144
|
+
| Customization | Current name | Legacy behavior |
|
|
145
|
+
| ------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
|
146
|
+
| CSS variables | `--ios-theme-*`, for example `--ios-theme-content-box-shadow-rgb` | Corresponding `--ios26-*` names remain deprecated fallbacks. Current names win when both are set. |
|
|
147
|
+
| Theme opt-out class | `ios-theme-disabled` | `ios26-disabled` remains a deprecated alias; migrate existing markup when convenient. |
|
|
137
148
|
|
|
138
|
-
|
|
149
|
+
Use the version-independent names for new customizations.
|
|
139
150
|
|
|
140
|
-
See [Special markup and classes](
|
|
151
|
+
See [Special markup and classes](special-markup.md) and [Default variables](../src/styles/default-variables.scss) for the current names.
|
|
141
152
|
|
|
142
153
|
Earlier migration notes are preserved in the [iOS 26 migration guide](https://docs.rdlabo.dev/projects/ionic-theme-ios26/docs/migration).
|
|
143
154
|
|
package/docs/setup.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Set up the iOS 27 theme
|
|
2
|
+
|
|
3
|
+
Give an existing Ionic app the iOS 27 appearance in four steps. This guide uses the iOS 27 theme on its own and system dark mode. For browser-dependent iOS 26/27 styling or MD3, use [adaptive themes](adaptive-themes.md) instead.
|
|
4
|
+
|
|
5
|
+
## Before you start
|
|
6
|
+
|
|
7
|
+
Use an existing Ionic Angular, React, or Vue application with Ionic `>=8.8.1 <10`. Keep Ionic's base CSS imports. Browser-only apps do not need a native Capacitor project.
|
|
8
|
+
|
|
9
|
+
## 1. Install the theme and Foldable
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
npm install @rdlabo/ionic-theme-ios27 @erkamyaman/capacitor-foldable
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
[Capacitor Foldable](https://github.com/erkamyaman/capacitor-foldable) is our standard integration for device state. Its placement and posture APIs let your app control how the layout adapts; installing it is followed by connecting its initial values and change events. Connect it using the [layout guide](vertical-bars-layout.md) when configuring device layout.
|
|
16
|
+
|
|
17
|
+
## 2. Load the styles
|
|
18
|
+
|
|
19
|
+
Add these imports to your global stylesheet after Ionic's base styles. Replace an existing Ionic dark palette import rather than loading multiple palettes:
|
|
20
|
+
|
|
21
|
+
```css
|
|
22
|
+
@import '@ionic/core/css/palettes/dark.system.css';
|
|
23
|
+
@import '@rdlabo/ionic-theme-ios27/dist/css/default-variables.css';
|
|
24
|
+
@import '@rdlabo/ionic-theme-ios27/dist/css/ionic-theme-ios27.css';
|
|
25
|
+
@import '@rdlabo/ionic-theme-ios27/dist/css/md-remove-ios-class-effect.css';
|
|
26
|
+
@import '@rdlabo/ionic-theme-ios27/dist/css/ionic-theme-ios27-dark-system.css';
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Choose one dark-mode pair
|
|
30
|
+
|
|
31
|
+
Use one matching Ionic palette and theme variant. Paths below are relative to `@ionic/core/css/palettes/` and `@rdlabo/ionic-theme-ios27/dist/css/` respectively.
|
|
32
|
+
|
|
33
|
+
| Mode | Ionic palette | Theme stylesheet | Activation |
|
|
34
|
+
| ---------------------- | ----------------- | ----------------------------------- | ----------------------------------------------- |
|
|
35
|
+
| System (example above) | `dark.system.css` | `ionic-theme-ios27-dark-system.css` | System appearance. |
|
|
36
|
+
| Manual | `dark.class.css` | `ionic-theme-ios27-dark-class.css` | Toggle `ion-palette-dark` on the document root. |
|
|
37
|
+
| Always dark | `dark.always.css` | `ionic-theme-ios27-dark-always.css` | Always active. |
|
|
38
|
+
|
|
39
|
+
If you also enable Native UI, these styles provide its light/dark appearance marker. Keep the Ionic palette and theme variant paired so Web and native controls agree. See [native appearance inheritance](../../capacitor-native-ui/docs/appearance.md) for the resolution order and shared rail behavior.
|
|
40
|
+
|
|
41
|
+
## 3. Configure Ionic animations
|
|
42
|
+
|
|
43
|
+
Set these options in your existing Ionic initialization, before rendering the app:
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
import { iosTransitionAnimation, popoverEnterAnimation, popoverLeaveAnimation } from '@rdlabo/ionic-theme-ios27';
|
|
47
|
+
|
|
48
|
+
const ionicConfig = {
|
|
49
|
+
mode: 'ios' as const,
|
|
50
|
+
navAnimation: iosTransitionAnimation,
|
|
51
|
+
popoverEnter: popoverEnterAnimation,
|
|
52
|
+
popoverLeave: popoverLeaveAnimation,
|
|
53
|
+
};
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
This example deliberately uses `ios` mode so desktop browsers show the theme too. Pass `ionicConfig` to the initializer your app already uses:
|
|
57
|
+
|
|
58
|
+
| Framework | Apply the options |
|
|
59
|
+
| ----------------- | ---------------------------------------------------------------------------- |
|
|
60
|
+
| Angular / Ionic 8 | `provideIonicAngular(ionicConfig)` imported from `@ionic/angular/standalone` |
|
|
61
|
+
| Angular / Ionic 9 | `provideIonicAngular(ionicConfig)` imported from `@ionic/angular` |
|
|
62
|
+
| React | `setupIonicReact(ionicConfig)` imported from `@ionic/react` |
|
|
63
|
+
| Vue | `app.use(IonicVue, ionicConfig)` with `IonicVue` from `@ionic/vue` |
|
|
64
|
+
|
|
65
|
+
Merge with existing options; do not initialize Ionic twice. To retain Material Design mode on Android, keep your platform-based mode selection and apply these animation options only to the iOS configuration. See [adaptive themes](adaptive-themes.md) for a complete platform-aware example.
|
|
66
|
+
|
|
67
|
+
## 4. Preview your first screen
|
|
68
|
+
|
|
69
|
+
Start your application's usual development server and open an existing page. Add this markup inside its `ion-content` (use your framework's component syntax):
|
|
70
|
+
|
|
71
|
+
```html
|
|
72
|
+
<ion-list inset="true">
|
|
73
|
+
<ion-item-group>
|
|
74
|
+
<ion-item><ion-label>Notifications</ion-label></ion-item>
|
|
75
|
+
<ion-item><ion-label>Appearance</ion-label></ion-item>
|
|
76
|
+
</ion-item-group>
|
|
77
|
+
</ion-list>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
You should see an inset group with rounded edges. Switch the system between light and dark appearance, then navigate between pages to see the theme transition. Read [Using ion-item-group](using-ion-item-group.md) for list structure.
|
|
81
|
+
|
|
82
|
+
| If you see… | Check… |
|
|
83
|
+
| ----------------------------------- | ------------------------------------------------------------- |
|
|
84
|
+
| Material Design controls on desktop | Set `mode: 'ios'` in the existing Ionic initializer. |
|
|
85
|
+
| Unstyled controls | Load the theme stylesheet globally after Ionic's base styles. |
|
|
86
|
+
| Mixed light and dark surfaces | Use one matching Ionic palette and theme dark-mode variant. |
|
|
87
|
+
| Default page transitions | Pass the animation options before Ionic initializes. |
|
|
88
|
+
|
|
89
|
+
## Next steps
|
|
90
|
+
|
|
91
|
+
- [Customize styles and components](features.md).
|
|
92
|
+
- [Add Native UI](add-native-ui.md) for supported controls in a Capacitor iOS app. Theme installation alone does not enable native controls.
|
|
93
|
+
- [Add Vertical Bars with an existing theme](../../capacitor-native-ui/docs/ionic-vertical-bars.md).
|
|
94
|
+
- [Migrate an existing app](migration.md).
|
package/docs/special-markup.md
CHANGED
|
@@ -28,15 +28,38 @@ buttons: [
|
|
|
28
28
|
];
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
Choose the role by action semantics:
|
|
32
|
+
|
|
33
|
+
| Role | Appearance and behavior |
|
|
34
|
+
| -------------------- | ------------------------------------------------------------------------------------------------- |
|
|
35
|
+
| `preferred` | Filled primary action; dismissal reports `preferred`. Does not automatically select or invoke it. |
|
|
36
|
+
| No role or `default` | Normal text color. |
|
|
37
|
+
| `cancel` | Retains Ionic's cancellation behavior. |
|
|
38
|
+
| `selected` | Retains selection state. |
|
|
39
|
+
| `destructive` | Uses `--ios-theme-destructive-color`. |
|
|
40
|
+
| `confirm` | Not treated as preferred. Use `preferred` for a recommended action, not simply any confirmation. |
|
|
32
41
|
|
|
33
42
|
## Floating iPad sheets
|
|
34
43
|
|
|
35
|
-
|
|
44
|
+
Choose the sheet's scrolling behavior with `expandToScroll`:
|
|
45
|
+
|
|
46
|
+
| Setting | iPad appearance | Scrolling and resizing |
|
|
47
|
+
| ---------------- | --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
48
|
+
| `false` | Floating lower corners and a 20px bottom gap. | Content scrolls within the current breakpoint; dragging the handle resizes the sheet. Ionic sizes the visible page at each breakpoint so CSS can style it. |
|
|
49
|
+
| `true` (default) | Ionic's bottom-attached layout. | Scroll-to-expand behavior. |
|
|
36
50
|
|
|
37
51
|
## Tab bar position
|
|
38
52
|
|
|
39
|
-
|
|
53
|
+
Choose a class on an iOS `ion-tab-bar` to position the whole bar within its safe area:
|
|
54
|
+
|
|
55
|
+
| Class | Placement |
|
|
56
|
+
| ------------------------- | ------------------------------- |
|
|
57
|
+
| `tab-bar-position-start` | Start of the reading direction. |
|
|
58
|
+
| `tab-bar-position-center` | Center. |
|
|
59
|
+
| `tab-bar-position-end` | End of the reading direction. |
|
|
60
|
+
| None | Existing placement unchanged. |
|
|
61
|
+
|
|
62
|
+
All three classes support `slot="top"` and `slot="bottom"`, preserve width and press animation, and resolve start/end in RTL.
|
|
40
63
|
|
|
41
64
|
```html
|
|
42
65
|
<ion-tab-bar slot="bottom" class="tab-bar-position-center">
|
|
@@ -47,15 +70,15 @@ Add one of `tab-bar-position-start`, `tab-bar-position-center`, or `tab-bar-posi
|
|
|
47
70
|
|
|
48
71
|
These classes do not reposition a separate `ion-fab`; leave room for it when choosing the bar's position.
|
|
49
72
|
|
|
50
|
-
## Support iPhone Duo
|
|
73
|
+
## Support iPhone Duo
|
|
51
74
|
|
|
52
|
-
iPhone Duo support, including standalone
|
|
75
|
+
iPhone Duo support, including standalone Vertical Bars, is stable starting with version 2.0.0.
|
|
53
76
|
|
|
54
|
-
iPhone Duo support — the vertical system rail, hinge posture, and the posture-driven split-pane layout — is independent of the iOS 27 theme and the full Native UI
|
|
77
|
+
iPhone Duo support — the vertical system rail, hinge posture, and the posture-driven split-pane layout — is independent of the iOS 27 theme and the full Native UI. See [Device layout and split panes](https://github.com/rdlabo-dev/ionic-theme-ios27/blob/main/packages/theme-ios27/docs/vertical-bars-layout.md) for the complete setup, including device-layout monitoring without a projection runtime.
|
|
55
78
|
|
|
56
|
-
See [Vertical Bars](https://
|
|
79
|
+
See [Vertical Bars](https://github.com/rdlabo-dev/ionic-theme-ios27/blob/main/packages/capacitor-native-ui/docs/vertical-bars.md) for rail layout classes, control eligibility and native button appearance.
|
|
57
80
|
|
|
58
|
-
For standalone setup while keeping your existing theme, see [iPhone Duo with your existing theme](https://
|
|
81
|
+
For standalone setup while keeping your existing theme, see [iPhone Duo with your existing theme](https://github.com/rdlabo-dev/ionic-theme-ios27/blob/main/packages/capacitor-native-ui/docs/ionic-vertical-bars.md).
|
|
59
82
|
|
|
60
83
|
## Two-line inset list items
|
|
61
84
|
|
|
@@ -115,7 +138,15 @@ For colored segments, use Ionic's `color` property (for example, `color="primary
|
|
|
115
138
|
|
|
116
139
|
Add `.segment-expand` when segment buttons should divide the available width evenly. The class also changes the Liquid Glass effect sizing when `registerSegmentEffect` is used.
|
|
117
140
|
|
|
118
|
-
|
|
141
|
+
### Segment size and press behavior
|
|
142
|
+
|
|
143
|
+
| Placement | Minimum height | Container behavior |
|
|
144
|
+
| ----------------------------------------- | -------------- | ---------------------------------------------------------------- |
|
|
145
|
+
| In content | 32px | Compact, flat background and indicator; outer bounds stay fixed. |
|
|
146
|
+
| Inside `ion-toolbar` | 48px | Glass container; outer container scales while pressed. |
|
|
147
|
+
| `.segment-expand`, including in a toolbar | 32px | Compact, flat background and indicator; outer bounds stay fixed. |
|
|
148
|
+
|
|
149
|
+
The optional moving glass lens is independent of the container's background.
|
|
119
150
|
|
|
120
151
|
```html preview
|
|
121
152
|
<ion-segment class="segment-expand" value="new">
|
|
@@ -178,4 +209,4 @@ Add `.ios-theme-disabled` to an individual Ionic component when it must retain I
|
|
|
178
209
|
<ion-button>iOS 27 theme</ion-button> <ion-button class="ios-theme-disabled">Standard Ionic button</ion-button>
|
|
179
210
|
```
|
|
180
211
|
|
|
181
|
-
For the background model behind inset lists, see [Using `ion-item-group`](
|
|
212
|
+
For the background model behind inset lists, see [Using `ion-item-group`](using-ion-item-group.md).
|
|
@@ -20,7 +20,7 @@ The examples use framework-neutral Web Component markup. In React or Vue, use th
|
|
|
20
20
|
|
|
21
21
|
No wrapper is required for lists that do not use `inset="true"`.
|
|
22
22
|
|
|
23
|
-
[Check list structure with ESLint](
|
|
23
|
+
[Check list structure with ESLint](eslint.md).
|
|
24
24
|
|
|
25
25
|
## Why the wrapper is required
|
|
26
26
|
|
|
@@ -44,4 +44,4 @@ When an application uses this package without `@rdlabo/ionic-theme-md3`, import
|
|
|
44
44
|
@import '@rdlabo/ionic-theme-ios27/dist/css/md-ion-list-inset.css';
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
For two-line items and section-header groups, see [Special markup and classes](
|
|
47
|
+
For two-line items and section-header groups, see [Special markup and classes](special-markup.md).
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Vertical Bars layout
|
|
2
|
+
|
|
3
|
+
This optional theme stylesheet owns Web spacing and positioning around a vertical rail. It can be used with your existing theme without loading the full iOS 27 appearance. Native rendering and state synchronization are provided separately by [Capacitor Native UI](https://github.com/rdlabo-dev/ionic-theme-ios27/blob/main/packages/capacitor-native-ui/docs/vertical-bars.md).
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
npm install @rdlabo/ionic-theme-ios27 @erkamyaman/capacitor-foldable
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
@use '@rdlabo/ionic-theme-ios27/dist/css/vertical-bars.css';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The layout behavior below assumes this stylesheet is loaded. For native runtime setup and device placement, follow the [integration guide](https://github.com/rdlabo-dev/ionic-theme-ios27/blob/main/packages/capacitor-native-ui/docs/ionic-vertical-bars.md).
|
|
14
|
+
|
|
15
|
+
## Reserve the vertical rail
|
|
16
|
+
|
|
17
|
+
For device setup, use the installed Foldable plugin and apply its initial placement and events through `setVerticalBarsLayout`; follow the [standard Ionic rail setup](../../capacitor-native-ui/docs/ionic-vertical-bars.md). The classes below describe the stylesheet's layout inputs and optional browser simulation, not a manual device setup step.
|
|
18
|
+
|
|
19
|
+
Add `.ios-theme-vertical-bars` to `ion-app` to reserve the rail region on the physical right, or add `.ios-theme-vertical-bars-left` as well to use the physical left:
|
|
20
|
+
|
|
21
|
+
```html
|
|
22
|
+
<ion-app class="ios-theme-vertical-bars">...</ion-app>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The classes are physical — `-left` always means the physical left edge — because CSS and the native renderer work in physical coordinates. `setVerticalBarsLayout` applies the logical `verticalBarEdge` reported by the device plugin and resolves it through the document's direction, so an RTL app does not need its own conversion.
|
|
26
|
+
|
|
27
|
+
### Rail width
|
|
28
|
+
|
|
29
|
+
| Source | Reserved width |
|
|
30
|
+
| ---------------------------------------- | --------------------------------------------------------------------------------------------------- |
|
|
31
|
+
| Classes alone, including Chrome previews | `80px`; no native plugin required. |
|
|
32
|
+
| `setVerticalBarsLayout({ edge, inset })` | The supplied inset, even below `80px`. |
|
|
33
|
+
| Custom CSS preview | Override `--ios-theme-vertical-bars-safe-area-left` or `--ios-theme-vertical-bars-safe-area-right`. |
|
|
34
|
+
|
|
35
|
+
### Content and overlay layout
|
|
36
|
+
|
|
37
|
+
| Surface | Layout with the rail stylesheet |
|
|
38
|
+
| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
39
|
+
| Routers and component backgrounds | Remain full-viewport. |
|
|
40
|
+
| `ion-content` | Insets its scroll foreground. |
|
|
41
|
+
| `ion-toolbar` | Insets its container foreground. |
|
|
42
|
+
| `ion-fab` | Adjusts only when placed beside the system UI. |
|
|
43
|
+
| Full-width `ion-modal`, including sheets | Applies the foreground inset. With the runtime enabled, the topmost modal projects eligible toolbar controls into its own rail; sheet rails follow visible bounds as the breakpoint changes. |
|
|
44
|
+
| Centered modal | Keeps toolbar buttons and receives no page-rail inset. |
|
|
45
|
+
| `ion-menu` / `ion-popover` | Internal foreground components retain Ionic's standard safe-area handling, without the main-page conversion. |
|
|
46
|
+
| Menu beside the system UI | Keeps its full-viewport animation host; offsets only the visible container by the inset. |
|
|
47
|
+
| Menu on the opposite side | Unchanged. |
|
|
48
|
+
|
|
49
|
+
The corresponding Ionic safe-area variable is reset inside inset foreground components so descendants do not add the inset again.
|
|
50
|
+
|
|
51
|
+
Modal eligibility follows the visible dialog width, not hinge posture or modal type. Left and right remain physical coordinates in RTL; Ionic's `side="start"` and `side="end"` remain logical.
|
|
52
|
+
|
|
53
|
+
The mode is component-mode independent: an app can keep Ionic `mode: 'md'` on iOS and still enable Vertical Bars. No component needs `mode="ios"`.
|
|
54
|
+
|
|
55
|
+
## Layout API
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
import { setVerticalBarsLayout } from '@rdlabo/ionic-theme-ios27';
|
|
59
|
+
|
|
60
|
+
setVerticalBarsLayout({ edge: 'trailing', inset: 80 });
|
|
61
|
+
// Optionally supply a root element and explicit RTL boolean as the next arguments.
|
|
62
|
+
setVerticalBarsLayout({ edge: null }); // restore ordinary Web layout
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
The helper operates on Web CSS only and works without Capacitor or Native UI startup. The application supplies device state and owns subscriptions. Starting, disabling or destroying Native UI does not change these layout classes or the reserved inset. Unsupported native rails retain the chosen Web rail; choose `edge: null` explicitly if the application wants a horizontal layout instead.
|
|
66
|
+
|
|
67
|
+
## Read the device layout
|
|
68
|
+
|
|
69
|
+
The standard theme and Native UI setup commands install Foldable as a separate application dependency. After building your Web assets, sync the native project:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npx cap sync
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Use Capacitor 8.5 or later and build with Xcode 27.1 or newer for iPhone Duo's iOS 27.1 APIs. Foldable supplies placement and posture in the standard setup. Browser simulation can temporarily replace its subscription with fixed layout values. Do not import the plugin's `ionic-tabs.css` alongside this package's rail projection; both would reposition the same tabs.
|
|
76
|
+
|
|
77
|
+
After `ion-app` is mounted, pass device state to `applyFoldStateClasses`. The application owns subscriptions and cleanup. No projection runtime is needed for posture-driven layout.
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
import { Foldable } from '@erkamyaman/capacitor-foldable';
|
|
81
|
+
import { applyFoldStateClasses } from '@rdlabo/ionic-theme-ios27';
|
|
82
|
+
|
|
83
|
+
const root = document.querySelector('ion-app')!;
|
|
84
|
+
const listener = await Foldable.addListener('foldStateChange', (fold) => applyFoldStateClasses(root, fold));
|
|
85
|
+
applyFoldStateClasses(root, await Foldable.getFoldState());
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
When the application owner is disposed:
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
await listener.remove();
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Subscribe to changes, then read the current state. The same helper handles initial values and events.
|
|
95
|
+
|
|
96
|
+
### Posture classes
|
|
97
|
+
|
|
98
|
+
`applyFoldStateClasses` updates the supplied root while preserving unrelated classes:
|
|
99
|
+
|
|
100
|
+
| Class | Applied when |
|
|
101
|
+
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
|
|
102
|
+
| `ios-theme-fold-flat` | Flat posture. |
|
|
103
|
+
| `ios-theme-fold-half-opened` | Half-opened posture. |
|
|
104
|
+
| `ios-theme-fold-closed` | Closed posture. |
|
|
105
|
+
| `ios-theme-fold-expanded` | Half-opened, or flat with hinge geometry. Cleared for flat without geometry (including Web fallback) and closed posture. |
|
|
106
|
+
|
|
107
|
+
Only one of the first three classes is retained. The helper does not subscribe to the plugin or change Ionic's split-pane `when` property.
|
|
108
|
+
|
|
109
|
+
## Adapt the split pane
|
|
110
|
+
|
|
111
|
+
For a side-by-side menu on iPhone Duo, opt the `ion-split-pane` into the separately measured Settings layout. The sidebar is 320pt when fully unfolded and reaches the display midpoint when half-opened (50vw). The application supplies the posture; both states have the same viewport width, so a width media query cannot distinguish them:
|
|
112
|
+
|
|
113
|
+
```html
|
|
114
|
+
<ion-split-pane class="split-pane-fold-layout" contentId="main-content" when="(min-width: 900px)">
|
|
115
|
+
<ion-menu contentId="main-content">...</ion-menu>
|
|
116
|
+
<div id="main-content">...</div>
|
|
117
|
+
</ion-split-pane>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Set the ordinary split-pane width to 320pt in the application's stylesheet, and let the half-open class change only the width value:
|
|
121
|
+
|
|
122
|
+
```css
|
|
123
|
+
ion-split-pane.split-pane-fold-layout {
|
|
124
|
+
--ios-theme-menu-width: var(--ios-theme-split-pane-width);
|
|
125
|
+
--side-width: var(--ios-theme-menu-width);
|
|
126
|
+
--side-max-width: var(--ios-theme-menu-width);
|
|
127
|
+
transition: --ios-theme-split-pane-width 300ms ease;
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
The registered `--ios-theme-split-pane-width` defaults to `320px`. `applyFoldStateClasses` sets `ios-theme-fold-half-opened` on `ion-app`; the stylesheet then sets only descendant split panes with `split-pane-fold-layout` to `50vw`. Add this opt-in class once; no state-dependent class binding is needed. Other split panes retain their existing width.
|
|
132
|
+
|
|
133
|
+
Ionic's `when` still controls whether the menu is persistent. The example chooses a fixed 900px breakpoint. If your app needs different breakpoints for folded and ordinary displays, use the `ios-theme-fold-expanded` class applied by the helper to select that policy in your application's layout code. The helper only updates state classes, not `when`. This layout does not enable Vertical Bars or move an overlay menu.
|
|
134
|
+
|
|
135
|
+
## Migration
|
|
136
|
+
|
|
137
|
+
Move `setVerticalControlAreaPlacement` calls from the plugin to `setVerticalBarsLayout({ edge, inset })` from the theme. Move `applyFoldStateClasses` imports to the theme too. Remove `nativeEdge`: it no longer reports availability. The old plugin helpers are deprecated; update existing imports using the [migration guide](../../capacitor-native-ui/docs/migration.md#web-layout-ownership).
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rdlabo/ionic-theme-ios27",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "2.0.0-2",
|
|
5
5
|
"description": "iOS27 Theme for Ionic Framework",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.js",
|
|
@@ -12,40 +12,25 @@
|
|
|
12
12
|
"import": "./dist/index.js"
|
|
13
13
|
},
|
|
14
14
|
"./dist/css/*": "./dist/css/*",
|
|
15
|
-
"./src/styles/*": "./src/styles/*"
|
|
16
|
-
"./native": {
|
|
17
|
-
"types": "./dist/native/index.d.ts",
|
|
18
|
-
"import": "./dist/native/index.js"
|
|
19
|
-
},
|
|
20
|
-
"./vertical-bars": {
|
|
21
|
-
"types": "./dist/vertical-bars.d.ts",
|
|
22
|
-
"import": "./dist/vertical-bars.js"
|
|
23
|
-
}
|
|
15
|
+
"./src/styles/*": "./src/styles/*"
|
|
24
16
|
},
|
|
25
17
|
"files": [
|
|
26
18
|
"dist",
|
|
27
19
|
"src",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"Package.swift"
|
|
20
|
+
"LICENSE",
|
|
21
|
+
"README.md",
|
|
22
|
+
"docs"
|
|
32
23
|
],
|
|
33
24
|
"scripts": {
|
|
34
|
-
"build": "npm run docgen && npm run build:css && npm run build:ts",
|
|
35
25
|
"prebuild:css": "rdlabo-copy-structured-list src/styles/utils/structured-list.scss",
|
|
36
26
|
"build:css": "rm -rf dist/css && sass src/styles:dist/css --style=compressed --no-source-map",
|
|
37
27
|
"build:ts": "tsc --noEmit && rdlabo-build-theme",
|
|
38
|
-
"
|
|
39
|
-
"build:demo": "npm run build && cd demo && npm install && npm run build -- --configuration=production",
|
|
40
|
-
"lint": "prettier --check \"./**/*.{scss,ts}\" && prettier --parser angular --check \"./**/*.html\"",
|
|
41
|
-
"fmt": "prettier --write \"./**/*.{scss,ts}\" && prettier --parser angular --write \"./**/*.html\"",
|
|
42
|
-
"release": "np --no-tests --no-publish",
|
|
43
|
-
"prepublishOnly": "npm run build",
|
|
44
|
-
"test:esm": "rdlabo-check-esm"
|
|
28
|
+
"build": "rm -rf dist && npm run build:css && npm run build:ts"
|
|
45
29
|
},
|
|
46
30
|
"repository": {
|
|
47
31
|
"type": "git",
|
|
48
|
-
"url": "git+ssh://git@github.com/rdlabo-dev/ionic-theme-ios27.git"
|
|
32
|
+
"url": "git+ssh://git@github.com/rdlabo-dev/ionic-theme-ios27.git",
|
|
33
|
+
"directory": "packages/theme-ios27"
|
|
49
34
|
},
|
|
50
35
|
"keywords": [
|
|
51
36
|
"ionic",
|
|
@@ -61,20 +46,10 @@
|
|
|
61
46
|
},
|
|
62
47
|
"homepage": "https://docs.rdlabo.dev/projects/ionic-theme-ios27",
|
|
63
48
|
"dependencies": {
|
|
64
|
-
"@rdlabo/
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
"
|
|
68
|
-
"@ionic/angular": "^9.0.0",
|
|
69
|
-
"@rdlabo/capacitor-docgen": "^0.4.1",
|
|
70
|
-
"husky": "^9.1.7",
|
|
71
|
-
"lint-staged": "^16.2.1",
|
|
72
|
-
"np": "^10.2.0",
|
|
73
|
-
"prettier": "^3.6.2",
|
|
74
|
-
"sass": "^1.93.2",
|
|
75
|
-
"tsdown": "^0.23.0",
|
|
76
|
-
"typescript": "^5.9.3",
|
|
77
|
-
"wrangler": "^4.125.0"
|
|
49
|
+
"@rdlabo/capacitor-native-ui": "2.0.0-2",
|
|
50
|
+
"@rdlabo/ionic-theme-utils": "0.1.4",
|
|
51
|
+
"@stencil/core": "^4.43.5",
|
|
52
|
+
"ionicons": "^8.1.0"
|
|
78
53
|
},
|
|
79
54
|
"peerDependencies": {
|
|
80
55
|
"@capacitor/core": ">=8.0.0 <9",
|
|
@@ -85,10 +60,5 @@
|
|
|
85
60
|
"optional": true
|
|
86
61
|
}
|
|
87
62
|
},
|
|
88
|
-
"capacitor": {
|
|
89
|
-
"ios": {
|
|
90
|
-
"src": "ios"
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
63
|
"type": "module"
|
|
94
64
|
}
|
package/src/index.ts
CHANGED
|
@@ -8,7 +8,7 @@ export {
|
|
|
8
8
|
export * from './tab-bar-searchable';
|
|
9
9
|
export * from './searchbar';
|
|
10
10
|
export * from './transition/ios.transition';
|
|
11
|
-
export {
|
|
11
|
+
export { withNativeUITransition } from './transition/native-ui';
|
|
12
12
|
export { registerSegmentEffect } from './segment';
|
|
13
13
|
|
|
14
14
|
export const registerTabBarEffect = (targetElement: HTMLElement): registeredEffect | undefined => {
|
|
@@ -75,3 +75,5 @@ export const registerTabBarEffect = (targetElement: HTMLElement): registeredEffe
|
|
|
75
75
|
},
|
|
76
76
|
};
|
|
77
77
|
};
|
|
78
|
+
|
|
79
|
+
export { setVerticalBarsLayout, applyFoldStateClasses, type VerticalBarsLayout, type FoldState } from './layout';
|