@iyulab/modern-app 0.56.2 → 0.58.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.
Files changed (54) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/App.js +1 -2
  3. package/dist/_virtual/{_@oxc-project_runtime@0.154.0 → _@oxc-project_runtime@0.155.0}/helpers/esm/decorate.js +1 -2
  4. package/dist/_virtual/{_@oxc-project_runtime@0.154.0 → _@oxc-project_runtime@0.155.0}/helpers/esm/decorateMetadata.js +1 -2
  5. package/dist/components/ActionBar.js +3 -4
  6. package/dist/components/ActionBar.styles.js +1 -2
  7. package/dist/components/EmptyState.js +3 -4
  8. package/dist/components/EmptyState.styles.js +1 -2
  9. package/dist/components/GroupBox.js +3 -4
  10. package/dist/components/GroupBox.styles.js +1 -2
  11. package/dist/components/InfoField.d.ts +5 -0
  12. package/dist/components/InfoField.js +25 -19
  13. package/dist/components/InfoField.styles.js +20 -2
  14. package/dist/components/InfoSection.js +3 -4
  15. package/dist/components/InfoSection.styles.js +1 -2
  16. package/dist/components/MasterDetailLayout.js +3 -4
  17. package/dist/components/MasterDetailLayout.styles.js +1 -2
  18. package/dist/components/PageHeader.js +3 -4
  19. package/dist/components/PageHeader.styles.js +1 -2
  20. package/dist/components/SidebarButton.js +3 -4
  21. package/dist/components/SidebarButton.styles.js +1 -2
  22. package/dist/components/SidebarGroup.d.ts +9 -0
  23. package/dist/components/SidebarGroup.js +17 -14
  24. package/dist/components/SidebarGroup.styles.js +1 -2
  25. package/dist/components/SidebarLink.d.ts +6 -0
  26. package/dist/components/SidebarLink.js +16 -14
  27. package/dist/components/SidebarLink.styles.js +2 -3
  28. package/dist/components/SidebarSection.js +3 -4
  29. package/dist/components/SidebarSection.styles.js +1 -2
  30. package/dist/components/Timeline.js +2 -3
  31. package/dist/components/Timeline.styles.js +1 -2
  32. package/dist/components/TimelineItem.js +3 -4
  33. package/dist/components/TimelineItem.styles.js +1 -2
  34. package/dist/components/Wizard.js +3 -4
  35. package/dist/components/Wizard.styles.js +1 -2
  36. package/dist/defaultFallback.js +1 -2
  37. package/dist/index.d.ts +1 -1
  38. package/dist/index.js +1 -2
  39. package/dist/internals/ScreenObserver.js +1 -2
  40. package/dist/internals/StyledElement.js +3 -4
  41. package/dist/internals/locale.js +1 -2
  42. package/dist/internals/nav-icon.js +1 -2
  43. package/dist/internals/slotted.js +1 -2
  44. package/dist/layouts/SidebarLayout.d.ts +18 -0
  45. package/dist/layouts/SidebarLayout.js +100 -76
  46. package/dist/layouts/SidebarLayout.styles.js +41 -7
  47. package/dist/layouts/SidebarLayout.types.d.ts +16 -2
  48. package/dist/layouts/filterSidebarItems.js +1 -2
  49. package/dist/react.js +1 -2
  50. package/dist/translate.js +0 -1
  51. package/dist/unsaved.js +1 -2
  52. package/package.json +3 -3
  53. package/skills/modern-app/references/components/info-field.md +22 -0
  54. package/skills/modern-app/references/layout.md +29 -2
@@ -1,21 +1,24 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.154.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.154.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { getLocaleStrings as r } from "../internals/locale.js";
5
5
  import { DEFAULT_NAV_ICON as i } from "../internals/nav-icon.js";
6
6
  import { styles as a } from "./SidebarLink.styles.js";
7
7
  import "@iyulab/router";
8
8
  import { html as o, nothing as s } from "lit";
9
- import { customElement as c, property as l } from "lit/decorators.js";
9
+ import { customElement as c, property as l, state as u } from "lit/decorators.js";
10
10
  import "@iyulab/components/dist/components/icon/UIcon.js";
11
- //#region src/components/SidebarLink.ts
12
- var u = class extends n {
11
+ // src/components/SidebarLink.ts
12
+ var d = class extends n {
13
13
  constructor(...e) {
14
- super(...e), this.selected = !1, this.compact = !1;
14
+ super(...e), this.selected = !1, this.compact = !1, this.nested = !1;
15
15
  }
16
16
  static {
17
17
  this.styles = [super.styles, a];
18
18
  }
19
+ connectedCallback() {
20
+ super.connectedCallback(), this.nested = this.parentElement?.localName === "u-sidebar-group";
21
+ }
19
22
  render() {
20
23
  return o`
21
24
  <u-link
@@ -25,11 +28,11 @@ var u = class extends n {
25
28
  aria-current=${this.selected ? "page" : s}
26
29
  >
27
30
  <div class="container" part="base" ?compact=${this.compact}>
28
- <u-icon part="icon"
29
- .lib=${this.lib}
30
- .name=${this.icon}
31
- .fallback=${i}
32
- ></u-icon>
31
+ ${this.icon || !this.nested ? o`<u-icon part="icon"
32
+ .lib=${this.lib}
33
+ .name=${this.icon}
34
+ .fallback=${i}
35
+ ></u-icon>` : s}
33
36
  <span part="label" ?compact=${this.compact}>
34
37
  ${this.label}
35
38
  </span>
@@ -43,6 +46,5 @@ var u = class extends n {
43
46
  t([l({
44
47
  type: Boolean,
45
48
  reflect: !0
46
- }), e("design:type", Object)], u.prototype, "selected", void 0), t([l({ type: Boolean }), e("design:type", Object)], u.prototype, "compact", void 0), t([l({ type: String }), e("design:type", String)], u.prototype, "icon", void 0), t([l({ type: String }), e("design:type", String)], u.prototype, "lib", void 0), t([l({ type: String }), e("design:type", Object)], u.prototype, "label", void 0), t([l({ type: String }), e("design:type", String)], u.prototype, "href", void 0), t([l({ type: String }), e("design:type", Object)], u.prototype, "pattern", void 0), t([l({ type: String }), e("design:type", String)], u.prototype, "navigate", void 0), t([l({ type: String }), e("design:type", String)], u.prototype, "target", void 0), t([l(), e("design:type", Object)], u.prototype, "count", void 0), u = t([c("u-sidebar-link")], u);
47
- //#endregion
48
- export { u as SidebarLink };
49
+ }), e("design:type", Object)], d.prototype, "selected", void 0), t([l({ type: Boolean }), e("design:type", Object)], d.prototype, "compact", void 0), t([l({ type: String }), e("design:type", String)], d.prototype, "icon", void 0), t([l({ type: String }), e("design:type", String)], d.prototype, "lib", void 0), t([l({ type: String }), e("design:type", Object)], d.prototype, "label", void 0), t([l({ type: String }), e("design:type", String)], d.prototype, "href", void 0), t([l({ type: String }), e("design:type", Object)], d.prototype, "pattern", void 0), t([l({ type: String }), e("design:type", String)], d.prototype, "navigate", void 0), t([l({ type: String }), e("design:type", String)], d.prototype, "target", void 0), t([l(), e("design:type", Object)], d.prototype, "count", void 0), t([u(), e("design:type", Object)], d.prototype, "nested", void 0), d = t([c("u-sidebar-link")], d);
50
+ export { d as SidebarLink };
@@ -1,5 +1,5 @@
1
1
  import { css as e } from "lit";
2
- //#region src/components/SidebarLink.styles.ts
2
+ // src/components/SidebarLink.styles.ts
3
3
  var t = e`
4
4
  :host {
5
5
 
@@ -106,13 +106,13 @@ var t = e`
106
106
 
107
107
 
108
108
 
109
+
109
110
  .count {
110
111
  flex: none;
111
112
  margin-inline-start: auto;
112
113
  font-size: var(--u-text-overline-size, 11px);
113
114
  font-weight: var(--u-text-caption-weight, 400);
114
115
  font-variant-numeric: tabular-nums;
115
- opacity: 0.8;
116
116
  }
117
117
  .count[compact] {
118
118
  position: absolute;
@@ -124,5 +124,4 @@ var t = e`
124
124
  white-space: nowrap;
125
125
  }
126
126
  `;
127
- //#endregion
128
127
  export { t as styles };
@@ -1,10 +1,10 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.154.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.154.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { styles as r } from "./SidebarSection.styles.js";
5
5
  import { html as i } from "lit";
6
6
  import { customElement as a, property as o } from "lit/decorators.js";
7
- //#region src/components/SidebarSection.ts
7
+ // src/components/SidebarSection.ts
8
8
  var s = class extends n {
9
9
  constructor(...e) {
10
10
  super(...e), this.compact = !1;
@@ -30,5 +30,4 @@ var s = class extends n {
30
30
  }
31
31
  };
32
32
  t([o({ type: Boolean }), e("design:type", Object)], s.prototype, "compact", void 0), t([o({ type: String }), e("design:type", Object)], s.prototype, "mainTitle", void 0), t([o({ type: String }), e("design:type", Object)], s.prototype, "subTitle", void 0), s = t([a("u-sidebar-section")], s);
33
- //#endregion
34
33
  export { s as SidebarSection };
@@ -1,5 +1,5 @@
1
1
  import { css as e } from "lit";
2
- //#region src/components/SidebarSection.styles.ts
2
+ // src/components/SidebarSection.styles.ts
3
3
  var t = e`
4
4
  :host {
5
5
  display: flex;
@@ -45,5 +45,4 @@ var t = e`
45
45
  flex-direction: column;
46
46
  }
47
47
  `;
48
- //#endregion
49
48
  export { t as styles };
@@ -1,10 +1,10 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.154.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
2
2
  import { StyledElement as t } from "../internals/StyledElement.js";
3
3
  import "./TimelineItem.js";
4
4
  import { styles as n } from "./Timeline.styles.js";
5
5
  import { html as r } from "lit";
6
6
  import { customElement as i } from "lit/decorators.js";
7
- //#region src/components/Timeline.ts
7
+ // src/components/Timeline.ts
8
8
  var a = class extends t {
9
9
  static {
10
10
  this.styles = [super.styles, n];
@@ -17,5 +17,4 @@ var a = class extends t {
17
17
  }
18
18
  };
19
19
  a = e([i("u-timeline")], a);
20
- //#endregion
21
20
  export { a as Timeline };
@@ -1,5 +1,5 @@
1
1
  import { css as e } from "lit";
2
- //#region src/components/Timeline.styles.ts
2
+ // src/components/Timeline.styles.ts
3
3
  var t = e`
4
4
  :host {
5
5
  display: block;
@@ -10,5 +10,4 @@ var t = e`
10
10
  flex-direction: column;
11
11
  }
12
12
  `;
13
- //#endregion
14
13
  export { t as styles };
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.154.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.154.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { slotHasContent as r } from "../internals/slotted.js";
5
5
  import { styles as i } from "./TimelineItem.styles.js";
@@ -7,7 +7,7 @@ import { html as a, nothing as o } from "lit";
7
7
  import { customElement as s, property as c, state as l } from "lit/decorators.js";
8
8
  import { formatDate as u } from "@iyulab/components/dist/utilities/format.js";
9
9
  import "@iyulab/components/dist/components/icon/UIcon.js";
10
- //#region src/components/TimelineItem.ts
10
+ // src/components/TimelineItem.ts
11
11
  var d = class extends n {
12
12
  constructor(...e) {
13
13
  super(...e), this.heading = "", this.datetime = "", this.color = "neutral", this.hasBody = !1;
@@ -52,5 +52,4 @@ t([c({ type: String }), e("design:type", Object)], d.prototype, "heading", void
52
52
  type: String,
53
53
  reflect: !0
54
54
  }), e("design:type", Object)], d.prototype, "color", void 0), t([c({ type: String }), e("design:type", String)], d.prototype, "icon", void 0), t([c({ type: String }), e("design:type", String)], d.prototype, "lib", void 0), t([l(), e("design:type", Object)], d.prototype, "hasBody", void 0), d = t([s("u-timeline-item")], d);
55
- //#endregion
56
55
  export { d as TimelineItem };
@@ -1,5 +1,5 @@
1
1
  import { css as e } from "lit";
2
- //#region src/components/TimelineItem.styles.ts
2
+ // src/components/TimelineItem.styles.ts
3
3
  var t = e`
4
4
  :host {
5
5
  display: grid;
@@ -118,5 +118,4 @@ var t = e`
118
118
  display: none;
119
119
  }
120
120
  `;
121
- //#endregion
122
121
  export { t as styles };
@@ -1,12 +1,12 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.154.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.154.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { getLocaleStrings as r } from "../internals/locale.js";
5
5
  import { styles as i } from "./Wizard.styles.js";
6
6
  import { html as a, nothing as o } from "lit";
7
7
  import { customElement as s, property as c, state as l } from "lit/decorators.js";
8
8
  import "@iyulab/components/dist/components/button/UButton.js";
9
- //#region src/components/Wizard.ts
9
+ // src/components/Wizard.ts
10
10
  var u = class extends n {
11
11
  constructor(...e) {
12
12
  super(...e), this.steps = [], this.active = 0, this.orientation = "vertical", this.linear = !0, this.locale = "", this.announcement = "", this.handleTabKeydown = (e, t) => {
@@ -118,5 +118,4 @@ t([c({
118
118
  type: Boolean,
119
119
  reflect: !0
120
120
  }), e("design:type", Object)], u.prototype, "linear", void 0), t([c({ type: String }), e("design:type", Object)], u.prototype, "locale", void 0), t([l(), e("design:type", Object)], u.prototype, "announcement", void 0), u = t([s("u-wizard")], u);
121
- //#endregion
122
121
  export { u as Wizard };
@@ -1,5 +1,5 @@
1
1
  import { css as e } from "lit";
2
- //#region src/components/Wizard.styles.ts
2
+ // src/components/Wizard.styles.ts
3
3
  var t = e`
4
4
  :host {
5
5
  display: flex;
@@ -115,5 +115,4 @@ var t = e`
115
115
  border: 0;
116
116
  }
117
117
  `;
118
- //#endregion
119
118
  export { t as styles };
@@ -1,6 +1,6 @@
1
1
  import { getLocaleStrings as e } from "./internals/locale.js";
2
2
  import { EmptyState as t } from "./components/EmptyState.js";
3
- //#region src/defaultFallback.ts
3
+ // src/defaultFallback.ts
4
4
  function n(e) {
5
5
  switch (String(e.code)) {
6
6
  case "403": return "no-access";
@@ -23,5 +23,4 @@ var i = {
23
23
  return i.variant = n(e.error), i.variant === "error" && (i.title = r(e), i.description = e.error.message), i;
24
24
  }
25
25
  };
26
- //#endregion
27
26
  export { i as defaultFallback, n as variantOf };
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export type { SidebarPermissionGuard } from './layouts/SidebarPermission';
6
6
  export type { RouteConfig, RouteContext, FallbackRouteConfig, RouteLeaveContext } from '@iyulab/router';
7
7
  export { RouteError, NotFoundError, AccessDeniedError, ContentLoadError, ContentRenderError, OutletMissingError, } from '@iyulab/router';
8
8
  export { defaultFallback } from './defaultFallback.js';
9
- export type { SidebarIconsConfig, SidebarLayoutConfig, SidebarItem, SidebarLogoConfig, SidebarLinkConfig, SidebarSectionConfig, SidebarGroupConfig, SidebarButtonConfig, SidebarMenuConfig, SidebarMenuItemConfig, SidebarHtmlConfig, SidebarState, } from './layouts/SidebarLayout.types';
9
+ export type { SidebarIconsConfig, SidebarLayoutConfig, SidebarItem, SidebarLogoConfig, SidebarLogoIcon, SidebarLinkConfig, SidebarSectionConfig, SidebarGroupConfig, SidebarButtonConfig, SidebarMenuConfig, SidebarMenuItemConfig, SidebarHtmlConfig, SidebarState, } from './layouts/SidebarLayout.types';
10
10
  export type { SidebarAvatar } from './components/SidebarButton.js';
11
11
  export type { SidebarLayoutEventMap } from './layouts/SidebarLayout.js';
12
12
  export { filterSidebarItems } from './layouts/filterSidebarItems.js';
package/dist/index.js CHANGED
@@ -16,7 +16,6 @@ import { MasterDetailLayout as x } from "./components/MasterDetailLayout.js";
16
16
  import { Wizard as S } from "./components/Wizard.js";
17
17
  import { translate as C } from "./translate.js";
18
18
  import { AccessDeniedError as w, ContentLoadError as T, ContentRenderError as E, NotFoundError as D, OutletMissingError as O, RouteError as k } from "@iyulab/router";
19
- //#region src/index.ts
19
+ // src/index.ts
20
20
  var A = d;
21
- //#endregion
22
21
  export { w as AccessDeniedError, b as ActionBar, T as ContentLoadError, E as ContentRenderError, i as EmptyState, m as GroupBox, g as InfoField, h as InfoSection, x as MasterDetailLayout, D as NotFoundError, O as OutletMissingError, p as PageHeader, k as RouteError, e as ScreenObserver, y as Timeline, v as TimelineItem, o as UnsavedChangesController, S as Wizard, d as app, s as confirmDiscardChanges, A as default, a as defaultFallback, f as filterSidebarItems, t as getDefaultLocale, n as getLocaleStrings, c as hasUnsavedChanges, _ as isBlank, r as modernAppLocale, l as trackUnsavedChanges, C as translate, u as unsavedChangesGuard };
@@ -1,4 +1,4 @@
1
- //#region src/internals/ScreenObserver.ts
1
+ // src/internals/ScreenObserver.ts
2
2
  var e = class {
3
3
  constructor(e) {
4
4
  this._breakpoints = e.breakpoints, this._observer = new ResizeObserver((e) => {
@@ -19,5 +19,4 @@ var e = class {
19
19
  return e < t ? "small" : e < n ? "medium" : "large";
20
20
  }
21
21
  };
22
- //#endregion
23
22
  export { e as ScreenObserver };
@@ -1,8 +1,8 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.154.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.154.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
3
3
  import { property as n } from "lit/decorators.js";
4
4
  import { UElement as r } from "@iyulab/components/dist/components/UElement.js";
5
- //#region src/internals/StyledElement.ts
5
+ // src/internals/StyledElement.ts
6
6
  var i = class extends r {
7
7
  static {
8
8
  this.styles = super.styles;
@@ -39,5 +39,4 @@ t([n({
39
39
  type: Object,
40
40
  attribute: !1
41
41
  }), e("design:type", Object)], i.prototype, "styles", void 0);
42
- //#endregion
43
42
  export { i as StyledElement };
@@ -1,5 +1,5 @@
1
1
  import { Locale as e } from "@iyulab/components/dist/utilities/Locale.js";
2
- //#region src/internals/locale.ts
2
+ // src/internals/locale.ts
3
3
  var t = {
4
4
  back: "Back",
5
5
  noDataTitle: "Nothing here yet",
@@ -98,5 +98,4 @@ function a() {
98
98
  wizardStepAnnouncement: (e, t, n) => `Step ${e} of ${t}: ${n}`
99
99
  };
100
100
  }
101
- //#endregion
102
101
  export { a as getDefaultLocale, i as getLocaleStrings, n as modernAppLocale };
@@ -1,4 +1,3 @@
1
- //#region src/internals/nav-icon.ts
1
+ // src/internals/nav-icon.ts
2
2
  var e = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5 8 5.961 14.154 3.5zM15 4.239l-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464z\"/></svg>";
3
- //#endregion
4
3
  export { e as DEFAULT_NAV_ICON };
@@ -1,6 +1,5 @@
1
- //#region src/internals/slotted.ts
1
+ // src/internals/slotted.ts
2
2
  function e(e) {
3
3
  return e ? e.assignedNodes({ flatten: !0 }).some((e) => e.nodeType !== Node.TEXT_NODE || (e.textContent ?? "").trim() !== "") : !1;
4
4
  }
5
- //#endregion
6
5
  export { e as slotHasContent };
@@ -8,6 +8,14 @@ export declare class SidebarLayout extends StyledElement<SidebarParts> {
8
8
  state: SidebarState;
9
9
  /** 사이드바 레이아웃 설정 */
10
10
  config?: SidebarLayoutConfig;
11
+ /**
12
+ * The current screen takes the whole viewport: no sidebar, no mobile header, no page padding — a wall
13
+ * display, a kiosk, a full-screen viewer. Set by the route (`metadata: { shell: 'hidden' }`) and cleared when the
14
+ * next screen does not ask for it; the screen itself gives the way back.
15
+ */
16
+ immersive: boolean;
17
+ /** 지금 화면이 건 일시 테마가 있는가 — 다음 화면이 아무것도 묻지 않으면 걷어 사용자 선호로 돌려준다. */
18
+ private routeTheme;
11
19
  /**
12
20
  * Live counts for link items, keyed by the item's `href` — overrides the static `count` of the
13
21
  * item config. Set through `app.setNavCount(href, value)`; assigning a new object re-renders.
@@ -40,6 +48,15 @@ export declare class SidebarLayout extends StyledElement<SidebarParts> {
40
48
  */
41
49
  private mainTabStop;
42
50
  private mainSizeObserver?;
51
+ /**
52
+ * 모바일 머리 줄(`.mobile-header`)의 실제 높이 — 모바일 패널이 그 아래에서 시작한다(`--_mobile-header-block-size`).
53
+ * 종전에는 패널이 맨 위(0)에서 시작하고 패널 안의 자기 머리 줄이 모바일 머리 줄 밑에 깔려 높이를 채웠다. 두 머리 줄의
54
+ * 높이가 같다는 우연에 기댄 배치라 한쪽만 바뀌어도 내용이 머리 줄 밑으로 들어갔고, 깔린 머리 줄의 버튼은 보이지 않는데
55
+ * Tab 으로 포커스가 갔다. 그리고 패널이 덮인 자리까지 «자기 상자» 로 가져 위치 계산이 머리 줄 밑을 빈 자리로 봤다.
56
+ * 높이는 밀도 토큰에 따라 달라 재서 쓴다.
57
+ */
58
+ private mobileHeaderBlockSize;
59
+ private mobileHeaderObserver?;
43
60
  /**
44
61
  * 오버레이를 연 컨트롤 — 닫힐 때 포커스를 되돌릴 곳.
45
62
  * ★슬롯 배정 «시점» 에 잡는다. 렌더가 본문에 `inert` 를 걸면 그 컨트롤이 쥐던 포커스는
@@ -149,6 +166,7 @@ export declare class SidebarLayout extends StyledElement<SidebarParts> {
149
166
  * ⚠`.main-content` 는 `display: contents` 라 상자가 없다 — 관찰 대상은 슬롯에 배정된 요소들이고, 배정이 바뀔 때마다 다시 건다.
150
167
  */
151
168
  private observeMainSize;
169
+ private observeMobileHeader;
152
170
  private observedContent;
153
171
  private observeContentSize;
154
172
  private handleMainSlotChange;