@iyulab/modern-app 0.18.6 → 0.18.8

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 (26) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/_virtual/{_@oxc-project_runtime@0.146.0 → _@oxc-project_runtime@0.147.0}/helpers/esm/decorate.js +1 -1
  3. package/dist/_virtual/{_@oxc-project_runtime@0.146.0 → _@oxc-project_runtime@0.147.0}/helpers/esm/decorateMetadata.js +1 -1
  4. package/dist/components/ActionBar.js +2 -2
  5. package/dist/components/EmptyState.js +2 -2
  6. package/dist/components/GroupBox.js +2 -2
  7. package/dist/components/InfoField.js +2 -2
  8. package/dist/components/InfoSection.js +2 -2
  9. package/dist/components/MasterDetailLayout.js +2 -2
  10. package/dist/components/PageHeader.js +2 -2
  11. package/dist/components/SidebarButton.js +10 -9
  12. package/dist/components/SidebarGroup.js +12 -10
  13. package/dist/components/SidebarLink.js +4 -2
  14. package/dist/components/SidebarSection.js +2 -2
  15. package/dist/components/Wizard.js +2 -2
  16. package/dist/internals/StyledElement.js +2 -2
  17. package/dist/layouts/SidebarLayout.js +3 -3
  18. package/package.json +1 -1
  19. package/skills/modern-app/references/components/action-bar.md +9 -0
  20. package/skills/modern-app/references/components/empty-state.md +15 -0
  21. package/skills/modern-app/references/components/group-box.md +14 -0
  22. package/skills/modern-app/references/components/info-field.md +15 -0
  23. package/skills/modern-app/references/components/info-section.md +9 -0
  24. package/skills/modern-app/references/components/master-detail-layout.md +12 -0
  25. package/skills/modern-app/references/components/page-header.md +16 -0
  26. package/skills/modern-app/references/components/wizard.md +18 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.18.8] - 2026-08-30
4
+
5
+ ### Fixed
6
+
7
+ - **`SidebarLayout` ignored an explicit `collapsed: false` on a group config** — a
8
+ group always rendered collapsed regardless of the configured initial state.
9
+ `SidebarGroup.collapsed` defaults to `true`, and the binding used a
10
+ boolean-attribute directive, which only ever adds the attribute — it never
11
+ removes an already-absent one to force `false`, so the default silently won.
12
+ Switched to a direct property binding, which sets the value regardless of the
13
+ component's own default.
14
+
15
+ ## [0.18.7] - 2026-08-27
16
+
17
+ ### Fixed
18
+
19
+ - **`SidebarButton`, `SidebarLink`, and `SidebarGroup` lost their accessible
20
+ name entirely in compact (icon-only) sidebar mode.** Compact mode hides the
21
+ visible text label (`part="label"`), and hiding it also removes it from the
22
+ accessibility tree — with no fallback, a screen reader announced these as
23
+ unnamed buttons/links. When `label` is a plain string, it is now promoted to
24
+ `aria-label` while compact; the visible label still drives the name when
25
+ expanded, so nothing changes there.
26
+
3
27
  ## [0.18.6] - 2026-08-24
4
28
 
5
29
  ### Fixed
@@ -1,4 +1,4 @@
1
- //#region \0@oxc-project+runtime@0.146.0/helpers/esm/decorate.js
1
+ //#region \0@oxc-project+runtime@0.147.0/helpers/esm/decorate.js
2
2
  function e(e, t, n, r) {
3
3
  var i = arguments.length, a = i < 3 ? t : r === null ? r = Object.getOwnPropertyDescriptor(t, n) : r, o;
4
4
  if (typeof Reflect == "object" && typeof Reflect.decorate == "function") a = Reflect.decorate(e, t, n, r);
@@ -1,4 +1,4 @@
1
- //#region \0@oxc-project+runtime@0.146.0/helpers/esm/decorateMetadata.js
1
+ //#region \0@oxc-project+runtime@0.147.0/helpers/esm/decorateMetadata.js
2
2
  function e(e, t) {
3
3
  if (typeof Reflect == "object" && typeof Reflect.metadata == "function") return Reflect.metadata(e, t);
4
4
  }
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.147.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 "./ActionBar.styles.js";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.147.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 { slotHasContent as i } from "../internals/slotted.js";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.147.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 "./GroupBox.styles.js";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { styles as r } from "./InfoField.styles.js";
5
5
  import { html as i } from "lit";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { styles as r } from "./InfoSection.styles.js";
5
5
  import { html as i } from "lit";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.147.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 { slotHasContent as i } from "../internals/slotted.js";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.147.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 { slotHasContent as i } from "../internals/slotted.js";
@@ -1,13 +1,13 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { DEFAULT_NAV_ICON as r } from "../internals/nav-icon.js";
5
5
  import { styles as i } from "./SidebarButton.styles.js";
6
- import { html as a } from "lit";
7
- import { customElement as o, property as s } from "lit/decorators.js";
6
+ import { html as a, nothing as o } from "lit";
7
+ import { customElement as s, property as c } from "lit/decorators.js";
8
8
  import "@iyulab/components/dist/components/icon/UIcon.js";
9
9
  //#region src/components/SidebarButton.ts
10
- var c = class extends n {
10
+ var l = class extends n {
11
11
  constructor(...e) {
12
12
  super(...e), this.compact = !1;
13
13
  }
@@ -15,8 +15,9 @@ var c = class extends n {
15
15
  this.styles = [super.styles, i];
16
16
  }
17
17
  render() {
18
+ let e = this.compact && typeof this.label == "string" ? this.label : o;
18
19
  return a`
19
- <button part="base" ?compact=${this.compact}>
20
+ <button part="base" ?compact=${this.compact} aria-label=${e}>
20
21
  <u-icon part="icon"
21
22
  .lib=${this.lib}
22
23
  .name=${this.icon}
@@ -29,9 +30,9 @@ var c = class extends n {
29
30
  `;
30
31
  }
31
32
  };
32
- t([s({
33
+ t([c({
33
34
  type: Boolean,
34
35
  reflect: !0
35
- }), e("design:type", Object)], c.prototype, "compact", void 0), t([s({ type: String }), e("design:type", String)], c.prototype, "icon", void 0), t([s({ type: String }), e("design:type", String)], c.prototype, "lib", void 0), t([s({ type: String }), e("design:type", Object)], c.prototype, "label", void 0), c = t([o("u-sidebar-button")], c);
36
+ }), e("design:type", Object)], l.prototype, "compact", void 0), t([c({ type: String }), e("design:type", String)], l.prototype, "icon", void 0), t([c({ type: String }), e("design:type", String)], l.prototype, "lib", void 0), t([c({ type: String }), e("design:type", Object)], l.prototype, "label", void 0), l = t([s("u-sidebar-button")], l);
36
37
  //#endregion
37
- export { c as SidebarButton };
38
+ export { l as SidebarButton };
@@ -1,14 +1,14 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { DEFAULT_NAV_ICON as r } from "../internals/nav-icon.js";
5
5
  import { SidebarLink as i } from "./SidebarLink.js";
6
6
  import { styles as a } from "./SidebarGroup.styles.js";
7
- import { html as o } from "lit";
8
- import { customElement as s, property as c } from "lit/decorators.js";
7
+ import { html as o, nothing as s } from "lit";
8
+ import { customElement as c, property as l } from "lit/decorators.js";
9
9
  import "@iyulab/components/dist/components/icon/UIcon.js";
10
10
  //#region src/components/SidebarGroup.ts
11
- var l = class extends n {
11
+ var u = class extends n {
12
12
  constructor(...e) {
13
13
  super(...e), this.compact = !1, this.selected = !1, this.collapsed = !0, this.handleButtonClick = (e) => {
14
14
  this.compact ? ((this.shadowRoot?.querySelector("slot")?.assignedElements({ flatten: !0 }).find((e) => e instanceof i))?.renderRoot.querySelector("u-link"))?.click() : this.collapsed = !this.collapsed;
@@ -18,10 +18,12 @@ var l = class extends n {
18
18
  this.styles = [super.styles, a];
19
19
  }
20
20
  render() {
21
+ let e = this.compact && typeof this.label == "string" ? this.label : s;
21
22
  return o`
22
23
  <button part="header"
23
24
  ?compact=${this.compact}
24
25
  ?selected=${this.selected}
26
+ aria-label=${e}
25
27
  @click=${this.handleButtonClick}>
26
28
  <!--
27
29
  ⚠ ?hidden 을 걸지 않는다. 접힌 상태에서는 라벨과 캐럿이 모두 숨으므로,
@@ -51,15 +53,15 @@ var l = class extends n {
51
53
  `;
52
54
  }
53
55
  };
54
- t([c({
56
+ t([l({
55
57
  type: Boolean,
56
58
  reflect: !0
57
- }), e("design:type", Boolean)], l.prototype, "compact", void 0), t([c({
59
+ }), e("design:type", Boolean)], u.prototype, "compact", void 0), t([l({
58
60
  type: Boolean,
59
61
  reflect: !0
60
- }), e("design:type", Boolean)], l.prototype, "selected", void 0), t([c({
62
+ }), e("design:type", Boolean)], u.prototype, "selected", void 0), t([l({
61
63
  type: Boolean,
62
64
  reflect: !0
63
- }), e("design:type", Boolean)], l.prototype, "collapsed", void 0), t([c({ type: String }), e("design:type", String)], l.prototype, "icon", void 0), t([c({ type: String }), e("design:type", String)], l.prototype, "lib", void 0), t([c({ type: String }), e("design:type", Object)], l.prototype, "label", void 0), l = t([s("u-sidebar-group")], l);
65
+ }), e("design:type", Boolean)], u.prototype, "collapsed", 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), u = t([c("u-sidebar-group")], u);
64
66
  //#endregion
65
- export { l as SidebarGroup };
67
+ export { u as SidebarGroup };
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { DEFAULT_NAV_ICON as r } from "../internals/nav-icon.js";
5
5
  import { styles as i } from "./SidebarLink.styles.js";
@@ -15,12 +15,14 @@ var l = class extends n {
15
15
  this.styles = [super.styles, i];
16
16
  }
17
17
  render() {
18
+ let e = this.compact && typeof this.label == "string" ? this.label : o;
18
19
  return a`
19
20
  <u-link
20
21
  .href=${this.href || "#"}
21
22
  .navigate=${this.navigate}
22
23
  .target=${this.target}
23
24
  aria-current=${this.selected ? "page" : o}
25
+ aria-label=${e}
24
26
  >
25
27
  <div class="container" part="base" ?compact=${this.compact}>
26
28
  <u-icon part="icon"
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.147.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";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.147.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";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.147.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
5
  //#region src/internals/StyledElement.ts
@@ -1,7 +1,7 @@
1
1
  import { app as e } from "../App.js";
2
2
  import { filterSidebarItems as t } from "./filterSidebarItems.js";
3
- import n from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorateMetadata.js";
4
- import r from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
3
+ import n from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorateMetadata.js";
4
+ import r from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorate.js";
5
5
  import { StyledElement as i } from "../internals/StyledElement.js";
6
6
  import { getLocaleStrings as a } from "../internals/locale.js";
7
7
  import "../components/SidebarSection.js";
@@ -201,7 +201,7 @@ var v = class extends i {
201
201
  <u-sidebar-group
202
202
  ?compact=${this.state === "slim"}
203
203
  ?selected=${t}
204
- ?collapsed="${e.collapsed ?? !1}"
204
+ .collapsed=${e.collapsed ?? !0}
205
205
  .icon="${e.icon}"
206
206
  .lib="${e.lib}"
207
207
  .label="${e.label}"
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.18.6",
4
+ "version": "0.18.8",
5
5
  "keywords": [
6
6
  "iyulab",
7
7
  "web-framework",
@@ -33,6 +33,15 @@ destructive ones separated on the trailing edge.
33
33
  | `main` | Primary action group |
34
34
  | `danger` | Destructive action group |
35
35
 
36
+ ## CSS Custom Properties
37
+
38
+ | Property | Description |
39
+ |----------|-------------|
40
+ | `--u-bg-color` | Background when `sticky` |
41
+ | `--u-border-color-weak` | Top border when `sticky` |
42
+ | `--u-space-sm` | Gap between actions within a group |
43
+ | `--u-space-md` | Host and sticky-mode vertical padding |
44
+
36
45
  ⚠ `sticky` adds **vertical** padding only. It deliberately does not stretch to the container
37
46
  edges with negative margins — that would assume the parent has exactly that much horizontal
38
47
  padding, and when the assumption is wrong the bar overflows and clips its own buttons.
@@ -39,5 +39,20 @@ for both and a user with a filter still applied reads it as *"my data disappeare
39
39
  |------|-------------|
40
40
  | `icon` · `title` · `description` · `actions` | The four regions |
41
41
 
42
+ ## CSS Custom Properties
43
+
44
+ | Property | Description |
45
+ |----------|-------------|
46
+ | `--empty-state-icon-size` | Icon slot font size |
47
+ | `--u-txt-color` | Title color |
48
+ | `--u-txt-color-weak` | Host and description text color |
49
+ | `--u-text-subtitle-size` / `-weight` / `-leading` | Title typography |
50
+ | `--u-text-caption-size` / `-leading` | Description typography |
51
+ | `--u-space-4xl` / `--u-space-xl` | Host padding (vertical / horizontal) |
52
+ | `--u-space-md` | Icon-to-title spacing |
53
+ | `--u-space-2xs` | Title-to-description spacing |
54
+ | `--u-space-lg` | Actions row top spacing |
55
+ | `--u-space-sm` | Gap between actions |
56
+
42
57
  ⚠ Default wording is **English** — register others with `registerLocale('ko', …)`, or pass
43
58
  `title`/`description` per screen.
@@ -39,3 +39,17 @@ a left edge without any consumer CSS.
39
39
  |------|-------------|
40
40
  | `header` · `title` · `actions` | Header row |
41
41
  | `body` | Body wrapper |
42
+
43
+ ## CSS Custom Properties
44
+
45
+ | Property | Description |
46
+ |----------|-------------|
47
+ | `--u-text-subtitle-size` | Title font size |
48
+ | `--u-text-subtitle-weight` | Title font weight |
49
+ | `--u-text-subtitle-leading` | Title line height |
50
+ | `--u-text-subtitle-tracking` | Title letter spacing |
51
+ | `--u-bg-color-raised` | Surface background |
52
+ | `--u-border-color-weak` | Border and header divider color |
53
+ | `--u-radius-2xl` | Corner radius |
54
+ | `--u-shadow-sm` | Drop shadow |
55
+ | `--u-space-sm` / `--u-space-md` / `--u-space-xl` | Header/body spacing |
@@ -53,3 +53,18 @@ lone field it just pushes the value away from its label.
53
53
  | Part | Description |
54
54
  |------|-------------|
55
55
  | `label` · `value` · `trend` | The label, the value, and the (optional) trend indicator |
56
+
57
+ ## CSS Custom Properties
58
+
59
+ | Property | Description |
60
+ |----------|-------------|
61
+ | `--u-text-caption-size` / `-weight` / `-leading` | Label typography |
62
+ | `--u-txt-color-weak` | Label color, and blank-value (`—`) color |
63
+ | `--u-space-3xs` | Label-to-value spacing |
64
+ | `--u-text-body-size` / `-leading` | Value typography at default `size` |
65
+ | `--u-text-label-weight` | Value font weight at default `size` |
66
+ | `--u-text-body-weight` | Value font weight when `blank` |
67
+ | `--u-txt-color` | Value color |
68
+ | `--u-text-title-size` / `-weight` | Value typography when `size="lg"` |
69
+ | `--u-success-color-strong` | `tone="positive"` color (value and trend) |
70
+ | `--u-danger-color-strong` | `tone="negative"` color (value and trend) |
@@ -33,3 +33,12 @@ markup works inside a side panel.
33
33
  | Part | Description |
34
34
  |------|-------------|
35
35
  | `grid` | Grid container |
36
+
37
+ ## CSS Custom Properties
38
+
39
+ | Property | Description |
40
+ |----------|-------------|
41
+ | `--u-space-lg` / `--u-space-xl` | Grid gap (row / column) |
42
+
43
+ ⚠ Column width is set via the `min` property, not a custom property — it's applied as an inline
44
+ style per instance, so a `--info-min` override in a stylesheet would lose to it.
@@ -64,3 +64,15 @@ configurable breakpoint means measuring the host's own width in JavaScript and r
64
64
  | `divider` | Hairline between panes — hidden when there's no detail, or in overlay mode |
65
65
  | `detail` | Detail pane |
66
66
  | `detail-close` | Overlay-mode close button — hidden outside overlay mode |
67
+
68
+ ## CSS Custom Properties
69
+
70
+ | Property | Description |
71
+ |----------|-------------|
72
+ | `--u-border-color-weak` | Divider color |
73
+ | `--u-panel-bg-color` | Detail pane background in overlay mode |
74
+ | `--u-shadow-lg` | Detail pane shadow in overlay mode |
75
+ | `--u-space-sm` | Close-button offset from the overlay edge |
76
+
77
+ ⚠ The master pane's fixed width comes from the `masterSize` property (a CSS length, applied as
78
+ an inline style), not a custom property.
@@ -42,5 +42,21 @@ screens nobody opens.
42
42
  | `title` · `subtitle` | Text elements |
43
43
  | `status` · `actions` | Slot wrappers |
44
44
 
45
+ ## CSS Custom Properties
46
+
47
+ | Property | Description |
48
+ |----------|-------------|
49
+ | `--u-text-display-size` / `-weight` / `-leading` / `-tracking` | Title typography |
50
+ | `--u-txt-color` | Title color |
51
+ | `--u-text-caption-size` / `-weight` / `-leading` | Subtitle typography |
52
+ | `--u-txt-color-weak` | Subtitle color |
53
+ | `--u-link-txt-color` | Back-link color |
54
+ | `--u-text-label-size` / `-weight` | Back-link typography |
55
+ | `--u-space-2xl` | Host bottom margin |
56
+ | `--u-space-md` | Row gap (heading vs. actions) |
57
+ | `--u-space-sm` | Title-row and actions internal gap |
58
+ | `--u-space-2xs` | Title-to-subtitle spacing |
59
+ | `--u-space-3xs` | Back-arrow-to-label spacing |
60
+
45
61
  ⚠ Built-in strings default to **English** — this package is a generic layer and cannot pick a
46
62
  language. Register others with `registerLocale('ko', { back: '뒤로' })`.
@@ -82,3 +82,21 @@ clicked directly (a non-linear/"editable" stepper).
82
82
  | `step` | Each step button (`role="tab"`) |
83
83
  | `panel` | Wrapper around the active step's slotted content (`role="tabpanel"`) |
84
84
  | `actions` | Back/Next (or overridden) action row |
85
+
86
+ ## CSS Custom Properties
87
+
88
+ | Property | Description |
89
+ |----------|-------------|
90
+ | `--u-space-xl` | Indicator-to-content gap |
91
+ | `--u-space-lg` | Gap between content rows |
92
+ | `--u-space-sm` | Indicator step gap, marker-to-label gap, actions row gap |
93
+ | `--u-space-2xs` | Step button vertical padding |
94
+ | `--u-txt-color-weak` | Step label color (default state) |
95
+ | `--u-txt-color-disabled` | Step label color (`disabled`) |
96
+ | `--u-border-color-strong` | Marker border (default state) |
97
+ | `--u-primary-color` | Marker border/text and label color (`active`, `state-done`) |
98
+ | `--u-danger-color` | Marker border/text and label color (`state-error`) |
99
+ | `--u-txt-color-inverse` | Marker text color (`state-done`) |
100
+ | `--u-text-caption-size` | Marker font size |
101
+ | `--u-text-label-weight` | Marker font weight |
102
+ | `--u-text-label-size` | Step label font size |