@swiftwc/ui 0.0.0-dev.21 → 0.0.0-dev.23

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 (74) hide show
  1. package/generated/client/index.d.ts +1 -1
  2. package/generated/client/index.js +97 -32
  3. package/generated/components/bordered-button.d.ts +4 -0
  4. package/generated/components/bordered-button.js +8 -1
  5. package/generated/components/bordered-prominent-button.d.ts +4 -0
  6. package/generated/components/bordered-prominent-button.js +8 -1
  7. package/generated/components/borderless-button.d.ts +4 -0
  8. package/generated/components/borderless-button.js +8 -1
  9. package/generated/components/date-picker.js +10 -4
  10. package/generated/components/fine-tooltip.d.ts +7 -0
  11. package/generated/components/fine-tooltip.js +93 -0
  12. package/generated/components/glass-button.d.ts +4 -0
  13. package/generated/components/glass-button.js +8 -1
  14. package/generated/components/glass-prominent-button.d.ts +4 -0
  15. package/generated/components/glass-prominent-button.js +8 -1
  16. package/generated/components/index.d.ts +1 -0
  17. package/generated/components/index.js +1 -0
  18. package/generated/components/label-view.js +1 -33
  19. package/generated/components/picker-view.js +19 -15
  20. package/generated/components/scroll-view.js +8 -3
  21. package/generated/components/sheet-view.d.ts +0 -1
  22. package/generated/components/sheet-view.js +19 -7
  23. package/generated/components/sidebar-toggle.js +1 -1
  24. package/generated/components/tab-view.js +7 -7
  25. package/generated/components/table-view.js +11 -5
  26. package/generated/components/text-field.js +9 -4
  27. package/generated/components/tool-bar-item-group.d.ts +0 -2
  28. package/generated/components/tool-bar-item-group.js +15 -26
  29. package/generated/components/tool-bar-item.js +22 -19
  30. package/generated/components/tool-bar.d.ts +12 -0
  31. package/generated/components/tool-bar.js +19 -6
  32. package/generated/css/index.css +485 -198
  33. package/generated/events/tab-view.d.ts +6 -2
  34. package/generated/internal/class/css-style-observer.js +1 -1
  35. package/generated/internal/utils/button-role.d.ts +1 -1
  36. package/generated/internal/utils/button-role.js +33 -8
  37. package/generated/internal/utils/index.d.ts +0 -1
  38. package/generated/internal/utils/index.js +0 -1
  39. package/package.json +1 -1
  40. package/scss/_components.scss +2 -0
  41. package/scss/_mixins.scss +4 -0
  42. package/scss/_transitions.scss +2 -0
  43. package/scss/_vars.scss +5 -0
  44. package/scss/base/_reboot.scss +15 -0
  45. package/scss/base/_root.scss +63 -67
  46. package/scss/colors/_index.scss +82 -33
  47. package/scss/components/_alert-dialog.scss +4 -5
  48. package/scss/components/_bordered-button.scss +14 -0
  49. package/scss/components/_bordered-prominent-button.scss +13 -0
  50. package/scss/components/_borderless-button.scss +4 -0
  51. package/scss/components/_confirmation-dialog.scss +1 -1
  52. package/scss/components/_content-unavailable-view.scss +1 -1
  53. package/scss/components/_disclosure-group.scss +80 -33
  54. package/scss/components/_fine-tooltip.scss +82 -0
  55. package/scss/components/_glass-button.scss +14 -0
  56. package/scss/components/_glass-prominent-button.scss +14 -0
  57. package/scss/components/_index.scss +21 -20
  58. package/scss/components/_label-view.scss +42 -16
  59. package/scss/components/_label-view.scss.txt +536 -0
  60. package/scss/components/_menu-view.scss +17 -0
  61. package/scss/components/_navigation-split-view.scss +3 -3
  62. package/scss/components/_sheet-view.scss +12 -12
  63. package/scss/components/_tab-bar.scss +5 -0
  64. package/scss/components/_tool-bar-item.scss +71 -53
  65. package/scss/components/_tool-bar.scss +25 -0
  66. package/scss/mixins/_button.scss +42 -0
  67. package/scss/mixins/_color.scss +16 -0
  68. package/scss/mixins/_index.scss +1 -1
  69. package/scss/placeholders/_buttons.scss +40 -48
  70. package/scss/transitions/_fine-tooltip.scss +21 -0
  71. package/scss/transitions/_tab-bar.scss +6 -5
  72. package/web-components.html-data/en.json +18 -16
  73. package/generated/internal/utils/toolbar-repositioner.d.ts +0 -1
  74. package/generated/internal/utils/toolbar-repositioner.js +0 -12
@@ -0,0 +1,536 @@
1
+ @use '../vars';
2
+ @use '../mixins';
3
+ @use 'sass:string';
4
+ @use 'sass:map';
5
+
6
+ // scalpel precision
7
+ @property --label-gap {
8
+ syntax: '<length>';
9
+ inherits: false;
10
+ initial-value: 0;
11
+ }
12
+
13
+ @property --label-image-size {
14
+ syntax: '<length>';
15
+ inherits: false;
16
+ initial-value: 0;
17
+ }
18
+
19
+ @property --label-style {
20
+ syntax: 'title-and-icon | icon-only | title-only | automatic';
21
+ inherits: false;
22
+ initial-value: automatic;
23
+ }
24
+
25
+ // @property --label-font-weight {
26
+ // syntax: 'ultra-light | thin | light | regular | medium | semibold | bold | heavy | black';
27
+ // inherits: false;
28
+ // initial-value: regular;
29
+ // }
30
+
31
+ // @property --label--style {
32
+ // syntax: '<number>';
33
+ // inherits: false;
34
+ // initial-value: 0;
35
+ // }
36
+
37
+ // @property --label-truncation-mode {
38
+ // syntax: 'tail';
39
+ // inherits: true;
40
+ // }
41
+
42
+ // @property --label--has-icon {
43
+ // syntax: 'yes | no';
44
+ // inherits: true;
45
+ // initial-value: no;
46
+ // }
47
+
48
+ $label-truncation-ifs: (
49
+ tail: (
50
+ --label--overflow: hidden,
51
+
52
+ --label--text-overflow: ellipsis,
53
+ ),
54
+ );
55
+
56
+ $label-line-ifs: (
57
+ 1: (
58
+ --label--host-white-space: nowrap,
59
+ ),
60
+ 2: (
61
+ --label--host-white-space: normal,
62
+ --label--display: -webkit-box,
63
+ --label--box-orient: vertical,
64
+ --label--line-clamp: 2,
65
+ ),
66
+ );
67
+
68
+ // @mixin set-label-style($label-style) {
69
+ // @if $label-style == h-title-and-icon {
70
+ // --label-style: title-and-icon;
71
+
72
+ // // --label--host-grid-template-columns: auto minmax(0, 1fr);
73
+ // // --label--host-grid-template-rows: minmax(0, 1fr);
74
+ // // --label--host-align-items: center;
75
+ // // --label--host-justify-items: normal;
76
+
77
+ // // --label-gap: 0.3rem;
78
+ // // --label--host-gap: var(--label-gap);
79
+
80
+ // // --label--iconstack-display: grid;
81
+ // // --label--titlestack-display: grid;
82
+ // } @else if $label-style == h-icon-only {
83
+ // --label-style: icon-only;
84
+
85
+ // // --label--iconstack-display: grid;
86
+ // } @else if $label-style == h-title-only {
87
+ // --label-style: title-only;
88
+
89
+ // // --label--titlestack-display: grid;
90
+ // } @else if $label-style == v-title-and-icon {
91
+ // --label-style: title-and-icon;
92
+
93
+ // // --label--host-grid-template-columns: minmax(0, 1fr);
94
+ // // --label--host-grid-template-rows: auto minmax(0, 1fr);
95
+ // // --label--host-align-items: normal;
96
+ // // --label--host-justify-items: center;
97
+
98
+ // // --label-gap: 0.3rem;
99
+ // // --label--host-gap: var(--label-gap);
100
+
101
+ // // --label--iconstack-display: grid;
102
+ // // --label--titlestack-display: grid;
103
+ // } @else if $label-style == v-icon-only {
104
+ // --label-style: icon-only;
105
+
106
+ // // --label--iconstack-display: grid;
107
+ // } @else if $label-style == v-title-only {
108
+ // --label-style: title-only;
109
+
110
+ // // --label--titlestack-display: grid;
111
+ // }
112
+ // }
113
+
114
+ // @mixin set-label-truncation-mode($value) {
115
+ // @if $value == 'tail' {
116
+ // --label--overflow: hidden;
117
+
118
+ // --label--text-overflow: ellipsis;
119
+ // }
120
+ // }
121
+
122
+ // @mixin set-label-line-limit($value) {
123
+ // @if $value == 1 {
124
+ // --label--host-white-space: nowrap;
125
+ // } @else {
126
+ // --label--host-white-space: normal;
127
+ // --label--display: -webkit-box;
128
+ // --label--box-orient: vertical;
129
+ // --label--line-clamp: #{$value};
130
+ // }
131
+ // }
132
+
133
+ @mixin set-label-font($value) {
134
+ --label--titlestack-font-size: var(--label-#{$value}-font-size);
135
+ --label--titlestack-line-height: var(--label-#{$value}-line-height);
136
+ --label--titlestack-font-weight: var(--label-#{$value}-font-weight);
137
+ }
138
+
139
+ @function if-chain($labels, $prop: null) {
140
+ $if-chain: null;
141
+
142
+ @each $label, $size in $labels {
143
+ @if $if-chain == null {
144
+ $if-chain: 'style(--label-font: #{$label}): var(--label-#{$label}-#{$prop}) ;';
145
+ } @else {
146
+ $if-chain: '#{$if-chain} style(--label-font: #{$label}): var(--label-#{$label}-#{$prop}) ;';
147
+ }
148
+ }
149
+
150
+ @return $if-chain;
151
+ }
152
+
153
+ @mixin if-chain($key, $prop, $label) {
154
+ @container style(#{$key}: #{$label}) {
155
+ :where(&) {
156
+ @content;
157
+ }
158
+ }
159
+ @container not style(#{$key}: #{$label}) {
160
+ :where(&[#{$prop}='#{$label}']) {
161
+ @content;
162
+ }
163
+ }
164
+ }
165
+
166
+ @layer #{vars.$components-layer} {
167
+ label-view {
168
+ :where(&) {
169
+ pointer-events: none;
170
+ // background-color: if(style(--label-style: automatic): red ;);
171
+
172
+ align-items: var(--label--host-align-items,);
173
+ justify-items: var(--label--host-justify-items,);
174
+
175
+ grid-template-columns: var(--label--host-grid-template-columns,);
176
+ grid-template-rows: var(--label--host-grid-template-rows,);
177
+
178
+ gap: var(--label--host-gap,); //;
179
+
180
+ --label-image-size: 2rem;
181
+ --label-imagestack-fontsize: var(--label-image-size);
182
+
183
+ white-space: var(--label--host-white-space,);
184
+
185
+ &::part(label-image-stack),
186
+ &::part(label-title-stack) {
187
+ grid-auto-columns: minmax(0, 1fr);
188
+
189
+ grid-auto-rows: minmax(0, 1fr);
190
+ }
191
+
192
+ &::part(label-image-stack) {
193
+ display: var(--label--iconstack-display, none);
194
+ }
195
+
196
+ &::part(label-title-stack) {
197
+ display: var(--label--titlestack-display, none);
198
+ }
199
+
200
+ &::part(label-image-stack) {
201
+ aspect-ratio: 1 / 1;
202
+
203
+ inline-size: var(--label-imagestack-fontsize);
204
+
205
+ font-size: var(--label-imagestack-fontsize);
206
+ }
207
+
208
+ &::part(label-title-stack) {
209
+ text-decoration: underline;
210
+
211
+ font-size: var(--label--titlestack-font-size,);
212
+
213
+ line-height: var(--label--titlestack-line-height,);
214
+
215
+ font-weight: var(--label--titlestack-font-weight,);
216
+ }
217
+ }
218
+
219
+ &:has(> [slot='image']) {
220
+ :where(&) {
221
+ --label--has-icon: yes;
222
+ }
223
+ }
224
+
225
+ &:has(> :not([slot])) {
226
+ :where(&) {
227
+ --label--has-title: yes;
228
+ }
229
+ }
230
+
231
+ & > :not([slot]) {
232
+ :where(&) {
233
+ // grid-area: label-title-stack;
234
+ overflow: var(--label--overflow,);
235
+
236
+ text-overflow: var(--label--text-overflow,);
237
+
238
+ display: var(--label--display,);
239
+
240
+ -webkit-box-orient: var(--label--box-orient,);
241
+
242
+ line-clamp: var(--label--line-clamp,);
243
+ -webkit-line-clamp: var(--label--line-clamp,);
244
+ }
245
+ }
246
+
247
+ // vars
248
+ /* @supports (x: #{string.unquote('if(else:red)')}) {
249
+ :where(&) {
250
+ --label--titlestack-font-size: if(#{if-chain(vars.$label-fonts, font-size)});
251
+ --label--titlestack-line-height: if(#{if-chain(vars.$label-fonts, line-height)});
252
+ --label--titlestack-font-weight: if(#{if-chain(vars.$label-fonts, font-weight)});
253
+ // if(
254
+ // style(--label-font: callout): 0.5rem ; style(--label-font: large-title): 3rem ; style(--label-font: large-title): 3rem ;
255
+ // );
256
+ // ANCHOR: truncation-mode
257
+ @include mixins.write-ifs(--label-truncation-mode, $label-truncation-ifs);
258
+ // --label--overflow: if(style(--label-truncation-mode: tail): hidden ;);
259
+ // --label--text-overflow: if(style(--label-truncation-mode: tail): ellipsis ;);
260
+
261
+ // ANCHOR: line-limit
262
+ @include mixins.write-ifs(--label-line-limit, $label-line-ifs);
263
+ // --label--host-white-space: if(style(--label-line-limit: 1): nowrap ; style(--label-line-limit: 2): normal ;);
264
+ // --label--display: if(style(--label-line-limit: 2): -webkit-box ;);
265
+ // --label--box-orient: if(style(--label-line-limit: 2): vertical ;);
266
+ // --label--line-clamp: if(style(--label-line-limit: 2): 2 ;);
267
+
268
+ // ANCHOR: label-flow
269
+ --label--host-align-items: if(style(--label-flow: vertical): normal ; else: center ;);
270
+ --label--host-justify-items: if(style(--label-flow: vertical): center ; else: normal ;);
271
+
272
+ // ANCHOR: label-style
273
+ --label--host-grid-template-columns: if(
274
+ style(--label-style: icon-only): minmax(0, 1fr) ; style(--label-style: title-only): minmax(0, 1fr) ;
275
+ style(--label-style: title-and-icon): if(style(--label-flow: vertical): minmax(0, 1fr) ; else: auto minmax(0, 1fr) ;) ;
276
+ else: if(style(--label--has-icon: yes) and style(--label--has-title: yes): if(style(--label-flow: vertical): minmax(0, 1fr) ; else: auto minmax(0, 1fr) ;) ; else: minmax(0, 1fr) ;) ;
277
+ );
278
+ --label--host-grid-template-rows: if(
279
+ style(--label-style: icon-only): minmax(0, 1fr) ; style(--label-style: title-only): minmax(0, 1fr) ;
280
+ style(--label-style: title-and-icon): if(style(--label-flow: vertical): auto minmax(0, 1fr) ; else: minmax(0, 1fr) ;) ;
281
+ else: if(style(--label--has-icon: yes) and style(--label--has-title: yes): if(style(--label-flow: vertical): auto minmax(0, 1fr) ; else: minmax(0, 1fr) ;) ; else: minmax(0, 1fr) ;) ;
282
+ );
283
+
284
+ --label-gap: if(style(--label-style: title-and-icon): 0.3rem ; else: if(style(--label--has-icon: yes) and style(--label--has-title: yes): 0.3rem ;) ;);
285
+ --label--host-gap: if(style(--label-style: title-and-icon): var(--label-gap) ; else: if(style(--label--has-icon: yes) and style(--label--has-title: yes): var(--label-gap) ;) ;);
286
+
287
+ --label--iconstack-display: if(
288
+ style(--label-style: icon-only): grid ; style(--label-style: title-only): none ; style(--label-style: title-and-icon): grid ; else: if(style(--label--has-icon: yes): grid ; else: none;) ;
289
+ );
290
+
291
+ --label--titlestack-display: if(
292
+ style(--label-style: icon-only): none ; style(--label-style: title-only): grid ; style(--label-style: title-and-icon): grid ; else: if(style(--label--has-title: yes): grid ; else: none;) ;
293
+ );
294
+ }
295
+ } */
296
+
297
+ @supports not (x: #{string.unquote('if(else:red)')}) {
298
+ :where(&:not([label-style])) {
299
+ @container style(--label-style: automatic) {
300
+ // background: red;
301
+ }
302
+
303
+ // ifs for --label--iconstack-display
304
+ @container style(--label-style: icon-only) or style(--label-style: title-and-icon) {
305
+ --label--iconstack-display: grid;
306
+ }
307
+ @container style(--label-style: title-only) {
308
+ --label--iconstack-display: none;
309
+ }
310
+ @container style(--label-style: automatic) {
311
+ &:has(> [slot='image']) {
312
+ :where(&) {
313
+ --label--iconstack-display: grid;
314
+ }
315
+ }
316
+ }
317
+ @container style(--label-style: automatic) {
318
+ &:not(:has(> [slot='image'])) {
319
+ :where(&) {
320
+ --label--iconstack-display: none;
321
+ }
322
+ }
323
+ }
324
+ // ifs for --label--titlestack-display
325
+ @container style(--label-style: title-only) or style(--label-style: title-and-icon) {
326
+ --label--titlestack-display: grid;
327
+ }
328
+ @container style(--label-style: icon-only) {
329
+ --label--titlestack-display: none;
330
+ }
331
+ @container style(--label-style: automatic) {
332
+ &:has(> :not([slot])) {
333
+ :where(&) {
334
+ --label--titlestack-display: grid;
335
+ }
336
+ }
337
+ }
338
+ @container style(--label-style: automatic) {
339
+ &:not(:has(> :not([slot]))) {
340
+ :where(&) {
341
+ --label--titlestack-display: none;
342
+ }
343
+ }
344
+ }
345
+ // ifs for --label--host-gap
346
+ @container style(--label-style: title-and-icon) {
347
+ --label-gap: 0.3rem;
348
+ --label--host-gap: var(--label-gap);
349
+ }
350
+ @container (not style(--label-style: title-and-icon)) {
351
+ &:has(> :not([slot])):has(> [slot='image']) {
352
+ --label-gap: 0.3rem;
353
+ --label--host-gap: var(--label-gap);
354
+ }
355
+ }
356
+ // SAFARI BUG 1/3
357
+ // @container (not style(--label-style)) and (not style(--label--has-icon)) and (not style(--label--has-title)) {
358
+ // :where(&:has(> [slot='image']):has(> :not([slot]))) {
359
+ // //::part(label-container) {
360
+ // --label-gap: 0.3rem;
361
+ // --label--host-gap: var(--label-gap);
362
+ // }
363
+ // }
364
+ // ifs for --label--host-grid-template-columns
365
+ @container style(--label-style: icon-only) or style(--label-style: title-only) {
366
+ --label--host-grid-template-columns: minmax(0, 1fr);
367
+ }
368
+ @container style(--label-style: title-and-icon) and style(--label-flow: vertical) {
369
+ --label--host-grid-template-columns: minmax(0, 1fr);
370
+ }
371
+ @container style(--label-style: title-and-icon) and (not style(--label-flow: vertical)) {
372
+ --label--host-grid-template-columns: auto minmax(0, 1fr);
373
+ }
374
+ @container and style(--label-flow: vertical) {
375
+ &:has(> :not([slot])):has(> [slot='image']) {
376
+ --label--host-grid-template-columns: minmax(0, 1fr);
377
+ }
378
+ }
379
+ @container and (not style(--label-flow: vertical)) {
380
+ &:has(> :not([slot])):has(> [slot='image']) {
381
+ --label--host-grid-template-columns: auto minmax(0, 1fr);
382
+ }
383
+ }
384
+ // @container (not style(--label--has-icon: yes)) {
385
+ &:not(:has(> :not([slot]))):not(:has(> [slot='image'])) {
386
+ --label--host-grid-template-columns: minmax(0, 1fr);
387
+ }
388
+ // }
389
+ // SAFARI BUG 2/3
390
+ // @container (not style(--label-style)) and (not style(--label--has-icon)) and (not style(--label--has-title)) {
391
+ // --label--host-grid-template-columns: auto minmax(0, 1fr);
392
+ // --label--host-grid-template-rows: minmax(0, 1fr);
393
+ // // background: red;
394
+ // }
395
+ // ifs for --label--host-grid-template-rows
396
+ @container style(--label-style: icon-only) or style(--label-style: title-only) {
397
+ --label--host-grid-template-rows: minmax(0, 1fr);
398
+ }
399
+ @container style(--label-style: title-and-icon) and style(--label-flow: vertical) {
400
+ --label--host-grid-template-rows: auto minmax(0, 1fr);
401
+ }
402
+ @container style(--label-style: title-and-icon) and (not style(--label-flow: vertical)) {
403
+ --label--host-grid-template-rows: minmax(0, 1fr);
404
+ }
405
+ @container and style(--label-flow: vertical) {
406
+ &:has(> :not([slot])):has(> [slot='image']) {
407
+ --label--host-grid-template-rows: auto minmax(0, 1fr);
408
+ }
409
+ }
410
+ @container and (not style(--label-flow: vertical)) {
411
+ &:has(> :not([slot])):has(> [slot='image']) {
412
+ --label--host-grid-template-rows: minmax(0, 1fr);
413
+ }
414
+ }
415
+ // @container (not style(--label--has-icon: yes)) {
416
+ &:not(:has(> :not([slot]))):not(:has(> [slot='image'])) {
417
+ --label--host-grid-template-rows: minmax(0, 1fr);
418
+ }
419
+ // }
420
+ // ifs for --label--host-align-items
421
+ @container style(--label-flow: vertical) {
422
+ --label--host-align-items: normal;
423
+ }
424
+ @container (not style(--label-flow: vertical)) {
425
+ --label--host-align-items: center;
426
+ }
427
+ // ifs for --label--host-justify-items
428
+ @container style(--label-flow: vertical) {
429
+ --label--host-justify-items: center;
430
+ }
431
+ @container (not style(--label-flow: vertical)) {
432
+ --label--host-justify-items: normal;
433
+ }
434
+ }
435
+
436
+ // :where(&:not([label-style])) {
437
+ // @each $v in vars.$label-styles {
438
+ // @container style(--label-style: #{$v}) {
439
+ // @include set-label-style(h-#{$v});
440
+ // }
441
+ // }
442
+ // }
443
+ // @each $v in vars.$label-styles {
444
+ // :where(&[label-style='#{$v}']) {
445
+ // @include set-label-style(h-#{$v});
446
+ // }
447
+ // }
448
+ // @container not style(--label-style) {
449
+ // &:not([label-style]) {
450
+ // // :where(&[image-hint='yes'][title-hint='yes']) {
451
+ // :where(&:has(> [slot='image']):has(> :not([slot]))) {
452
+ // @include set-label-style(h-title-and-icon);
453
+ // }
454
+ // // :where(&[image-hint='yes']:not([title-hint='yes'])) {
455
+ // :where(&:has(> [slot='image']):not(:has(> :not([slot])))) {
456
+ // @include set-label-style(h-icon-only);
457
+ // }
458
+ // // :where(&[title-hint='yes']:not([image-hint='yes'])) {
459
+ // :where(&:has(> :not([slot])):not(:has(> [slot='image']))) {
460
+ // @include set-label-style(h-title-only);
461
+ // }
462
+ // }
463
+ // }
464
+ // AGAIN
465
+ // :where(&:not([label-style])) {
466
+ // @each $v in vars.$label-styles {
467
+ // @container style(--label-style: #{$v}) and style(--label-flow: vertical) {
468
+ // @include set-label-style(v-#{$v});
469
+ // }
470
+ // }
471
+ // }
472
+ // @container style(--label-flow: vertical) {
473
+ // @each $v in vars.$label-styles {
474
+ // :where(&[label-style='#{$v}']) {
475
+ // @include set-label-style(v-#{$v});
476
+ // }
477
+ // }
478
+ // }
479
+ // @container (not style(--label-style)) and style(--label-flow: vertical) {
480
+ // &:not([label-style]) {
481
+ // :where(&:has(> [slot='image']):has(> :not([slot]))) {
482
+ // @include set-label-style(v-title-and-icon);
483
+ // }
484
+ // :where(&:has(> [slot='image']):not(:has(> :not([slot])))) {
485
+ // @include set-label-style(v-icon-only);
486
+ // }
487
+ // :where(&:has(> :not([slot])):not(:has(> [slot='image']))) {
488
+ // @include set-label-style(v-title-only);
489
+ // }
490
+ // }
491
+ // }
492
+ //
493
+ @for $i from 1 through 2 {
494
+ @include if-chain(--label-line-limit, line-limit, $i) {
495
+ @include mixins.write-props(map.get($label-line-ifs, $i)); //@include set-label-line-limit($i);
496
+ }
497
+ }
498
+ //
499
+ @include if-chain(--label-truncation-mode, truncation-mode, tail) {
500
+ @include mixins.write-props(map.get($label-truncation-ifs, tail)); //@include set-label-truncation-mode(tail);
501
+ }
502
+ //
503
+ @each $label, $size in vars.$label-fonts {
504
+ @include if-chain(--label-font, font, $label) {
505
+ @include set-label-font($label);
506
+ }
507
+ }
508
+ }
509
+
510
+ // ifs finally
511
+ /* @supports (x: #{string.unquote('attr(x type(*))')}) {
512
+ :where(&) {
513
+ --label-style: attr(label-style type(<custom-ident>), inherit);
514
+ --label-truncation-mode: attr(truncation-mode type(<custom-ident>), inherit);
515
+ --label-line-limit: attr(line-limit type(<number>), inherit);
516
+ --label-font: attr(font type(<custom-ident>), inherit);
517
+ }
518
+ } */
519
+
520
+ @supports not (x: #{string.unquote('attr(x type(*))')}) {
521
+ @each $v in vars.$label-styles {
522
+ :where(&[label-style='#{$v}']) {
523
+ --label-style: #{$v};
524
+ }
525
+ }
526
+ @for $i from 1 through 2 {
527
+ :where(&[line-limit='#{$i}']) {
528
+ --label-line-limit: #{$i};
529
+ }
530
+ }
531
+ :where(&[truncation-mode='tail']) {
532
+ --label-truncation-mode: tail;
533
+ }
534
+ }
535
+ }
536
+ }
@@ -108,6 +108,9 @@
108
108
  // }
109
109
 
110
110
  // SECTION: componentize
111
+ :where(&)::part(menu-summary) {
112
+ @include mixins.componentize(menusummary);
113
+ }
111
114
  :where(& > button, & > [is='disclosure-group'] > button, & > [is='disclosure-group'] > summary),
112
115
  :where(& > menu-view)::part(menu-summary) {
113
116
  @include mixins.componentize(menuitem);
@@ -130,6 +133,15 @@
130
133
  // componentize
131
134
  @layer #{vars.$colors-layer} {
132
135
  menu-view {
136
+ @include mixins.add-focus-visible-state('::part(menu-summary)') {
137
+ --menusummaryface: var(--menusummaryhighlightface,);
138
+ --menusummarytext: var(--menusummaryhighlighttext,);
139
+ }
140
+ @include mixins.add-hover-state('::part(menu-summary)') {
141
+ --menusummaryface: var(--menusummaryhighlightface,);
142
+ --menusummarytext: var(--menusummaryhighlighttext,);
143
+ }
144
+
133
145
  > button,
134
146
  > [is='disclosure-group'] > button,
135
147
  > [is='disclosure-group'] > summary {
@@ -170,6 +182,11 @@
170
182
  // componentize
171
183
  @layer #{vars.$ui-layer} {
172
184
  menu-view {
185
+ @include mixins.add-active-state('::part(menu-summary)') {
186
+ --menusummaryface: var(--menusummaryactiveface,);
187
+ --menusummarytext: var(--menusummaryactivetext,);
188
+ }
189
+
173
190
  > button,
174
191
  > [is='disclosure-group'] > button,
175
192
  > [is='disclosure-group'] > summary {
@@ -138,7 +138,7 @@
138
138
 
139
139
  > scroll-view {
140
140
  :where(&) {
141
- border-right: solid 1px light-dark(var(--nav-split-view-separator-color), var(--nav-split-view-separator-color-dark));
141
+ border-right: solid 1px var(--separator);
142
142
  // --scroll-view-box-shadow: none;
143
143
  }
144
144
  }
@@ -263,7 +263,7 @@
263
263
  }
264
264
 
265
265
  :where(& > scroll-view) {
266
- border-right: solid 1px light-dark(var(--nav-split-view-separator-color), var(--nav-split-view-separator-color-dark));
266
+ border-right: solid 1px var(--separator);
267
267
  // --scroll-view-box-shadow: none;
268
268
  }
269
269
 
@@ -338,7 +338,7 @@
338
338
  }
339
339
 
340
340
  :where(& > scroll-view) {
341
- border-right: solid 1px light-dark(var(--nav-split-view-separator-color), var(--nav-split-view-separator-color-dark));
341
+ border-right: solid 1px var(--separator);
342
342
  // --scroll-view-box-shadow: none;
343
343
  }
344
344
 
@@ -16,18 +16,18 @@
16
16
  --sheet-view-translate: translateY(var(--view-transition-dialog-offscreen-y));
17
17
 
18
18
  // :where(&[fine-presentation-large-adaptation='bottom-bar'] > tool-bar > [slot^='top-bar-']) {
19
- // FIXME: Add live tooltip
20
- // NOTE: By default toolbars items dialogs have only icons, (except if they define/force w/ labelStyle)
21
- :where(& > tool-bar > [slot='top-bar-leading'], & > tool-bar > [slot='top-bar-trailing']) {
22
- --label-style: icon-only;
23
- }
24
-
25
- // NOTE: By default bottombar items dialogs on iphone have only icons, (except if they define/force w/ labelStyle)
26
- @media (pointer: coarse) {
27
- :where(& > tool-bar > [slot^='bottom-bar-']) {
28
- --label-style: icon-only;
29
- }
30
- }
19
+ // // FIXME: Add live tooltip
20
+ // // NOTE: By default toolbars items dialogs have only icons, (except if they define/force w/ labelStyle)
21
+ // :where(& > tool-bar > [slot='top-bar-leading'], & > tool-bar > [slot='top-bar-trailing']) {
22
+ // --label-style: icon-only;
23
+ // }
24
+
25
+ // // NOTE: By default bottombar items dialogs on iphone have only icons, (except if they define/force w/ labelStyle)
26
+ // @media (pointer: coarse) {
27
+ // :where(& > tool-bar > [slot^='bottom-bar-']) {
28
+ // --label-style: icon-only;
29
+ // }
30
+ // }
31
31
 
32
32
  @media (pointer: coarse) and (orientation: portrait) {
33
33
  clip-path: inset(var(--safe-area-inset-top) 0 0 0 round 2rem 2rem 0 0);
@@ -122,6 +122,11 @@
122
122
  #{$selector} [is='sidebar-view'][open] ~ & > [is='form-view'] {
123
123
  :where(&) {
124
124
  transform: translateY(calc(calc(max(var(--safe-area-inset-top), var(--sidebar-block-spacing)) * -1) - 150%));
125
+
126
+ // SAFARI FIX
127
+ @media (prefers-reduced-motion: no-preference) {
128
+ animation: ipad_form_view_slide_up_offedge var(--sidebar-transition-duration) ease forwards;
129
+ }
125
130
  }
126
131
  }
127
132
  }