@frame-kit/ui-ng-patterns 0.2.16 → 0.2.18

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frame-kit/ui-ng-patterns",
3
- "version": "0.2.16",
3
+ "version": "0.2.18",
4
4
  "description": "Opinionated, dashboard-ready Angular component patterns composed from @frame-kit/ui-ng.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -17,7 +17,7 @@
17
17
  "@angular/forms": "^21.2.0",
18
18
  "@angular/platform-browser": "^21.2.0",
19
19
  "@angular/router": "^21.2.0",
20
- "@frame-kit/ui-ng": "0.2.16",
20
+ "@frame-kit/ui-ng": "0.2.18",
21
21
  "rxjs": "^7.0.0"
22
22
  },
23
23
  "sideEffects": false,
@@ -1411,8 +1411,17 @@ interface NavSegment {
1411
1411
  */
1412
1412
  declare class DashboardNavComponent {
1413
1413
  readonly groups: _angular_core.InputSignal<DashboardNavGroup[]>;
1414
- /** Icon-rail mode, passed through to every segment. */
1415
- readonly collapsed: _angular_core.InputSignal<boolean>;
1414
+ /**
1415
+ * Icon-rail mode, passed through to every segment. Left `null` — the
1416
+ * default — each segment reads the collapse state of an ancestor
1417
+ * `fk-app-shell`, which is what `fk-dashboard-layout` is. Set it
1418
+ * explicitly only to drive the rail without a shell present.
1419
+ *
1420
+ * It defaults to inheriting rather than to `false` because the failure is
1421
+ * silent otherwise: a nav told nothing renders its expanded rows into a
1422
+ * collapsed rail and they are squashed, with no error to follow.
1423
+ */
1424
+ readonly collapsed: _angular_core.InputSignal<boolean | null>;
1416
1425
  /** Project `[navSlotBefore]` content immediately before this group. */
1417
1426
  readonly slotBeforeGroupId: _angular_core.InputSignal<string | null>;
1418
1427
  /** Project default `<ng-content>` immediately after this group. */
@@ -1420,6 +1429,10 @@ declare class DashboardNavComponent {
1420
1429
  readonly className: _angular_core.InputSignal<string>;
1421
1430
  readonly id: _angular_core.InputSignal<string | null>;
1422
1431
  readonly ariaLabel: _angular_core.InputSignal<string | null>;
1432
+ private readonly layout;
1433
+ private readonly shell;
1434
+ /** The rail state in force: this input, else whichever ancestor owns it. */
1435
+ readonly isCollapsed: _angular_core.Signal<boolean>;
1423
1436
  /**
1424
1437
  * Visible groups sliced into render segments, each carrying a single-group
1425
1438
  * `SidebarNavModel`.
@@ -1522,5 +1535,78 @@ declare class DashboardLayoutComponent {
1522
1535
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DashboardLayoutComponent, "fk-dashboard-layout", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "sidenavWidth": { "alias": "sidenavWidth"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "endMode": { "alias": "endMode"; "required": false; "isSignal": true; }; "endWidth": { "alias": "endWidth"; "required": false; "isSignal": true; }; "endCollapsedWidth": { "alias": "endCollapsedWidth"; "required": false; "isSignal": true; }; "pageLoading": { "alias": "pageLoading"; "required": false; "isSignal": true; }; "toggleAriaLabel": { "alias": "toggleAriaLabel"; "required": false; "isSignal": true; }; "menuAriaLabel": { "alias": "menuAriaLabel"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, ["[layoutBanner]", "[layoutBrand]", "[layoutToggleIcon]", "[layoutAside]", "[layoutAsideFooter]", "[layoutContentPanel]", "[layoutMenuIcon]", "[layoutTopbarStart]", "[layoutTopbarEnd]", "*", "[layoutPageLoader]", "[layoutEnd]", "[layoutFooter]"], true, never>;
1523
1536
  }
1524
1537
 
1525
- export { BackNavComponent, ColumnsComponent, ContentColumnComponent, ContentColumnHeadlineComponent, ContentDetailHeaderComponent, ContentDetailPageComponent, ContentPageSectionComponent, ContentRowComponent, ContentSplitLayoutComponent, ContextSwitcherComponent, DashboardLayoutComponent, DashboardNavComponent, DetailPanelComponent, DialogFooterComponent, DialogHeaderComponent, DialogShellComponent, InlineLoaderComponent, OnboardingGuideComponent, PageHeaderComponent, SearchBarLayoutComponent, SidebarNavComponent, SidebarNavItemDirective, TableEmptyStateComponent };
1538
+ /**
1539
+ * A whole dashboard shell in one element: the collapsing aside and its
1540
+ * toggle, the brand block at its head, the icon-rail navigation, and the
1541
+ * banner, topbar, panel and footer slots a product hangs its own content
1542
+ * off.
1543
+ *
1544
+ * `fk-dashboard-layout` and `fk-dashboard-nav` remain the pieces to reach
1545
+ * for when a product wants a different arrangement. This is the arrangement
1546
+ * most products want, assembled once: every consumer that builds it by hand
1547
+ * repeats the same half-dozen bindings, and the ones that matter fail
1548
+ * quietly when forgotten rather than loudly.
1549
+ *
1550
+ * Everything a product supplies is projected on through, so nothing is
1551
+ * given up by using it: banners, a trailing panel, a second nav column
1552
+ * beside the page, switchers pinned into the rail.
1553
+ *
1554
+ * @example
1555
+ * ```html
1556
+ * <fk-dashboard-chrome
1557
+ * #chrome
1558
+ * brandText="Acme"
1559
+ * brandDescription="Admin"
1560
+ * brandHref="/"
1561
+ * [navGroups]="nav()"
1562
+ * >
1563
+ * <fk-icon-badge chromeBrandMark name="acme-mark" shape="rounded" size="sm" />
1564
+ * <nav chromeTopbarStart>…</nav>
1565
+ * <fk-user-menu chromeTopbarEnd … />
1566
+ * <router-outlet />
1567
+ * </fk-dashboard-chrome>
1568
+ * ```
1569
+ */
1570
+ declare class DashboardChromeComponent {
1571
+ /** Product name beside the mark. */
1572
+ readonly brandText: _angular_core.InputSignal<string>;
1573
+ /** The line under it — which product this is. */
1574
+ readonly brandDescription: _angular_core.InputSignal<string>;
1575
+ /** Where the brand block navigates. */
1576
+ readonly brandHref: _angular_core.InputSignal<string>;
1577
+ /** Ordered nav groups, already filtered to what this reader may open. */
1578
+ readonly navGroups: _angular_core.InputSignal<DashboardNavGroup[]>;
1579
+ /** Group id the `[chromeNavBefore]` content is placed in front of. */
1580
+ readonly navSlotBeforeGroupId: _angular_core.InputSignal<string | null>;
1581
+ /** Group id the `[chromeNavAfter]` content follows. */
1582
+ readonly navSlotAfterGroupId: _angular_core.InputSignal<string | null>;
1583
+ /** Aside behaviour. `icon` leaves a rail behind when collapsed. */
1584
+ readonly mode: _angular_core.InputSignal<AppShellMode>;
1585
+ /** Trailing-panel behaviour, for a product that projects `[chromeEnd]`. */
1586
+ readonly endMode: _angular_core.InputSignal<AppShellMode>;
1587
+ /** Covers the content column while a routed page resolves. */
1588
+ readonly pageLoading: _angular_core.InputSignal<boolean>;
1589
+ readonly toggleAriaLabel: _angular_core.InputSignal<string>;
1590
+ readonly menuAriaLabel: _angular_core.InputSignal<string>;
1591
+ readonly className: _angular_core.InputSignal<string>;
1592
+ private readonly layout;
1593
+ /**
1594
+ * Whether the aside is collapsed to its rail. For projected content that
1595
+ * has to follow it — a switcher pinned into the nav shrinks to its glyph
1596
+ * the same way the rows do.
1597
+ */
1598
+ collapsed(): boolean;
1599
+ /** Whether the trailing panel is open. */
1600
+ endOpen(): boolean;
1601
+ /** Collapse the aside to its rail. */
1602
+ closeSidenav(): void;
1603
+ /** Open the trailing panel. */
1604
+ openEnd(): void;
1605
+ /** Close the trailing panel. */
1606
+ closeEnd(): void;
1607
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DashboardChromeComponent, never>;
1608
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DashboardChromeComponent, "fk-dashboard-chrome", never, { "brandText": { "alias": "brandText"; "required": false; "isSignal": true; }; "brandDescription": { "alias": "brandDescription"; "required": false; "isSignal": true; }; "brandHref": { "alias": "brandHref"; "required": false; "isSignal": true; }; "navGroups": { "alias": "navGroups"; "required": false; "isSignal": true; }; "navSlotBeforeGroupId": { "alias": "navSlotBeforeGroupId"; "required": false; "isSignal": true; }; "navSlotAfterGroupId": { "alias": "navSlotAfterGroupId"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "endMode": { "alias": "endMode"; "required": false; "isSignal": true; }; "pageLoading": { "alias": "pageLoading"; "required": false; "isSignal": true; }; "toggleAriaLabel": { "alias": "toggleAriaLabel"; "required": false; "isSignal": true; }; "menuAriaLabel": { "alias": "menuAriaLabel"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; }, {}, never, ["[chromeBanner]", "[chromeBrandMark]", "[chromeNavBefore]", "[chromeNavAfter]", "[chromeTopbarStart]", "[chromeTopbarEnd]", "*", "[chromeContentPanel]", "[chromeEnd]", "[chromeFooter]"], true, never>;
1609
+ }
1610
+
1611
+ export { BackNavComponent, ColumnsComponent, ContentColumnComponent, ContentColumnHeadlineComponent, ContentDetailHeaderComponent, ContentDetailPageComponent, ContentPageSectionComponent, ContentRowComponent, ContentSplitLayoutComponent, ContextSwitcherComponent, DashboardChromeComponent, DashboardLayoutComponent, DashboardNavComponent, DetailPanelComponent, DialogFooterComponent, DialogHeaderComponent, DialogShellComponent, InlineLoaderComponent, OnboardingGuideComponent, PageHeaderComponent, SearchBarLayoutComponent, SidebarNavComponent, SidebarNavItemDirective, TableEmptyStateComponent };
1526
1612
  export type { ColumnsEmptyTracks, ContextSwitcherColumn, ContextSwitcherIconTone, ContextSwitcherOption, ContextSwitcherSelection, ContextSwitcherSublabelTone, DashboardNavChild, DashboardNavGroup, DashboardNavItem, DialogConfirmVariant, DialogHeaderTint, OnboardingStep, OnboardingSubstep, OnboardingSubstepToggle, SidebarNavChild, SidebarNavGroup, SidebarNavItem, SidebarNavLink, SidebarNavModel };