@iyulab/modern-app 0.47.1 → 0.49.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 +35 -0
- package/README.md +3 -4
- package/dist/App.js +1 -1
- package/dist/components/ActionBar.styles.js +19 -19
- package/dist/components/EmptyState.styles.js +8 -8
- package/dist/components/GroupBox.styles.js +31 -31
- package/dist/components/InfoField.styles.js +16 -16
- package/dist/components/InfoSection.styles.js +3 -3
- package/dist/components/MasterDetailLayout.styles.js +28 -28
- package/dist/components/PageHeader.styles.js +23 -23
- package/dist/components/SidebarButton.styles.js +8 -8
- package/dist/components/SidebarGroup.styles.js +16 -16
- package/dist/components/SidebarLink.styles.js +21 -21
- package/dist/components/SidebarSection.styles.js +8 -8
- package/dist/components/TimelineItem.styles.js +7 -7
- package/dist/components/Wizard.styles.js +9 -9
- package/dist/{internals/default-fallback.d.ts → defaultFallback.d.ts} +16 -1
- package/dist/{internals/default-fallback.js → defaultFallback.js} +3 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.js +18 -17
- package/dist/internals/locale.d.ts +1 -13
- package/dist/internals/locale.js +12 -27
- package/dist/layouts/SidebarLayout.styles.js +128 -128
- package/package.json +2 -2
- package/skills/modern-app/SKILL.md +3 -4
- package/skills/modern-app/references/api.md +8 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.49.0] - 2026-10-09
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- `defaultFallback` — the failure screens `app.load()` draws when it gets no `fallback` (403 → `no-access`, 404 →
|
|
8
|
+
`not-found`, anything else → `error`, with matching tab titles). An app that constructs its own `Router` passes it
|
|
9
|
+
as `fallback` to get the same screens instead of copying the mapping, and keeps getting the fixes made to it.
|
|
10
|
+
|
|
11
|
+
### Documentation
|
|
12
|
+
|
|
13
|
+
- `FallbackRouteConfig` was shown with a string-only `title` and a required `render`; `title` also takes a function
|
|
14
|
+
of the failure, and `render` is optional.
|
|
15
|
+
|
|
16
|
+
## [0.48.0] - 2026-10-09
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Comments inside the components' `css` styles are no longer shipped. A tagged template's body is a string, so a
|
|
21
|
+
consumer's bundler could not remove them; they were design notes, sent to every browser.
|
|
22
|
+
|
|
23
|
+
### Removed
|
|
24
|
+
|
|
25
|
+
- **Breaking** — `registerLocale()` and `setDefaultLocale()`, deprecated since 0.26.0. The language is chosen in one
|
|
26
|
+
place, `Locale.set()` of `@iyulab/components`; a `setDefaultLocale()` call used to override it for this package only.
|
|
27
|
+
Migrate:
|
|
28
|
+
- `registerLocale(lang, strings)` → `modernAppLocale.register(lang, strings)`. A function-valued
|
|
29
|
+
`wizardStepAnnouncement` becomes a template: `'Step {index} of {total}: {label}'`.
|
|
30
|
+
- `setDefaultLocale(lang)` → `Locale.set(lang)`; `setDefaultLocale(undefined)` has no replacement (there is
|
|
31
|
+
nothing to hand back).
|
|
32
|
+
|
|
33
|
+
### Documentation
|
|
34
|
+
|
|
35
|
+
- Examples import `Locale`/`Theme`/`formatCurrency` from their own module in `@iyulab/components`
|
|
36
|
+
(`dist/utilities/…`) — the components barrel registers every component even when one value is taken from it.
|
|
37
|
+
|
|
3
38
|
## [0.47.1] - 2026-10-08
|
|
4
39
|
|
|
5
40
|
### Fixed
|
package/README.md
CHANGED
|
@@ -155,7 +155,7 @@ handed to `Locale` and to `<html lang>`.
|
|
|
155
155
|
Register other languages, or your own wording, in the same namespace:
|
|
156
156
|
|
|
157
157
|
```typescript
|
|
158
|
-
import { Locale } from '@iyulab/components';
|
|
158
|
+
import { Locale } from '@iyulab/components/dist/utilities/Locale.js'; // the barrel would register every component
|
|
159
159
|
import { modernAppLocale } from '@iyulab/modern-app';
|
|
160
160
|
|
|
161
161
|
Locale.set('ko'); // built-in Korean — nothing to register
|
|
@@ -169,9 +169,8 @@ modernAppLocale.register('ja', {
|
|
|
169
169
|
|
|
170
170
|
A partial table is enough — untranslated keys fall back to English, and a registration for a
|
|
171
171
|
built-in language overrides only the keys it gives. An element's own `locale`
|
|
172
|
-
attribute overrides the active language for that element.
|
|
173
|
-
|
|
174
|
-
called with `undefined`.
|
|
172
|
+
attribute overrides the active language for that element. The language is chosen in one place —
|
|
173
|
+
`Locale.set()` (the old `registerLocale`/`setDefaultLocale` were removed in 0.48.0).
|
|
175
174
|
|
|
176
175
|
### 부팅 인증 게이트 (`auth`)
|
|
177
176
|
|
package/dist/App.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ScreenObserver as e } from "./internals/ScreenObserver.js";
|
|
2
|
-
import { defaultFallback as t } from "./
|
|
2
|
+
import { defaultFallback as t } from "./defaultFallback.js";
|
|
3
3
|
import n from "i18next";
|
|
4
4
|
import { Router as r } from "@iyulab/router";
|
|
5
5
|
import { setDefaultBaseUrl as i } from "@iyulab/components/dist/utilities/icons.js";
|
|
@@ -6,26 +6,26 @@ var t = e`
|
|
|
6
6
|
align-items: center;
|
|
7
7
|
gap: var(--u-space-sm, 8px);
|
|
8
8
|
padding: var(--u-space-md, 12px) 0;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
14
|
flex-wrap: wrap;
|
|
15
15
|
container-type: inline-size;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
21
|
.danger {
|
|
22
22
|
display: flex;
|
|
23
23
|
align-items: center;
|
|
24
24
|
gap: var(--u-space-sm, 8px);
|
|
25
25
|
margin-right: auto;
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
|
|
28
|
+
|
|
29
29
|
.danger.empty {
|
|
30
30
|
display: none;
|
|
31
31
|
}
|
|
@@ -37,14 +37,14 @@ var t = e`
|
|
|
37
37
|
margin-left: auto;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
41
47
|
|
|
42
|
-
🔴**음수 마진으로 «가장자리까지 늘리는» 것을 하지 않는다.** 첫 판이
|
|
43
|
-
margin: 0 calc(-1 * var(--u-space-md, 12px)) 로 좌우를 넘겼는데, 그것은
|
|
44
|
-
***부모가 정확히 그만큼의 가로 패딩을 갖고 있다***고 가정하는 것이다. 실측에서
|
|
45
|
-
그 가정이 깨졌다 — 샘플 화면에서 좌우 12px 씩 넘쳐 **가로 스크롤바가 생기고
|
|
46
|
-
주 액션(저장)이 잘렸다.** 라이브러리가 소비자의 여백을 알 수는 없다.
|
|
47
|
-
⚠이 주석에 백틱을 쓰지 말 것 — css 태그드 템플릿을 그 자리에서 끝낸다. */
|
|
48
48
|
:host([sticky]) {
|
|
49
49
|
position: sticky;
|
|
50
50
|
bottom: 0;
|
|
@@ -53,8 +53,8 @@ var t = e`
|
|
|
53
53
|
padding: var(--u-space-md, 12px) 0;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
|
|
57
|
+
|
|
58
58
|
@container (max-width: 420px) {
|
|
59
59
|
.main {
|
|
60
60
|
order: -1;
|
|
@@ -11,15 +11,15 @@ var t = e`
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
.icon {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
|
|
15
|
+
|
|
16
16
|
font-size: var(--empty-state-icon-size, 32px);
|
|
17
17
|
line-height: 1;
|
|
18
18
|
margin-bottom: var(--u-space-md, 12px);
|
|
19
19
|
opacity: 0.7;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
.message {
|
|
24
24
|
display: flex;
|
|
25
25
|
flex-direction: column;
|
|
@@ -31,7 +31,7 @@ var t = e`
|
|
|
31
31
|
font-size: var(--u-text-subtitle-size, 16px);
|
|
32
32
|
font-weight: var(--u-text-subtitle-weight, 600);
|
|
33
33
|
line-height: var(--u-text-subtitle-leading, 1.5);
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
color: var(--u-txt-color, #212121);
|
|
36
36
|
}
|
|
37
37
|
|
|
@@ -46,10 +46,10 @@ var t = e`
|
|
|
46
46
|
gap: var(--u-space-sm, 8px);
|
|
47
47
|
margin-top: var(--u-space-lg, 16px);
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
53
|
.actions.empty {
|
|
54
54
|
display: none;
|
|
55
55
|
}
|
|
@@ -3,13 +3,13 @@ import { css as e } from "lit";
|
|
|
3
3
|
var t = e`
|
|
4
4
|
:host {
|
|
5
5
|
display: block;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
9
|
container-type: inline-size;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
13
|
background-color: var(--u-panel-bg-color, #FFFFFF);
|
|
14
14
|
border: 1px solid var(--u-border-color, #E0E0E0);
|
|
15
15
|
border-radius: var(--u-radius-xl, 8px);
|
|
@@ -22,9 +22,9 @@ var t = e`
|
|
|
22
22
|
gap: var(--u-space-sm, 8px);
|
|
23
23
|
padding: var(--u-space-xl, 20px) var(--u-space-xl, 20px) 0;
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
28
|
.header.empty {
|
|
29
29
|
display: none;
|
|
30
30
|
}
|
|
@@ -34,7 +34,7 @@ var t = e`
|
|
|
34
34
|
border-bottom: 1px solid var(--u-border-color-weak, #EEEEEE);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
.titles {
|
|
39
39
|
flex: 1 1 auto;
|
|
40
40
|
min-width: 0;
|
|
@@ -52,8 +52,8 @@ var t = e`
|
|
|
52
52
|
letter-spacing: var(--u-text-subtitle-tracking, 0);
|
|
53
53
|
color: var(--u-txt-color, #212121);
|
|
54
54
|
}
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
|
|
56
|
+
|
|
57
57
|
.meta {
|
|
58
58
|
font-size: var(--u-text-body-size, 14px);
|
|
59
59
|
font-weight: var(--u-text-body-weight, 400);
|
|
@@ -69,7 +69,7 @@ var t = e`
|
|
|
69
69
|
color: var(--u-txt-color-weak, #616161);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
|
|
73
73
|
.title:empty {
|
|
74
74
|
display: none;
|
|
75
75
|
}
|
|
@@ -82,20 +82,20 @@ var t = e`
|
|
|
82
82
|
font-size: var(--u-text-label-size, 13px);
|
|
83
83
|
font-weight: var(--u-text-label-weight, 600);
|
|
84
84
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
89
|
.actions.empty {
|
|
90
90
|
display: none;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
99
|
.body {
|
|
100
100
|
padding: var(--u-space-xl, 20px);
|
|
101
101
|
display: flex;
|
|
@@ -103,10 +103,10 @@ var t = e`
|
|
|
103
103
|
gap: var(--u-space-md, 12px);
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
110
|
@container (max-width: 480px) {
|
|
111
111
|
.header {
|
|
112
112
|
flex-wrap: wrap;
|
|
@@ -115,13 +115,13 @@ var t = e`
|
|
|
115
115
|
width: 100%;
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
|
|
119
|
+
|
|
120
120
|
.body.flush {
|
|
121
121
|
padding: 0;
|
|
122
122
|
}
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
|
|
124
|
+
|
|
125
125
|
.header:not(.empty) + .body.flush {
|
|
126
126
|
padding-top: var(--u-space-md, 12px);
|
|
127
127
|
}
|
|
@@ -19,13 +19,13 @@ var t = e`
|
|
|
19
19
|
font-weight: var(--u-text-label-weight, 600);
|
|
20
20
|
line-height: var(--u-text-body-leading, 1.6);
|
|
21
21
|
color: var(--u-txt-color, #212121);
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
overflow-wrap: anywhere;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
29
|
.value.numeric {
|
|
30
30
|
font-variant-numeric: tabular-nums;
|
|
31
31
|
}
|
|
@@ -35,26 +35,26 @@ var t = e`
|
|
|
35
35
|
font-weight: var(--u-text-title-weight, 700);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
41
|
.value.blank {
|
|
42
42
|
color: var(--u-txt-color-weak, #616161);
|
|
43
43
|
font-weight: var(--u-text-body-weight, 400);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
50
|
:host([size="lg"]) .value.blank {
|
|
51
51
|
font-size: var(--u-text-body-size, 14px);
|
|
52
52
|
font-weight: var(--u-text-body-weight, 400);
|
|
53
53
|
min-height: calc(var(--u-text-title-size, 20px) * var(--u-text-body-leading, 1.6));
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
|
|
57
|
+
|
|
58
58
|
.unit {
|
|
59
59
|
margin-inline-start: 0.25em;
|
|
60
60
|
font-size: var(--u-text-label-size, 13px);
|
|
@@ -62,9 +62,9 @@ var t = e`
|
|
|
62
62
|
color: var(--u-txt-color-weak, #616161);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
68
|
.value.tone-positive {
|
|
69
69
|
color: var(--u-success-color-strong, #1B5E20);
|
|
70
70
|
}
|
|
@@ -5,9 +5,9 @@ var t = e`
|
|
|
5
5
|
display: block;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
11
|
.grid {
|
|
12
12
|
display: grid;
|
|
13
13
|
grid-template-columns: repeat(auto-fit, minmax(var(--info-min, 160px), 1fr));
|
|
@@ -6,8 +6,8 @@ var t = e`
|
|
|
6
6
|
position: relative;
|
|
7
7
|
min-width: 0;
|
|
8
8
|
height: 100%;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
|
|
10
|
+
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
.master {
|
|
@@ -16,8 +16,8 @@ var t = e`
|
|
|
16
16
|
overflow: auto;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
|
|
20
|
+
|
|
21
21
|
:host([overlay]) .master {
|
|
22
22
|
flex: 1 1 auto;
|
|
23
23
|
}
|
|
@@ -27,9 +27,9 @@ var t = e`
|
|
|
27
27
|
width: 0;
|
|
28
28
|
border-left: 1px solid var(--u-border-color-weak, #EEEEEE);
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
33
|
.divider.empty,
|
|
34
34
|
:host([overlay]) .divider {
|
|
35
35
|
display: none;
|
|
@@ -45,8 +45,8 @@ var t = e`
|
|
|
45
45
|
display: none;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
|
|
49
|
+
|
|
50
50
|
:host([overlay]) .detail {
|
|
51
51
|
position: absolute;
|
|
52
52
|
inset: 0;
|
|
@@ -55,8 +55,8 @@ var t = e`
|
|
|
55
55
|
box-shadow: var(--u-shadow-lg, 0 4px 12px rgba(0, 0, 0, 0.16), 0 2px 4px rgba(0, 0, 0, 0.06));
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
|
|
59
|
+
|
|
60
60
|
.detail-close {
|
|
61
61
|
display: none;
|
|
62
62
|
position: absolute;
|
|
@@ -68,23 +68,23 @@ var t = e`
|
|
|
68
68
|
display: inline-flex;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
88
|
@media print {
|
|
89
89
|
:host([overlay]) {
|
|
90
90
|
display: block;
|
|
@@ -7,13 +7,13 @@ 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
|
-
|
|
10
|
+
|
|
11
11
|
container-type: inline-size;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
.heading {
|
|
15
15
|
flex: 1 1 auto;
|
|
16
|
-
min-width: 0;
|
|
16
|
+
min-width: 0;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
.title-row {
|
|
@@ -40,7 +40,7 @@ var t = e`
|
|
|
40
40
|
color: var(--u-txt-color-weak, #616161);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
|
|
44
44
|
.eyebrow {
|
|
45
45
|
margin: 0 0 var(--u-space-2xs, 4px);
|
|
46
46
|
font-size: var(--u-text-overline-size, 11px);
|
|
@@ -63,12 +63,12 @@ var t = e`
|
|
|
63
63
|
font-weight: var(--u-text-label-weight, 600);
|
|
64
64
|
color: var(--u-link-txt-color, #1565C0);
|
|
65
65
|
text-decoration: none;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
70
|
display: inline-block;
|
|
71
|
-
|
|
71
|
+
|
|
72
72
|
--_back-pad: max(0px, calc((max(24px, var(--u-target-size, 0px)) - 1lh) / 2));
|
|
73
73
|
padding-block: var(--_back-pad);
|
|
74
74
|
margin-block: calc(-1 * var(--_back-pad));
|
|
@@ -82,12 +82,12 @@ var t = e`
|
|
|
82
82
|
text-decoration: underline;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
91
|
.status.empty {
|
|
92
92
|
display: none;
|
|
93
93
|
}
|
|
@@ -99,20 +99,20 @@ var t = e`
|
|
|
99
99
|
gap: var(--u-space-sm, 8px);
|
|
100
100
|
margin-left: auto;
|
|
101
101
|
}
|
|
102
|
-
|
|
102
|
+
|
|
103
103
|
.actions.empty {
|
|
104
104
|
display: none;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
109
115
|
|
|
110
|
-
🔴**«화면»이 아니라 «자기 폭»을 본다(@container).** 종전에는 @media 였고, 그러면
|
|
111
|
-
이 프리미티브가 **자기가 얼마나 좁은지와 무관하게** 접혔다 — 셸 안에서 사이드바가 열려
|
|
112
|
-
본문이 500px 인 1280px 화면에서는 접히지 않고, 반대로 넓은 본문을 가진 좁은 화면에서는
|
|
113
|
-
불필요하게 접혔다. 컴포넌트가 스스로 판단할 수 있는 것은 **자기 컨테이너 폭**뿐이다.
|
|
114
|
-
⚠container-type: inline-size 는 인라인 축 containment 를 만든다 — 이 호스트는 블록
|
|
115
|
-
레벨이고 자식이 호스트 폭에 기대므로 무해하다(폭별 회귀 테스트가 감시한다). */
|
|
116
116
|
@container (max-width: 640px) {
|
|
117
117
|
.actions {
|
|
118
118
|
margin-left: 0;
|
|
@@ -18,8 +18,8 @@ var t = e`
|
|
|
18
18
|
:host(:active) {
|
|
19
19
|
background-color: var(--u-bg-color-active, #EEEEEE);
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
|
|
22
|
+
|
|
23
23
|
:host([pressed]) {
|
|
24
24
|
background-color: var(--app-sidebar-pressed-bg, var(--u-bg-color-active, #EEEEEE));
|
|
25
25
|
}
|
|
@@ -36,7 +36,7 @@ var t = e`
|
|
|
36
36
|
justify-content: flex-start;
|
|
37
37
|
gap: 12px;
|
|
38
38
|
padding: 8px 12px;
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
min-height: var(--u-target-size, 0px);
|
|
41
41
|
}
|
|
42
42
|
button[compact] {
|
|
@@ -55,7 +55,7 @@ var t = e`
|
|
|
55
55
|
font-size: 20px;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
|
|
59
59
|
span {
|
|
60
60
|
flex: 1;
|
|
61
61
|
font-size: var(--u-text-label-size, 13px);
|
|
@@ -66,10 +66,10 @@ var t = e`
|
|
|
66
66
|
text-overflow: ellipsis;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
73
|
[part~='label'][compact] {
|
|
74
74
|
position: absolute;
|
|
75
75
|
width: 1px;
|