@rdlabo/ionic-theme-ios27 0.1.0-beta.pr153.sha1c3caf4dc12b → 0.1.0
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 +3 -3
- package/dist/css/components/ion-action-sheet.css +1 -1
- package/dist/css/components/ion-alert.css +1 -1
- package/dist/css/components/ion-button.css +1 -1
- package/dist/css/components/ion-card.css +1 -1
- package/dist/css/components/ion-fab.css +1 -1
- package/dist/css/components/ion-list.css +1 -1
- package/dist/css/components/ion-menu.css +1 -1
- package/dist/css/components/ion-modal.css +1 -1
- package/dist/css/components/ion-popover.css +1 -1
- package/dist/css/components/ion-range.css +1 -1
- package/dist/css/components/ion-segment.css +1 -1
- package/dist/css/components/ion-tabs.css +1 -1
- package/dist/css/components/ion-toast.css +1 -1
- package/dist/css/components/ion-toolbar.css +1 -1
- package/dist/css/default-variables.css +1 -1
- package/dist/css/ionic-theme-ios27-dark-always.css +1 -1
- package/dist/css/ionic-theme-ios27-dark-class.css +1 -1
- package/dist/css/ionic-theme-ios27-dark-system.css +1 -1
- package/dist/css/ionic-theme-ios27.css +1 -1
- package/dist/css/md-ion-list-inset.css +1 -1
- package/dist/css/utils/dark/ion-list.css +1 -0
- package/dist/css/utils/group-heading.css +1 -0
- package/dist/native/components/searchable-tabs.d.ts.map +1 -1
- package/dist/native/components/searchable-tabs.js +9 -1
- package/dist/native/definitions.d.ts +4 -0
- package/dist/native/definitions.d.ts.map +1 -1
- package/dist/native/runtime.d.ts.map +1 -1
- package/dist/native/runtime.js +51 -27
- package/dist/native/shared/candidate.d.ts.map +1 -1
- package/dist/native/shared/candidate.js +17 -0
- package/dist/native/shared/crossfade.d.ts +8 -0
- package/dist/native/shared/crossfade.d.ts.map +1 -0
- package/dist/native/shared/crossfade.js +46 -0
- package/dist/native/shared/dom.d.ts.map +1 -1
- package/dist/native/shared/dom.js +2 -1
- package/dist/popover/animations/ios.enter.d.ts.map +1 -1
- package/dist/popover/animations/ios.enter.js +105 -9
- package/dist/popover/animations/ios.leave.d.ts.map +1 -1
- package/dist/popover/animations/ios.leave.js +15 -1
- package/dist/popover/callout-surface.d.ts +2 -0
- package/dist/popover/callout-surface.d.ts.map +1 -0
- package/dist/popover/callout-surface.js +44 -0
- package/dist/sheets-of-glass/index.js +2 -1
- package/dist/transition/ios.transition.d.ts.map +1 -1
- package/dist/transition/ios.transition.js +0 -223
- package/docs/experimental-animation.md +3 -3
- package/docs/features.md +7 -2
- package/docs/native-ui-shell.md +14 -5
- package/docs/special-markup.md +17 -0
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellButton.swift +7 -2
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellSearchController.swift +10 -0
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellSegment.swift +47 -15
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellTabBar.swift +42 -7
- package/ios/Sources/IonicNativeUIShellPlugin/IonicNativeUIShellPlugin.swift +13 -6
- package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellCrossfade.swift +35 -0
- package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellSnapshot.swift +6 -1
- package/ios/Tests/IonicNativeUIShellPluginTests/ShellSnapshotTests.swift +59 -0
- package/package.json +1 -1
- package/src/native/components/searchable-tabs.ts +12 -1
- package/src/native/definitions.ts +4 -0
- package/src/native/runtime.ts +54 -31
- package/src/native/shared/candidate.ts +19 -0
- package/src/native/shared/crossfade.ts +49 -0
- package/src/native/shared/dom.ts +4 -1
- package/src/popover/animations/ios.enter.ts +123 -10
- package/src/popover/animations/ios.leave.ts +15 -1
- package/src/popover/callout-surface.ts +54 -0
- package/src/sheets-of-glass/index.ts +2 -2
- package/src/styles/components/ion-action-sheet.scss +35 -17
- package/src/styles/components/ion-alert.scss +51 -31
- package/src/styles/components/ion-button.scss +4 -7
- package/src/styles/components/ion-card.scss +64 -3
- package/src/styles/components/ion-fab.scss +3 -5
- package/src/styles/components/ion-list.scss +14 -1
- package/src/styles/components/ion-menu.scss +19 -7
- package/src/styles/components/ion-modal.scss +63 -14
- package/src/styles/components/ion-popover.scss +52 -9
- package/src/styles/components/ion-range.scss +49 -50
- package/src/styles/components/ion-segment.scss +15 -16
- package/src/styles/components/ion-tabs.scss +73 -13
- package/src/styles/components/ion-toast.scss +16 -25
- package/src/styles/components/ion-toolbar.scss +17 -1
- package/src/styles/default-variables.scss +4 -0
- package/src/styles/utils/_glass.scss +96 -0
- package/src/styles/utils/api.scss +46 -4
- package/src/styles/utils/dark/ion-button.scss +13 -0
- package/src/styles/utils/dark/ion-fab.scss +9 -0
- package/src/styles/utils/dark/ion-list.scss +7 -0
- package/src/styles/utils/dark/ion-segment.scss +8 -3
- package/src/styles/utils/dark/ion-tabs.scss +20 -0
- package/src/styles/utils/group-heading.scss +5 -0
- package/src/styles/utils/structured-list.scss +68 -15
- package/src/styles/utils/theme-dark.scss +23 -0
- package/src/transition/ios.transition.ts +0 -487
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
:root {
|
|
13
13
|
// Internal native appearance signal; follows the same cascade as the theme.
|
|
14
14
|
--ios27-color-scheme: light;
|
|
15
|
+
// Destructive overlay actions, independent of the application danger palette.
|
|
16
|
+
--ios-theme-destructive-color: #ea292d;
|
|
15
17
|
--ios26-floating-safe-area-top: max(10px, var(--ion-safe-area-top, 0px));
|
|
16
18
|
--ios26-floating-safe-area-bottom: max(10px, calc(var(--ion-safe-area-bottom, 0px) - 12px));
|
|
17
19
|
|
|
@@ -24,6 +26,8 @@
|
|
|
24
26
|
--ios27-button-color-selected-default-rgb: 16, 16, 16;
|
|
25
27
|
|
|
26
28
|
--ios26-menu-width: 360px;
|
|
29
|
+
// iPadOS 27 sidebar tint, composited at 96% over the page background.
|
|
30
|
+
--ios-theme-menu-background-rgb: 225, 230, 240;
|
|
27
31
|
|
|
28
32
|
/**
|
|
29
33
|
* `--ios26-color-background-rgb` is deprecated.
|
|
@@ -1,3 +1,63 @@
|
|
|
1
|
+
$_control-surface: linear-gradient(
|
|
2
|
+
180deg,
|
|
3
|
+
rgba(var(--ion-text-color-rgb, 0, 0, 0), 0) 4%,
|
|
4
|
+
rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.01) 8%,
|
|
5
|
+
rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.024) 16%,
|
|
6
|
+
rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.027) 22%,
|
|
7
|
+
rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.026) 28%,
|
|
8
|
+
rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.018) 36%,
|
|
9
|
+
rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.024) 44%,
|
|
10
|
+
rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.024) 50%,
|
|
11
|
+
rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.024) 58%,
|
|
12
|
+
rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.008) 80%,
|
|
13
|
+
rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.006) 88%,
|
|
14
|
+
rgba(var(--ion-text-color-rgb, 0, 0, 0), 0) 94%
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
// Shared defaults can be assigned to Ionic's public --box-shadow property.
|
|
18
|
+
@mixin light-shadow($property: box-shadow) {
|
|
19
|
+
$light: var(--ios-theme-glass-border-color-rgb, var(--ios26-glass-border-color-rgb));
|
|
20
|
+
$shade: var(--ion-text-color-rgb, 0, 0, 0);
|
|
21
|
+
#{$property}:
|
|
22
|
+
inset 0 1px 2px rgba($light, 0.25),
|
|
23
|
+
inset 0 -1px 2px rgba($light, 0.3),
|
|
24
|
+
0 -0.5px 0 rgba($light, 0.65),
|
|
25
|
+
0 0.5px 0 rgba($light, 0.65),
|
|
26
|
+
0 0 0 0.5px rgba($shade, 0.22),
|
|
27
|
+
0 0.5px 1px rgba($shade, 0.08);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@mixin dark-shadow($property: box-shadow) {
|
|
31
|
+
$light: var(--ion-text-color-rgb, 255, 255, 255);
|
|
32
|
+
#{$property}:
|
|
33
|
+
inset 0 0.5px 1px rgba($light, 0.2),
|
|
34
|
+
inset 0 -0.5px 1px rgba($light, 0.2);
|
|
35
|
+
@supports (background-clip: border-area) {
|
|
36
|
+
#{$property}: none;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@mixin light-rim($shadow: null) {
|
|
41
|
+
$light: var(--ios-theme-glass-border-color-rgb, var(--ios26-glass-border-color-rgb));
|
|
42
|
+
@if $shadow == null {
|
|
43
|
+
@include light-shadow;
|
|
44
|
+
} @else {
|
|
45
|
+
box-shadow: $shadow;
|
|
46
|
+
}
|
|
47
|
+
border: 0.5px solid rgb($light);
|
|
48
|
+
background-image: $_control-surface;
|
|
49
|
+
background-origin: padding-box;
|
|
50
|
+
background-clip: border-box;
|
|
51
|
+
border-inline-color: transparent;
|
|
52
|
+
@supports (background-clip: border-area) {
|
|
53
|
+
border-color: transparent;
|
|
54
|
+
background-image:
|
|
55
|
+
linear-gradient(180deg, rgb($light), transparent 50%, rgb($light)), $_control-surface, linear-gradient(transparent, transparent);
|
|
56
|
+
background-origin: border-box, padding-box, border-box;
|
|
57
|
+
background-clip: border-area, padding-box, border-box;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
1
61
|
// Shared pressed-surface declarations used by the button and legacy FAB recipes.
|
|
2
62
|
@mixin pressed-surface($border-colors, $shadow: null, $blur: 7px, $saturate: 180%) {
|
|
3
63
|
backdrop-filter: blur($blur) saturate($saturate);
|
|
@@ -13,3 +73,39 @@
|
|
|
13
73
|
-webkit-backface-visibility: hidden;
|
|
14
74
|
backface-visibility: hidden;
|
|
15
75
|
}
|
|
76
|
+
|
|
77
|
+
// iPadOS dark Glass: a vertical light source, with no illuminated side rim.
|
|
78
|
+
// Keep the material under the border so transparent side edges do not cut it out.
|
|
79
|
+
@mixin dark-rim($shadow: null) {
|
|
80
|
+
$light: var(--ion-text-color-rgb, 255, 255, 255);
|
|
81
|
+
$inner: linear-gradient(
|
|
82
|
+
180deg,
|
|
83
|
+
rgba($light, 0.14),
|
|
84
|
+
rgba($light, 0.04) 1px,
|
|
85
|
+
transparent 6px,
|
|
86
|
+
transparent calc(100% - 6px),
|
|
87
|
+
rgba($light, 0.04) calc(100% - 1px),
|
|
88
|
+
rgba($light, 0.14)
|
|
89
|
+
);
|
|
90
|
+
border-color: transparent;
|
|
91
|
+
background-image: $inner;
|
|
92
|
+
background-origin: padding-box;
|
|
93
|
+
background-clip: border-box;
|
|
94
|
+
@if $shadow == null {
|
|
95
|
+
@include dark-shadow;
|
|
96
|
+
} @else {
|
|
97
|
+
box-shadow: $shadow;
|
|
98
|
+
}
|
|
99
|
+
@supports (background-clip: border-area) {
|
|
100
|
+
background-image:
|
|
101
|
+
linear-gradient(180deg, rgba($light, 0.24), transparent 35%, transparent 65%, rgba($light, 0.24)), $inner,
|
|
102
|
+
linear-gradient(transparent, transparent);
|
|
103
|
+
background-origin: border-box, padding-box, border-box;
|
|
104
|
+
background-clip: border-area, padding-box, border-box;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// One resting dark material for hosts and Shadow DOM background properties.
|
|
109
|
+
@mixin dark-fill($property: background-color) {
|
|
110
|
+
#{$property}: rgba(var(--ios-theme-glass-background-rgb, var(--ios26-glass-background-rgb)), 0.5);
|
|
111
|
+
}
|
|
@@ -85,6 +85,16 @@ $_glass-surface: linear-gradient(
|
|
|
85
85
|
backface-visibility: hidden;
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
// Resting Glass controls use one material; lenses and existing Sass callers
|
|
89
|
+
// retain glass-background's original options and rendering.
|
|
90
|
+
@mixin glass-control-background($include-background: true, $shadow: null) {
|
|
91
|
+
@include glass-background($include-background: false, $include-border: false, $include-box-shadow: false);
|
|
92
|
+
@if $include-background {
|
|
93
|
+
background-color: rgba(var(--ios-theme-glass-background-rgb, var(--ios26-glass-background-rgb)), 0.72);
|
|
94
|
+
}
|
|
95
|
+
@include glass.light-rim($shadow);
|
|
96
|
+
}
|
|
97
|
+
|
|
88
98
|
@mixin glass-background-button-activated {
|
|
89
99
|
background-color: rgba(var(--ios-theme-glass-background-rgb, var(--ios26-glass-background-rgb)), 0.96);
|
|
90
100
|
border-color: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.12) rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.32)
|
|
@@ -156,15 +166,47 @@ $_glass-surface: linear-gradient(
|
|
|
156
166
|
|
|
157
167
|
@mixin glass-background-overlay-button {
|
|
158
168
|
transition: background 0.2s ease;
|
|
159
|
-
background:
|
|
169
|
+
background: var(--ion-background-color-step-200, var(--ion-color-step-200, #cccccc));
|
|
160
170
|
&.ion-activated {
|
|
161
|
-
background: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.
|
|
171
|
+
background: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.06);
|
|
162
172
|
}
|
|
163
173
|
}
|
|
164
174
|
|
|
165
175
|
@mixin glass-background-overlay-button-variable {
|
|
166
|
-
--button-background:
|
|
176
|
+
--button-background: var(--ion-background-color-step-200, var(--ion-color-step-200, #cccccc));
|
|
177
|
+
&.ion-activated {
|
|
178
|
+
--button-background: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.06);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Filled emphasis for the recommended action in presented overlays.
|
|
183
|
+
@mixin glass-overlay-preferred-button($background-property: background, $color-property: color) {
|
|
184
|
+
#{$background-property}: var(--ion-color-primary, #0054e9);
|
|
185
|
+
#{$color-property}: var(--ion-color-primary-contrast, #fff);
|
|
167
186
|
&.ion-activated {
|
|
168
|
-
|
|
187
|
+
#{$background-property}: var(--ion-color-primary-shade, #004acd);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// Shared material for presented surfaces. Keep transforms owned by Ionic animations.
|
|
192
|
+
@mixin glass-overlay-variables($shadow-opacity: 0.15) {
|
|
193
|
+
--background: rgba(var(--ios-theme-glass-background-rgb, var(--ios26-glass-background-rgb)), 0.67);
|
|
194
|
+
--border-color: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.18);
|
|
195
|
+
--border-style: solid;
|
|
196
|
+
--border-width: 0.5px;
|
|
197
|
+
--box-shadow:
|
|
198
|
+
inset 0 0.5px 1px rgba(var(--ios-theme-glass-border-color-rgb, var(--ios26-glass-border-color-rgb)), 0.6),
|
|
199
|
+
0 12px 32px color-mix(in srgb, var(--ion-box-shadow-color, #000) #{$shadow-opacity * 100%}, transparent);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
@mixin glass-overlay-surface($include-background: true, $include-frame: true) {
|
|
203
|
+
@if $include-background {
|
|
204
|
+
background: var(--background);
|
|
205
|
+
}
|
|
206
|
+
@if $include-frame {
|
|
207
|
+
border: var(--border-width) var(--border-style) var(--border-color);
|
|
208
|
+
box-shadow: var(--box-shadow);
|
|
169
209
|
}
|
|
210
|
+
backdrop-filter: blur(20px) saturate(180%);
|
|
211
|
+
-webkit-backdrop-filter: blur(20px) saturate(180%);
|
|
170
212
|
}
|
|
@@ -14,6 +14,11 @@
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
@mixin theme-dark-buttons {
|
|
17
|
+
&:not(:has(.ion-activated)) {
|
|
18
|
+
@include glass.dark-fill;
|
|
19
|
+
@include glass.dark-rim;
|
|
20
|
+
}
|
|
21
|
+
|
|
17
22
|
&:has(.ion-activated) {
|
|
18
23
|
@include pressed-glass;
|
|
19
24
|
}
|
|
@@ -40,6 +45,14 @@
|
|
|
40
45
|
}
|
|
41
46
|
|
|
42
47
|
@mixin theme-dark-button {
|
|
48
|
+
&:not(.ion-activated):not(.button-solid):not(.button-outline):not(.button-clear) {
|
|
49
|
+
@include glass.dark-fill('--background');
|
|
50
|
+
@include glass.dark-shadow('--box-shadow');
|
|
51
|
+
&::part(native) {
|
|
52
|
+
@include glass.dark-rim(var(--box-shadow));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
43
56
|
&.ion-activated:not(.button-solid):not(.button-outline):not(.button-clear) {
|
|
44
57
|
--background: rgba(
|
|
45
58
|
var(--ios-theme-button-color-selected-rgb, var(--ios26-button-color-selected-rgb, var(--ios27-button-color-selected-default-rgb))),
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
@use '../api';
|
|
2
|
+
@use '../glass';
|
|
2
3
|
|
|
3
4
|
@mixin ion-fab {
|
|
4
5
|
ion-fab.ios:not(.ios-theme-disabled, .ios26-disabled) {
|
|
5
6
|
ion-fab-button {
|
|
7
|
+
&:not(.ion-activated) {
|
|
8
|
+
@include glass.dark-fill('--background');
|
|
9
|
+
@include glass.dark-shadow('--box-shadow');
|
|
10
|
+
&::part(native) {
|
|
11
|
+
@include glass.dark-rim(var(--box-shadow));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
6
15
|
&.ion-activated {
|
|
7
16
|
&::part(native) {
|
|
8
17
|
@include api.glass-background-button-activated-dark($include-background: false);
|
|
@@ -2,12 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
@mixin ion-segment {
|
|
4
4
|
ion-segment.ios:not(.ios-theme-disabled, .ios26-disabled) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
--indicator-color: var(--ios27-segment-selected-background, rgba(0, 0, 0, 0.72));
|
|
5
|
+
ion-segment-button.segment-button-disabled {
|
|
6
|
+
opacity: 0.15;
|
|
8
7
|
}
|
|
9
8
|
.ios27-segment-edge {
|
|
10
9
|
@include api.glass-lens-dark;
|
|
11
10
|
}
|
|
12
11
|
}
|
|
12
|
+
:where(ion-segment.ios:not(.ios-theme-disabled, .ios26-disabled)) {
|
|
13
|
+
--background: rgba(var(--ion-color-medium-rgb, 152, 154, 162), 0.19);
|
|
14
|
+
}
|
|
15
|
+
:where(ion-segment.ios:not(.ios-theme-disabled, .ios26-disabled, .ion-color) ion-segment-button:not(.ion-color, .in-segment-color)) {
|
|
16
|
+
--indicator-color: color-mix(in srgb, rgb(var(--ion-color-medium-rgb, 152, 154, 162)) 59%, var(--ion-background-color, #000));
|
|
17
|
+
}
|
|
13
18
|
}
|
|
@@ -1,4 +1,24 @@
|
|
|
1
|
+
@use '../glass';
|
|
2
|
+
|
|
1
3
|
@mixin ion-tabs {
|
|
4
|
+
ion-tab-bar.ios:not(.ios-theme-disabled, .ios26-disabled) {
|
|
5
|
+
--color: rgb(var(--ion-text-color-rgb, 255, 255, 255));
|
|
6
|
+
--background: color-mix(
|
|
7
|
+
in srgb,
|
|
8
|
+
color-mix(
|
|
9
|
+
in srgb,
|
|
10
|
+
rgb(var(--ios-theme-glass-background-rgb, var(--ios26-glass-background-rgb))) 92%,
|
|
11
|
+
rgb(var(--ion-text-color-rgb, 255, 255, 255))
|
|
12
|
+
)
|
|
13
|
+
40%,
|
|
14
|
+
transparent
|
|
15
|
+
);
|
|
16
|
+
&::before {
|
|
17
|
+
@include glass.dark-rim;
|
|
18
|
+
backdrop-filter: blur(6px) saturate(150%) brightness(1.23);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
2
22
|
ion-tab-button.ios:not(.ios-theme-disabled, .ios26-disabled) {
|
|
3
23
|
--ios27-tab-selected-background: rgba(
|
|
4
24
|
var(--ios-theme-button-color-selected-rgb, var(--ios26-button-color-selected-rgb, 0, 0, 0)),
|
|
@@ -1,5 +1,26 @@
|
|
|
1
|
+
@use './group-heading';
|
|
2
|
+
|
|
1
3
|
$groups: ion-item-group, ion-reorder-group, ion-accordion-group, ion-radio-group;
|
|
2
4
|
|
|
5
|
+
// Derive neutral list colors from the application's Ionic medium palette.
|
|
6
|
+
@mixin colors($supporting-opacity, $detail-opacity) {
|
|
7
|
+
ion-item {
|
|
8
|
+
--detail-icon-color: rgb(var(--ion-color-medium-rgb));
|
|
9
|
+
--detail-icon-opacity: #{$detail-opacity};
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
&.list-inset {
|
|
13
|
+
ion-list-header ion-label:not(.ion-color) {
|
|
14
|
+
color: rgba(var(--ion-color-medium-rgb), $supporting-opacity);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
ion-list-header ion-note:not(.ion-color),
|
|
18
|
+
> ion-note:not(.ion-color) {
|
|
19
|
+
--color: rgba(var(--ion-color-medium-rgb), #{$supporting-opacity});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
3
24
|
@mixin support-text() {
|
|
4
25
|
ion-item {
|
|
5
26
|
&:has(ion-input.input-fill-outline),
|
|
@@ -26,7 +47,9 @@ $groups: ion-item-group, ion-reorder-group, ion-accordion-group, ion-radio-group
|
|
|
26
47
|
align-items: center;
|
|
27
48
|
|
|
28
49
|
ion-label {
|
|
29
|
-
font-size:
|
|
50
|
+
font-size: 1rem;
|
|
51
|
+
line-height: 1.29rem;
|
|
52
|
+
font-weight: 600;
|
|
30
53
|
margin: 8px 4px 4px;
|
|
31
54
|
|
|
32
55
|
&:not(.ion-color) {
|
|
@@ -39,17 +62,35 @@ $groups: ion-item-group, ion-reorder-group, ion-accordion-group, ion-radio-group
|
|
|
39
62
|
}
|
|
40
63
|
|
|
41
64
|
ion-note {
|
|
42
|
-
font-size: 0.
|
|
65
|
+
font-size: 0.76rem;
|
|
66
|
+
line-height: 1.06rem;
|
|
67
|
+
font-weight: 400;
|
|
43
68
|
margin: 8px 16px 4px 0;
|
|
69
|
+
|
|
70
|
+
&:not(.ion-color) {
|
|
71
|
+
--color: var(--ion-color-medium-tint);
|
|
72
|
+
}
|
|
44
73
|
}
|
|
45
74
|
}
|
|
46
75
|
|
|
47
76
|
ion-item-group.item-group-header {
|
|
77
|
+
border-radius: $group-border-radius;
|
|
78
|
+
|
|
79
|
+
> ion-item {
|
|
80
|
+
--inner-padding-end: 0;
|
|
81
|
+
--inner-border-width: 0;
|
|
82
|
+
|
|
83
|
+
&::part(native) {
|
|
84
|
+
padding-inline: 0;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
48
88
|
& > ion-item > ion-label {
|
|
49
89
|
width: 100%;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
90
|
+
margin: 0;
|
|
91
|
+
text-align: start;
|
|
92
|
+
white-space: normal;
|
|
93
|
+
padding: 16px 20px;
|
|
53
94
|
|
|
54
95
|
/**
|
|
55
96
|
* ion-header.header-collapse-condenseを使って、スクロールによってHeaderを変化させるトリック
|
|
@@ -60,9 +101,10 @@ $groups: ion-item-group, ion-reorder-group, ion-accordion-group, ion-radio-group
|
|
|
60
101
|
}
|
|
61
102
|
|
|
62
103
|
ion-icon {
|
|
63
|
-
font-size: 2.
|
|
104
|
+
font-size: 2.82rem;
|
|
64
105
|
border-radius: 20%;
|
|
65
106
|
padding: 6px;
|
|
107
|
+
vertical-align: top;
|
|
66
108
|
|
|
67
109
|
&:not(.ion-color) {
|
|
68
110
|
color: #ffffff;
|
|
@@ -70,13 +112,18 @@ $groups: ion-item-group, ion-reorder-group, ion-accordion-group, ion-radio-group
|
|
|
70
112
|
}
|
|
71
113
|
|
|
72
114
|
h2 {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
margin-top: 8px;
|
|
115
|
+
@include group-heading.typography;
|
|
116
|
+
margin: 20px 0 8px;
|
|
76
117
|
}
|
|
77
118
|
|
|
78
119
|
ion-text {
|
|
79
|
-
|
|
120
|
+
display: block;
|
|
121
|
+
font-size: 1rem;
|
|
122
|
+
line-height: 1.29rem;
|
|
123
|
+
|
|
124
|
+
&:not(.ion-color) {
|
|
125
|
+
color: var(--ion-color-step-500, var(--ion-text-color-step-500, #808080));
|
|
126
|
+
}
|
|
80
127
|
}
|
|
81
128
|
}
|
|
82
129
|
}
|
|
@@ -128,11 +175,12 @@ $groups: ion-item-group, ion-reorder-group, ion-accordion-group, ion-radio-group
|
|
|
128
175
|
& > ion-label {
|
|
129
176
|
margin: 0;
|
|
130
177
|
font-weight: 500;
|
|
131
|
-
font-size:
|
|
132
|
-
line-height:
|
|
178
|
+
font-size: 1rem;
|
|
179
|
+
line-height: 1.29rem;
|
|
133
180
|
}
|
|
134
181
|
& > ion-note {
|
|
135
|
-
font-size: 0.
|
|
182
|
+
font-size: 0.88rem;
|
|
183
|
+
line-height: 1.18rem;
|
|
136
184
|
}
|
|
137
185
|
}
|
|
138
186
|
|
|
@@ -162,9 +210,14 @@ $groups: ion-item-group, ion-reorder-group, ion-accordion-group, ion-radio-group
|
|
|
162
210
|
}
|
|
163
211
|
|
|
164
212
|
& > ion-note {
|
|
165
|
-
|
|
166
|
-
|
|
213
|
+
font-size: 0.76rem;
|
|
214
|
+
line-height: 1.06rem;
|
|
215
|
+
font-weight: 400;
|
|
167
216
|
display: block;
|
|
168
217
|
margin: 8px calc(var(--ion-safe-area-right, 0) + $outer-note-inset) 8px calc(var(--ion-safe-area-left, 0) + $outer-note-inset);
|
|
218
|
+
|
|
219
|
+
&:not(.ion-color) {
|
|
220
|
+
--color: var(--ion-color-medium-tint);
|
|
221
|
+
}
|
|
169
222
|
}
|
|
170
223
|
}
|
|
@@ -6,9 +6,13 @@
|
|
|
6
6
|
@use 'dark/ion-tabs' as *;
|
|
7
7
|
@forward 'dark/ion-segment';
|
|
8
8
|
@use 'dark/ion-segment' as *;
|
|
9
|
+
@forward 'dark/ion-list';
|
|
10
|
+
@use 'dark/ion-list' as *;
|
|
9
11
|
|
|
10
12
|
@mixin default-variables {
|
|
11
13
|
--ios27-color-scheme: dark;
|
|
14
|
+
--ios-theme-destructive-color: #ff686b;
|
|
15
|
+
--ios-theme-menu-background-rgb: 26, 31, 34;
|
|
12
16
|
//--ios26-glass-background-rgb: 35, 35, 35;
|
|
13
17
|
--ios26-glass-background-rgb: 62, 62, 62;
|
|
14
18
|
--ios26-glass-box-shadow-color-rgb: 0, 0, 0 / 0;
|
|
@@ -19,6 +23,25 @@
|
|
|
19
23
|
}
|
|
20
24
|
|
|
21
25
|
@mixin theme-dark {
|
|
26
|
+
@include ion-list;
|
|
27
|
+
|
|
28
|
+
ion-alert.ios:not(.ios-theme-disabled, .ios26-disabled),
|
|
29
|
+
ion-action-sheet.ios:not(.ios-theme-disabled, .ios26-disabled),
|
|
30
|
+
ion-toast.ios:not(.ios-theme-disabled, .ios26-disabled) {
|
|
31
|
+
--background: rgba(var(--ios-theme-glass-background-rgb, var(--ios26-glass-background-rgb)), 0.52);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
ion-popover.ios:not(.ios-theme-disabled, .ios26-disabled) {
|
|
35
|
+
--background: rgba(var(--ios-theme-glass-background-rgb, var(--ios26-glass-background-rgb)), 0.08);
|
|
36
|
+
|
|
37
|
+
&:not(.ios-theme-callout)::part(content),
|
|
38
|
+
&::part(callout-glass),
|
|
39
|
+
&::part(arrow)::after {
|
|
40
|
+
backdrop-filter: blur(12px) saturate(115%) brightness(0.9);
|
|
41
|
+
-webkit-backdrop-filter: blur(12px) saturate(115%) brightness(0.9);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
22
45
|
@include ion-button;
|
|
23
46
|
@include ion-fab;
|
|
24
47
|
@include ion-tabs;
|