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

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.17",
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.17",
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,9 @@ 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 shell;
1433
+ /** The rail state in force: this input, else the ancestor shell's. */
1434
+ readonly isCollapsed: _angular_core.Signal<boolean>;
1423
1435
  /**
1424
1436
  * Visible groups sliced into render segments, each carrying a single-group
1425
1437
  * `SidebarNavModel`.
@@ -1522,5 +1534,78 @@ declare class DashboardLayoutComponent {
1522
1534
  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
1535
  }
1524
1536
 
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 };
1537
+ /**
1538
+ * A whole dashboard shell in one element: the collapsing aside and its
1539
+ * toggle, the brand block at its head, the icon-rail navigation, and the
1540
+ * banner, topbar, panel and footer slots a product hangs its own content
1541
+ * off.
1542
+ *
1543
+ * `fk-dashboard-layout` and `fk-dashboard-nav` remain the pieces to reach
1544
+ * for when a product wants a different arrangement. This is the arrangement
1545
+ * most products want, assembled once: every consumer that builds it by hand
1546
+ * repeats the same half-dozen bindings, and the ones that matter fail
1547
+ * quietly when forgotten rather than loudly.
1548
+ *
1549
+ * Everything a product supplies is projected on through, so nothing is
1550
+ * given up by using it: banners, a trailing panel, a second nav column
1551
+ * beside the page, switchers pinned into the rail.
1552
+ *
1553
+ * @example
1554
+ * ```html
1555
+ * <fk-dashboard-chrome
1556
+ * #chrome
1557
+ * brandText="Acme"
1558
+ * brandDescription="Admin"
1559
+ * brandHref="/"
1560
+ * [navGroups]="nav()"
1561
+ * >
1562
+ * <fk-icon-badge chromeBrandMark name="acme-mark" shape="rounded" size="sm" />
1563
+ * <nav chromeTopbarStart>…</nav>
1564
+ * <fk-user-menu chromeTopbarEnd … />
1565
+ * <router-outlet />
1566
+ * </fk-dashboard-chrome>
1567
+ * ```
1568
+ */
1569
+ declare class DashboardChromeComponent {
1570
+ /** Product name beside the mark. */
1571
+ readonly brandText: _angular_core.InputSignal<string>;
1572
+ /** The line under it — which product this is. */
1573
+ readonly brandDescription: _angular_core.InputSignal<string>;
1574
+ /** Where the brand block navigates. */
1575
+ readonly brandHref: _angular_core.InputSignal<string>;
1576
+ /** Ordered nav groups, already filtered to what this reader may open. */
1577
+ readonly navGroups: _angular_core.InputSignal<DashboardNavGroup[]>;
1578
+ /** Group id the `[chromeNavBefore]` content is placed in front of. */
1579
+ readonly navSlotBeforeGroupId: _angular_core.InputSignal<string | null>;
1580
+ /** Group id the `[chromeNavAfter]` content follows. */
1581
+ readonly navSlotAfterGroupId: _angular_core.InputSignal<string | null>;
1582
+ /** Aside behaviour. `icon` leaves a rail behind when collapsed. */
1583
+ readonly mode: _angular_core.InputSignal<AppShellMode>;
1584
+ /** Trailing-panel behaviour, for a product that projects `[chromeEnd]`. */
1585
+ readonly endMode: _angular_core.InputSignal<AppShellMode>;
1586
+ /** Covers the content column while a routed page resolves. */
1587
+ readonly pageLoading: _angular_core.InputSignal<boolean>;
1588
+ readonly toggleAriaLabel: _angular_core.InputSignal<string>;
1589
+ readonly menuAriaLabel: _angular_core.InputSignal<string>;
1590
+ readonly className: _angular_core.InputSignal<string>;
1591
+ private readonly layout;
1592
+ /**
1593
+ * Whether the aside is collapsed to its rail. For projected content that
1594
+ * has to follow it — a switcher pinned into the nav shrinks to its glyph
1595
+ * the same way the rows do.
1596
+ */
1597
+ collapsed(): boolean;
1598
+ /** Whether the trailing panel is open. */
1599
+ endOpen(): boolean;
1600
+ /** Collapse the aside to its rail. */
1601
+ closeSidenav(): void;
1602
+ /** Open the trailing panel. */
1603
+ openEnd(): void;
1604
+ /** Close the trailing panel. */
1605
+ closeEnd(): void;
1606
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DashboardChromeComponent, never>;
1607
+ 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>;
1608
+ }
1609
+
1610
+ 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
1611
  export type { ColumnsEmptyTracks, ContextSwitcherColumn, ContextSwitcherIconTone, ContextSwitcherOption, ContextSwitcherSelection, ContextSwitcherSublabelTone, DashboardNavChild, DashboardNavGroup, DashboardNavItem, DialogConfirmVariant, DialogHeaderTint, OnboardingStep, OnboardingSubstep, OnboardingSubstepToggle, SidebarNavChild, SidebarNavGroup, SidebarNavItem, SidebarNavLink, SidebarNavModel };