@rdlabo/ionic-theme-md3 9.1.0 → 9.1.1-beta.pr45.sha4ac3ec97bfb1
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 +53 -50
- package/dist/css/components/ion-toolbar.css +1 -1
- package/dist/css/ionic-theme-md3.css +1 -1
- package/docs/eslint.md +73 -0
- package/docs/using-ion-item-group.md +2 -4
- package/package.json +5 -2
- package/src/styles/components/ion-list.scss +1 -1
- package/src/styles/components/ion-toolbar.scss +9 -7
- package/dist/css/utils/structured-list.css +0 -1
- package/src/styles/utils/structured-list.scss +0 -170
package/README.md
CHANGED
|
@@ -10,43 +10,66 @@ A CSS/JS theme library that applies Material Design 3 design system to Ionic app
|
|
|
10
10
|
|
|
11
11
|
DEMO is here: https://ionic-theme-md3.rdlabo.dev/
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Designed for compatibility with `@rdlabo/ionic-theme-ios26`, so one markup tree can style both Ionic modes.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
This project aims to follow the core concepts of Ionic as closely as possible, while placing a strong emphasis on compatibility with `@rdlabo/ionic-theme-ios26`. Just as Ionic provides beautiful styling whether it displays the ios or md theme from a single HTML structure, our goal is to ensure that this theme and `@rdlabo/ionic-theme-ios26` are fully compatible.
|
|
15
|
+
## Installation
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
In an existing Ionic project:
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
```bash
|
|
20
|
+
npm install @rdlabo/ionic-theme-md3
|
|
21
|
+
```
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
Note: **If you use @ionic/core@ < 8.8.0**, use @rdlabo/ionic-theme-md3@1.0.2.
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
And import the theme in your project's main CSS file (e.g., `src/styles.scss`).
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
```css
|
|
28
|
+
@import '@rdlabo/ionic-theme-md3/dist/css/default-variables.css';
|
|
29
|
+
@import '@rdlabo/ionic-theme-md3/dist/css/ionic-theme-md3.css';
|
|
30
|
+
```
|
|
28
31
|
|
|
29
|
-
|
|
32
|
+
### Configure animations
|
|
30
33
|
|
|
31
|
-
|
|
34
|
+
If you installed only the MD3 theme, configure its animation as follows.
|
|
32
35
|
|
|
33
|
-
|
|
36
|
+
```ts
|
|
37
|
+
import { isPlatform } from '@ionic/core'; // or @ionic/angular (Ionic 9), @ionic/angular/standalone (Ionic 8), @ionic/react, @ionic/vue
|
|
38
|
+
import { mdTransitionAnimation } from '@rdlabo/ionic-theme-md3';
|
|
34
39
|
|
|
35
|
-
|
|
40
|
+
// Angular
|
|
41
|
+
provideIonicAngular({
|
|
42
|
+
...
|
|
43
|
+
navAnimation: isPlatform('ios') ? undefined: mdTransitionAnimation,
|
|
44
|
+
});
|
|
36
45
|
|
|
37
|
-
|
|
46
|
+
// React
|
|
47
|
+
setupIonicReact({
|
|
48
|
+
...
|
|
49
|
+
navAnimation: isPlatform('ios') ? undefined: mdTransitionAnimation,
|
|
50
|
+
});
|
|
38
51
|
|
|
39
|
-
|
|
40
|
-
|
|
52
|
+
// Vue
|
|
53
|
+
createApp(App)
|
|
54
|
+
.use(IonicVue, {
|
|
55
|
+
...
|
|
56
|
+
navAnimation: isPlatform('ios') ? undefined: mdTransitionAnimation,
|
|
57
|
+
})
|
|
41
58
|
```
|
|
42
59
|
|
|
43
|
-
|
|
60
|
+
### Check the theme
|
|
44
61
|
|
|
45
|
-
|
|
62
|
+
Test on Android. When previewing on desktop, set Ionic mode to `md` in your existing framework initialization config (for example `mode: 'md'`).
|
|
46
63
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
64
|
+
Use this markup to preview the inset grouped list look. For the list structure the theme expects, see [Using ion-item-group](https://docs.rdlabo.dev/projects/ionic-theme-md3/docs/using-ion-item-group).
|
|
65
|
+
|
|
66
|
+
```html
|
|
67
|
+
<ion-list mode="md" inset="true">
|
|
68
|
+
<ion-item-group>
|
|
69
|
+
<ion-item><ion-label>Notifications</ion-label></ion-item>
|
|
70
|
+
<ion-item><ion-label>Appearance</ion-label></ion-item>
|
|
71
|
+
</ion-item-group>
|
|
72
|
+
</ion-list>
|
|
50
73
|
```
|
|
51
74
|
|
|
52
75
|
### Optional: use the MD3 and iOS 26 themes together
|
|
@@ -105,40 +128,20 @@ createApp(App)
|
|
|
105
128
|
});
|
|
106
129
|
```
|
|
107
130
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
```ts
|
|
111
|
-
import { isPlatform } from '@ionic/core'; // or @ionic/angular (Ionic 9), @ionic/angular/standalone (Ionic 8), @ionic/react, @ionic/vue
|
|
112
|
-
import { mdTransitionAnimation } from '@rdlabo/ionic-theme-md3';
|
|
113
|
-
|
|
114
|
-
// Angular
|
|
115
|
-
provideIonicAngular({
|
|
116
|
-
...
|
|
117
|
-
navAnimation: isPlatform('ios') ? undefined: mdTransitionAnimation,
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
// React
|
|
121
|
-
setupIonicReact({
|
|
122
|
-
...
|
|
123
|
-
navAnimation: isPlatform('ios') ? undefined: mdTransitionAnimation,
|
|
124
|
-
});
|
|
131
|
+
## Documentation
|
|
125
132
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
navAnimation: isPlatform('ios') ? undefined: mdTransitionAnimation,
|
|
131
|
-
})
|
|
132
|
-
```
|
|
133
|
+
- [Using ion-item-group](https://docs.rdlabo.dev/projects/ionic-theme-md3/docs/using-ion-item-group) — shared inset-list markup for iOS 26 and MD3.
|
|
134
|
+
- [Special markup](https://docs.rdlabo.dev/projects/ionic-theme-md3/docs/special-markup) — opt-in component combinations used by the demo.
|
|
135
|
+
- [ESLint](https://docs.rdlabo.dev/projects/ionic-theme-md3/docs/eslint) — check list structure with ESLint rules.
|
|
136
|
+
- [Migration](https://docs.rdlabo.dev/projects/ionic-theme-md3/docs/migration) — changes required when updating theme markup.
|
|
133
137
|
|
|
134
|
-
##
|
|
138
|
+
## Related Projects
|
|
135
139
|
|
|
136
|
-
|
|
140
|
+
If you need a more comprehensive Material Design 3 implementation, you may also be interested in:
|
|
137
141
|
|
|
138
|
-
- [
|
|
139
|
-
- [Using ion-item-group](https://docs.rdlabo.dev/projects/ionic-theme-md3/docs/using-ion-item-group) — shared inset-list markup for iOS 26 and MD3.
|
|
142
|
+
- **[md3-for-ionic](https://github.com/danielkleebinder/md3-for-ionic)** by danielkleebinder
|
|
140
143
|
|
|
141
|
-
-
|
|
144
|
+
> **Note:** This theme is purpose-built for compatibility with Ionic's design approach and `@rdlabo/ionic-theme-ios26`; it is not intended as a strict, full MD3 recreation.
|
|
142
145
|
|
|
143
146
|
<!-- rdlabo-docs-omit -->
|
|
144
147
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
ion-header.md:not(.md3-disabled),ion-footer.md:not(.md3-disabled){box-shadow:none}ion-
|
|
1
|
+
ion-header.md:not(.md3-disabled),ion-footer.md:not(.md3-disabled){box-shadow:none}ion-toolbar.md:not(.md3-disabled) ion-buttons[slot=start],ion-toolbar.md:not(.md3-disabled) ion-back-button[slot=start]{margin-left:16px}ion-toolbar.md:not(.md3-disabled) ion-buttons[slot=end],ion-toolbar.md:not(.md3-disabled) ion-back-button[slot=end]{margin-right:16px}ion-toolbar.md:not(.md3-disabled) ion-buttons>ion-back-button{margin-left:0;margin-right:0}ion-toolbar.md:not(.md3-disabled):has(>[slot=start]) ion-title{padding-inline-start:4px}ion-toolbar.md:not(.md3-disabled):not(:has(>[slot=start])) ion-title{padding-inline-start:28px}ion-toolbar.md:not(.md3-disabled).toolbar-searchbar:not(:has(>[slot=start])){--padding-start: 10px}ion-toolbar.md:not(.md3-disabled).toolbar-searchbar:not(:has(>[slot=end])){--padding-end: 10px}ion-toolbar.md:not(.md3-disabled) ion-back-button.back-button-has-icon-only{--icon-font-size: 24px;--min-width: 48px;--min-height: 48px;--padding-top: 0;--padding-end: 0;--padding-bottom: 0;--padding-start: 0}ion-toolbar.md:not(.md3-disabled) ion-button.button-has-icon-only:not(.button-small):not(.button-large)::part(native){width:48px;height:48px}ion-toolbar.md:not(.md3-disabled) ion-button.button-has-icon-only:not(.button-small):not(.button-large).button-solid::part(native){width:40px;height:40px}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
ion-action-sheet.md:not(.md3-disabled){--max-width: 640px}ion-action-sheet.md:not(.md3-disabled) .action-sheet-container{overflow:hidden;border-radius:28px 28px 0 0;box-shadow:var(--token-elevation-1)}ion-action-sheet.md:not(.md3-disabled) .action-sheet-container .action-sheet-title{padding:24px 24px 16px}ion-action-sheet.md:not(.md3-disabled) .action-sheet-container .action-sheet-button{padding:12px 24px}ion-alert.md:not(.md3-disabled){--backdrop-opacity: 0.2;--min-width: 280px;--max-width: min(560px, calc(100% - 48px * 2));transition:transform 200ms ease}ion-alert.md:not(.md3-disabled) .alert-wrapper{border-radius:24px;box-shadow:var(--token-elevation-3)}ion-alert.md:not(.md3-disabled) .alert-wrapper .alert-head{padding-top:24px;padding-bottom:16px}ion-alert.md:not(.md3-disabled) .alert-wrapper .alert-message{padding-bottom:24px}ion-alert.md:not(.md3-disabled) .alert-wrapper .alert-message:empty{padding-bottom:0}ion-button.md:not(.md3-disabled){--box-shadow: none;--padding-start: 16px;--padding-end: 16px;--border-radius: 999px}ion-button.md:not(.md3-disabled):not(.button-round){--border-radius: 999px}ion-button.md:not(.md3-disabled)::part(native){height:40px}ion-button.md:not(.md3-disabled) ion-icon{font-size:24px}ion-button.md:not(.md3-disabled) ion-icon[slot=start]{margin-inline-start:0;margin-inline-end:8px}ion-button.md:not(.md3-disabled) ion-icon[slot=end]{margin-inline-start:8px;margin-inline-end:0}ion-button.md:not(.md3-disabled).button-small{--padding-start: 12px;--padding-end: 12px}ion-button.md:not(.md3-disabled).button-small::part(native){height:32px}ion-button.md:not(.md3-disabled).button-small.button-has-icon-only{width:32px;height:32px}ion-button.md:not(.md3-disabled).button-small.button-has-icon-only::part(native){width:32px;height:32px}ion-button.md:not(.md3-disabled).button-small ion-icon{font-size:20px}ion-button.md:not(.md3-disabled).button-small ion-icon[slot=start]{margin-inline-start:0;margin-inline-end:4px}ion-button.md:not(.md3-disabled).button-small ion-icon[slot=end]{margin-inline-start:4px;margin-inline-end:0}ion-button.md:not(.md3-disabled).button-large{--padding-start: 24px;--padding-end: 24px}ion-button.md:not(.md3-disabled).button-large::part(native){height:56px}ion-button.md:not(.md3-disabled).button-large.button-has-icon-only{width:56px;height:56px}ion-button.md:not(.md3-disabled).button-large.button-has-icon-only::part(native){width:56px;height:56px}ion-button.md:not(.md3-disabled).button-large ion-icon{font-size:24px}ion-button.md:not(.md3-disabled).button-large ion-icon[slot=start]{margin-inline-start:0;margin-inline-end:8px}ion-button.md:not(.md3-disabled).button-large ion-icon[slot=end]{margin-inline-start:8px;margin-inline-end:0}ion-button.md:not(.md3-disabled).button-has-icon-only::part(native){width:40px;height:40px}ion-button.md:not(.md3-disabled).button-has-icon-only{--padding-start: 0;--padding-end: 0}ion-button.md:not(.md3-disabled).button-square{--border-radius: 8px}ion-button.md:not(.md3-disabled).button-square.button-square{--border-radius: 12px}ion-back-button.md:not(.md3-disabled){--border-radius: 999px;--min-height: 40px;--padding-start: 16px;--padding-end: 16px}ion-card.md:not(.md3-disabled){border-radius:12px;box-shadow:var(--token-elevation-1)}ion-card.md:not(.md3-disabled) ion-list ion-item{--padding-start: 0}ion-chip.md:not(.md3-disabled){padding-inline-start:16px;padding-inline-end:16px;border-radius:8px}ion-chip.md:not(.md3-disabled) ion-icon{font-size:18px}ion-chip.md:not(.md3-disabled) ion-icon:first-child{margin-inline-start:-8px;margin-inline-end:8px}ion-chip.md:not(.md3-disabled) ion-icon:last-child{margin-inline-start:8px;margin-inline-end:-8px}ion-fab.md:not(.md3-disabled) ion-fab-button{width:56px;height:56px;--border-radius: 16px;--transition: border-radius var(--token-expressive-fast-special);--box-shadow: var(--token-elevation-3)}ion-fab.md:not(.md3-disabled) ion-fab-button ion-icon{width:24px;height:24px}ion-fab.md:not(.md3-disabled) ion-fab-button.fab-button-close-active{--border-radius: 50%}ion-fab.md:not(.md3-disabled) ion-fab-button.fab-button-in-list{--border-radius: 50%}ion-fab.md:not(.md3-disabled) ion-fab-button.fab-button-small{width:40px;height:40px;--border-radius: 12px}ion-fab.md:not(.md3-disabled) ion-fab-button.fab-button-small.fab-button-close-active{--border-radius: 50%}ion-fab.md:not(.md3-disabled):has(.fab-button-small) ion-fab-button{width:40px;height:40px}ion-list.md:not(.md3-disabled) ion-item:has(ion-input.input-fill-outline),ion-list.md:not(.md3-disabled) ion-item:has(ion-textarea.textarea-fill-outline),ion-list.md:not(.md3-disabled) ion-item:has(ion-select:is([helpertext]:not([helpertext=""]),[errortext]:not([errortext=""]))),ion-list.md:not(.md3-disabled) ion-item:has(ion-input .input-bottom>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty))),ion-list.md:not(.md3-disabled) ion-item:has(ion-textarea .textarea-bottom>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty))){--inner-border-width: 0;--inner-padding-bottom: 4px}ion-list.md:not(.md3-disabled) ion-item ion-input .input-bottom:not(:has(>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty)))),ion-list.md:not(.md3-disabled) ion-item ion-textarea .textarea-bottom:not(:has(>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty)))){display:none}ion-list.md:not(.md3-disabled):not(.list-inset){padding-top:0;padding-bottom:0}ion-list.md:not(.md3-disabled).list-inset{background:rgba(0,0,0,0)}ion-list.md:not(.md3-disabled).list-inset ion-list-header{display:flex;align-items:center}ion-list.md:not(.md3-disabled).list-inset ion-list-header ion-label{font-size:.9rem;margin:8px 4px 4px}ion-list.md:not(.md3-disabled).list-inset ion-list-header ion-label:not(.ion-color){color:var(--ion-color-medium-tint)}ion-list.md:not(.md3-disabled).list-inset ion-list-header ion-button{margin-top:8px}ion-list.md:not(.md3-disabled).list-inset ion-list-header ion-note{font-size:.9rem;margin:8px 16px 4px 0}ion-list.md:not(.md3-disabled).list-inset ion-item-group.item-group-header>ion-item>ion-label{width:100%;text-align:center;padding:32px 16px 16px;transform:translateX(5px)}ion-list.md:not(.md3-disabled).list-inset ion-item-group.item-group-header>ion-item>ion-label ion-header.header-collapse-condense>ion-toolbar{--min-height: 0;visibility:hidden}ion-list.md:not(.md3-disabled).list-inset ion-item-group.item-group-header>ion-item>ion-label ion-icon{font-size:2.8rem;border-radius:20%;padding:6px}ion-list.md:not(.md3-disabled).list-inset ion-item-group.item-group-header>ion-item>ion-label ion-icon:not(.ion-color){color:#fff}ion-list.md:not(.md3-disabled).list-inset ion-item-group.item-group-header>ion-item>ion-label h2{font-size:1.2rem;font-weight:bold;margin-top:8px}ion-list.md:not(.md3-disabled).list-inset ion-item-group.item-group-header>ion-item>ion-label ion-text{font-size:.9rem}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group){display:block;border-radius:16px;overflow:hidden}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top){display:flex;flex-direction:column;border-radius:0;overflow:visible}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top)>.radio-group-top{order:1;font-size:.9rem;padding-block-start:8px}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top)>ion-item:first-of-type{--border-radius: 16px 16px 0 0}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top)>ion-item:last-of-type{--border-radius: 0 0 16px 16px}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):not(:first-of-type){margin-top:16px}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))::part(container){flex-direction:column;justify-content:center;padding-top:14px;padding-bottom:14px;min-height:64px}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-label,ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-note{width:auto;align-self:flex-start}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-label{margin:0;font-weight:500;font-size:1.15rem;line-height:.9rem}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-note{font-size:.85rem}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-text[slot=end]{padding-left:8px}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item.item-disabled{--detail-icon-opacity: 0.1;opacity:1}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item.item-disabled>*{opacity:.4}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-button[slot=end].ion-align-self-end{transform:translateY(-7px)}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-button[slot=end] ion-icon[slot=icon-only]{font-size:1.2rem;transform:translateY(4px)}ion-list.md:not(.md3-disabled).list-inset>ion-note{--color: var(--ion-color-medium-tint);font-size:.9rem;display:block;margin:8px calc(var(--ion-safe-area-right, 0) + 8px) 8px calc(var(--ion-safe-area-left, 0) + 8px)}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item{--border-color: var(--ion-color-light, #fff)}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-note[slot=end]{font-size:max(14px,1rem)}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:not(:last-of-type):not(.item-lines-inset):not(.item-lines-none){--border-radius: 4px;--border-width: 0px 0px 2px 0px;--inner-border-width: 0;--show-inset-highlight: 0;--show-full-highlight: 1}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(:is(ion-input.input-fill-outline,ion-textarea.textarea-fill-outline)):not(.item-lines-inset):not(.item-lines-none),ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(:is(ion-input.input-fill-outline,ion-textarea.textarea-fill-outline)):is(.item-lines-inset,.item-lines-none){--border-width: 0;--inner-padding-bottom: 4px}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(:is(ion-input.input-fill-outline,ion-textarea.textarea-fill-outline)):not(.item-lines-inset):not(.item-lines-none) ion-input,ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(:is(ion-input.input-fill-outline,ion-textarea.textarea-fill-outline)):not(.item-lines-inset):not(.item-lines-none) ion-textarea,ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(:is(ion-input.input-fill-outline,ion-textarea.textarea-fill-outline)):is(.item-lines-inset,.item-lines-none) ion-input,ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(:is(ion-input.input-fill-outline,ion-textarea.textarea-fill-outline)):is(.item-lines-inset,.item-lines-none) ion-textarea{margin:16px 0 12px}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item>ion-input[labelplacement=floating]{transition:transform 200ms ease}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item>ion-input[labelplacement=floating]:not(.label-floating){transform:translateY(-7px)}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item>ion-input[labelplacement=floating].label-floating{transform:translateY(-4px)}ion-list.md:not(.md3-disabled).list-inset ion-radio-group:has(>.radio-group-top) ion-item:first-of-type:not(.item-lines-inset):not(.item-lines-none){--border-radius: 16px 16px 0 0}ion-list-header.md:not(.md3-disabled){padding-left:calc(var(--ion-safe-area-left, 0px) + 4px)}ion-loading.md:not(.md3-disabled) .loading-wrapper{border-radius:24px;box-shadow:var(--token-elevation-3)}ion-modal.md:not(.md3-disabled){--box-shadow: var(--token-elevation-3)}@media only screen and (min-width: 768px)and (min-height: 600px){ion-modal.md:not(.md3-disabled){--border-radius: 24px}}ion-modal.md:not(.md3-disabled) ion-toolbar{--min-height: 64px}ion-modal.md:not(.md3-disabled) ion-toolbar:first-of-type{padding-top:calc(var(--ion-safe-area-top, 0) + 6px)}ion-modal.md:not(.md3-disabled) ion-toolbar{padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left)}ion-modal.md:not(.md3-disabled) ion-toolbar ion-button.button-has-icon-only::part(native){width:48px;height:48px}ion-modal.md:not(.md3-disabled) ion-toolbar ion-button.button-has-icon-only ion-icon[name=close-outline]{font-size:2rem}ion-modal.md:not(.md3-disabled)::part(handle){width:80px}ion-modal.md:not(.md3-disabled).modal-sheet{--border-radius: 30px}ion-modal.md:not(.md3-disabled).modal-sheet ion-toolbar:first-of-type{padding-top:6px}ion-popover.md:not(.md3-disabled){--box-shadow: var(--token-elevation-3)}ion-popover.md:not(.md3-disabled)::part(content){border-radius:12px}ion-popover.md:not(.md3-disabled) ion-select-popover ion-list{padding:0}ion-range.md:not(.md3-disabled){--height: 56px;--bar-height: 16px;--bar-border-radius: 8px;--knob-background: var(--ion-color-primary);--knob-box-shadow: none;--knob-border-radius: 8px;--knob-size: 44px;--pin-background: var(--ion-background-color-step-700, #4a4458)}ion-range.md:not(.md3-disabled).range-has-pin{padding-top:2.6rem}ion-range.md:not(.md3-disabled)::part(knob){width:4px;transition:width var(--token-expressive-fast-effects),transform var(--token-expressive-fast-effects),outline var(--token-expressive-fast-effects);will-change:width;transform:translateX(calc(var(--knob-size) / 2 - 2px))}ion-range.md:not(.md3-disabled)::part(knob):before{content:none}ion-range.md:not(.md3-disabled).ion-color{--knob-background: var(--ion-color-base, var(--ion-color-primary))}ion-range.md:not(.md3-disabled)::part(tick),ion-range.md:not(.md3-disabled)::part(tick-active){--bar-height: 4px}ion-range.md:not(.md3-disabled):not(.range-dual-knobs).range-pressed::part(knob){width:2px;transform:translateX(calc(var(--knob-size) / 2 - 1px))}ion-range.md:not(.md3-disabled):not(.range-dual-knobs):not(.range-value-min):not(.range-value-max)::part(knob){outline:6px solid var(--ion-background-color, #ffffff)}ion-range.md:not(.md3-disabled):not(.range-dual-knobs).range-pressed:not(.range-value-min):not(.range-value-max)::part(knob){outline:7px solid var(--ion-background-color, #ffffff)}ion-range.md:not(.md3-disabled):not(.range-dual-knobs):not(.range-value-max)::part(bar-active){border-top-right-radius:calc(var(--knob-border-radius)/2);border-bottom-right-radius:calc(var(--knob-border-radius)/2);margin-right:6px}ion-range.md:not(.md3-disabled):not(.range-dual-knobs).range-value-min::part(bar){border-top-left-radius:calc(var(--knob-border-radius)/2);border-bottom-left-radius:calc(var(--knob-border-radius)/2);width:calc(100% - 6px);right:0}ion-range.md:not(.md3-disabled):not(.range-dual-knobs).range-value-max::part(bar),ion-range.md:not(.md3-disabled):not(.range-dual-knobs).range-value-max::part(bar-active){border-top-right-radius:calc(var(--knob-border-radius)/2);border-bottom-right-radius:calc(var(--knob-border-radius)/2);width:calc(100% - 6px);left:0}ion-range.md:not(.md3-disabled).range-dual-knobs.range-pressed-a::part(knob-a),ion-range.md:not(.md3-disabled).range-dual-knobs.range-pressed-b::part(knob-b){width:2px;transform:translateX(calc(var(--knob-size) / 2 - 1px))}ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-min::part(bar),ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-min::part(bar-active){border-top-left-radius:calc(var(--knob-border-radius)/2);border-bottom-left-radius:calc(var(--knob-border-radius)/2);margin-left:6px}ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-min::part(bar){width:calc(100% - 6px)}ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-max::part(bar),ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-max::part(bar-active){border-top-right-radius:calc(var(--knob-border-radius)/2);border-bottom-right-radius:calc(var(--knob-border-radius)/2);margin-right:6px}ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-max::part(bar){width:calc(100% - 6px)}ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-min.range-value-max::part(bar){width:calc(100% - 12px)}ion-range.md:not(.md3-disabled).range-dual-knobs:not(.range-value-min)::part(knob-lower),ion-range.md:not(.md3-disabled).range-dual-knobs:not(.range-value-max)::part(knob-upper){outline:6px solid var(--ion-background-color, #ffffff)}ion-range.md:not(.md3-disabled).range-dual-knobs.range-pressed:not(.range-value-min)::part(knob-lower),ion-range.md:not(.md3-disabled).range-dual-knobs.range-pressed:not(.range-value-max)::part(knob-upper){outline:7px solid var(--ion-background-color, #ffffff)}ion-range.md:not(.md3-disabled)::part(pin){padding:16px;min-width:36px;top:10px}ion-range.md:not(.md3-disabled)::part(pin):before{content:none}ion-searchbar.md:not(.md3-disabled){--box-shadow: none;--border-radius: 999px;--background: rgba(var(--ion-color-contrast-rgb, var(--ion-text-color-rgb, 0, 0, 0)), 0.08);--color: rgb(var(--ion-color-contrast-rgb, var(--ion-text-color-rgb, 0, 0, 0)));--icon-color: rgb(var(--ion-color-contrast-rgb, var(--ion-text-color-rgb, 0, 0, 0)))}ion-segment.md:not(.md3-disabled){border-bottom:1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.13)))))}ion-tab-bar.md:not(.md3-disabled){height:62px}ion-tab-bar.md:not(.md3-disabled) ion-tab-button{--ripple-color: transparent;--color-selected: var(--ion-color-contrast, var(--ion-color-primary-shade))}ion-tab-bar.md:not(.md3-disabled) ion-tab-button ion-icon{padding:4px 16px;margin-top:6px;border-radius:16px;width:24px;height:24px}ion-tab-bar.md:not(.md3-disabled) ion-tab-button ion-icon::before{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background-color:rgba(var(--ion-color-contrast-rgb, var(--ion-color-primary-rgb, 2, 137, 255)), 0.2);transform:scaleX(0);transition:transform var(--token-expressive-fast-effects);z-index:-1}ion-tab-bar.md:not(.md3-disabled) ion-tab-button ion-label{margin-top:2px;margin-bottom:6px}ion-tab-bar.md:not(.md3-disabled) ion-tab-button.tab-selected ion-icon::before{transform:scaleX(1)}ion-toast.md:not(.md3-disabled){--box-shadow: var(--token-elevation-3);--border-radius: 8px}ion-toggle.md:not(.md3-disabled){--handle-width: 24px;--handle-height: 24px;--handle-border-radius: 16px;--border-radius: 16px;--handle-box-shadow: none;--handle-spacing: 2px;--handle-transition: transform var(--token-expressive-default-special), background-color var(--token-expressive-default-effects);--track-background: var(--ion-background-color-step-100, #e6e0e9);--handle-background: var(--ion-text-color-step-450, #79747e)}ion-toggle.md:not(.md3-disabled)::part(track){box-sizing:border-box;min-height:32px;min-width:52px;border:2px solid var(--ion-text-color-step-450, #79747e)}ion-toggle.md:not(.md3-disabled).toggle-checked{--track-background-checked: var(--ion-color-base);--handle-background-checked: var(--ion-color-contrast)}ion-toggle.md:not(.md3-disabled).toggle-checked::part(track){border-color:var(--ion-color-base)}ion-toggle.md:not(.md3-disabled):not(.ion-color).toggle-checked{--track-background-checked: var(--ion-color-primary);--handle-background-checked: var(--ion-color-primary-contrast)}ion-toggle.md:not(.md3-disabled):not(.ion-color).toggle-checked::part(track){border-color:var(--ion-color-primary)}ion-header.md:not(.md3-disabled),ion-footer.md:not(.md3-disabled){box-shadow:none}ion-header.md:not(.md3-disabled) ion-buttons[slot=start],ion-header.md:not(.md3-disabled) ion-back-button[slot=start],ion-footer.md:not(.md3-disabled) ion-buttons[slot=start],ion-footer.md:not(.md3-disabled) ion-back-button[slot=start]{margin-left:16px}ion-header.md:not(.md3-disabled) ion-buttons[slot=end],ion-header.md:not(.md3-disabled) ion-back-button[slot=end],ion-footer.md:not(.md3-disabled) ion-buttons[slot=end],ion-footer.md:not(.md3-disabled) ion-back-button[slot=end]{margin-right:16px}ion-header.md:not(.md3-disabled) ion-toolbar ion-buttons>ion-back-button,ion-footer.md:not(.md3-disabled) ion-toolbar ion-buttons>ion-back-button{margin-left:0;margin-right:0}ion-header.md:not(.md3-disabled) ion-toolbar:has(>[slot=start]) ion-title{padding-inline-start:4px}ion-header.md:not(.md3-disabled) ion-toolbar:not(:has(>[slot=start])) ion-title{padding-inline-start:28px}ion-toolbar.md:not(.md3-disabled) ion-back-button.back-button-has-icon-only{--icon-font-size: 24px;--min-width: 48px;--min-height: 48px;--padding-top: 0;--padding-end: 0;--padding-bottom: 0;--padding-start: 0}ion-toolbar.md:not(.md3-disabled) ion-button.button-has-icon-only:not(.button-small):not(.button-large)::part(native){width:48px;height:48px}ion-toolbar.md:not(.md3-disabled) ion-button.button-has-icon-only:not(.button-small):not(.button-large).button-solid::part(native){width:40px;height:40px}
|
|
1
|
+
ion-action-sheet.md:not(.md3-disabled){--max-width: 640px}ion-action-sheet.md:not(.md3-disabled) .action-sheet-container{overflow:hidden;border-radius:28px 28px 0 0;box-shadow:var(--token-elevation-1)}ion-action-sheet.md:not(.md3-disabled) .action-sheet-container .action-sheet-title{padding:24px 24px 16px}ion-action-sheet.md:not(.md3-disabled) .action-sheet-container .action-sheet-button{padding:12px 24px}ion-alert.md:not(.md3-disabled){--backdrop-opacity: 0.2;--min-width: 280px;--max-width: min(560px, calc(100% - 48px * 2));transition:transform 200ms ease}ion-alert.md:not(.md3-disabled) .alert-wrapper{border-radius:24px;box-shadow:var(--token-elevation-3)}ion-alert.md:not(.md3-disabled) .alert-wrapper .alert-head{padding-top:24px;padding-bottom:16px}ion-alert.md:not(.md3-disabled) .alert-wrapper .alert-message{padding-bottom:24px}ion-alert.md:not(.md3-disabled) .alert-wrapper .alert-message:empty{padding-bottom:0}ion-button.md:not(.md3-disabled){--box-shadow: none;--padding-start: 16px;--padding-end: 16px;--border-radius: 999px}ion-button.md:not(.md3-disabled):not(.button-round){--border-radius: 999px}ion-button.md:not(.md3-disabled)::part(native){height:40px}ion-button.md:not(.md3-disabled) ion-icon{font-size:24px}ion-button.md:not(.md3-disabled) ion-icon[slot=start]{margin-inline-start:0;margin-inline-end:8px}ion-button.md:not(.md3-disabled) ion-icon[slot=end]{margin-inline-start:8px;margin-inline-end:0}ion-button.md:not(.md3-disabled).button-small{--padding-start: 12px;--padding-end: 12px}ion-button.md:not(.md3-disabled).button-small::part(native){height:32px}ion-button.md:not(.md3-disabled).button-small.button-has-icon-only{width:32px;height:32px}ion-button.md:not(.md3-disabled).button-small.button-has-icon-only::part(native){width:32px;height:32px}ion-button.md:not(.md3-disabled).button-small ion-icon{font-size:20px}ion-button.md:not(.md3-disabled).button-small ion-icon[slot=start]{margin-inline-start:0;margin-inline-end:4px}ion-button.md:not(.md3-disabled).button-small ion-icon[slot=end]{margin-inline-start:4px;margin-inline-end:0}ion-button.md:not(.md3-disabled).button-large{--padding-start: 24px;--padding-end: 24px}ion-button.md:not(.md3-disabled).button-large::part(native){height:56px}ion-button.md:not(.md3-disabled).button-large.button-has-icon-only{width:56px;height:56px}ion-button.md:not(.md3-disabled).button-large.button-has-icon-only::part(native){width:56px;height:56px}ion-button.md:not(.md3-disabled).button-large ion-icon{font-size:24px}ion-button.md:not(.md3-disabled).button-large ion-icon[slot=start]{margin-inline-start:0;margin-inline-end:8px}ion-button.md:not(.md3-disabled).button-large ion-icon[slot=end]{margin-inline-start:8px;margin-inline-end:0}ion-button.md:not(.md3-disabled).button-has-icon-only::part(native){width:40px;height:40px}ion-button.md:not(.md3-disabled).button-has-icon-only{--padding-start: 0;--padding-end: 0}ion-button.md:not(.md3-disabled).button-square{--border-radius: 8px}ion-button.md:not(.md3-disabled).button-square.button-square{--border-radius: 12px}ion-back-button.md:not(.md3-disabled){--border-radius: 999px;--min-height: 40px;--padding-start: 16px;--padding-end: 16px}ion-card.md:not(.md3-disabled){border-radius:12px;box-shadow:var(--token-elevation-1)}ion-card.md:not(.md3-disabled) ion-list ion-item{--padding-start: 0}ion-chip.md:not(.md3-disabled){padding-inline-start:16px;padding-inline-end:16px;border-radius:8px}ion-chip.md:not(.md3-disabled) ion-icon{font-size:18px}ion-chip.md:not(.md3-disabled) ion-icon:first-child{margin-inline-start:-8px;margin-inline-end:8px}ion-chip.md:not(.md3-disabled) ion-icon:last-child{margin-inline-start:8px;margin-inline-end:-8px}ion-fab.md:not(.md3-disabled) ion-fab-button{width:56px;height:56px;--border-radius: 16px;--transition: border-radius var(--token-expressive-fast-special);--box-shadow: var(--token-elevation-3)}ion-fab.md:not(.md3-disabled) ion-fab-button ion-icon{width:24px;height:24px}ion-fab.md:not(.md3-disabled) ion-fab-button.fab-button-close-active{--border-radius: 50%}ion-fab.md:not(.md3-disabled) ion-fab-button.fab-button-in-list{--border-radius: 50%}ion-fab.md:not(.md3-disabled) ion-fab-button.fab-button-small{width:40px;height:40px;--border-radius: 12px}ion-fab.md:not(.md3-disabled) ion-fab-button.fab-button-small.fab-button-close-active{--border-radius: 50%}ion-fab.md:not(.md3-disabled):has(.fab-button-small) ion-fab-button{width:40px;height:40px}ion-list.md:not(.md3-disabled) ion-item:has(ion-input.input-fill-outline),ion-list.md:not(.md3-disabled) ion-item:has(ion-textarea.textarea-fill-outline),ion-list.md:not(.md3-disabled) ion-item:has(ion-select:is([helpertext]:not([helpertext=""]),[errortext]:not([errortext=""]))),ion-list.md:not(.md3-disabled) ion-item:has(ion-input .input-bottom>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty))),ion-list.md:not(.md3-disabled) ion-item:has(ion-textarea .textarea-bottom>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty))){--inner-border-width: 0;--inner-padding-bottom: 4px}ion-list.md:not(.md3-disabled) ion-item ion-input .input-bottom:not(:has(>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty)))),ion-list.md:not(.md3-disabled) ion-item ion-textarea .textarea-bottom:not(:has(>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty)))){display:none}ion-list.md:not(.md3-disabled):not(.list-inset){padding-top:0;padding-bottom:0}ion-list.md:not(.md3-disabled).list-inset{background:rgba(0,0,0,0)}ion-list.md:not(.md3-disabled).list-inset ion-list-header{display:flex;align-items:center}ion-list.md:not(.md3-disabled).list-inset ion-list-header ion-label{font-size:.9rem;margin:8px 4px 4px}ion-list.md:not(.md3-disabled).list-inset ion-list-header ion-label:not(.ion-color){color:var(--ion-color-medium-tint)}ion-list.md:not(.md3-disabled).list-inset ion-list-header ion-button{margin-top:8px}ion-list.md:not(.md3-disabled).list-inset ion-list-header ion-note{font-size:.9rem;margin:8px 16px 4px 0}ion-list.md:not(.md3-disabled).list-inset ion-item-group.item-group-header>ion-item>ion-label{width:100%;text-align:center;padding:32px 16px 16px;transform:translateX(5px)}ion-list.md:not(.md3-disabled).list-inset ion-item-group.item-group-header>ion-item>ion-label ion-header.header-collapse-condense>ion-toolbar{--min-height: 0;visibility:hidden}ion-list.md:not(.md3-disabled).list-inset ion-item-group.item-group-header>ion-item>ion-label ion-icon{font-size:2.8rem;border-radius:20%;padding:6px}ion-list.md:not(.md3-disabled).list-inset ion-item-group.item-group-header>ion-item>ion-label ion-icon:not(.ion-color){color:#fff}ion-list.md:not(.md3-disabled).list-inset ion-item-group.item-group-header>ion-item>ion-label h2{font-size:1.2rem;font-weight:bold;margin-top:8px}ion-list.md:not(.md3-disabled).list-inset ion-item-group.item-group-header>ion-item>ion-label ion-text{font-size:.9rem}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group){display:block;border-radius:16px;overflow:hidden}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top){display:flex;flex-direction:column;border-radius:0;overflow:visible}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top)>.radio-group-top{order:1;font-size:.9rem;padding-block-start:8px}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top)>ion-item:first-of-type{--border-radius: 16px 16px 0 0}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top)>ion-item:last-of-type{--border-radius: 0 0 16px 16px}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):not(:first-of-type){margin-top:16px}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))::part(container){flex-direction:column;justify-content:center;padding-top:14px;padding-bottom:14px;min-height:64px}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-label,ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-note{width:auto;align-self:flex-start}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-label{margin:0;font-weight:500;font-size:1.15rem;line-height:.9rem}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-note{font-size:.85rem}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-text[slot=end]{padding-left:8px}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item.item-disabled{--detail-icon-opacity: 0.1;opacity:1}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item.item-disabled>*{opacity:.4}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-button[slot=end].ion-align-self-end{transform:translateY(-7px)}ion-list.md:not(.md3-disabled).list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-button[slot=end] ion-icon[slot=icon-only]{font-size:1.2rem;transform:translateY(4px)}ion-list.md:not(.md3-disabled).list-inset>ion-note{--color: var(--ion-color-medium-tint);font-size:.9rem;display:block;margin:8px calc(var(--ion-safe-area-right, 0) + 8px) 8px calc(var(--ion-safe-area-left, 0) + 8px)}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item{--border-color: var(--ion-color-light, #fff)}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-note[slot=end]{font-size:max(14px,1rem)}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:not(:last-of-type):not(.item-lines-inset):not(.item-lines-none){--border-radius: 4px;--border-width: 0px 0px 2px 0px;--inner-border-width: 0;--show-inset-highlight: 0;--show-full-highlight: 1}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(:is(ion-input.input-fill-outline,ion-textarea.textarea-fill-outline)):not(.item-lines-inset):not(.item-lines-none),ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(:is(ion-input.input-fill-outline,ion-textarea.textarea-fill-outline)):is(.item-lines-inset,.item-lines-none){--border-width: 0;--inner-padding-bottom: 4px}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(:is(ion-input.input-fill-outline,ion-textarea.textarea-fill-outline)):not(.item-lines-inset):not(.item-lines-none) ion-input,ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(:is(ion-input.input-fill-outline,ion-textarea.textarea-fill-outline)):not(.item-lines-inset):not(.item-lines-none) ion-textarea,ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(:is(ion-input.input-fill-outline,ion-textarea.textarea-fill-outline)):is(.item-lines-inset,.item-lines-none) ion-input,ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(:is(ion-input.input-fill-outline,ion-textarea.textarea-fill-outline)):is(.item-lines-inset,.item-lines-none) ion-textarea{margin:16px 0 12px}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item>ion-input[labelplacement=floating]{transition:transform 200ms ease}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item>ion-input[labelplacement=floating]:not(.label-floating){transform:translateY(-7px)}ion-list.md:not(.md3-disabled).list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item>ion-input[labelplacement=floating].label-floating{transform:translateY(-4px)}ion-list.md:not(.md3-disabled).list-inset ion-radio-group:has(>.radio-group-top) ion-item:first-of-type:not(.item-lines-inset):not(.item-lines-none){--border-radius: 16px 16px 0 0}ion-list-header.md:not(.md3-disabled){padding-left:calc(var(--ion-safe-area-left, 0px) + 4px)}ion-loading.md:not(.md3-disabled) .loading-wrapper{border-radius:24px;box-shadow:var(--token-elevation-3)}ion-modal.md:not(.md3-disabled){--box-shadow: var(--token-elevation-3)}@media only screen and (min-width: 768px)and (min-height: 600px){ion-modal.md:not(.md3-disabled){--border-radius: 24px}}ion-modal.md:not(.md3-disabled) ion-toolbar{--min-height: 64px}ion-modal.md:not(.md3-disabled) ion-toolbar:first-of-type{padding-top:calc(var(--ion-safe-area-top, 0) + 6px)}ion-modal.md:not(.md3-disabled) ion-toolbar{padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left)}ion-modal.md:not(.md3-disabled) ion-toolbar ion-button.button-has-icon-only::part(native){width:48px;height:48px}ion-modal.md:not(.md3-disabled) ion-toolbar ion-button.button-has-icon-only ion-icon[name=close-outline]{font-size:2rem}ion-modal.md:not(.md3-disabled)::part(handle){width:80px}ion-modal.md:not(.md3-disabled).modal-sheet{--border-radius: 30px}ion-modal.md:not(.md3-disabled).modal-sheet ion-toolbar:first-of-type{padding-top:6px}ion-popover.md:not(.md3-disabled){--box-shadow: var(--token-elevation-3)}ion-popover.md:not(.md3-disabled)::part(content){border-radius:12px}ion-popover.md:not(.md3-disabled) ion-select-popover ion-list{padding:0}ion-range.md:not(.md3-disabled){--height: 56px;--bar-height: 16px;--bar-border-radius: 8px;--knob-background: var(--ion-color-primary);--knob-box-shadow: none;--knob-border-radius: 8px;--knob-size: 44px;--pin-background: var(--ion-background-color-step-700, #4a4458)}ion-range.md:not(.md3-disabled).range-has-pin{padding-top:2.6rem}ion-range.md:not(.md3-disabled)::part(knob){width:4px;transition:width var(--token-expressive-fast-effects),transform var(--token-expressive-fast-effects),outline var(--token-expressive-fast-effects);will-change:width;transform:translateX(calc(var(--knob-size) / 2 - 2px))}ion-range.md:not(.md3-disabled)::part(knob):before{content:none}ion-range.md:not(.md3-disabled).ion-color{--knob-background: var(--ion-color-base, var(--ion-color-primary))}ion-range.md:not(.md3-disabled)::part(tick),ion-range.md:not(.md3-disabled)::part(tick-active){--bar-height: 4px}ion-range.md:not(.md3-disabled):not(.range-dual-knobs).range-pressed::part(knob){width:2px;transform:translateX(calc(var(--knob-size) / 2 - 1px))}ion-range.md:not(.md3-disabled):not(.range-dual-knobs):not(.range-value-min):not(.range-value-max)::part(knob){outline:6px solid var(--ion-background-color, #ffffff)}ion-range.md:not(.md3-disabled):not(.range-dual-knobs).range-pressed:not(.range-value-min):not(.range-value-max)::part(knob){outline:7px solid var(--ion-background-color, #ffffff)}ion-range.md:not(.md3-disabled):not(.range-dual-knobs):not(.range-value-max)::part(bar-active){border-top-right-radius:calc(var(--knob-border-radius)/2);border-bottom-right-radius:calc(var(--knob-border-radius)/2);margin-right:6px}ion-range.md:not(.md3-disabled):not(.range-dual-knobs).range-value-min::part(bar){border-top-left-radius:calc(var(--knob-border-radius)/2);border-bottom-left-radius:calc(var(--knob-border-radius)/2);width:calc(100% - 6px);right:0}ion-range.md:not(.md3-disabled):not(.range-dual-knobs).range-value-max::part(bar),ion-range.md:not(.md3-disabled):not(.range-dual-knobs).range-value-max::part(bar-active){border-top-right-radius:calc(var(--knob-border-radius)/2);border-bottom-right-radius:calc(var(--knob-border-radius)/2);width:calc(100% - 6px);left:0}ion-range.md:not(.md3-disabled).range-dual-knobs.range-pressed-a::part(knob-a),ion-range.md:not(.md3-disabled).range-dual-knobs.range-pressed-b::part(knob-b){width:2px;transform:translateX(calc(var(--knob-size) / 2 - 1px))}ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-min::part(bar),ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-min::part(bar-active){border-top-left-radius:calc(var(--knob-border-radius)/2);border-bottom-left-radius:calc(var(--knob-border-radius)/2);margin-left:6px}ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-min::part(bar){width:calc(100% - 6px)}ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-max::part(bar),ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-max::part(bar-active){border-top-right-radius:calc(var(--knob-border-radius)/2);border-bottom-right-radius:calc(var(--knob-border-radius)/2);margin-right:6px}ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-max::part(bar){width:calc(100% - 6px)}ion-range.md:not(.md3-disabled).range-dual-knobs.range-value-min.range-value-max::part(bar){width:calc(100% - 12px)}ion-range.md:not(.md3-disabled).range-dual-knobs:not(.range-value-min)::part(knob-lower),ion-range.md:not(.md3-disabled).range-dual-knobs:not(.range-value-max)::part(knob-upper){outline:6px solid var(--ion-background-color, #ffffff)}ion-range.md:not(.md3-disabled).range-dual-knobs.range-pressed:not(.range-value-min)::part(knob-lower),ion-range.md:not(.md3-disabled).range-dual-knobs.range-pressed:not(.range-value-max)::part(knob-upper){outline:7px solid var(--ion-background-color, #ffffff)}ion-range.md:not(.md3-disabled)::part(pin){padding:16px;min-width:36px;top:10px}ion-range.md:not(.md3-disabled)::part(pin):before{content:none}ion-searchbar.md:not(.md3-disabled){--box-shadow: none;--border-radius: 999px;--background: rgba(var(--ion-color-contrast-rgb, var(--ion-text-color-rgb, 0, 0, 0)), 0.08);--color: rgb(var(--ion-color-contrast-rgb, var(--ion-text-color-rgb, 0, 0, 0)));--icon-color: rgb(var(--ion-color-contrast-rgb, var(--ion-text-color-rgb, 0, 0, 0)))}ion-segment.md:not(.md3-disabled){border-bottom:1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.13)))))}ion-tab-bar.md:not(.md3-disabled){height:62px}ion-tab-bar.md:not(.md3-disabled) ion-tab-button{--ripple-color: transparent;--color-selected: var(--ion-color-contrast, var(--ion-color-primary-shade))}ion-tab-bar.md:not(.md3-disabled) ion-tab-button ion-icon{padding:4px 16px;margin-top:6px;border-radius:16px;width:24px;height:24px}ion-tab-bar.md:not(.md3-disabled) ion-tab-button ion-icon::before{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background-color:rgba(var(--ion-color-contrast-rgb, var(--ion-color-primary-rgb, 2, 137, 255)), 0.2);transform:scaleX(0);transition:transform var(--token-expressive-fast-effects);z-index:-1}ion-tab-bar.md:not(.md3-disabled) ion-tab-button ion-label{margin-top:2px;margin-bottom:6px}ion-tab-bar.md:not(.md3-disabled) ion-tab-button.tab-selected ion-icon::before{transform:scaleX(1)}ion-toast.md:not(.md3-disabled){--box-shadow: var(--token-elevation-3);--border-radius: 8px}ion-toggle.md:not(.md3-disabled){--handle-width: 24px;--handle-height: 24px;--handle-border-radius: 16px;--border-radius: 16px;--handle-box-shadow: none;--handle-spacing: 2px;--handle-transition: transform var(--token-expressive-default-special), background-color var(--token-expressive-default-effects);--track-background: var(--ion-background-color-step-100, #e6e0e9);--handle-background: var(--ion-text-color-step-450, #79747e)}ion-toggle.md:not(.md3-disabled)::part(track){box-sizing:border-box;min-height:32px;min-width:52px;border:2px solid var(--ion-text-color-step-450, #79747e)}ion-toggle.md:not(.md3-disabled).toggle-checked{--track-background-checked: var(--ion-color-base);--handle-background-checked: var(--ion-color-contrast)}ion-toggle.md:not(.md3-disabled).toggle-checked::part(track){border-color:var(--ion-color-base)}ion-toggle.md:not(.md3-disabled):not(.ion-color).toggle-checked{--track-background-checked: var(--ion-color-primary);--handle-background-checked: var(--ion-color-primary-contrast)}ion-toggle.md:not(.md3-disabled):not(.ion-color).toggle-checked::part(track){border-color:var(--ion-color-primary)}ion-header.md:not(.md3-disabled),ion-footer.md:not(.md3-disabled){box-shadow:none}ion-toolbar.md:not(.md3-disabled) ion-buttons[slot=start],ion-toolbar.md:not(.md3-disabled) ion-back-button[slot=start]{margin-left:16px}ion-toolbar.md:not(.md3-disabled) ion-buttons[slot=end],ion-toolbar.md:not(.md3-disabled) ion-back-button[slot=end]{margin-right:16px}ion-toolbar.md:not(.md3-disabled) ion-buttons>ion-back-button{margin-left:0;margin-right:0}ion-toolbar.md:not(.md3-disabled):has(>[slot=start]) ion-title{padding-inline-start:4px}ion-toolbar.md:not(.md3-disabled):not(:has(>[slot=start])) ion-title{padding-inline-start:28px}ion-toolbar.md:not(.md3-disabled).toolbar-searchbar:not(:has(>[slot=start])){--padding-start: 10px}ion-toolbar.md:not(.md3-disabled).toolbar-searchbar:not(:has(>[slot=end])){--padding-end: 10px}ion-toolbar.md:not(.md3-disabled) ion-back-button.back-button-has-icon-only{--icon-font-size: 24px;--min-width: 48px;--min-height: 48px;--padding-top: 0;--padding-end: 0;--padding-bottom: 0;--padding-start: 0}ion-toolbar.md:not(.md3-disabled) ion-button.button-has-icon-only:not(.button-small):not(.button-large)::part(native){width:48px;height:48px}ion-toolbar.md:not(.md3-disabled) ion-button.button-has-icon-only:not(.button-small):not(.button-large).button-solid::part(native){width:40px;height:40px}
|
package/docs/eslint.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Keep lists consistent with ESLint
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Catch missing list groups before they reach the screen. In Ionic Angular apps, `@rdlabo/eslint-plugin-rules` checks the markup used by Material Design 3.
|
|
6
|
+
|
|
7
|
+
## Enable the list check
|
|
8
|
+
|
|
9
|
+
This setup targets Ionic Angular 9 with Angular / Angular ESLint 21–22. Install plugin 22 in an app that already has Angular ESLint configured:
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
npm install --save-dev @rdlabo/eslint-plugin-rules@22
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Add the plugin to the existing HTML config in `eslint.config.mjs` (or the equivalent CommonJS config). Keep `angular.processInlineTemplates` on the TypeScript config so inline templates are checked too:
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
import tseslint from 'typescript-eslint';
|
|
19
|
+
import angular from 'angular-eslint';
|
|
20
|
+
import rdlabo from '@rdlabo/eslint-plugin-rules';
|
|
21
|
+
|
|
22
|
+
export default tseslint.config(
|
|
23
|
+
{
|
|
24
|
+
files: ['**/*.ts'],
|
|
25
|
+
languageOptions: { parser: tseslint.parser },
|
|
26
|
+
processor: angular.processInlineTemplates,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
files: ['**/*.html'],
|
|
30
|
+
languageOptions: { parser: angular.templateParser },
|
|
31
|
+
plugins: { '@rdlabo/rules': rdlabo },
|
|
32
|
+
rules: {
|
|
33
|
+
'@rdlabo/rules/require-ion-item-group': 'error',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
);
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Merge these entries into your existing configuration to retain its other checks. Already using `rdlabo.configs.recommended`? It includes this rule.
|
|
40
|
+
|
|
41
|
+
## See what it catches
|
|
42
|
+
|
|
43
|
+
This template is reported:
|
|
44
|
+
|
|
45
|
+
```html
|
|
46
|
+
<ion-list [inset]="true">
|
|
47
|
+
<ion-item>Notifications</ion-item>
|
|
48
|
+
</ion-list>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Group the items and import `IonItemGroup` in the standalone component:
|
|
52
|
+
|
|
53
|
+
```html
|
|
54
|
+
<ion-list [inset]="true">
|
|
55
|
+
<ion-item-group>
|
|
56
|
+
<ion-item>Notifications</ion-item>
|
|
57
|
+
</ion-item-group>
|
|
58
|
+
</ion-list>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
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
|
+
|
|
63
|
+
See [Using ion-item-group](https://docs.rdlabo.dev/projects/ionic-theme-md3/docs/using-ion-item-group) 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
|
+
|
|
65
|
+
## Keep it checked
|
|
66
|
+
|
|
67
|
+
Run this locally and in CI after installing dependencies:
|
|
68
|
+
|
|
69
|
+
```sh
|
|
70
|
+
npx eslint 'src/**/*.{ts,html}' --max-warnings 0
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
If your Angular project uses a different source directory, adjust the path. Keep a visual check for spacing, colors, and transitions; this rule checks list structure.
|
|
@@ -20,9 +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
|
-
|
|
24
|
-
|
|
25
|
-
In Ionic Angular applications, the [`@rdlabo/rules/require-ion-item-group`](https://docs.rdlabo.dev/projects/eslint-plugin-rules/docs/rules/require-ion-item-group) ESLint rule checks that each `ion-item` in an `ion-list` is wrapped by the group component that matches its behavior. The rule is included in the recommended preset and can automatically fix some violations.
|
|
23
|
+
[Check list structure with ESLint](https://docs.rdlabo.dev/projects/ionic-theme-md3/docs/eslint).
|
|
26
24
|
|
|
27
25
|
## Why the wrapper is required
|
|
28
26
|
|
|
@@ -34,4 +32,4 @@ The theme therefore:
|
|
|
34
32
|
- applies the item surface to `ion-item-group`; and
|
|
35
33
|
- leaves `ion-list-header` outside that surface.
|
|
36
34
|
|
|
37
|
-
For two-line items and section-header groups, see [Special markup](
|
|
35
|
+
For two-line items and section-header groups, see [Special markup](https://docs.rdlabo.dev/projects/ionic-theme-md3/docs/special-markup).
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rdlabo/ionic-theme-md3",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "9.1.
|
|
4
|
+
"version": "9.1.1-beta.pr45.sha4ac3ec97bfb1",
|
|
5
5
|
"description": "Material Design 3 Theme for Ionic Framework",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
],
|
|
23
23
|
"scripts": {
|
|
24
24
|
"build": "npm run build:css && npm run build:ts",
|
|
25
|
-
"build:css": "rm -rf dist/css && sass src/styles:dist/css --style=compressed --no-source-map",
|
|
25
|
+
"build:css": "rm -rf dist/css && sass src/styles:dist/css --style=compressed --no-source-map --pkg-importer=node",
|
|
26
26
|
"build:ts": "tsc",
|
|
27
27
|
"build:demo": "npm run build && cd demo && npm install && npm run build -- --configuration=production",
|
|
28
28
|
"lint": "prettier --check \"./**/*.{scss,ts}\" && prettier --parser angular --check \"./**/*.html\"",
|
|
@@ -47,6 +47,9 @@
|
|
|
47
47
|
"url": "https://github.com/rdlabo-dev/ionic-theme-md3/issues"
|
|
48
48
|
},
|
|
49
49
|
"homepage": "https://docs.rdlabo.dev/projects/ionic-theme-md3",
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@rdlabo/ionic-theme-utils": "git+ssh://git@github.com/rdlabo-dev/ionic-theme-utils.git#main"
|
|
52
|
+
},
|
|
50
53
|
"devDependencies": {
|
|
51
54
|
"@ionic/angular": "^9.0.0",
|
|
52
55
|
"husky": "^9.1.7",
|
|
@@ -3,8 +3,7 @@ ion-footer.md:not(.md3-disabled) {
|
|
|
3
3
|
box-shadow: none;
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
ion-
|
|
7
|
-
ion-footer.md:not(.md3-disabled) {
|
|
6
|
+
ion-toolbar.md:not(.md3-disabled) {
|
|
8
7
|
ion-buttons[slot='start'],
|
|
9
8
|
ion-back-button[slot='start'] {
|
|
10
9
|
margin-left: 16px;
|
|
@@ -14,22 +13,25 @@ ion-footer.md:not(.md3-disabled) {
|
|
|
14
13
|
margin-right: 16px;
|
|
15
14
|
}
|
|
16
15
|
/* fallback ion-buttons[slot=end], ion-back-button[slot=end] */
|
|
17
|
-
ion-
|
|
16
|
+
ion-buttons > ion-back-button {
|
|
18
17
|
margin-left: 0;
|
|
19
18
|
margin-right: 0;
|
|
20
19
|
}
|
|
21
|
-
}
|
|
22
20
|
|
|
23
|
-
ion-header.md:not(.md3-disabled) ion-toolbar {
|
|
24
21
|
&:has(> [slot='start']) ion-title {
|
|
25
22
|
padding-inline-start: 4px;
|
|
26
23
|
}
|
|
27
24
|
&:not(:has(> [slot='start'])) ion-title {
|
|
28
25
|
padding-inline-start: calc(16px + 12px);
|
|
29
26
|
}
|
|
30
|
-
}
|
|
31
27
|
|
|
32
|
-
|
|
28
|
+
&.toolbar-searchbar:not(:has(> [slot='start'])) {
|
|
29
|
+
--padding-start: 10px;
|
|
30
|
+
}
|
|
31
|
+
&.toolbar-searchbar:not(:has(> [slot='end'])) {
|
|
32
|
+
--padding-end: 10px;
|
|
33
|
+
}
|
|
34
|
+
|
|
33
35
|
ion-back-button.back-button-has-icon-only {
|
|
34
36
|
--icon-font-size: 24px;
|
|
35
37
|
--min-width: 48px;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
$groups: ion-item-group, ion-reorder-group, ion-accordion-group, ion-radio-group;
|
|
2
|
-
|
|
3
|
-
@mixin support-text() {
|
|
4
|
-
ion-item {
|
|
5
|
-
&:has(ion-input.input-fill-outline),
|
|
6
|
-
&:has(ion-textarea.textarea-fill-outline),
|
|
7
|
-
&:has(ion-select:is([helpertext]:not([helpertext='']), [errortext]:not([errortext='']))),
|
|
8
|
-
&:has(ion-input .input-bottom > :is(.helper-text:not(:empty), .error-text:not(:empty), .counter:not(:empty))),
|
|
9
|
-
&:has(ion-textarea .textarea-bottom > :is(.helper-text:not(:empty), .error-text:not(:empty), .counter:not(:empty))) {
|
|
10
|
-
--inner-border-width: 0;
|
|
11
|
-
--inner-padding-bottom: 4px;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
ion-input .input-bottom:not(:has(> :is(.helper-text:not(:empty), .error-text:not(:empty), .counter:not(:empty)))),
|
|
15
|
-
ion-textarea .textarea-bottom:not(:has(> :is(.helper-text:not(:empty), .error-text:not(:empty), .counter:not(:empty)))) {
|
|
16
|
-
display: none;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
@mixin layout($outer-note-inset, $group-border-radius) {
|
|
22
|
-
background: transparent;
|
|
23
|
-
|
|
24
|
-
ion-list-header {
|
|
25
|
-
display: flex;
|
|
26
|
-
align-items: center;
|
|
27
|
-
|
|
28
|
-
ion-label {
|
|
29
|
-
font-size: 0.9rem;
|
|
30
|
-
margin: 8px 4px 4px;
|
|
31
|
-
|
|
32
|
-
&:not(.ion-color) {
|
|
33
|
-
color: var(--ion-color-medium-tint);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
ion-button {
|
|
38
|
-
margin-top: 8px;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
ion-note {
|
|
42
|
-
font-size: 0.9rem;
|
|
43
|
-
margin: 8px 16px 4px 0;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
ion-item-group.item-group-header {
|
|
48
|
-
& > ion-item > ion-label {
|
|
49
|
-
width: 100%;
|
|
50
|
-
text-align: center;
|
|
51
|
-
padding: 32px 16px 16px;
|
|
52
|
-
transform: translateX(5px);
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* ion-header.header-collapse-condenseを使って、スクロールによってHeaderを変化させるトリック
|
|
56
|
-
*/
|
|
57
|
-
ion-header.header-collapse-condense > ion-toolbar {
|
|
58
|
-
--min-height: 0;
|
|
59
|
-
visibility: hidden;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
ion-icon {
|
|
63
|
-
font-size: 2.8rem;
|
|
64
|
-
border-radius: 20%;
|
|
65
|
-
padding: 6px;
|
|
66
|
-
|
|
67
|
-
&:not(.ion-color) {
|
|
68
|
-
color: #ffffff;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
h2 {
|
|
73
|
-
font-size: 1.2rem;
|
|
74
|
-
font-weight: bold;
|
|
75
|
-
margin-top: 8px;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
ion-text {
|
|
79
|
-
font-size: 0.9rem;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
> :is(#{$groups}) {
|
|
85
|
-
display: block;
|
|
86
|
-
border-radius: $group-border-radius;
|
|
87
|
-
overflow: hidden;
|
|
88
|
-
|
|
89
|
-
&:has(> .radio-group-top) {
|
|
90
|
-
display: flex;
|
|
91
|
-
flex-direction: column;
|
|
92
|
-
border-radius: 0;
|
|
93
|
-
overflow: visible;
|
|
94
|
-
|
|
95
|
-
> .radio-group-top {
|
|
96
|
-
order: 1;
|
|
97
|
-
font-size: 0.9rem;
|
|
98
|
-
padding-block-start: 8px;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
> ion-item:first-of-type {
|
|
102
|
-
--border-radius: #{$group-border-radius} #{$group-border-radius} 0 0;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
> ion-item:last-of-type {
|
|
106
|
-
--border-radius: 0 0 #{$group-border-radius} #{$group-border-radius};
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
&:not(:first-of-type) {
|
|
111
|
-
margin-top: 16px;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
ion-item {
|
|
115
|
-
&:has(> ion-label:not([slot])):has(> ion-note:not([slot])) {
|
|
116
|
-
&::part(container) {
|
|
117
|
-
flex-direction: column;
|
|
118
|
-
justify-content: center;
|
|
119
|
-
padding-top: 14px;
|
|
120
|
-
padding-bottom: 14px;
|
|
121
|
-
min-height: 64px;
|
|
122
|
-
}
|
|
123
|
-
& > ion-label,
|
|
124
|
-
& > ion-note {
|
|
125
|
-
width: auto;
|
|
126
|
-
align-self: flex-start;
|
|
127
|
-
}
|
|
128
|
-
& > ion-label {
|
|
129
|
-
margin: 0;
|
|
130
|
-
font-weight: 500;
|
|
131
|
-
font-size: 1.15rem;
|
|
132
|
-
line-height: 0.9rem;
|
|
133
|
-
}
|
|
134
|
-
& > ion-note {
|
|
135
|
-
font-size: 0.85rem;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
ion-text[slot='end'] {
|
|
140
|
-
padding-left: 8px;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
&.item-disabled {
|
|
144
|
-
--detail-icon-opacity: 0.1;
|
|
145
|
-
opacity: 1;
|
|
146
|
-
|
|
147
|
-
& > * {
|
|
148
|
-
opacity: 0.4;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
ion-button[slot='end'] {
|
|
153
|
-
&.ion-align-self-end {
|
|
154
|
-
transform: translateY(-7px);
|
|
155
|
-
}
|
|
156
|
-
ion-icon[slot='icon-only'] {
|
|
157
|
-
font-size: 1.2rem;
|
|
158
|
-
transform: translateY(4px);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
& > ion-note {
|
|
165
|
-
--color: var(--ion-color-medium-tint);
|
|
166
|
-
font-size: 0.9rem;
|
|
167
|
-
display: block;
|
|
168
|
-
margin: 8px calc(var(--ion-safe-area-right, 0) + $outer-note-inset) 8px calc(var(--ion-safe-area-left, 0) + $outer-note-inset);
|
|
169
|
-
}
|
|
170
|
-
}
|