@magmonium/one 0.4.50 → 0.4.52

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 (62) hide show
  1. package/assets/docs/en/app-release.md +14 -7
  2. package/fesm2022/{magmonium-one-attribute-value-CSl5Xeq1.mjs → magmonium-one-attribute-value-BobQXKUK.mjs} +3 -3
  3. package/fesm2022/{magmonium-one-attribute-value-CSl5Xeq1.mjs.map → magmonium-one-attribute-value-BobQXKUK.mjs.map} +1 -1
  4. package/fesm2022/{magmonium-one-base-checkbox-BqCPBI1d.mjs → magmonium-one-base-checkbox-bwMjlhHR.mjs} +2 -2
  5. package/fesm2022/{magmonium-one-base-checkbox-BqCPBI1d.mjs.map → magmonium-one-base-checkbox-bwMjlhHR.mjs.map} +1 -1
  6. package/fesm2022/{magmonium-one-base-dropdown-Dxo8Yd62.mjs → magmonium-one-base-dropdown-7XYsiJBX.mjs} +12 -12
  7. package/fesm2022/{magmonium-one-base-dropdown-Dxo8Yd62.mjs.map → magmonium-one-base-dropdown-7XYsiJBX.mjs.map} +1 -1
  8. package/fesm2022/{magmonium-one-base-input-CsVND89n.mjs → magmonium-one-base-input-KRWQalNW.mjs} +2 -2
  9. package/fesm2022/{magmonium-one-base-input-CsVND89n.mjs.map → magmonium-one-base-input-KRWQalNW.mjs.map} +1 -1
  10. package/fesm2022/{magmonium-one-base-text-CWf7J75v.mjs → magmonium-one-base-text-HyEol70U.mjs} +2 -2
  11. package/fesm2022/{magmonium-one-base-text-CWf7J75v.mjs.map → magmonium-one-base-text-HyEol70U.mjs.map} +1 -1
  12. package/fesm2022/{magmonium-one-button-CJ1Gaaw-.mjs → magmonium-one-button-B1KCA8KO.mjs} +7 -7
  13. package/fesm2022/{magmonium-one-button-CJ1Gaaw-.mjs.map → magmonium-one-button-B1KCA8KO.mjs.map} +1 -1
  14. package/fesm2022/{magmonium-one-checkbox-CS83TVYG.mjs → magmonium-one-checkbox-CbEdjmtz.mjs} +5 -5
  15. package/fesm2022/{magmonium-one-checkbox-CS83TVYG.mjs.map → magmonium-one-checkbox-CbEdjmtz.mjs.map} +1 -1
  16. package/fesm2022/{magmonium-one-color-utl-td5Lij8L.mjs → magmonium-one-color-utl-Bd80JrEQ.mjs} +2 -2
  17. package/fesm2022/{magmonium-one-color-utl-td5Lij8L.mjs.map → magmonium-one-color-utl-Bd80JrEQ.mjs.map} +1 -1
  18. package/fesm2022/{magmonium-one-directives-O1JyFBc3.mjs → magmonium-one-directives-C_i3gUFT.mjs} +4 -4
  19. package/fesm2022/{magmonium-one-directives-O1JyFBc3.mjs.map → magmonium-one-directives-C_i3gUFT.mjs.map} +1 -1
  20. package/fesm2022/{magmonium-one-group-CYIO2BE-.mjs → magmonium-one-group-C7alQqSj.mjs} +7 -7
  21. package/fesm2022/{magmonium-one-group-CYIO2BE-.mjs.map → magmonium-one-group-C7alQqSj.mjs.map} +1 -1
  22. package/fesm2022/{magmonium-one-header-7MmiF2rG.mjs → magmonium-one-header-CckG0DHr.mjs} +4 -4
  23. package/fesm2022/{magmonium-one-header-7MmiF2rG.mjs.map → magmonium-one-header-CckG0DHr.mjs.map} +1 -1
  24. package/fesm2022/{magmonium-one-icon-DR7LgBc3.mjs → magmonium-one-icon-dAR6gd-q.mjs} +4 -4
  25. package/fesm2022/{magmonium-one-icon-DR7LgBc3.mjs.map → magmonium-one-icon-dAR6gd-q.mjs.map} +1 -1
  26. package/fesm2022/{magmonium-one-image-editor-CkPeheGY.mjs → magmonium-one-image-editor-DHlktZ6z.mjs} +4 -4
  27. package/fesm2022/{magmonium-one-image-editor-CkPeheGY.mjs.map → magmonium-one-image-editor-DHlktZ6z.mjs.map} +1 -1
  28. package/fesm2022/{magmonium-one-label-B2Rtuiyg.mjs → magmonium-one-label-B95NhEzQ.mjs} +2 -2
  29. package/fesm2022/{magmonium-one-label-B2Rtuiyg.mjs.map → magmonium-one-label-B95NhEzQ.mjs.map} +1 -1
  30. package/fesm2022/{magmonium-one-m-ref-X9KgVe86.mjs → magmonium-one-m-ref-BdP7Kzhk.mjs} +2 -2
  31. package/fesm2022/{magmonium-one-m-ref-X9KgVe86.mjs.map → magmonium-one-m-ref-BdP7Kzhk.mjs.map} +1 -1
  32. package/fesm2022/{magmonium-one-menu-Dstqv7P7.mjs → magmonium-one-menu-DmZJi88Y.mjs} +8 -8
  33. package/fesm2022/{magmonium-one-menu-Dstqv7P7.mjs.map → magmonium-one-menu-DmZJi88Y.mjs.map} +1 -1
  34. package/fesm2022/{magmonium-one-multi-range-OzTdXSHR.mjs → magmonium-one-multi-range-BnWtK-O0.mjs} +3 -3
  35. package/fesm2022/{magmonium-one-multi-range-OzTdXSHR.mjs.map → magmonium-one-multi-range-BnWtK-O0.mjs.map} +1 -1
  36. package/fesm2022/{magmonium-one-options-asset-BlrhLckD.mjs → magmonium-one-options-asset-By4-vPVk.mjs} +2 -2
  37. package/fesm2022/{magmonium-one-options-asset-BlrhLckD.mjs.map → magmonium-one-options-asset-By4-vPVk.mjs.map} +1 -1
  38. package/fesm2022/{magmonium-one-otp-CkQohg0H.mjs → magmonium-one-otp-BOiv-9eT.mjs} +5 -5
  39. package/fesm2022/{magmonium-one-otp-CkQohg0H.mjs.map → magmonium-one-otp-BOiv-9eT.mjs.map} +1 -1
  40. package/fesm2022/{magmonium-one-password-CLhWaUXK.mjs → magmonium-one-password-Bsv1wUIJ.mjs} +6 -6
  41. package/fesm2022/{magmonium-one-password-CLhWaUXK.mjs.map → magmonium-one-password-Bsv1wUIJ.mjs.map} +1 -1
  42. package/fesm2022/{magmonium-one-radio-dZL0E4k_.mjs → magmonium-one-radio-BsQv0Wof.mjs} +3 -3
  43. package/fesm2022/{magmonium-one-radio-dZL0E4k_.mjs.map → magmonium-one-radio-BsQv0Wof.mjs.map} +1 -1
  44. package/fesm2022/{magmonium-one-range-DLu5PhUN.mjs → magmonium-one-range-DPR659yG.mjs} +4 -4
  45. package/fesm2022/{magmonium-one-range-DLu5PhUN.mjs.map → magmonium-one-range-DPR659yG.mjs.map} +1 -1
  46. package/fesm2022/{magmonium-one-selector-GGFfBf2O.mjs → magmonium-one-selector-CXZMCqmO.mjs} +4 -4
  47. package/fesm2022/{magmonium-one-selector-GGFfBf2O.mjs.map → magmonium-one-selector-CXZMCqmO.mjs.map} +1 -1
  48. package/fesm2022/{magmonium-one-size-converter-BalJd7VH.mjs → magmonium-one-size-converter-BOLtxL8d.mjs} +6 -3
  49. package/fesm2022/magmonium-one-size-converter-BOLtxL8d.mjs.map +1 -0
  50. package/fesm2022/{magmonium-one-text-BPThK6-y.mjs → magmonium-one-text-Bo4XPBXB.mjs} +6 -6
  51. package/fesm2022/{magmonium-one-text-BPThK6-y.mjs.map → magmonium-one-text-Bo4XPBXB.mjs.map} +1 -1
  52. package/fesm2022/{magmonium-one-text-output-Cg2dT_U_.mjs → magmonium-one-text-output-Dkx0i1iu.mjs} +4 -4
  53. package/fesm2022/{magmonium-one-text-output-Cg2dT_U_.mjs.map → magmonium-one-text-output-Dkx0i1iu.mjs.map} +1 -1
  54. package/fesm2022/magmonium-one-theme-Ce9i3H3R.mjs +1 -0
  55. package/fesm2022/{magmonium-one-toggle-DRG14zhR.mjs → magmonium-one-toggle-C5-GwMSQ.mjs} +3 -3
  56. package/fesm2022/{magmonium-one-toggle-DRG14zhR.mjs.map → magmonium-one-toggle-C5-GwMSQ.mjs.map} +1 -1
  57. package/fesm2022/magmonium-one.mjs +257 -106
  58. package/fesm2022/magmonium-one.mjs.map +1 -1
  59. package/package.json +1 -1
  60. package/types/magmonium-one.d.ts +135 -64
  61. package/fesm2022/magmonium-one-size-converter-BalJd7VH.mjs.map +0 -1
  62. package/fesm2022/magmonium-one-theme-CYT4pn5X.mjs +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magmonium/one",
3
- "version": "0.4.50",
3
+ "version": "0.4.52",
4
4
  "description": "Magmonium One — Angular design-system primitives for mm Apps",
5
5
  "author": "magmonium",
6
6
  "license": "MIT",
@@ -79,7 +79,8 @@ export declare class HttpService {
79
79
  setAssetUrl(url: string): void;
80
80
  setOneAssetUrl(url: string): void;
81
81
  setPublicUrl(url: string): void;
82
- blob(url: string): Observable<Blob>;
82
+ /** `headers` ride the request — a Plugin's bundle names its host this way. */
83
+ blob(url: string, headers?: Record<string, string>): Observable<Blob>;
83
84
  /** A whole url read as text — what a document fetched from a Remote needs. */
84
85
  text(url: string): Observable<string>;
85
86
  wc<T>(link: string, filePath: string[]): Observable<T>;
@@ -4396,6 +4397,16 @@ export declare class SectionSearchComponent extends BaseTextInputComponent<Searc
4396
4397
  type BadgeVariant = 'saas' | 'status' | 'minimal' | 'default' | 'primary' | 'danger' | 'chip';
4397
4398
  type BadgePosition = 'static' | 'absolute' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
4398
4399
  type BadgeAnimation = 'pulse' | 'shimmer' | 'none';
4400
+ /**
4401
+ * A count worn as a Badge — the figure, and how to draw it. Narrower than
4402
+ * [BadgeVariant] on purpose: `status` and `minimal` are shapes rather than
4403
+ * pills and have no room for a number, and the remaining three are exactly what
4404
+ * a Button's own `badge` spells.
4405
+ */
4406
+ type BadgeCount = {
4407
+ count: number;
4408
+ variant?: 'default' | 'primary' | 'danger';
4409
+ };
4399
4410
  type Badge = Config & {
4400
4411
  variant?: BadgeVariant;
4401
4412
  icon?: string;
@@ -4812,7 +4823,7 @@ export declare class SectionFilterGroupComponent {
4812
4823
  readonly paddingX: import("@angular/core").InputSignal<boolean | undefined>;
4813
4824
  readonly paddingY: import("@angular/core").InputSignal<boolean | undefined>;
4814
4825
  readonly maxWidth: import("@angular/core").InputSignal<string | undefined>;
4815
- readonly align: import("@angular/core").InputSignal<"left" | "center" | "right" | undefined>;
4826
+ readonly align: import("@angular/core").InputSignal<"center" | "left" | "right" | undefined>;
4816
4827
  readonly config: import("@angular/core").InputSignal<SectionFilterGroupConfig | undefined>;
4817
4828
  /**
4818
4829
  * The whole group's selection, keyed by each Filter's `name` — one key per
@@ -4830,7 +4841,7 @@ export declare class SectionFilterGroupComponent {
4830
4841
  protected readonly resolvedPadding: import("@angular/core").Signal<boolean>;
4831
4842
  protected readonly resolvedPaddingX: import("@angular/core").Signal<boolean>;
4832
4843
  protected readonly resolvedPaddingY: import("@angular/core").Signal<boolean>;
4833
- protected readonly resolvedAlign: import("@angular/core").Signal<"left" | "center" | "right">;
4844
+ protected readonly resolvedAlign: import("@angular/core").Signal<"center" | "left" | "right">;
4834
4845
  protected readonly resolvedMaxWidth: import("@angular/core").Signal<string | undefined>;
4835
4846
  protected readonly noBorder: import("@angular/core").Signal<boolean>;
4836
4847
  /**
@@ -5009,7 +5020,7 @@ export declare class SectionStepperComponent implements OnDestroy {
5009
5020
  export declare class SectionBadgesComponent {
5010
5021
  readonly wrap: import("@angular/core").InputSignal<boolean>;
5011
5022
  readonly border: import("@angular/core").InputSignal<boolean>;
5012
- readonly align: import("@angular/core").InputSignal<"left" | "center" | "right">;
5023
+ readonly align: import("@angular/core").InputSignal<"center" | "left" | "right">;
5013
5024
  private readonly sectionContext;
5014
5025
  protected readonly hasBorder: import("@angular/core").Signal<boolean>;
5015
5026
  static ɵfac: i0.ɵɵFactoryDeclaration<SectionBadgesComponent, never>;
@@ -5126,7 +5137,7 @@ export declare class SectionToggleComponent<T extends SectionToggleItem = Sectio
5126
5137
  }
5127
5138
  export declare class SectionFooterComponent {
5128
5139
  readonly sticky: import("@angular/core").InputSignal<boolean>;
5129
- readonly align: import("@angular/core").InputSignal<"left" | "center" | "right">;
5140
+ readonly align: import("@angular/core").InputSignal<"center" | "left" | "right">;
5130
5141
  private readonly scrollSticky;
5131
5142
  protected readonly isSticky: import("@angular/core").Signal<boolean>;
5132
5143
  private readonly sectionContext;
@@ -5179,7 +5190,7 @@ export declare class SectionPaginationComponent {
5179
5190
  * Entries that are not positive numbers drop rather than throw.
5180
5191
  */
5181
5192
  readonly perPageOptions: import("@angular/core").InputSignal<string | undefined>;
5182
- readonly align: import("@angular/core").InputSignal<"left" | "center" | "right">;
5193
+ readonly align: import("@angular/core").InputSignal<"center" | "left" | "right">;
5183
5194
  readonly showPerPage: import("@angular/core").InputSignal<boolean>;
5184
5195
  /** Hides the band outright once everything fits one page. */
5185
5196
  readonly hideOnSinglePage: import("@angular/core").InputSignal<boolean>;
@@ -5517,7 +5528,7 @@ export declare class SectionComponent extends ConfigComponent<SectionConfig> {
5517
5528
  readonly align: import("@angular/core").InputSignal<SectionAlign | undefined>;
5518
5529
  readonly alignX: import("@angular/core").InputSignal<GridAlignX | undefined>;
5519
5530
  readonly alignY: import("@angular/core").InputSignal<GridAlignY | undefined>;
5520
- readonly size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
5531
+ readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | Size | undefined>;
5521
5532
  private readonly parentSize;
5522
5533
  readonly resolvedSize: import("@angular/core").Signal<Size>;
5523
5534
  protected readonly sizeLength: import("@angular/core").Signal<string>;
@@ -5643,6 +5654,29 @@ type Header = Config & {
5643
5654
  icon?: string;
5644
5655
  level?: HeaderLevel;
5645
5656
  };
5657
+ export declare class BadgeComponent extends ConfigComponent<Badge> {
5658
+ readonly subFolder = "badges";
5659
+ config: import("@angular/core").ModelSignal<Partial<Badge> | undefined>;
5660
+ protected readonly classes: import("@angular/core").Signal<string>;
5661
+ protected readonly iconConfig: import("@angular/core").Signal<{
5662
+ name: string;
5663
+ color: string;
5664
+ } | undefined>;
5665
+ static ɵfac: i0.ɵɵFactoryDeclaration<BadgeComponent, never>;
5666
+ static ɵcmp: i0.ɵɵComponentDeclaration<BadgeComponent, "m-badge", never, {
5667
+ "config": {
5668
+ "alias": "config";
5669
+ "required": false;
5670
+ "isSignal": true;
5671
+ };
5672
+ }, {
5673
+ "config": "configChange";
5674
+ }, never, ["*"], true, never>;
5675
+ }
5676
+ declare const getBadgeClasses: (config: Badge | undefined) => string;
5677
+ export declare const formatBadgeCount: (count: number | undefined, maxCount?: number) => string;
5678
+ export declare const shouldShowBadge: (count: number | undefined) => boolean;
5679
+ declare const formatCount: (count: number | undefined, maxCount?: number) => string;
5646
5680
  export declare class SectionHeaderComponent {
5647
5681
  readonly sticky: import("@angular/core").InputSignal<boolean>;
5648
5682
  readonly level: import("@angular/core").InputSignal<HeaderLevel>;
@@ -5657,8 +5691,9 @@ export declare class SectionHeaderComponent {
5657
5691
  readonly visibilityRule: import("@angular/core").InputSignal<((key: string, data?: unknown) => boolean) | undefined>;
5658
5692
  readonly disableRule: import("@angular/core").InputSignal<((key: string, data?: unknown) => boolean) | undefined>;
5659
5693
  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">;
5694
+ readonly align: import("@angular/core").InputSignal<"center" | "left" | "right" | undefined>;
5695
+ readonly alignment: import("@angular/core").Signal<"center" | "left" | "right">;
5696
+ readonly badge: import("@angular/core").InputSignal<BadgeCount | undefined>;
5662
5697
  readonly showBack: import("@angular/core").InputSignal<boolean>;
5663
5698
  readonly actionButton: import("@angular/core").InputSignal<string | undefined>;
5664
5699
  readonly actionLabel: import("@angular/core").InputSignal<string | undefined>;
@@ -5675,11 +5710,13 @@ export declare class SectionHeaderComponent {
5675
5710
  protected readonly sidepanel: import("@angular/core").Signal<boolean>;
5676
5711
  protected readonly noBorder: import("@angular/core").Signal<boolean>;
5677
5712
  protected readonly resolvedMaxWidth: import("@angular/core").Signal<string | undefined>;
5678
- protected readonly boxAlign: import("@angular/core").Signal<"left" | "center" | "right">;
5713
+ protected readonly boxAlign: import("@angular/core").Signal<"center" | "left" | "right">;
5679
5714
  protected readonly iconBox: import("@angular/core").Signal<string>;
5680
5715
  protected readonly isSticky: import("@angular/core").Signal<boolean>;
5681
5716
  protected readonly hasMenu: import("@angular/core").Signal<boolean>;
5682
5717
  protected readonly actionConfig: import("@angular/core").Signal<Button | undefined>;
5718
+ protected readonly badgeConfig: import("@angular/core").Signal<Badge | undefined>;
5719
+ protected readonly badgeText: import("@angular/core").Signal<string>;
5683
5720
  protected readonly accordion: import("@angular/core").Signal<import("@magmonium/one").SectionAccordionDirective | null>;
5684
5721
  protected readonly toggleIconName: import("@angular/core").Signal<string | undefined>;
5685
5722
  protected readonly toggleRotates: import("@angular/core").Signal<boolean>;
@@ -5757,6 +5794,11 @@ export declare class SectionHeaderComponent {
5757
5794
  "required": false;
5758
5795
  "isSignal": true;
5759
5796
  };
5797
+ "badge": {
5798
+ "alias": "badge";
5799
+ "required": false;
5800
+ "isSignal": true;
5801
+ };
5760
5802
  "showBack": {
5761
5803
  "alias": "showBack";
5762
5804
  "required": false;
@@ -5815,7 +5857,7 @@ export declare class SectionButtonGroupComponent extends ConfigComponent<Section
5815
5857
  readonly vertical: import("@angular/core").InputSignal<boolean | undefined>;
5816
5858
  readonly align: import("@angular/core").InputSignal<ConfigAlign>;
5817
5859
  readonly variant: import("@angular/core").InputSignal<"spaced" | "joined" | undefined>;
5818
- readonly size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
5860
+ readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | Size | undefined>;
5819
5861
  readonly fullWidth: import("@angular/core").InputSignal<boolean | undefined>;
5820
5862
  private readonly parentSize;
5821
5863
  readonly resolvedSize: import("@angular/core").Signal<Size>;
@@ -5823,7 +5865,7 @@ export declare class SectionButtonGroupComponent extends ConfigComponent<Section
5823
5865
  protected readonly resolvedFullWidth: import("@angular/core").Signal<boolean>;
5824
5866
  protected readonly resolvedVertical: import("@angular/core").Signal<boolean>;
5825
5867
  protected readonly resolvedVariant: import("@angular/core").Signal<"spaced" | "joined">;
5826
- protected readonly resolvedAlign: import("@angular/core").Signal<"left" | "center" | "right" | "top" | "bottom">;
5868
+ protected readonly resolvedAlign: import("@angular/core").Signal<"center" | "left" | "right" | "bottom" | "top">;
5827
5869
  static ɵfac: i0.ɵɵFactoryDeclaration<SectionButtonGroupComponent, never>;
5828
5870
  static ɵcmp: i0.ɵɵComponentDeclaration<SectionButtonGroupComponent, "m-section-button-group", never, {
5829
5871
  "vertical": {
@@ -8686,14 +8728,14 @@ export declare class SectionFormComponent<T extends object = Record<string, unkn
8686
8728
  readonly heightMode: import("@angular/core").InputSignal<"fixed" | "full" | undefined>;
8687
8729
  readonly maxHeight: import("@angular/core").InputSignal<string | number | undefined>;
8688
8730
  readonly height: import("@angular/core").InputSignal<string | number | undefined>;
8689
- readonly align: import("@angular/core").InputSignal<"left" | "center" | "right" | undefined>;
8731
+ readonly align: import("@angular/core").InputSignal<"center" | "left" | "right" | undefined>;
8690
8732
  readonly padding: import("@angular/core").InputSignal<string | number | undefined>;
8691
8733
  readonly paddingX: import("@angular/core").InputSignal<string | number | undefined>;
8692
8734
  readonly paddingY: import("@angular/core").InputSignal<string | number | undefined>;
8693
8735
  readonly margin: import("@angular/core").InputSignal<string | number | undefined>;
8694
8736
  readonly marginX: import("@angular/core").InputSignal<string | number | undefined>;
8695
8737
  readonly marginY: import("@angular/core").InputSignal<string | number | undefined>;
8696
- readonly size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
8738
+ readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | Size | undefined>;
8697
8739
  readonly autofocus: import("@angular/core").InputSignal<boolean>;
8698
8740
  data: import("@angular/core").InputSignal<T | undefined>;
8699
8741
  readonly dataChange: import("@angular/core").OutputEmitterRef<T>;
@@ -8738,7 +8780,7 @@ export declare class SectionFormComponent<T extends object = Record<string, unkn
8738
8780
  protected readonly handleSubmit: (event: Event) => void;
8739
8781
  readonly resolvedSize: import("@angular/core").Signal<Size>;
8740
8782
  protected readonly sizeLength: import("@angular/core").Signal<string | null>;
8741
- readonly resolvedAlign: import("@angular/core").Signal<"left" | "center" | "right">;
8783
+ readonly resolvedAlign: import("@angular/core").Signal<"center" | "left" | "right">;
8742
8784
  readonly resolvedVariant: import("@angular/core").Signal<string | undefined>;
8743
8785
  readonly resolvedMaxWidth: import("@angular/core").Signal<string | number | undefined>;
8744
8786
  private readonly resolvedPadding;
@@ -9631,29 +9673,6 @@ export declare class ComponentStepperComponent {
9631
9673
  "stepChange": "stepChange";
9632
9674
  }, never, never, true, never>;
9633
9675
  }
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
9676
  type CardVariant = 'flat' | 'outlined' | 'glass' | 'beautiful' | 'professional' | 'subtle' | 'no-border' | 'dashboard' | 'roundedBorder' | 'highlighted' | 'line';
9658
9677
  type CardSpacing = 'compact' | 'spacious';
9659
9678
  type CardPadding = 'none' | 'all' | 'x' | 'y' | 'left' | 'right' | 'up' | 'down';
@@ -10291,7 +10310,12 @@ export declare class RemoteLoaderService {
10291
10310
  * Loads one Exposed Screen of the app a Store link names, as a Plugin: the
10292
10311
  * app's bundle, then the Screen's own element, never the app's root.
10293
10312
  */
10294
- loadPluginFromLink: (link: string, screen: string, props?: Record<string, unknown>) => Promise<RemoteLoadResult>;
10313
+ loadPluginFromLink: (link: string, screen: string, props?: Record<string, unknown>,
10314
+ /**
10315
+ * The app the bundle is fetched as (`X-Mag-App`) when it is not the one
10316
+ * running — the editor Canvas loads as the AppTarget's Linked App.
10317
+ */
10318
+ hostLink?: string) => Promise<RemoteLoadResult>;
10295
10319
  /** The app's config, fetched by a link checked first — it is concatenated into a script URL. */
10296
10320
  private configOf;
10297
10321
  loadComponentFromConfig: (config: WebComponentConfig$1, useShadow?: boolean, props?: Record<string, unknown>, children?: string | HTMLElement[]) => Promise<{
@@ -10631,6 +10655,12 @@ export declare class PluginComponent implements OnDestroy {
10631
10655
  readonly source: import("@angular/core").InputSignal<PluginSource>;
10632
10656
  /** The dev-server port a `local` source is served from — `port="4300"` reads as a number. */
10633
10657
  readonly port: import("@angular/core").InputSignalWithTransform<number | undefined, unknown>;
10658
+ /**
10659
+ * The app this Plugin loads as, when not the one running it — the editor
10660
+ * Canvas passes the AppTarget's Linked App, so the Plugin is fetched through
10661
+ * that app's Plugin Dependency (api ADR 0012). Absent: the running app.
10662
+ */
10663
+ readonly hostLink: import("@angular/core").InputSignal<string | undefined>;
10634
10664
  /** A value per input of the Exposed Screen, by its name. */
10635
10665
  readonly inputs: import("@angular/core").InputSignal<Record<string, unknown>>;
10636
10666
  /** The same, written as `m-plugin-input` children — these win over `inputs`. */
@@ -10645,7 +10675,7 @@ export declare class PluginComponent implements OnDestroy {
10645
10675
  private readonly loader;
10646
10676
  private readonly translateService;
10647
10677
  private readonly loginStore;
10648
- private readonly hostLink;
10678
+ private readonly appLink;
10649
10679
  private readonly elementRef;
10650
10680
  private loadedElement?;
10651
10681
  /** Bumped per load, so an answer for a link since replaced is dropped. */
@@ -10679,6 +10709,11 @@ export declare class PluginComponent implements OnDestroy {
10679
10709
  "required": false;
10680
10710
  "isSignal": true;
10681
10711
  };
10712
+ "hostLink": {
10713
+ "alias": "hostLink";
10714
+ "required": false;
10715
+ "isSignal": true;
10716
+ };
10682
10717
  "inputs": {
10683
10718
  "alias": "inputs";
10684
10719
  "required": false;
@@ -11302,7 +11337,7 @@ export type DocAiPhase = 'idle' | 'asking' | 'question' | 'outline' | 'writing'
11302
11337
  */
11303
11338
  export declare class DocEditorComponent implements ControlValueAccessor {
11304
11339
  protected readonly groups: readonly import("@magmonium/one").DocToolbarGroup[];
11305
- protected readonly icons: Record<"code" | "link" | "table" | "list" | "strike" | "bold" | "heading" | "italic" | "quote", string>;
11340
+ protected readonly icons: Record<"list" | "link" | "code" | "table" | "strike" | "bold" | "heading" | "italic" | "quote", string>;
11306
11341
  protected readonly docActionKey: typeof docActionKey;
11307
11342
  private readonly translate;
11308
11343
  protected readonly value: import("@angular/core").WritableSignal<string>;
@@ -13291,6 +13326,18 @@ export declare class ConfirmComponent {
13291
13326
  }, {}, never, never, true, never>;
13292
13327
  }
13293
13328
  export declare function provideModalComponents(): EnvironmentProviders;
13329
+ /**
13330
+ * A count drawn beside an entry's label, as a Badge — the figure a Nav puts on
13331
+ * itself where something behind it wants counting (GLOSSARY.md NavCountSource).
13332
+ *
13333
+ * The same two keys a Button's `badge` spells, and `variant` is the caller's for
13334
+ * the same reason: what a count *means* — a tally, a warning — is a fact about
13335
+ * the count and not about the badge that draws it.
13336
+ */
13337
+ export type NavBadge = {
13338
+ count: number;
13339
+ variant?: 'default' | 'primary' | 'danger';
13340
+ };
13294
13341
  export type BreadcrumbTrail = {
13295
13342
  label: string;
13296
13343
  icon?: string;
@@ -13328,6 +13375,12 @@ export type BreadcrumbTrail = {
13328
13375
  color: string | null;
13329
13376
  name: string;
13330
13377
  };
13378
+ /**
13379
+ * The count the Nav this entry names wears, where one is registered for it —
13380
+ * stamped on the header, the trail and the menu rows alike, so one
13381
+ * registration words a Nav the same wherever it is drawn.
13382
+ */
13383
+ badge?: NavBadge;
13331
13384
  };
13332
13385
  export type BreadCrumb = {
13333
13386
  trail?: BreadcrumbTrail[];
@@ -13579,7 +13632,26 @@ interface NavVisibilityConfig {
13579
13632
  */
13580
13633
  navVisibleLoad?: (params: Record<string, string>) => void | Promise<void>;
13581
13634
  }
13582
- type NavWidgetEntry = Type<unknown> | NavWidgetConfig | NavMenuConfig | NavRowsConfig | NavInstanceConfig | NavVisibilityConfig;
13635
+ /**
13636
+ * What a Nav registers to answer *how much is behind it*, drawn as a Badge
13637
+ * beside its label (GLOSSARY.md NavCountSource, ADR 0043). Registered under
13638
+ * that Nav's own NavId beside whatever else it registers — the configs are not
13639
+ * exclusive, which is why every guard here tests for its own key rather than
13640
+ * for the absence of another's.
13641
+ */
13642
+ interface NavCountConfig {
13643
+ /**
13644
+ * The badge to draw beside the Nav's label, or `undefined` for none — a Nav
13645
+ * with nothing behind it wears no badge rather than one saying nothing.
13646
+ *
13647
+ * A signal rather than a function of the panel's parameters, unlike
13648
+ * `navInstance`: a count is a fact about the Nav itself, and it is worn in
13649
+ * panels this Nav is not the owner of — root's own row for it — where the
13650
+ * parameters the panel is drawn for are somebody else's.
13651
+ */
13652
+ navCount: Signal<NavBadge | undefined>;
13653
+ }
13654
+ type NavWidgetEntry = Type<unknown> | NavWidgetConfig | NavMenuConfig | NavRowsConfig | NavInstanceConfig | NavCountConfig | NavVisibilityConfig;
13583
13655
  /**
13584
13656
  * Where an app registers its search answer (ADR 0042): the element the host's
13585
13657
  * search panel mounts in place of its groups, with `query` bound, while the
@@ -13612,6 +13684,7 @@ type NavWidgetMap = Partial<Record<NavIdKey, NavWidgetEntry>> & {
13612
13684
  export declare function isNavMenuConfig(entry: NavWidgetEntry): entry is NavMenuConfig;
13613
13685
  export declare function isNavRowsConfig(entry: NavWidgetEntry): entry is NavRowsConfig;
13614
13686
  export declare function isNavInstanceConfig(entry: NavWidgetEntry): entry is NavInstanceConfig;
13687
+ export declare function isNavCountConfig(entry: NavWidgetEntry): entry is NavCountConfig;
13615
13688
  export declare function isNavVisibilityConfig(entry: NavWidgetEntry): entry is NavVisibilityConfig;
13616
13689
  /**
13617
13690
  * Multi-provided, and resolved **last-wins**: the library provides its own
@@ -13660,9 +13733,8 @@ export declare class FrameComponent {
13660
13733
  browsedApp: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<{
13661
13734
  name: string;
13662
13735
  appNavId: string;
13663
- slot: "main" | "side";
13736
+ slot: "side" | "main";
13664
13737
  }>;
13665
- keepPanelOnPathChange: import("@angular/core").Signal<boolean>;
13666
13738
  panelPushed: import("@angular/core").Signal<boolean>;
13667
13739
  navScrolledDown: import("@angular/core").Signal<boolean>;
13668
13740
  remoteWidgets: import("@angular/core").Signal<Record<string, NavWidgetRegistryEntry>>;
@@ -13692,6 +13764,7 @@ export declare class FrameComponent {
13692
13764
  hasMurl: import("@angular/core").Signal<boolean>;
13693
13765
  isNavOpened: import("@angular/core").Signal<boolean>;
13694
13766
  isMNavOpened: import("@angular/core").Signal<boolean>;
13767
+ isSideMenuOpen: import("@angular/core").Signal<boolean>;
13695
13768
  resolvedWidget: import("@angular/core").Signal<(import("@magmonium/one").NavWidgetConfig & {
13696
13769
  ceSelector?: string;
13697
13770
  }) | null>;
@@ -13792,9 +13865,8 @@ export declare class FrameComponent {
13792
13865
  browsedApp: {
13793
13866
  name: string;
13794
13867
  appNavId: string;
13795
- slot: "main" | "side";
13868
+ slot: "side" | "main";
13796
13869
  } | undefined;
13797
- keepPanelOnPathChange: boolean;
13798
13870
  panelPushed: boolean;
13799
13871
  navScrolledDown: boolean;
13800
13872
  remoteWidgets: Record<string, NavWidgetRegistryEntry>;
@@ -13981,7 +14053,10 @@ interface NavState {
13981
14053
  mounts: Record<string, RemoteMount>;
13982
14054
  /** Auxiliary segment names in the URL — which side apps are on screen (ADR 0038). */
13983
14055
  outlets: string[];
13984
- /** Panel opened by the menu icon with no Murl chosen — see ADR 0013. */
14056
+ /**
14057
+ * Panel held open without a Murl: by the menu icon, or by a navigation made
14058
+ * while it was up. Only the menu toggle clears it — see ADR 0013.
14059
+ */
13985
14060
  navOpenedByUser: boolean;
13986
14061
  /**
13987
14062
  * The Nav a Browse moved the panel onto — up, down or sideways — while the
@@ -14004,12 +14079,6 @@ interface NavState {
14004
14079
  appNavId: string;
14005
14080
  slot: AppSlot;
14006
14081
  } | 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
14082
  /** Whether this store pushed the history entry the open panel sits on. */
14014
14083
  panelPushed: boolean;
14015
14084
  navScrolledDown: boolean;
@@ -14085,7 +14154,6 @@ export declare const NavStore: import("@angular/core").Type<{
14085
14154
  appNavId: string;
14086
14155
  slot: AppSlot;
14087
14156
  }>;
14088
- keepPanelOnPathChange: Signal<boolean>;
14089
14157
  panelPushed: Signal<boolean>;
14090
14158
  navScrolledDown: Signal<boolean>;
14091
14159
  remoteWidgets: Signal<Record<string, NavWidgetRegistryEntry>>;
@@ -14115,6 +14183,7 @@ export declare const NavStore: import("@angular/core").Type<{
14115
14183
  hasMurl: Signal<boolean>;
14116
14184
  isNavOpened: Signal<boolean>;
14117
14185
  isMNavOpened: Signal<boolean>;
14186
+ isSideMenuOpen: Signal<boolean>;
14118
14187
  resolvedWidget: Signal<(NavWidgetConfig & {
14119
14188
  ceSelector?: string;
14120
14189
  }) | null>;
@@ -14217,7 +14286,6 @@ export declare const NavStore: import("@angular/core").Type<{
14217
14286
  appNavId: string;
14218
14287
  slot: AppSlot;
14219
14288
  } | undefined;
14220
- keepPanelOnPathChange: boolean;
14221
14289
  panelPushed: boolean;
14222
14290
  navScrolledDown: boolean;
14223
14291
  remoteWidgets: Record<string, NavWidgetRegistryEntry>;
@@ -14575,9 +14643,8 @@ export declare class NavDetailsComponent {
14575
14643
  browsedApp: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<{
14576
14644
  name: string;
14577
14645
  appNavId: string;
14578
- slot: "main" | "side";
14646
+ slot: "side" | "main";
14579
14647
  }>;
14580
- keepPanelOnPathChange: import("@angular/core").Signal<boolean>;
14581
14648
  panelPushed: import("@angular/core").Signal<boolean>;
14582
14649
  navScrolledDown: import("@angular/core").Signal<boolean>;
14583
14650
  remoteWidgets: import("@angular/core").Signal<Record<string, NavWidgetRegistryEntry>>;
@@ -14607,6 +14674,7 @@ export declare class NavDetailsComponent {
14607
14674
  hasMurl: import("@angular/core").Signal<boolean>;
14608
14675
  isNavOpened: import("@angular/core").Signal<boolean>;
14609
14676
  isMNavOpened: import("@angular/core").Signal<boolean>;
14677
+ isSideMenuOpen: import("@angular/core").Signal<boolean>;
14610
14678
  resolvedWidget: import("@angular/core").Signal<(import("@magmonium/one").NavWidgetConfig & {
14611
14679
  ceSelector?: string;
14612
14680
  }) | null>;
@@ -14707,9 +14775,8 @@ export declare class NavDetailsComponent {
14707
14775
  browsedApp: {
14708
14776
  name: string;
14709
14777
  appNavId: string;
14710
- slot: "main" | "side";
14778
+ slot: "side" | "main";
14711
14779
  } | undefined;
14712
- keepPanelOnPathChange: boolean;
14713
14780
  panelPushed: boolean;
14714
14781
  navScrolledDown: boolean;
14715
14782
  remoteWidgets: Record<string, NavWidgetRegistryEntry>;
@@ -14790,6 +14857,11 @@ export declare class NavMenuComponent {
14790
14857
  navList: import("@angular/core").Signal<BreadcrumbTrail[] | undefined>;
14791
14858
  /** Looks inside the row's Nav without following it (GLOSSARY.md Browse). */
14792
14859
  browse: (item: BreadcrumbTrail) => void;
14860
+ /**
14861
+ * The `99+` ceiling is the badge's own, the same one a Button reads: a row and
14862
+ * an icon cannot disagree about where a count stops being a number.
14863
+ */
14864
+ protected readonly formatBadgeCount: (count: number, max?: number) => string;
14793
14865
  rows: import("@angular/core").Signal<ListItem[]>;
14794
14866
  static ɵfac: i0.ɵɵFactoryDeclaration<NavMenuComponent, never>;
14795
14867
  static ɵcmp: i0.ɵɵComponentDeclaration<NavMenuComponent, "m-nav-menu", never, {
@@ -14836,9 +14908,8 @@ export declare class NavHeaderComponent {
14836
14908
  browsedApp: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<{
14837
14909
  name: string;
14838
14910
  appNavId: string;
14839
- slot: "main" | "side";
14911
+ slot: "side" | "main";
14840
14912
  }>;
14841
- keepPanelOnPathChange: import("@angular/core").Signal<boolean>;
14842
14913
  panelPushed: import("@angular/core").Signal<boolean>;
14843
14914
  navScrolledDown: import("@angular/core").Signal<boolean>;
14844
14915
  remoteWidgets: import("@angular/core").Signal<Record<string, NavWidgetRegistryEntry>>;
@@ -14868,6 +14939,7 @@ export declare class NavHeaderComponent {
14868
14939
  hasMurl: import("@angular/core").Signal<boolean>;
14869
14940
  isNavOpened: import("@angular/core").Signal<boolean>;
14870
14941
  isMNavOpened: import("@angular/core").Signal<boolean>;
14942
+ isSideMenuOpen: import("@angular/core").Signal<boolean>;
14871
14943
  resolvedWidget: import("@angular/core").Signal<(import("@magmonium/one").NavWidgetConfig & {
14872
14944
  ceSelector?: string;
14873
14945
  }) | null>;
@@ -14968,9 +15040,8 @@ export declare class NavHeaderComponent {
14968
15040
  browsedApp: {
14969
15041
  name: string;
14970
15042
  appNavId: string;
14971
- slot: "main" | "side";
15043
+ slot: "side" | "main";
14972
15044
  } | undefined;
14973
- keepPanelOnPathChange: boolean;
14974
15045
  panelPushed: boolean;
14975
15046
  navScrolledDown: boolean;
14976
15047
  remoteWidgets: Record<string, NavWidgetRegistryEntry>;
@@ -16986,4 +17057,4 @@ export declare const toggleUid: (audience: Audience, uid: string) => Audience;
16986
17057
  export declare const toggleGroup: (audience: Audience, groupId: string) => Audience;
16987
17058
  /** How many Users and Groups an Audience names. */
16988
17059
  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 };
17060
+ 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 };