@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
@@ -29,6 +29,12 @@
29
29
  --toolbaritemradiusbl: var(--toolbar-cell-border-radius);
30
30
  --toolbaritemradiusbr: var(--toolbar-cell-border-radius);
31
31
  --toolbaritemborder: 0;
32
+
33
+ --menusummaryradiustl: var(--toolbar-cell-border-radius);
34
+ --menusummaryradiustr: var(--toolbar-cell-border-radius);
35
+ --menusummaryradiusbl: var(--toolbar-cell-border-radius);
36
+ --menusummaryradiusbr: var(--toolbar-cell-border-radius);
37
+ --menusummaryborder: 0;
32
38
  }
33
39
 
34
40
  :where(&:has([disabled])) {
@@ -45,6 +51,29 @@
45
51
 
46
52
  place-content: center;
47
53
  }
54
+
55
+ > button {
56
+ @include mixins.takeover-button-slots;
57
+ }
58
+
59
+ // NOTE: add paddings to labels w/ text in toolbar items
60
+ > button:has(> label-view > :not([slot])),
61
+ > picker-view > menu-view:has(> label-view > :not([slot])),
62
+ > menu-view:has(> label-view > :not([slot])) {
63
+ :where(& > label-view) {
64
+ --label-padding-inline: 0.5rem;
65
+ }
66
+ }
67
+
68
+ // NOTE: on fine screens, toolbar icons are a little smaller
69
+ // @media (pointer: fine) {
70
+ // > button > label-view,
71
+ // > menu-view > label-view {
72
+ // :where(&) {
73
+ // --label-image-size: 1.8;
74
+ // }
75
+ // }
76
+ // }
48
77
  }
49
78
 
50
79
  // tool-bar-item[slot],
@@ -64,54 +93,43 @@
64
93
  // }
65
94
  }
66
95
 
67
- @layer #{vars.$colors-layer} {
68
- // sidebar-toggle > button,
69
- // tool-bar-item > button,
70
- // tool-bar-item > input,
71
- // [is='tab-item'],
72
- // // list-view > button,
73
- // menu-view > button,
74
- // [is='disclosure-group'] > button,
75
- // [is='disclosure-group'] > summary {
76
- // &:not(:disabled):not([readonly]) {
77
- // :where(&) {
78
- // @include mixins.add-focus-visible-state {
79
- // --toolbaritemface: light-dark(var(--toolbar-cell-focus-bg), var(--toolbar-cell-focus-bg-dark));
80
- // }
81
- // }
82
- // }
83
- // }
84
-
85
- menu-view {
86
- @include mixins.add-focus-visible-state('::part(menu-summary)') {
87
- --toolbaritemface: var(--toolbaritemhighlightface,); //light-dark(var(--toolbar-cell-focus-bg), var(--toolbar-cell-focus-bg-dark));
88
- }
89
- @include mixins.add-hover-state('::part(menu-summary)') {
90
- --toolbaritemface: var(--toolbaritemhighlightface,); //light-dark(var(--toolbar-cell-focus-bg), var(--toolbar-cell-focus-bg-dark));
91
- }
92
-
93
- // &:not(:disabled):not([readonly]) {
94
- // > button {
95
- // :where(&) {
96
- // --toolbaritempadistart: 0.3rem;
97
- // --toolbaritempadiend: 0.3rem;
98
- // --toolbaritempadbstart: 0.3rem;
99
- // --toolbaritempadbend: 0.3rem;
100
- // }
101
- // }
102
- // }
103
- }
104
-
105
- // list-view > button,
106
- // [is='form-view'] > button {
107
- // &:not(:disabled):not([readonly]) {
108
- // :where(&) {
109
- // --toolbaritempadistart: 0.3rem;
110
- // --toolbaritempadbstart: 0.3rem;
111
- // }
112
- // }
113
- // }
114
- }
96
+ // @layer #{vars.$colors-layer} {
97
+ // sidebar-toggle > button,
98
+ // tool-bar-item > button,
99
+ // tool-bar-item > input,
100
+ // [is='tab-item'],
101
+ // // list-view > button,
102
+ // menu-view > button,
103
+ // [is='disclosure-group'] > button,
104
+ // [is='disclosure-group'] > summary {
105
+ // &:not(:disabled):not([readonly]) {
106
+ // :where(&) {
107
+ // @include mixins.add-focus-visible-state {
108
+ // --toolbaritemface: light-dark(var(--toolbar-cell-focus-bg), var(--toolbar-cell-focus-bg-dark));
109
+ // }
110
+ // }
111
+ // }
112
+ // }
113
+
114
+ // menu-view {
115
+ // @include mixins.add-focus-visible-state('::part(menu-summary)') {
116
+ // --toolbaritemface: var(--toolbaritemhighlightface,); //light-dark(var(--toolbar-cell-focus-bg), var(--toolbar-cell-focus-bg-dark));
117
+ // }
118
+ // @include mixins.add-hover-state('::part(menu-summary)') {
119
+ // --toolbaritemface: var(--toolbaritemhighlightface,); //light-dark(var(--toolbar-cell-focus-bg), var(--toolbar-cell-focus-bg-dark));
120
+ // }
121
+ // }
122
+
123
+ // list-view > button,
124
+ // [is='form-view'] > button {
125
+ // &:not(:disabled):not([readonly]) {
126
+ // :where(&) {
127
+ // --toolbaritempadistart: 0.3rem;
128
+ // --toolbaritempadbstart: 0.3rem;
129
+ // }
130
+ // }
131
+ // }
132
+ // }
115
133
 
116
134
  @layer #{vars.$ui-layer} {
117
135
  // sidebar-toggle > button,
@@ -131,11 +149,11 @@
131
149
  // // }
132
150
  // }
133
151
 
134
- menu-view {
135
- @include mixins.add-active-state('::part(menu-summary)') {
136
- --toolbaritemface: var(--toolbaritemactiveface,); //light-dark(var(--toolbar-cell-active-bg), var(--toolbar-cell-active-bg-dark));
137
- }
138
- }
152
+ // menu-view {
153
+ // @include mixins.add-active-state('::part(menu-summary)') {
154
+ // --toolbaritemface: var(--toolbaritemactiveface,); //light-dark(var(--toolbar-cell-active-bg), var(--toolbar-cell-active-bg-dark));
155
+ // }
156
+ // }
139
157
 
140
158
  :where(tool-bar-item[slot]:has(menu-view[open])),
141
159
  :where(tool-bar-item-group:has(> tool-bar-item menu-view[open])) {
@@ -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
 
@@ -0,0 +1,42 @@
1
+ @mixin takeover-button-slots {
2
+ > [slot] {
3
+ :where(&) {
4
+ // take over NOTE: NO other propsm they break grids!! KISS pos+visibility+opacity
5
+ position: absolute;
6
+
7
+ visibility: collapse;
8
+ }
9
+ }
10
+ > [slot='overlay'] {
11
+ :where(&) {
12
+ visibility: visible;
13
+ }
14
+ }
15
+ &:not(:has(> :not([slot]))) > [slot='placeholder'] {
16
+ :where(&) {
17
+ position: relative;
18
+
19
+ visibility: visible;
20
+ }
21
+ }
22
+
23
+ &:has(> [slot='overlay']) {
24
+ > *:not([slot='overlay']) {
25
+ :where(&) {
26
+ opacity: 0;
27
+ }
28
+ }
29
+
30
+ > [slot='overlay'] {
31
+ :where(&) {
32
+ @media (prefers-reduced-motion: no-preference) {
33
+ transition: opacity ease-out 200ms;
34
+ }
35
+
36
+ @starting-style {
37
+ opacity: 0;
38
+ }
39
+ }
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,16 @@
1
+ @use '../vars';
2
+ @use '../functions';
3
+ @use 'sass:string';
4
+ @use 'sass:map';
5
+ @use 'sass:list';
6
+
7
+ @mixin wire-tinted-glass($prop) {
8
+ --#{$prop}face: light-dark(var(--accentColor), var(--accentColor));
9
+ --#{$prop}text: 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));
10
+
11
+ --#{$prop}highlightface: 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));
12
+ --#{$prop}highlighttext: 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));
13
+
14
+ --#{$prop}activeface: 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));
15
+ --#{$prop}activetext: 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));
16
+ }
@@ -360,7 +360,7 @@
360
360
  $result: string.slice($result, 1, string.length($result) - 1);
361
361
  $final-result: functions.str-replace($result, 'minmax(0,1fr)', 'spacer');
362
362
  @debug $final-result, $template;
363
- :where(&[template='#{$result}']) {
363
+ :where(&[template='#{$final-result}']) {
364
364
  #{$prop}: $template;
365
365
  }
366
366
  }
@@ -13,10 +13,10 @@
13
13
  // SECTION: componentize
14
14
  @include mixins.componentize(btn);
15
15
 
16
- --btnpadistart: var(--regular-btn-padding);
17
- --btnpadiend: var(--regular-btn-padding);
18
- --btnpadbstart: var(--regular-btn-padding);
19
- --btnpadbend: var(--regular-btn-padding);
16
+ // --btnpadistart: var(--regular-btn-padding);
17
+ // --btnpadiend: var(--regular-btn-padding);
18
+ // --btnpadbstart: var(--regular-btn-padding);
19
+ // --btnpadbend: var(--regular-btn-padding);
20
20
 
21
21
  --btnradiustl: var(--regular-btn-border-radius);
22
22
  --btnradiustr: var(--regular-btn-border-radius);
@@ -24,33 +24,16 @@
24
24
  --btnradiusbr: var(--regular-btn-border-radius);
25
25
  }
26
26
 
27
- &:has(> [slot='overlay']) {
28
- :where(& > *:not([slot='overlay'])) {
29
- opacity: 0;
30
- }
31
-
32
- :where(& > [slot='overlay']) {
33
- position: absolute;
34
-
35
- transition: opacity ease-out 200ms;
36
-
37
- max-inline-size: 90%;
38
- max-block-size: 90%;
39
- border-radius: inherit;
40
-
41
- @starting-style {
42
- opacity: 0;
43
- }
44
- }
45
- }
27
+ @include mixins.takeover-button-slots;
46
28
 
47
29
  @each $size, $media in vars.$button-sizes {
48
- @if (regular != $size) {
49
- :where(&[control-size='#{$size}']) {
50
- --btnpadistart: var(--#{$size}-btn-padding);
51
- --btnpadiend: var(--#{$size}-btn-padding);
52
- --btnpadbstart: var(--#{$size}-btn-padding);
53
- --btnpadbend: var(--#{$size}-btn-padding);
30
+ // @if (regular != $size) {
31
+ &[control-size='#{$size}'] {
32
+ :where(&) {
33
+ // --btnpadistart: var(--#{$size}-btn-padding);
34
+ // --btnpadiend: var(--#{$size}-btn-padding);
35
+ // --btnpadbstart: var(--#{$size}-btn-padding);
36
+ // --btnpadbend: var(--#{$size}-btn-padding);
54
37
 
55
38
  --btnradiustl: var(--#{$size}-btn-border-radius);
56
39
  --btnradiustr: var(--#{$size}-btn-border-radius);
@@ -58,6 +41,15 @@
58
41
  --btnradiusbr: var(--#{$size}-btn-border-radius);
59
42
  }
60
43
  }
44
+ // }
45
+ }
46
+
47
+ &[control-size='small'] {
48
+ --label-font: callout;
49
+ }
50
+
51
+ &[control-size='mini'] {
52
+ --label-font: caption;
61
53
  }
62
54
  }
63
55
  }
@@ -76,25 +68,25 @@
76
68
  }
77
69
  }
78
70
 
79
- @layer #{vars.$utils-layer} {
80
- %button {
81
- > [slot] {
82
- :where(&) {
83
- display: none;
84
- }
85
- }
86
- &:has(> [slot='overlay']) {
87
- :where(& > [slot='overlay']) {
88
- display: grid;
89
- }
90
- }
91
- &:not(:has(> :not([slot]))) > [slot='placeholder'] {
92
- :where(&) {
93
- display: grid;
94
- }
95
- }
96
- }
97
- }
71
+ // @layer #{vars.$utils-layer} {
72
+ // %button {
73
+ // > [slot] {
74
+ // :where(&) {
75
+ // position: absolute;
76
+ // }
77
+ // }
78
+ // // &:has(> [slot='overlay'] > [slot='overlay']) {
79
+ // // :where(&) {
80
+ // // display: grid;
81
+ // // }
82
+ // // }
83
+ // &:not(:has(> :not([slot]))) > [slot='placeholder'] {
84
+ // :where(&) {
85
+ // position: relative;
86
+ // }
87
+ // }
88
+ // }
89
+ // }
98
90
 
99
91
  @layer #{vars.$ui-layer} {
100
92
  // SECTION: componentize
@@ -0,0 +1,21 @@
1
+ @use '../vars';
2
+ @use '../mixins';
3
+
4
+ @layer #{vars.$transitions-layer} {
5
+ @media (prefers-reduced-motion: no-preference) {
6
+ fine-tooltip {
7
+ :where(&) {
8
+ transition:
9
+ opacity 150ms allow-discrete ease-out,
10
+ transform 150ms allow-discrete ease-out;
11
+ transition-delay: 200ms;
12
+ will-change: opacity, transform;
13
+ }
14
+
15
+ :where(&[closing]) {
16
+ transition-duration: 100ms;
17
+ transition-delay: 0ms;
18
+ }
19
+ }
20
+ }
21
+ }
@@ -3,11 +3,6 @@
3
3
  @layer #{vars.$transitions-layer} {
4
4
  @media (prefers-reduced-motion: no-preference) {
5
5
  [is='tab-bar'] {
6
- // :where(&) {
7
- // transition: inset var(--sidebar-transition-duration) ease-out allow-discrete;
8
- // will-change: inset;
9
- // }
10
-
11
6
  > [is='form-view'] {
12
7
  :where(&) {
13
8
  transition: transform var(--sidebar-transition-duration) ease-out allow-discrete;
@@ -17,3 +12,9 @@
17
12
  }
18
13
  }
19
14
  }
15
+
16
+ @keyframes ipad_form_view_slide_up_offedge {
17
+ to {
18
+ opacity: 0;
19
+ }
20
+ }
@@ -9,6 +9,7 @@
9
9
  },
10
10
  {
11
11
  "name": "bordered-button",
12
+ "description": "",
12
13
  "attributes": [
13
14
  {
14
15
  "name": "role"
@@ -17,6 +18,7 @@
17
18
  },
18
19
  {
19
20
  "name": "bordered-prominent-button",
21
+ "description": "",
20
22
  "attributes": [
21
23
  {
22
24
  "name": "role"
@@ -25,6 +27,7 @@
25
27
  },
26
28
  {
27
29
  "name": "borderless-button",
30
+ "description": "",
28
31
  "attributes": [
29
32
  {
30
33
  "name": "role"
@@ -101,11 +104,15 @@
101
104
  }
102
105
  ]
103
106
  },
107
+ {
108
+ "name": "fine-tooltip"
109
+ },
104
110
  {
105
111
  "name": "form-view"
106
112
  },
107
113
  {
108
114
  "name": "glass-button",
115
+ "description": "",
109
116
  "attributes": [
110
117
  {
111
118
  "name": "role"
@@ -114,6 +121,7 @@
114
121
  },
115
122
  {
116
123
  "name": "glass-prominent-button",
124
+ "description": "",
117
125
  "attributes": [
118
126
  {
119
127
  "name": "role"
@@ -218,12 +226,7 @@
218
226
  ]
219
227
  },
220
228
  {
221
- "name": "sheet-view",
222
- "attributes": [
223
- {
224
- "name": "fine-presentation-large-adaptation"
225
- }
226
- ]
229
+ "name": "sheet-view"
227
230
  },
228
231
  {
229
232
  "name": "sidebar-toggle"
@@ -294,30 +297,29 @@
294
297
  ]
295
298
  },
296
299
  {
297
- "name": "tool-bar-item-group",
298
- "attributes": [
299
- {
300
- "name": "preferred-fine-modal-placement"
301
- }
302
- ]
300
+ "name": "tool-bar-item-group"
303
301
  },
304
302
  {
305
303
  "name": "tool-bar-item",
306
304
  "attributes": [
307
305
  {
308
- "name": "preferred-fine-modal-placement"
306
+ "name": "slot"
307
+ },
308
+ {
309
+ "name": "data-previous-slot"
309
310
  }
310
311
  ]
311
312
  },
312
313
  {
313
- "name": "tool-bar"
314
+ "name": "tool-bar",
315
+ "description": ""
314
316
  },
315
317
  {
316
- "name": "v-keyboard",
318
+ "name": "vkeyboard",
317
319
  "description": "Required component, must be BODY tag"
318
320
  },
319
321
  {
320
- "name": "v-stack",
322
+ "name": "vstack",
321
323
  "description": "",
322
324
  "attributes": [
323
325
  {
@@ -1 +0,0 @@
1
- export default function (el: HTMLElement, evt: MediaQueryListEvent): void;
@@ -1,12 +0,0 @@
1
- export default function (el, evt) {
2
- if (evt.matches) {
3
- const newSlot = el.getAttribute('preferred-fine-modal-placement') ?? 'bottom-bar-trailing';
4
- if (el.slot !== newSlot)
5
- el.dataset.previousSlot = el.slot; // save for later restoration if diff
6
- el.slot = el.getAttribute('preferred-fine-modal-placement') ?? 'bottom-bar-trailing';
7
- }
8
- else if (el.dataset.previousSlot) {
9
- el.slot = el.dataset.previousSlot ?? '';
10
- delete el.dataset.previousSlot;
11
- }
12
- }