@iyulab/modern-app 0.51.0 → 0.52.0
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.
- package/CHANGELOG.md +17 -0
- package/dist/components/ActionBar.styles.js +8 -16
- package/dist/components/GroupBox.js +2 -3
- package/dist/components/GroupBox.styles.js +7 -17
- package/dist/components/PageHeader.styles.js +11 -20
- package/package.json +1 -1
- package/skills/modern-app/references/components/group-box.md +5 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.52.0] - 2026-10-12
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- 🔴**`u-group-box`, `u-page-header` and `u-action-bar` no longer use size containment.** In Chromium a
|
|
8
|
+
`container-type: inline-size` box — on the host, and after 0.49.1 on an inner box — could stay collapsed to its
|
|
9
|
+
border (2px high) after a commit that changed layout elsewhere on the page (a sibling `fieldset` turning
|
|
10
|
+
`disabled`, a block appearing above it), until something forced a relayout. The three still fold by their own
|
|
11
|
+
width at the same points (480px, 640px, 420px); the threshold is now an item's `flex-basis`. Consequences:
|
|
12
|
+
- Unnamed `@container` queries in content slotted into `u-group-box` no longer resolve to the card. Lay that
|
|
13
|
+
content out intrinsically, or give it a container of your own.
|
|
14
|
+
- A card in a box that sizes to its content (a flex row item without `flex: 1`, `inline-block`, a grid `auto`
|
|
15
|
+
column) now sizes to its content instead of shrinking to its border.
|
|
16
|
+
- `u-group-box`'s header folds when the card is narrower than 480px, measured on the card's border box as before.
|
|
17
|
+
- The inner `.frame` wrapper `u-group-box` gained in 0.49.1 is gone; the header and body are direct children of
|
|
18
|
+
the shadow root again.
|
|
19
|
+
|
|
3
20
|
## [0.51.0] - 2026-10-12
|
|
4
21
|
|
|
5
22
|
### Changed
|
|
@@ -11,8 +11,14 @@ var t = e`
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
flex-wrap: wrap;
|
|
15
|
-
|
|
14
|
+
flex-wrap: wrap-reverse;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
.danger,
|
|
19
|
+
.main {
|
|
20
|
+
flex: 0 1 calc((420px - 100%) * 999);
|
|
21
|
+
min-width: fit-content;
|
|
16
22
|
}
|
|
17
23
|
|
|
18
24
|
|
|
@@ -52,20 +58,6 @@ var t = e`
|
|
|
52
58
|
border-top: 1px solid var(--u-border-color-weak, #EEEEEE);
|
|
53
59
|
padding: var(--u-space-md, 12px) 0;
|
|
54
60
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
@container (max-width: 420px) {
|
|
59
|
-
.main {
|
|
60
|
-
order: -1;
|
|
61
|
-
width: 100%;
|
|
62
|
-
margin-left: 0;
|
|
63
|
-
}
|
|
64
|
-
.danger {
|
|
65
|
-
width: 100%;
|
|
66
|
-
margin-right: 0;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
61
|
`;
|
|
70
62
|
//#endregion
|
|
71
63
|
export { t as styles };
|
|
@@ -33,7 +33,7 @@ var f, p = {
|
|
|
33
33
|
}
|
|
34
34
|
render() {
|
|
35
35
|
let e = !!this.title || !!this.description || this.hasActions;
|
|
36
|
-
return a
|
|
36
|
+
return a`
|
|
37
37
|
<div class="header ${this.divider ? "divider" : ""} ${e ? "" : "empty"}" part="header">
|
|
38
38
|
<div class="titles">
|
|
39
39
|
${u`<${p[this.headingLevel]} class="title" part="title">${this.title}${this.title && this.meta ? a` <span class="meta" part="meta">${this.meta}</span>` : ""}</${p[this.headingLevel]}>`}
|
|
@@ -45,8 +45,7 @@ var f, p = {
|
|
|
45
45
|
></slot>
|
|
46
46
|
</div>
|
|
47
47
|
</div>
|
|
48
|
-
<div class="body ${this.flush ? "flush" : ""}" part="body"><slot></slot></div
|
|
49
|
-
</div>`;
|
|
48
|
+
<div class="body ${this.flush ? "flush" : ""}" part="body"><slot></slot></div>`;
|
|
50
49
|
}
|
|
51
50
|
};
|
|
52
51
|
t([c({ type: String }), e("design:type", Object)], m.prototype, "title", void 0), t([c({ type: String }), e("design:type", String)], m.prototype, "meta", void 0), t([c({ type: String }), e("design:type", String)], m.prototype, "description", void 0), t([c({ type: Boolean }), e("design:type", Object)], m.prototype, "divider", void 0), t([c({ type: Boolean }), e("design:type", Object)], m.prototype, "flush", void 0), t([c({
|
|
@@ -18,13 +18,15 @@ var t = e`
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
21
25
|
|
|
22
|
-
.frame {
|
|
23
|
-
container-type: inline-size;
|
|
24
|
-
}
|
|
25
26
|
|
|
26
27
|
.header {
|
|
27
28
|
display: flex;
|
|
29
|
+
flex-wrap: wrap;
|
|
28
30
|
align-items: center;
|
|
29
31
|
gap: var(--u-space-sm, 8px);
|
|
30
32
|
padding: var(--u-space-xl, 20px) var(--u-space-xl, 20px) 0;
|
|
@@ -43,7 +45,7 @@ var t = e`
|
|
|
43
45
|
|
|
44
46
|
|
|
45
47
|
.titles {
|
|
46
|
-
flex:
|
|
48
|
+
flex: 9999 1 calc((480px - 2 * var(--u-space-xl, 20px) - 100%) * 999);
|
|
47
49
|
min-width: 0;
|
|
48
50
|
display: flex;
|
|
49
51
|
flex-direction: column;
|
|
@@ -82,7 +84,7 @@ var t = e`
|
|
|
82
84
|
}
|
|
83
85
|
|
|
84
86
|
.actions {
|
|
85
|
-
flex:
|
|
87
|
+
flex: 1 0 auto;
|
|
86
88
|
display: flex;
|
|
87
89
|
align-items: center;
|
|
88
90
|
gap: var(--u-space-sm, 8px);
|
|
@@ -112,18 +114,6 @@ var t = e`
|
|
|
112
114
|
|
|
113
115
|
|
|
114
116
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
@container (max-width: 480px) {
|
|
118
|
-
.header {
|
|
119
|
-
flex-wrap: wrap;
|
|
120
|
-
}
|
|
121
|
-
.actions {
|
|
122
|
-
width: 100%;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
127
117
|
.body.flush {
|
|
128
118
|
padding: 0;
|
|
129
119
|
}
|
|
@@ -7,10 +7,17 @@ var t = e`
|
|
|
7
7
|
gap: var(--u-space-md, 12px);
|
|
8
8
|
flex-wrap: wrap;
|
|
9
9
|
margin-bottom: var(--u-space-2xl, 24px);
|
|
10
|
-
|
|
11
|
-
container-type: inline-size;
|
|
12
10
|
}
|
|
13
11
|
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
14
21
|
.heading {
|
|
15
22
|
flex: 1 1 auto;
|
|
16
23
|
min-width: 0;
|
|
@@ -93,32 +100,16 @@ var t = e`
|
|
|
93
100
|
}
|
|
94
101
|
|
|
95
102
|
.actions {
|
|
96
|
-
flex: 0
|
|
103
|
+
flex: 0 1 calc((640px - 100%) * 999);
|
|
104
|
+
min-width: fit-content;
|
|
97
105
|
display: flex;
|
|
98
106
|
align-items: center;
|
|
99
107
|
gap: var(--u-space-sm, 8px);
|
|
100
|
-
margin-left: auto;
|
|
101
108
|
}
|
|
102
109
|
|
|
103
110
|
.actions.empty {
|
|
104
111
|
display: none;
|
|
105
112
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
@container (max-width: 640px) {
|
|
117
|
-
.actions {
|
|
118
|
-
margin-left: 0;
|
|
119
|
-
width: 100%;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
113
|
`;
|
|
123
114
|
//#endregion
|
|
124
115
|
export { t as styles };
|
package/package.json
CHANGED
|
@@ -18,12 +18,11 @@ up different on every screen.
|
|
|
18
18
|
The body is a flex column with token spacing, so block children get vertical rhythm and share
|
|
19
19
|
a left edge without any consumer CSS.
|
|
20
20
|
|
|
21
|
-
**
|
|
22
|
-
|
|
23
|
-
card
|
|
24
|
-
content
|
|
25
|
-
|
|
26
|
-
queries in your slotted content resolve to the card's width.
|
|
21
|
+
**It folds by its own width, without a size container.** Below 480px the header actions move under
|
|
22
|
+
the title and fill the row. The threshold is the title's `flex-basis`, not a container query, so
|
|
23
|
+
the card sizes to its content like any block, and unnamed `@container` queries in your slotted
|
|
24
|
+
content do not resolve to the card — lay slotted content out intrinsically (the house-style grids
|
|
25
|
+
do).
|
|
27
26
|
|
|
28
27
|
## Slots
|
|
29
28
|
|