@swiftwc/ui 0.0.0-dev.22 → 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 (36) 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.js +1 -1
  4. package/generated/components/bordered-prominent-button.js +1 -1
  5. package/generated/components/borderless-button.js +1 -1
  6. package/generated/components/fine-tooltip.d.ts +7 -0
  7. package/generated/components/fine-tooltip.js +93 -0
  8. package/generated/components/glass-button.js +1 -1
  9. package/generated/components/glass-prominent-button.js +1 -1
  10. package/generated/components/index.d.ts +1 -0
  11. package/generated/components/index.js +1 -0
  12. package/generated/components/tool-bar-item.d.ts +2 -0
  13. package/generated/components/tool-bar-item.js +18 -4
  14. package/generated/css/index.css +236 -149
  15. package/generated/internal/utils/button-role.d.ts +1 -1
  16. package/generated/internal/utils/button-role.js +8 -3
  17. package/package.json +1 -1
  18. package/scss/_components.scss +2 -0
  19. package/scss/_mixins.scss +4 -0
  20. package/scss/_transitions.scss +2 -0
  21. package/scss/base/_reboot.scss +5 -0
  22. package/scss/base/_root.scss +63 -67
  23. package/scss/colors/_index.scss +57 -26
  24. package/scss/components/_alert-dialog.scss +4 -5
  25. package/scss/components/_confirmation-dialog.scss +1 -1
  26. package/scss/components/_fine-tooltip.scss +82 -0
  27. package/scss/components/_index.scss +21 -20
  28. package/scss/components/_menu-view.scss +17 -0
  29. package/scss/components/_navigation-split-view.scss +3 -3
  30. package/scss/components/_tool-bar-item.scss +61 -62
  31. package/scss/mixins/_button.scss +42 -0
  32. package/scss/mixins/_color.scss +16 -0
  33. package/scss/mixins/_index.scss +1 -1
  34. package/scss/placeholders/_buttons.scss +1 -44
  35. package/scss/transitions/_fine-tooltip.scss +21 -0
  36. package/web-components.html-data/en.json +12 -1
@@ -1 +1 @@
1
- export default function (target: HTMLElement, attributeName: string | null): void;
1
+ export default function (target: HTMLElement, role: string | null): void;
@@ -5,6 +5,7 @@ import { default as $ } from './cash';
5
5
  import onoff from './onoff';
6
6
  function renderPlaceholder(el, role) {
7
7
  const label = el.querySelector(':scope>[slot=placeholder]') ?? el.appendChild($(`<label-view slot="placeholder"></label-view>`, '>1'));
8
+ console.log(9999999, el, role);
8
9
  switch (role) {
9
10
  case 'cancel':
10
11
  label.setAttribute('title', I18n.t('ButtonRole').Default.Cancel);
@@ -18,6 +19,10 @@ function renderPlaceholder(el, role) {
18
19
  label.setAttribute('title', I18n.t('ButtonRole').Default.Confirm);
19
20
  label.setAttribute('system-image', Snapshot.config['confirm-button-icon']);
20
21
  break;
22
+ case 'confirmation-action':
23
+ label.setAttribute('title', I18n.t('ButtonRole').Default.Confirm);
24
+ label.setAttribute('system-image', Snapshot.config['confirm-button-icon']);
25
+ break;
21
26
  case 'destructive':
22
27
  label.setAttribute('title', I18n.t('ButtonRole').Default.Destructive);
23
28
  label.setAttribute('system-image', Snapshot.config['delete-button-icon']);
@@ -30,10 +35,10 @@ function renderPlaceholder(el, role) {
30
35
  // label.setAttribute('title', I18n.t('ButtonRole').Default.Destructive)
31
36
  // } else label?.remove()
32
37
  }
33
- export default function (target, attributeName) {
34
- renderPlaceholder(target, target.getAttribute(attributeName ?? ''));
38
+ export default function (target, role) {
39
+ renderPlaceholder(target, role);
35
40
  CleanupRegistry.unregister(target, 'i18n');
36
41
  CleanupRegistry.register(target, onoff('localechange', () => {
37
- renderPlaceholder(target, target.getAttribute(attributeName ?? ''));
42
+ renderPlaceholder(target, role);
38
43
  }, I18n.on).on(), 'i18n');
39
44
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swiftwc/ui",
3
- "version": "0.0.0-dev.22",
3
+ "version": "0.0.0-dev.23",
4
4
  "description": "Elegant SwiftUI-inspired web components for standalone web apps and web extensions.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -11,6 +11,8 @@
11
11
 
12
12
  @forward 'components/detail-placeholder';
13
13
 
14
+ @forward 'components/fine-tooltip';
15
+
14
16
  @forward 'components/sticky-container';
15
17
 
16
18
  @forward 'components/sheet-view';
package/scss/_mixins.scss CHANGED
@@ -1,3 +1,7 @@
1
1
  @forward 'mixins/index';
2
2
 
3
3
  @forward 'mixins/dialog';
4
+
5
+ @forward 'mixins/button';
6
+
7
+ @forward 'mixins/color';
@@ -10,6 +10,8 @@
10
10
 
11
11
  @forward 'transitions/dialog';
12
12
 
13
+ @forward 'transitions/fine-tooltip';
14
+
13
15
  @forward 'transitions/menu-view';
14
16
 
15
17
  @forward 'transitions/glass-button';
@@ -43,6 +43,7 @@
43
43
  text-transform: none;
44
44
  }
45
45
 
46
+ // FIXME:
46
47
  .ph,
47
48
  .ph::before {
48
49
  display: grid;
@@ -110,6 +111,10 @@
110
111
 
111
112
  html {
112
113
  transition: font-size 1ms step-start;
114
+
115
+ @media (pointer: fine) {
116
+ font-size: 14px;
117
+ }
113
118
  }
114
119
 
115
120
  // label {
@@ -61,8 +61,27 @@
61
61
  --liquid-glass-bg-alpha: 99%;
62
62
  --liquid-glass-bg-alpha-dark: 99%;
63
63
  }
64
+ //
64
65
  --liquid-glass-bg: oklch(var(--liquid-glass-bg-lch) / var(--liquid-glass-bg-alpha));
65
66
  --liquid-glass-bg-dark: oklch(var(--liquid-glass-bg-lch-dark) / var(--liquid-glass-bg-alpha-dark));
67
+
68
+ --clear-glass-bg: var(--liquid-glass-bg);
69
+ --clear-glass-bg-dark: var(--liquid-glass-bg-dark);
70
+ --clear-glass-focus-bg: var(--clear-glass-bg);
71
+ --clear-glass-focus-bg-dark: var(--clear-glass-bg-dark);
72
+ --clear-glass-active-bg: var(--clear-glass-bg);
73
+ --clear-glass-active-bg-dark: var(--clear-glass-bg-dark);
74
+
75
+ // @include mixins.wire-tinted-glass(tinted-glass-bg, tinted-glass-focus-bg, tinted-glass-active-bg);
76
+
77
+ // This is for glass effect on interactive elements like controls that supports hover on fine screens and active state!
78
+ // NOTE: On fine screens this fallbacks/transforms into a basic color w/out glass efect!
79
+ --control-clear-glass-bg: var(--liquid-glass-bg);
80
+ --control-clear-glass-bg-dark: var(--liquid-glass-bg-dark);
81
+ --control-clear-glass-focus-bg: var(--control-clear-glass-bg);
82
+ --control-clear-glass-focus-bg-dark: var(--control-clear-glass-bg-dark);
83
+ --control-clear-glass-active-bg: var(--control-clear-glass-bg);
84
+ --control-clear-glass-active-bg-dark: var(--control-clear-glass-bg-dark);
66
85
  //color-mix(in oklch, red calc(100% - 50%), transparent)
67
86
 
68
87
  // --sidebar-bg-lch: 1 0 0;
@@ -83,22 +102,24 @@
83
102
  var(--liquid-glass-bs-bevel-highlight), var(--liquid-glass-bs-soft-bevel-blur), inset 3px 3px 10px -3px light-dark(#ddd, #262626), inset -3px -3px 10px -3px light-dark(#ddd, #262626),
84
103
  inset 0 0 5px 1px light-dark(#fff, #141414), inset 0 0 0 0.5px light-dark(#00000040, #ffffff26), inset 0 0 24px 0 light-dark(#0000001a, #ffffff0d), var(--liquid-glass-bs-outer);
85
104
 
105
+ --control-clear-glass-box-shadow: var(--liquid-glass-box-shadow);
106
+
86
107
  --navigation-bar-block-size: var(--tool-bar-block-size);
87
108
 
88
109
  --nav-split-view-sidebar-inline-size: 20rem;
89
110
  --nav-split-view-content-inline-size: 25rem;
90
111
 
91
- --nav-split-view-separator-color: var(--divider); //oklch(0 0 0);
92
- --nav-split-view-separator-color-dark: var(--divider-dark); //oklch(1 0 0);
112
+ // --nav-split-view-separator-color: var(--divider); //var(--black);
113
+ // --nav-split-view-separator-color-dark: var(--divider-dark); //var(--white);
93
114
 
94
- --primary-label: oklch(0 0 0);
95
- --primary-label-dark: oklch(1 0 0);
115
+ // --primary-label: var(--black);
116
+ // --primary-label-dark: var(--white);
96
117
 
97
118
  // --secondary-label: oklch(0.4962 0 0); // ✅
98
119
  // --secondary-label-dark: oklch(0.6334 0 0); // ✅
99
120
 
100
- --secondary-text: oklch(0 0 0);
101
- --secondary-text-dark: oklch(1 0 0);
121
+ --secondary-text: var(--black);
122
+ --secondary-text-dark: var(--white);
102
123
 
103
124
  --tint: oklch(0.5325 0.1899 257.12);
104
125
  --tint1g: color-mix(in oklch, white 70%, var(--tint)); //oklch(0.9208 0.0306 249.69);
@@ -110,16 +131,16 @@
110
131
  // --tint-lch: 0.452 0.313214 264.052;
111
132
  // --tint-lch-dark: 0.452 0.313214 264.052;
112
133
 
113
- --divider: oklch(0.9431 0 0); // ✅
114
- --divider-dark: oklch(0.2858 0.0036 286.17); // ✅
134
+ // --divider: oklch(0.9431 0 0); // ✅
135
+ // --divider-dark: oklch(0.2858 0.0036 286.17); // ✅
115
136
 
116
- --system-bg: oklch(1 0 0); // ✅
117
- --system-bg-dark: oklch(0 0 0); // ✅
137
+ --system-bg: var(--white); // ✅
138
+ --system-bg-dark: var(--black); // ✅
118
139
 
119
- --primary-bg: oklch(0.9566 0.0067 286.27); // ✅
120
- --primary-bg-dark: oklch(0 0 0); // ✅
140
+ // --primary-bg: oklch(0.9566 0.0067 286.27); // ✅
141
+ // --primary-bg-dark: var(--black); // ✅
121
142
 
122
- --primary-grouped-bg: oklch(1 0 0); //0.8136 0.0428 255.03;
143
+ --primary-grouped-bg: var(--white); //0.8136 0.0428 255.03;
123
144
  --primary-grouped-bg-dark: oklch(0.8136 0.0428 255.03);
124
145
 
125
146
  --secondary-bg: oklch(0.8045 0.0779 73.42);
@@ -145,8 +166,8 @@
145
166
  --clear: transparent;
146
167
 
147
168
  --toolbar-col-gap: 0.5rem;
148
- --toolbar-cell-bg: var(--liquid-glass-bg); //oklch(var(--sidebar-bg-lch) / var(--sidebar-bg-alpha)); //oklch(0 0 0 / 0%);
149
- --toolbar-cell-bg-dark: var(--liquid-glass-bg-dark); //oklch(var(--sidebar-bg-lch-dark) / var(--sidebar-bg-alpha-dark)); //oklch(0 0 0 / 0%);
169
+ --toolbar-cell-bg: var(--control-clear-glass-bg); //oklch(var(--sidebar-bg-lch) / var(--sidebar-bg-alpha)); //oklch(0 0 0 / 0%);
170
+ --toolbar-cell-bg-dark: var(--control-clear-glass-bg-dark); //oklch(var(--sidebar-bg-lch-dark) / var(--sidebar-bg-alpha-dark)); //oklch(0 0 0 / 0%);
150
171
  --toolbar-cell-inline-padding-start: 0.25rem;
151
172
  --toolbar-cell-inline-padding-end: 0.25rem;
152
173
  --toolbar-cell-block-padding-start: 0.25rem;
@@ -154,22 +175,23 @@
154
175
  --toolbar-cell-border-radius: var(--pill-border-radius);
155
176
  --toolbar-cell-min-size: 2.8rem;
156
177
 
157
- --toolbar-cell-focus-bg: var(--toolbar-cell-bg); //oklch(0 0 0 / 0%);
158
- --toolbar-cell-focus-bg-dark: var(--toolbar-cell-bg-dark); //oklch(0 0 0 / 0%);
159
- --toolbar-cell-active-bg: var(--toolbar-cell-bg); //oklch(0 0 0 / 0%);
160
- --toolbar-cell-active-bg-dark: var(--toolbar-cell-bg-dark); //oklch(0 0 0 / 0%);
178
+ --toolbar-cell-focus-bg: var(--control-clear-glass-focus-bg); //oklch(0 0 0 / 0%);
179
+ --toolbar-cell-focus-bg-dark: var(--control-clear-glass-focus-bg-dark); //oklch(0 0 0 / 0%);
180
+ --toolbar-cell-active-bg: var(--control-clear-glass-active-bg); //oklch(0 0 0 / 0%);
181
+ --toolbar-cell-active-bg-dark: var(--control-clear-glass-active-bg-dark); //oklch(0 0 0 / 0%);
182
+
183
+ --toolbar-cell-box-shadow: var(--control-clear-glass-box-shadow);
161
184
 
162
- --toolbar-cell-box-shadow: var(--liquid-glass-box-shadow);
185
+ --menu-bg: var(--control-clear-glass-bg); //--menu-bg: var(--liquid-glass-bg); //oklch(var(--sidebar-bg-lch) / var(--sidebar-bg-alpha));
186
+ --menu-bg-dark: var(--control-clear-glass-bg-dark); //--menu-bg-dark: var(--liquid-glass-bg-dark); //oklch(var(--sidebar-bg-lch-dark) / var(--sidebar-bg-alpha-dark));
163
187
 
164
- --menu-bg: var(--liquid-glass-bg); //oklch(var(--sidebar-bg-lch) / var(--sidebar-bg-alpha));
165
- --menu-bg-dark: var(--liquid-glass-bg-dark); //oklch(var(--sidebar-bg-lch-dark) / var(--sidebar-bg-alpha-dark));
166
188
  --menu-max-inline-size: 15rem;
167
189
  --menu-max-block-size: 60vh;
168
190
  --menu-spacing: 1rem;
169
191
  --menu-host-offscreen-transform: scale(0);
170
192
  --menu-host-offscreen-filter: blur(10px);
171
193
 
172
- --menu-popover-box-shadow: var(--liquid-glass-box-shadow);
194
+ --menu-popover-box-shadow: var(--control-clear-glass-box-shadow);
173
195
 
174
196
  --menu-padding: 0.5rem;
175
197
 
@@ -180,12 +202,6 @@
180
202
 
181
203
  --menu-item-border-radius: 1.2rem; // define this to be like a pill, based on an exemplar item min-height
182
204
 
183
- --menu-item-focus-bg: oklch(0 0 0 / 0%);
184
- --menu-item-focus-bg-dark: oklch(0 0 0 / 0%);
185
-
186
- --menu-item-active-bg: oklch(0 0 0 / 20%);
187
- --menu-item-active-bg-dark: oklch(1 0 0 / 20%);
188
-
189
205
  --touchglass-transition-duration: 300ms;
190
206
  // --touchglass-transition-duration: 15s;
191
207
 
@@ -304,13 +320,6 @@
304
320
  --table-accessory-gap: 0.2rem;
305
321
  --table-accessory-size: 1.2rem;
306
322
 
307
- --glass-btn-bg: var(--liquid-glass-bg);
308
- --glass-btn-bg-dark: var(--liquid-glass-bg-dark);
309
- --glass-btn-focus-bg: var(--glass-btn-bg);
310
- --glass-btn-focus-bg-dark: var(--glass-btn-bg-dark);
311
- --glass-btn-active-bg: var(--glass-btn-bg);
312
- --glass-btn-active-bg-dark: var(--glass-btn-bg-dark);
313
-
314
323
  // button sizes 1/2
315
324
  @each $size, $media in vars.$button-sizes {
316
325
  $props: map.get($media, default);
@@ -322,6 +331,11 @@
322
331
  }
323
332
  }
324
333
 
334
+ --picker-affordance-size: 1rem;
335
+ --picker-affordance-col-gap: 1rem;
336
+
337
+ // SECTION
338
+
325
339
  // fine
326
340
  @media (pointer: fine) {
327
341
  // button sizes 2/2
@@ -335,47 +349,29 @@
335
349
  }
336
350
  }
337
351
 
338
- --primary-bg: oklch(0.9761 0 0); // ✅
339
- --primary-bg-dark: oklch(0.2666 0.0071 67.52); // ✅
352
+ // --primary-bg: oklch(0.9761 0 0); // ✅
353
+ // --primary-bg-dark: oklch(0.2666 0.0071 67.52); // ✅
340
354
 
341
- --divider: oklch(0.9249 0 0); // ✅
342
- --divider-dark: oklch(0.3452 0.0074 84.59); // ✅
355
+ // --divider: oklch(0.9249 0 0); // ✅
356
+ // --divider-dark: oklch(0.3452 0.0074 84.59); // ✅
343
357
 
344
358
  // --secondary-label: oklch(0.5999 0 0); // ✅
345
359
  // --secondary-label-dark: oklch(0.69 0.0019 67.79); // ✅
346
360
 
347
- --noglass-bg: oklch(1 0 0);
348
- --noglass-bg-dark: oklch(0.2871 0.0029 17.33);
361
+ // SECTION Glass
349
362
 
350
- --toolbar-cell-bg: var(--noglass-bg);
351
- --toolbar-cell-bg-dark: var(--noglass-bg-dark);
363
+ --control-clear-glass-bg: var(--white);
364
+ --control-clear-glass-bg-dark: oklch(0.2871 0.0029 17.33);
365
+ --control-clear-glass-focus-bg: var(--gray5); //oklch(0.9551 0 0); //FIXME: gray6!!!
366
+ --control-clear-glass-focus-bg-dark: oklch(0.3578 0.008 75.3); //FIXME: gray4!!!
367
+ --control-clear-glass-active-bg: var(--gray3); //oklch(0.9128 0 0); //FIXME: gray5!!!
368
+ --control-clear-glass-active-bg-dark: oklch(0.3995 0.0077 75.32); //FIXME: gray3!!!
352
369
 
353
- --toolbar-cell-focus-bg: oklch(0.9551 0 0); //FIXME: gray6!!!
354
- --toolbar-cell-focus-bg-dark: oklch(0.3578 0.008 75.3); //FIXME: gray4!!!
355
- --toolbar-cell-active-bg: oklch(0.9128 0 0); //FIXME: gray5!!!
356
- --toolbar-cell-active-bg-dark: oklch(0.3995 0.0077 75.32); //FIXME: gray3!!!
370
+ --control-clear-glass-box-shadow: var(--liquid-glass-bs-bevel-highlight), var(--liquid-glass-bs-soft-bevel-blur), var(--liquid-glass-bs-outer);
357
371
 
358
- --menu-bg: var(--noglass-bg);
359
- --menu-bg-dark: var(--noglass-bg-dark);
360
-
361
- --toolbar-cell-box-shadow: var(--liquid-glass-bs-bevel-highlight), var(--liquid-glass-bs-soft-bevel-blur), var(--liquid-glass-bs-outer);
362
- --menu-popover-box-shadow: var(--liquid-glass-bs-bevel-highlight), var(--liquid-glass-bs-soft-bevel-blur), var(--liquid-glass-bs-outer);
372
+ // SECTION
363
373
 
364
374
  //
365
- --menu-item-focus-color: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
366
- --menu-item-focus-color-dark: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
367
-
368
- --menu-item-active-color: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
369
- --menu-item-active-color-dark: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
370
-
371
- --menu-item-focus-bg: var(--accentColor);
372
- --menu-item-focus-bg-dark: var(--accentColor);
373
-
374
- --menu-item-active-bg: oklch(from var(--accentColor) max(calc(l * 0.7), 0) min(calc(c * 1.4), c) h); //color-mix(in oklch, black 10%, var(--accentColor));
375
- --menu-item-active-bg-dark: oklch(from var(--accentColor) min(calc(l * 1.3), 1) min(calc(c * 1.2), c) h); //color-mix(in oklch, white 10%, var(--accentColor));
376
-
377
- --picker-affordance-size: 1rem;
378
- --picker-affordance-col-gap: 1rem;
379
375
 
380
376
  // list
381
377
  // @each $v in list, form {
@@ -417,6 +417,12 @@ $colors: map.merge(
417
417
  inherits: true;
418
418
  }
419
419
 
420
+ @property --clear {
421
+ syntax: '<color>';
422
+ initial-value: oklch(0 0 0 / 0%); // ✅
423
+ inherits: true;
424
+ }
425
+
420
426
  @layer #{vars.$colors-layer} {
421
427
  :root {
422
428
  // --background: light-dark(oklch(1 0 0), oklch(0 0 0)); // ✅
@@ -510,17 +516,13 @@ $colors: map.merge(
510
516
  // // --toolbaritemtext: light-dark(var(--primary-label), var(--primary-label-dark));
511
517
  // }
512
518
  }
513
- :where(&[tint]) {
514
- --toolbaritemtext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
515
- --toolbaritemhighlighttext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
516
- --toolbaritemactivetext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
517
-
518
- --toolbaritemface: var(--accentColor); //light-dark(var(--accentColor), var(--accentColor));
519
- --toolbaritemhighlightface: light-dark(
520
- oklch(from var(--accentColor) min(calc(l * 1.1), 1) min(calc(c * 1.1), c) h),
521
- oklch(from var(--accentColor) min(calc(l * 1.1), 1) min(calc(c * 1.1), c) h)
522
- );
523
- --toolbaritemactiveface: light-dark(oklch(from var(--accentColor) min(calc(l * 1.2), 1) min(calc(c * 1.1), c) h), oklch(from var(--accentColor) min(calc(l * 1.2), 1) min(calc(c * 1.1), c) h));
519
+
520
+ :where(&[tint], [tint] &) {
521
+ // --toolbaritemtext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
522
+ // --toolbaritemhighlighttext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
523
+ // --toolbaritemactivetext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
524
+
525
+ @include mixins.wire-tinted-glass(toolbaritem);
524
526
  }
525
527
  }
526
528
 
@@ -531,12 +533,12 @@ $colors: map.merge(
531
533
  // }
532
534
  // }
533
535
 
534
- sidebar-toggle,
536
+ sidebar-toggle {
535
537
  // tool-bar-item,
536
538
  // [is='tab-item'],
537
539
  // list-view > button,
538
540
  // this is temp for toolbar look aboove tables
539
- menu-view {
541
+ // menu-view {
540
542
  // [is='disclosure-group'] {
541
543
  :where(&) {
542
544
  --toolbaritemhighlightface: light-dark(var(--toolbar-cell-focus-bg), var(--toolbar-cell-focus-bg-dark));
@@ -546,12 +548,43 @@ $colors: map.merge(
546
548
 
547
549
  menu-view {
548
550
  :where(&) {
549
- --menuitemhighlighttext: light-dark(var(--menu-item-focus-color), var(--menu-item-focus-color-dark));
550
- --menuitemhighlightface: light-dark(var(--menu-item-focus-bg), var(--menu-item-focus-bg-dark));
551
+ --menuitemhighlightface: light-dark(var(--clear), var(--clear));
552
+
553
+ --menuitemactiveface: light-dark(oklch(0 0 0 / 20%), oklch(1 0 0 / 20%));
554
+
555
+ @media (pointer: fine) {
556
+ --menuitemhighlightface: light-dark(var(--accentColor), var(--accentColor));
557
+
558
+ --menuitemhighlighttext: light-dark(oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none), oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none));
559
+
560
+ --menuitemactivetext: light-dark(oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none), oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none));
551
561
 
552
- --menuitemactivetext: light-dark(var(--menu-item-active-color), var(--menu-item-active-color-dark));
553
- --menuitemactiveface: light-dark(var(--menu-item-active-bg), var(--menu-item-active-bg-dark));
562
+ --menuitemactiveface: light-dark(
563
+ oklch(from var(--accentColor) max(calc(l * 0.7), 0) min(calc(c * 1.4), c) h),
564
+ oklch(from var(--accentColor) min(calc(l * 1.3), 1) min(calc(c * 1.2), c) h)
565
+ ); //color-mix(in oklch, black 10%, var(--accentColor)); //color-mix(in oklch, white 10%, var(--accentColor));
566
+ }
567
+
568
+ --menusummaryhighlightface: light-dark(var(--toolbar-cell-focus-bg), var(--toolbar-cell-focus-bg-dark));
569
+ --menusummaryactiveface: light-dark(var(--toolbar-cell-active-bg), var(--toolbar-cell-active-bg-dark));
570
+ }
571
+
572
+ tool-bar-item > picker-view > &,
573
+ tool-bar-item > & {
574
+ :where(&) {
575
+ --menusummaryface: var(--toolbaritemface);
576
+ --menusummaryhighlightface: var(--toolbaritemhighlightface);
577
+ --menusummaryactiveface: var(--toolbaritemactiveface);
578
+ --menusummarytext: var(--toolbaritemtext);
579
+ --menusummaryhighlighttext: var(--toolbaritemhighlighttext);
580
+ --menusummaryactivetext: var(--toolbaritemactivetext);
581
+ }
554
582
  }
583
+
584
+ // :where(&[tint]) {
585
+ // @include mixins.wire-tinted-menu(menuitemface, menuitemhighlightface, menuitemactiveface);
586
+ // @include mixins.wire-menu-colors;
587
+ // }
555
588
  }
556
589
 
557
590
  :where([is='confirmation-dialog'], [is='alert-dialog']) {
@@ -617,19 +650,17 @@ $colors: map.merge(
617
650
  oklch(from var(--accentEmphasis, var(--accentColor)) min(calc(l * 1.2), 1) min(calc(c * 1.1), c) h)
618
651
  );
619
652
 
620
- --btnface: light-dark(var(--glass-btn-bg), var(--glass-btn-bg-dark));
621
- --btnhighlightface: light-dark(var(--glass-btn-focus-bg), var(--glass-btn-focus-bg-dark));
622
- --btnactiveface: light-dark(var(--glass-btn-active-bg), var(--glass-btn-active-bg-dark));
653
+ --btnface: light-dark(var(--clear-glass-bg), var(--clear-glass-bg-dark));
654
+ --btnhighlightface: light-dark(var(--clear-glass-focus-bg), var(--clear-glass-focus-bg-dark));
655
+ --btnactiveface: light-dark(var(--clear-glass-active-bg), var(--clear-glass-active-bg-dark));
623
656
  }
624
657
 
625
658
  :where([is='glass-prominent-button']) {
626
- --btntext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
627
- --btnhighlighttext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
628
- --btnactivetext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
659
+ // --btntext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
660
+ // --btnhighlighttext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
661
+ // --btnactivetext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
629
662
 
630
- --btnface: var(--accentColor); //light-dark(var(--accentColor), var(--accentColor));
631
- --btnhighlightface: light-dark(oklch(from var(--accentColor) min(calc(l * 1.1), 1) min(calc(c * 1.1), c) h), oklch(from var(--accentColor) min(calc(l * 1.1), 1) min(calc(c * 1.1), c) h));
632
- --btnactiveface: light-dark(oklch(from var(--accentColor) min(calc(l * 1.2), 1) min(calc(c * 1.1), c) h), oklch(from var(--accentColor) min(calc(l * 1.2), 1) min(calc(c * 1.1), c) h));
663
+ @include mixins.wire-tinted-glass(btn);
633
664
  }
634
665
 
635
666
  /* list-view {
@@ -18,14 +18,13 @@
18
18
  max-inline-size: min(20rem, 80vw);
19
19
  max-block-size: 80vh;
20
20
 
21
- margin-block: max(env(safe-area-inset-top), var(--menu-spacing)) max(env(safe-area-inset-bottom), var(--menu-spacing));
22
- margin-inline: max(env(safe-area-inset-left), var(--menu-spacing)) max(env(safe-area-inset-right), var(--menu-spacing));
21
+ margin-block: auto;
22
+ margin-inline: auto;
23
23
 
24
24
  transform: var(--alert--dialog-scale,);
25
25
  opacity: var(--alert--dialog-opacity,);
26
26
 
27
- position-anchor: --alert-dialog; // overriden
28
- position-area: center;
27
+ place-self: center;
29
28
 
30
29
  overflow: clip;
31
30
  border-radius: 0.9rem;
@@ -34,7 +33,7 @@
34
33
  box-shadow: var(--menu-popover-box-shadow,); //0 0 10px 10px black;
35
34
 
36
35
  padding-block: 1rem;
37
- padding-inline: 1em;
36
+ padding-inline: 1rem;
38
37
  gap: 1rem;
39
38
 
40
39
  // finally
@@ -33,7 +33,7 @@
33
33
  box-shadow: var(--menu-popover-box-shadow,); //0 0 10px 10px black;
34
34
 
35
35
  padding-block: 1rem;
36
- padding-inline: 1em;
36
+ padding-inline: 1rem;
37
37
  gap: 0.5rem;
38
38
 
39
39
  // finally
@@ -0,0 +1,82 @@
1
+ @use '../vars';
2
+ @use '../mixins';
3
+
4
+ @layer #{vars.$tab-components-layer} {
5
+ fine-tooltip {
6
+ :where(&) {
7
+ color: var(--text,);
8
+
9
+ pointer-events: none;
10
+ touch-action: none;
11
+
12
+ position: fixed;
13
+
14
+ inline-size: max-content;
15
+ block-size: max-content;
16
+ height: auto; // safari
17
+
18
+ max-inline-size: 80vw;
19
+ max-block-size: 80vh;
20
+
21
+ margin-block: var(--tooltip--dialog-margin-block,);
22
+ margin-inline: var(--tooltip--dialog-margin-inline,);
23
+
24
+ transform: var(--tooltip--dialog-scale,) var(--tooltip--dialog-translate,);
25
+ opacity: var(--tooltip--dialog-opacity,);
26
+ transform-origin: top;
27
+
28
+ position-anchor: --fine-tooltip; // overriden
29
+ position-area: bottom center;
30
+
31
+ overflow: clip;
32
+ border-radius: 0.9rem;
33
+
34
+ backdrop-filter: var(--liquid-glass-backdrop-filter,);
35
+ box-shadow: var(--menu-popover-box-shadow,);
36
+
37
+ padding-block: 0.5rem;
38
+ padding-inline: 1rem;
39
+ gap: 0.5rem;
40
+
41
+ border: none;
42
+
43
+ position-try-fallbacks: --custom-top;
44
+ position-try-order: most-height;
45
+ position-visibility: anchors-visible;
46
+
47
+ // finally
48
+ --tooltip--dialog-translate: translateY(-10%);
49
+ --tooltip--dialog-scale: scale(0.9);
50
+ --tooltip--dialog-opacity: 0;
51
+ }
52
+
53
+ &[open] {
54
+ :where(&) {
55
+ --tooltip--dialog-margin-block: max(env(safe-area-inset-top), var(--menu-spacing)) max(env(safe-area-inset-bottom), var(--menu-spacing));
56
+ --tooltip--dialog-margin-inline: max(env(safe-area-inset-left), var(--menu-spacing)) max(env(safe-area-inset-right), var(--menu-spacing));
57
+
58
+ --tooltip--dialog-translate: translateY(0);
59
+ --tooltip--dialog-scale: scale(1);
60
+ --tooltip--dialog-opacity: 0.9;
61
+
62
+ @starting-style {
63
+ --tooltip--dialog-translate: translateY(-10%);
64
+ --tooltip--dialog-scale: scale(0.9);
65
+ --tooltip--dialog-opacity: 0;
66
+ }
67
+ }
68
+ }
69
+
70
+ &[closing] {
71
+ :where(&) {
72
+ --tooltip--dialog-translate: translateY(-10%);
73
+ --tooltip--dialog-scale: scale(0.9);
74
+ --tooltip--dialog-opacity: 0;
75
+ }
76
+ }
77
+ }
78
+ }
79
+
80
+ @position-try --custom-top {
81
+ position-area: top center;
82
+ }
@@ -31,6 +31,7 @@
31
31
  content-unavailable-view,
32
32
  tool-bar-item,
33
33
  tool-bar-item-group,
34
+ fine-tooltip,
34
35
  sidebar-toggle,
35
36
  [is='form-view'],
36
37
  v-stack,
@@ -115,8 +116,8 @@
115
116
  [is='tab-bar'] [is='tab-item'],
116
117
  tool-bar-item [is='disclosure-group'] > button,
117
118
  tool-bar-item [is='disclosure-group'] > summary
118
- ),
119
- :where(menu-view)::part(menu-summary) {
119
+ ) {
120
+ // :where(menu-view)::part(menu-summary) {
120
121
  // display: grid;
121
122
  // place-items: center;
122
123
  // place-content: center;
@@ -175,7 +176,7 @@
175
176
  tool-bar-item > button,
176
177
  tool-bar-item > input,
177
178
  [is='tab-bar'] [is='tab-item'],
178
- menu-view > button,
179
+ // menu-view > button,
179
180
  tool-bar-item [is='disclosure-group'] > button,
180
181
  tool-bar-item [is='disclosure-group'] > summary {
181
182
  @include mixins.add-focus-visible-state {
@@ -187,16 +188,16 @@
187
188
  --toolbaritemtext: var(--toolbaritemhighlighttext,);
188
189
  }
189
190
  }
190
- menu-view {
191
- @include mixins.add-focus-visible-state('::part(menu-summary)') {
192
- --toolbaritemface: var(--toolbaritemhighlightface,);
193
- --toolbaritemtext: var(--toolbaritemhighlighttext,);
194
- }
195
- @include mixins.add-hover-state('::part(menu-summary)') {
196
- --toolbaritemface: var(--toolbaritemhighlightface,);
197
- --toolbaritemtext: var(--toolbaritemhighlighttext,);
198
- }
199
- }
191
+ // menu-view {
192
+ // @include mixins.add-focus-visible-state('::part(menu-summary)') {
193
+ // --toolbaritemface: var(--toolbaritemhighlightface,);
194
+ // --toolbaritemtext: var(--toolbaritemhighlighttext,);
195
+ // }
196
+ // @include mixins.add-hover-state('::part(menu-summary)') {
197
+ // --toolbaritemface: var(--toolbaritemhighlightface,);
198
+ // --toolbaritemtext: var(--toolbaritemhighlighttext,);
199
+ // }
200
+ // }
200
201
  // itemize
201
202
  // list-view,
202
203
  // [is='form-view'] {
@@ -217,7 +218,7 @@
217
218
  tool-bar-item > button,
218
219
  tool-bar-item > input,
219
220
  [is='tab-bar'] [is='tab-item'],
220
- menu-view > button,
221
+ // menu-view > button,
221
222
  tool-bar-item [is='disclosure-group'] > button,
222
223
  tool-bar-item [is='disclosure-group'] > summary {
223
224
  @include mixins.add-active-state {
@@ -225,12 +226,12 @@
225
226
  --toolbaritemtext: var(--toolbaritemactivetext,);
226
227
  }
227
228
  }
228
- menu-view {
229
- @include mixins.add-active-state('::part(menu-summary)') {
230
- --toolbaritemface: var(--toolbaritemactiveface,);
231
- --toolbaritemtext: var(--toolbaritemactivetext,);
232
- }
233
- }
229
+ // menu-view {
230
+ // @include mixins.add-active-state('::part(menu-summary)') {
231
+ // --toolbaritemface: var(--toolbaritemactiveface,);
232
+ // --toolbaritemtext: var(--toolbaritemactivetext,);
233
+ // }
234
+ // }
234
235
  // itemize
235
236
  // list-view,
236
237
  // [is='form-view'] {