@swiftwc/ui 0.0.0-dev.79 → 0.0.0-dev.80

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.
@@ -2,8 +2,6 @@
2
2
  *
3
3
  * @attr {@spacingSet} spacing - The gap between the primary axis
4
4
  *
5
- * @attr {leading|center|trailing} frame:alignment - The alignment of the stack on the cross-axis
6
- *
7
5
  * @attr {@alignmentSet} alignment - The cross-axis alignment
8
6
  * @attr {@distributionSet} distribution - The main-axis alignment
9
7
  * @attr {@placementSet} placement - The main-axis alignment
@@ -3,8 +3,6 @@ import { devFlags } from '../internal/utils';
3
3
  *
4
4
  * @attr {@spacingSet} spacing - The gap between the primary axis
5
5
  *
6
- * @attr {leading|center|trailing} frame:alignment - The alignment of the stack on the cross-axis
7
- *
8
6
  * @attr {@alignmentSet} alignment - The cross-axis alignment
9
7
  * @attr {@distributionSet} distribution - The main-axis alignment
10
8
  * @attr {@placementSet} placement - The main-axis alignment
@@ -3,8 +3,6 @@
3
3
  *
4
4
  * @attr {"auto spacer"|"auto auto spacer"|"auto auto auto spacer"} template
5
5
  *
6
- * @attr {leading|center|trailing} frame:alignment - The alignment of the stack on the cross-axis
7
- *
8
6
  * @attr {@spacingSet} spacing - The gap between the primary axis
9
7
  *
10
8
  * @attr {@alignmentSet} alignment - The cross-axis alignment
@@ -4,8 +4,6 @@ import { devFlags } from '../internal/utils';
4
4
  *
5
5
  * @attr {"auto spacer"|"auto auto spacer"|"auto auto auto spacer"} template
6
6
  *
7
- * @attr {leading|center|trailing} frame:alignment - The alignment of the stack on the cross-axis
8
- *
9
7
  * @attr {@spacingSet} spacing - The gap between the primary axis
10
8
  *
11
9
  * @attr {@alignmentSet} alignment - The cross-axis alignment
@@ -6403,12 +6403,62 @@
6403
6403
  :where([frame\:max-width="100cqi"]) {
6404
6404
  max-inline-size: 100cqi;
6405
6405
  }
6406
- :where([frame\:alignment=top]) {
6407
- align-self: top;
6406
+ :where(scroll-view > [frame\:alignment=leading],
6407
+ v-stack > [frame\:alignment=leading]) {
6408
+ justify-self: start;
6409
+ }
6410
+ :where(scroll-view > [frame\:anchor=leading],
6411
+ v-stack > [frame\:anchor=leading]) {
6412
+ align-self: start;
6413
+ }
6414
+ :where(scroll-view > [frame\:alignment=center],
6415
+ v-stack > [frame\:alignment=center]) {
6416
+ justify-self: center;
6417
+ }
6418
+ :where(scroll-view > [frame\:anchor=center],
6419
+ v-stack > [frame\:anchor=center]) {
6420
+ align-self: center;
6421
+ }
6422
+ :where(scroll-view > [frame\:alignment=trailing],
6423
+ v-stack > [frame\:alignment=trailing]) {
6424
+ justify-self: end;
6408
6425
  }
6409
- :where([frame\:alignment=leading]) {
6426
+ :where(scroll-view > [frame\:anchor=trailing],
6427
+ v-stack > [frame\:anchor=trailing]) {
6428
+ align-self: end;
6429
+ }
6430
+ :where(scroll-view > [frame\:alignment=fill],
6431
+ v-stack > [frame\:alignment=fill]) {
6432
+ justify-self: stretch;
6433
+ }
6434
+ :where(scroll-view > [frame\:anchor=fill],
6435
+ v-stack > [frame\:anchor=fill]) {
6436
+ align-self: stretch;
6437
+ }
6438
+ :where(h-stack > [frame\:alignment=leading]) {
6439
+ align-self: start;
6440
+ }
6441
+ :where(h-stack > [frame\:anchor=leading]) {
6410
6442
  justify-self: start;
6411
6443
  }
6444
+ :where(h-stack > [frame\:alignment=center]) {
6445
+ align-self: center;
6446
+ }
6447
+ :where(h-stack > [frame\:anchor=center]) {
6448
+ justify-self: center;
6449
+ }
6450
+ :where(h-stack > [frame\:alignment=trailing]) {
6451
+ align-self: end;
6452
+ }
6453
+ :where(h-stack > [frame\:anchor=trailing]) {
6454
+ justify-self: end;
6455
+ }
6456
+ :where(h-stack > [frame\:alignment=fill]) {
6457
+ align-self: stretch;
6458
+ }
6459
+ :where(h-stack > [frame\:anchor=fill]) {
6460
+ justify-self: stretch;
6461
+ }
6412
6462
  @media (prefers-reduced-motion: no-preference) {
6413
6463
  :where([slow]) {
6414
6464
  visibility: visible;
@@ -6796,14 +6846,6 @@
6796
6846
  h-stack[spacing="50"]) {
6797
6847
  gap: 5rem;
6798
6848
  }
6799
- :where(v-stack[frame\:alignment=leading],
6800
- h-stack[frame\:alignment=leading]) {
6801
- justify-self: start;
6802
- }
6803
- :where(v-stack[frame\:alignment=center],
6804
- h-stack[frame\:alignment=center]) {
6805
- justify-self: center;
6806
- }
6807
6849
  :where(v-stack[padding],
6808
6850
  h-stack[padding],
6809
6851
  h-flex-stack[padding],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swiftwc/ui",
3
- "version": "0.0.0-dev.79",
3
+ "version": "0.0.0-dev.80",
4
4
  "description": "Elegant SwiftUI-inspired web components for standalone web apps and web extensions.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,6 +1,13 @@
1
1
  @use '../vars';
2
2
  @use 'sass:math';
3
3
 
4
+ $self-map: (
5
+ leading: start,
6
+ center: center,
7
+ trailing: end,
8
+ fill: stretch,
9
+ );
10
+
4
11
  @layer #{vars.$utils-layer} {
5
12
  :where([frame\:width='infinity']) {
6
13
  inline-size: 100%;
@@ -17,13 +24,41 @@
17
24
  }
18
25
  }
19
26
 
20
- :where([frame\:alignment='top']) {
21
- align-self: top;
27
+ // per-child override — analogous to SwiftUI's .frame(alignment:) on one child.
28
+ // only direct children matter here since only direct children are grid items.
29
+
30
+ // v-stack/ALL: cross axis is inline (horizontal) -> justify-self (grid is by default auto-flow-row)
31
+ scroll-view,
32
+ v-stack {
33
+ @each $k, $v in $self-map {
34
+ :where(& > [frame\:alignment='#{$k}']) {
35
+ justify-self: #{$v};
36
+ }
37
+ :where(& > [frame\:anchor='#{$k}']) {
38
+ align-self: #{$v};
39
+ }
40
+ }
22
41
  }
23
- :where([frame\:alignment='leading']) {
24
- justify-self: start;
42
+
43
+ // // h-stack: cross axis is block (vertical) -> align-self
44
+ h-stack {
45
+ @each $k, $v in $self-map {
46
+ :where(& > [frame\:alignment='#{$k}']) {
47
+ align-self: #{$v};
48
+ }
49
+ :where(& > [frame\:anchor='#{$k}']) {
50
+ justify-self: #{$v};
51
+ }
52
+ }
25
53
  }
26
54
 
55
+ // :where([frame\:alignment='top']) {
56
+ // align-self: start;
57
+ // }
58
+ // :where([frame\:alignment='leading']) {
59
+ // justify-self: start;
60
+ // }
61
+
27
62
  // :where([frame-width='infinity']) {
28
63
  // place-items: stretch; //justify-self: stretch;
29
64
  // }
@@ -192,12 +192,12 @@ $v-placement-map: (
192
192
  }
193
193
  }
194
194
 
195
- :where(&[frame\:alignment='leading']) {
196
- justify-self: start;
197
- }
198
- :where(&[frame\:alignment='center']) {
199
- justify-self: center;
200
- }
195
+ // :where(&[frame\:alignment='leading']) {
196
+ // justify-self: start;
197
+ // }
198
+ // :where(&[frame\:alignment='center']) {
199
+ // justify-self: center;
200
+ // }
201
201
  }
202
202
 
203
203
  // padding reserved word for stacks
@@ -183,21 +183,6 @@
183
183
  "description": "\nDescription: The gap between the primary axis",
184
184
  "valueSet": "spacingSet"
185
185
  },
186
- {
187
- "name": "frame:alignment - The alignment of the stack on the cross",
188
- "description": "Value Type: “leading” | “center” | “trailing”\n\nDescription: axis",
189
- "values": [
190
- {
191
- "name": "leading"
192
- },
193
- {
194
- "name": "center"
195
- },
196
- {
197
- "name": "trailing"
198
- }
199
- ]
200
- },
201
186
  {
202
187
  "name": "alignment - The cross",
203
188
  "description": "\nDescription: axis alignment",
@@ -644,21 +629,6 @@
644
629
  }
645
630
  ]
646
631
  },
647
- {
648
- "name": "frame:alignment - The alignment of the stack on the cross",
649
- "description": "Value Type: “leading” | “center” | “trailing”\n\nDescription: axis",
650
- "values": [
651
- {
652
- "name": "leading"
653
- },
654
- {
655
- "name": "center"
656
- },
657
- {
658
- "name": "trailing"
659
- }
660
- ]
661
- },
662
632
  {
663
633
  "name": "spacing",
664
634
  "description": "\nDescription: The gap between the primary axis",