@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
@@ -1,5 +1,9 @@
1
1
  import { type NavigationSplitView, type NavigationStack } from '../components';
2
2
  import { type TabBarPlacement } from '../components/tab-view';
3
+ export type TabBeforeDetail = {
4
+ tag: string;
5
+ ms: number;
6
+ };
3
7
  export type TabDetail = {
4
8
  tag: string;
5
9
  };
@@ -16,8 +20,8 @@ declare global {
16
20
  tabhide: CustomEvent<TabDetail>;
17
21
  tabreveal: CustomEvent<TabDetail>;
18
22
  tabswap: CustomEvent<TabDetail>;
19
- beforetabreveal: CustomEvent<TabDetail>;
20
- beforetabswap: CustomEvent<TabDetail>;
23
+ beforetabreveal: CustomEvent<TabBeforeDetail>;
24
+ beforetabswap: CustomEvent<TabBeforeDetail>;
21
25
  'tab-view:toggle': CustomEvent<TabViewDetail>;
22
26
  'tab-view:adaptable-tab-bar-placement-change': CustomEvent<TabViewAdaptableTabBarPlacementDetail>;
23
27
  }
@@ -16,7 +16,7 @@ export class CSSStyleObserver {
16
16
  this.#cleanups?.();
17
17
  }
18
18
  #handleTransitionrun = (callback, evt) => {
19
- console.debug(`${_a.name} ⚡️ ${evt?.type}`);
19
+ console.debug(`${_a.name} ⚡️ ${evt?.type} (${evt.propertyName})`);
20
20
  if (!this.#options?.properties.some((prop) => evt.propertyName.startsWith(prop)))
21
21
  return;
22
22
  callback?.(evt);
@@ -1 +1 @@
1
- export default function (target: HTMLElement, attributeName: string | null): void;
1
+ export default function (target: HTMLElement, role: string | null): void;
@@ -1,19 +1,44 @@
1
1
  import { I18n } from '../../i18n';
2
+ import { Snapshot } from '../../snapshot';
2
3
  import { CleanupRegistry } from '../class/cleanup-registry';
3
4
  import { default as $ } from './cash';
4
5
  import onoff from './onoff';
5
6
  function renderPlaceholder(el, role) {
6
- const label = el.querySelector(':scope>[slot=placeholder]') ?? el.appendChild($(`<label-view system-image="magnifying-glass" slot="placeholder"></label-view>`, '>1'));
7
- if (role) {
8
- label.setAttribute('title', I18n.t('ButtonRole').Default.Destructive);
7
+ const label = el.querySelector(':scope>[slot=placeholder]') ?? el.appendChild($(`<label-view slot="placeholder"></label-view>`, '>1'));
8
+ console.log(9999999, el, role);
9
+ switch (role) {
10
+ case 'cancel':
11
+ label.setAttribute('title', I18n.t('ButtonRole').Default.Cancel);
12
+ label.setAttribute('system-image', Snapshot.config['cancel-button-icon']);
13
+ break;
14
+ case 'close':
15
+ label.setAttribute('title', I18n.t('ButtonRole').Default.Close);
16
+ label.setAttribute('system-image', Snapshot.config['close-button-icon']);
17
+ break;
18
+ case 'confirm':
19
+ label.setAttribute('title', I18n.t('ButtonRole').Default.Confirm);
20
+ label.setAttribute('system-image', Snapshot.config['confirm-button-icon']);
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;
26
+ case 'destructive':
27
+ label.setAttribute('title', I18n.t('ButtonRole').Default.Destructive);
28
+ label.setAttribute('system-image', Snapshot.config['delete-button-icon']);
29
+ break;
30
+ default:
31
+ label?.remove();
32
+ break;
9
33
  }
10
- else
11
- label?.remove();
34
+ // if (role) {
35
+ // label.setAttribute('title', I18n.t('ButtonRole').Default.Destructive)
36
+ // } else label?.remove()
12
37
  }
13
- export default function (target, attributeName) {
14
- renderPlaceholder(target, target.getAttribute(attributeName ?? ''));
38
+ export default function (target, role) {
39
+ renderPlaceholder(target, role);
15
40
  CleanupRegistry.unregister(target, 'i18n');
16
41
  CleanupRegistry.register(target, onoff('localechange', () => {
17
- renderPlaceholder(target, target.getAttribute(attributeName ?? ''));
42
+ renderPlaceholder(target, role);
18
43
  }, I18n.on).on(), 'i18n');
19
44
  }
@@ -16,5 +16,4 @@ export { default as sleep } from './sleep';
16
16
  export { default as slowHideShow } from './slow-hide-show';
17
17
  export { default as timeout } from './timeout';
18
18
  export { default as touchGlass } from './touch-glass';
19
- export { default as toolbarRepositioner } from './toolbar-repositioner';
20
19
  export declare const $: typeof cash;
@@ -17,5 +17,4 @@ export { default as sleep } from './sleep';
17
17
  export { default as slowHideShow } from './slow-hide-show';
18
18
  export { default as timeout } from './timeout';
19
19
  export { default as touchGlass } from './touch-glass';
20
- export { default as toolbarRepositioner } from './toolbar-repositioner';
21
20
  export const $ = cash;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swiftwc/ui",
3
- "version": "0.0.0-dev.21",
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';
package/scss/_vars.scss CHANGED
@@ -147,6 +147,11 @@ $disclosure-affordance: 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000
147
147
  $table-col-affordance: 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" fill="currentColor" viewBox="0 0 256 256"%3E%3Cpath d="M216.49,168.49a12,12,0,0,1-17,0L128,97,56.49,168.49a12,12,0,0,1-17-17l80-80a12,12,0,0,1,17,0l80,80A12,12,0,0,1,216.49,168.49Z"%3E%3C/path%3E%3C/svg%3E'; // ph-caret-up-bold
148
148
  $picker-affordance: 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" fill="currentColor" viewBox="0 0 256 256"%3E%3Cpath d="M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z"%3E%3C/path%3E%3C/svg%3E'; // ph-check-bold
149
149
 
150
+ $cancel-button-icon: 'x'; // ph-trash
151
+ $close-button-icon: 'x'; // ph-trash
152
+ $confirm-button-icon: 'check'; // ph-trash
153
+ $delete-button-icon: 'trash'; // ph-trash
154
+
150
155
  // SECTION: computed(s)
151
156
 
152
157
  $ipad-portrait-bp-max: #{functions.subtract-tiny($ipad-portrait-bp)};
@@ -43,6 +43,12 @@
43
43
  text-transform: none;
44
44
  }
45
45
 
46
+ // FIXME:
47
+ .ph,
48
+ .ph::before {
49
+ display: grid;
50
+ }
51
+
46
52
  button,
47
53
  *::part(button),
48
54
  input,
@@ -105,6 +111,10 @@
105
111
 
106
112
  html {
107
113
  transition: font-size 1ms step-start;
114
+
115
+ @media (pointer: fine) {
116
+ font-size: 14px;
117
+ }
108
118
  }
109
119
 
110
120
  // label {
@@ -149,6 +159,11 @@
149
159
  // ipad-landscape-bp-min: vars.$ipad-landscape-bp-min,
150
160
  ipad-sheet-view-inline-size: vars.$ipad-sheet-view-inline-size,
151
161
  ipad-sheet-view-height: vars.$ipad-sheet-view-height,
162
+ //
163
+ cancel-button-icon: vars.$cancel-button-icon,
164
+ close-button-icon: vars.$close-button-icon,
165
+ confirm-button-icon: vars.$confirm-button-icon,
166
+ delete-button-icon: vars.$delete-button-icon,
152
167
  );
153
168
 
154
169
  @debug functions.map-to-query($CONFIG);
@@ -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)); // ✅
@@ -488,37 +494,51 @@ $colors: map.merge(
488
494
 
489
495
  :where([is='tab-bar']) {
490
496
  --toolbaritemtext: light-dark(var(--secondary-text), var(--secondary-text-dark));
497
+ --toolbaritemhighlighttext: light-dark(var(--secondary-text), var(--secondary-text-dark));
498
+ --toolbaritemactivetext: light-dark(var(--secondary-text), var(--secondary-text-dark));
491
499
  }
492
500
 
493
- :where(tool-bar-item, tool-bar-item-group, navigation-split-view sidebar-toggle) {
494
- //, list-view) {
495
- //, [is='form-view'] BREAKS sidebar
496
- --toolbaritemface: light-dark(var(--toolbar-cell-bg), var(--toolbar-cell-bg-dark));
497
- --toolbaritemhighlightface: light-dark(var(--toolbar-cell-focus-bg), var(--toolbar-cell-focus-bg-dark));
498
- --toolbaritemactiveface: light-dark(var(--toolbar-cell-active-bg), var(--toolbar-cell-active-bg-dark));
499
- // --toolbaritemtext: light-dark(var(--primary-label), var(--primary-label-dark)); //light-dark(oklch(var(--tint-lch) / 1), oklch(var(--tint-lch-dark) / 1));
501
+ tool-bar-item,
502
+ tool-bar-item-group,
503
+ navigation-split-view sidebar-toggle {
504
+ :where(&) {
505
+ //, list-view) {
506
+ //, [is='form-view'] BREAKS sidebar
507
+ --toolbaritemface: light-dark(var(--toolbar-cell-bg), var(--toolbar-cell-bg-dark));
508
+ --toolbaritemhighlightface: light-dark(var(--toolbar-cell-focus-bg), var(--toolbar-cell-focus-bg-dark));
509
+ --toolbaritemactiveface: light-dark(var(--toolbar-cell-active-bg), var(--toolbar-cell-active-bg-dark));
510
+ // --toolbaritemtext: light-dark(var(--primary-label), var(--primary-label-dark)); //light-dark(oklch(var(--tint-lch) / 1), oklch(var(--tint-lch-dark) / 1));
511
+
512
+ // @media (pointer: fine) {
513
+ // --toolbaritemface: light-dark(var(--toolbar-cell-bg), var(--toolbar-cell-bg-dark));
514
+ // --toolbaritemhighlightface: light-dark(var(--toolbar-cell-focus-bg), var(--toolbar-cell-focus-bg-dark));
515
+ // --toolbaritemactiveface: light-dark(var(--toolbar-cell-active-bg), var(--toolbar-cell-active-bg-dark));
516
+ // // --toolbaritemtext: light-dark(var(--primary-label), var(--primary-label-dark));
517
+ // }
518
+ }
500
519
 
501
- // @media (pointer: fine) {
502
- // --toolbaritemface: light-dark(var(--toolbar-cell-bg), var(--toolbar-cell-bg-dark));
503
- // --toolbaritemhighlightface: light-dark(var(--toolbar-cell-focus-bg), var(--toolbar-cell-focus-bg-dark));
504
- // --toolbaritemactiveface: light-dark(var(--toolbar-cell-active-bg), var(--toolbar-cell-active-bg-dark));
505
- // // --toolbaritemtext: light-dark(var(--primary-label), var(--primary-label-dark));
506
- // }
507
- }
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);
508
524
 
509
- [is='tab-bar'] [is='tab-item'] {
510
- :where(&) {
511
- --toolbaritemhighlighttext: yellow;
512
- --toolbaritemactivetext: chocolate;
525
+ @include mixins.wire-tinted-glass(toolbaritem);
513
526
  }
514
527
  }
515
528
 
516
- sidebar-toggle,
529
+ // [is='tab-bar'] [is='tab-item'] {
530
+ // :where(&) {
531
+ // --toolbaritemhighlighttext: yellow;
532
+ // --toolbaritemactivetext: chocolate;
533
+ // }
534
+ // }
535
+
536
+ sidebar-toggle {
517
537
  // tool-bar-item,
518
538
  // [is='tab-item'],
519
539
  // list-view > button,
520
540
  // this is temp for toolbar look aboove tables
521
- menu-view {
541
+ // menu-view {
522
542
  // [is='disclosure-group'] {
523
543
  :where(&) {
524
544
  --toolbaritemhighlightface: light-dark(var(--toolbar-cell-focus-bg), var(--toolbar-cell-focus-bg-dark));
@@ -528,12 +548,43 @@ $colors: map.merge(
528
548
 
529
549
  menu-view {
530
550
  :where(&) {
531
- --menuitemhighlighttext: light-dark(var(--menu-item-focus-color), var(--menu-item-focus-color-dark));
532
- --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));
561
+
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
+ }
533
571
 
534
- --menuitemactivetext: light-dark(var(--menu-item-active-color), var(--menu-item-active-color-dark));
535
- --menuitemactiveface: light-dark(var(--menu-item-active-bg), var(--menu-item-active-bg-dark));
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
+ }
536
582
  }
583
+
584
+ // :where(&[tint]) {
585
+ // @include mixins.wire-tinted-menu(menuitemface, menuitemhighlightface, menuitemactiveface);
586
+ // @include mixins.wire-menu-colors;
587
+ // }
537
588
  }
538
589
 
539
590
  :where([is='confirmation-dialog'], [is='alert-dialog']) {
@@ -599,19 +650,17 @@ $colors: map.merge(
599
650
  oklch(from var(--accentEmphasis, var(--accentColor)) min(calc(l * 1.2), 1) min(calc(c * 1.1), c) h)
600
651
  );
601
652
 
602
- --btnface: light-dark(var(--glass-btn-bg), var(--glass-btn-bg-dark));
603
- --btnhighlightface: light-dark(var(--glass-btn-focus-bg), var(--glass-btn-focus-bg-dark));
604
- --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));
605
656
  }
606
657
 
607
658
  :where([is='glass-prominent-button']) {
608
- --btntext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
609
- --btnhighlighttext: oklch(from var(--accentColor) clamp(0, (0.7 - l) * 999, 1) none none);
610
- --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);
611
662
 
612
- --btnface: var(--accentColor); //light-dark(var(--accentColor), var(--accentColor));
613
- --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));
614
- --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);
615
664
  }
616
665
 
617
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
@@ -6,11 +6,25 @@
6
6
  @extend %button;
7
7
 
8
8
  :where(&) {
9
+ --btnpadistart: var(--regular-btn-padding);
10
+ --btnpadiend: var(--regular-btn-padding);
11
+ --btnpadbstart: var(--regular-btn-padding);
12
+ --btnpadbend: var(--regular-btn-padding);
13
+
9
14
  @media (pointer: fine) {
10
15
  --accentColor: var(--primary);
11
16
  }
12
17
  }
13
18
 
19
+ @each $size, $media in vars.$button-sizes {
20
+ :where(&[control-size='#{$size}']) {
21
+ --btnpadistart: var(--#{$size}-btn-padding);
22
+ --btnpadiend: var(--#{$size}-btn-padding);
23
+ --btnpadbstart: var(--#{$size}-btn-padding);
24
+ --btnpadbend: var(--#{$size}-btn-padding);
25
+ }
26
+ }
27
+
14
28
  :where(&[role='destructive']) {
15
29
  --accentColor: var(--red);
16
30
  --accentColor2: var(--red2);
@@ -6,6 +6,19 @@
6
6
  @extend %button;
7
7
 
8
8
  :where(&) {
9
+ --btnpadistart: var(--regular-btn-padding);
10
+ --btnpadiend: var(--regular-btn-padding);
11
+ --btnpadbstart: var(--regular-btn-padding);
12
+ --btnpadbend: var(--regular-btn-padding);
13
+ }
14
+
15
+ @each $size, $media in vars.$button-sizes {
16
+ :where(&[control-size='#{$size}']) {
17
+ --btnpadistart: var(--#{$size}-btn-padding);
18
+ --btnpadiend: var(--#{$size}-btn-padding);
19
+ --btnpadbstart: var(--#{$size}-btn-padding);
20
+ --btnpadbend: var(--#{$size}-btn-padding);
21
+ }
9
22
  }
10
23
 
11
24
  :where(&[role='destructive']) {