@sinequa/atomic-angular 2.10.0 → 2.11.0

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.
@@ -891,7 +891,7 @@ export declare class DocumentLocatorComponent implements OnDestroy {
891
891
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
892
892
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
893
893
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
894
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
894
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
895
895
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
896
896
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
897
897
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -1074,11 +1074,11 @@ export declare class MetadataComponent {
1074
1074
  event: Event;
1075
1075
  }>;
1076
1076
  class: import("@angular/core").InputSignal<string | undefined>;
1077
- variant: import("@angular/core").InputSignal<"primary" | "secondary" | null | undefined>;
1078
- size: import("@angular/core").InputSignal<"small" | "medium" | "md" | "sm" | "xs" | "xsmall" | null | undefined>;
1077
+ variant: import("@angular/core").InputSignal<"secondary" | "primary" | null | undefined>;
1078
+ size: import("@angular/core").InputSignal<"md" | "small" | "medium" | "sm" | "xsmall" | "xs" | null | undefined>;
1079
1079
  scheme: import("@angular/core").InputSignal<"error" | "sage" | "almond" | "pink" | "grey" | "yellow" | "cherry" | "indigo" | "cyan" | "success" | "warning" | "info" | null | undefined>;
1080
1080
  metadata: import("@angular/core").InputSignal<(string & Record<never, never>) | KeyOf<Article>>;
1081
- article: import("@angular/core").InputSignal<Partial<Article> | (string & Record<never, never>)>;
1081
+ article: import("@angular/core").InputSignal<(string & Record<never, never>) | Partial<Article>>;
1082
1082
  limit: import("@angular/core").InputSignalWithTransform<number | undefined, string | number | undefined>;
1083
1083
  items: import("@angular/core").Signal<string[]>;
1084
1084
  handleClick(event: Event, item: LegacyFilter): void;
@@ -1152,7 +1152,7 @@ export declare class MissingTermsComponent {
1152
1152
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
1153
1153
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
1154
1154
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
1155
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
1155
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
1156
1156
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
1157
1157
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
1158
1158
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -1575,7 +1575,7 @@ export declare class MultiSelectionToolbarComponent {
1575
1575
  columnMap?: Record<string, import("@sinequa/atomic").CCColumn> | undefined;
1576
1576
  }>;
1577
1577
  readonly selection: {
1578
- article?: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<import("@sinequa/atomic").Article> | undefined;
1578
+ article?: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic").Article> | import("@angular/core").Signal<undefined> | undefined;
1579
1579
  id?: import("@angular/core").Signal<string | undefined> | undefined;
1580
1580
  queryText?: import("@angular/core").Signal<string | undefined> | undefined;
1581
1581
  queryName?: import("@angular/core").Signal<string | undefined> | undefined;
@@ -2046,6 +2046,21 @@ export declare class NavbarTabsComponent {
2046
2046
  * than "tabs" in that context (e.g. "result categories").
2047
2047
  */
2048
2048
  ariaLabel: import("@angular/core").InputSignal<string | undefined>;
2049
+ /**
2050
+ * Look of the tab strip, from galactik's `TabList`.
2051
+ *
2052
+ * - `primary` (default): the tabs sit in a bordered pill strip, the selected one filled;
2053
+ * - `secondary`: a flat row on a white background, the selected tab underlined;
2054
+ * - `inner`: the same underline on a transparent background — for a strip that lives inside a
2055
+ * page rather than on a bar of its own, such as the result categories under a search field.
2056
+ *
2057
+ * The two underline variants also get the larger tab of the design (44px, 14px semibold).
2058
+ *
2059
+ * @default "primary"
2060
+ */
2061
+ variant: import("@angular/core").InputSignal<"secondary" | "primary" | "inner">;
2062
+ /** The pill strip is the only variant whose tabs keep galactik's own, smaller size. */
2063
+ protected readonly isPill: import("@angular/core").Signal<boolean>;
2049
2064
  showCount: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
2050
2065
  /**
2051
2066
  * When enabled (default), tab labels are never clipped: tabs that do not fit
@@ -2118,6 +2133,11 @@ export declare class NavbarTabsComponent {
2118
2133
  "required": false;
2119
2134
  "isSignal": true;
2120
2135
  };
2136
+ "variant": {
2137
+ "alias": "variant";
2138
+ "required": false;
2139
+ "isSignal": true;
2140
+ };
2121
2141
  "showCount": {
2122
2142
  "alias": "showCount";
2123
2143
  "required": false;
@@ -2947,7 +2967,7 @@ export declare const PrincipalStore: import("@angular/core").Type<{
2947
2967
  param9: import("@angular/core").Signal<string>;
2948
2968
  param10: import("@angular/core").Signal<string>;
2949
2969
  userOverrideActive: import("@angular/core").Signal<boolean>;
2950
- state: import("@angular/core").Signal<"error" | "initial" | "loading" | "loaded">;
2970
+ state: import("@angular/core").Signal<"error" | "loading" | "loaded" | "initial">;
2951
2971
  allowUserOverride: import("@angular/core").Signal<boolean>;
2952
2972
  isOverridingUser: import("@angular/core").Signal<boolean>;
2953
2973
  initials: import("@angular/core").Signal<string>;
@@ -3029,7 +3049,7 @@ export declare const QueryParamsStore: import("@angular/core").Type<{
3029
3049
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
3030
3050
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
3031
3051
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
3032
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
3052
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
3033
3053
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
3034
3054
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
3035
3055
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -3174,7 +3194,7 @@ export type SelectionState = {
3174
3194
  * - `clear()`: Clears the selection state, setting `article`, `id`, and `queryText` to `undefined`.
3175
3195
  */
3176
3196
  export declare const SelectionStore: import("@angular/core").Type<{
3177
- article?: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<Article> | undefined;
3197
+ article?: import("@ngrx/signals").DeepSignal<Article> | import("@angular/core").Signal<undefined> | undefined;
3178
3198
  id?: import("@angular/core").Signal<string | undefined> | undefined;
3179
3199
  queryText?: import("@angular/core").Signal<string | undefined> | undefined;
3180
3200
  queryName?: import("@angular/core").Signal<string | undefined> | undefined;
@@ -3346,7 +3366,7 @@ export declare const UserSettingsStore: import("@angular/core").Type<{
3346
3366
  collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
3347
3367
  language?: import("@angular/core").Signal<string | undefined> | undefined;
3348
3368
  userTheme: import("@angular/core").Signal<"light" | "dark" | "system" | undefined>;
3349
- agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
3369
+ agents: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings>;
3350
3370
  disabledHighlightCategories: import("@angular/core").Signal<string[]>;
3351
3371
  isDebugMode: import("@angular/core").Signal<boolean>;
3352
3372
  isDarkMode: import("@angular/core").Signal<boolean>;
@@ -4580,7 +4600,7 @@ export declare class AggregationsService {
4580
4600
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
4581
4601
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
4582
4602
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
4583
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
4603
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
4584
4604
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
4585
4605
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
4586
4606
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -4829,7 +4849,7 @@ export declare class ApplicationService {
4829
4849
  collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
4830
4850
  language?: import("@angular/core").Signal<string | undefined> | undefined;
4831
4851
  userTheme: import("@angular/core").Signal<"light" | "dark" | "system" | undefined>;
4832
- agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
4852
+ agents: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings>;
4833
4853
  disabledHighlightCategories: import("@angular/core").Signal<string[]>;
4834
4854
  isDebugMode: import("@angular/core").Signal<boolean>;
4835
4855
  isDarkMode: import("@angular/core").Signal<boolean>;
@@ -4915,7 +4935,7 @@ export declare class ApplicationService {
4915
4935
  param9: import("@angular/core").Signal<string>;
4916
4936
  param10: import("@angular/core").Signal<string>;
4917
4937
  userOverrideActive: import("@angular/core").Signal<boolean>;
4918
- state: import("@angular/core").Signal<"error" | "initial" | "loading" | "loaded">;
4938
+ state: import("@angular/core").Signal<"error" | "loading" | "loaded" | "initial">;
4919
4939
  allowUserOverride: import("@angular/core").Signal<boolean>;
4920
4940
  isOverridingUser: import("@angular/core").Signal<boolean>;
4921
4941
  initials: import("@angular/core").Signal<string>;
@@ -5296,7 +5316,7 @@ export declare class ApplicationService {
5296
5316
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
5297
5317
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
5298
5318
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
5299
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
5319
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
5300
5320
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
5301
5321
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
5302
5322
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -5875,7 +5895,7 @@ export declare class AutocompleteService {
5875
5895
  collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
5876
5896
  language?: import("@angular/core").Signal<string | undefined> | undefined;
5877
5897
  userTheme: import("@angular/core").Signal<"light" | "dark" | "system" | undefined>;
5878
- agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
5898
+ agents: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings>;
5879
5899
  disabledHighlightCategories: import("@angular/core").Signal<string[]>;
5880
5900
  isDebugMode: import("@angular/core").Signal<boolean>;
5881
5901
  isDarkMode: import("@angular/core").Signal<boolean>;
@@ -6825,7 +6845,7 @@ export declare class PreviewService {
6825
6845
  extracts: Map<string, Extract[]>;
6826
6846
  }>;
6827
6847
  protected readonly selectionStore: {
6828
- article?: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<Article> | undefined;
6848
+ article?: import("@ngrx/signals").DeepSignal<Article> | import("@angular/core").Signal<undefined> | undefined;
6829
6849
  id?: import("@angular/core").Signal<string | undefined> | undefined;
6830
6850
  queryText?: import("@angular/core").Signal<string | undefined> | undefined;
6831
6851
  queryName?: import("@angular/core").Signal<string | undefined> | undefined;
@@ -6874,7 +6894,7 @@ export declare class PreviewService {
6874
6894
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
6875
6895
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
6876
6896
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
6877
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
6897
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
6878
6898
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
6879
6899
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
6880
6900
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -7472,7 +7492,7 @@ export declare class SavedSearchesService {
7472
7492
  collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
7473
7493
  language?: import("@angular/core").Signal<string | undefined> | undefined;
7474
7494
  userTheme: import("@angular/core").Signal<"light" | "dark" | "system" | undefined>;
7475
- agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
7495
+ agents: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings>;
7476
7496
  disabledHighlightCategories: import("@angular/core").Signal<string[]>;
7477
7497
  isDebugMode: import("@angular/core").Signal<boolean>;
7478
7498
  isDarkMode: import("@angular/core").Signal<boolean>;
@@ -7558,7 +7578,7 @@ export declare class SavedSearchesService {
7558
7578
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
7559
7579
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
7560
7580
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
7561
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
7581
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
7562
7582
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
7563
7583
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
7564
7584
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -7743,7 +7763,7 @@ export declare class SearchService {
7743
7763
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
7744
7764
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
7745
7765
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
7746
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
7766
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
7747
7767
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
7748
7768
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
7749
7769
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -7838,7 +7858,7 @@ export declare class SearchService {
7838
7858
  collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
7839
7859
  language?: import("@angular/core").Signal<string | undefined> | undefined;
7840
7860
  userTheme: import("@angular/core").Signal<"light" | "dark" | "system" | undefined>;
7841
- agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
7861
+ agents: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings>;
7842
7862
  disabledHighlightCategories: import("@angular/core").Signal<string[]>;
7843
7863
  isDebugMode: import("@angular/core").Signal<boolean>;
7844
7864
  isDarkMode: import("@angular/core").Signal<boolean>;
@@ -7972,7 +7992,7 @@ export declare class SelectionService {
7972
7992
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
7973
7993
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
7974
7994
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
7975
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
7995
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
7976
7996
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
7977
7997
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
7978
7998
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -8688,7 +8708,7 @@ export declare class ShowBookmarkDirective {
8688
8708
  collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
8689
8709
  language?: import("@angular/core").Signal<string | undefined> | undefined;
8690
8710
  userTheme: import("@angular/core").Signal<"light" | "dark" | "system" | undefined>;
8691
- agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
8711
+ agents: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings>;
8692
8712
  disabledHighlightCategories: import("@angular/core").Signal<string[]>;
8693
8713
  isDebugMode: import("@angular/core").Signal<boolean>;
8694
8714
  isDarkMode: import("@angular/core").Signal<boolean>;
@@ -9464,7 +9484,7 @@ export declare class SponsoredResultsComponent {
9464
9484
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
9465
9485
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
9466
9486
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
9467
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
9487
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
9468
9488
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
9469
9489
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
9470
9490
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -10503,7 +10523,7 @@ export declare class AdvancedSearch {
10503
10523
  readonly similarDocuments: import("@angular/core").InputSignal<Article[] | undefined>;
10504
10524
  readonly selected: import("@angular/core").OutputEmitterRef<Article>;
10505
10525
  protected readonly selectionStore: {
10506
- article?: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<Article> | undefined;
10526
+ article?: import("@ngrx/signals").DeepSignal<Article> | import("@angular/core").Signal<undefined> | undefined;
10507
10527
  id?: import("@angular/core").Signal<string | undefined> | undefined;
10508
10528
  queryText?: import("@angular/core").Signal<string | undefined> | undefined;
10509
10529
  queryName?: import("@angular/core").Signal<string | undefined> | undefined;
@@ -10552,7 +10572,7 @@ export declare class AdvancedSearch {
10552
10572
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
10553
10573
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
10554
10574
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
10555
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
10575
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
10556
10576
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
10557
10577
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
10558
10578
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -10738,7 +10758,7 @@ export declare class AdvancedSearchTabs {
10738
10758
  readonly similarDocuments: import("@angular/core").InputSignal<Article[] | undefined>;
10739
10759
  readonly selected: import("@angular/core").OutputEmitterRef<Article>;
10740
10760
  protected readonly selectionStore: {
10741
- article?: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<Article> | undefined;
10761
+ article?: import("@ngrx/signals").DeepSignal<Article> | import("@angular/core").Signal<undefined> | undefined;
10742
10762
  id?: import("@angular/core").Signal<string | undefined> | undefined;
10743
10763
  queryText?: import("@angular/core").Signal<string | undefined> | undefined;
10744
10764
  queryName?: import("@angular/core").Signal<string | undefined> | undefined;
@@ -11952,8 +11972,8 @@ export declare class SignedOutComponent {
11952
11972
  static ɵcmp: i0.ɵɵComponentDeclaration<SignedOutComponent, "signed-out, SignedOut, signedout", never, {}, {}, never, never, true, never>;
11953
11973
  }
11954
11974
  export declare class BookmarkButtonComponent {
11955
- variant: import("@angular/core").InputSignal<"none" | "light-accent" | "accent" | "primary" | "secondary" | "tertiary" | null | undefined>;
11956
- size: import("@angular/core").InputSignal<"small" | "medium" | "large" | "md" | "sm" | "xs" | "xsmall" | "lg" | null | undefined>;
11975
+ variant: import("@angular/core").InputSignal<"secondary" | "tertiary" | "none" | "light-accent" | "accent" | "primary" | null | undefined>;
11976
+ size: import("@angular/core").InputSignal<"md" | "small" | "medium" | "large" | "sm" | "xsmall" | "xs" | "lg" | null | undefined>;
11957
11977
  /**
11958
11978
  * Tab index applied to the inner button.
11959
11979
  *
@@ -12205,7 +12225,7 @@ export declare class CollectionsDialog {
12205
12225
  readonly showSearch: import("@angular/core").Signal<boolean>;
12206
12226
  /** Collections matching the search text (case-insensitive, by name). */
12207
12227
  readonly filteredCollections: import("@angular/core").Signal<Basket[]>;
12208
- readonly collectionsMap: import("@angular/core").WritableSignal<Record<string, "some" | "none" | "all">>;
12228
+ readonly collectionsMap: import("@angular/core").WritableSignal<Record<string, "some" | "all" | "none">>;
12209
12229
  /** Windowing over the filtered list — renders only the visible rows. */
12210
12230
  readonly virtualizer: import("@tanstack/angular-virtual").AngularVirtualizer<HTMLDivElement, Element>;
12211
12231
  constructor();
@@ -12560,7 +12580,7 @@ export declare class ExportDialog {
12560
12580
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
12561
12581
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
12562
12582
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
12563
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
12583
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
12564
12584
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
12565
12585
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
12566
12586
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -13044,7 +13064,7 @@ export declare class SearchFeedbackComponent {
13044
13064
  onClose: import("@angular/core").OutputEmitterRef<void>;
13045
13065
  private readonly injector;
13046
13066
  pages: import("@angular/core").InputSignal<any>;
13047
- variant: import("@angular/core").InputSignal<"none" | "light-accent" | "accent" | "primary" | "secondary" | "tertiary" | null | undefined>;
13067
+ variant: import("@angular/core").InputSignal<"secondary" | "tertiary" | "none" | "light-accent" | "accent" | "primary" | null | undefined>;
13048
13068
  readonly auditService: AuditService;
13049
13069
  protected readonly queryParamsStore: {
13050
13070
  name?: import("@angular/core").Signal<string | undefined> | undefined;
@@ -13073,7 +13093,7 @@ export declare class SearchFeedbackComponent {
13073
13093
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
13074
13094
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
13075
13095
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
13076
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
13096
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
13077
13097
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
13078
13098
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
13079
13099
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -13453,7 +13473,7 @@ export declare class AggregationDateComponent {
13453
13473
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
13454
13474
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
13455
13475
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
13456
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
13476
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
13457
13477
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
13458
13478
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
13459
13479
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -13965,7 +13985,7 @@ export declare class AggregationTreeComponent {
13965
13985
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
13966
13986
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
13967
13987
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
13968
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
13988
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
13969
13989
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
13970
13990
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
13971
13991
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -14838,7 +14858,7 @@ export declare class AggregationListComponent {
14838
14858
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
14839
14859
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
14840
14860
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
14841
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
14861
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
14842
14862
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
14843
14863
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
14844
14864
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -15900,7 +15920,7 @@ export declare class AggregationComponent {
15900
15920
  *
15901
15921
  * @default "auto"
15902
15922
  */
15903
- type: import("@angular/core").InputSignal<"auto" | "list" | "tree" | "date">;
15923
+ type: import("@angular/core").InputSignal<"list" | "auto" | "tree" | "date">;
15904
15924
  /**
15905
15925
  * Whether the host removes itself from the layout (Tailwind's `hidden`, i.e.
15906
15926
  * `display: none`) when it resolves to zero items. When `false` (default), the
@@ -16139,9 +16159,28 @@ export declare class AggregationPanelComponent {
16139
16159
  isCollapsed: import("@angular/core").WritableSignal<boolean>;
16140
16160
  expanded: import("@angular/core").Signal<"" | null>;
16141
16161
  private readonly searchBox;
16162
+ private readonly searchToggle;
16163
+ private readonly injector;
16142
16164
  /** The galactik popover (`[popover]` / `[dropdown]`) this panel is shown in, if any — resolved through the injector tree. */
16143
16165
  protected readonly isInPopover: boolean;
16144
- constructor();
16166
+ private static nextId;
16167
+ protected readonly searchId: string;
16168
+ private readonly searchRequested;
16169
+ /**
16170
+ * Whether the facet has a search field at all: the facet allows it (`searchable`, from the custom JSON or the
16171
+ * `searchable` input of the facet) and there is something to search in.
16172
+ */
16173
+ protected readonly canSearch: import("@angular/core").Signal<boolean>;
16174
+ /**
16175
+ * The search field is out of the way until the user asks for it with the magnifier: a field that is always there costs a
16176
+ * line per facet, and most of the time nobody searches. A text already in the field keeps it open — it is filtering the
16177
+ * values, and a filter you cannot see is not a filter you can undo.
16178
+ */
16179
+ protected readonly showSearch: import("@angular/core").Signal<boolean>;
16180
+ /** Opens the search field and puts the focus in it, or closes it, drops its text and gives the focus back to the magnifier. */
16181
+ protected toggleSearch(event?: Event): void;
16182
+ /** Escape in the field closes it, as it would a popover: the way back is the key the user already knows. */
16183
+ protected onSearchEscape(event: Event): void;
16145
16184
  onHeaderClick(event: Event): void;
16146
16185
  onToggle(event: Event): void;
16147
16186
  static ɵfac: i0.ɵɵFactoryDeclaration<AggregationPanelComponent, never>;
@@ -16322,6 +16361,19 @@ export declare function filterKey(leaf: LegacyFilter): string;
16322
16361
  */
16323
16362
  export declare class AppliedFiltersComponent {
16324
16363
  private readonly queryParamsStore;
16364
+ private static nextId;
16365
+ protected readonly listId: string;
16366
+ private readonly list;
16367
+ /** Whether the chips take more lines than `maxLines`: only then is there anything to fold. */
16368
+ protected readonly foldable: import("@angular/core").WritableSignal<boolean>;
16369
+ /** The list is unfolded. */
16370
+ protected readonly expanded: import("@angular/core").WritableSignal<boolean>;
16371
+ /** Height of `maxLines` lines of chips, and of all of them, in pixels — measured, as the chips wrap with the width. */
16372
+ private readonly foldedHeight;
16373
+ private readonly fullHeight;
16374
+ /** The height the list is given: none (it is as tall as its chips) until there is something to fold. */
16375
+ protected readonly listHeight: import("@angular/core").Signal<number | null>;
16376
+ protected toggle(): void;
16325
16377
  /**
16326
16378
  * The filters to display. Omit it to read the current query's own — the common case.
16327
16379
  *
@@ -16347,13 +16399,26 @@ export declare class AppliedFiltersComponent {
16347
16399
  * than as "unset". A `null` here would therefore silently neutralise `scheme` — the chips would keep
16348
16400
  * their base look whatever colour was asked for. `undefined` lets the tag apply its own default.
16349
16401
  */
16350
- readonly variant: import("@angular/core").InputSignal<"primary" | "secondary" | null | undefined>;
16402
+ readonly variant: import("@angular/core").InputSignal<"secondary" | "primary" | null | undefined>;
16351
16403
  /** Chip colour scheme, passed to galactik's `tag`. */
16352
16404
  readonly scheme: import("@angular/core").InputSignal<"error" | "sage" | "almond" | "pink" | "grey" | "yellow" | "cherry" | "indigo" | "cyan" | "success" | "warning" | "info" | null | undefined>;
16353
16405
  /** Chip size, passed to galactik's `tag`. */
16354
- readonly size: import("@angular/core").InputSignal<"small" | "medium" | "md" | "sm" | "xs" | "xsmall" | null | undefined>;
16406
+ readonly size: import("@angular/core").InputSignal<"md" | "small" | "medium" | "sm" | "xsmall" | "xs" | null | undefined>;
16355
16407
  /** Extra classes for each chip, merged by galactik's `tag`. */
16356
16408
  readonly chipClass: import("@angular/core").InputSignal<string>;
16409
+ /**
16410
+ * How many lines of chips are shown before the rest is folded behind a "show more" button. `0` never folds.
16411
+ *
16412
+ * @default 2
16413
+ */
16414
+ readonly maxLines: import("@angular/core").InputSignalWithTransform<number, unknown>;
16415
+ /**
16416
+ * Whether the "clear all" button ends the list of chips (shown from two chips on). Turn it off when the screen has a clear
16417
+ * button of its own.
16418
+ *
16419
+ * @default true
16420
+ */
16421
+ readonly showClearAll: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
16357
16422
  /** A chip was removed. */
16358
16423
  readonly removed: import("@angular/core").OutputEmitterRef<AppliedFilterChip>;
16359
16424
  /** Every chip was removed. */
@@ -16362,6 +16427,12 @@ export declare class AppliedFiltersComponent {
16362
16427
  readonly filtersChange: import("@angular/core").OutputEmitterRef<LegacyFilter[]>;
16363
16428
  /** Something changed, whichever way. Re-run the search on this and ignore the rest. */
16364
16429
  readonly changed: import("@angular/core").OutputEmitterRef<void>;
16430
+ constructor();
16431
+ /**
16432
+ * Reads how the chips wrap: the rows are the distinct tops of the chips, so the height of `maxLines` lines is the top of the
16433
+ * next row less the gap, and the whole list is its `scrollHeight`. The chips below the folded height are made `inert`.
16434
+ */
16435
+ private measure;
16365
16436
  /** One chip per applied value, expanded from the stored entries through their leaves. */
16366
16437
  readonly chips: import("@angular/core").Signal<AppliedFilterChip[]>;
16367
16438
  /**
@@ -16410,6 +16481,16 @@ export declare class AppliedFiltersComponent {
16410
16481
  "required": false;
16411
16482
  "isSignal": true;
16412
16483
  };
16484
+ "maxLines": {
16485
+ "alias": "maxLines";
16486
+ "required": false;
16487
+ "isSignal": true;
16488
+ };
16489
+ "showClearAll": {
16490
+ "alias": "showClearAll";
16491
+ "required": false;
16492
+ "isSignal": true;
16493
+ };
16413
16494
  }, {
16414
16495
  "removed": "removed";
16415
16496
  "cleared": "cleared";
@@ -16569,7 +16650,7 @@ export declare class FilterButtonComponent {
16569
16650
  * @default "sage"
16570
16651
  */
16571
16652
  scheme: import("@angular/core").InputSignal<FilterScheme>;
16572
- protected variant: import("@angular/core").WritableSignal<"none" | "light-accent" | "accent" | "primary" | "secondary" | "tertiary" | null | undefined>;
16653
+ protected variant: import("@angular/core").WritableSignal<"secondary" | "tertiary" | "none" | "light-accent" | "accent" | "primary" | null | undefined>;
16573
16654
  protected filter: import("@angular/core").WritableSignal<CFilterEx>;
16574
16655
  /** Unique id wiring the trigger's `popovertarget` to the `<div popover>` `id`. */
16575
16656
  protected readonly popoverId: string;
@@ -16626,7 +16707,7 @@ export declare class FilterButtonComponent {
16626
16707
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
16627
16708
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
16628
16709
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
16629
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
16710
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
16630
16711
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
16631
16712
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
16632
16713
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -17617,7 +17698,7 @@ export declare class MoreButtonComponent {
17617
17698
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
17618
17699
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
17619
17700
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
17620
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
17701
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
17621
17702
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
17622
17703
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
17623
17704
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -18403,7 +18484,7 @@ export declare class FiltersBarComponent {
18403
18484
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
18404
18485
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
18405
18486
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
18406
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
18487
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
18407
18488
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
18408
18489
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
18409
18490
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -18686,6 +18767,80 @@ export declare class FiltersBarComponent {
18686
18767
  "onClearBasket": "onClearBasket";
18687
18768
  }, never, ["[filtersBarStart]"], true, never>;
18688
18769
  }
18770
+ type FiltersTab = "all" | "quick";
18771
+ /**
18772
+ * The filters panel: the facets of the search, and the quick filters of the user, in one card-sized column.
18773
+ *
18774
+ * "All" holds the facets (`<aside-filters>`, driven by the application's filters configuration) with a field that narrows them by
18775
+ * name, the count of documents, and a button that saves the filters applied right now as a quick filter (a card under the button
18776
+ * asks for its name). "Quick Filters" is the list of the `<quick-filters>` pill, inline (`<quick-filters-list>`): one line per quick filter, with the
18777
+ * count of its filters — hovering it shows them as tags — and a cross that deletes it. A click on a quick filter replaces **all** the
18778
+ * applied filters by its own and keeps the rest of the query, the text above all.
18779
+ *
18780
+ * The panel is the content only: it fills the height it is given and scrolls inside. Where it goes — a column next to the results, an
18781
+ * overlay, a sheet — and what surrounds it are the host's. The host closes it on `closed`.
18782
+ *
18783
+ * ```html
18784
+ * <filters-panel [documentCount]="result()?.rowCount ?? 0" (closed)="open.set(false)" />
18785
+ * ```
18786
+ */
18787
+ export declare class FiltersPanelComponent {
18788
+ /**
18789
+ * How many documents the search found: the count under the field, which is also what a quick filter would be saved over. The panel
18790
+ * does not run the search, the page does.
18791
+ */
18792
+ readonly documentCount: import("@angular/core").InputSignal<number>;
18793
+ /** The user closes the panel (the cross of its header). Closing is the host's: it decides how the panel is shown. */
18794
+ readonly closed: import("@angular/core").OutputEmitterRef<void>;
18795
+ private readonly appStore;
18796
+ private readonly aggregationsStore;
18797
+ private readonly queryParamsStore;
18798
+ private readonly userSettingsStore;
18799
+ private readonly transloco;
18800
+ private readonly injector;
18801
+ protected readonly nameId: string;
18802
+ protected readonly tab: import("@angular/core").WritableSignal<FiltersTab>;
18803
+ protected readonly query: import("@angular/core").WritableSignal<string>;
18804
+ protected readonly saving: import("@angular/core").WritableSignal<boolean>;
18805
+ protected readonly announcement: import("@angular/core").WritableSignal<string>;
18806
+ protected readonly name: import("@angular/core").WritableSignal<string>;
18807
+ /** How many values the query is filtered by: nothing to save as a quick filter when it is zero. */
18808
+ protected readonly appliedCount: import("@angular/core").Signal<number>;
18809
+ private readonly nameInput;
18810
+ private readonly saveButton;
18811
+ /**
18812
+ * The facets whose name contains the query, as the names `<aside-filters [aggregations]>` takes.
18813
+ * Empty query → the component's own configuration-driven list (the input is left empty).
18814
+ *
18815
+ * An explicit list bypasses the `position` and "hidden" rules of that configuration, so the same two
18816
+ * rules are applied here first.
18817
+ */
18818
+ protected readonly matching: import("@angular/core").Signal<string[]>;
18819
+ protected selectTab(values: readonly string[]): void;
18820
+ /** The leaf filters of an entry, flattening a nested and/or tree. */
18821
+ private leaves;
18822
+ /** How many values a leaf holds: an `in` list holds several, anything else one. */
18823
+ private valuesOf;
18824
+ /** Opens the card under the button and puts the focus in its field: it appears at the user's request, so the next key is the name. */
18825
+ protected startSaving(): void;
18826
+ /** Closes the card without saving, and gives the focus back to the button that opened it. */
18827
+ protected closeSaving(): void;
18828
+ /** Escape closes the card, not the whole filters panel the card is in. */
18829
+ protected onSaveEscape(event: Event): void;
18830
+ protected saveQuickFilter(event: Event): Promise<void>;
18831
+ /** The list applied a quick filter (it replaced the filters of the query by its own): the screen readers are told. */
18832
+ protected onQuickFilterApplied(quickFilter: QuickFilter): void;
18833
+ static ɵfac: i0.ɵɵFactoryDeclaration<FiltersPanelComponent, never>;
18834
+ static ɵcmp: i0.ɵɵComponentDeclaration<FiltersPanelComponent, "filters-panel, FiltersPanel, filterspanel", never, {
18835
+ "documentCount": {
18836
+ "alias": "documentCount";
18837
+ "required": false;
18838
+ "isSignal": true;
18839
+ };
18840
+ }, {
18841
+ "closed": "closed";
18842
+ }, never, never, true, never>;
18843
+ }
18689
18844
  /**
18690
18845
  * Injection token that indicates whether custom date ranges are allowed.
18691
18846
  *
@@ -19300,7 +19455,7 @@ export declare class HistoryPanelComponent {
19300
19455
  collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
19301
19456
  language?: import("@angular/core").Signal<string | undefined> | undefined;
19302
19457
  userTheme: import("@angular/core").Signal<"light" | "dark" | "system" | undefined>;
19303
- agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
19458
+ agents: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings>;
19304
19459
  disabledHighlightCategories: import("@angular/core").Signal<string[]>;
19305
19460
  isDebugMode: import("@angular/core").Signal<boolean>;
19306
19461
  isDarkMode: import("@angular/core").Signal<boolean>;
@@ -19412,8 +19567,8 @@ export declare class HistoryPanelComponent {
19412
19567
  * The user's quick filters: named sets of filters that one click applies again. A pill, like the filters of the bar it is
19413
19568
  * meant to sit in front of (the `filtersBarStart` slot of `<filters-bar>`), that opens a popover with a search field and the
19414
19569
  * list. A click on a quick filter **replaces** the active filters by its own and closes the popover, and hovering its count of
19415
- * filters shows what it holds. Quick filters are made, renamed and deleted elsewhere (the filters of the results page): this
19416
- * is only where they are applied.
19570
+ * filters shows what it holds, and the cross at the end of a row deletes it. Quick filters are made elsewhere (the filters of
19571
+ * the results page): this is where they are applied and deleted.
19417
19572
  *
19418
19573
  * They live in the user settings (`UserSettingsStore.quickFilters`), so they follow the user from one page, and one device, to
19419
19574
  * the other.
@@ -19435,9 +19590,6 @@ export declare class QuickFiltersComponent {
19435
19590
  readonly offset: import("@angular/core").InputSignal<number>;
19436
19591
  /** Emitted with the quick filter a click has just applied. */
19437
19592
  readonly applied: import("@angular/core").OutputEmitterRef<QuickFilter>;
19438
- private readonly userSettingsStore;
19439
- private readonly queryParamsStore;
19440
- private readonly appStore;
19441
19593
  private readonly transloco;
19442
19594
  private readonly host;
19443
19595
  protected readonly popoverId: string;
@@ -19450,32 +19602,13 @@ export declare class QuickFiltersComponent {
19450
19602
  protected readonly resized: import("@angular/core").WritableSignal<boolean>;
19451
19603
  private readonly flippedAbove;
19452
19604
  protected readonly placement: import("@angular/core").Signal<Placement>;
19453
- /** The row whose hover card is showing: its quick filter, and the element the card hangs from. */
19454
- protected readonly details: import("@angular/core").WritableSignal<{
19455
- quickFilter: QuickFilter;
19456
- anchor: HTMLElement;
19457
- } | null>;
19458
- private readonly detailsCard;
19459
- private hideTimer;
19460
19605
  private readonly popover;
19461
19606
  protected readonly isOpen: import("@angular/core").Signal<boolean>;
19462
19607
  constructor();
19463
- protected readonly variant: import("@angular/core").Signal<"none" | "light-accent" | "accent" | "primary" | "secondary" | "tertiary" | null | undefined>;
19608
+ protected readonly variant: import("@angular/core").Signal<"secondary" | "tertiary" | "none" | "light-accent" | "accent" | "primary" | null | undefined>;
19464
19609
  protected readonly triggerClass: import("@angular/core").Signal<string>;
19465
- protected readonly quickFilters: import("@angular/core").Signal<QuickFilter[]>;
19466
- protected readonly query: import("@angular/core").WritableSignal<string>;
19467
- protected readonly filtered: import("@angular/core").Signal<QuickFilter[]>;
19468
- /** What was just done, for the screen readers. */
19610
+ /** What was just done, for the screen readers: kept here, as the list goes with the popover once a quick filter is applied. */
19469
19611
  protected readonly announcement: import("@angular/core").WritableSignal<string>;
19470
- /**
19471
- * What a quick filter holds, one chip per filter: the icon the application gave the aggregation of the filter in the
19472
- * "filters" custom JSON (the one its filter button shows) and the value. The icon says what is filtered on, so the name is
19473
- * left out; an aggregation without an icon keeps it (`Authors: John`), or the value alone would say nothing.
19474
- */
19475
- protected chips(quickFilter: QuickFilter): {
19476
- text: string;
19477
- icon?: string;
19478
- }[];
19479
19612
  protected onToggle(): void;
19480
19613
  /**
19481
19614
  * Gives the position back to Floating UI: a top edge that was moved is put back where the placement leaves it, and the
@@ -19484,21 +19617,9 @@ export declare class QuickFiltersComponent {
19484
19617
  private unpin;
19485
19618
  /** The user starts to resize: pins the popover, on the side Floating UI had put it. */
19486
19619
  protected onResizeStart(): void;
19487
- /** Shows what a quick filter holds, under its row. */
19488
- protected showDetails(quickFilter: QuickFilter, event: Event): void;
19489
- /** Hides the card a moment later, so the pointer can cross from the row to the card. */
19490
- protected scheduleHideDetails(): void;
19491
- protected cancelHideDetails(): void;
19492
- protected hideDetails(): void;
19493
- /** The popover is closed with nothing half done: no search, no name being typed. */
19494
- private reset;
19495
19620
  /** Closes the popover when the focus leaves the whole component. `null` (focus left the document) leaves it open. */
19496
19621
  protected closeOnFocusLeave(event: FocusEvent): void;
19497
- /** What the list holds as selected: nothing, ever — choosing a row applies it and the list starts again. */
19498
- protected readonly picked: import("@angular/core").WritableSignal<QuickFilter[]>;
19499
- /** A row was chosen in the list. */
19500
- protected pick(values: readonly QuickFilter[]): void;
19501
- /** A click on a quick filter: its filters replace the active ones. */
19622
+ /** The list applied a quick filter: the popover closes, and the page is told. */
19502
19623
  protected apply(quickFilter: QuickFilter): void;
19503
19624
  static ɵfac: i0.ɵɵFactoryDeclaration<QuickFiltersComponent, never>;
19504
19625
  static ɵcmp: i0.ɵɵComponentDeclaration<QuickFiltersComponent, "QuickFilters, quick-filters", never, {
@@ -19526,6 +19647,104 @@ export declare class QuickFiltersComponent {
19526
19647
  "applied": "applied";
19527
19648
  }, never, never, true, never>;
19528
19649
  }
19650
+ /**
19651
+ * The list of the user's quick filters, to be placed where the host wants it: inline (a tab of the filters panel) or in a popover
19652
+ * (the `<quick-filters>` pill). It is the content only; the host owns the container, and what happens once a quick filter is applied.
19653
+ *
19654
+ * One row per quick filter: its name and, under it, the count of its filters — hovering that line (or focusing the row) shows them as
19655
+ * chips in a card, whose cut-off texts get a tooltip. A click on a row **replaces** the active filters by its own (the rest of the query stays, the text above all) and the host
19656
+ * is told with `applied`. The cross at the end of the row (or `Del` when the row has the focus) deletes the quick filter from the
19657
+ * user's settings. Quick filters are made elsewhere: where the filters are saved as one.
19658
+ *
19659
+ * ```html
19660
+ * <quick-filters-list [searchable]="true" (applied)="popover.close()" />
19661
+ * ```
19662
+ */
19663
+ export declare class QuickFiltersListComponent {
19664
+ /** Shows a field that narrows the list by name. It only appears once there is something to narrow. */
19665
+ readonly searchable: import("@angular/core").InputSignal<boolean>;
19666
+ /** Shows the cross that deletes a quick filter, and lets `Del` do the same. */
19667
+ readonly deletable: import("@angular/core").InputSignal<boolean>;
19668
+ /** What the empty state says under its title, when the default does not fit where the list is. */
19669
+ readonly emptyHint: import("@angular/core").InputSignal<string | undefined>;
19670
+ /** Emitted with the quick filter a click has just applied: the host decides what follows (close a popover…). */
19671
+ readonly applied: import("@angular/core").OutputEmitterRef<QuickFilter>;
19672
+ /** Emitted with the quick filter that has just been deleted. */
19673
+ readonly deleted: import("@angular/core").OutputEmitterRef<QuickFilter>;
19674
+ private readonly userSettingsStore;
19675
+ private readonly queryParamsStore;
19676
+ private readonly appStore;
19677
+ private readonly transloco;
19678
+ private readonly host;
19679
+ private readonly injector;
19680
+ protected readonly deleteKeys: string[];
19681
+ protected readonly quickFilters: import("@angular/core").Signal<QuickFilter[]>;
19682
+ protected readonly query: import("@angular/core").WritableSignal<string>;
19683
+ protected readonly filtered: import("@angular/core").Signal<QuickFilter[]>;
19684
+ /** What was just done, for the screen readers. */
19685
+ protected readonly announcement: import("@angular/core").WritableSignal<string>;
19686
+ /** The row whose hover card is showing: its quick filter, and the element the card hangs from. */
19687
+ protected readonly details: import("@angular/core").WritableSignal<{
19688
+ quickFilter: QuickFilter;
19689
+ anchor: HTMLElement;
19690
+ } | null>;
19691
+ private readonly detailsCard;
19692
+ private hideTimer;
19693
+ private readonly deleting;
19694
+ constructor();
19695
+ /**
19696
+ * What a quick filter holds, one chip per filter: the icon the application gave the aggregation of the filter in the
19697
+ * "filters" custom JSON (the one its filter button shows) and the value. The icon says what is filtered on, so the name is
19698
+ * left out; an aggregation without an icon keeps it (`Authors: John`), or the value alone would say nothing.
19699
+ */
19700
+ protected chips(quickFilter: QuickFilter): {
19701
+ text: string;
19702
+ icon?: string;
19703
+ }[];
19704
+ /** Shows what a quick filter holds, under the line of its count of filters. */
19705
+ protected showDetails(quickFilter: QuickFilter, anchor: HTMLElement): void;
19706
+ /** Hides the card a moment later, so the pointer can cross from the row to the card. */
19707
+ protected scheduleHideDetails(): void;
19708
+ protected cancelHideDetails(): void;
19709
+ /** Escape takes the card away first (WCAG 1.4.13); only a second one reaches what the list is in (a panel, a popover). */
19710
+ protected onEscape(event: Event): void;
19711
+ /** What the list holds as selected: nothing, ever — choosing a row applies it and the list starts again. */
19712
+ protected readonly picked: import("@angular/core").WritableSignal<QuickFilter[]>;
19713
+ /** A row was chosen in the list. */
19714
+ protected pick(values: readonly QuickFilter[]): void;
19715
+ /**
19716
+ * A click on a quick filter: its filters replace ALL the applied ones — the whole `filters` of the query, not a merge with them.
19717
+ * Everything else the query holds stays, the text above all: `patch` only writes what it is given.
19718
+ */
19719
+ private apply;
19720
+ /**
19721
+ * Deletes a quick filter from the user's settings. The toast says it is done. A deleted row leaves the DOM with the focus: when the
19722
+ * focus was in the list it goes to the row that took its place, or to the list itself when it was the last, so it is never dropped
19723
+ * on the page.
19724
+ */
19725
+ protected remove(quickFilter: QuickFilter, index: number, event: Event): Promise<void>;
19726
+ static ɵfac: i0.ɵɵFactoryDeclaration<QuickFiltersListComponent, never>;
19727
+ static ɵcmp: i0.ɵɵComponentDeclaration<QuickFiltersListComponent, "QuickFiltersList, quick-filters-list", never, {
19728
+ "searchable": {
19729
+ "alias": "searchable";
19730
+ "required": false;
19731
+ "isSignal": true;
19732
+ };
19733
+ "deletable": {
19734
+ "alias": "deletable";
19735
+ "required": false;
19736
+ "isSignal": true;
19737
+ };
19738
+ "emptyHint": {
19739
+ "alias": "emptyHint";
19740
+ "required": false;
19741
+ "isSignal": true;
19742
+ };
19743
+ }, {
19744
+ "applied": "applied";
19745
+ "deleted": "deleted";
19746
+ }, never, never, true, never>;
19747
+ }
19529
19748
  /** Order of the categories of the suggestions, first to last. */
19530
19749
  export declare const SEARCH_BOX_CATEGORIES_SORT: InjectionToken<string[]>;
19531
19750
  /** The icon of each category of suggestion. */
@@ -19626,7 +19845,7 @@ export declare class SearchBoxComponent {
19626
19845
  relevanceTransforms?: import("@angular/core").Signal<string | undefined> | undefined;
19627
19846
  removeDuplicates?: import("@angular/core").Signal<boolean | undefined> | undefined;
19628
19847
  queryId?: import("@angular/core").Signal<string | undefined> | undefined;
19629
- aggregations?: import("@angular/core").Signal<string[] | Record<string, import("@sinequa/atomic").AggregationOptions> | undefined> | undefined;
19848
+ aggregations?: import("@angular/core").Signal<Record<string, import("@sinequa/atomic").AggregationOptions> | string[] | undefined> | undefined;
19630
19849
  orderBy?: import("@angular/core").Signal<string | undefined> | undefined;
19631
19850
  groupBy?: import("@angular/core").Signal<string | undefined> | undefined;
19632
19851
  neuralSearch?: import("@angular/core").Signal<boolean | undefined> | undefined;
@@ -20038,7 +20257,7 @@ export declare class SearchBoxComponent {
20038
20257
  collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
20039
20258
  language?: import("@angular/core").Signal<string | undefined> | undefined;
20040
20259
  userTheme: import("@angular/core").Signal<"light" | "dark" | "system" | undefined>;
20041
- agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
20260
+ agents: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings>;
20042
20261
  disabledHighlightCategories: import("@angular/core").Signal<string[]>;
20043
20262
  isDebugMode: import("@angular/core").Signal<boolean>;
20044
20263
  isDarkMode: import("@angular/core").Signal<boolean>;
@@ -20318,7 +20537,7 @@ export declare class RecentSearchesComponent {
20318
20537
  collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
20319
20538
  language?: import("@angular/core").Signal<string | undefined> | undefined;
20320
20539
  userTheme: import("@angular/core").Signal<"light" | "dark" | "system" | undefined>;
20321
- agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
20540
+ agents: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings>;
20322
20541
  disabledHighlightCategories: import("@angular/core").Signal<string[]>;
20323
20542
  isDebugMode: import("@angular/core").Signal<boolean>;
20324
20543
  isDarkMode: import("@angular/core").Signal<boolean>;
@@ -20443,7 +20662,7 @@ export declare class SavedSearchPopover {
20443
20662
  collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
20444
20663
  language?: import("@angular/core").Signal<string | undefined> | undefined;
20445
20664
  userTheme: import("@angular/core").Signal<"light" | "dark" | "system" | undefined>;
20446
- agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
20665
+ agents: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings>;
20447
20666
  disabledHighlightCategories: import("@angular/core").Signal<string[]>;
20448
20667
  isDebugMode: import("@angular/core").Signal<boolean>;
20449
20668
  isDarkMode: import("@angular/core").Signal<boolean>;
@@ -20539,7 +20758,7 @@ export declare class SavedSearchesComponent {
20539
20758
  collapseAssistant?: import("@angular/core").Signal<boolean | undefined> | undefined;
20540
20759
  language?: import("@angular/core").Signal<string | undefined> | undefined;
20541
20760
  userTheme: import("@angular/core").Signal<"light" | "dark" | "system" | undefined>;
20542
- agents: import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings> | import("@angular/core").Signal<undefined>;
20761
+ agents: import("@angular/core").Signal<undefined> | import("@ngrx/signals").DeepSignal<import("@sinequa/atomic-angular").AgentUserSettings>;
20543
20762
  disabledHighlightCategories: import("@angular/core").Signal<string[]>;
20544
20763
  isDebugMode: import("@angular/core").Signal<boolean>;
20545
20764
  isDarkMode: import("@angular/core").Signal<boolean>;
@@ -20696,7 +20915,7 @@ export declare class SettingsAccountPanelComponent {
20696
20915
  param9: import("@angular/core").Signal<string>;
20697
20916
  param10: import("@angular/core").Signal<string>;
20698
20917
  userOverrideActive: import("@angular/core").Signal<boolean>;
20699
- state: import("@angular/core").Signal<"error" | "initial" | "loading" | "loaded">;
20918
+ state: import("@angular/core").Signal<"error" | "loading" | "loaded" | "initial">;
20700
20919
  allowUserOverride: import("@angular/core").Signal<boolean>;
20701
20920
  isOverridingUser: import("@angular/core").Signal<boolean>;
20702
20921
  initials: import("@angular/core").Signal<string>;
@@ -20855,7 +21074,7 @@ export declare class UserProfileFormComponent {
20855
21074
  param9: Signal<string>;
20856
21075
  param10: Signal<string>;
20857
21076
  userOverrideActive: Signal<boolean>;
20858
- state: Signal<"error" | "initial" | "loading" | "loaded">;
21077
+ state: Signal<"error" | "loading" | "loaded" | "initial">;
20859
21078
  allowUserOverride: Signal<boolean>;
20860
21079
  isOverridingUser: Signal<boolean>;
20861
21080
  initials: Signal<string>;
@@ -22016,6 +22235,22 @@ export declare class FileSizePipe implements PipeTransform {
22016
22235
  static ɵfac: i0.ɵɵFactoryDeclaration<FileSizePipe, never>;
22017
22236
  static ɵpipe: i0.ɵɵPipeDeclaration<FileSizePipe, "fileSize", true>;
22018
22237
  }
22238
+ /**
22239
+ * Writes a number the way the interface language does: `1,060` in English, `1 060` in French, `1.060` in German.
22240
+ *
22241
+ * Not Angular's `number` pipe: that one follows `LOCALE_ID`, which an application fixes once for good, so it would keep grouping
22242
+ * digits the same way in another language. The language here is the one transloco holds, read as a signal so a template using the
22243
+ * pipe updates by itself when the user changes it (the pipe stays pure).
22244
+ *
22245
+ * `null` and `undefined` are written as `0`.
22246
+ */
22247
+ export declare class LocalizedNumberPipe implements PipeTransform {
22248
+ private readonly transloco;
22249
+ private readonly lang;
22250
+ transform(value: number | null | undefined): string;
22251
+ static ɵfac: i0.ɵɵFactoryDeclaration<LocalizedNumberPipe, never>;
22252
+ static ɵpipe: i0.ɵɵPipeDeclaration<LocalizedNumberPipe, "localizedNumber", true>;
22253
+ }
22019
22254
  /**
22020
22255
  * The `@sinequa/atomic` client the surrounding injector works with.
22021
22256
  *