@swiftwc/ui 0.0.0-dev.3 → 0.0.0-dev.5

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.
Files changed (91) hide show
  1. package/generated/client/index.d.ts +5 -1
  2. package/generated/client/index.js +222 -7
  3. package/generated/components/body-view.d.ts +5 -0
  4. package/generated/components/body-view.js +11 -0
  5. package/generated/components/borderless-button.d.ts +9 -0
  6. package/generated/components/borderless-button.js +25 -0
  7. package/generated/components/bottom-bar.d.ts +10 -0
  8. package/generated/components/bottom-bar.js +73 -0
  9. package/generated/components/disclosure-group.d.ts +12 -0
  10. package/generated/components/disclosure-group.js +76 -0
  11. package/generated/components/index.d.ts +15 -1
  12. package/generated/components/index.js +15 -1
  13. package/generated/components/navigation-bar.d.ts +10 -0
  14. package/generated/components/navigation-bar.js +80 -0
  15. package/generated/components/navigation-split-view.d.ts +5 -0
  16. package/generated/components/navigation-split-view.js +9 -0
  17. package/generated/components/navigation-stack.d.ts +6 -0
  18. package/generated/components/navigation-stack.js +67 -0
  19. package/generated/components/screen-view.d.ts +5 -0
  20. package/generated/components/screen-view.js +9 -0
  21. package/generated/components/scroll-view.d.ts +8 -0
  22. package/generated/components/scroll-view.js +80 -0
  23. package/generated/components/sheet-view.d.ts +9 -0
  24. package/generated/components/sheet-view.js +26 -0
  25. package/generated/components/sidebar-toggle.d.ts +7 -0
  26. package/generated/components/sidebar-toggle.js +81 -0
  27. package/generated/components/sidebar-view.d.ts +9 -0
  28. package/generated/components/sidebar-view.js +26 -0
  29. package/generated/components/tab-bar.d.ts +9 -0
  30. package/generated/components/tab-bar.js +26 -0
  31. package/generated/components/tab-item.d.ts +6 -0
  32. package/generated/components/tab-item.js +35 -0
  33. package/generated/components/tab-view.d.ts +7 -0
  34. package/generated/components/tab-view.js +29 -0
  35. package/generated/components/v-keyboard.d.ts +9 -0
  36. package/generated/components/v-keyboard.js +82 -0
  37. package/generated/index.js +1 -1
  38. package/generated/internal/class.d.ts +18 -0
  39. package/generated/internal/class.js +18 -0
  40. package/generated/internal/utils/css-time.d.ts +1 -0
  41. package/generated/internal/utils/css-time.js +3 -0
  42. package/generated/internal/utils/index.d.ts +2 -1
  43. package/generated/internal/utils/index.js +2 -1
  44. package/generated/internal/utils/kebab-case.js +3 -3
  45. package/generated/namespace/index.d.ts +6 -0
  46. package/generated/namespace/index.js +1 -0
  47. package/generated/snapshot/index.d.ts +16 -0
  48. package/generated/snapshot/index.js +150 -0
  49. package/generated/styles.css +1298 -1
  50. package/package.json +8 -4
  51. package/scss/_base.scss +5 -0
  52. package/scss/_components.scss +39 -0
  53. package/scss/_dev.scss +68 -0
  54. package/scss/_functions.scss +21 -0
  55. package/scss/_mixins.scss +172 -0
  56. package/scss/_transitions.scss +11 -0
  57. package/scss/_vars.scss +57 -0
  58. package/scss/base/_layout.scss +40 -0
  59. package/scss/base/_reboot.scss +55 -0
  60. package/scss/base/_root.scss +69 -0
  61. package/scss/colors/_index.scss +99 -0
  62. package/scss/components/_body-view.scss +8 -0
  63. package/scss/components/_borderless-button.scss +14 -0
  64. package/scss/components/_disclosure-group.scss +80 -0
  65. package/scss/components/_full-screen.scss +13 -0
  66. package/scss/components/_index.scss +24 -0
  67. package/scss/components/_navigation-split-view.scss +364 -0
  68. package/scss/components/_navigation-stack.scss +11 -0
  69. package/scss/components/_scroll-view.scss +86 -0
  70. package/scss/components/_sheet-view.scss +60 -0
  71. package/scss/components/_sidebar-toggle.scss +61 -0
  72. package/scss/components/_sidebar-view.scss +63 -0
  73. package/scss/components/_tab-bar-stack.scss +101 -0
  74. package/scss/components/_tab-bar.scss +137 -0
  75. package/scss/components/_tab-view.scss +168 -0
  76. package/scss/components/_tool-bar-item-group.scss +37 -0
  77. package/scss/components/_tool-bar-item.scss +87 -0
  78. package/scss/components/_tool-bar.scss +90 -0
  79. package/scss/components/_toolbars.scss +100 -0
  80. package/scss/components/_v-keyboard.scss +12 -0
  81. package/scss/components/_v-stack.scss +19 -0
  82. package/scss/index.scss +11 -6
  83. package/scss/transitions/_bwd.navbar.scss +29 -0
  84. package/scss/transitions/_bwd.scss +55 -0
  85. package/scss/transitions/_dialog.scss +32 -0
  86. package/scss/transitions/_fwd.navbar.scss +46 -0
  87. package/scss/transitions/_fwd.scss +54 -0
  88. package/scss/transitions/_index.scss +182 -0
  89. package/generated/internal/snapshot.d.ts +0 -5
  90. package/generated/internal/snapshot.js +0 -23
  91. package/scss/_reboot.scss +0 -11
@@ -1,8 +1,1305 @@
1
- @layer base, components, transitions;
1
+ @layer final {
2
+ #console {
3
+ position: fixed;
4
+ left: 30%;
5
+ bottom: 50%;
6
+ z-index: 999999999;
7
+ }
8
+ #tb {
9
+ position: fixed;
10
+ box-shadow: inset 0 0 0 12px greenyellow;
11
+ top: env(titlebar-area-y);
12
+ width: env(titlebar-area-width);
13
+ left: env(titlebar-area-x);
14
+ height: env(titlebar-area-height);
15
+ z-index: 999999999;
16
+ }
17
+ #sa {
18
+ position: fixed;
19
+ box-shadow: inset 0 0 0 10px green;
20
+ inset: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
21
+ z-index: 999999999;
22
+ }
23
+ #kb {
24
+ display: grid;
25
+ position: fixed;
26
+ box-shadow: inset 0 0 0 8px red;
27
+ background-color: rosybrown;
28
+ top: env(keyboard-inset-top, var(--keyboard-inset-top));
29
+ /* right: env(keyboard-inset-right, 0); */
30
+ left: env(keyboard-inset-left, 0);
31
+ /* bottom: env(keyboard-inset-bottom, 0px); */
32
+ height: env(keyboard-inset-height, var(--keyboard-inset-height));
33
+ width: env(keyboard-inset-width, 100lvw);
34
+ z-index: 999999999;
35
+ }
36
+ #dv {
37
+ position: fixed;
38
+ box-shadow: inset 0 0 0 6px blue;
39
+ top: 0vh;
40
+ left: 0vw;
41
+ width: 100vw;
42
+ height: 100vh;
43
+ z-index: 999999999;
44
+ }
45
+ #sv {
46
+ position: fixed;
47
+ box-shadow: inset 0 0 0 4px magenta;
48
+ top: 0svh;
49
+ left: 0svw;
50
+ width: 100svw;
51
+ height: 100svh;
52
+ z-index: 999999999;
53
+ }
54
+ #lv {
55
+ position: fixed;
56
+ box-shadow: inset 0 0 0 2px maroon;
57
+ top: 0lvh;
58
+ left: 0lvw;
59
+ width: 100lvw;
60
+ height: 100lvh;
61
+ z-index: 999999999;
62
+ }
63
+ }
64
+ @layer components {
65
+ :root {
66
+ --safe-area-inset-top: env(safe-area-inset-top);
67
+ --safe-area-inset-right: env(safe-area-inset-right);
68
+ --safe-area-inset-bottom: env(safe-area-inset-bottom);
69
+ --safe-area-inset-left: env(safe-area-inset-left);
70
+ --tool-bar-height: 4rem;
71
+ --tab-bar-iphone-max-width: 90svw;
72
+ --tab-bar-iphone-height: var(--tool-bar-height);
73
+ --tab-bar-iphone-border-radius: 9999px;
74
+ --tab-bar-ipad-width: 21rem;
75
+ --tab-bar-ipad-height: 3rem;
76
+ --tab-bar-ipad-border-radius: 9999px;
77
+ --tab-bar-sidebar-width: 20rem;
78
+ --tab-bar-sidebar-border-radius: 1rem;
79
+ --tab-bar-sidebar-spacing: 1rem;
80
+ --navigation-bar-height: 4rem;
81
+ --nav-split-view-sidebar-width: 20rem;
82
+ --nav-split-view-content-width: 25rem;
83
+ --primary-text: black;
84
+ --primary-bg: aliceblue;
85
+ --secondary-bg: burlywood;
86
+ --view-transition-leading-x: -50%;
87
+ --view-transition-principal-x: 0%;
88
+ --view-transition-trailing-x: 100%;
89
+ --view-transition-toolbar-cell-onscreen-scale: 1;
90
+ --view-transition-toolbar-cell-offscreen-scale: 0;
91
+ --view-transition-dialog-onscreen-y: 0lvh;
92
+ --view-transition-dialog-onscreen-backdrop-bg: rgb(0 0 0 / 25%);
93
+ --view-transition-dialog-offscreen-y: 100lvh;
94
+ --view-transition-duration: 500ms;
95
+ --pill-border-radius: 99999px;
96
+ --toolbar-col-gap: 0.6rem;
97
+ --toolbar-cell-bg: white;
98
+ --toolbar-cell-inline-padding: 0.3rem;
99
+ --toolbar-cell-block-padding: 0.3rem;
100
+ --toolbar-cell-border-radius: var(--pill-border-radius);
101
+ --toolbar-cell-focus-bg: lightpink;
102
+ --toolbar-cell-active-bg: gray;
103
+ --disclosure-group-animation-duration: 500ms;
104
+ --disclosure-group-animation-easing: ease-out;
105
+ }
106
+ }
107
+ @layer base, components, colors, actions, transitions, final;
2
108
  @layer base {
109
+ :root {
110
+ interpolate-size: allow-keywords;
111
+ }
3
112
  *,
4
113
  *::before,
5
114
  *::after {
6
115
  box-sizing: border-box;
7
116
  }
117
+ body {
118
+ background-color: var(--primary-bg);
119
+ }
120
+ body {
121
+ display: grid;
122
+ position: absolute;
123
+ inset: 0;
124
+ margin: 0;
125
+ padding: 0;
126
+ touch-action: none !important;
127
+ }
128
+ html::before {
129
+ content: "disclosure-group-animation-close-class=close&disclosure-group-animation-duration-css-prop=--disclosure-group-animation-duration&disclosure-group-contents-height-css-prop=--disclosure-group-contents-height&vt-fwd-class-name=fwd";
130
+ display: none;
131
+ }
132
+ }
133
+ @layer components {
134
+ body-view,
135
+ navigation-stack,
136
+ navigation-split-view,
137
+ dialog[is=full-screen],
138
+ dialog[is=sheet-view] {
139
+ position: relative;
140
+ grid-auto-flow: column;
141
+ grid-template-columns: minmax(0, 1fr);
142
+ grid-template-rows: minmax(0, 1fr);
143
+ }
144
+ body-view > *:not([slot]),
145
+ navigation-stack > *:not([slot]),
146
+ navigation-split-view > *:not([slot]),
147
+ dialog[is=full-screen] > *:not([slot]),
148
+ dialog[is=sheet-view] > *:not([slot]) {
149
+ grid-column: 1/-1;
150
+ grid-row: 1/-1;
151
+ }
152
+ navigation-stack:has(> navigation-stack:not([hidden])) > scroll-view,
153
+ navigation-stack:has(> navigation-stack:not([hidden])) [is=sidebar-view] > scroll-view,
154
+ navigation-stack:has(> body-view) > scroll-view,
155
+ navigation-stack:has(> body-view) [is=sidebar-view] > scroll-view,
156
+ navigation-split-view:has(> body-view) > scroll-view,
157
+ navigation-split-view:has(> body-view) [is=sidebar-view] > scroll-view,
158
+ dialog:has(> body-view) > scroll-view,
159
+ dialog:has(> body-view) [is=sidebar-view] > scroll-view,
160
+ body-view:has(> body-view) > scroll-view,
161
+ body-view:has(> body-view) [is=sidebar-view] > scroll-view {
162
+ transform: translateX(var(--view-transition-leading-x));
163
+ }
164
+ navigation-stack:has(> navigation-stack:not([hidden])) > navigation-bar > tool-bar-item, navigation-stack:has(> navigation-stack:not([hidden])) > bottom-bar > tool-bar-item, navigation-stack:has(> navigation-stack:not([hidden])) > navigation-bar > tool-bar-item-group, navigation-stack:has(> navigation-stack:not([hidden])) > bottom-bar > tool-bar-item-group,
165
+ navigation-stack:has(> body-view) > navigation-bar > tool-bar-item,
166
+ navigation-stack:has(> body-view) > bottom-bar > tool-bar-item,
167
+ navigation-stack:has(> body-view) > navigation-bar > tool-bar-item-group,
168
+ navigation-stack:has(> body-view) > bottom-bar > tool-bar-item-group,
169
+ navigation-split-view:has(> body-view) > navigation-bar > tool-bar-item,
170
+ navigation-split-view:has(> body-view) > bottom-bar > tool-bar-item,
171
+ navigation-split-view:has(> body-view) > navigation-bar > tool-bar-item-group,
172
+ navigation-split-view:has(> body-view) > bottom-bar > tool-bar-item-group,
173
+ dialog:has(> body-view) > navigation-bar > tool-bar-item,
174
+ dialog:has(> body-view) > bottom-bar > tool-bar-item,
175
+ dialog:has(> body-view) > navigation-bar > tool-bar-item-group,
176
+ dialog:has(> body-view) > bottom-bar > tool-bar-item-group,
177
+ body-view:has(> body-view) > navigation-bar > tool-bar-item,
178
+ body-view:has(> body-view) > bottom-bar > tool-bar-item,
179
+ body-view:has(> body-view) > navigation-bar > tool-bar-item-group,
180
+ body-view:has(> body-view) > bottom-bar > tool-bar-item-group {
181
+ transform: scale(var(--view-transition-toolbar-cell-offscreen-scale));
182
+ }
183
+ }
184
+ @layer components {
185
+ navigation-stack:not([hidden]),
186
+ navigation-split-view:not([hidden]),
187
+ scroll-view,
188
+ body-view,
189
+ tab-view,
190
+ [is=sidebar-view],
191
+ [is=tab-bar],
192
+ [is=full-screen],
193
+ [is=sheet-view],
194
+ tool-bar-item,
195
+ tool-bar-item-group,
196
+ sidebar-toggle,
197
+ navigation-bar,
198
+ bottom-bar,
199
+ tab-bar-stack,
200
+ v-stack,
201
+ tool-bar {
202
+ display: grid;
203
+ }
204
+ }
205
+ @layer components {
206
+ v-keyboard {
207
+ position: fixed;
208
+ inset: 0lvh auto auto 0lvw;
209
+ width: 100lvw;
210
+ height: 100lvh;
211
+ }
212
+ }
213
+ @layer components {
214
+ [is=disclosure-group] {
215
+ display: grid;
216
+ overflow: clip;
217
+ }
218
+ [is=disclosure-group] summary {
219
+ list-style: none;
220
+ }
221
+ [is=disclosure-group]::details-content {
222
+ background: transparent !important;
223
+ block-size: 0;
224
+ transition: block-size var(--disclosure-group-animation-duration) allow-discrete var(--disclosure-group-animation-easing), content-visibility var(--disclosure-group-animation-duration) allow-discrete var(--disclosure-group-animation-easing);
225
+ will-change: block-size, content-visibility;
226
+ }
227
+ [is=disclosure-group] > *:not(summary) {
228
+ margin: 0 !important;
229
+ }
230
+ [is=disclosure-group][open]::details-content {
231
+ block-size: auto;
232
+ }
233
+ @supports not (interpolate-size: allow-keywords) {
234
+ [is=disclosure-group]::details-content {
235
+ block-size: auto !important;
236
+ transition: max-height var(--disclosure-group-animation-duration) allow-discrete var(--disclosure-group-animation-easing), transform var(--disclosure-group-animation-duration) allow-discrete var(--disclosure-group-animation-easing);
237
+ will-change: max-height, transform;
238
+ max-height: 0;
239
+ }
240
+ [is=disclosure-group][open]::details-content {
241
+ max-height: calc(var(--disclosure-group-contents-height, 100vh) + 100px);
242
+ }
243
+ [is=disclosure-group].close::details-content {
244
+ max-height: 0 !important;
245
+ }
246
+ }
247
+ }
248
+ @layer components {}
249
+ @layer components {
250
+ tab-view {
251
+ grid-template-columns: subgrid;
252
+ grid-template-rows: subgrid;
253
+ }
254
+ body {
255
+ grid-template-rows: 1fr;
256
+ grid-template-columns: minmax(0px, 1fr);
257
+ }
258
+ @media (orientation: landscape) {
259
+ tab-view navigation-stack > scroll-view:not(dialog scroll-view), tab-view navigation-split-view > scroll-view:not(dialog scroll-view), tab-view body-view > scroll-view:not(dialog scroll-view), tab-view scroll-view:not(dialog scroll-view) ~ navigation-bar, tab-view scroll-view:not(dialog scroll-view) ~ bottom-bar {
260
+ --safe-area-inset-top: max(
261
+ env(safe-area-inset-top),
262
+ var(--tab-bar-sidebar-spacing)
263
+ );
264
+ --safe-area-inset-bottom: max(
265
+ env(safe-area-inset-bottom),
266
+ var(--tab-bar-sidebar-spacing)
267
+ );
268
+ }
269
+ tab-view navigation-split-view > [is=sidebar-view] > scroll-view {
270
+ --safe-area-inset-top: max(
271
+ env(safe-area-inset-top),
272
+ var(--tab-bar-sidebar-spacing)
273
+ );
274
+ --safe-area-inset-bottom: max(
275
+ env(safe-area-inset-bottom),
276
+ var(--tab-bar-sidebar-spacing)
277
+ );
278
+ }
279
+ }
280
+ @media (max-width: 42.9999rem) and (orientation: portrait) {
281
+ tab-view navigation-stack > scroll-view:not(dialog scroll-view), tab-view navigation-split-view > scroll-view:not(dialog scroll-view), tab-view body-view > scroll-view:not(dialog scroll-view), tab-view scroll-view:not(dialog scroll-view) ~ navigation-bar, tab-view scroll-view:not(dialog scroll-view) ~ bottom-bar {
282
+ --safe-area-inset-bottom: max(
283
+ env(safe-area-inset-bottom),
284
+ var(--tab-bar-sidebar-spacing)
285
+ );
286
+ }
287
+ tab-view navigation-split-view > [is=sidebar-view] > scroll-view {
288
+ --safe-area-inset-bottom: max(
289
+ env(safe-area-inset-bottom),
290
+ var(--tab-bar-sidebar-spacing)
291
+ );
292
+ }
293
+ }
294
+ @media (max-width: 67.9999rem) and (orientation: landscape) {
295
+ tab-view scroll-view:not(dialog scroll-view) ~ navigation-bar, tab-view scroll-view:not(dialog scroll-view) ~ bottom-bar {
296
+ --safe-area-inset-left: var(--tabview-padding-inline-start, 0px);
297
+ }
298
+ }
299
+ @media (min-width: 43rem) and (orientation: portrait) {
300
+ tab-view navigation-stack > scroll-view:not(dialog scroll-view), tab-view navigation-split-view > scroll-view:not(dialog scroll-view), tab-view body-view > scroll-view:not(dialog scroll-view), tab-view scroll-view:not(dialog scroll-view) ~ navigation-bar, tab-view scroll-view:not(dialog scroll-view) ~ bottom-bar {
301
+ --safe-area-inset-top: calc(
302
+ max(env(safe-area-inset-top), var(--tab-bar-sidebar-spacing)) +
303
+ var(--tab-bar-ipad-height)
304
+ );
305
+ }
306
+ tab-view navigation-split-view > [is=sidebar-view] > scroll-view {
307
+ --safe-area-inset-top: calc(
308
+ max(env(safe-area-inset-top), var(--tab-bar-sidebar-spacing)) +
309
+ var(--tab-bar-ipad-height)
310
+ );
311
+ }
312
+ }
313
+ @media (min-width: 68rem) and (orientation: landscape) {
314
+ tab-view navigation-stack > scroll-view:not(dialog scroll-view), tab-view navigation-split-view > scroll-view:not(dialog scroll-view), tab-view body-view > scroll-view:not(dialog scroll-view), tab-view scroll-view:not(dialog scroll-view) ~ navigation-bar, tab-view scroll-view:not(dialog scroll-view) ~ bottom-bar {
315
+ --safe-area-inset-left: calc(
316
+ max(env(safe-area-inset-left), var(--tab-bar-sidebar-spacing)) +
317
+ var(--tab-bar-sidebar-width)
318
+ );
319
+ }
320
+ }
321
+ }
322
+ @layer components {
323
+ [is=tab-bar] {
324
+ inset-inline: 0px;
325
+ inset-block: 0px;
326
+ margin: 0px;
327
+ border: none;
328
+ padding: 0px;
329
+ background-color: transparent;
330
+ color: var(--primary-text);
331
+ max-width: 100lvw;
332
+ max-height: 100lvh;
333
+ outline: none;
334
+ overflow: clip;
335
+ width: fit-content;
336
+ height: auto;
337
+ position: fixed;
338
+ background: rgba(255, 255, 255, 0.6196078431);
339
+ backdrop-filter: blur(4px);
340
+ box-shadow: 0 0 0 1px #fff inset, 0px 0px 4px 2px rgba(0, 0, 0, 0.1098039216);
341
+ transition: all 250ms ease-out allow-discrete;
342
+ touch-action: none;
343
+ }
344
+ [is=tab-bar] navigation-bar,
345
+ [is=tab-bar] bottom-bar {
346
+ padding-inline: 0;
347
+ }
348
+ @media (max-width: 42.9999rem) and (orientation: portrait) {
349
+ [is=tab-bar] {
350
+ max-width: var(--tab-bar-iphone-max-width);
351
+ height: var(--tab-bar-iphone-height);
352
+ border-radius: var(--tab-bar-iphone-border-radius);
353
+ inset: auto auto max(var(--safe-area-inset-bottom), var(--tab-bar-sidebar-spacing)) 50%;
354
+ transform: translateX(-50%);
355
+ grid-auto-flow: column;
356
+ }
357
+ [is=tab-bar]:not([open]) tool-bar {
358
+ display: none;
359
+ }
360
+ }
361
+ @media (min-width: 43rem) and (orientation: portrait) {
362
+ [is=tab-bar] {
363
+ width: var(--tab-bar-ipad-width);
364
+ height: var(--tab-bar-ipad-height);
365
+ inset: max(var(--safe-area-inset-top), var(--tab-bar-sidebar-spacing)) auto auto 50%;
366
+ transform: translateX(-50%);
367
+ border-radius: var(--tab-bar-ipad-border-radius);
368
+ grid-auto-flow: column;
369
+ }
370
+ [is=tab-bar]:not([open]) tool-bar {
371
+ display: none;
372
+ }
373
+ [is=tab-bar][open] {
374
+ inset: max(var(--safe-area-inset-top), var(--tab-bar-sidebar-spacing)) auto max(var(--safe-area-inset-bottom), var(--tab-bar-sidebar-spacing)) max(var(--safe-area-inset-left), var(--tab-bar-sidebar-spacing));
375
+ height: auto;
376
+ transform: translateX(0);
377
+ width: var(--tab-bar-sidebar-width);
378
+ border-radius: var(--tab-bar-sidebar-border-radius);
379
+ grid-auto-flow: row;
380
+ }
381
+ [is=tab-bar][open] > * {
382
+ grid-column: 1/-1;
383
+ grid-row: 1/-1;
384
+ --safe-area-inset-top: 0px !important;
385
+ --safe-area-inset-bottom: 0px !important;
386
+ }
387
+ }
388
+ @media (max-width: 67.9999rem) and (orientation: landscape) {
389
+ [is=tab-bar] {
390
+ inset: max(var(--safe-area-inset-top), var(--tab-bar-sidebar-spacing)) auto max(var(--safe-area-inset-bottom), var(--tab-bar-sidebar-spacing)) -100%;
391
+ width: var(--tab-bar-sidebar-width);
392
+ border-radius: var(--tab-bar-sidebar-border-radius);
393
+ }
394
+ [is=tab-bar][open] {
395
+ left: max(var(--safe-area-inset-left), var(--tab-bar-sidebar-spacing));
396
+ --tabview-padding-inline-start: 0px !important;
397
+ }
398
+ [is=tab-bar][open] > scroll-view {
399
+ --canvas-bg: #ffffff9e;
400
+ }
401
+ }
402
+ @media (min-width: 68rem) and (orientation: landscape) {
403
+ [is=tab-bar] {
404
+ inset: max(var(--safe-area-inset-top), var(--tab-bar-sidebar-spacing)) auto max(var(--safe-area-inset-bottom), var(--tab-bar-sidebar-spacing)) max(var(--safe-area-inset-left), var(--tab-bar-sidebar-spacing));
405
+ width: var(--tab-bar-sidebar-width);
406
+ border-radius: var(--tab-bar-sidebar-border-radius);
407
+ overflow: clip;
408
+ }
409
+ }
410
+ }
411
+ @layer components {
412
+ @media (max-width: 42.9999rem) and (orientation: portrait) {
413
+ [is=tab-bar] > scroll-view {
414
+ grid-auto-flow: column;
415
+ }
416
+ tab-bar-stack {
417
+ grid-auto-flow: column;
418
+ margin-block: 0 !important;
419
+ }
420
+ }
421
+ @media (min-width: 43rem) and (orientation: portrait) {
422
+ tab-bar-stack {
423
+ grid-auto-flow: column;
424
+ }
425
+ [is=tab-bar][open] tab-bar-stack {
426
+ grid-auto-flow: row;
427
+ align-content: start;
428
+ row-gap: 0.5rem;
429
+ }
430
+ [is=tab-bar]:not([open]) tab-bar-stack {
431
+ margin-block: 0 !important;
432
+ }
433
+ [is=tab-bar] > scroll-view {
434
+ overscroll-behavior: contain;
435
+ -webkit-overflow-scrolling: touch;
436
+ grid-auto-flow: column;
437
+ overflow: auto clip;
438
+ }
439
+ [is=tab-bar][open] > scroll-view {
440
+ grid-auto-flow: row;
441
+ overflow: clip auto;
442
+ }
443
+ [is=tab-bar][open] > scroll-view > * {
444
+ grid-column: 1/-1;
445
+ grid-row: 1/-1;
446
+ }
447
+ [is=tab-bar][open] > scroll-view::before {
448
+ grid-column: 1/-1;
449
+ grid-row: 1/-1;
450
+ content: "";
451
+ display: block;
452
+ height: calc(100% + 1px); /* creates overflow */
453
+ z-index: -1;
454
+ pointer-events: none;
455
+ }
456
+ }
457
+ @media (max-width: 67.9999rem) and (orientation: landscape) {
458
+ tab-bar-stack {
459
+ align-content: start;
460
+ row-gap: 0.5rem;
461
+ }
462
+ [is=tab-bar] > scroll-view {
463
+ overflow: clip auto;
464
+ overscroll-behavior: contain;
465
+ -webkit-overflow-scrolling: touch;
466
+ }
467
+ [is=tab-bar] > scroll-view > * {
468
+ grid-column: 1/-1;
469
+ grid-row: 1/-1;
470
+ }
471
+ [is=tab-bar] > scroll-view::before {
472
+ grid-column: 1/-1;
473
+ grid-row: 1/-1;
474
+ content: "";
475
+ display: block;
476
+ height: calc(100% + 1px); /* creates overflow */
477
+ z-index: -1;
478
+ pointer-events: none;
479
+ }
480
+ }
481
+ @media (min-width: 68rem) and (orientation: landscape) {
482
+ tab-bar-stack {
483
+ align-content: start;
484
+ row-gap: 0.5rem;
485
+ }
486
+ [is=tab-bar] > scroll-view {
487
+ overflow: clip auto;
488
+ overscroll-behavior: contain;
489
+ -webkit-overflow-scrolling: touch;
490
+ }
491
+ [is=tab-bar] > scroll-view > * {
492
+ grid-column: 1/-1;
493
+ grid-row: 1/-1;
494
+ }
495
+ [is=tab-bar] > scroll-view::before {
496
+ grid-column: 1/-1;
497
+ grid-row: 1/-1;
498
+ content: "";
499
+ display: block;
500
+ height: calc(100% + 1px); /* creates overflow */
501
+ z-index: -1;
502
+ pointer-events: none;
503
+ }
504
+ }
505
+ }
506
+ @layer components {
507
+ sidebar-toggle {
508
+ background-color: coral;
509
+ place-items: center;
510
+ place-content: center;
511
+ }
512
+ tab-view > sidebar-toggle, navigation-split-view > sidebar-toggle {
513
+ position: fixed;
514
+ inset: max(env(safe-area-inset-top), var(--tab-bar-sidebar-spacing)) auto auto var(--safe-area-inset-left);
515
+ height: calc(var(--safe-area-inset-top) + var(--navigation-bar-height));
516
+ }
517
+ @media (max-width: 42.9999rem) and (orientation: portrait) {
518
+ [is=tab-bar] > sidebar-toggle, tab-view > sidebar-toggle {
519
+ display: none;
520
+ }
521
+ }
522
+ @media (min-width: 43rem) and (orientation: portrait) {
523
+ [is=tab-bar] > sidebar-toggle {
524
+ width: 30px;
525
+ order: -1;
526
+ }
527
+ [is=tab-bar][open] > sidebar-toggle {
528
+ position: sticky;
529
+ inset: 0 auto auto 0;
530
+ height: var(--navigation-bar-height);
531
+ }
532
+ tab-view > sidebar-toggle {
533
+ display: none;
534
+ }
535
+ }
536
+ @media (max-width: 67.9999rem) and (orientation: landscape) {
537
+ [is=tab-bar] > sidebar-toggle {
538
+ display: none;
539
+ }
540
+ }
541
+ @media (min-width: 68rem) and (orientation: landscape) {
542
+ [is=tab-bar] > sidebar-toggle, tab-view > sidebar-toggle {
543
+ display: none;
544
+ }
545
+ }
546
+ }
547
+ @layer components {
548
+ [is=full-screen] {
549
+ inset-inline: 0px;
550
+ inset-block: 0px;
551
+ margin: 0px;
552
+ border: none;
553
+ padding: 0px;
554
+ background-color: transparent;
555
+ color: var(--primary-text);
556
+ max-width: 100lvw;
557
+ max-height: 100lvh;
558
+ outline: none;
559
+ overflow: clip;
560
+ width: 100lvw;
561
+ height: var(--100lvh, 100lvh);
562
+ }
563
+ }
564
+ @layer components {
565
+ [is=sheet-view] {
566
+ inset-inline: 0px;
567
+ inset-block: 0px;
568
+ margin: 0px;
569
+ border: none;
570
+ padding: 0px;
571
+ background-color: transparent;
572
+ color: var(--primary-text);
573
+ max-width: 100lvw;
574
+ max-height: 100lvh;
575
+ outline: none;
576
+ overflow: clip;
577
+ width: 100lvw;
578
+ height: var(--100lvh, 100lvh);
579
+ transform: translateY(var(--view-transition-dialog-offscreen-y));
580
+ }
581
+ [is=sheet-view]::backdrop {
582
+ background-color: transparent;
583
+ }
584
+ @media (min-width: 37rem) and (min-height: 27.75rem) {
585
+ [is=sheet-view] {
586
+ max-width: 37rem;
587
+ aspect-ratio: 1.3333333333;
588
+ border-radius: 26px;
589
+ margin: var(--safe-area-inset-top) var(--safe-area-inset-right) var(--safe-area-inset-bottom) var(--safe-area-inset-left);
590
+ height: auto;
591
+ inset-inline-start: calc(50lvw - 37rem / 2 - (var(--safe-area-inset-left) + var(--safe-area-inset-right)) / 2);
592
+ inset-block-start: calc(50lvh - 27.75rem / 2 - (var(--safe-area-inset-top) + var(--safe-area-inset-bottom)) / 2);
593
+ }
594
+ }
595
+ @media (min-width: 37rem) and (min-height: 27.75rem) and (min-width: 43rem) {
596
+ navigation-split-view [is=sheet-view] {
597
+ margin-inline-start: calc(var(--safe-area-inset-left) - var(--nav-split-view-content-width));
598
+ }
599
+ navigation-split-view[visibility=three-column] [is=sheet-view] {
600
+ margin-inline-start: calc(var(--safe-area-inset-left) - var(--nav-split-view-content-width) - var(--nav-split-view-sidebar-width));
601
+ }
602
+ }
603
+ }
604
+ @layer components {
605
+ navigation-stack {
606
+ touch-action: none;
607
+ height: var(--100lvh, 100lvh);
608
+ }
609
+ }
610
+ @layer components {
611
+ navigation-split-view {
612
+ touch-action: none;
613
+ height: var(--100lvh, 100lvh);
614
+ }
615
+ @media (max-width: 42.9999rem) {
616
+ navigation-split-view > body-view ~ scroll-view,
617
+ navigation-split-view > body-view ~ [is=sidebar-view] {
618
+ z-index: -1;
619
+ }
620
+ navigation-split-view:has(> [is=sidebar-view]) > body-view ~ [is=sidebar-view] {
621
+ z-index: -2;
622
+ }
623
+ navigation-split-view:has(> [is=sidebar-view]) > body-view > body-view ~ scroll-view {
624
+ z-index: -1;
625
+ }
626
+ }
627
+ @media (max-width: 55.9999rem) {
628
+ navigation-split-view:has(> dialog[is=sidebar-view]) > body-view > body-view ~ scroll-view {
629
+ z-index: -1;
630
+ }
631
+ navigation-split-view:has(> dialog[is=sidebar-view])[preferred-compact-column=content] body-view:has(> body-view) > scroll-view:not(dialog scroll-view) {
632
+ z-index: -1;
633
+ }
634
+ }
635
+ @media (min-width: 56rem) {
636
+ navigation-split-view:has(> dialog[is=sidebar-view])[column-visibility=double-column] > body-view > body-view ~ scroll-view {
637
+ z-index: -1;
638
+ }
639
+ }
640
+ @media (min-width: 43rem) {
641
+ navigation-split-view > scroll-view,
642
+ navigation-split-view > [is=sidebar-view],
643
+ navigation-split-view > navigation-bar,
644
+ navigation-split-view > bottom-bar {
645
+ width: var(--nav-split-view-content-width);
646
+ --safe-area-inset-right: 0px;
647
+ }
648
+ navigation-split-view > body-view scroll-view:not(dialog scroll-view),
649
+ navigation-split-view > body-view navigation-bar:not(dialog navigation-bar),
650
+ navigation-split-view > body-view bottom-bar:not(dialog bottom-bar) {
651
+ margin-inline-start: var(--nav-split-view-content-width);
652
+ --safe-area-inset-left: 0px;
653
+ }
654
+ }
655
+ @media (min-width: 43rem) {
656
+ navigation-split-view:has(> dialog[is=sidebar-view]) > [is=sidebar-view] > scroll-view {
657
+ --canvas-bg: #ffffff9e;
658
+ --safe-area-inset-top: 0px;
659
+ --safe-area-inset-bottom: 0px;
660
+ border-radius: var(--tab-bar-sidebar-border-radius);
661
+ margin-block: max(var(--safe-area-inset-top), var(--tab-bar-sidebar-spacing)) max(var(--safe-area-inset-bottom), var(--tab-bar-sidebar-spacing));
662
+ }
663
+ navigation-split-view:has(> dialog[is=sidebar-view]) > scroll-view,
664
+ navigation-split-view:has(> dialog[is=sidebar-view]) > [is=sidebar-view],
665
+ navigation-split-view:has(> dialog[is=sidebar-view]) > navigation-bar,
666
+ navigation-split-view:has(> dialog[is=sidebar-view]) > bottom-bar {
667
+ width: var(--nav-split-view-sidebar-width);
668
+ margin-inline-start: max(env(safe-area-inset-left), var(--tab-bar-sidebar-spacing));
669
+ --safe-area-inset-left: 0px;
670
+ }
671
+ navigation-split-view:has(> dialog[is=sidebar-view]) > body-view scroll-view:not(dialog scroll-view),
672
+ navigation-split-view:has(> dialog[is=sidebar-view]) > body-view navigation-bar:not(dialog navigation-bar),
673
+ navigation-split-view:has(> dialog[is=sidebar-view]) > body-view bottom-bar:not(dialog bottom-bar) {
674
+ margin-inline-start: 0px;
675
+ --safe-area-inset-left: calc(
676
+ var(--nav-split-view-sidebar-width) +
677
+ max(env(safe-area-inset-left), var(--tab-bar-sidebar-spacing))
678
+ );
679
+ }
680
+ }
681
+ @media (min-width: 43rem) {
682
+ navigation-split-view:has(> dialog[is=sidebar-view])[preferred-compact-column=content] > scroll-view,
683
+ navigation-split-view:has(> dialog[is=sidebar-view])[preferred-compact-column=content] > [is=sidebar-view],
684
+ navigation-split-view:has(> dialog[is=sidebar-view])[preferred-compact-column=content] > navigation-bar,
685
+ navigation-split-view:has(> dialog[is=sidebar-view])[preferred-compact-column=content] > bottom-bar {
686
+ margin-inline-start: calc(var(--nav-split-view-sidebar-width) * -1);
687
+ }
688
+ navigation-split-view:has(> dialog[is=sidebar-view])[preferred-compact-column=content] > body-view scroll-view:not(dialog scroll-view),
689
+ navigation-split-view:has(> dialog[is=sidebar-view])[preferred-compact-column=content] > body-view navigation-bar:not(dialog navigation-bar),
690
+ navigation-split-view:has(> dialog[is=sidebar-view])[preferred-compact-column=content] > body-view bottom-bar:not(dialog bottom-bar) {
691
+ margin-inline-start: var(--nav-split-view-content-width);
692
+ --safe-area-inset-left: 0px;
693
+ }
694
+ navigation-split-view:has(> dialog[is=sidebar-view])[preferred-compact-column=content] > body-view > scroll-view:not(dialog scroll-view),
695
+ navigation-split-view:has(> dialog[is=sidebar-view])[preferred-compact-column=content] > body-view > navigation-bar:not(dialog navigation-bar),
696
+ navigation-split-view:has(> dialog[is=sidebar-view])[preferred-compact-column=content] > body-view > bottom-bar:not(dialog bottom-bar) {
697
+ margin-inline-start: 0px;
698
+ --safe-area-inset-left: max(
699
+ env(safe-area-inset-left),
700
+ var(--tab-bar-sidebar-spacing)
701
+ );
702
+ width: var(--nav-split-view-content-width);
703
+ }
704
+ }
705
+ @media (min-width: 56rem) {
706
+ navigation-split-view:has(> dialog[is=sidebar-view]):not([column-visibility=double-column]) > body-view > scroll-view,
707
+ navigation-split-view:has(> dialog[is=sidebar-view]):not([column-visibility=double-column]) > body-view > navigation-bar,
708
+ navigation-split-view:has(> dialog[is=sidebar-view]):not([column-visibility=double-column]) > body-view > bottom-bar {
709
+ width: calc(var(--nav-split-view-content-width) + var(--nav-split-view-sidebar-width));
710
+ --safe-area-inset-right: 0px;
711
+ }
712
+ navigation-split-view:has(> dialog[is=sidebar-view]):not([column-visibility=double-column]) > body-view > body-view scroll-view:not(dialog scroll-view),
713
+ navigation-split-view:has(> dialog[is=sidebar-view]):not([column-visibility=double-column]) > body-view > body-view navigation-bar:not(dialog navigation-bar),
714
+ navigation-split-view:has(> dialog[is=sidebar-view]):not([column-visibility=double-column]) > body-view > body-view bottom-bar:not(dialog bottom-bar) {
715
+ --safe-area-inset-left: 0px;
716
+ margin-inline-start: calc(var(--nav-split-view-sidebar-width) + var(--nav-split-view-content-width));
717
+ }
718
+ }
719
+ }
720
+ @layer final {
721
+ @media (min-width: 43rem) {
722
+ navigation-split-view > scroll-view,
723
+ navigation-split-view > [is=sidebar-view] > scroll-view {
724
+ transform: translateX(0px) !important;
725
+ }
726
+ navigation-split-view > body-view > scroll-view:not(dialog scroll-view).bwd,
727
+ navigation-split-view > body-view > scroll-view:not(dialog scroll-view).fwdd,
728
+ navigation-split-view > body-view > navigation-bar:not(dialog navigation-bar) .bwn,
729
+ navigation-split-view > body-view > bottom-bar:not(dialog bottom-bar) .bwn,
730
+ navigation-split-view > body-view > navigation-bar:not(dialog navigation-bar) .fwnn,
731
+ navigation-split-view > body-view > bottom-bar:not(dialog bottom-bar) .fwnn {
732
+ transition-duration: 0ms !important;
733
+ }
734
+ navigation-split-view > navigation-bar > tool-bar-item,
735
+ navigation-split-view > navigation-bar > tool-bar-item-group,
736
+ navigation-split-view > bottom-bar > tool-bar-item,
737
+ navigation-split-view > bottom-bar > tool-bar-item-group {
738
+ transform: scale(var(--view-transition-toolbar-cell-onscreen-scale)) !important;
739
+ filter: none !important;
740
+ opacity: 1 !important;
741
+ }
742
+ }
743
+ @media (min-width: 43rem) {
744
+ navigation-split-view:has(> dialog[is=sidebar-view])[preferred-compact-column=content] > body-view > scroll-view {
745
+ transform: translateX(0px) !important;
746
+ }
747
+ }
748
+ @media (min-width: 56rem) {
749
+ navigation-split-view:has(> dialog[is=sidebar-view]):not([column-visibility=double-column]) > body-view > scroll-view {
750
+ transform: translateX(0px) !important;
751
+ }
752
+ navigation-split-view:has(> dialog[is=sidebar-view]):not([column-visibility=double-column]) > body-view > navigation-bar > tool-bar-item,
753
+ navigation-split-view:has(> dialog[is=sidebar-view]):not([column-visibility=double-column]) > body-view > navigation-bar > tool-bar-item-group,
754
+ navigation-split-view:has(> dialog[is=sidebar-view]):not([column-visibility=double-column]) > body-view > bottom-bar > tool-bar-item,
755
+ navigation-split-view:has(> dialog[is=sidebar-view]):not([column-visibility=double-column]) > body-view > bottom-bar > tool-bar-item-group {
756
+ transform: scale(var(--view-transition-toolbar-cell-onscreen-scale)) !important;
757
+ filter: none !important;
758
+ opacity: 1 !important;
759
+ }
760
+ }
761
+ }
762
+ @layer components {
763
+ navigation-bar,
764
+ bottom-bar {
765
+ position: absolute;
766
+ box-shadow: inset 0 0 4px red;
767
+ padding-inline: var(--safe-area-inset-left) var(--safe-area-inset-right);
768
+ pointer-events: none;
769
+ grid-template-columns: auto 1fr auto;
770
+ }
771
+ navigation-bar > *,
772
+ bottom-bar > * {
773
+ pointer-events: all;
774
+ align-self: center;
775
+ }
776
+ navigation-bar {
777
+ inset: 0 0 auto 0;
778
+ height: calc(var(--safe-area-inset-top) + var(--navigation-bar-height));
779
+ padding-block-start: var(--safe-area-inset-top);
780
+ }
781
+ bottom-bar {
782
+ inset: auto 0 0 0;
783
+ height: calc(var(--safe-area-inset-bottom) + var(--tool-bar-height));
784
+ padding-block-end: var(--safe-area-inset-bottom);
785
+ }
786
+ ::part(toolbar-leading-stack),
787
+ ::part(toolbar-principal-stack),
788
+ ::part(toolbar-trailing-stack) {
789
+ display: grid;
790
+ grid-auto-flow: column;
791
+ grid-template-columns: minmax(0, 1fr);
792
+ column-gap: var(--toolbar-col-gap);
793
+ }
794
+ @media (min-width: 37rem) and (min-height: 27.75rem) {
795
+ [is=sheet-view] navigation-bar,
796
+ [is=sheet-view] bottom-bar {
797
+ --safe-area-inset-left: 0px;
798
+ --safe-area-inset-right: 0px;
799
+ }
800
+ [is=sheet-view] navigation-bar {
801
+ --safe-area-inset-top: 0px;
802
+ }
803
+ [is=sheet-view] bottom-bar {
804
+ --safe-area-inset-bottom: 0px;
805
+ }
806
+ }
807
+ }
808
+ @layer components {
809
+ [is=sidebar-view] {
810
+ inset-inline: 0px;
811
+ inset-block: 0px;
812
+ margin: 0px;
813
+ border: none;
814
+ padding: 0px;
815
+ background-color: transparent;
816
+ color: var(--primary-text);
817
+ max-width: 100lvw;
818
+ max-height: 100lvh;
819
+ outline: none;
820
+ width: 100%;
821
+ height: 100%;
822
+ position: relative;
823
+ }
824
+ @media (prefers-reduced-motion: no-preference) and (min-width: 43rem) {
825
+ navigation-split-view:has(> dialog[is=sidebar-view])[preferred-compact-column=content] [is=sidebar-view] {
826
+ transition: margin-inline-start 250ms ease-out allow-discrete;
827
+ }
828
+ }
829
+ [is=sidebar-view]::backdrop {
830
+ background-color: transparent;
831
+ }
832
+ @media (prefers-reduced-motion: no-preference) {
833
+ [is=sidebar-view]::backdrop {
834
+ transition: display var(--view-transition-duration) allow-discrete, overlay var(--view-transition-duration) allow-discrete, background-color var(--view-transition-duration);
835
+ will-change: background-color, overlay, display;
836
+ }
837
+ }
838
+ [is=sidebar-view][open]::backdrop {
839
+ background-color: var(--view-transition-dialog-onscreen-backdrop-bg);
840
+ }
841
+ @starting-style {
842
+ [is=sidebar-view][open]::backdrop {
843
+ background-color: transparent;
844
+ }
845
+ }
846
+ @starting-style {
847
+ [is=sidebar-view][open] {
848
+ transform: translateY(var(--view-transition-dialog-offscreen-y));
849
+ }
850
+ }
851
+ }
852
+ @layer final {
853
+ [is=sidebar-view][open] {
854
+ margin-inline-start: 0px !important;
855
+ }
856
+ }
857
+ @layer components {
858
+ scroll-view:has(> tool-bar[slot=navigation-bar]) > *:not([slot]) {
859
+ margin-block-start: var(--navigation-bar-height);
860
+ }
861
+ scroll-view:has(> tool-bar[slot=bottom-bar]) > *:not([slot]) {
862
+ margin-block-end: var(--tool-bar-height);
863
+ }
864
+ navigation-stack > scroll-view,
865
+ navigation-split-view > scroll-view,
866
+ navigation-split-view > [is=sidebar-view] > scroll-view,
867
+ body-view > scroll-view,
868
+ [is=full-screen] > scroll-view,
869
+ [is=sheet-view] > scroll-view {
870
+ box-shadow: inset 0 0 0 2px cyan;
871
+ overflow: clip auto;
872
+ overscroll-behavior: contain;
873
+ -webkit-overflow-scrolling: touch;
874
+ padding-block: var(--safe-area-inset-top) var(--safe-area-inset-bottom);
875
+ container: scroll-view/inline-size;
876
+ background-color: var(--canvas-bg);
877
+ padding-inline: var(--safe-area-inset-left) var(--safe-area-inset-right);
878
+ }
879
+ navigation-stack > scroll-view > *,
880
+ navigation-split-view > scroll-view > *,
881
+ navigation-split-view > [is=sidebar-view] > scroll-view > *,
882
+ body-view > scroll-view > *,
883
+ [is=full-screen] > scroll-view > *,
884
+ [is=sheet-view] > scroll-view > * {
885
+ grid-column: 1/-1;
886
+ grid-row: 1/-1;
887
+ }
888
+ navigation-stack > scroll-view::before,
889
+ navigation-split-view > scroll-view::before,
890
+ navigation-split-view > [is=sidebar-view] > scroll-view::before,
891
+ body-view > scroll-view::before,
892
+ [is=full-screen] > scroll-view::before,
893
+ [is=sheet-view] > scroll-view::before {
894
+ grid-column: 1/-1;
895
+ grid-row: 1/-1;
896
+ content: "";
897
+ display: block;
898
+ height: calc(100% + 1px); /* creates overflow */
899
+ z-index: -1;
900
+ pointer-events: none;
901
+ }
902
+ @media (min-width: 37rem) and (min-height: 27.75rem) {
903
+ [is=sheet-view] scroll-view {
904
+ --safe-area-inset-top: 0px;
905
+ --safe-area-inset-right: 0px;
906
+ --safe-area-inset-bottom: 0px;
907
+ --safe-area-inset-left: 0px;
908
+ }
909
+ }
910
+ }
911
+ @layer components {
912
+ v-stack {
913
+ place-items: center;
914
+ grid-template-columns: minmax(0, 1fr);
915
+ box-shadow: inset 0 0 0 2px magenta;
916
+ place-content: center;
917
+ }
918
+ }
919
+ @layer components {
920
+ tool-bar {
921
+ position: sticky;
922
+ width: 100%;
923
+ place-items: center;
924
+ place-content: center;
925
+ pointer-events: none;
926
+ }
927
+ tool-bar > span {
928
+ display: grid;
929
+ grid-template-columns: 1fr auto 1fr;
930
+ }
931
+ tool-bar > span::before, tool-bar > span::after {
932
+ content: "";
933
+ display: grid;
934
+ }
935
+ tool-bar > span::before {
936
+ height: 20px;
937
+ background: green;
938
+ }
939
+ tool-bar > span::after {
940
+ height: 20px;
941
+ background: darkgoldenrod;
942
+ }
943
+ @media (pointer: fine) {
944
+ tool-bar {
945
+ justify-content: start;
946
+ }
947
+ }
948
+ tool-bar[slot=navigation-bar] {
949
+ top: 0;
950
+ height: calc(var(--safe-area-inset-top) + var(--navigation-bar-height));
951
+ padding-block-start: var(--safe-area-inset-top);
952
+ transform: translateY(calc(var(--safe-area-inset-top) * -1));
953
+ }
954
+ tool-bar[slot=navigation-bar] > span::before {
955
+ width: calc(var(--navbar-padding-inline-start, 0px) + var(--toolbar-area-inset-left, 0px));
956
+ }
957
+ tool-bar[slot=navigation-bar] > span::after {
958
+ width: var(--navbar-padding-inline-end, 0px);
959
+ }
960
+ tool-bar[slot=navigation-bar]:before, tool-bar[slot=navigation-bar]:after {
961
+ backface-visibility: hidden;
962
+ content: "";
963
+ inset: 0;
964
+ position: absolute;
965
+ pointer-events: none;
966
+ z-index: -1;
967
+ }
968
+ tool-bar[slot=navigation-bar]:before {
969
+ backdrop-filter: blur(2px);
970
+ mask-image: linear-gradient(to bottom, #000 50%, rgba(0, 0, 0, 0) 100%);
971
+ }
972
+ tool-bar[slot=navigation-bar]:after {
973
+ background-image: linear-gradient(to bottom, var(--canvas-bg) 0, rgba(0, 0, 0, 0) 100%);
974
+ }
975
+ tool-bar[slot=bottom-bar] {
976
+ top: calc(100% - var(--tool-bar-height) - var(--safe-area-inset-bottom));
977
+ height: calc(var(--safe-area-inset-bottom) + var(--tool-bar-height));
978
+ padding-block-end: var(--safe-area-inset-bottom);
979
+ transform: translateY(var(--safe-area-inset-bottom));
980
+ }
981
+ tool-bar[slot=bottom-bar] > span::before {
982
+ width: var(--toolbar-padding-inline-start);
983
+ }
984
+ tool-bar[slot=bottom-bar] > span::after {
985
+ width: var(--toolbar-padding-inline-end);
986
+ }
987
+ tool-bar[slot=bottom-bar]:before, tool-bar[slot=bottom-bar]:after {
988
+ backface-visibility: hidden;
989
+ content: "";
990
+ inset: 0;
991
+ position: absolute;
992
+ pointer-events: none;
993
+ z-index: -1;
994
+ }
995
+ tool-bar[slot=bottom-bar]:before {
996
+ backdrop-filter: blur(2px);
997
+ mask-image: linear-gradient(to top, #000 50%, rgba(0, 0, 0, 0) 100%);
998
+ }
999
+ tool-bar[slot=bottom-bar]:after {
1000
+ background-image: linear-gradient(to top, var(--canvas-bg) 0, rgba(0, 0, 0, 0) 100%);
1001
+ }
1002
+ }
1003
+ @layer components {
1004
+ tool-bar-item,
1005
+ tab-item {
1006
+ --component-bg: var(--toolbar-cell-bg);
1007
+ --component-padding-inline: var(--toolbar-cell-inline-padding);
1008
+ --component-padding-block: var(--toolbar-cell-block-padding);
1009
+ --component-border-radius: var(--toolbar-cell-border-radius);
1010
+ --component-border-width: 0;
1011
+ }
1012
+ tool-bar-item button,
1013
+ tool-bar-item input,
1014
+ tab-item button,
1015
+ tab-item input {
1016
+ appearance: none;
1017
+ -webkit-appearance: none;
1018
+ border: var(--component-border-width);
1019
+ background-color: var(--component-bg);
1020
+ padding-inline: var(--component-padding-inline);
1021
+ padding-block: var(--component-padding-block);
1022
+ border-radius: var(--component-border-radius);
1023
+ min-width: 25px;
1024
+ }
1025
+ }
1026
+ @layer colors {
1027
+ tool-bar-item button:not(:disabled):not([readonly]):focus-visible,
1028
+ tool-bar-item input:not(:disabled):not([readonly]):focus-visible,
1029
+ tab-item button:not(:disabled):not([readonly]):focus-visible,
1030
+ tab-item input:not(:disabled):not([readonly]):focus-visible {
1031
+ background-color: var(--toolbar-cell-focus-bg);
1032
+ }
1033
+ @media (pointer: fine) {
1034
+ tool-bar-item button:not(:disabled):not([readonly]):hover,
1035
+ tool-bar-item input:not(:disabled):not([readonly]):hover,
1036
+ tab-item button:not(:disabled):not([readonly]):hover,
1037
+ tab-item input:not(:disabled):not([readonly]):hover {
1038
+ background-color: var(--toolbar-cell-focus-bg);
1039
+ }
1040
+ }
1041
+ }
1042
+ @layer actions {
1043
+ tool-bar-item button:not(:disabled):not([readonly]):active,
1044
+ tool-bar-item input:not(:disabled):not([readonly]):active,
1045
+ tab-item button:not(:disabled):not([readonly]):active,
1046
+ tab-item input:not(:disabled):not([readonly]):active {
1047
+ background-color: var(--toolbar-cell-active-bg);
1048
+ }
1049
+ }
1050
+ @layer components {
1051
+ tool-bar-item-group {
1052
+ grid-auto-flow: column;
1053
+ grid-template-columns: minmax(0, 1fr);
1054
+ column-gap: var(--toolbar-col-gap);
1055
+ background-color: var(--toolbar-cell-bg);
1056
+ padding-inline: var(--toolbar-cell-inline-padding);
1057
+ padding-block: var(--toolbar-cell-block-padding);
1058
+ border-radius: var(--toolbar-cell-border-radius);
1059
+ border-width: 0;
1060
+ }
1061
+ }
1062
+ @layer components {
1063
+ [is=borderless-button] {
1064
+ display: grid;
1065
+ place-items: center;
1066
+ place-content: center;
1067
+ }
1068
+ }
1069
+ @layer transitions {
1070
+ @media (prefers-reduced-motion: no-preference) {
1071
+ scroll-view.fwd, scroll-view.fwdd, scroll-view.bwd, scroll-view.bwdd {
1072
+ transition: transform var(--view-transition-duration) ease-out allow-discrete, padding-inline-start 250ms ease-out allow-discrete, margin-inline-start 250ms ease-out allow-discrete;
1073
+ will-change: transform, padding-inline-start, margin-inline-start;
1074
+ }
1075
+ tool-bar-item.fwn, tool-bar-item.fwnn, tool-bar-item.bwn, tool-bar-item.bwnn,
1076
+ tool-bar-item-group.fwn,
1077
+ tool-bar-item-group.fwnn,
1078
+ tool-bar-item-group.bwn,
1079
+ tool-bar-item-group.bwnn {
1080
+ transition: transform var(--view-transition-duration) ease-out allow-discrete, opacity var(--view-transition-duration) ease-out allow-discrete, filter var(--view-transition-duration) ease-out allow-discrete;
1081
+ will-change: transform, opacity, filter;
1082
+ }
1083
+ [is=sheet-view] {
1084
+ transition: transform var(--view-transition-duration) allow-discrete, overlay var(--view-transition-duration) allow-discrete, display var(--view-transition-duration) allow-discrete;
1085
+ will-change: transform, overlay, display;
1086
+ }
1087
+ [is=sheet-view]::backdrop {
1088
+ transition: display var(--view-transition-duration) allow-discrete, overlay var(--view-transition-duration) allow-discrete, background-color var(--view-transition-duration);
1089
+ will-change: background-color, overlay, display;
1090
+ }
1091
+ [is=sheet-view][open] {
1092
+ transform: translateY(var(--view-transition-dialog-onscreen-y));
1093
+ }
1094
+ [is=sheet-view][open]::backdrop {
1095
+ background-color: var(--view-transition-dialog-onscreen-backdrop-bg);
1096
+ }
1097
+ @starting-style {
1098
+ [is=sheet-view][open]::backdrop {
1099
+ background-color: transparent;
1100
+ }
1101
+ }
1102
+ @starting-style {
1103
+ [is=sheet-view][open] {
1104
+ transform: translateY(var(--view-transition-dialog-offscreen-y));
1105
+ }
1106
+ }
1107
+ }
1108
+ /* scroll-view {
1109
+ view-transition-name: match-element;
1110
+ view-transition-class: scroll-view;
1111
+ // contain: paint;
1112
+
1113
+ &:not(:has(~ body-view)) {
1114
+ view-transition-name: targeted-scroll-view;
1115
+ view-transition-class: none;
1116
+ // contain: layout;
1117
+ // background-color: red;
1118
+ }
1119
+ }
1120
+
1121
+ tool-bar-item {
1122
+ view-transition-name: match-element;
1123
+ view-transition-class: tool-bar-item;
1124
+ // contain: paint;
1125
+ }
1126
+ navigation-bar:not(:has(~ body-view)) > tool-bar-item {
1127
+ view-transition-name: match-element;
1128
+ view-transition-class: targeted-toolbar-items;
1129
+ // contain: layout;
1130
+ // background-color: red;
1131
+ } */
1132
+ /* :root::view-transition-old(*.tool-bar-item) {
1133
+ animation: var(--view-transition-duration) ease-out both shrink-to-tiny;
1134
+ }
1135
+ :root::view-transition-new(*.tool-bar-item) {
1136
+ animation: var(--view-transition-duration) ease-out both expand-from-tiny;
1137
+ }
1138
+ :root::view-transition-old(*.targeted-toolbar-items) {
1139
+ animation: var(--view-transition-duration) ease-out both expand-from-tiny;
1140
+ }
1141
+ :root::view-transition-new(*.targeted-toolbar-items) {
1142
+ animation: var(--view-transition-duration) ease-out both expand-from-tiny;
1143
+ } */
1144
+ }
1145
+ @layer transitions {
1146
+ scroll-view.fwd {
1147
+ pointer-events: none;
1148
+ }
1149
+ scroll-view.fwdd {
1150
+ transform: translateX(var(--view-transition-principal-x));
1151
+ }
1152
+ @starting-style {
1153
+ scroll-view.fwdd {
1154
+ transform: translateX(var(--view-transition-trailing-x));
1155
+ }
1156
+ }
1157
+ scroll-view.fwdd.fwd {
1158
+ transform: translateX(var(--view-transition-leading-x));
1159
+ }
1160
+ }
1161
+ @layer transitions {
1162
+ scroll-view.bwd {
1163
+ transform: translateX(var(--view-transition-trailing-x));
1164
+ }
1165
+ scroll-view.bwdd ~ body-view,
1166
+ scroll-view.bwdd ~ navigation-stack,
1167
+ scroll-view.bwdd ~ navigation-split-view {
1168
+ pointer-events: none;
1169
+ }
1170
+ scroll-view.bwdd {
1171
+ transform: translateX(var(--view-transition-principal-x));
1172
+ }
1173
+ scroll-view.bwdd.bwd {
1174
+ transform: translateX(var(--view-transition-trailing-x));
1175
+ }
1176
+ navigation-split-view > body-view:has(~ .bwdd) {
1177
+ pointer-events: none;
1178
+ }
1179
+ }
1180
+ @layer transitions {
1181
+ tool-bar-item.fwn,
1182
+ tool-bar-item-group.fwn {
1183
+ transform: scale(var(--view-transition-toolbar-cell-offscreen-scale));
1184
+ filter: blur(10px);
1185
+ opacity: 0;
1186
+ }
1187
+ tool-bar-item.fwnn,
1188
+ tool-bar-item-group.fwnn {
1189
+ transform: scale(var(--view-transition-toolbar-cell-onscreen-scale));
1190
+ filter: none;
1191
+ opacity: 1;
1192
+ }
1193
+ @starting-style {
1194
+ tool-bar-item.fwnn,
1195
+ tool-bar-item-group.fwnn {
1196
+ transform: scale(var(--view-transition-toolbar-cell-offscreen-scale));
1197
+ filter: blur(10px);
1198
+ opacity: 0;
1199
+ }
1200
+ }
1201
+ tool-bar-item.fwnn.fwn,
1202
+ tool-bar-item-group.fwnn.fwn {
1203
+ transform: scale(var(--view-transition-toolbar-cell-offscreen-scale));
1204
+ filter: blur(10px);
1205
+ opacity: 0;
1206
+ }
1207
+ }
1208
+ @layer transitions {
1209
+ tool-bar-item.bwn,
1210
+ tool-bar-item-group.bwn {
1211
+ transform: scale(var(--view-transition-toolbar-cell-offscreen-scale));
1212
+ filter: blur(10px);
1213
+ opacity: 0;
1214
+ }
1215
+ tool-bar-item.bwnn,
1216
+ tool-bar-item-group.bwnn {
1217
+ transform: scale(var(--view-transition-toolbar-cell-onscreen-scale));
1218
+ filter: none;
1219
+ opacity: 1;
1220
+ }
1221
+ tool-bar-item.bwnn.bwn,
1222
+ tool-bar-item-group.bwnn.bwn {
1223
+ transform: scale(var(--view-transition-toolbar-cell-offscreen-scale));
1224
+ filter: blur(10px);
1225
+ opacity: 0;
1226
+ }
1227
+ }
1228
+ @layer transitions {
1229
+ [is=sheet-view][open] {
1230
+ transform: translateY(var(--view-transition-dialog-onscreen-y));
1231
+ }
1232
+ @media (min-width: 37rem) and (min-height: 27.75rem) and (min-width: 43rem) {
1233
+ navigation-split-view [is=sheet-view][open] {
1234
+ margin-inline-start: var(--safe-area-inset-left);
1235
+ }
1236
+ }
1237
+ [is=sheet-view][open]::backdrop {
1238
+ background-color: var(--view-transition-dialog-onscreen-backdrop-bg);
1239
+ }
1240
+ @starting-style {
1241
+ [is=sheet-view][open]::backdrop {
1242
+ background-color: transparent;
1243
+ }
1244
+ }
1245
+ @starting-style {
1246
+ [is=sheet-view][open] {
1247
+ transform: translateY(var(--view-transition-dialog-offscreen-y));
1248
+ }
1249
+ }
1250
+ }
1251
+ @layer colors {
1252
+ navigation-stack,
1253
+ navigation-split-view,
1254
+ body-view {
1255
+ --canvas-bg: var(--primary-bg);
1256
+ }
1257
+ [is=sheet-view],
1258
+ [is=full-screen] {
1259
+ --canvas-bg: var(--secondary-bg);
1260
+ }
1261
+ body-view {
1262
+ --primary-bg: oklch(0.984 0.019 200.873);
1263
+ --secondary-bg: oklch(0.984 0.019 200.873);
1264
+ }
1265
+ body-view > body-view {
1266
+ --primary-bg: oklch(0.956 0.045 203.388);
1267
+ --secondary-bg: oklch(0.956 0.045 203.388);
1268
+ }
1269
+ body-view > body-view > body-view {
1270
+ --primary-bg: oklch(0.917 0.08 205.041);
1271
+ --secondary-bg: oklch(0.917 0.08 205.041);
1272
+ }
1273
+ body-view > body-view > body-view > body-view {
1274
+ --primary-bg: oklch(0.865 0.127 207.078);
1275
+ --secondary-bg: oklch(0.865 0.127 207.078);
1276
+ }
1277
+ body-view > body-view > body-view > body-view > body-view {
1278
+ --primary-bg: oklch(0.789 0.154 211.53);
1279
+ --secondary-bg: oklch(0.789 0.154 211.53);
1280
+ }
1281
+ body-view > body-view > body-view > body-view > body-view {
1282
+ --primary-bg: oklch(0.715 0.143 215.221);
1283
+ --secondary-bg: oklch(0.715 0.143 215.221);
1284
+ }
1285
+ body-view > body-view > body-view > body-view > body-view > body-view {
1286
+ --primary-bg: oklch(0.609 0.126 221.723);
1287
+ --secondary-bg: oklch(0.609 0.126 221.723);
1288
+ }
1289
+ body-view > body-view > body-view > body-view > body-view > body-view > body-view {
1290
+ --primary-bg: oklch(0.52 0.105 223.128);
1291
+ --secondary-bg: oklch(0.52 0.105 223.128);
1292
+ }
1293
+ body-view > body-view > body-view > body-view > body-view > body-view > body-view > body-view {
1294
+ --primary-bg: oklch(0.45 0.085 224.283);
1295
+ --secondary-bg: oklch(0.45 0.085 224.283);
1296
+ }
1297
+ body-view > body-view > body-view > body-view > body-view > body-view > body-view > body-view > body-view {
1298
+ --primary-bg: oklch(0.398 0.07 227.392);
1299
+ --secondary-bg: oklch(0.398 0.07 227.392);
1300
+ }
1301
+ body-view > body-view > body-view > body-view > body-view > body-view > body-view > body-view > body-view > body-view {
1302
+ --primary-bg: oklch(0.302 0.056 229.695);
1303
+ --secondary-bg: oklch(0.302 0.056 229.695);
1304
+ }
8
1305
  }