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

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 (54) hide show
  1. package/generated/components/bordered-button.d.ts +4 -0
  2. package/generated/components/bordered-button.js +8 -1
  3. package/generated/components/bordered-prominent-button.d.ts +4 -0
  4. package/generated/components/bordered-prominent-button.js +8 -1
  5. package/generated/components/borderless-button.d.ts +4 -0
  6. package/generated/components/borderless-button.js +8 -1
  7. package/generated/components/date-picker.js +10 -4
  8. package/generated/components/glass-button.d.ts +4 -0
  9. package/generated/components/glass-button.js +8 -1
  10. package/generated/components/glass-prominent-button.d.ts +4 -0
  11. package/generated/components/glass-prominent-button.js +8 -1
  12. package/generated/components/label-view.js +1 -33
  13. package/generated/components/picker-view.js +19 -15
  14. package/generated/components/scroll-view.js +8 -3
  15. package/generated/components/sheet-view.d.ts +0 -1
  16. package/generated/components/sheet-view.js +19 -7
  17. package/generated/components/sidebar-toggle.js +1 -1
  18. package/generated/components/tab-view.js +7 -7
  19. package/generated/components/table-view.js +11 -5
  20. package/generated/components/text-field.js +9 -4
  21. package/generated/components/tool-bar-item-group.d.ts +0 -2
  22. package/generated/components/tool-bar-item-group.js +15 -26
  23. package/generated/components/tool-bar-item.d.ts +0 -2
  24. package/generated/components/tool-bar-item.js +17 -28
  25. package/generated/components/tool-bar.d.ts +12 -0
  26. package/generated/components/tool-bar.js +19 -6
  27. package/generated/css/index.css +270 -70
  28. package/generated/events/tab-view.d.ts +6 -2
  29. package/generated/internal/class/css-style-observer.js +1 -1
  30. package/generated/internal/utils/button-role.js +25 -5
  31. package/generated/internal/utils/index.d.ts +0 -1
  32. package/generated/internal/utils/index.js +0 -1
  33. package/package.json +1 -1
  34. package/scss/_vars.scss +5 -0
  35. package/scss/base/_reboot.scss +10 -0
  36. package/scss/colors/_index.scss +37 -19
  37. package/scss/components/_bordered-button.scss +14 -0
  38. package/scss/components/_bordered-prominent-button.scss +13 -0
  39. package/scss/components/_borderless-button.scss +4 -0
  40. package/scss/components/_content-unavailable-view.scss +1 -1
  41. package/scss/components/_disclosure-group.scss +80 -33
  42. package/scss/components/_glass-button.scss +14 -0
  43. package/scss/components/_glass-prominent-button.scss +14 -0
  44. package/scss/components/_label-view.scss +42 -16
  45. package/scss/components/_label-view.scss.txt +536 -0
  46. package/scss/components/_sheet-view.scss +12 -12
  47. package/scss/components/_tab-bar.scss +5 -0
  48. package/scss/components/_tool-bar-item.scss +19 -0
  49. package/scss/components/_tool-bar.scss +25 -0
  50. package/scss/placeholders/_buttons.scss +72 -37
  51. package/scss/transitions/_tab-bar.scss +6 -5
  52. package/web-components.html-data/en.json +12 -21
  53. package/generated/internal/utils/toolbar-repositioner.d.ts +0 -1
  54. 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
+ }
@@ -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
  }
@@ -45,6 +45,25 @@
45
45
 
46
46
  place-content: center;
47
47
  }
48
+
49
+ // NOTE: labels w/ text in toolbar items have paddings
50
+ > button:has(> label-view > :not([slot])),
51
+ > picker-view > menu-view:has(> label-view > :not([slot])),
52
+ > menu-view:has(> label-view > :not([slot])) {
53
+ :where(& > label-view) {
54
+ --label-padding-inline: 0.5rem;
55
+ }
56
+ }
57
+
58
+ // NOTE: on fine screens, toolbar icons are a little smaller
59
+ @media (pointer: fine) {
60
+ > button > label-view,
61
+ > menu-view > label-view {
62
+ :where(&) {
63
+ --label-image-size: 1.8;
64
+ }
65
+ }
66
+ }
48
67
  }
49
68
 
50
69
  // tool-bar-item[slot],
@@ -108,6 +108,31 @@
108
108
  --safe-area-inset-bottom: 0px;
109
109
  }
110
110
  }
111
+
112
+ // FIXME: Add live tooltip
113
+ // NOTE: By default top bar items with icons, prefer only icon to be shown, (except if they define/force w/ labelStyle)
114
+ > [slot^='top-bar-'],
115
+ > [slot='cancellation-action'],
116
+ > [slot='primary-action'],
117
+ > [slot='confirmation-action'],
118
+ > [slot='destructive-action'] {
119
+ // > label-view,
120
+ > button:has(> label-view > [slot='image']) {
121
+ :where(&) {
122
+ --label-style: icon-only;
123
+ }
124
+ }
125
+ }
126
+ // NOTE: By default bottom bar items with icons on iphone, prefer only icon to be shown, (except if they define/force w/ labelStyle)
127
+ @media (pointer: coarse) {
128
+ > [slot^='bottom-bar-'] {
129
+ > button:has(> label-view > [slot='image']) {
130
+ :where(&) {
131
+ --label-style: icon-only;
132
+ }
133
+ }
134
+ }
135
+ }
111
136
  }
112
137
  }
113
138