@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 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
- container-type: inline-size;
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`<div class="frame">
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: 1 1 auto;
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: 0 0 auto;
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 0 auto;
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@iyulab/modern-app",
3
3
  "description": "web-framework by iyulab based on lit-element",
4
- "version": "0.51.0",
4
+ "version": "0.52.0",
5
5
  "keywords": [
6
6
  "iyulab",
7
7
  "web-framework",
@@ -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
- **Width comes from outside.** The card folds by its own width (at 480px or less the header
22
- actions move under the title), so its content is a size query container and does not size the
23
- card. In normal flow and in grid `1fr` columns that is invisible; where a box sizes to its
24
- content — a flex row item without `flex: 1`, `inline-block`, a grid `auto` column — give the card
25
- a width (`flex: 1 1 20rem`, `width: …`), or it shrinks to its border. Unnamed `@container`
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