@magmonium/one 0.4.50 → 0.4.51

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": "@magmonium/one",
3
- "version": "0.4.50",
3
+ "version": "0.4.51",
4
4
  "description": "Magmonium One — Angular design-system primitives for mm Apps",
5
5
  "author": "magmonium",
6
6
  "license": "MIT",
@@ -4396,6 +4396,16 @@ export declare class SectionSearchComponent extends BaseTextInputComponent<Searc
4396
4396
  type BadgeVariant = 'saas' | 'status' | 'minimal' | 'default' | 'primary' | 'danger' | 'chip';
4397
4397
  type BadgePosition = 'static' | 'absolute' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
4398
4398
  type BadgeAnimation = 'pulse' | 'shimmer' | 'none';
4399
+ /**
4400
+ * A count worn as a Badge — the figure, and how to draw it. Narrower than
4401
+ * [BadgeVariant] on purpose: `status` and `minimal` are shapes rather than
4402
+ * pills and have no room for a number, and the remaining three are exactly what
4403
+ * a Button's own `badge` spells.
4404
+ */
4405
+ type BadgeCount = {
4406
+ count: number;
4407
+ variant?: 'default' | 'primary' | 'danger';
4408
+ };
4399
4409
  type Badge = Config & {
4400
4410
  variant?: BadgeVariant;
4401
4411
  icon?: string;
@@ -4812,7 +4822,7 @@ export declare class SectionFilterGroupComponent {
4812
4822
  readonly paddingX: import("@angular/core").InputSignal<boolean | undefined>;
4813
4823
  readonly paddingY: import("@angular/core").InputSignal<boolean | undefined>;
4814
4824
  readonly maxWidth: import("@angular/core").InputSignal<string | undefined>;
4815
- readonly align: import("@angular/core").InputSignal<"left" | "center" | "right" | undefined>;
4825
+ readonly align: import("@angular/core").InputSignal<"center" | "left" | "right" | undefined>;
4816
4826
  readonly config: import("@angular/core").InputSignal<SectionFilterGroupConfig | undefined>;
4817
4827
  /**
4818
4828
  * The whole group's selection, keyed by each Filter's `name` — one key per
@@ -4830,7 +4840,7 @@ export declare class SectionFilterGroupComponent {
4830
4840
  protected readonly resolvedPadding: import("@angular/core").Signal<boolean>;
4831
4841
  protected readonly resolvedPaddingX: import("@angular/core").Signal<boolean>;
4832
4842
  protected readonly resolvedPaddingY: import("@angular/core").Signal<boolean>;
4833
- protected readonly resolvedAlign: import("@angular/core").Signal<"left" | "center" | "right">;
4843
+ protected readonly resolvedAlign: import("@angular/core").Signal<"center" | "left" | "right">;
4834
4844
  protected readonly resolvedMaxWidth: import("@angular/core").Signal<string | undefined>;
4835
4845
  protected readonly noBorder: import("@angular/core").Signal<boolean>;
4836
4846
  /**
@@ -5009,7 +5019,7 @@ export declare class SectionStepperComponent implements OnDestroy {
5009
5019
  export declare class SectionBadgesComponent {
5010
5020
  readonly wrap: import("@angular/core").InputSignal<boolean>;
5011
5021
  readonly border: import("@angular/core").InputSignal<boolean>;
5012
- readonly align: import("@angular/core").InputSignal<"left" | "center" | "right">;
5022
+ readonly align: import("@angular/core").InputSignal<"center" | "left" | "right">;
5013
5023
  private readonly sectionContext;
5014
5024
  protected readonly hasBorder: import("@angular/core").Signal<boolean>;
5015
5025
  static ɵfac: i0.ɵɵFactoryDeclaration<SectionBadgesComponent, never>;
@@ -5126,7 +5136,7 @@ export declare class SectionToggleComponent<T extends SectionToggleItem = Sectio
5126
5136
  }
5127
5137
  export declare class SectionFooterComponent {
5128
5138
  readonly sticky: import("@angular/core").InputSignal<boolean>;
5129
- readonly align: import("@angular/core").InputSignal<"left" | "center" | "right">;
5139
+ readonly align: import("@angular/core").InputSignal<"center" | "left" | "right">;
5130
5140
  private readonly scrollSticky;
5131
5141
  protected readonly isSticky: import("@angular/core").Signal<boolean>;
5132
5142
  private readonly sectionContext;
@@ -5179,7 +5189,7 @@ export declare class SectionPaginationComponent {
5179
5189
  * Entries that are not positive numbers drop rather than throw.
5180
5190
  */
5181
5191
  readonly perPageOptions: import("@angular/core").InputSignal<string | undefined>;
5182
- readonly align: import("@angular/core").InputSignal<"left" | "center" | "right">;
5192
+ readonly align: import("@angular/core").InputSignal<"center" | "left" | "right">;
5183
5193
  readonly showPerPage: import("@angular/core").InputSignal<boolean>;
5184
5194
  /** Hides the band outright once everything fits one page. */
5185
5195
  readonly hideOnSinglePage: import("@angular/core").InputSignal<boolean>;
@@ -5517,7 +5527,7 @@ export declare class SectionComponent extends ConfigComponent<SectionConfig> {
5517
5527
  readonly align: import("@angular/core").InputSignal<SectionAlign | undefined>;
5518
5528
  readonly alignX: import("@angular/core").InputSignal<GridAlignX | undefined>;
5519
5529
  readonly alignY: import("@angular/core").InputSignal<GridAlignY | undefined>;
5520
- readonly size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
5530
+ readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | Size | undefined>;
5521
5531
  private readonly parentSize;
5522
5532
  readonly resolvedSize: import("@angular/core").Signal<Size>;
5523
5533
  protected readonly sizeLength: import("@angular/core").Signal<string>;
@@ -5643,6 +5653,29 @@ type Header = Config & {
5643
5653
  icon?: string;
5644
5654
  level?: HeaderLevel;
5645
5655
  };
5656
+ export declare class BadgeComponent extends ConfigComponent<Badge> {
5657
+ readonly subFolder = "badges";
5658
+ config: import("@angular/core").ModelSignal<Partial<Badge> | undefined>;
5659
+ protected readonly classes: import("@angular/core").Signal<string>;
5660
+ protected readonly iconConfig: import("@angular/core").Signal<{
5661
+ name: string;
5662
+ color: string;
5663
+ } | undefined>;
5664
+ static ɵfac: i0.ɵɵFactoryDeclaration<BadgeComponent, never>;
5665
+ static ɵcmp: i0.ɵɵComponentDeclaration<BadgeComponent, "m-badge", never, {
5666
+ "config": {
5667
+ "alias": "config";
5668
+ "required": false;
5669
+ "isSignal": true;
5670
+ };
5671
+ }, {
5672
+ "config": "configChange";
5673
+ }, never, ["*"], true, never>;
5674
+ }
5675
+ declare const getBadgeClasses: (config: Badge | undefined) => string;
5676
+ export declare const formatBadgeCount: (count: number | undefined, maxCount?: number) => string;
5677
+ export declare const shouldShowBadge: (count: number | undefined) => boolean;
5678
+ declare const formatCount: (count: number | undefined, maxCount?: number) => string;
5646
5679
  export declare class SectionHeaderComponent {
5647
5680
  readonly sticky: import("@angular/core").InputSignal<boolean>;
5648
5681
  readonly level: import("@angular/core").InputSignal<HeaderLevel>;
@@ -5657,8 +5690,9 @@ export declare class SectionHeaderComponent {
5657
5690
  readonly visibilityRule: import("@angular/core").InputSignal<((key: string, data?: unknown) => boolean) | undefined>;
5658
5691
  readonly disableRule: import("@angular/core").InputSignal<((key: string, data?: unknown) => boolean) | undefined>;
5659
5692
  readonly extraData: import("@angular/core").InputSignal<unknown>;
5660
- readonly align: import("@angular/core").InputSignal<"left" | "center" | "right" | undefined>;
5661
- readonly alignment: import("@angular/core").Signal<"left" | "center" | "right">;
5693
+ readonly align: import("@angular/core").InputSignal<"center" | "left" | "right" | undefined>;
5694
+ readonly alignment: import("@angular/core").Signal<"center" | "left" | "right">;
5695
+ readonly badge: import("@angular/core").InputSignal<BadgeCount | undefined>;
5662
5696
  readonly showBack: import("@angular/core").InputSignal<boolean>;
5663
5697
  readonly actionButton: import("@angular/core").InputSignal<string | undefined>;
5664
5698
  readonly actionLabel: import("@angular/core").InputSignal<string | undefined>;
@@ -5675,11 +5709,13 @@ export declare class SectionHeaderComponent {
5675
5709
  protected readonly sidepanel: import("@angular/core").Signal<boolean>;
5676
5710
  protected readonly noBorder: import("@angular/core").Signal<boolean>;
5677
5711
  protected readonly resolvedMaxWidth: import("@angular/core").Signal<string | undefined>;
5678
- protected readonly boxAlign: import("@angular/core").Signal<"left" | "center" | "right">;
5712
+ protected readonly boxAlign: import("@angular/core").Signal<"center" | "left" | "right">;
5679
5713
  protected readonly iconBox: import("@angular/core").Signal<string>;
5680
5714
  protected readonly isSticky: import("@angular/core").Signal<boolean>;
5681
5715
  protected readonly hasMenu: import("@angular/core").Signal<boolean>;
5682
5716
  protected readonly actionConfig: import("@angular/core").Signal<Button | undefined>;
5717
+ protected readonly badgeConfig: import("@angular/core").Signal<Badge | undefined>;
5718
+ protected readonly badgeText: import("@angular/core").Signal<string>;
5683
5719
  protected readonly accordion: import("@angular/core").Signal<import("@magmonium/one").SectionAccordionDirective | null>;
5684
5720
  protected readonly toggleIconName: import("@angular/core").Signal<string | undefined>;
5685
5721
  protected readonly toggleRotates: import("@angular/core").Signal<boolean>;
@@ -5757,6 +5793,11 @@ export declare class SectionHeaderComponent {
5757
5793
  "required": false;
5758
5794
  "isSignal": true;
5759
5795
  };
5796
+ "badge": {
5797
+ "alias": "badge";
5798
+ "required": false;
5799
+ "isSignal": true;
5800
+ };
5760
5801
  "showBack": {
5761
5802
  "alias": "showBack";
5762
5803
  "required": false;
@@ -5815,7 +5856,7 @@ export declare class SectionButtonGroupComponent extends ConfigComponent<Section
5815
5856
  readonly vertical: import("@angular/core").InputSignal<boolean | undefined>;
5816
5857
  readonly align: import("@angular/core").InputSignal<ConfigAlign>;
5817
5858
  readonly variant: import("@angular/core").InputSignal<"spaced" | "joined" | undefined>;
5818
- readonly size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
5859
+ readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | Size | undefined>;
5819
5860
  readonly fullWidth: import("@angular/core").InputSignal<boolean | undefined>;
5820
5861
  private readonly parentSize;
5821
5862
  readonly resolvedSize: import("@angular/core").Signal<Size>;
@@ -5823,7 +5864,7 @@ export declare class SectionButtonGroupComponent extends ConfigComponent<Section
5823
5864
  protected readonly resolvedFullWidth: import("@angular/core").Signal<boolean>;
5824
5865
  protected readonly resolvedVertical: import("@angular/core").Signal<boolean>;
5825
5866
  protected readonly resolvedVariant: import("@angular/core").Signal<"spaced" | "joined">;
5826
- protected readonly resolvedAlign: import("@angular/core").Signal<"left" | "center" | "right" | "top" | "bottom">;
5867
+ protected readonly resolvedAlign: import("@angular/core").Signal<"center" | "left" | "right" | "bottom" | "top">;
5827
5868
  static ɵfac: i0.ɵɵFactoryDeclaration<SectionButtonGroupComponent, never>;
5828
5869
  static ɵcmp: i0.ɵɵComponentDeclaration<SectionButtonGroupComponent, "m-section-button-group", never, {
5829
5870
  "vertical": {
@@ -8686,14 +8727,14 @@ export declare class SectionFormComponent<T extends object = Record<string, unkn
8686
8727
  readonly heightMode: import("@angular/core").InputSignal<"fixed" | "full" | undefined>;
8687
8728
  readonly maxHeight: import("@angular/core").InputSignal<string | number | undefined>;
8688
8729
  readonly height: import("@angular/core").InputSignal<string | number | undefined>;
8689
- readonly align: import("@angular/core").InputSignal<"left" | "center" | "right" | undefined>;
8730
+ readonly align: import("@angular/core").InputSignal<"center" | "left" | "right" | undefined>;
8690
8731
  readonly padding: import("@angular/core").InputSignal<string | number | undefined>;
8691
8732
  readonly paddingX: import("@angular/core").InputSignal<string | number | undefined>;
8692
8733
  readonly paddingY: import("@angular/core").InputSignal<string | number | undefined>;
8693
8734
  readonly margin: import("@angular/core").InputSignal<string | number | undefined>;
8694
8735
  readonly marginX: import("@angular/core").InputSignal<string | number | undefined>;
8695
8736
  readonly marginY: import("@angular/core").InputSignal<string | number | undefined>;
8696
- readonly size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
8737
+ readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | Size | undefined>;
8697
8738
  readonly autofocus: import("@angular/core").InputSignal<boolean>;
8698
8739
  data: import("@angular/core").InputSignal<T | undefined>;
8699
8740
  readonly dataChange: import("@angular/core").OutputEmitterRef<T>;
@@ -8738,7 +8779,7 @@ export declare class SectionFormComponent<T extends object = Record<string, unkn
8738
8779
  protected readonly handleSubmit: (event: Event) => void;
8739
8780
  readonly resolvedSize: import("@angular/core").Signal<Size>;
8740
8781
  protected readonly sizeLength: import("@angular/core").Signal<string | null>;
8741
- readonly resolvedAlign: import("@angular/core").Signal<"left" | "center" | "right">;
8782
+ readonly resolvedAlign: import("@angular/core").Signal<"center" | "left" | "right">;
8742
8783
  readonly resolvedVariant: import("@angular/core").Signal<string | undefined>;
8743
8784
  readonly resolvedMaxWidth: import("@angular/core").Signal<string | number | undefined>;
8744
8785
  private readonly resolvedPadding;
@@ -9631,29 +9672,6 @@ export declare class ComponentStepperComponent {
9631
9672
  "stepChange": "stepChange";
9632
9673
  }, never, never, true, never>;
9633
9674
  }
9634
- export declare class BadgeComponent extends ConfigComponent<Badge> {
9635
- readonly subFolder = "badges";
9636
- config: import("@angular/core").ModelSignal<Partial<Badge> | undefined>;
9637
- protected readonly classes: import("@angular/core").Signal<string>;
9638
- protected readonly iconConfig: import("@angular/core").Signal<{
9639
- name: string;
9640
- color: string;
9641
- } | undefined>;
9642
- static ɵfac: i0.ɵɵFactoryDeclaration<BadgeComponent, never>;
9643
- static ɵcmp: i0.ɵɵComponentDeclaration<BadgeComponent, "m-badge", never, {
9644
- "config": {
9645
- "alias": "config";
9646
- "required": false;
9647
- "isSignal": true;
9648
- };
9649
- }, {
9650
- "config": "configChange";
9651
- }, never, ["*"], true, never>;
9652
- }
9653
- declare const getBadgeClasses: (config: Badge | undefined) => string;
9654
- export declare const formatBadgeCount: (count: number | undefined, maxCount?: number) => string;
9655
- export declare const shouldShowBadge: (count: number | undefined) => boolean;
9656
- declare const formatCount: (count: number | undefined, maxCount?: number) => string;
9657
9675
  type CardVariant = 'flat' | 'outlined' | 'glass' | 'beautiful' | 'professional' | 'subtle' | 'no-border' | 'dashboard' | 'roundedBorder' | 'highlighted' | 'line';
9658
9676
  type CardSpacing = 'compact' | 'spacious';
9659
9677
  type CardPadding = 'none' | 'all' | 'x' | 'y' | 'left' | 'right' | 'up' | 'down';
@@ -11302,7 +11320,7 @@ export type DocAiPhase = 'idle' | 'asking' | 'question' | 'outline' | 'writing'
11302
11320
  */
11303
11321
  export declare class DocEditorComponent implements ControlValueAccessor {
11304
11322
  protected readonly groups: readonly import("@magmonium/one").DocToolbarGroup[];
11305
- protected readonly icons: Record<"code" | "link" | "table" | "list" | "strike" | "bold" | "heading" | "italic" | "quote", string>;
11323
+ protected readonly icons: Record<"code" | "link" | "table" | "strike" | "list" | "bold" | "heading" | "italic" | "quote", string>;
11306
11324
  protected readonly docActionKey: typeof docActionKey;
11307
11325
  private readonly translate;
11308
11326
  protected readonly value: import("@angular/core").WritableSignal<string>;
@@ -13291,6 +13309,18 @@ export declare class ConfirmComponent {
13291
13309
  }, {}, never, never, true, never>;
13292
13310
  }
13293
13311
  export declare function provideModalComponents(): EnvironmentProviders;
13312
+ /**
13313
+ * A count drawn beside an entry's label, as a Badge — the figure a Nav puts on
13314
+ * itself where something behind it wants counting (GLOSSARY.md NavCountSource).
13315
+ *
13316
+ * The same two keys a Button's `badge` spells, and `variant` is the caller's for
13317
+ * the same reason: what a count *means* — a tally, a warning — is a fact about
13318
+ * the count and not about the badge that draws it.
13319
+ */
13320
+ export type NavBadge = {
13321
+ count: number;
13322
+ variant?: 'default' | 'primary' | 'danger';
13323
+ };
13294
13324
  export type BreadcrumbTrail = {
13295
13325
  label: string;
13296
13326
  icon?: string;
@@ -13328,6 +13358,12 @@ export type BreadcrumbTrail = {
13328
13358
  color: string | null;
13329
13359
  name: string;
13330
13360
  };
13361
+ /**
13362
+ * The count the Nav this entry names wears, where one is registered for it —
13363
+ * stamped on the header, the trail and the menu rows alike, so one
13364
+ * registration words a Nav the same wherever it is drawn.
13365
+ */
13366
+ badge?: NavBadge;
13331
13367
  };
13332
13368
  export type BreadCrumb = {
13333
13369
  trail?: BreadcrumbTrail[];
@@ -13579,7 +13615,26 @@ interface NavVisibilityConfig {
13579
13615
  */
13580
13616
  navVisibleLoad?: (params: Record<string, string>) => void | Promise<void>;
13581
13617
  }
13582
- type NavWidgetEntry = Type<unknown> | NavWidgetConfig | NavMenuConfig | NavRowsConfig | NavInstanceConfig | NavVisibilityConfig;
13618
+ /**
13619
+ * What a Nav registers to answer *how much is behind it*, drawn as a Badge
13620
+ * beside its label (GLOSSARY.md NavCountSource, ADR 0043). Registered under
13621
+ * that Nav's own NavId beside whatever else it registers — the configs are not
13622
+ * exclusive, which is why every guard here tests for its own key rather than
13623
+ * for the absence of another's.
13624
+ */
13625
+ interface NavCountConfig {
13626
+ /**
13627
+ * The badge to draw beside the Nav's label, or `undefined` for none — a Nav
13628
+ * with nothing behind it wears no badge rather than one saying nothing.
13629
+ *
13630
+ * A signal rather than a function of the panel's parameters, unlike
13631
+ * `navInstance`: a count is a fact about the Nav itself, and it is worn in
13632
+ * panels this Nav is not the owner of — root's own row for it — where the
13633
+ * parameters the panel is drawn for are somebody else's.
13634
+ */
13635
+ navCount: Signal<NavBadge | undefined>;
13636
+ }
13637
+ type NavWidgetEntry = Type<unknown> | NavWidgetConfig | NavMenuConfig | NavRowsConfig | NavInstanceConfig | NavCountConfig | NavVisibilityConfig;
13583
13638
  /**
13584
13639
  * Where an app registers its search answer (ADR 0042): the element the host's
13585
13640
  * search panel mounts in place of its groups, with `query` bound, while the
@@ -13612,6 +13667,7 @@ type NavWidgetMap = Partial<Record<NavIdKey, NavWidgetEntry>> & {
13612
13667
  export declare function isNavMenuConfig(entry: NavWidgetEntry): entry is NavMenuConfig;
13613
13668
  export declare function isNavRowsConfig(entry: NavWidgetEntry): entry is NavRowsConfig;
13614
13669
  export declare function isNavInstanceConfig(entry: NavWidgetEntry): entry is NavInstanceConfig;
13670
+ export declare function isNavCountConfig(entry: NavWidgetEntry): entry is NavCountConfig;
13615
13671
  export declare function isNavVisibilityConfig(entry: NavWidgetEntry): entry is NavVisibilityConfig;
13616
13672
  /**
13617
13673
  * Multi-provided, and resolved **last-wins**: the library provides its own
@@ -13662,7 +13718,6 @@ export declare class FrameComponent {
13662
13718
  appNavId: string;
13663
13719
  slot: "main" | "side";
13664
13720
  }>;
13665
- keepPanelOnPathChange: import("@angular/core").Signal<boolean>;
13666
13721
  panelPushed: import("@angular/core").Signal<boolean>;
13667
13722
  navScrolledDown: import("@angular/core").Signal<boolean>;
13668
13723
  remoteWidgets: import("@angular/core").Signal<Record<string, NavWidgetRegistryEntry>>;
@@ -13692,6 +13747,7 @@ export declare class FrameComponent {
13692
13747
  hasMurl: import("@angular/core").Signal<boolean>;
13693
13748
  isNavOpened: import("@angular/core").Signal<boolean>;
13694
13749
  isMNavOpened: import("@angular/core").Signal<boolean>;
13750
+ isSideMenuOpen: import("@angular/core").Signal<boolean>;
13695
13751
  resolvedWidget: import("@angular/core").Signal<(import("@magmonium/one").NavWidgetConfig & {
13696
13752
  ceSelector?: string;
13697
13753
  }) | null>;
@@ -13794,7 +13850,6 @@ export declare class FrameComponent {
13794
13850
  appNavId: string;
13795
13851
  slot: "main" | "side";
13796
13852
  } | undefined;
13797
- keepPanelOnPathChange: boolean;
13798
13853
  panelPushed: boolean;
13799
13854
  navScrolledDown: boolean;
13800
13855
  remoteWidgets: Record<string, NavWidgetRegistryEntry>;
@@ -13981,7 +14036,10 @@ interface NavState {
13981
14036
  mounts: Record<string, RemoteMount>;
13982
14037
  /** Auxiliary segment names in the URL — which side apps are on screen (ADR 0038). */
13983
14038
  outlets: string[];
13984
- /** Panel opened by the menu icon with no Murl chosen — see ADR 0013. */
14039
+ /**
14040
+ * Panel held open without a Murl: by the menu icon, or by a navigation made
14041
+ * while it was up. Only the menu toggle clears it — see ADR 0013.
14042
+ */
13985
14043
  navOpenedByUser: boolean;
13986
14044
  /**
13987
14045
  * The Nav a Browse moved the panel onto — up, down or sideways — while the
@@ -14004,12 +14062,6 @@ interface NavState {
14004
14062
  appNavId: string;
14005
14063
  slot: AppSlot;
14006
14064
  } | undefined;
14007
- /**
14008
- * Next path settle should keep `navOpenedByUser`. Used by the AppLogo when
14009
- * the panel is already open — navigate home but leave the menu showing
14010
- * root's children.
14011
- */
14012
- keepPanelOnPathChange: boolean;
14013
14065
  /** Whether this store pushed the history entry the open panel sits on. */
14014
14066
  panelPushed: boolean;
14015
14067
  navScrolledDown: boolean;
@@ -14085,7 +14137,6 @@ export declare const NavStore: import("@angular/core").Type<{
14085
14137
  appNavId: string;
14086
14138
  slot: AppSlot;
14087
14139
  }>;
14088
- keepPanelOnPathChange: Signal<boolean>;
14089
14140
  panelPushed: Signal<boolean>;
14090
14141
  navScrolledDown: Signal<boolean>;
14091
14142
  remoteWidgets: Signal<Record<string, NavWidgetRegistryEntry>>;
@@ -14115,6 +14166,7 @@ export declare const NavStore: import("@angular/core").Type<{
14115
14166
  hasMurl: Signal<boolean>;
14116
14167
  isNavOpened: Signal<boolean>;
14117
14168
  isMNavOpened: Signal<boolean>;
14169
+ isSideMenuOpen: Signal<boolean>;
14118
14170
  resolvedWidget: Signal<(NavWidgetConfig & {
14119
14171
  ceSelector?: string;
14120
14172
  }) | null>;
@@ -14217,7 +14269,6 @@ export declare const NavStore: import("@angular/core").Type<{
14217
14269
  appNavId: string;
14218
14270
  slot: AppSlot;
14219
14271
  } | undefined;
14220
- keepPanelOnPathChange: boolean;
14221
14272
  panelPushed: boolean;
14222
14273
  navScrolledDown: boolean;
14223
14274
  remoteWidgets: Record<string, NavWidgetRegistryEntry>;
@@ -14577,7 +14628,6 @@ export declare class NavDetailsComponent {
14577
14628
  appNavId: string;
14578
14629
  slot: "main" | "side";
14579
14630
  }>;
14580
- keepPanelOnPathChange: import("@angular/core").Signal<boolean>;
14581
14631
  panelPushed: import("@angular/core").Signal<boolean>;
14582
14632
  navScrolledDown: import("@angular/core").Signal<boolean>;
14583
14633
  remoteWidgets: import("@angular/core").Signal<Record<string, NavWidgetRegistryEntry>>;
@@ -14607,6 +14657,7 @@ export declare class NavDetailsComponent {
14607
14657
  hasMurl: import("@angular/core").Signal<boolean>;
14608
14658
  isNavOpened: import("@angular/core").Signal<boolean>;
14609
14659
  isMNavOpened: import("@angular/core").Signal<boolean>;
14660
+ isSideMenuOpen: import("@angular/core").Signal<boolean>;
14610
14661
  resolvedWidget: import("@angular/core").Signal<(import("@magmonium/one").NavWidgetConfig & {
14611
14662
  ceSelector?: string;
14612
14663
  }) | null>;
@@ -14709,7 +14760,6 @@ export declare class NavDetailsComponent {
14709
14760
  appNavId: string;
14710
14761
  slot: "main" | "side";
14711
14762
  } | undefined;
14712
- keepPanelOnPathChange: boolean;
14713
14763
  panelPushed: boolean;
14714
14764
  navScrolledDown: boolean;
14715
14765
  remoteWidgets: Record<string, NavWidgetRegistryEntry>;
@@ -14790,6 +14840,11 @@ export declare class NavMenuComponent {
14790
14840
  navList: import("@angular/core").Signal<BreadcrumbTrail[] | undefined>;
14791
14841
  /** Looks inside the row's Nav without following it (GLOSSARY.md Browse). */
14792
14842
  browse: (item: BreadcrumbTrail) => void;
14843
+ /**
14844
+ * The `99+` ceiling is the badge's own, the same one a Button reads: a row and
14845
+ * an icon cannot disagree about where a count stops being a number.
14846
+ */
14847
+ protected readonly formatBadgeCount: (count: number, max?: number) => string;
14793
14848
  rows: import("@angular/core").Signal<ListItem[]>;
14794
14849
  static ɵfac: i0.ɵɵFactoryDeclaration<NavMenuComponent, never>;
14795
14850
  static ɵcmp: i0.ɵɵComponentDeclaration<NavMenuComponent, "m-nav-menu", never, {
@@ -14838,7 +14893,6 @@ export declare class NavHeaderComponent {
14838
14893
  appNavId: string;
14839
14894
  slot: "main" | "side";
14840
14895
  }>;
14841
- keepPanelOnPathChange: import("@angular/core").Signal<boolean>;
14842
14896
  panelPushed: import("@angular/core").Signal<boolean>;
14843
14897
  navScrolledDown: import("@angular/core").Signal<boolean>;
14844
14898
  remoteWidgets: import("@angular/core").Signal<Record<string, NavWidgetRegistryEntry>>;
@@ -14868,6 +14922,7 @@ export declare class NavHeaderComponent {
14868
14922
  hasMurl: import("@angular/core").Signal<boolean>;
14869
14923
  isNavOpened: import("@angular/core").Signal<boolean>;
14870
14924
  isMNavOpened: import("@angular/core").Signal<boolean>;
14925
+ isSideMenuOpen: import("@angular/core").Signal<boolean>;
14871
14926
  resolvedWidget: import("@angular/core").Signal<(import("@magmonium/one").NavWidgetConfig & {
14872
14927
  ceSelector?: string;
14873
14928
  }) | null>;
@@ -14970,7 +15025,6 @@ export declare class NavHeaderComponent {
14970
15025
  appNavId: string;
14971
15026
  slot: "main" | "side";
14972
15027
  } | undefined;
14973
- keepPanelOnPathChange: boolean;
14974
15028
  panelPushed: boolean;
14975
15029
  navScrolledDown: boolean;
14976
15030
  remoteWidgets: Record<string, NavWidgetRegistryEntry>;
@@ -16986,4 +17040,4 @@ export declare const toggleUid: (audience: Audience, uid: string) => Audience;
16986
17040
  export declare const toggleGroup: (audience: Audience, groupId: string) => Audience;
16987
17041
  /** How many Users and Groups an Audience names. */
16988
17042
  export declare const pickCount: (audience: Audience) => number;
16989
- export type { Accordion, AccordionGroup, AccordionVariant, AppCardData, AppCardInputs, AppCardVariant, AppLogoTone, AppLogoVariant, AppManifest, AppTileData, AssetOption, Audience, AudienceLevel, AudienceMember, AudiencePicker, AuthResult, Badge, BadgePosition, BadgeVariant, Button, ButtonGroup, CellChangeEvent, CellClickEvent, ColBreakpoint, ColSpan, ColorPallet, ColumnDef, Comment, CommentItem, Config, ContextMenu, ContextMenuEvent, Cursor, CustomIcon, DragListReorder, Draggable, DraggableState, FileUploadConfig, FileUploadEvent, FilterGroupContext, FilterGroupMember, FilterOption, FilterPanel, FilterPanelIo, FilterRangeMode, FilterSelectionMap, FilterValue, FilterVariant, FilteredTreeGrid, FlatTreeGridRow, FlexAlign, FlexAlignSelf, FlexConfig, FlexDirection, FlexItemConfig, FlexJustify, FlexVariant, GridAlignX, GridAlignY, GroupActionEvent, GroupDropEvent, GroupKind, GroupMenuEvent, Header, HeaderLevel, Icon, KeyValueVariant, LabelSegment, ListConfig, ListContext, ListItem, ListOrientation, ListVariant, MenuItem, MoneySystem, NavInstanceConfig, NavMenuConfig, NavRowsConfig, NavVisibilityConfig, NavVisibleAnswer, NavWidgetConfig, NavWidgetEntry, NavWidgetMap, OverlayWidgetLoader, OverlayWidgetMap, PageChangeEvent, Pagination, PaginationWindow, ResolvedUserTab, RowDropEvent, SearchChangeEvent, SectionAccordion, SectionAccordionGroup, SectionAccordionGroupContext, SectionAccordionRef, SectionButtonGroupConfig, SectionFilterGroupConfig, SectionHero, SectionHeroVariant, SectionTableAlign, SectionTableColumn, SectionTableConfig, SectionTableDataType, SectionTableSort, SectionTableSortDirection, SectionTableVariant, SectionToggleItem, SectionToggleItemContext, SelectionAction, SelectionActionEvent, SelectionChangeEvent, SelectorConfig, SharingClient, SharingGroup, SocketMessage, Sort, SortChange, SortChangeEvent, SortOption, SortOrder, SourceAudience, SpacingInward, SqueezeMode, StatAlign, StatCornerEdge, StatCornerPosition, StatCornerSide, StatSurface, StatVariant, TabGroup, TableConfig, TableFilterCondition, TableFilterDef, TableGroup, TextOrNumberInput, Timeline, TimelineItem, TreeGridCellClickEvent, TreeGridLoadChildrenEvent, TreeGridRow, TreeGridRowSelectEvent, TreeGridToggleEvent, User };
17043
+ export type { Accordion, AccordionGroup, AccordionVariant, AppCardData, AppCardInputs, AppCardVariant, AppLogoTone, AppLogoVariant, AppManifest, AppTileData, AssetOption, Audience, AudienceLevel, AudienceMember, AudiencePicker, AuthResult, Badge, BadgeCount, BadgePosition, BadgeVariant, Button, ButtonGroup, CellChangeEvent, CellClickEvent, ColBreakpoint, ColSpan, ColorPallet, ColumnDef, Comment, CommentItem, Config, ContextMenu, ContextMenuEvent, Cursor, CustomIcon, DragListReorder, Draggable, DraggableState, FileUploadConfig, FileUploadEvent, FilterGroupContext, FilterGroupMember, FilterOption, FilterPanel, FilterPanelIo, FilterRangeMode, FilterSelectionMap, FilterValue, FilterVariant, FilteredTreeGrid, FlatTreeGridRow, FlexAlign, FlexAlignSelf, FlexConfig, FlexDirection, FlexItemConfig, FlexJustify, FlexVariant, GridAlignX, GridAlignY, GroupActionEvent, GroupDropEvent, GroupKind, GroupMenuEvent, Header, HeaderLevel, Icon, KeyValueVariant, LabelSegment, ListConfig, ListContext, ListItem, ListOrientation, ListVariant, MenuItem, MoneySystem, NavCountConfig, NavInstanceConfig, NavMenuConfig, NavRowsConfig, NavVisibilityConfig, NavVisibleAnswer, NavWidgetConfig, NavWidgetEntry, NavWidgetMap, OverlayWidgetLoader, OverlayWidgetMap, PageChangeEvent, Pagination, PaginationWindow, ResolvedUserTab, RowDropEvent, SearchChangeEvent, SectionAccordion, SectionAccordionGroup, SectionAccordionGroupContext, SectionAccordionRef, SectionButtonGroupConfig, SectionFilterGroupConfig, SectionHero, SectionHeroVariant, SectionTableAlign, SectionTableColumn, SectionTableConfig, SectionTableDataType, SectionTableSort, SectionTableSortDirection, SectionTableVariant, SectionToggleItem, SectionToggleItemContext, SelectionAction, SelectionActionEvent, SelectionChangeEvent, SelectorConfig, SharingClient, SharingGroup, SocketMessage, Sort, SortChange, SortChangeEvent, SortOption, SortOrder, SourceAudience, SpacingInward, SqueezeMode, StatAlign, StatCornerEdge, StatCornerPosition, StatCornerSide, StatSurface, StatVariant, TabGroup, TableConfig, TableFilterCondition, TableFilterDef, TableGroup, TextOrNumberInput, Timeline, TimelineItem, TreeGridCellClickEvent, TreeGridLoadChildrenEvent, TreeGridRow, TreeGridRowSelectEvent, TreeGridToggleEvent, User };