@magmonium/one 0.4.34 → 0.4.36

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 (182) hide show
  1. package/assets/buttons/audience_done.json +4 -0
  2. package/assets/i18n/af.json +3 -0
  3. package/assets/i18n/am.json +3 -0
  4. package/assets/i18n/ar.json +17 -0
  5. package/assets/i18n/as.json +3 -0
  6. package/assets/i18n/az.json +3 -0
  7. package/assets/i18n/ba.json +3 -0
  8. package/assets/i18n/be.json +3 -0
  9. package/assets/i18n/bg.json +3 -0
  10. package/assets/i18n/bn.json +3 -0
  11. package/assets/i18n/br.json +3 -0
  12. package/assets/i18n/bs.json +3 -0
  13. package/assets/i18n/ca.json +3 -0
  14. package/assets/i18n/ceb.json +3 -0
  15. package/assets/i18n/cnr.json +3 -0
  16. package/assets/i18n/co.json +3 -0
  17. package/assets/i18n/cs.json +3 -0
  18. package/assets/i18n/cy.json +3 -0
  19. package/assets/i18n/da.json +3 -0
  20. package/assets/i18n/de.json +17 -0
  21. package/assets/i18n/doi.json +3 -0
  22. package/assets/i18n/el.json +3 -0
  23. package/assets/i18n/en.json +17 -0
  24. package/assets/i18n/eo.json +3 -0
  25. package/assets/i18n/es.json +17 -0
  26. package/assets/i18n/et.json +2 -0
  27. package/assets/i18n/eu.json +3 -0
  28. package/assets/i18n/fa.json +3 -0
  29. package/assets/i18n/fi.json +3 -0
  30. package/assets/i18n/fr.json +17 -0
  31. package/assets/i18n/fy.json +3 -0
  32. package/assets/i18n/ga.json +3 -0
  33. package/assets/i18n/gd.json +3 -0
  34. package/assets/i18n/gl.json +3 -0
  35. package/assets/i18n/gu.json +3 -0
  36. package/assets/i18n/ha.json +3 -0
  37. package/assets/i18n/haw.json +3 -0
  38. package/assets/i18n/he.json +3 -0
  39. package/assets/i18n/hi.json +17 -0
  40. package/assets/i18n/hmn.json +3 -0
  41. package/assets/i18n/hr.json +3 -0
  42. package/assets/i18n/hu.json +3 -0
  43. package/assets/i18n/hy.json +3 -0
  44. package/assets/i18n/id.json +3 -0
  45. package/assets/i18n/ig.json +3 -0
  46. package/assets/i18n/ilo.json +3 -0
  47. package/assets/i18n/is.json +3 -0
  48. package/assets/i18n/it.json +17 -0
  49. package/assets/i18n/iw.json +3 -0
  50. package/assets/i18n/ja.json +17 -0
  51. package/assets/i18n/jw.json +3 -0
  52. package/assets/i18n/ka.json +3 -0
  53. package/assets/i18n/kk.json +3 -0
  54. package/assets/i18n/km.json +3 -0
  55. package/assets/i18n/kn.json +3 -0
  56. package/assets/i18n/ko.json +17 -0
  57. package/assets/i18n/kok.json +3 -0
  58. package/assets/i18n/ku.json +3 -0
  59. package/assets/i18n/ky.json +3 -0
  60. package/assets/i18n/la.json +3 -0
  61. package/assets/i18n/lb.json +3 -0
  62. package/assets/i18n/lo.json +3 -0
  63. package/assets/i18n/lt.json +3 -0
  64. package/assets/i18n/lv.json +3 -0
  65. package/assets/i18n/mai.json +3 -0
  66. package/assets/i18n/mg.json +3 -0
  67. package/assets/i18n/mi.json +3 -0
  68. package/assets/i18n/mk.json +3 -0
  69. package/assets/i18n/ml.json +3 -0
  70. package/assets/i18n/mn.json +3 -0
  71. package/assets/i18n/mr.json +3 -0
  72. package/assets/i18n/ms.json +3 -0
  73. package/assets/i18n/mt.json +3 -0
  74. package/assets/i18n/my.json +3 -0
  75. package/assets/i18n/ne.json +3 -0
  76. package/assets/i18n/nl.json +17 -0
  77. package/assets/i18n/no.json +3 -0
  78. package/assets/i18n/ny.json +3 -0
  79. package/assets/i18n/or.json +3 -0
  80. package/assets/i18n/pa.json +3 -0
  81. package/assets/i18n/pl.json +17 -0
  82. package/assets/i18n/ps.json +3 -0
  83. package/assets/i18n/pt.json +17 -0
  84. package/assets/i18n/ro.json +3 -0
  85. package/assets/i18n/ru.json +17 -0
  86. package/assets/i18n/sa.json +3 -0
  87. package/assets/i18n/sat.json +3 -0
  88. package/assets/i18n/sd.json +3 -0
  89. package/assets/i18n/si.json +3 -0
  90. package/assets/i18n/sk.json +3 -0
  91. package/assets/i18n/sl.json +3 -0
  92. package/assets/i18n/sm.json +3 -0
  93. package/assets/i18n/sn.json +3 -0
  94. package/assets/i18n/so.json +3 -0
  95. package/assets/i18n/sq.json +3 -0
  96. package/assets/i18n/sr.json +3 -0
  97. package/assets/i18n/st.json +3 -0
  98. package/assets/i18n/su.json +3 -0
  99. package/assets/i18n/sv.json +3 -0
  100. package/assets/i18n/sw.json +3 -0
  101. package/assets/i18n/ta.json +3 -0
  102. package/assets/i18n/te.json +3 -0
  103. package/assets/i18n/tg.json +3 -0
  104. package/assets/i18n/th.json +3 -0
  105. package/assets/i18n/tl.json +3 -0
  106. package/assets/i18n/tr.json +17 -0
  107. package/assets/i18n/uk.json +3 -0
  108. package/assets/i18n/ur.json +3 -0
  109. package/assets/i18n/uz.json +3 -0
  110. package/assets/i18n/vi.json +3 -0
  111. package/assets/i18n/xh.json +3 -0
  112. package/assets/i18n/yi.json +3 -0
  113. package/assets/i18n/yo.json +3 -0
  114. package/assets/i18n/zh.json +17 -0
  115. package/assets/i18n/zu.json +3 -0
  116. package/assets/index.json +1 -1
  117. package/fesm2022/{magmonium-one-attribute-value-DMI0yJpL.mjs → magmonium-one-attribute-value-DCTXt4Sr.mjs} +3 -3
  118. package/fesm2022/{magmonium-one-attribute-value-DMI0yJpL.mjs.map → magmonium-one-attribute-value-DCTXt4Sr.mjs.map} +1 -1
  119. package/fesm2022/{magmonium-one-base-checkbox-C9dvZ2IH.mjs → magmonium-one-base-checkbox-BNQAkyYU.mjs} +2 -2
  120. package/fesm2022/{magmonium-one-base-checkbox-C9dvZ2IH.mjs.map → magmonium-one-base-checkbox-BNQAkyYU.mjs.map} +1 -1
  121. package/fesm2022/{magmonium-one-base-dropdown-U-cWl3p9.mjs → magmonium-one-base-dropdown-DU4B4w7c.mjs} +10 -10
  122. package/fesm2022/{magmonium-one-base-dropdown-U-cWl3p9.mjs.map → magmonium-one-base-dropdown-DU4B4w7c.mjs.map} +1 -1
  123. package/fesm2022/{magmonium-one-base-input-CLBOTOUs.mjs → magmonium-one-base-input-BTxhUtYO.mjs} +2 -2
  124. package/fesm2022/{magmonium-one-base-input-CLBOTOUs.mjs.map → magmonium-one-base-input-BTxhUtYO.mjs.map} +1 -1
  125. package/fesm2022/{magmonium-one-base-text-Zb0oLNRX.mjs → magmonium-one-base-text-BCSqKmVs.mjs} +28 -4
  126. package/fesm2022/magmonium-one-base-text-BCSqKmVs.mjs.map +1 -0
  127. package/fesm2022/{magmonium-one-button-Bwzaxxn3.mjs → magmonium-one-button-BWB3ZKIj.mjs} +7 -7
  128. package/fesm2022/{magmonium-one-button-Bwzaxxn3.mjs.map → magmonium-one-button-BWB3ZKIj.mjs.map} +1 -1
  129. package/fesm2022/{magmonium-one-checkbox-CPQ9m291.mjs → magmonium-one-checkbox-D5-5WhJ-.mjs} +5 -5
  130. package/fesm2022/{magmonium-one-checkbox-CPQ9m291.mjs.map → magmonium-one-checkbox-D5-5WhJ-.mjs.map} +1 -1
  131. package/fesm2022/{magmonium-one-color-utl-CAbZLKB5.mjs → magmonium-one-color-utl-D86GGpz5.mjs} +2 -2
  132. package/fesm2022/{magmonium-one-color-utl-CAbZLKB5.mjs.map → magmonium-one-color-utl-D86GGpz5.mjs.map} +1 -1
  133. package/fesm2022/{magmonium-one-directives-BVKX77zM.mjs → magmonium-one-directives-DePukAj8.mjs} +4 -4
  134. package/fesm2022/{magmonium-one-directives-BVKX77zM.mjs.map → magmonium-one-directives-DePukAj8.mjs.map} +1 -1
  135. package/fesm2022/{magmonium-one-group-D4yYrVP3.mjs → magmonium-one-group-m41SX_fL.mjs} +7 -7
  136. package/fesm2022/{magmonium-one-group-D4yYrVP3.mjs.map → magmonium-one-group-m41SX_fL.mjs.map} +1 -1
  137. package/fesm2022/{magmonium-one-header-DmN8M1a3.mjs → magmonium-one-header-D8CB9CBJ.mjs} +4 -4
  138. package/fesm2022/{magmonium-one-header-DmN8M1a3.mjs.map → magmonium-one-header-D8CB9CBJ.mjs.map} +1 -1
  139. package/fesm2022/{magmonium-one-icon-Ep14YeRY.mjs → magmonium-one-icon-BTPHGpEN.mjs} +4 -4
  140. package/fesm2022/{magmonium-one-icon-Ep14YeRY.mjs.map → magmonium-one-icon-BTPHGpEN.mjs.map} +1 -1
  141. package/fesm2022/{magmonium-one-image-editor-BX4eNd4u.mjs → magmonium-one-image-editor-Dn0ACfH0.mjs} +4 -4
  142. package/fesm2022/{magmonium-one-image-editor-BX4eNd4u.mjs.map → magmonium-one-image-editor-Dn0ACfH0.mjs.map} +1 -1
  143. package/fesm2022/{magmonium-one-label-D2gjTbKX.mjs → magmonium-one-label-DjvJthAB.mjs} +2 -2
  144. package/fesm2022/{magmonium-one-label-D2gjTbKX.mjs.map → magmonium-one-label-DjvJthAB.mjs.map} +1 -1
  145. package/fesm2022/{magmonium-one-m-ref-Bq0gQbKE.mjs → magmonium-one-m-ref-C8c4Vf1G.mjs} +2 -2
  146. package/fesm2022/magmonium-one-m-ref-C8c4Vf1G.mjs.map +1 -0
  147. package/fesm2022/{magmonium-one-menu-BM9f2knw.mjs → magmonium-one-menu-EIfPlZ4E.mjs} +6 -6
  148. package/fesm2022/magmonium-one-menu-EIfPlZ4E.mjs.map +1 -0
  149. package/fesm2022/{magmonium-one-multi-range-a3ZVTy7i.mjs → magmonium-one-multi-range-o57TiVJU.mjs} +3 -3
  150. package/fesm2022/{magmonium-one-multi-range-a3ZVTy7i.mjs.map → magmonium-one-multi-range-o57TiVJU.mjs.map} +1 -1
  151. package/fesm2022/{magmonium-one-options-asset-CDEXIif6.mjs → magmonium-one-options-asset-EVsv0DL7.mjs} +2 -2
  152. package/fesm2022/magmonium-one-options-asset-EVsv0DL7.mjs.map +1 -0
  153. package/fesm2022/{magmonium-one-otp-DO4oTeSK.mjs → magmonium-one-otp-CE4L1RcG.mjs} +5 -5
  154. package/fesm2022/{magmonium-one-otp-DO4oTeSK.mjs.map → magmonium-one-otp-CE4L1RcG.mjs.map} +1 -1
  155. package/fesm2022/{magmonium-one-password-D3oTo41c.mjs → magmonium-one-password-BjqYmT1s.mjs} +6 -6
  156. package/fesm2022/{magmonium-one-password-D3oTo41c.mjs.map → magmonium-one-password-BjqYmT1s.mjs.map} +1 -1
  157. package/fesm2022/{magmonium-one-radio-CkaWESS3.mjs → magmonium-one-radio-C2wOB_Nb.mjs} +3 -3
  158. package/fesm2022/{magmonium-one-radio-CkaWESS3.mjs.map → magmonium-one-radio-C2wOB_Nb.mjs.map} +1 -1
  159. package/fesm2022/{magmonium-one-range-D_WEKrli.mjs → magmonium-one-range-rgDe4O8u.mjs} +4 -4
  160. package/fesm2022/{magmonium-one-range-D_WEKrli.mjs.map → magmonium-one-range-rgDe4O8u.mjs.map} +1 -1
  161. package/fesm2022/{magmonium-one-selector-BowevmOd.mjs → magmonium-one-selector-DeRIUUBA.mjs} +4 -4
  162. package/fesm2022/{magmonium-one-selector-BowevmOd.mjs.map → magmonium-one-selector-DeRIUUBA.mjs.map} +1 -1
  163. package/fesm2022/{magmonium-one-size-converter-BfT0Aw0g.mjs → magmonium-one-size-converter-C5fG_dgw.mjs} +4 -2
  164. package/fesm2022/magmonium-one-size-converter-C5fG_dgw.mjs.map +1 -0
  165. package/fesm2022/{magmonium-one-text-B4xKn-EQ.mjs → magmonium-one-text-BL-1lWST.mjs} +6 -6
  166. package/fesm2022/{magmonium-one-text-B4xKn-EQ.mjs.map → magmonium-one-text-BL-1lWST.mjs.map} +1 -1
  167. package/fesm2022/{magmonium-one-text-output-CfVeqYM7.mjs → magmonium-one-text-output-Ci93Hi9Y.mjs} +4 -4
  168. package/fesm2022/{magmonium-one-text-output-CfVeqYM7.mjs.map → magmonium-one-text-output-Ci93Hi9Y.mjs.map} +1 -1
  169. package/fesm2022/magmonium-one-theme-CT4cWpe7.mjs +1 -0
  170. package/fesm2022/{magmonium-one-toggle-D2XEbN-b.mjs → magmonium-one-toggle-BTK2lzqA.mjs} +3 -3
  171. package/fesm2022/{magmonium-one-toggle-D2XEbN-b.mjs.map → magmonium-one-toggle-BTK2lzqA.mjs.map} +1 -1
  172. package/fesm2022/magmonium-one.mjs +756 -113
  173. package/fesm2022/magmonium-one.mjs.map +1 -1
  174. package/package.json +1 -1
  175. package/types/magmonium-one.d.ts +368 -60
  176. package/assets/i18n/(Note.json +0 -3
  177. package/fesm2022/magmonium-one-base-text-Zb0oLNRX.mjs.map +0 -1
  178. package/fesm2022/magmonium-one-m-ref-Bq0gQbKE.mjs.map +0 -1
  179. package/fesm2022/magmonium-one-menu-BM9f2knw.mjs.map +0 -1
  180. package/fesm2022/magmonium-one-options-asset-CDEXIif6.mjs.map +0 -1
  181. package/fesm2022/magmonium-one-size-converter-BfT0Aw0g.mjs.map +0 -1
  182. package/fesm2022/magmonium-one-theme-Xgsx8bJs.mjs +0 -1
@@ -3,13 +3,13 @@ import { Observable } from "rxjs";
3
3
  import * as i0 from "@angular/core";
4
4
  import { AfterContentInit, AfterViewChecked, AfterViewInit, ApplicationConfig, ApplicationRef, Binding, ChangeDetectorRef, ComponentRef, ElementRef, EnvironmentProviders, EventEmitter, InjectionToken, Injector, InputSignal, ModelSignal, OnDestroy, OnInit, PipeTransform, Provider, Signal, StaticProvider, TemplateRef, Type, ViewContainerRef, WritableSignal } from "@angular/core";
5
5
  import { Theme, ThemeColor, ThemeList, WebComponentConfig as WebComponentConfig$1 } from "@magmonium/cli";
6
- import { ActivatedRouteSnapshot, CanActivateFn, Route, Router, RouterStateSnapshot, Routes, UrlMatcher, UrlSerializer, UrlTree } from "@angular/router";
6
+ import { ActivatedRouteSnapshot, CanActivateFn, Params, Route, Router, RouterStateSnapshot, Routes, UrlMatcher, UrlSegment, UrlSerializer, UrlTree } from "@angular/router";
7
7
  import { FieldTree, FormCheckboxControl, FormValueControl, SchemaOrSchemaFn, SchemaPath, ValidationError, WithOptionalFieldTree } from "@angular/forms/signals";
8
8
  import { ControlValueAccessor } from "@angular/forms";
9
9
  import { SafeStyle } from "@angular/platform-browser";
10
10
  /**
11
11
  * The three scale steps the design system renders, and the only ones — see
12
- * CONTEXT.md `Size` and ADR 0008. Declarable on a Section or a ButtonGroup and
12
+ * GLOSSARY.md `Size` and ADR 0008. Declarable on a Section or a ButtonGroup and
13
13
  * nowhere else (a SectionButtonGroup shares the latter seat, being its
14
14
  * markup-composed variant); everything below one renders at its Size.
15
15
  */
@@ -120,7 +120,7 @@ export declare class TranslateService {
120
120
  private readonly country;
121
121
  readonly remoteAppId: import("@angular/core").WritableSignal<string | undefined>;
122
122
  /**
123
- * The mounted App's Default Language (store CONTEXT.md): its keys load from
123
+ * The mounted App's Default Language (store GLOSSARY.md): its keys load from
124
124
  * this file when the App ships none for `lang` — library keys still follow
125
125
  * `lang`.
126
126
  */
@@ -219,7 +219,7 @@ export declare class TranslateService {
219
219
  export type HeldShelf = 'local' | 'session';
220
220
  export declare class StorageService {
221
221
  /**
222
- * Write a HeldValue (CONTEXT.md HeldValue, ADR 0019). Always a JSON envelope,
222
+ * Write a HeldValue (GLOSSARY.md HeldValue, ADR 0019). Always a JSON envelope,
223
223
  * so a `string` holding `'3'` reads back a `string` and not the `3` that
224
224
  * `getLocal` answers; `undefined` deletes the key rather than storing the
225
225
  * word; and falsiness is never a reason to skip the write, so a `false`, a
@@ -256,7 +256,7 @@ export declare class DeviceService {
256
256
  static ɵprov: i0.ɵɵInjectableDeclaration<any>;
257
257
  }
258
258
  /**
259
- * The language and country the visitor's browser declares (CONTEXT.md
259
+ * The language and country the visitor's browser declares (GLOSSARY.md
260
260
  * Browser Locale). A hint that pre-fills and breaks ties, never an authority —
261
261
  * callers clamp `language` to their own list, and `country` is null rather
262
262
  * than guessed from the language (`en` is not `US`).
@@ -554,7 +554,7 @@ type SectionTableSortDirection = 'asc' | 'desc';
554
554
  type SectionTableVariant = 'default' | 'zebra' | 'compact' | 'spacious' | 'border';
555
555
  export declare const SECTION_TABLE_VARIANTS: readonly SectionTableVariant[];
556
556
  /**
557
- * One entry in a SectionTable's configured heading (CONTEXT.md
557
+ * One entry in a SectionTable's configured heading (GLOSSARY.md
558
558
  * SectionTableColumn). The cells beneath it line up by position, so nothing
559
559
  * here says how a cell renders — a cell renders what was put in it.
560
560
  */
@@ -573,7 +573,7 @@ type SectionTableColumn = {
573
573
  dataType?: SectionTableDataType;
574
574
  /** Freezes this column and every column before it to the left edge. */
575
575
  freeze?: boolean;
576
- /** Starts folded, with a toggle in its heading (CONTEXT.md Squeeze). */
576
+ /** Starts folded, with a toggle in its heading (GLOSSARY.md Squeeze). */
577
577
  squeeze?: boolean;
578
578
  };
579
579
  type SectionTableSort = {
@@ -750,6 +750,8 @@ export interface RemoteSelectorConfig {
750
750
  export interface WebComponentConfig {
751
751
  selector?: string;
752
752
  app: string;
753
+ /** What the app is called, from Store's App — `app` is its link. */
754
+ name?: string;
753
755
  version: string;
754
756
  company?: string;
755
757
  timestamp?: string;
@@ -761,7 +763,7 @@ export interface WebComponentConfig {
761
763
  selectorConfig?: Partial<RemoteSelectorConfig>;
762
764
  backend?: string;
763
765
  /**
764
- * Open App (store CONTEXT.md), stamped by the Store on the served config: a
766
+ * Open App (store GLOSSARY.md), stamped by the Store on the served config: a
765
767
  * host draws it as its own — no menu node, logo or settings of its own.
766
768
  */
767
769
  open?: boolean;
@@ -782,6 +784,12 @@ export interface RemoteMount {
782
784
  out?: (remotePath: string, link: string) => string;
783
785
  /** Listed in the host menu while its segment is in the URL (ADR 0038). */
784
786
  createMenu?: boolean;
787
+ /**
788
+ * Keeps an Open App's own menu: the host gave it a route of its own (m-ui's
789
+ * Store App at `/store`), so its root stays a Nav with its own rows rather
790
+ * than turning transparent and splicing them into the host's.
791
+ */
792
+ ownMenu?: boolean;
785
793
  /**
786
794
  * Moves the remote to one of its own paths — a menu click on its Nav.
787
795
  * `replaceUrl` is how the host URL takes the move once the remote reports it.
@@ -811,7 +819,7 @@ export interface NavStoreRef {
811
819
  panelNavId?: Signal<string | undefined>;
812
820
  /**
813
821
  * `panelNavId` with any Browse left out — where the User stands rather than
814
- * where they are looking (CONTEXT.md Browse). What a row marks itself
822
+ * where they are looking (GLOSSARY.md Browse). What a row marks itself
815
823
  * against, so the row they came through stays marked while they Browse.
816
824
  * Optional: a host built before it existed provides none.
817
825
  */
@@ -840,14 +848,14 @@ export interface NavStoreRef {
840
848
  }) => void;
841
849
  /**
842
850
  * Moves the open panel onto a Nav without moving the User — the Address and
843
- * the Page stay put (CONTEXT.md Browse). `params` names the instance of a
851
+ * the Page stay put (GLOSSARY.md Browse). `params` names the instance of a
844
852
  * `dynamic` Nav. Optional: a host built before it existed provides none.
845
853
  */
846
854
  browse?: (navId: string, params?: Record<string, string | number>) => void;
847
855
  /**
848
856
  * Follows a NavRef whose dynamic segments are keyed by the Nav contributing
849
857
  * each one rather than by parameter name — what an emitted OutcomeNav calls
850
- * (m-one-ui CONTEXT.md OutcomeNav). Optional: a host built before it existed
858
+ * (m-one-ui GLOSSARY.md OutcomeNav). Optional: a host built before it existed
851
859
  * provides none, and the gesture then does nothing rather than throwing.
852
860
  */
853
861
  followNav?: (navId: string, byNav?: Record<string, string | number>, options?: {
@@ -1043,7 +1051,7 @@ export declare const APP_LINK: InjectionToken<WritableSignal<string | undefined>
1043
1051
  /**
1044
1052
  * The loading counter this application's requests move, ahead of the host's
1045
1053
  * shared one. A Plugin provides its own so its requests never turn the host's
1046
- * `busy` on (libs/one CONTEXT.md Plugin); unset, the host's counter is used.
1054
+ * `busy` on (libs/one GLOSSARY.md Plugin); unset, the host's counter is used.
1047
1055
  */
1048
1056
  export declare const LOADING_ACTIONS_REF: InjectionToken<LoadingActionsApi>;
1049
1057
  export declare const IS_SIDE_PANEL: InjectionToken<boolean>;
@@ -1176,8 +1184,10 @@ export declare const AssetStore: import("@angular/core").Type<{
1176
1184
  isCachingDisabled: import("@angular/core").Signal<boolean>;
1177
1185
  appLink: import("@angular/core").Signal<string | undefined>;
1178
1186
  hostBase: import("@angular/core").Signal<string | undefined>;
1187
+ hosted: import("@angular/core").Signal<boolean>;
1179
1188
  setAppLink: (appLink: string) => void;
1180
1189
  setHostBase: (hostBase: string) => void;
1190
+ setHosted: () => void;
1181
1191
  setCachingDisabled: (isDisabled: boolean) => void;
1182
1192
  resolve: <T>(type: string, name: string, isOne?: boolean, remoteBaseUrl?: string) => Observable<T>;
1183
1193
  } & import("@ngrx/signals").StateSource<{
@@ -1185,6 +1195,7 @@ export declare const AssetStore: import("@angular/core").Type<{
1185
1195
  isCachingDisabled: boolean;
1186
1196
  appLink: string | undefined;
1187
1197
  hostBase: string | undefined;
1198
+ hosted: boolean;
1188
1199
  }>>;
1189
1200
  /**
1190
1201
  * Resolves a config asset by name via `AssetStore`, outside any component
@@ -1211,6 +1222,27 @@ export declare function derivePropertyName(inputString: string, type: ColorPrope
1211
1222
  export declare function setProperty(element: HTMLElement, key: string, value: string | null): void;
1212
1223
  export declare function getProperty(element: HTMLElement, key: string): string;
1213
1224
  export declare function classListSignal(element: Element): Signal<string[]>;
1225
+ /**
1226
+ * Which element in `node`'s own root holds the caret — the document for a node
1227
+ * in the light DOM, the nearest shadow root for a node inside one — or null when
1228
+ * nothing there does.
1229
+ *
1230
+ * `document.activeElement` is the wrong question for anything that may be
1231
+ * mounted in a shadow root, and every Screen of an app loaded under m-ui is: the
1232
+ * Web Component wrapper gives the app's root `ViewEncapsulation.ShadowDom`, so
1233
+ * the app renders in one. Asked from inside, the document answers with the
1234
+ * shadow **host** — an ancestor of whoever is asking — and `contains` does not
1235
+ * walk across the boundary, so `node.contains(document.activeElement)` reads
1236
+ * false however well `node` holds the focus. The Section's search bar, asking
1237
+ * the document whether its own freshly-focused input still holds the caret,
1238
+ * therefore closes itself on the very click that opened it: the toggle is
1239
+ * destroyed, the input mounts, the deferred check sees the host instead of the
1240
+ * input, and `close` is called.
1241
+ *
1242
+ * Null is the honest answer for "no caret has been placed here", which is what
1243
+ * a caller guarding against stealing one is asking.
1244
+ */
1245
+ export declare function activeElementWithin(node: Node): Element | null;
1214
1246
  export declare function getScrollParent(node: Node | null): HTMLElement | Window;
1215
1247
  export declare function isJson(data: unknown): boolean;
1216
1248
  export declare function getValue<T, K extends keyof T>(obj: T, key: K): T[K];
@@ -1370,7 +1402,7 @@ export declare const pickSupportedLanguage: (own: string | undefined, supported:
1370
1402
  /**
1371
1403
  * One loading counter and the actions that move it. The module's own is the
1372
1404
  * app-wide one every Screen's `busy` reads; a Plugin makes another so its
1373
- * requests never move it (libs/one CONTEXT.md Plugin).
1405
+ * requests never move it (libs/one GLOSSARY.md Plugin).
1374
1406
  */
1375
1407
  export declare function createLoadingState(): {
1376
1408
  isLoading: import("@angular/core").Signal<boolean>;
@@ -1699,7 +1731,7 @@ export declare class MHeroColorDirective {
1699
1731
  /**
1700
1732
  * NavRef link. `mRef` names a target by NavId and nothing else — the NavKind on
1701
1733
  * that node decides whether following it routes or opens a panel, so this
1702
- * directive never chooses. See libs/one/CONTEXT.md (NavRef) and ADR 0014.
1734
+ * directive never chooses. See libs/one/GLOSSARY.md (NavRef) and ADR 0014.
1703
1735
  */
1704
1736
  export declare class MRefDirective {
1705
1737
  #private;
@@ -1927,7 +1959,16 @@ export declare abstract class BaseRootWebComponent extends BaseWebComponent {
1927
1959
  private readonly agreementGate;
1928
1960
  /** The User's Relation Language for this App, once its Relation is read. */
1929
1961
  private readonly relationLanguage;
1962
+ /** The AppLink this element was bound to, once its input or base href named one. */
1963
+ private appId?;
1930
1964
  constructor();
1965
+ /**
1966
+ * Where this app's Router stands, on this element and bubbling: the m-remote
1967
+ * that mounted it listens there (ADR 0038), anything above still hears it.
1968
+ * The Nav rides along — the host routes only down to the mount, and its menu
1969
+ * stands on this app's Nav only if the app says which.
1970
+ */
1971
+ private report;
1931
1972
  private registerCustomElements;
1932
1973
  private registerUserTabElements;
1933
1974
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseRootWebComponent, never>;
@@ -2023,6 +2064,8 @@ export declare const WC_NAVIGATE_EVENT = "mag-wc-navigate";
2023
2064
  export interface RemoteReport {
2024
2065
  appId?: string;
2025
2066
  path?: string;
2067
+ /** The move asked to replace its history entry — a scroll position, not a step. */
2068
+ replaceUrl?: boolean;
2026
2069
  /** Its matched route's NavId, root-relative — absent from an older Remote. */
2027
2070
  navId?: string;
2028
2071
  params?: Record<string, string>;
@@ -2100,7 +2143,7 @@ export interface PluginOutput {
2100
2143
  export declare const PLUGIN_FALLBACK_LANG = "en";
2101
2144
  export declare const PLUGIN_SCREENS: InjectionToken<ExposedScreens[]>;
2102
2145
  /**
2103
- * Offers Screens to other apps as Plugins (libs/one CONTEXT.md). Listed in the
2146
+ * Offers Screens to other apps as Plugins (libs/one GLOSSARY.md). Listed in the
2104
2147
  * app's providers; its wc bundle defines one element per Screen at load,
2105
2148
  * without booting the app's root.
2106
2149
  */
@@ -2130,10 +2173,30 @@ export declare function createPluginElement(component: Type<unknown>, pluginApp:
2130
2173
  * once, on the first mount, so an app nobody mounts a Plugin of pays nothing.
2131
2174
  */
2132
2175
  export declare function definePluginScreens(selector: string, screens: ExposedScreens, createPluginApp: () => Promise<ApplicationRef>): void;
2176
+ /** `coins/7?sort=desc#top` → its path segments, its query and its fragment. */
2177
+ export declare const splitPath: (path: string) => {
2178
+ segments: string[];
2179
+ query: Params;
2180
+ fragment: string | null;
2181
+ };
2133
2182
  /** The query keys a Remote path names — `coins?sort=desc&q=a` → `sort`, `q`. */
2134
2183
  declare const queryKeysOf: (path: string) => string[];
2135
- /** Two Remote paths naming the same segments and query, whatever the key order. */
2184
+ /**
2185
+ * Two Remote paths naming the same segments, query and fragment, whatever the
2186
+ * key order.
2187
+ */
2136
2188
  declare const samePath: (a: string, b: string) => boolean;
2189
+ /** The matrix key an outlet segment holds its Remote's fragment under. */
2190
+ declare const OUTLET_HASH_PARAM = "hash";
2191
+ /**
2192
+ * A Remote path as its auxiliary segment holds it. The URL's own `?` and `#`
2193
+ * are the whole page's — Angular keeps them outside every `(…)` — so the
2194
+ * Remote's query and fragment ride its last segment as matrix params instead:
2195
+ * `x/1?q=a#page-4` → `x/1;q=a;hash=page-4`, all of it inside its parentheses.
2196
+ */
2197
+ export declare const outletSegmentsOf: (path: string) => UrlSegment[];
2198
+ /** An auxiliary segment back as the Remote path it holds — `outletSegmentsOf` reversed. */
2199
+ export declare const outletPathOf: (segments: readonly UrlSegment[]) => string;
2137
2200
  /**
2138
2201
  * The host URL's query as a Remote path's query string, `?`-led or empty. The
2139
2202
  * Murl param is the host's panel state, never the Remote's (ADR 0013).
@@ -2156,13 +2219,17 @@ declare class RemoteUrl {
2156
2219
  private tree;
2157
2220
  private segmentsNow;
2158
2221
  /**
2159
- * Whether the host URL already says `path` — its segments, every query key it
2160
- * names, and none of the `dropped` keys the Remote has stopped naming.
2222
+ * Whether the host URL already says `path`. An outlet holds the whole path in
2223
+ * its segment; a tail its segments, the fragment, every query key it names,
2224
+ * and none of the `dropped` keys the Remote has stopped naming.
2161
2225
  */
2162
2226
  holds: (path: string, dropped?: readonly string[]) => boolean;
2163
2227
  /**
2164
- * The host's query is shared, so `path`'s keys are merged into it: only the
2165
- * `dropped` keys — ones this Remote wrote and no longer names — leave it.
2228
+ * An outlet writes the whole path into its own segment and leaves the host's
2229
+ * query and fragment alone. A tail's page is the Remote's: its fragment is
2230
+ * the page's, and since the host's query is shared, `path`'s keys are merged
2231
+ * into it — only the `dropped` keys, ones this Remote wrote and no longer
2232
+ * names, leave it.
2166
2233
  */
2167
2234
  write: (path: string, replaceUrl: boolean, dropped?: readonly string[]) => void;
2168
2235
  /** An outlet leaving takes its segment with it; a tail leaves with its route. */
@@ -2220,8 +2287,10 @@ export declare class ConfigComponent<T extends Config = Config> {
2220
2287
  isCachingDisabled: import("@angular/core").Signal<boolean>;
2221
2288
  appLink: import("@angular/core").Signal<string | undefined>;
2222
2289
  hostBase: import("@angular/core").Signal<string | undefined>;
2290
+ hosted: import("@angular/core").Signal<boolean>;
2223
2291
  setAppLink: (appLink: string) => void;
2224
2292
  setHostBase: (hostBase: string) => void;
2293
+ setHosted: () => void;
2225
2294
  setCachingDisabled: (isDisabled: boolean) => void;
2226
2295
  resolve: <T_1>(type: string, name: string, isOne?: boolean, remoteBaseUrl?: string) => import("rxjs").Observable<T_1>;
2227
2296
  } & import("@ngrx/signals").StateSource<{
@@ -2231,6 +2300,7 @@ export declare class ConfigComponent<T extends Config = Config> {
2231
2300
  isCachingDisabled: boolean;
2232
2301
  appLink: string | undefined;
2233
2302
  hostBase: string | undefined;
2303
+ hosted: boolean;
2234
2304
  }>;
2235
2305
  private readonly http;
2236
2306
  private readonly previousName;
@@ -3934,7 +4004,7 @@ declare class BaseTextInputComponent<T extends Input = TextInput> extends BaseIn
3934
4004
  /**
3935
4005
  * What the results component's search input is called when nobody says
3936
4006
  * otherwise — the name the design editor mints on a results Screen, spelled
3937
- * here so a hand-written caller lands on the same word (CONTEXT.md
4007
+ * here so a hand-written caller lands on the same word (GLOSSARY.md
3938
4008
  * SearchResultsScreen).
3939
4009
  */
3940
4010
  declare const SEARCH_RESULT_INPUT = "search";
@@ -4217,7 +4287,7 @@ export declare class SectionFilterComponent {
4217
4287
  /**
4218
4288
  * How many numbers a `range` Filter picks: two by default, one under
4219
4289
  * `single`, where its key carries that number rather than a pair
4220
- * (CONTEXT.md FilterRangeMode). Ignored by the option-picking variants.
4290
+ * (GLOSSARY.md FilterRangeMode). Ignored by the option-picking variants.
4221
4291
  */
4222
4292
  readonly mode: import("@angular/core").InputSignal<FilterRangeMode>;
4223
4293
  /**
@@ -5143,7 +5213,7 @@ export declare const SECTION_ACCORDION_GROUP: InjectionToken<SectionAccordionGro
5143
5213
  * its projected `m-section-header` (nothing renders, and the Section never
5144
5214
  * collapses, if it has no header) and everything below the header collapses
5145
5215
  * as one region. Ungrouped, starts open; inside an `mAccordionGroup`, only
5146
- * the first-registered member starts open (CONTEXT.md SectionAccordion).
5216
+ * the first-registered member starts open (GLOSSARY.md SectionAccordion).
5147
5217
  */
5148
5218
  export declare class SectionAccordionDirective implements SectionAccordionRef, OnInit, OnDestroy {
5149
5219
  readonly mAccordion: import("@angular/core").InputSignal<string | Partial<SectionAccordion> | null | undefined>;
@@ -5512,7 +5582,7 @@ type SectionButtonGroupConfig = Config & {
5512
5582
  * whatever Size the nearest Section put on the cascade, which is why its
5513
5583
  * Buttons then land on that Section's input geometry with no sizing code here:
5514
5584
  * both are 2.25x the Size.
5515
- * See CONTEXT.md `SectionButtonGroup` and ADR 0008, ADR 0009.
5585
+ * See GLOSSARY.md `SectionButtonGroup` and ADR 0008, ADR 0009.
5516
5586
  */
5517
5587
  export declare class SectionButtonGroupComponent extends ConfigComponent<SectionButtonGroupConfig> {
5518
5588
  subFolder: "section_button_groups";
@@ -5558,7 +5628,7 @@ export declare class SectionButtonGroupComponent extends ConfigComponent<Section
5558
5628
  }, {}, never, ["m-button, m-one-button", "*"], true, never>;
5559
5629
  }
5560
5630
  /**
5561
- * The table composed from projected markup (CONTEXT.md SectionTable): the
5631
+ * The table composed from projected markup (GLOSSARY.md SectionTable): the
5562
5632
  * `<table>` and its configured heading are this component's, every row is
5563
5633
  * projected. A row written inside an `@for` is drawn once per item, one outside
5564
5634
  * it once — so a `<tr m-section-table-row>` is all the body ever holds, and
@@ -5635,7 +5705,7 @@ export declare class SectionTableComponent extends ConfigComponent<SectionTableC
5635
5705
  }, never, ["*", "m-section-pagination"], true, never>;
5636
5706
  }
5637
5707
  /**
5638
- * One `<tr>` of a SectionTable (CONTEXT.md SectionTableRow). An attribute on a
5708
+ * One `<tr>` of a SectionTable (GLOSSARY.md SectionTableRow). An attribute on a
5639
5709
  * real `<tr>` rather than an element of its own: a component host between
5640
5710
  * `<tbody>` and its cells breaks table layout. Repeated or static is decided by
5641
5711
  * where it was written, never by a setting here.
@@ -5649,7 +5719,7 @@ export declare class SectionTableRowComponent {
5649
5719
  }, never, ["*"], true, never>;
5650
5720
  }
5651
5721
  /**
5652
- * One `<td>` of a SectionTableRow (CONTEXT.md SectionTableCell), holding any
5722
+ * One `<td>` of a SectionTableRow (GLOSSARY.md SectionTableCell), holding any
5653
5723
  * content. Answers to the column at its own position — its `cellIndex`, which
5654
5724
  * only the DOM knows once the row is laid out — for alignment, Squeeze and
5655
5725
  * freezing, and configures none of them itself.
@@ -5848,7 +5918,7 @@ type BoundConfig = Partial<Input> & {
5848
5918
  * The panel a `range` Filter opens: a slider over the authored bounds, and the
5849
5919
  * numeric boxes under it. Two thumbs and two boxes by default; one of each in
5850
5920
  * `single` mode, where the Filter picks one number rather than a pair
5851
- * (CONTEXT.md FilterRangeMode). One panel for both, because the modes differ
5921
+ * (GLOSSARY.md FilterRangeMode). One panel for both, because the modes differ
5852
5922
  * only in how many answers come back — the bounds and the fallbacks are the
5853
5923
  * same authoring either way.
5854
5924
  *
@@ -5876,7 +5946,7 @@ export declare class SectionFilterRangePanelComponent {
5876
5946
  readonly value: import("@angular/core").InputSignal<readonly (string | number)[]>;
5877
5947
  readonly min: import("@angular/core").InputSignal<number | undefined>;
5878
5948
  readonly max: import("@angular/core").InputSignal<number | undefined>;
5879
- /** One thumb or two. `range` by default (CONTEXT.md FilterRangeMode). */
5949
+ /** One thumb or two. `range` by default (GLOSSARY.md FilterRangeMode). */
5880
5950
  readonly mode: import("@angular/core").InputSignal<FilterRangeMode>;
5881
5951
  /** The Filter's own heading, already a TranslationAsset key. */
5882
5952
  readonly label: import("@angular/core").InputSignal<string>;
@@ -6808,7 +6878,7 @@ type CheckboxGroupRow = {
6808
6878
  readonly checkbox: Partial<Input>;
6809
6879
  };
6810
6880
  /**
6811
- * The many-pick sibling of `m-radio-group` (CONTEXT.md CheckboxGroup). One
6881
+ * The many-pick sibling of `m-radio-group` (GLOSSARY.md CheckboxGroup). One
6812
6882
  * `m-checkbox` per option, its value the picked options' values in option
6813
6883
  * order. Options are bound, placed or named (ADR 0039, ADR 0041): bound or
6814
6884
  * placed `options` win, and an OptionSet named by `optionsAsset` / `mOptions`
@@ -7474,7 +7544,7 @@ export declare function normalizeAssetOptions(data: AssetOption[] | AssetOption[
7474
7544
  export declare function assetOptions(name?: () => string | undefined): Signal<DropdownOption[]>;
7475
7545
  /**
7476
7546
  * Starts a Field on its list's `default` row when it holds no value of its own
7477
- * (m-one-ui CONTEXT.md OptionSet). The Field's own value — its config, its form
7547
+ * (m-one-ui GLOSSARY.md OptionSet). The Field's own value — its config, its form
7478
7548
  * data — outranks the row, so a value already held is kept.
7479
7549
  *
7480
7550
  * Each marked row is consulted once: a User who clears the pick is not handed
@@ -7887,7 +7957,7 @@ declare const fileMatchesAccept: (file: Pick<File, "name" | "type">, accept: rea
7887
7957
  /**
7888
7958
  * Splits picked or dropped files into the ones the Field keeps and the ones it
7889
7959
  * reports. A drop never passes the native picker, so this is where `accept` and
7890
- * `maxSize` are enforced rather than merely suggested (CONTEXT.md DropZone).
7960
+ * `maxSize` are enforced rather than merely suggested (GLOSSARY.md DropZone).
7891
7961
  */
7892
7962
  declare const screenFiles: (files: readonly File[], accept: readonly string[], maxSize: number | undefined) => FileScreen;
7893
7963
  /** Appends `incoming` to `current`, skipping a file already held. */
@@ -8101,7 +8171,7 @@ export declare class ListComponent extends ConfigComponent<ListConfig> {
8101
8171
  * row authored in the asset reaches the template the way a mapped one does:
8102
8172
  * an authored `ListItem` carries no `row` of its own, and a body reading
8103
8173
  * `undefined` would make the static source unusable to anything but a bare
8104
- * label (m-one-ui CONTEXT.md ListControl).
8174
+ * label (m-one-ui GLOSSARY.md ListControl).
8105
8175
  */
8106
8176
  protected readonly rowContext: (item: ListItem, index: number, first: boolean, last: boolean) => ListContext;
8107
8177
  static ɵfac: i0.ɵɵFactoryDeclaration<ListComponent, never>;
@@ -8973,7 +9043,7 @@ export declare class SectionFormItemComponent extends ConfigComponent<Input> imp
8973
9043
  }, ["projectedTemplate", "placedCheckboxes"], never, true, never>;
8974
9044
  }
8975
9045
  /**
8976
- * Names the AssetOptions list a Field chooses from (CONTEXT.md OptionsSource).
9046
+ * Names the AssetOptions list a Field chooses from (GLOSSARY.md OptionsSource).
8977
9047
  * The markup spelling of the `optionsAsset:` config key, added beside it rather
8978
9048
  * than in place of it (ADR 0010) — a Field still described by a file keeps
8979
9049
  * declaring the key inside that file.
@@ -10044,6 +10114,8 @@ export declare class RemoteComponent implements OnDestroy {
10044
10114
  readonly out: import("@angular/core").InputSignal<((remotePath: string, link: string) => string) | undefined>;
10045
10115
  /** Listed in the host menu while its segment is in the URL. */
10046
10116
  readonly createMenu: import("@angular/core").InputSignal<boolean>;
10117
+ /** An Open App keeps its own menu rather than drawing as the host's own. */
10118
+ readonly ownMenu: import("@angular/core").InputSignal<boolean>;
10047
10119
  /** The host NavId the remote's root is rebased onto; `root_app_<name>` unset. */
10048
10120
  readonly appNavId: import("@angular/core").InputSignal<string | undefined>;
10049
10121
  /**
@@ -10094,7 +10166,7 @@ export declare class RemoteComponent implements OnDestroy {
10094
10166
  private pinnedLink?;
10095
10167
  protected readonly state: import("@angular/core").WritableSignal<"idle" | "loading" | "loaded" | "failed" | "self-beta">;
10096
10168
  protected readonly failure: import("@angular/core").WritableSignal<RemoteLoadResult>;
10097
- /** The host URL's query, as of the last navigation — a `tail` mount's to read. */
10169
+ /** The host URL's query and fragment, as of the last navigation — a `tail` mount's to read. */
10098
10170
  private readonly hostQuery;
10099
10171
  /** The host's primary path, segment by segment, as of the last navigation. */
10100
10172
  private readonly hostSegments;
@@ -10126,7 +10198,10 @@ export declare class RemoteComponent implements OnDestroy {
10126
10198
  private mountName;
10127
10199
  /** The host page that mounts this app, asked for at its beta tier. */
10128
10200
  protected openBeta: () => void;
10129
- /** A method, not an arrow field: `hostQuery` calls it during field init. */
10201
+ /**
10202
+ * The host URL's query and fragment, as a Remote path's tail. A method, not
10203
+ * an arrow field: `hostQuery` calls it during field init.
10204
+ */
10130
10205
  private currentQuery;
10131
10206
  /** A method, not an arrow field: `hostSegments` calls it during field init. */
10132
10207
  private primarySegments;
@@ -10210,6 +10285,11 @@ export declare class RemoteComponent implements OnDestroy {
10210
10285
  "required": false;
10211
10286
  "isSignal": true;
10212
10287
  };
10288
+ "ownMenu": {
10289
+ "alias": "ownMenu";
10290
+ "required": false;
10291
+ "isSignal": true;
10292
+ };
10213
10293
  "appNavId": {
10214
10294
  "alias": "appNavId";
10215
10295
  "required": false;
@@ -10236,7 +10316,7 @@ export declare class RemoteComponent implements OnDestroy {
10236
10316
  */
10237
10317
  export type PluginSource = 'local' | 'beta' | 'published';
10238
10318
  /**
10239
- * Mounts another app's Exposed Screen as a Plugin (libs/one CONTEXT.md): an
10319
+ * Mounts another app's Exposed Screen as a Plugin (libs/one GLOSSARY.md): an
10240
10320
  * AppLink, the Screen's name, a value per input and one `output` event per
10241
10321
  * output the Screen emits. Never a whole app and never an address — that is
10242
10322
  * `m-remote`.
@@ -12000,7 +12080,7 @@ type StatAlign = 'left' | 'center' | 'right';
12000
12080
  type StatSurface = 'plain' | 'card' | 'shadow' | 'glow' | 'gradient';
12001
12081
  /**
12002
12082
  * A KeyValue with a corner mark: a label, a large value, and a small secondary
12003
- * value set against the value itself (CONTEXT.md Stat).
12083
+ * value set against the value itself (GLOSSARY.md Stat).
12004
12084
  *
12005
12085
  * The label is an attribute because a name is a string either way — a
12006
12086
  * TranslationAsset key, or a row's own text under `noTranslate` (ADR 0022);
@@ -12245,7 +12325,7 @@ export type PanelOverlayConfig = Config & {
12245
12325
  };
12246
12326
  /**
12247
12327
  * What a store hands `ModalStore.openScreen` — the programmatic counterpart of
12248
- * `mModal` / `mSidePanel` (CONTEXT.md OverlayTrigger).
12328
+ * `mModal` / `mSidePanel` (GLOSSARY.md OverlayTrigger).
12249
12329
  *
12250
12330
  * One shape for both overlays rather than two: `as` says which, and the caller
12251
12331
  * is one generated `tap` that has already drawn the answer. A directive resolves
@@ -12686,7 +12766,7 @@ export type BreadcrumbTrail = {
12686
12766
  /**
12687
12767
  * NavRef — names the target by NavId only. The NavKind on the target decides
12688
12768
  * whether following it routes or opens a panel, so a link can never pick the
12689
- * wrong kind. See libs/one/CONTEXT.md (NavRef) and ADR 0014.
12769
+ * wrong kind. See libs/one/GLOSSARY.md (NavRef) and ADR 0014.
12690
12770
  */
12691
12771
  nav?: string;
12692
12772
  /**
@@ -12703,7 +12783,7 @@ export type BreadcrumbTrail = {
12703
12783
  href?: string;
12704
12784
  /**
12705
12785
  * A menu row whose Nav would draw rows of its own: it carries a chevron that
12706
- * Browses into it while the row itself follows it (CONTEXT.md Browse).
12786
+ * Browses into it while the row itself follows it (GLOSSARY.md Browse).
12707
12787
  */
12708
12788
  browsable?: boolean;
12709
12789
  };
@@ -12712,7 +12792,7 @@ export type BreadCrumb = {
12712
12792
  header: BreadcrumbTrail;
12713
12793
  };
12714
12794
  /**
12715
- * Nav model — see libs/one/CONTEXT.md (NavId, NavKind, Address, Anchor, NavRef)
12795
+ * Nav model — see libs/one/GLOSSARY.md (NavId, NavKind, Address, Anchor, NavRef)
12716
12796
  * and docs/adr/0014.
12717
12797
  */
12718
12798
  /** How a Nav is reached. A property of the node, never of the link. */
@@ -12741,7 +12821,7 @@ export type Nav = {
12741
12821
  */
12742
12822
  param?: string;
12743
12823
  /**
12744
- * A NavTail's parameter name (m-one-ui CONTEXT.md NavTail): every segment
12824
+ * A NavTail's parameter name (m-one-ui GLOSSARY.md NavTail): every segment
12745
12825
  * below the Nav's own path is one value under this name, separators kept —
12746
12826
  * `code/<path>` with `path` = `src/app/x.ts`. Routed by `navTailMatcher`.
12747
12827
  */
@@ -12755,7 +12835,7 @@ export type Nav = {
12755
12835
  seeded?: boolean;
12756
12836
  };
12757
12837
  /**
12758
- * One row a `dynamic` Nav resolves to at runtime (CONTEXT.md NavRow).
12838
+ * One row a `dynamic` Nav resolves to at runtime (GLOSSARY.md NavRow).
12759
12839
  *
12760
12840
  * `value` is the [NavParam] value and never a NavId — a NavRef names a node
12761
12841
  * and the instance rides alongside as params, so a row can never disagree with
@@ -12830,7 +12910,7 @@ interface NavMenuConfig {
12830
12910
  }
12831
12911
  /**
12832
12912
  * What a `dynamic` Nav registers instead of a panel: the rows it resolves at
12833
- * runtime (CONTEXT.md NavRowSource). Registered under the dynamic Nav's own
12913
+ * runtime (GLOSSARY.md NavRowSource). Registered under the dynamic Nav's own
12834
12914
  * NavId, but drawn in *its parent's* panel — the rows are spliced where its
12835
12915
  * own row stood, the transparency a Default Nav already has, because a row
12836
12916
  * labelled `with-category` names nothing a User recognises.
@@ -12870,7 +12950,7 @@ interface NavRowsConfig {
12870
12950
  /**
12871
12951
  * What a `dynamic` Nav registers to answer *which instance the User is standing
12872
12952
  * on*, as against `NavRowsConfig`, which answers *where they may go*
12873
- * (CONTEXT.md NavInstanceSource, ADR 0030). Registered under the dynamic Nav's
12953
+ * (GLOSSARY.md NavInstanceSource, ADR 0030). Registered under the dynamic Nav's
12874
12954
  * own NavId, and read by the trail and the panel header rather than by any
12875
12955
  * menu: a row list is a menu answer, and one deep link into `/app/:id/about`
12876
12956
  * needs a name for `:id` whether or not a menu of every app would even be
@@ -12900,7 +12980,7 @@ interface NavInstanceConfig {
12900
12980
  navInstanceLoad?: (params: Record<string, string>) => void;
12901
12981
  }
12902
12982
  /**
12903
- * What a gate answers (m-one-ui CONTEXT.md NavVisibilitySource).
12983
+ * What a gate answers (m-one-ui GLOSSARY.md NavVisibilitySource).
12904
12984
  *
12905
12985
  * **Three states, and one of them is a promise.** `true` / `false` are the
12906
12986
  * answer; `undefined` is *not answerable yet* — the state the gate reads has
@@ -12915,7 +12995,7 @@ interface NavInstanceConfig {
12915
12995
  */
12916
12996
  type NavVisibleAnswer = boolean | undefined | Promise<boolean>;
12917
12997
  /**
12918
- * Whether one Nav is shown and reachable at all (m-one-ui CONTEXT.md
12998
+ * Whether one Nav is shown and reachable at all (m-one-ui GLOSSARY.md
12919
12999
  * NavVisibilitySource). Registered under that Nav's own NavId beside whatever
12920
13000
  * else it registers — the configs are not exclusive, which is why every guard
12921
13001
  * here tests for its own key rather than for the absence of another's.
@@ -12938,7 +13018,7 @@ interface NavVisibilityConfig {
12938
13018
  navVisible: (params: Record<string, string>) => NavVisibleAnswer;
12939
13019
  /**
12940
13020
  * Fired before the gate is believed, so a gate reading state the store does
12941
- * not hold yet has something filling it (m-one-ui CONTEXT.md
13021
+ * not hold yet has something filling it (m-one-ui GLOSSARY.md
12942
13022
  * NavVisibilitySource).
12943
13023
  *
12944
13024
  * This is what makes *is this app's uid the signed-in user* answerable on a
@@ -13329,19 +13409,19 @@ interface NavState {
13329
13409
  navOpenedByUser: boolean;
13330
13410
  /**
13331
13411
  * The Nav a Browse moved the panel onto — up, down or sideways — while the
13332
- * Address, and the Page, stay put (CONTEXT.md Browse).
13412
+ * Address, and the Page, stay put (GLOSSARY.md Browse).
13333
13413
  */
13334
13414
  menuNavId: string | undefined;
13335
13415
  /**
13336
13416
  * The instances the Browse names — a `dynamic` Nav is a node, and which book
13337
- * the User is looking into is data (CONTEXT.md Browse). Read only while
13417
+ * the User is looking into is data (GLOSSARY.md Browse). Read only while
13338
13418
  * `menuNavId` is set.
13339
13419
  */
13340
13420
  menuParams: Record<string, string | number> | undefined;
13341
13421
  /**
13342
13422
  * The app whose menu an App Rail AppLogo Browsed onto, and the slot it held
13343
13423
  * then. That Browse belongs to the app: it survives an Address change that
13344
- * only moved the app to another slot (CONTEXT.md Browse).
13424
+ * only moved the app to another slot (GLOSSARY.md Browse).
13345
13425
  */
13346
13426
  browsedApp: {
13347
13427
  name: string;
@@ -13578,8 +13658,26 @@ export declare class GetNavService {
13578
13658
  * produced a 404 on the first click on chrome (ADR 0016). An extensible one
13579
13659
  * is seeded *and* asked for, exactly once, so an app's own children under it
13580
13660
  * survive; `seeded` is the flag that makes it once rather than every time.
13661
+ *
13662
+ * A Default Nav is the second id no deployment holds: the emitter writes no
13663
+ * asset for one — "an asset for it would be fetched once and used for nothing"
13664
+ * — and the parent's own asset lists its children, spliced in where it stood.
13665
+ * Asking for it is how loading the Store App requested
13666
+ * `navs/root_default.json` — never shipped, so never served.
13581
13667
  */
13582
13668
  private readonly isWanted;
13669
+ /**
13670
+ * Whether this NavId names a Platform Nav whose panel the library fills,
13671
+ * reached through a mount's prefix: `root_store_notification` is the host
13672
+ * map's own `root_notification` — seeded, and drawn by the host's chrome
13673
+ * whatever app is mounted (`isPlatformPanelNavId`, ADR 0016).
13674
+ *
13675
+ * Asking the Remote for it is a request nothing can answer: no app authors
13676
+ * `navs/root_notification.yml`, because the emitter writes App Navs only. The
13677
+ * Store App's deployment answered 409 `wc_file_not_found` for exactly this,
13678
+ * on the first click on chrome while it was mounted.
13679
+ */
13680
+ private readonly isRemotePlatformPanel;
13583
13681
  readonly getNav: (navId: string, navMap: NavMap, ctx?: GetNavContext) => Observable<NavMap>;
13584
13682
  private readonly fetchAll;
13585
13683
  private readonly fetchNav;
@@ -13676,7 +13774,7 @@ export declare class MurlUrlSerializer implements UrlSerializer {
13676
13774
  }
13677
13775
  export declare const provideMurlUrlSerializer: () => Provider;
13678
13776
  /**
13679
- * NavId <-> Address. See libs/one/CONTEXT.md and docs/adr/0014.
13777
+ * NavId <-> Address. See libs/one/GLOSSARY.md and docs/adr/0014.
13680
13778
  *
13681
13779
  * A NavId is the full path joined with `_`, always rooted: `root`,
13682
13780
  * `root_settings_user`. It is separator-blind — the `/` vs `|` of an Address
@@ -13741,7 +13839,7 @@ declare const fillParams: (path: string, params?: Record<string, string | number
13741
13839
  /**
13742
13840
  * A Url NavId's route path with its params filled — and, for a NavTail, the
13743
13841
  * rest appended as its tail value names it, separators kept, since the tail is
13744
- * every segment below the Nav and not one (m-one-ui CONTEXT.md NavTail). No
13842
+ * every segment below the Nav and not one (m-one-ui GLOSSARY.md NavTail). No
13745
13843
  * tail value is no rest: the Nav's own address.
13746
13844
  */
13747
13845
  declare const fillRoutePath: (navId: string, navMap: NavMap, params?: Record<string, string | number>) => string;
@@ -13766,7 +13864,7 @@ export declare const toHostNavId: (localNavId: string, hostNavId: string) => str
13766
13864
  export declare const toLocalNavId: (hostScopedNavId: string, hostNavId: string) => string | undefined;
13767
13865
  export declare const navVisibilityGuard: CanActivateFn;
13768
13866
  /**
13769
- * The route a NavTail emits (m-one-ui CONTEXT.md NavTail): its own prefix, then
13867
+ * The route a NavTail emits (m-one-ui GLOSSARY.md NavTail): its own prefix, then
13770
13868
  * every segment below it joined into one `name` parameter. Angular's `**`
13771
13869
  * binds to no input, which is why this is a matcher and not a path. A `:x`
13772
13870
  * segment of the prefix is filled the way a path would fill it.
@@ -13793,7 +13891,7 @@ export declare class NavComponent {
13793
13891
  app: undefined;
13794
13892
  } | undefined>;
13795
13893
  /**
13796
- * The App Rail below the AppLogo (CONTEXT.md App Rail): the Main Slot's App,
13894
+ * The App Rail below the AppLogo (GLOSSARY.md App Rail): the Main Slot's App,
13797
13895
  * standing where the apps button would, then each Side App. Selecting one
13798
13896
  * opens the panel on that app's menu; the open panel rings whose menu it is.
13799
13897
  */
@@ -14038,7 +14136,7 @@ export declare class NavTrailComponent {
14038
14136
  constructor();
14039
14137
  /**
14040
14138
  * Moves the panel onto the entry's Nav and leaves the Address, and the Page
14041
- * behind the panel, where they are (CONTEXT.md Browse).
14139
+ * behind the panel, where they are (GLOSSARY.md Browse).
14042
14140
  */
14043
14141
  protected browse: (navId: string, params?: Record<string, string | number>) => void;
14044
14142
  protected onOverflow(item: MenuItem): void;
@@ -14064,7 +14162,7 @@ export declare class NavMenuComponent {
14064
14162
  filterBySearch: import("@angular/core").InputSignal<boolean>;
14065
14163
  size: typeof Size;
14066
14164
  navList: import("@angular/core").Signal<BreadcrumbTrail[] | undefined>;
14067
- /** Looks inside the row's Nav without following it (CONTEXT.md Browse). */
14165
+ /** Looks inside the row's Nav without following it (GLOSSARY.md Browse). */
14068
14166
  browse: (item: BreadcrumbTrail) => void;
14069
14167
  rows: import("@angular/core").Signal<ListItem[]>;
14070
14168
  static ɵfac: i0.ɵɵFactoryDeclaration<NavMenuComponent, never>;
@@ -14421,7 +14519,7 @@ export declare class NotificationService {
14421
14519
  /**
14422
14520
  * Browser clipboard writes a gesture may fire. Takes one object so a designed
14423
14521
  * Screen's call site builds it the way it builds every GlobalMethod's
14424
- * (CONTEXT.md GlobalMethod), and reports the outcome itself — a template call
14522
+ * (GLOSSARY.md GlobalMethod), and reports the outcome itself — a template call
14425
14523
  * has nowhere to await the write.
14426
14524
  */
14427
14525
  export declare class ClipboardService {
@@ -16009,4 +16107,214 @@ interface AuthResult {
16009
16107
  tokens: SharedToken;
16010
16108
  }
16011
16109
  export declare function injectAuthenticate(): () => Promise<AuthResult>;
16012
- export type { Accordion, AccordionGroup, AccordionVariant, AppCardData, AppCardInputs, AppCardVariant, AppManifest, AppTileData, AssetOption, 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, 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, SearchChangeEvent, SectionAccordion, SectionAccordionGroup, SectionAccordionGroupContext, SectionAccordionRef, SectionButtonGroupConfig, SectionFilterGroupConfig, SectionHero, SectionHeroVariant, SectionTableAlign, SectionTableColumn, SectionTableConfig, SectionTableDataType, SectionTableSort, SectionTableSortDirection, SectionTableVariant, SectionToggleItem, SectionToggleItemContext, SelectionAction, SelectionActionEvent, SelectionChangeEvent, SelectorConfig, SocketMessage, Sort, SortChange, SortChangeEvent, SortOption, SortOrder, SpacingInward, SqueezeMode, StatAlign, StatCornerEdge, StatCornerPosition, StatCornerSide, StatSurface, StatVariant, TabGroup, TableConfig, TableFilterCondition, TableFilterDef, TextOrNumberInput, Timeline, TimelineItem, TreeGridCellClickEvent, TreeGridLoadChildrenEvent, TreeGridRow, TreeGridRowSelectEvent, TreeGridToggleEvent, User };
16110
+ /** Who may see a Source — the four Audience Levels of the Sharing context. */
16111
+ type AudienceLevel = 'public' | 'private' | 'with' | 'without';
16112
+ export declare const AUDIENCE_LEVELS: readonly AudienceLevel[];
16113
+ /**
16114
+ * One Source's Audience as the picker edits it. `uids` and `groupIds` only
16115
+ * mean something for `with` (who is let in) and `without` (who is kept out).
16116
+ */
16117
+ interface Audience {
16118
+ level: AudienceLevel;
16119
+ uids: string[];
16120
+ groupIds: string[];
16121
+ }
16122
+ type GroupKind = 'friends' | 'followers' | 'custom';
16123
+ /** A named list of Users one Owner keeps for their own Audiences. */
16124
+ interface SharingGroup {
16125
+ id: string;
16126
+ kind: GroupKind;
16127
+ name: string;
16128
+ members: string[];
16129
+ }
16130
+ /** The slice of a User the picker draws: enough to name them. */
16131
+ interface AudienceMember {
16132
+ id: string;
16133
+ firstName?: string;
16134
+ lastName?: string;
16135
+ username?: string;
16136
+ }
16137
+ /** A Source's stored Audience and whether its context Locked it. */
16138
+ interface SourceAudience {
16139
+ audience: Audience;
16140
+ locked: boolean;
16141
+ }
16142
+ /**
16143
+ * The picker's config bag (`audience_picker/<name>.yml`). Scalars ride the tag
16144
+ * (ADR 0010); the asset holds the one list — which Audience Levels to offer.
16145
+ */
16146
+ type AudiencePicker = Config & {
16147
+ levels?: AudienceLevel[];
16148
+ labelled?: boolean;
16149
+ align?: 'left' | 'right';
16150
+ width?: string;
16151
+ };
16152
+ /**
16153
+ * Everything the Audience picker reads or writes. A token rather than a
16154
+ * concrete service so a host can stand a stub in while the Sharing api does
16155
+ * not answer yet, or route the calls through its own store.
16156
+ */
16157
+ interface SharingClient {
16158
+ /** The caller's own Groups. */
16159
+ groups(): Observable<SharingGroup[]>;
16160
+ /** Users whose first or last name starts with every word of `q`. */
16161
+ searchUsers(q: string): Observable<AudienceMember[]>;
16162
+ /** Names for Users already picked, so a chip reads as a person, not an id. */
16163
+ users(ids: string[]): Observable<AudienceMember[]>;
16164
+ /** A Source's stored Audience. */
16165
+ audience(source: string): Observable<SourceAudience>;
16166
+ /** Replaces an existing Source's Audience; the Owner only, never Locked. */
16167
+ saveAudience(source: string, audience: Audience): Observable<SourceAudience>;
16168
+ }
16169
+ export declare class HttpSharingClient implements SharingClient {
16170
+ private readonly http;
16171
+ groups: () => Observable<SharingGroup[]>;
16172
+ searchUsers: (q: string) => Observable<AudienceMember[]>;
16173
+ users: (ids: string[]) => Observable<AudienceMember[]>;
16174
+ audience: (source: string) => Observable<SourceAudience>;
16175
+ saveAudience: (source: string, audience: Audience) => Observable<SourceAudience>;
16176
+ }
16177
+ export declare const SHARING_CLIENT: InjectionToken<SharingClient>;
16178
+ /**
16179
+ * The popover an Audience picker opens: the Audience Levels on offer, then —
16180
+ * for `with` / `without` — the caller's Groups and a people search. Emits
16181
+ * every change at once; the picker decides whether it is kept or saved.
16182
+ */
16183
+ export declare class AudiencePickerBoxComponent {
16184
+ readonly audience: import("@angular/core").InputSignal<Audience>;
16185
+ readonly levels: import("@angular/core").InputSignal<readonly AudienceLevel[]>;
16186
+ readonly locked: import("@angular/core").InputSignal<boolean>;
16187
+ readonly client: import("@angular/core").InputSignal<SharingClient>;
16188
+ readonly changed: import("@angular/core").OutputEmitterRef<Audience>;
16189
+ readonly done: import("@angular/core").OutputEmitterRef<void>;
16190
+ private readonly i18n;
16191
+ protected readonly query: import("@angular/core").WritableSignal<string>;
16192
+ private readonly known;
16193
+ protected readonly icons: Record<AudienceLevel, string>;
16194
+ protected readonly picksMembers: import("@angular/core").Signal<boolean>;
16195
+ private readonly groupsResource;
16196
+ protected readonly groups: import("@angular/core").Signal<import("@magmonium/one").SharingGroup[]>;
16197
+ private readonly searchResource;
16198
+ protected readonly results: import("@angular/core").Signal<AudienceMember[]>;
16199
+ protected readonly searchConfig: import("@angular/core").Signal<Partial<TextInput>>;
16200
+ constructor();
16201
+ protected readonly name: (id: string) => string;
16202
+ protected readonly isPicked: (id: string) => boolean;
16203
+ protected readonly hasGroup: (id: string) => boolean;
16204
+ protected readonly setLevel: (level: AudienceLevel) => void;
16205
+ protected readonly flipUser: (uid: string) => void;
16206
+ protected readonly flipGroup: (groupId: string) => void;
16207
+ private readonly remember;
16208
+ static ɵfac: i0.ɵɵFactoryDeclaration<AudiencePickerBoxComponent, never>;
16209
+ static ɵcmp: i0.ɵɵComponentDeclaration<AudiencePickerBoxComponent, "m-audience-picker-box", never, {
16210
+ "audience": {
16211
+ "alias": "audience";
16212
+ "required": false;
16213
+ "isSignal": true;
16214
+ };
16215
+ "levels": {
16216
+ "alias": "levels";
16217
+ "required": false;
16218
+ "isSignal": true;
16219
+ };
16220
+ "locked": {
16221
+ "alias": "locked";
16222
+ "required": false;
16223
+ "isSignal": true;
16224
+ };
16225
+ "client": {
16226
+ "alias": "client";
16227
+ "required": true;
16228
+ "isSignal": true;
16229
+ };
16230
+ }, {
16231
+ "changed": "changed";
16232
+ "done": "done";
16233
+ }, never, never, true, never>;
16234
+ }
16235
+ /**
16236
+ * Who may see a thing, picked from one icon — the context-menu gesture: the
16237
+ * trigger draws the current Audience Level, a click opens the levels, Groups
16238
+ * and people beside it.
16239
+ *
16240
+ * Controlled: `[(audience)]` — the host keeps the value and sends it with its
16241
+ * own save (a thing being created has no Audience to edit yet).
16242
+ * Bound: `source="<id>"` — the picker loads and saves that Source's Audience
16243
+ * itself, and a Locked one opens read-only.
16244
+ */
16245
+ export declare class AudiencePickerComponent extends ConfigComponent<AudiencePicker> {
16246
+ readonly audience: import("@angular/core").ModelSignal<Audience | undefined>;
16247
+ readonly source: import("@angular/core").InputSignal<string | undefined>;
16248
+ readonly locked: import("@angular/core").InputSignal<boolean>;
16249
+ readonly labelled: import("@angular/core").InputSignal<boolean | undefined>;
16250
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
16251
+ readonly align: import("@angular/core").InputSignal<"left" | "right" | undefined>;
16252
+ protected readonly subFolder = "audience_picker";
16253
+ protected readonly open: import("@angular/core").WritableSignal<boolean>;
16254
+ private readonly client;
16255
+ private readonly i18n;
16256
+ private readonly selectorDir;
16257
+ private readonly sourceLocked;
16258
+ private readonly pickerConfig;
16259
+ protected readonly current: import("@angular/core").Signal<Audience>;
16260
+ protected readonly levels: import("@angular/core").Signal<readonly AudienceLevel[]>;
16261
+ protected readonly isLocked: import("@angular/core").Signal<boolean>;
16262
+ private readonly stored;
16263
+ protected readonly summary: import("@angular/core").Signal<string>;
16264
+ protected readonly triggerConfig: import("@angular/core").Signal<Partial<Button>>;
16265
+ protected readonly selectorConfig: import("@angular/core").Signal<SelectorConfig<AudiencePickerBoxComponent> | undefined>;
16266
+ constructor();
16267
+ private readonly apply;
16268
+ private readonly levelTitle;
16269
+ static ɵfac: i0.ɵɵFactoryDeclaration<AudiencePickerComponent, never>;
16270
+ static ɵcmp: i0.ɵɵComponentDeclaration<AudiencePickerComponent, "m-audience-picker, m-one-audience-picker", never, {
16271
+ "audience": {
16272
+ "alias": "audience";
16273
+ "required": false;
16274
+ "isSignal": true;
16275
+ };
16276
+ "source": {
16277
+ "alias": "source";
16278
+ "required": false;
16279
+ "isSignal": true;
16280
+ };
16281
+ "locked": {
16282
+ "alias": "locked";
16283
+ "required": false;
16284
+ "isSignal": true;
16285
+ };
16286
+ "labelled": {
16287
+ "alias": "labelled";
16288
+ "required": false;
16289
+ "isSignal": true;
16290
+ };
16291
+ "disabled": {
16292
+ "alias": "disabled";
16293
+ "required": false;
16294
+ "isSignal": true;
16295
+ };
16296
+ "align": {
16297
+ "alias": "align";
16298
+ "required": false;
16299
+ "isSignal": true;
16300
+ };
16301
+ }, {
16302
+ "audience": "audienceChange";
16303
+ }, never, never, true, never>;
16304
+ }
16305
+ /** Deny by default: an Audience nobody has chosen yet is the Owner's alone. */
16306
+ export declare const DEFAULT_AUDIENCE: Audience;
16307
+ export declare const AUDIENCE_ICONS: Record<AudienceLevel, string>;
16308
+ /** Whether a level is followed by a pick of Users and Groups. */
16309
+ export declare const picksMembers: (level: AudienceLevel) => boolean;
16310
+ /**
16311
+ * Moves an Audience to `level`. A level that picks nobody drops the picks,
16312
+ * so a stored `public` never carries a stale list; switching between `with`
16313
+ * and `without` keeps them, since the same people are usually meant.
16314
+ */
16315
+ export declare const withLevel: (audience: Audience, level: AudienceLevel) => Audience;
16316
+ export declare const toggleUid: (audience: Audience, uid: string) => Audience;
16317
+ export declare const toggleGroup: (audience: Audience, groupId: string) => Audience;
16318
+ /** How many Users and Groups an Audience names. */
16319
+ export declare const pickCount: (audience: Audience) => number;
16320
+ export type { Accordion, AccordionGroup, AccordionVariant, AppCardData, AppCardInputs, AppCardVariant, 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, GroupKind, 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, 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, TextOrNumberInput, Timeline, TimelineItem, TreeGridCellClickEvent, TreeGridLoadChildrenEvent, TreeGridRow, TreeGridRowSelectEvent, TreeGridToggleEvent, User };