@swiftwc/ui 0.0.0-dev.66 → 0.0.0-dev.67

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 (32) hide show
  1. package/generated/components/h-stack.d.ts +4 -0
  2. package/generated/components/h-stack.js +4 -0
  3. package/generated/components/index.d.ts +1 -0
  4. package/generated/components/index.js +1 -0
  5. package/generated/components/label-view.d.ts +5 -0
  6. package/generated/components/label-view.js +5 -0
  7. package/generated/components/toggle-view.d.ts +28 -0
  8. package/generated/components/toggle-view.js +222 -0
  9. package/generated/components/v-stack.d.ts +4 -0
  10. package/generated/components/v-stack.js +4 -0
  11. package/generated/css/index.css +110 -31
  12. package/generated/events/index.d.ts +1 -0
  13. package/generated/events/index.js +1 -0
  14. package/generated/events/toggle-view.d.ts +9 -0
  15. package/generated/events/toggle-view.js +1 -0
  16. package/package.json +1 -1
  17. package/scss/_components.scss +2 -0
  18. package/scss/components/_date-picker.scss +15 -15
  19. package/scss/components/_h-stack.scss +17 -1
  20. package/scss/components/_index.scss +4 -0
  21. package/scss/components/_menu-view.scss +53 -49
  22. package/scss/components/_picker-view.scss +38 -39
  23. package/scss/components/_scroll-view-proxy.scss +4 -2
  24. package/scss/components/_section-view.scss +23 -22
  25. package/scss/components/_table-view.scss +6 -6
  26. package/scss/components/_text-field.scss +26 -26
  27. package/scss/components/_toggle-view.scss +79 -0
  28. package/scss/components/_tool-bar.scss +52 -52
  29. package/scss/mixins/_index.scss +9 -2
  30. package/scss/placeholders/_lists.scss +14 -12
  31. package/scss/transitions/_menu-view.scss +17 -15
  32. package/web-components.html-data/en.json +175 -0
@@ -3,7 +3,23 @@
3
3
  @use 'sass:string';
4
4
  @use 'sass:list';
5
5
 
6
- $h-stack-templates: ((auto minmax(0, 1fr)), (minmax(0, 1fr) auto), (auto minmax(0, 1fr) auto auto), (auto minmax(0, 1fr) auto), (repeat(4, minmax(0, 1fr))), (repeat(2, minmax(0, 1fr)) auto));
6
+ $h-stack-templates: (
7
+ (auto minmax(0, 1fr)),
8
+ (minmax(0, 1fr) auto),
9
+ (auto minmax(0, 1fr) auto auto),
10
+ (auto minmax(0, 1fr) auto),
11
+ (repeat(1, minmax(0, 1fr))),
12
+ (repeat(2, minmax(0, 1fr))),
13
+ (repeat(3, minmax(0, 1fr))),
14
+ (repeat(4, minmax(0, 1fr))),
15
+ (repeat(5, minmax(0, 1fr))),
16
+ (repeat(6, minmax(0, 1fr))),
17
+ (repeat(7, minmax(0, 1fr))),
18
+ (repeat(8, minmax(0, 1fr))),
19
+ (repeat(9, minmax(0, 1fr))),
20
+ (repeat(10, minmax(0, 1fr))),
21
+ (repeat(2, minmax(0, 1fr)) auto)
22
+ );
7
23
 
8
24
  @layer #{vars.$components-layer} {
9
25
  h-stack {
@@ -70,6 +70,10 @@
70
70
  :where(table-view)::part(table-footer-leading-stack),
71
71
  :where(table-view)::part(table-footer-principal-stack),
72
72
  :where(table-view)::part(table-footer-trailing-stack),
73
+ :where(toggle-view)::part(toggle-stack),
74
+ :where(toggle-view)::part(toggle-label-stack),
75
+ :where(toggle-view)::part(toggle-input-stack),
76
+ :where(toggle-view)::part(text-field-form-input),
73
77
  :where(text-field)::part(text-field-stack),
74
78
  :where(text-field)::part(text-field-label-stack),
75
79
  :where(text-field)::part(text-field-input-stack),
@@ -5,74 +5,76 @@
5
5
 
6
6
  @layer #{vars.$components-layer} {
7
7
  menu-view {
8
- :where(&)::part(menu-summary) {
9
- transform: var(--menu--summary-scale,);
8
+ :where(&) {
9
+ &::part(menu-summary) {
10
+ transform: var(--menu--summary-scale,);
10
11
 
11
- filter: var(--menu--summary-filter,);
12
- }
12
+ filter: var(--menu--summary-filter,);
13
+ }
13
14
 
14
- :where(&)::part(menu-scrollable) {
15
- @include mixins.make-scrollable(true);
15
+ &::part(menu-scrollable) {
16
+ @include mixins.make-scrollable(true);
16
17
 
17
- padding: var(--menu-padding);
18
- }
18
+ padding: var(--menu-padding);
19
+ }
19
20
 
20
- :where(&)::part(menu-form) {
21
- // min-inline-size: 200px; // FIXME: del this
22
- inline-size: max-content; //var(--menu-inline-size);
23
- block-size: min-content;
21
+ &::part(menu-form) {
22
+ // min-inline-size: 200px; // FIXME: del this
23
+ inline-size: max-content; //var(--menu-inline-size);
24
+ block-size: min-content;
24
25
 
25
- max-inline-size: var(--menu-max-inline-size,);
26
- max-block-size: var(--menu-max-block-size,);
26
+ max-inline-size: var(--menu-max-inline-size,);
27
+ max-block-size: var(--menu-max-block-size,);
27
28
 
28
- overflow: clip auto;
29
- border-radius: inherit;
29
+ overflow: clip auto;
30
+ border-radius: inherit;
30
31
 
31
- background-color: light-dark(var(--menu-bg), var(--menu-bg-dark));
32
- // border: transparent solid 20px; //make sure bezel is not covered
32
+ background-color: light-dark(var(--menu-bg), var(--menu-bg-dark));
33
+ // border: transparent solid 20px; //make sure bezel is not covered
33
34
 
34
- @include mixins.make-scrollable;
35
- @include mixins.contain-overscroll;
35
+ @include mixins.make-scrollable;
36
+ @include mixins.contain-overscroll;
36
37
 
37
- // touch-action: all;
38
+ // touch-action: all;
38
39
 
39
- --menu--dialog-max-inline-size: anchor-size();
40
- --menu--dialog-max-block-size: anchor-size();
41
- }
40
+ --menu--dialog-max-inline-size: anchor-size();
41
+ --menu--dialog-max-block-size: anchor-size();
42
+ }
42
43
 
43
- :where(&)::part(menu-dialog) {
44
- @include mixins.reset-dialog;
44
+ &::part(menu-dialog) {
45
+ @include mixins.reset-dialog;
45
46
 
46
- color: var(--text,);
47
+ color: var(--text,);
47
48
 
48
- touch-action: none;
49
+ touch-action: none;
49
50
 
50
- position: fixed;
51
+ position: fixed;
51
52
 
52
- inline-size: fit-content;
53
- block-size: fit-content;
54
- height: auto; // safari
55
- max-inline-size: var(--menu--dialog-max-inline-size,);
56
- max-block-size: var(--menu--dialog-max-block-size,);
53
+ inline-size: fit-content;
54
+ block-size: fit-content;
55
+ height: auto; // safari
56
+ max-inline-size: var(--menu--dialog-max-inline-size,);
57
+ max-block-size: var(--menu--dialog-max-block-size,);
57
58
 
58
- margin-block: var(--menu--dialog-margin-block,);
59
- margin-inline: var(--menu--dialog-margin-inline,);
59
+ margin-block: var(--menu--dialog-margin-block,);
60
+ margin-inline: var(--menu--dialog-margin-inline,);
60
61
 
61
- transform: var(--menu--dialog-scale,);
62
+ transform: var(--menu--dialog-scale,);
62
63
 
63
- // position-anchor: --my-anchor; // overriden
64
- position-area: center;
64
+ // position-anchor: --my-anchor; // overriden
65
+ position-area: center;
65
66
 
66
- overflow: clip;
67
- border-radius: calc(var(--menu-item-border-radius) + var(--menu-padding));
67
+ overflow: clip;
68
+ border-radius: calc(var(--menu-item-border-radius) + var(--menu-padding));
68
69
 
69
- backdrop-filter: var(--liquid-glass-backdrop-filter,);
70
- box-shadow: var(--menu-popover-box-shadow,); //0 0 10px 10px black;
70
+ backdrop-filter: var(--liquid-glass-backdrop-filter,);
71
+ box-shadow: var(--menu-popover-box-shadow,); //0 0 10px 10px black;
71
72
 
72
- // finally
73
- --menu--dialog-scale: scale(0);
74
- --menu--summary-scale: ;
75
- --menu--summary-filter: ;
73
+ // finally
74
+ --menu--dialog-scale: scale(0);
75
+ --menu--summary-scale: ;
76
+ --menu--summary-filter: ;
77
+ }
76
78
  }
77
79
 
78
80
  &[open] {
@@ -104,9 +106,11 @@
104
106
  // &[open] > &[open],
105
107
  // &[open]:not(tool-bar-item &) {
106
108
  &[open]:not(tool-bar-item > &) {
107
- --menu--summary-scale: scale(0.01);
109
+ :where(&) {
110
+ --menu--summary-scale: scale(0.01);
108
111
 
109
- --menu--summary-filter: blur(10px);
112
+ --menu--summary-filter: blur(10px);
113
+ }
110
114
  }
111
115
 
112
116
  // :where(& > *) {
@@ -110,66 +110,65 @@ $picker-ifs: (
110
110
  border-radius: var(--picker--stack-grid-border-radius,);
111
111
  border: var(--picker--stack-grid-border,);
112
112
  color: var(--picker--stack-grid-color,);
113
- }
114
113
 
115
- // > :not([slot]) {
116
- // :where(&) {
117
- // place-self: var(--picker--input-stack-child-place-self,);
118
- // }
119
- // }
114
+ &::part(picker-stack) {
115
+ // grid-auto-flow: column;
116
+ grid-template-columns: var(--picker--stack-grid-template-columns,); //minmax(30%, 1fr) auto;
120
117
 
121
- :where(&)::part(picker-stack) {
122
- // grid-auto-flow: column;
123
- grid-template-columns: var(--picker--stack-grid-template-columns,); //minmax(30%, 1fr) auto;
118
+ grid-template-rows: var(--picker--stack-grid-template-rows,); //minmax(0, 1fr);
119
+ row-gap: var(--picker--stack-row-gap,);
124
120
 
125
- grid-template-rows: var(--picker--stack-grid-template-rows,); //minmax(0, 1fr);
126
- row-gap: var(--picker--stack-row-gap,);
121
+ column-gap: var(--picker--stack-column-gap,);
127
122
 
128
- column-gap: var(--picker--stack-column-gap,);
123
+ // display: var(--picker--stack-display,);
129
124
 
130
- // display: var(--picker--stack-display,);
125
+ // flex-wrap: var(--picker--stack-flex-wrap,);
131
126
 
132
- // flex-wrap: var(--picker--stack-flex-wrap,);
127
+ // justify-content: var(--picker--stack-justify-content,);
133
128
 
134
- // justify-content: var(--picker--stack-justify-content,);
129
+ // grid-template-columns: var(--picker--stack-grid-template-columns,);
135
130
 
136
- // grid-template-columns: var(--picker--stack-grid-template-columns,);
131
+ // grid-template-rows: minmax(0, 1fr);
137
132
 
138
- // grid-template-rows: minmax(0, 1fr);
133
+ // column-gap: 1rem;
139
134
 
140
- // column-gap: 1rem;
141
-
142
- // // wire these to mimic componentize
143
- // padding-inline: var(--picker--stack-grid-padding-inline,);
144
- // padding-block: var(--picker--stack-grid-padding-block,);
145
- // background: var(--picker--stack-grid-background,);
146
- // border-radius: var(--picker--stack-grid-border-radius,);
147
- // border: var(--picker--stack-grid-border,);
148
- // color: var(--picker--stack-grid-color,);
149
- }
135
+ // // wire these to mimic componentize
136
+ // padding-inline: var(--picker--stack-grid-padding-inline,);
137
+ // padding-block: var(--picker--stack-grid-padding-block,);
138
+ // background: var(--picker--stack-grid-background,);
139
+ // border-radius: var(--picker--stack-grid-border-radius,);
140
+ // border: var(--picker--stack-grid-border,);
141
+ // color: var(--picker--stack-grid-color,);
142
+ }
150
143
 
151
- :where(&)::part(picker-input-stack) {
152
- text-align: var(--picker--input-stack-text-align,);
153
- // flex-shrink: var(--picker--input-stack-flex-shrink,); //none;
144
+ &::part(picker-input-stack) {
145
+ text-align: var(--picker--input-stack-text-align,);
146
+ // flex-shrink: var(--picker--input-stack-flex-shrink,); //none;
154
147
 
155
- // max-width: var(--picker--input-stack-max-width,); //70%;
156
- }
148
+ // max-width: var(--picker--input-stack-max-width,); //70%;
149
+ }
157
150
 
158
- :where(&)::part(picker-label-stack) {
159
- display: var(--picker--labelstack-display, none); // display: none;
151
+ &::part(picker-label-stack) {
152
+ display: var(--picker--labelstack-display, none); // display: none;
160
153
 
161
- color: var(--secondary);
154
+ color: var(--secondary);
162
155
 
163
- --label-truncation-mode: tail;
156
+ --label-truncation-mode: tail;
164
157
 
165
- --label-line-limit: 1;
166
- }
158
+ --label-line-limit: 1;
159
+ }
167
160
 
168
- :where(&) {
169
161
  --picker--stack-grid-template-columns: minmax(30%, 1fr) auto;
170
162
 
171
163
  --picker--stack-grid-template-rows: minmax(0, 1fr);
172
164
  }
165
+
166
+ // > :not([slot]) {
167
+ // :where(&) {
168
+ // place-self: var(--picker--input-stack-child-place-self,);
169
+ // }
170
+ // }
171
+
173
172
  // :where(&) {
174
173
  // --picker--stack-grid-template-columns: auto minmax(0, 1fr);
175
174
  // @include mixins.write-props($picker-elses); NOT Needed for now since all defaults/fallbacks are already the elses
@@ -16,8 +16,6 @@
16
16
  :where(&) {
17
17
  position: relative;
18
18
 
19
- @include mixins.contain-overscroll;
20
-
21
19
  scrollbar-width: thin;
22
20
 
23
21
  container: scroll-view-proxy / inline-size;
@@ -53,6 +51,8 @@
53
51
 
54
52
  scroll-snap-type: block mandatory;
55
53
 
54
+ @include mixins.contain-overscroll(block);
55
+
56
56
  // &::before {
57
57
  // block-size: calc(100cqb + 1px); // creates overflow
58
58
  // }
@@ -65,6 +65,8 @@
65
65
 
66
66
  scroll-snap-type: inline mandatory;
67
67
 
68
+ @include mixins.contain-overscroll(inline);
69
+
68
70
  // &::before {
69
71
  // inline-size: calc(100cqi + 1px); // creates overflow
70
72
  // }
@@ -13,6 +13,29 @@
13
13
  // 'sentinel'
14
14
 
15
15
  gap: 0.5rem;
16
+
17
+ &::part(section-header-stack),
18
+ &::part(section-footer-stack) {
19
+ pointer-events: none;
20
+ // outline: solid magenta 4px;
21
+ // padding-block: 10px;
22
+ }
23
+
24
+ &::part(section-header-stack) {
25
+ grid-area: header;
26
+ }
27
+
28
+ &::part(section-main-stack) {
29
+ grid-area: main;
30
+ }
31
+
32
+ &::part(section-footer-stack) {
33
+ grid-area: footer;
34
+ }
35
+
36
+ &::part(section-header-stack) {
37
+ order: -1;
38
+ }
16
39
  }
17
40
 
18
41
  :where(&:has(> [slot='header']):not(:has(> [slot='footer']))) {
@@ -42,24 +65,6 @@
42
65
  display: none;
43
66
  }
44
67
 
45
- :where(&)::part(section-header-stack),
46
- :where(&)::part(section-footer-stack) {
47
- pointer-events: none;
48
- // outline: solid magenta 4px;
49
- // padding-block: 10px;
50
- }
51
-
52
- :where(&)::part(section-header-stack) {
53
- grid-area: header;
54
- }
55
-
56
- :where(&)::part(section-main-stack) {
57
- grid-area: main;
58
- }
59
-
60
- :where(&)::part(section-footer-stack) {
61
- grid-area: footer;
62
- }
63
68
  // :where(& > *) {
64
69
  // display: grid;
65
70
  // }
@@ -68,10 +73,6 @@
68
73
  // margin-bottom: 3rem;
69
74
  // }
70
75
 
71
- :where(&)::part(section-header-stack) {
72
- order: -1;
73
- }
74
-
75
76
  // :where(&:not(& &))::part(section-header-stack) {
76
77
  // :where(&)::part(section-header-stack) {
77
78
  // display: var(--section--headerstack-display, grid);
@@ -92,12 +92,12 @@ $table-elses: (
92
92
  border-top: 1px solid var(--separator);
93
93
  }
94
94
 
95
- :where(&)::part(table-header-leading-stack),
96
- :where(&)::part(table-header-principal-stack),
97
- :where(&)::part(table-header-trailing-stack),
98
- :where(&)::part(table-footer-leading-stack),
99
- :where(&)::part(table-footer-principal-stack),
100
- :where(&)::part(table-footer-trailing-stack) {
95
+ &::part(table-header-leading-stack),
96
+ &::part(table-header-principal-stack),
97
+ &::part(table-header-trailing-stack),
98
+ &::part(table-footer-leading-stack),
99
+ &::part(table-footer-principal-stack),
100
+ &::part(table-footer-trailing-stack) {
101
101
  grid-auto-flow: column;
102
102
  grid-template-columns: minmax(0, 1fr);
103
103
 
@@ -9,49 +9,49 @@
9
9
 
10
10
  // padding-inline: var(--toolbaritempadistart,) var(--toolbaritempadiend,);
11
11
  // padding-block: var(--toolbaritempadbstart,) var(--toolbaritempadbend,);
12
- }
13
12
 
14
- :where(&)::part(text-field-stack) {
15
- // display: grid;
13
+ &::part(text-field-stack) {
14
+ // display: grid;
16
15
 
17
- grid-template-columns: auto minmax(0, 1fr);
16
+ grid-template-columns: auto minmax(0, 1fr);
18
17
 
19
- grid-template-rows: minmax(0, 1fr);
18
+ grid-template-rows: minmax(0, 1fr);
20
19
 
21
- column-gap: var(--labeled-content-column-gap);
22
- }
20
+ column-gap: var(--labeled-content-column-gap);
21
+ }
23
22
 
24
- :where(&)::part(text-field-label-stack) {
25
- // display: grid;
23
+ &::part(text-field-label-stack) {
24
+ // display: grid;
26
25
 
27
- color: var(--secondary);
28
- }
26
+ color: var(--secondary);
27
+ }
29
28
 
30
- :where(&)::part(text-field-input-stack) {
31
- // display: grid;
29
+ &::part(text-field-input-stack) {
30
+ // display: grid;
32
31
 
33
- place-items: stretch;
34
- place-content: stretch;
35
- }
32
+ place-items: stretch;
33
+ place-content: stretch;
34
+ }
36
35
 
37
- :where(&)::part(text-field-form-input) {
38
- // display: grid;
36
+ &::part(text-field-form-input) {
37
+ // display: grid;
39
38
 
40
- text-align: end;
39
+ text-align: end;
41
40
 
42
- appearance: none;
41
+ appearance: none;
43
42
 
44
- border: 0;
43
+ border: 0;
45
44
 
46
- outline: 0;
45
+ outline: 0;
47
46
 
48
- padding: 0;
47
+ padding: 0;
49
48
 
50
- // padding-block: 0.1rem;
49
+ // padding-block: 0.1rem;
51
50
 
52
- // padding-inline: 0.3rem;
51
+ // padding-inline: 0.3rem;
53
52
 
54
- background-color: transparent;
53
+ background-color: transparent;
54
+ }
55
55
  }
56
56
  }
57
57
  }
@@ -0,0 +1,79 @@
1
+ @use '../vars';
2
+
3
+ @layer #{vars.$components-layer} {
4
+ toggle-view {
5
+ :where(&) {
6
+ grid-template-columns: minmax(0, 1fr);
7
+
8
+ grid-template-rows: minmax(0, 1fr);
9
+
10
+ --toggle--trigger-bg: lightgray;
11
+
12
+ &::part(toggle-stack) {
13
+ grid-template-columns: auto minmax(0, 1fr);
14
+
15
+ grid-template-rows: minmax(0, 1fr);
16
+
17
+ column-gap: var(--labeled-content-column-gap);
18
+ }
19
+
20
+ &::part(toggle-label-stack) {
21
+ color: var(--secondary);
22
+ }
23
+
24
+ &::part(toggle-input-stack) {
25
+ place-items: stretch;
26
+
27
+ place-content: stretch;
28
+ }
29
+
30
+ &::part(toggle-form-input):focus {
31
+ outline: blue solid 5px;
32
+ }
33
+
34
+ &::part(toggle-form-input) {
35
+ text-align: end;
36
+
37
+ position: relative;
38
+
39
+ display: grid;
40
+ outline: red solid 3px;
41
+ border-radius: 2rem;
42
+ inline-size: 4rem;
43
+ block-size: 1rem;
44
+ background: var(--toggle--trigger-bg);
45
+
46
+ // appearance: none;
47
+
48
+ // border: 0;
49
+
50
+ // outline: 0;
51
+
52
+ // padding: 0;
53
+
54
+ // background-color: transparent;
55
+ }
56
+
57
+ &::part(toggle-form-input)::before {
58
+ content: '';
59
+
60
+ display: grid;
61
+
62
+ position: absolute;
63
+ inset: 0 auto auto 0;
64
+ inline-size: 1rem;
65
+ block-size: 1rem;
66
+ border-radius: 1rem;
67
+ // background: yellow;
68
+
69
+ backdrop-filter: var(--liquid-glass-backdrop-filter);
70
+
71
+ box-shadow: var(--liquid-glass-box-shadow);
72
+ }
73
+ }
74
+
75
+ &[aria-checked='true'] {
76
+ --toggle--trigger-bg: green;
77
+ }
78
+ }
79
+ }