fold-ng 0.10.2 → 0.10.3

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
@@ -8,18 +8,25 @@ All notable changes to **fold-ng** are documented here. The format follows
8
8
 
9
9
  _Nothing yet._
10
10
 
11
+ ## [0.10.3] - 2026-08-12
12
+
13
+ y
14
+
11
15
  ## [0.10.2] - 2026-08-12
12
16
 
13
17
  ### Changed
14
18
 
15
- - **A `fold-nav-layout` hands its content a zero gutter below 640px.** The bar
16
- spans the layout's full width, so a gutter under it insets the cards _relative
17
- to the menu that names them_ they stop reading as one column. It is also
18
- pure loss on a phone: 2 × 16px off a ~360px reading width. Handed down as
19
- `--fold-page-gutter: 0` on the body rather than selected as a child: a custom
20
- property crosses view encapsulation, so it reaches a nested `fold-page-layout`
21
- (or a `bleed` section, which stays in lockstep) without the layout having to
22
- know what its content is. Vertical rhythm untouched.
19
+ - **A `fold-nav-layout` hands its content a zero gutter, at every width.** The
20
+ bar is that column's header: it spans the layout's full width, so a gutter
21
+ under it insets the cards _relative to the menu that names them_ and the two
22
+ stop reading as one column a desktop misalignment as much as a mobile one,
23
+ where it also costs room there isn't. The gutter belongs to the PAGE; a nav
24
+ layout's body is the inside of a column the page has already inset. Handed
25
+ down as `--fold-page-gutter: 0` on the body rather than selected as a child: a
26
+ custom property crosses view encapsulation, so it reaches a nested
27
+ `fold-page-layout` (or a `bleed` section, which stays in lockstep) without the
28
+ layout having to know what its content is. Vertical rhythm untouched, and a
29
+ body that wants its inset back sets the token on its own content.
23
30
 
24
31
  - **`fold-page-layout` halves its gutter below 640px** —
25
32
  `calc(var(--fold-page-gutter) / 2)`, so a page or theme that retuned the token
@@ -1415,7 +1422,8 @@ design-token stylesheet.
1415
1422
  `currentColor`; `prefers-reduced-motion` + `forced-colors` are respected;
1416
1423
  strings localise via inputs / providers (`provideFoldPanelLabels`).
1417
1424
 
1418
- [unreleased]: https://github.com/hugoheynard/fold-ng/compare/v0.10.2...HEAD
1425
+ [unreleased]: https://github.com/hugoheynard/fold-ng/compare/v0.10.3...HEAD
1426
+ [0.10.3]: https://github.com/hugoheynard/fold-ng/releases/tag/v0.10.3
1419
1427
  [0.10.2]: https://github.com/hugoheynard/fold-ng/releases/tag/v0.10.2
1420
1428
  [0.10.1]: https://github.com/hugoheynard/fold-ng/releases/tag/v0.10.1
1421
1429
  [0.10.0]: https://github.com/hugoheynard/fold-ng/releases/tag/v0.10.0
@@ -10498,13 +10498,13 @@ class FoldNavLayoutComponent {
10498
10498
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FoldNavLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10499
10499
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: FoldNavLayoutComponent, isStandalone: true, selector: "fold-nav-layout", inputs: { placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, foldAt: { classPropertyName: "foldAt", publicName: "foldAt", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.is-row": "!stacked()" } }, providers: [
10500
10500
  { provide: FOLD_NAV_LAYOUT, useExisting: FoldNavLayoutComponent },
10501
- ], exportAs: ["foldNavLayout"], ngImport: i0, template: "<div class=\"tl-nav\"><ng-content select=\"[tabNav]\" /></div>\n<div class=\"tl-body\"><ng-content /></div>\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;gap:var(--fold-nav-layout-gap, var(--fold-space-lg, 16px))}@media(max-width:640px){:host{gap:var(--fold-nav-layout-gap, var(--fold-space-xs, 4px))}}:host{min-width:0}:host(.is-row){flex-direction:row}.tl-nav{display:grid;min-width:0}:host(.is-row) .tl-nav{flex:0 0 var(--fold-nav-layout-rail-width, var(--fold-rail-tertiary, 200px))}.tl-body{flex:1 1 auto;min-width:0}@media(max-width:640px){.tl-body{--fold-page-gutter: 0px}}\n"] });
10501
+ ], exportAs: ["foldNavLayout"], ngImport: i0, template: "<div class=\"tl-nav\"><ng-content select=\"[tabNav]\" /></div>\n<div class=\"tl-body\"><ng-content /></div>\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;gap:var(--fold-nav-layout-gap, var(--fold-space-lg, 16px))}@media(max-width:640px){:host{gap:var(--fold-nav-layout-gap, var(--fold-space-xs, 4px))}}:host{min-width:0}:host(.is-row){flex-direction:row}.tl-nav{display:grid;min-width:0}:host(.is-row) .tl-nav{flex:0 0 var(--fold-nav-layout-rail-width, var(--fold-rail-tertiary, 200px))}.tl-body{flex:1 1 auto;min-width:0}.tl-body{--fold-page-gutter: 0px}\n"] });
10502
10502
  }
10503
10503
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FoldNavLayoutComponent, decorators: [{
10504
10504
  type: Component,
10505
10505
  args: [{ selector: "fold-nav-layout", standalone: true, exportAs: "foldNavLayout", host: { "[class.is-row]": "!stacked()" }, providers: [
10506
10506
  { provide: FOLD_NAV_LAYOUT, useExisting: FoldNavLayoutComponent },
10507
- ], template: "<div class=\"tl-nav\"><ng-content select=\"[tabNav]\" /></div>\n<div class=\"tl-body\"><ng-content /></div>\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;gap:var(--fold-nav-layout-gap, var(--fold-space-lg, 16px))}@media(max-width:640px){:host{gap:var(--fold-nav-layout-gap, var(--fold-space-xs, 4px))}}:host{min-width:0}:host(.is-row){flex-direction:row}.tl-nav{display:grid;min-width:0}:host(.is-row) .tl-nav{flex:0 0 var(--fold-nav-layout-rail-width, var(--fold-rail-tertiary, 200px))}.tl-body{flex:1 1 auto;min-width:0}@media(max-width:640px){.tl-body{--fold-page-gutter: 0px}}\n"] }]
10507
+ ], template: "<div class=\"tl-nav\"><ng-content select=\"[tabNav]\" /></div>\n<div class=\"tl-body\"><ng-content /></div>\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex-direction:column;gap:var(--fold-nav-layout-gap, var(--fold-space-lg, 16px))}@media(max-width:640px){:host{gap:var(--fold-nav-layout-gap, var(--fold-space-xs, 4px))}}:host{min-width:0}:host(.is-row){flex-direction:row}.tl-nav{display:grid;min-width:0}:host(.is-row) .tl-nav{flex:0 0 var(--fold-nav-layout-rail-width, var(--fold-rail-tertiary, 200px))}.tl-body{flex:1 1 auto;min-width:0}.tl-body{--fold-page-gutter: 0px}\n"] }]
10508
10508
  }], ctorParameters: () => [], propDecorators: { placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], foldAt: [{ type: i0.Input, args: [{ isSignal: true, alias: "foldAt", required: false }] }] } });
10509
10509
 
10510
10510
  /**