@magmonium/one 0.4.33 → 0.4.35

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 (40) hide show
  1. package/assets/buttons/audience_done.json +4 -0
  2. package/assets/i18n/ar.json +14 -0
  3. package/assets/i18n/de.json +14 -0
  4. package/assets/i18n/en.json +14 -0
  5. package/assets/i18n/es.json +14 -0
  6. package/assets/i18n/fr.json +14 -0
  7. package/assets/i18n/hi.json +14 -0
  8. package/assets/i18n/it.json +14 -0
  9. package/assets/i18n/ja.json +14 -0
  10. package/assets/i18n/ko.json +14 -0
  11. package/assets/i18n/nl.json +14 -0
  12. package/assets/i18n/pl.json +14 -0
  13. package/assets/i18n/pt.json +14 -0
  14. package/assets/i18n/ru.json +14 -0
  15. package/assets/i18n/tr.json +14 -0
  16. package/assets/i18n/zh.json +14 -0
  17. package/assets/index.json +1 -1
  18. package/fesm2022/{magmonium-one-base-dropdown-U-cWl3p9.mjs → magmonium-one-base-dropdown-Ck4geeN4.mjs} +2 -2
  19. package/fesm2022/{magmonium-one-base-dropdown-U-cWl3p9.mjs.map → magmonium-one-base-dropdown-Ck4geeN4.mjs.map} +1 -1
  20. package/fesm2022/{magmonium-one-base-text-Zb0oLNRX.mjs → magmonium-one-base-text-DRdZfrqC.mjs} +27 -3
  21. package/fesm2022/magmonium-one-base-text-DRdZfrqC.mjs.map +1 -0
  22. package/fesm2022/{magmonium-one-image-editor-BX4eNd4u.mjs → magmonium-one-image-editor-D7IuAMdl.mjs} +2 -2
  23. package/fesm2022/{magmonium-one-image-editor-BX4eNd4u.mjs.map → magmonium-one-image-editor-D7IuAMdl.mjs.map} +1 -1
  24. package/fesm2022/magmonium-one-m-ref-Bq0gQbKE.mjs.map +1 -1
  25. package/fesm2022/magmonium-one-menu-BM9f2knw.mjs.map +1 -1
  26. package/fesm2022/magmonium-one-options-asset-CDEXIif6.mjs.map +1 -1
  27. package/fesm2022/{magmonium-one-otp-DO4oTeSK.mjs → magmonium-one-otp-Bfvbg6sY.mjs} +2 -2
  28. package/fesm2022/{magmonium-one-otp-DO4oTeSK.mjs.map → magmonium-one-otp-Bfvbg6sY.mjs.map} +1 -1
  29. package/fesm2022/{magmonium-one-password-D3oTo41c.mjs → magmonium-one-password-C_TwyLkj.mjs} +2 -2
  30. package/fesm2022/{magmonium-one-password-D3oTo41c.mjs.map → magmonium-one-password-C_TwyLkj.mjs.map} +1 -1
  31. package/fesm2022/{magmonium-one-range-D_WEKrli.mjs → magmonium-one-range-CUEJcUBc.mjs} +2 -2
  32. package/fesm2022/{magmonium-one-range-D_WEKrli.mjs.map → magmonium-one-range-CUEJcUBc.mjs.map} +1 -1
  33. package/fesm2022/magmonium-one-size-converter-BfT0Aw0g.mjs.map +1 -1
  34. package/fesm2022/{magmonium-one-text-B4xKn-EQ.mjs → magmonium-one-text-kkEMHNIt.mjs} +2 -2
  35. package/fesm2022/{magmonium-one-text-B4xKn-EQ.mjs.map → magmonium-one-text-kkEMHNIt.mjs.map} +1 -1
  36. package/fesm2022/magmonium-one.mjs +671 -43
  37. package/fesm2022/magmonium-one.mjs.map +1 -1
  38. package/package.json +1 -1
  39. package/types/magmonium-one.d.ts +292 -52
  40. package/fesm2022/magmonium-one-base-text-Zb0oLNRX.mjs.map +0 -1
@@ -9,7 +9,7 @@ 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 = {
@@ -761,7 +761,7 @@ export interface WebComponentConfig {
761
761
  selectorConfig?: Partial<RemoteSelectorConfig>;
762
762
  backend?: string;
763
763
  /**
764
- * Open App (store CONTEXT.md), stamped by the Store on the served config: a
764
+ * Open App (store GLOSSARY.md), stamped by the Store on the served config: a
765
765
  * host draws it as its own — no menu node, logo or settings of its own.
766
766
  */
767
767
  open?: boolean;
@@ -811,7 +811,7 @@ export interface NavStoreRef {
811
811
  panelNavId?: Signal<string | undefined>;
812
812
  /**
813
813
  * `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
814
+ * where they are looking (GLOSSARY.md Browse). What a row marks itself
815
815
  * against, so the row they came through stays marked while they Browse.
816
816
  * Optional: a host built before it existed provides none.
817
817
  */
@@ -840,14 +840,14 @@ export interface NavStoreRef {
840
840
  }) => void;
841
841
  /**
842
842
  * 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
843
+ * the Page stay put (GLOSSARY.md Browse). `params` names the instance of a
844
844
  * `dynamic` Nav. Optional: a host built before it existed provides none.
845
845
  */
846
846
  browse?: (navId: string, params?: Record<string, string | number>) => void;
847
847
  /**
848
848
  * Follows a NavRef whose dynamic segments are keyed by the Nav contributing
849
849
  * 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
850
+ * (m-one-ui GLOSSARY.md OutcomeNav). Optional: a host built before it existed
851
851
  * provides none, and the gesture then does nothing rather than throwing.
852
852
  */
853
853
  followNav?: (navId: string, byNav?: Record<string, string | number>, options?: {
@@ -1043,7 +1043,7 @@ export declare const APP_LINK: InjectionToken<WritableSignal<string | undefined>
1043
1043
  /**
1044
1044
  * The loading counter this application's requests move, ahead of the host's
1045
1045
  * 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.
1046
+ * `busy` on (libs/one GLOSSARY.md Plugin); unset, the host's counter is used.
1047
1047
  */
1048
1048
  export declare const LOADING_ACTIONS_REF: InjectionToken<LoadingActionsApi>;
1049
1049
  export declare const IS_SIDE_PANEL: InjectionToken<boolean>;
@@ -1211,6 +1211,27 @@ export declare function derivePropertyName(inputString: string, type: ColorPrope
1211
1211
  export declare function setProperty(element: HTMLElement, key: string, value: string | null): void;
1212
1212
  export declare function getProperty(element: HTMLElement, key: string): string;
1213
1213
  export declare function classListSignal(element: Element): Signal<string[]>;
1214
+ /**
1215
+ * Which element in `node`'s own root holds the caret — the document for a node
1216
+ * in the light DOM, the nearest shadow root for a node inside one — or null when
1217
+ * nothing there does.
1218
+ *
1219
+ * `document.activeElement` is the wrong question for anything that may be
1220
+ * mounted in a shadow root, and every Screen of an app loaded under m-ui is: the
1221
+ * Web Component wrapper gives the app's root `ViewEncapsulation.ShadowDom`, so
1222
+ * the app renders in one. Asked from inside, the document answers with the
1223
+ * shadow **host** — an ancestor of whoever is asking — and `contains` does not
1224
+ * walk across the boundary, so `node.contains(document.activeElement)` reads
1225
+ * false however well `node` holds the focus. The Section's search bar, asking
1226
+ * the document whether its own freshly-focused input still holds the caret,
1227
+ * therefore closes itself on the very click that opened it: the toggle is
1228
+ * destroyed, the input mounts, the deferred check sees the host instead of the
1229
+ * input, and `close` is called.
1230
+ *
1231
+ * Null is the honest answer for "no caret has been placed here", which is what
1232
+ * a caller guarding against stealing one is asking.
1233
+ */
1234
+ export declare function activeElementWithin(node: Node): Element | null;
1214
1235
  export declare function getScrollParent(node: Node | null): HTMLElement | Window;
1215
1236
  export declare function isJson(data: unknown): boolean;
1216
1237
  export declare function getValue<T, K extends keyof T>(obj: T, key: K): T[K];
@@ -1370,7 +1391,7 @@ export declare const pickSupportedLanguage: (own: string | undefined, supported:
1370
1391
  /**
1371
1392
  * One loading counter and the actions that move it. The module's own is the
1372
1393
  * app-wide one every Screen's `busy` reads; a Plugin makes another so its
1373
- * requests never move it (libs/one CONTEXT.md Plugin).
1394
+ * requests never move it (libs/one GLOSSARY.md Plugin).
1374
1395
  */
1375
1396
  export declare function createLoadingState(): {
1376
1397
  isLoading: import("@angular/core").Signal<boolean>;
@@ -1699,7 +1720,7 @@ export declare class MHeroColorDirective {
1699
1720
  /**
1700
1721
  * NavRef link. `mRef` names a target by NavId and nothing else — the NavKind on
1701
1722
  * 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.
1723
+ * directive never chooses. See libs/one/GLOSSARY.md (NavRef) and ADR 0014.
1703
1724
  */
1704
1725
  export declare class MRefDirective {
1705
1726
  #private;
@@ -1911,6 +1932,8 @@ export declare abstract class BaseRootWebComponent extends BaseWebComponent {
1911
1932
  private readonly navWidgetMaps;
1912
1933
  private readonly appBaseHref;
1913
1934
  private readonly location;
1935
+ private readonly locationStrategy;
1936
+ private readonly platformLocation;
1914
1937
  private readonly injector;
1915
1938
  private readonly wcComponents;
1916
1939
  private readonly defaultNavId;
@@ -2071,6 +2094,13 @@ export interface MountMatch {
2071
2094
  base: string;
2072
2095
  }
2073
2096
  export declare const mountPatternProblem: (pattern: MountPattern) => MountPatternProblem | undefined;
2097
+ /**
2098
+ * A match's `base` as the page address holds it. A pattern is matched against
2099
+ * the Router it is drawn in, and an app mounted in a host reads its paths below
2100
+ * that host's base: the Store App's test page at `/store/<id>/manage/test`
2101
+ * matches `/<id>/manage/test`, and the beta under it stands at the full path.
2102
+ */
2103
+ export declare const baseUnderHost: (hostBase: string | undefined, base: string) => string;
2074
2104
  /**
2075
2105
  * Where the host's primary path stands against a pattern — `null` when it does
2076
2106
  * not reach the `navUrl`, so a Remote never reads a navUrl off a stranger's URL.
@@ -2091,7 +2121,7 @@ export interface PluginOutput {
2091
2121
  export declare const PLUGIN_FALLBACK_LANG = "en";
2092
2122
  export declare const PLUGIN_SCREENS: InjectionToken<ExposedScreens[]>;
2093
2123
  /**
2094
- * Offers Screens to other apps as Plugins (libs/one CONTEXT.md). Listed in the
2124
+ * Offers Screens to other apps as Plugins (libs/one GLOSSARY.md). Listed in the
2095
2125
  * app's providers; its wc bundle defines one element per Screen at load,
2096
2126
  * without booting the app's root.
2097
2127
  */
@@ -3925,7 +3955,7 @@ declare class BaseTextInputComponent<T extends Input = TextInput> extends BaseIn
3925
3955
  /**
3926
3956
  * What the results component's search input is called when nobody says
3927
3957
  * otherwise — the name the design editor mints on a results Screen, spelled
3928
- * here so a hand-written caller lands on the same word (CONTEXT.md
3958
+ * here so a hand-written caller lands on the same word (GLOSSARY.md
3929
3959
  * SearchResultsScreen).
3930
3960
  */
3931
3961
  declare const SEARCH_RESULT_INPUT = "search";
@@ -4208,7 +4238,7 @@ export declare class SectionFilterComponent {
4208
4238
  /**
4209
4239
  * How many numbers a `range` Filter picks: two by default, one under
4210
4240
  * `single`, where its key carries that number rather than a pair
4211
- * (CONTEXT.md FilterRangeMode). Ignored by the option-picking variants.
4241
+ * (GLOSSARY.md FilterRangeMode). Ignored by the option-picking variants.
4212
4242
  */
4213
4243
  readonly mode: import("@angular/core").InputSignal<FilterRangeMode>;
4214
4244
  /**
@@ -5134,7 +5164,7 @@ export declare const SECTION_ACCORDION_GROUP: InjectionToken<SectionAccordionGro
5134
5164
  * its projected `m-section-header` (nothing renders, and the Section never
5135
5165
  * collapses, if it has no header) and everything below the header collapses
5136
5166
  * as one region. Ungrouped, starts open; inside an `mAccordionGroup`, only
5137
- * the first-registered member starts open (CONTEXT.md SectionAccordion).
5167
+ * the first-registered member starts open (GLOSSARY.md SectionAccordion).
5138
5168
  */
5139
5169
  export declare class SectionAccordionDirective implements SectionAccordionRef, OnInit, OnDestroy {
5140
5170
  readonly mAccordion: import("@angular/core").InputSignal<string | Partial<SectionAccordion> | null | undefined>;
@@ -5503,7 +5533,7 @@ type SectionButtonGroupConfig = Config & {
5503
5533
  * whatever Size the nearest Section put on the cascade, which is why its
5504
5534
  * Buttons then land on that Section's input geometry with no sizing code here:
5505
5535
  * both are 2.25x the Size.
5506
- * See CONTEXT.md `SectionButtonGroup` and ADR 0008, ADR 0009.
5536
+ * See GLOSSARY.md `SectionButtonGroup` and ADR 0008, ADR 0009.
5507
5537
  */
5508
5538
  export declare class SectionButtonGroupComponent extends ConfigComponent<SectionButtonGroupConfig> {
5509
5539
  subFolder: "section_button_groups";
@@ -5549,7 +5579,7 @@ export declare class SectionButtonGroupComponent extends ConfigComponent<Section
5549
5579
  }, {}, never, ["m-button, m-one-button", "*"], true, never>;
5550
5580
  }
5551
5581
  /**
5552
- * The table composed from projected markup (CONTEXT.md SectionTable): the
5582
+ * The table composed from projected markup (GLOSSARY.md SectionTable): the
5553
5583
  * `<table>` and its configured heading are this component's, every row is
5554
5584
  * projected. A row written inside an `@for` is drawn once per item, one outside
5555
5585
  * it once — so a `<tr m-section-table-row>` is all the body ever holds, and
@@ -5626,7 +5656,7 @@ export declare class SectionTableComponent extends ConfigComponent<SectionTableC
5626
5656
  }, never, ["*", "m-section-pagination"], true, never>;
5627
5657
  }
5628
5658
  /**
5629
- * One `<tr>` of a SectionTable (CONTEXT.md SectionTableRow). An attribute on a
5659
+ * One `<tr>` of a SectionTable (GLOSSARY.md SectionTableRow). An attribute on a
5630
5660
  * real `<tr>` rather than an element of its own: a component host between
5631
5661
  * `<tbody>` and its cells breaks table layout. Repeated or static is decided by
5632
5662
  * where it was written, never by a setting here.
@@ -5640,7 +5670,7 @@ export declare class SectionTableRowComponent {
5640
5670
  }, never, ["*"], true, never>;
5641
5671
  }
5642
5672
  /**
5643
- * One `<td>` of a SectionTableRow (CONTEXT.md SectionTableCell), holding any
5673
+ * One `<td>` of a SectionTableRow (GLOSSARY.md SectionTableCell), holding any
5644
5674
  * content. Answers to the column at its own position — its `cellIndex`, which
5645
5675
  * only the DOM knows once the row is laid out — for alignment, Squeeze and
5646
5676
  * freezing, and configures none of them itself.
@@ -5839,7 +5869,7 @@ type BoundConfig = Partial<Input> & {
5839
5869
  * The panel a `range` Filter opens: a slider over the authored bounds, and the
5840
5870
  * numeric boxes under it. Two thumbs and two boxes by default; one of each in
5841
5871
  * `single` mode, where the Filter picks one number rather than a pair
5842
- * (CONTEXT.md FilterRangeMode). One panel for both, because the modes differ
5872
+ * (GLOSSARY.md FilterRangeMode). One panel for both, because the modes differ
5843
5873
  * only in how many answers come back — the bounds and the fallbacks are the
5844
5874
  * same authoring either way.
5845
5875
  *
@@ -5867,7 +5897,7 @@ export declare class SectionFilterRangePanelComponent {
5867
5897
  readonly value: import("@angular/core").InputSignal<readonly (string | number)[]>;
5868
5898
  readonly min: import("@angular/core").InputSignal<number | undefined>;
5869
5899
  readonly max: import("@angular/core").InputSignal<number | undefined>;
5870
- /** One thumb or two. `range` by default (CONTEXT.md FilterRangeMode). */
5900
+ /** One thumb or two. `range` by default (GLOSSARY.md FilterRangeMode). */
5871
5901
  readonly mode: import("@angular/core").InputSignal<FilterRangeMode>;
5872
5902
  /** The Filter's own heading, already a TranslationAsset key. */
5873
5903
  readonly label: import("@angular/core").InputSignal<string>;
@@ -6799,7 +6829,7 @@ type CheckboxGroupRow = {
6799
6829
  readonly checkbox: Partial<Input>;
6800
6830
  };
6801
6831
  /**
6802
- * The many-pick sibling of `m-radio-group` (CONTEXT.md CheckboxGroup). One
6832
+ * The many-pick sibling of `m-radio-group` (GLOSSARY.md CheckboxGroup). One
6803
6833
  * `m-checkbox` per option, its value the picked options' values in option
6804
6834
  * order. Options are bound, placed or named (ADR 0039, ADR 0041): bound or
6805
6835
  * placed `options` win, and an OptionSet named by `optionsAsset` / `mOptions`
@@ -7465,7 +7495,7 @@ export declare function normalizeAssetOptions(data: AssetOption[] | AssetOption[
7465
7495
  export declare function assetOptions(name?: () => string | undefined): Signal<DropdownOption[]>;
7466
7496
  /**
7467
7497
  * Starts a Field on its list's `default` row when it holds no value of its own
7468
- * (m-one-ui CONTEXT.md OptionSet). The Field's own value — its config, its form
7498
+ * (m-one-ui GLOSSARY.md OptionSet). The Field's own value — its config, its form
7469
7499
  * data — outranks the row, so a value already held is kept.
7470
7500
  *
7471
7501
  * Each marked row is consulted once: a User who clears the pick is not handed
@@ -7878,7 +7908,7 @@ declare const fileMatchesAccept: (file: Pick<File, "name" | "type">, accept: rea
7878
7908
  /**
7879
7909
  * Splits picked or dropped files into the ones the Field keeps and the ones it
7880
7910
  * reports. A drop never passes the native picker, so this is where `accept` and
7881
- * `maxSize` are enforced rather than merely suggested (CONTEXT.md DropZone).
7911
+ * `maxSize` are enforced rather than merely suggested (GLOSSARY.md DropZone).
7882
7912
  */
7883
7913
  declare const screenFiles: (files: readonly File[], accept: readonly string[], maxSize: number | undefined) => FileScreen;
7884
7914
  /** Appends `incoming` to `current`, skipping a file already held. */
@@ -8092,7 +8122,7 @@ export declare class ListComponent extends ConfigComponent<ListConfig> {
8092
8122
  * row authored in the asset reaches the template the way a mapped one does:
8093
8123
  * an authored `ListItem` carries no `row` of its own, and a body reading
8094
8124
  * `undefined` would make the static source unusable to anything but a bare
8095
- * label (m-one-ui CONTEXT.md ListControl).
8125
+ * label (m-one-ui GLOSSARY.md ListControl).
8096
8126
  */
8097
8127
  protected readonly rowContext: (item: ListItem, index: number, first: boolean, last: boolean) => ListContext;
8098
8128
  static ɵfac: i0.ɵɵFactoryDeclaration<ListComponent, never>;
@@ -8964,7 +8994,7 @@ export declare class SectionFormItemComponent extends ConfigComponent<Input> imp
8964
8994
  }, ["projectedTemplate", "placedCheckboxes"], never, true, never>;
8965
8995
  }
8966
8996
  /**
8967
- * Names the AssetOptions list a Field chooses from (CONTEXT.md OptionsSource).
8997
+ * Names the AssetOptions list a Field chooses from (GLOSSARY.md OptionsSource).
8968
8998
  * The markup spelling of the `optionsAsset:` config key, added beside it rather
8969
8999
  * than in place of it (ADR 0010) — a Field still described by a file keeps
8970
9000
  * declaring the key inside that file.
@@ -10227,7 +10257,7 @@ export declare class RemoteComponent implements OnDestroy {
10227
10257
  */
10228
10258
  export type PluginSource = 'local' | 'beta' | 'published';
10229
10259
  /**
10230
- * Mounts another app's Exposed Screen as a Plugin (libs/one CONTEXT.md): an
10260
+ * Mounts another app's Exposed Screen as a Plugin (libs/one GLOSSARY.md): an
10231
10261
  * AppLink, the Screen's name, a value per input and one `output` event per
10232
10262
  * output the Screen emits. Never a whole app and never an address — that is
10233
10263
  * `m-remote`.
@@ -11991,7 +12021,7 @@ type StatAlign = 'left' | 'center' | 'right';
11991
12021
  type StatSurface = 'plain' | 'card' | 'shadow' | 'glow' | 'gradient';
11992
12022
  /**
11993
12023
  * A KeyValue with a corner mark: a label, a large value, and a small secondary
11994
- * value set against the value itself (CONTEXT.md Stat).
12024
+ * value set against the value itself (GLOSSARY.md Stat).
11995
12025
  *
11996
12026
  * The label is an attribute because a name is a string either way — a
11997
12027
  * TranslationAsset key, or a row's own text under `noTranslate` (ADR 0022);
@@ -12236,7 +12266,7 @@ export type PanelOverlayConfig = Config & {
12236
12266
  };
12237
12267
  /**
12238
12268
  * What a store hands `ModalStore.openScreen` — the programmatic counterpart of
12239
- * `mModal` / `mSidePanel` (CONTEXT.md OverlayTrigger).
12269
+ * `mModal` / `mSidePanel` (GLOSSARY.md OverlayTrigger).
12240
12270
  *
12241
12271
  * One shape for both overlays rather than two: `as` says which, and the caller
12242
12272
  * is one generated `tap` that has already drawn the answer. A directive resolves
@@ -12677,7 +12707,7 @@ export type BreadcrumbTrail = {
12677
12707
  /**
12678
12708
  * NavRef — names the target by NavId only. The NavKind on the target decides
12679
12709
  * whether following it routes or opens a panel, so a link can never pick the
12680
- * wrong kind. See libs/one/CONTEXT.md (NavRef) and ADR 0014.
12710
+ * wrong kind. See libs/one/GLOSSARY.md (NavRef) and ADR 0014.
12681
12711
  */
12682
12712
  nav?: string;
12683
12713
  /**
@@ -12694,7 +12724,7 @@ export type BreadcrumbTrail = {
12694
12724
  href?: string;
12695
12725
  /**
12696
12726
  * A menu row whose Nav would draw rows of its own: it carries a chevron that
12697
- * Browses into it while the row itself follows it (CONTEXT.md Browse).
12727
+ * Browses into it while the row itself follows it (GLOSSARY.md Browse).
12698
12728
  */
12699
12729
  browsable?: boolean;
12700
12730
  };
@@ -12703,7 +12733,7 @@ export type BreadCrumb = {
12703
12733
  header: BreadcrumbTrail;
12704
12734
  };
12705
12735
  /**
12706
- * Nav model — see libs/one/CONTEXT.md (NavId, NavKind, Address, Anchor, NavRef)
12736
+ * Nav model — see libs/one/GLOSSARY.md (NavId, NavKind, Address, Anchor, NavRef)
12707
12737
  * and docs/adr/0014.
12708
12738
  */
12709
12739
  /** How a Nav is reached. A property of the node, never of the link. */
@@ -12732,7 +12762,7 @@ export type Nav = {
12732
12762
  */
12733
12763
  param?: string;
12734
12764
  /**
12735
- * A NavTail's parameter name (m-one-ui CONTEXT.md NavTail): every segment
12765
+ * A NavTail's parameter name (m-one-ui GLOSSARY.md NavTail): every segment
12736
12766
  * below the Nav's own path is one value under this name, separators kept —
12737
12767
  * `code/<path>` with `path` = `src/app/x.ts`. Routed by `navTailMatcher`.
12738
12768
  */
@@ -12746,7 +12776,7 @@ export type Nav = {
12746
12776
  seeded?: boolean;
12747
12777
  };
12748
12778
  /**
12749
- * One row a `dynamic` Nav resolves to at runtime (CONTEXT.md NavRow).
12779
+ * One row a `dynamic` Nav resolves to at runtime (GLOSSARY.md NavRow).
12750
12780
  *
12751
12781
  * `value` is the [NavParam] value and never a NavId — a NavRef names a node
12752
12782
  * and the instance rides alongside as params, so a row can never disagree with
@@ -12821,7 +12851,7 @@ interface NavMenuConfig {
12821
12851
  }
12822
12852
  /**
12823
12853
  * What a `dynamic` Nav registers instead of a panel: the rows it resolves at
12824
- * runtime (CONTEXT.md NavRowSource). Registered under the dynamic Nav's own
12854
+ * runtime (GLOSSARY.md NavRowSource). Registered under the dynamic Nav's own
12825
12855
  * NavId, but drawn in *its parent's* panel — the rows are spliced where its
12826
12856
  * own row stood, the transparency a Default Nav already has, because a row
12827
12857
  * labelled `with-category` names nothing a User recognises.
@@ -12861,7 +12891,7 @@ interface NavRowsConfig {
12861
12891
  /**
12862
12892
  * What a `dynamic` Nav registers to answer *which instance the User is standing
12863
12893
  * on*, as against `NavRowsConfig`, which answers *where they may go*
12864
- * (CONTEXT.md NavInstanceSource, ADR 0030). Registered under the dynamic Nav's
12894
+ * (GLOSSARY.md NavInstanceSource, ADR 0030). Registered under the dynamic Nav's
12865
12895
  * own NavId, and read by the trail and the panel header rather than by any
12866
12896
  * menu: a row list is a menu answer, and one deep link into `/app/:id/about`
12867
12897
  * needs a name for `:id` whether or not a menu of every app would even be
@@ -12891,7 +12921,7 @@ interface NavInstanceConfig {
12891
12921
  navInstanceLoad?: (params: Record<string, string>) => void;
12892
12922
  }
12893
12923
  /**
12894
- * What a gate answers (m-one-ui CONTEXT.md NavVisibilitySource).
12924
+ * What a gate answers (m-one-ui GLOSSARY.md NavVisibilitySource).
12895
12925
  *
12896
12926
  * **Three states, and one of them is a promise.** `true` / `false` are the
12897
12927
  * answer; `undefined` is *not answerable yet* — the state the gate reads has
@@ -12906,7 +12936,7 @@ interface NavInstanceConfig {
12906
12936
  */
12907
12937
  type NavVisibleAnswer = boolean | undefined | Promise<boolean>;
12908
12938
  /**
12909
- * Whether one Nav is shown and reachable at all (m-one-ui CONTEXT.md
12939
+ * Whether one Nav is shown and reachable at all (m-one-ui GLOSSARY.md
12910
12940
  * NavVisibilitySource). Registered under that Nav's own NavId beside whatever
12911
12941
  * else it registers — the configs are not exclusive, which is why every guard
12912
12942
  * here tests for its own key rather than for the absence of another's.
@@ -12929,7 +12959,7 @@ interface NavVisibilityConfig {
12929
12959
  navVisible: (params: Record<string, string>) => NavVisibleAnswer;
12930
12960
  /**
12931
12961
  * Fired before the gate is believed, so a gate reading state the store does
12932
- * not hold yet has something filling it (m-one-ui CONTEXT.md
12962
+ * not hold yet has something filling it (m-one-ui GLOSSARY.md
12933
12963
  * NavVisibilitySource).
12934
12964
  *
12935
12965
  * This is what makes *is this app's uid the signed-in user* answerable on a
@@ -13320,19 +13350,19 @@ interface NavState {
13320
13350
  navOpenedByUser: boolean;
13321
13351
  /**
13322
13352
  * The Nav a Browse moved the panel onto — up, down or sideways — while the
13323
- * Address, and the Page, stay put (CONTEXT.md Browse).
13353
+ * Address, and the Page, stay put (GLOSSARY.md Browse).
13324
13354
  */
13325
13355
  menuNavId: string | undefined;
13326
13356
  /**
13327
13357
  * The instances the Browse names — a `dynamic` Nav is a node, and which book
13328
- * the User is looking into is data (CONTEXT.md Browse). Read only while
13358
+ * the User is looking into is data (GLOSSARY.md Browse). Read only while
13329
13359
  * `menuNavId` is set.
13330
13360
  */
13331
13361
  menuParams: Record<string, string | number> | undefined;
13332
13362
  /**
13333
13363
  * The app whose menu an App Rail AppLogo Browsed onto, and the slot it held
13334
13364
  * then. That Browse belongs to the app: it survives an Address change that
13335
- * only moved the app to another slot (CONTEXT.md Browse).
13365
+ * only moved the app to another slot (GLOSSARY.md Browse).
13336
13366
  */
13337
13367
  browsedApp: {
13338
13368
  name: string;
@@ -13667,7 +13697,7 @@ export declare class MurlUrlSerializer implements UrlSerializer {
13667
13697
  }
13668
13698
  export declare const provideMurlUrlSerializer: () => Provider;
13669
13699
  /**
13670
- * NavId <-> Address. See libs/one/CONTEXT.md and docs/adr/0014.
13700
+ * NavId <-> Address. See libs/one/GLOSSARY.md and docs/adr/0014.
13671
13701
  *
13672
13702
  * A NavId is the full path joined with `_`, always rooted: `root`,
13673
13703
  * `root_settings_user`. It is separator-blind — the `/` vs `|` of an Address
@@ -13732,7 +13762,7 @@ declare const fillParams: (path: string, params?: Record<string, string | number
13732
13762
  /**
13733
13763
  * A Url NavId's route path with its params filled — and, for a NavTail, the
13734
13764
  * rest appended as its tail value names it, separators kept, since the tail is
13735
- * every segment below the Nav and not one (m-one-ui CONTEXT.md NavTail). No
13765
+ * every segment below the Nav and not one (m-one-ui GLOSSARY.md NavTail). No
13736
13766
  * tail value is no rest: the Nav's own address.
13737
13767
  */
13738
13768
  declare const fillRoutePath: (navId: string, navMap: NavMap, params?: Record<string, string | number>) => string;
@@ -13757,7 +13787,7 @@ export declare const toHostNavId: (localNavId: string, hostNavId: string) => str
13757
13787
  export declare const toLocalNavId: (hostScopedNavId: string, hostNavId: string) => string | undefined;
13758
13788
  export declare const navVisibilityGuard: CanActivateFn;
13759
13789
  /**
13760
- * The route a NavTail emits (m-one-ui CONTEXT.md NavTail): its own prefix, then
13790
+ * The route a NavTail emits (m-one-ui GLOSSARY.md NavTail): its own prefix, then
13761
13791
  * every segment below it joined into one `name` parameter. Angular's `**`
13762
13792
  * binds to no input, which is why this is a matcher and not a path. A `:x`
13763
13793
  * segment of the prefix is filled the way a path would fill it.
@@ -13784,7 +13814,7 @@ export declare class NavComponent {
13784
13814
  app: undefined;
13785
13815
  } | undefined>;
13786
13816
  /**
13787
- * The App Rail below the AppLogo (CONTEXT.md App Rail): the Main Slot's App,
13817
+ * The App Rail below the AppLogo (GLOSSARY.md App Rail): the Main Slot's App,
13788
13818
  * standing where the apps button would, then each Side App. Selecting one
13789
13819
  * opens the panel on that app's menu; the open panel rings whose menu it is.
13790
13820
  */
@@ -14029,7 +14059,7 @@ export declare class NavTrailComponent {
14029
14059
  constructor();
14030
14060
  /**
14031
14061
  * Moves the panel onto the entry's Nav and leaves the Address, and the Page
14032
- * behind the panel, where they are (CONTEXT.md Browse).
14062
+ * behind the panel, where they are (GLOSSARY.md Browse).
14033
14063
  */
14034
14064
  protected browse: (navId: string, params?: Record<string, string | number>) => void;
14035
14065
  protected onOverflow(item: MenuItem): void;
@@ -14055,7 +14085,7 @@ export declare class NavMenuComponent {
14055
14085
  filterBySearch: import("@angular/core").InputSignal<boolean>;
14056
14086
  size: typeof Size;
14057
14087
  navList: import("@angular/core").Signal<BreadcrumbTrail[] | undefined>;
14058
- /** Looks inside the row's Nav without following it (CONTEXT.md Browse). */
14088
+ /** Looks inside the row's Nav without following it (GLOSSARY.md Browse). */
14059
14089
  browse: (item: BreadcrumbTrail) => void;
14060
14090
  rows: import("@angular/core").Signal<ListItem[]>;
14061
14091
  static ɵfac: i0.ɵɵFactoryDeclaration<NavMenuComponent, never>;
@@ -14412,7 +14442,7 @@ export declare class NotificationService {
14412
14442
  /**
14413
14443
  * Browser clipboard writes a gesture may fire. Takes one object so a designed
14414
14444
  * Screen's call site builds it the way it builds every GlobalMethod's
14415
- * (CONTEXT.md GlobalMethod), and reports the outcome itself — a template call
14445
+ * (GLOSSARY.md GlobalMethod), and reports the outcome itself — a template call
14416
14446
  * has nowhere to await the write.
14417
14447
  */
14418
14448
  export declare class ClipboardService {
@@ -16000,4 +16030,214 @@ interface AuthResult {
16000
16030
  tokens: SharedToken;
16001
16031
  }
16002
16032
  export declare function injectAuthenticate(): () => Promise<AuthResult>;
16003
- 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 };
16033
+ /** Who may see a Source — the four Audience Levels of the Sharing context. */
16034
+ type AudienceLevel = 'public' | 'private' | 'with' | 'without';
16035
+ export declare const AUDIENCE_LEVELS: readonly AudienceLevel[];
16036
+ /**
16037
+ * One Source's Audience as the picker edits it. `uids` and `groupIds` only
16038
+ * mean something for `with` (who is let in) and `without` (who is kept out).
16039
+ */
16040
+ interface Audience {
16041
+ level: AudienceLevel;
16042
+ uids: string[];
16043
+ groupIds: string[];
16044
+ }
16045
+ type GroupKind = 'friends' | 'followers' | 'custom';
16046
+ /** A named list of Users one Owner keeps for their own Audiences. */
16047
+ interface SharingGroup {
16048
+ id: string;
16049
+ kind: GroupKind;
16050
+ name: string;
16051
+ members: string[];
16052
+ }
16053
+ /** The slice of a User the picker draws: enough to name them. */
16054
+ interface AudienceMember {
16055
+ id: string;
16056
+ firstName?: string;
16057
+ lastName?: string;
16058
+ username?: string;
16059
+ }
16060
+ /** A Source's stored Audience and whether its context Locked it. */
16061
+ interface SourceAudience {
16062
+ audience: Audience;
16063
+ locked: boolean;
16064
+ }
16065
+ /**
16066
+ * The picker's config bag (`audience_picker/<name>.yml`). Scalars ride the tag
16067
+ * (ADR 0010); the asset holds the one list — which Audience Levels to offer.
16068
+ */
16069
+ type AudiencePicker = Config & {
16070
+ levels?: AudienceLevel[];
16071
+ labelled?: boolean;
16072
+ align?: 'left' | 'right';
16073
+ width?: string;
16074
+ };
16075
+ /**
16076
+ * Everything the Audience picker reads or writes. A token rather than a
16077
+ * concrete service so a host can stand a stub in while the Sharing api does
16078
+ * not answer yet, or route the calls through its own store.
16079
+ */
16080
+ interface SharingClient {
16081
+ /** The caller's own Groups. */
16082
+ groups(): Observable<SharingGroup[]>;
16083
+ /** Users whose first or last name starts with every word of `q`. */
16084
+ searchUsers(q: string): Observable<AudienceMember[]>;
16085
+ /** Names for Users already picked, so a chip reads as a person, not an id. */
16086
+ users(ids: string[]): Observable<AudienceMember[]>;
16087
+ /** A Source's stored Audience. */
16088
+ audience(source: string): Observable<SourceAudience>;
16089
+ /** Replaces an existing Source's Audience; the Owner only, never Locked. */
16090
+ saveAudience(source: string, audience: Audience): Observable<SourceAudience>;
16091
+ }
16092
+ export declare class HttpSharingClient implements SharingClient {
16093
+ private readonly http;
16094
+ groups: () => Observable<SharingGroup[]>;
16095
+ searchUsers: (q: string) => Observable<AudienceMember[]>;
16096
+ users: (ids: string[]) => Observable<AudienceMember[]>;
16097
+ audience: (source: string) => Observable<SourceAudience>;
16098
+ saveAudience: (source: string, audience: Audience) => Observable<SourceAudience>;
16099
+ }
16100
+ export declare const SHARING_CLIENT: InjectionToken<SharingClient>;
16101
+ /**
16102
+ * The popover an Audience picker opens: the Audience Levels on offer, then —
16103
+ * for `with` / `without` — the caller's Groups and a people search. Emits
16104
+ * every change at once; the picker decides whether it is kept or saved.
16105
+ */
16106
+ export declare class AudiencePickerBoxComponent {
16107
+ readonly audience: import("@angular/core").InputSignal<Audience>;
16108
+ readonly levels: import("@angular/core").InputSignal<readonly AudienceLevel[]>;
16109
+ readonly locked: import("@angular/core").InputSignal<boolean>;
16110
+ readonly client: import("@angular/core").InputSignal<SharingClient>;
16111
+ readonly changed: import("@angular/core").OutputEmitterRef<Audience>;
16112
+ readonly done: import("@angular/core").OutputEmitterRef<void>;
16113
+ private readonly i18n;
16114
+ protected readonly query: import("@angular/core").WritableSignal<string>;
16115
+ private readonly known;
16116
+ protected readonly icons: Record<AudienceLevel, string>;
16117
+ protected readonly picksMembers: import("@angular/core").Signal<boolean>;
16118
+ private readonly groupsResource;
16119
+ protected readonly groups: import("@angular/core").Signal<import("@magmonium/one").SharingGroup[]>;
16120
+ private readonly searchResource;
16121
+ protected readonly results: import("@angular/core").Signal<AudienceMember[]>;
16122
+ protected readonly searchConfig: import("@angular/core").Signal<Partial<TextInput>>;
16123
+ constructor();
16124
+ protected readonly name: (id: string) => string;
16125
+ protected readonly isPicked: (id: string) => boolean;
16126
+ protected readonly hasGroup: (id: string) => boolean;
16127
+ protected readonly setLevel: (level: AudienceLevel) => void;
16128
+ protected readonly flipUser: (uid: string) => void;
16129
+ protected readonly flipGroup: (groupId: string) => void;
16130
+ private readonly remember;
16131
+ static ɵfac: i0.ɵɵFactoryDeclaration<AudiencePickerBoxComponent, never>;
16132
+ static ɵcmp: i0.ɵɵComponentDeclaration<AudiencePickerBoxComponent, "m-audience-picker-box", never, {
16133
+ "audience": {
16134
+ "alias": "audience";
16135
+ "required": false;
16136
+ "isSignal": true;
16137
+ };
16138
+ "levels": {
16139
+ "alias": "levels";
16140
+ "required": false;
16141
+ "isSignal": true;
16142
+ };
16143
+ "locked": {
16144
+ "alias": "locked";
16145
+ "required": false;
16146
+ "isSignal": true;
16147
+ };
16148
+ "client": {
16149
+ "alias": "client";
16150
+ "required": true;
16151
+ "isSignal": true;
16152
+ };
16153
+ }, {
16154
+ "changed": "changed";
16155
+ "done": "done";
16156
+ }, never, never, true, never>;
16157
+ }
16158
+ /**
16159
+ * Who may see a thing, picked from one icon — the context-menu gesture: the
16160
+ * trigger draws the current Audience Level, a click opens the levels, Groups
16161
+ * and people beside it.
16162
+ *
16163
+ * Controlled: `[(audience)]` — the host keeps the value and sends it with its
16164
+ * own save (a thing being created has no Audience to edit yet).
16165
+ * Bound: `source="<id>"` — the picker loads and saves that Source's Audience
16166
+ * itself, and a Locked one opens read-only.
16167
+ */
16168
+ export declare class AudiencePickerComponent extends ConfigComponent<AudiencePicker> {
16169
+ readonly audience: import("@angular/core").ModelSignal<Audience | undefined>;
16170
+ readonly source: import("@angular/core").InputSignal<string | undefined>;
16171
+ readonly locked: import("@angular/core").InputSignal<boolean>;
16172
+ readonly labelled: import("@angular/core").InputSignal<boolean | undefined>;
16173
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
16174
+ readonly align: import("@angular/core").InputSignal<"left" | "right" | undefined>;
16175
+ protected readonly subFolder = "audience_picker";
16176
+ protected readonly open: import("@angular/core").WritableSignal<boolean>;
16177
+ private readonly client;
16178
+ private readonly i18n;
16179
+ private readonly selectorDir;
16180
+ private readonly sourceLocked;
16181
+ private readonly pickerConfig;
16182
+ protected readonly current: import("@angular/core").Signal<Audience>;
16183
+ protected readonly levels: import("@angular/core").Signal<readonly AudienceLevel[]>;
16184
+ protected readonly isLocked: import("@angular/core").Signal<boolean>;
16185
+ private readonly stored;
16186
+ protected readonly summary: import("@angular/core").Signal<string>;
16187
+ protected readonly triggerConfig: import("@angular/core").Signal<Partial<Button>>;
16188
+ protected readonly selectorConfig: import("@angular/core").Signal<SelectorConfig<AudiencePickerBoxComponent> | undefined>;
16189
+ constructor();
16190
+ private readonly apply;
16191
+ private readonly levelTitle;
16192
+ static ɵfac: i0.ɵɵFactoryDeclaration<AudiencePickerComponent, never>;
16193
+ static ɵcmp: i0.ɵɵComponentDeclaration<AudiencePickerComponent, "m-audience-picker, m-one-audience-picker", never, {
16194
+ "audience": {
16195
+ "alias": "audience";
16196
+ "required": false;
16197
+ "isSignal": true;
16198
+ };
16199
+ "source": {
16200
+ "alias": "source";
16201
+ "required": false;
16202
+ "isSignal": true;
16203
+ };
16204
+ "locked": {
16205
+ "alias": "locked";
16206
+ "required": false;
16207
+ "isSignal": true;
16208
+ };
16209
+ "labelled": {
16210
+ "alias": "labelled";
16211
+ "required": false;
16212
+ "isSignal": true;
16213
+ };
16214
+ "disabled": {
16215
+ "alias": "disabled";
16216
+ "required": false;
16217
+ "isSignal": true;
16218
+ };
16219
+ "align": {
16220
+ "alias": "align";
16221
+ "required": false;
16222
+ "isSignal": true;
16223
+ };
16224
+ }, {
16225
+ "audience": "audienceChange";
16226
+ }, never, never, true, never>;
16227
+ }
16228
+ /** Deny by default: an Audience nobody has chosen yet is the Owner's alone. */
16229
+ export declare const DEFAULT_AUDIENCE: Audience;
16230
+ export declare const AUDIENCE_ICONS: Record<AudienceLevel, string>;
16231
+ /** Whether a level is followed by a pick of Users and Groups. */
16232
+ export declare const picksMembers: (level: AudienceLevel) => boolean;
16233
+ /**
16234
+ * Moves an Audience to `level`. A level that picks nobody drops the picks,
16235
+ * so a stored `public` never carries a stale list; switching between `with`
16236
+ * and `without` keeps them, since the same people are usually meant.
16237
+ */
16238
+ export declare const withLevel: (audience: Audience, level: AudienceLevel) => Audience;
16239
+ export declare const toggleUid: (audience: Audience, uid: string) => Audience;
16240
+ export declare const toggleGroup: (audience: Audience, groupId: string) => Audience;
16241
+ /** How many Users and Groups an Audience names. */
16242
+ export declare const pickCount: (audience: Audience) => number;
16243
+ 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 };