@sinequa/galactik 2.1.1 → 2.3.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.
@@ -1,7 +1,7 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import { ApplicationRef, ChangeDetectionStrategy, Component, DestroyRef, Directive, ElementRef, EnvironmentInjector, HostAttributeToken, InjectionToken, Injector, Service, TemplateRef, afterNextRender, afterRenderEffect, booleanAttribute, computed, contentChild, contentChildren, createComponent, effect, forwardRef, inject, input, linkedSignal, makeEnvironmentProviders, model, numberAttribute, output, provideAppInitializer, resource, signal, untracked, viewChild } from "@angular/core";
3
3
  import { cn } from "cn";
4
- import { arrow, autoUpdate, computePosition, flip, offset, shift, size } from "@floating-ui/dom";
4
+ import { arrow, autoUpdate, computePosition, flip, hide, offset, shift, size } from "@floating-ui/dom";
5
5
  import { DOCUMENT, NgTemplateOutlet } from "@angular/common";
6
6
  import { cva } from "class-variance-authority";
7
7
  import * as i1$5 from "@angular/aria/menu";
@@ -17,6 +17,11 @@ import { Toolbar, ToolbarWidget } from "@angular/aria/toolbar";
17
17
  import * as i1 from "@angular/aria/tree";
18
18
  import { Tree, TreeItem, TreeItemGroup } from "@angular/aria/tree";
19
19
  import { Grid, GridCell, GridRow } from "@angular/aria/grid";
20
+ function isApplePlatform() {
21
+ if (typeof navigator === "undefined") return false;
22
+ const platform = navigator.userAgentData?.platform || navigator.userAgent;
23
+ return /Mac|iPhone|iPad|iPod/.test(platform);
24
+ }
20
25
  var ArrowDownIcon = class ArrowDownIcon {
21
26
  class = input(...ngDevMode ? [void 0, { debugName: "class" }] : /* istanbul ignore next */ []);
22
27
  classes = computed(() => cn(this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
@@ -367,8 +372,8 @@ var ArrowUpIcon = class ArrowUpIcon {
367
372
  ngImport: i0,
368
373
  template: `
369
374
  <svg [class]="classes()" aria-hidden="true" width="1rem" height="1rem" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
370
- <path d="M12 5v14"/>
371
- <path d="m19 12-7 7-7-7"/>
375
+ <path d="m5 12 7-7 7 7"/>
376
+ <path d="M12 19V5"/>
372
377
  </svg>
373
378
  `,
374
379
  isInline: true,
@@ -386,8 +391,8 @@ i0.ɵɵngDeclareClassMetadata({
386
391
  selector: "arrow-up, arrow-up-icon, ArrowUp, ArrowUpIcon",
387
392
  template: `
388
393
  <svg [class]="classes()" aria-hidden="true" width="1rem" height="1rem" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
389
- <path d="M12 5v14"/>
390
- <path d="m19 12-7 7-7-7"/>
394
+ <path d="m5 12 7-7 7 7"/>
395
+ <path d="M12 19V5"/>
391
396
  </svg>
392
397
  `,
393
398
  styles: [":host{display:contents}\n"]
@@ -8809,13 +8814,15 @@ function injectPopover(options) {
8809
8814
  padding: 8,
8810
8815
  apply: ({ availableHeight }) => {
8811
8816
  el.style.setProperty("--popover-available-height", `${availableHeight}px`);
8817
+ if (options.matchTriggerWidth()) el.style.width = `${triggerEl.offsetWidth}px`;
8812
8818
  }
8813
- })
8819
+ }),
8820
+ ...options.hideWhenTriggerHidden?.() ? [hide({ strategy: "referenceHidden" })] : []
8814
8821
  ]
8815
- }).then(({ x, y }) => {
8822
+ }).then(({ x, y, middlewareData }) => {
8816
8823
  el.style.left = `${x}px`;
8817
8824
  el.style.top = `${y}px`;
8818
- el.style.visibility = "";
8825
+ el.style.visibility = middlewareData.hide?.referenceHidden ? "hidden" : "";
8819
8826
  width.set(options.matchTriggerWidth() ? triggerEl.offsetWidth : void 0);
8820
8827
  });
8821
8828
  }
@@ -8831,6 +8838,7 @@ function injectPopover(options) {
8831
8838
  } else {
8832
8839
  cleanupAutoUpdate?.();
8833
8840
  cleanupAutoUpdate = null;
8841
+ el.style.visibility = "hidden";
8834
8842
  }
8835
8843
  });
8836
8844
  destroyRef.onDestroy(() => cleanupAutoUpdate?.());
@@ -8881,6 +8889,10 @@ var PopoverDirective = class PopoverDirective {
8881
8889
  ...ngDevMode ? { debugName: "matchTriggerWidth" } : /* istanbul ignore next */ {},
8882
8890
  transform: booleanAttribute
8883
8891
  });
8892
+ hideWhenTriggerHidden = input(false, {
8893
+ ...ngDevMode ? { debugName: "hideWhenTriggerHidden" } : /* istanbul ignore next */ {},
8894
+ transform: booleanAttribute
8895
+ });
8884
8896
  elementRef = inject(ElementRef);
8885
8897
  _isDropdown = inject(new HostAttributeToken("dropdown"), { optional: true }) !== null;
8886
8898
  _config = computed(() => ({
@@ -8892,7 +8904,8 @@ var PopoverDirective = class PopoverDirective {
8892
8904
  offset: this.offset,
8893
8905
  config: this._config,
8894
8906
  lockPosition: this.lockPosition,
8895
- matchTriggerWidth: this.matchTriggerWidth
8907
+ matchTriggerWidth: this.matchTriggerWidth,
8908
+ hideWhenTriggerHidden: this.hideWhenTriggerHidden
8896
8909
  });
8897
8910
  width = this._p.width;
8898
8911
  state = this._p.state;
@@ -8961,6 +8974,13 @@ var PopoverDirective = class PopoverDirective {
8961
8974
  isSignal: true,
8962
8975
  isRequired: false,
8963
8976
  transformFunction: null
8977
+ },
8978
+ hideWhenTriggerHidden: {
8979
+ classPropertyName: "hideWhenTriggerHidden",
8980
+ publicName: "hideWhenTriggerHidden",
8981
+ isSignal: true,
8982
+ isRequired: false,
8983
+ transformFunction: null
8964
8984
  }
8965
8985
  },
8966
8986
  host: {
@@ -9039,6 +9059,14 @@ i0.ɵɵngDeclareClassMetadata({
9039
9059
  alias: "matchTriggerWidth",
9040
9060
  required: false
9041
9061
  }]
9062
+ }],
9063
+ hideWhenTriggerHidden: [{
9064
+ type: i0.Input,
9065
+ args: [{
9066
+ isSignal: true,
9067
+ alias: "hideWhenTriggerHidden",
9068
+ required: false
9069
+ }]
9042
9070
  }]
9043
9071
  }
9044
9072
  });
@@ -9051,6 +9079,7 @@ function injectFloatingPanel(options) {
9051
9079
  const topLayer = resolve(options.topLayer);
9052
9080
  const matchAnchorWidth = resolve(options.matchAnchorWidth);
9053
9081
  const allowFlip = options.flip === void 0 ? true : resolve(options.flip);
9082
+ const hideWhenAnchorHidden = resolve(options.hideWhenAnchorHidden);
9054
9083
  const arrowElement = options.arrow?.();
9055
9084
  panel.style.visibility = "hidden";
9056
9085
  if (!matchAnchorWidth && sized.has(panel)) {
@@ -9074,17 +9103,21 @@ function injectFloatingPanel(options) {
9074
9103
  element: arrowElement,
9075
9104
  padding: 6
9076
9105
  })] : [],
9077
- ...matchAnchorWidth ? [size({ apply: ({ rects, elements }) => {
9078
- elements.floating.style.width = `${rects.reference.width}px`;
9079
- sized.add(elements.floating);
9080
- } })] : []
9106
+ ...matchAnchorWidth || options.maxHeightVariable ? [size({ apply: ({ rects, elements, availableHeight }) => {
9107
+ if (matchAnchorWidth) {
9108
+ elements.floating.style.width = `${rects.reference.width}px`;
9109
+ sized.add(elements.floating);
9110
+ }
9111
+ if (options.maxHeightVariable) elements.floating.style.setProperty(options.maxHeightVariable, `${Math.max(0, availableHeight)}px`);
9112
+ } })] : [],
9113
+ ...hideWhenAnchorHidden ? [hide({ strategy: "referenceHidden" })] : []
9081
9114
  ]
9082
9115
  }).then(({ x, y, placement: placed, middlewareData }) => {
9083
9116
  panel.style.left = `${x}px`;
9084
9117
  panel.style.top = `${y}px`;
9085
9118
  if (arrowElement) placeArrow(panel, arrowElement, placed, middlewareData.arrow);
9086
9119
  if (options.anchorWidthVariable) panel.style.setProperty(options.anchorWidthVariable, `${anchor.offsetWidth}px`);
9087
- panel.style.visibility = "";
9120
+ panel.style.visibility = middlewareData.hide?.referenceHidden ? "hidden" : "";
9088
9121
  options.afterPosition?.(anchor, panel);
9089
9122
  });
9090
9123
  });
@@ -11835,12 +11868,6 @@ i0.ɵɵngDeclareClassMetadata({
11835
11868
  }]
11836
11869
  }
11837
11870
  });
11838
- function fixStaleComboboxRelay(combobox) {
11839
- afterRenderEffect(() => {
11840
- const instance = combobox();
11841
- if (!instance.expanded()) instance._pattern.keyboardEventRelay.set(void 0);
11842
- });
11843
- }
11844
11871
  const INPUT_CONTROL_CLASS = "input-control";
11845
11872
  const INPUT_ICON_LEFT_CLASS = "input-icon-left";
11846
11873
  const INPUT_ICON_RIGHT_CLASS = "input-icon-right";
@@ -12477,7 +12504,6 @@ var AutocompleteComponent = class AutocompleteComponent {
12477
12504
  }, ...ngDevMode ? [{ debugName: "suggestions" }] : /* istanbul ignore next */ []);
12478
12505
  open = signal(false, ...ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []);
12479
12506
  constructor() {
12480
- fixStaleComboboxRelay(() => this.combobox());
12481
12507
  effect((onCleanup) => {
12482
12508
  const query = this.query();
12483
12509
  if (query === untracked(this.settledQuery)) return;
@@ -14415,6 +14441,17 @@ var ListComponent = class ListComponent {
14415
14441
  class = input(...ngDevMode ? [void 0, { debugName: "class" }] : /* istanbul ignore next */ []);
14416
14442
  variant = input("list-content", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
14417
14443
  size = input("small", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
14444
+ host = inject(ElementRef);
14445
+ keyboardFocusState = signal(false, ...ngDevMode ? [{ debugName: "keyboardFocusState" }] : /* istanbul ignore next */ []);
14446
+ keyboardFocused = this.keyboardFocusState.asReadonly();
14447
+ onFocusIn(event) {
14448
+ const target = event.target;
14449
+ this.keyboardFocusState.set(target instanceof HTMLElement && target.matches(":focus-visible"));
14450
+ }
14451
+ onFocusOut(event) {
14452
+ const next = event.relatedTarget;
14453
+ if (!(next instanceof Node && this.host.nativeElement.contains(next))) this.keyboardFocusState.set(false);
14454
+ }
14418
14455
  variants = computed(() => cn("flex flex-col outline-none", this.class()), ...ngDevMode ? [{ debugName: "variants" }] : /* istanbul ignore next */ []);
14419
14456
  static ɵfac = i0.ɵɵngDeclareFactory({
14420
14457
  minVersion: "12.0.0",
@@ -14453,7 +14490,13 @@ var ListComponent = class ListComponent {
14453
14490
  transformFunction: null
14454
14491
  }
14455
14492
  },
14456
- host: { properties: { "class": "variants()" } },
14493
+ host: {
14494
+ listeners: {
14495
+ "focusin": "onFocusIn($event)",
14496
+ "focusout": "onFocusOut($event)"
14497
+ },
14498
+ properties: { "class": "variants()" }
14499
+ },
14457
14500
  providers: [{
14458
14501
  provide: LIST_REF,
14459
14502
  useExisting: ListComponent
@@ -14515,7 +14558,11 @@ i0.ɵɵngDeclareClassMetadata({
14515
14558
  ],
14516
14559
  outputs: ["valueChange"]
14517
14560
  }],
14518
- host: { "[class]": "variants()" },
14561
+ host: {
14562
+ "[class]": "variants()",
14563
+ "(focusin)": "onFocusIn($event)",
14564
+ "(focusout)": "onFocusOut($event)"
14565
+ },
14519
14566
  providers: [{
14520
14567
  provide: LIST_REF,
14521
14568
  useExisting: ListComponent
@@ -14549,6 +14596,131 @@ i0.ɵɵngDeclareClassMetadata({
14549
14596
  }]
14550
14597
  }
14551
14598
  });
14599
+ const kbdVariants = cva([
14600
+ "pointer-events-none inline-flex w-fit items-center justify-center gap-(--spacing-4xs) select-none",
14601
+ "border border-solid border-(--stroke-neutral-disabled) bg-(--bg-neutral-base) text-(--font-neutral-base)",
14602
+ "font-[family-name:var(--family-base,'Hanken_Grotesk'),sans-serif] font-medium",
14603
+ "[&_svg:not([class*='size-'])]:size-3"
14604
+ ], {
14605
+ variants: { size: {
14606
+ xs: "h-4 min-w-4 rounded-(--radius-xs) px-(--spacing-4xs) text-(length:--size-xs) leading-(--line-height-xs)",
14607
+ sm: "h-5 min-w-5 rounded-(--radius-xs) px-(--spacing-4xs) text-(length:--size-sm) leading-(--line-height-sm)",
14608
+ md: "h-6 min-w-6 rounded-(--radius-sm) px-(--spacing-3xs) text-(length:--size-base) leading-(--line-height-base)"
14609
+ } },
14610
+ defaultVariants: { size: "sm" }
14611
+ });
14612
+ var KbdComponent = class KbdComponent {
14613
+ class = input(...ngDevMode ? [void 0, { debugName: "class" }] : /* istanbul ignore next */ []);
14614
+ size = input("sm", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
14615
+ variants = computed(() => cn(kbdVariants({
14616
+ size: this.size(),
14617
+ class: this.class()
14618
+ })), ...ngDevMode ? [{ debugName: "variants" }] : /* istanbul ignore next */ []);
14619
+ static ɵfac = i0.ɵɵngDeclareFactory({
14620
+ minVersion: "12.0.0",
14621
+ version: "22.2.1",
14622
+ ngImport: i0,
14623
+ type: KbdComponent,
14624
+ deps: [],
14625
+ target: i0.ɵɵFactoryTarget.Directive
14626
+ });
14627
+ static ɵdir = i0.ɵɵngDeclareDirective({
14628
+ minVersion: "17.1.0",
14629
+ version: "22.2.1",
14630
+ type: KbdComponent,
14631
+ isStandalone: true,
14632
+ selector: "kbd, Kbd",
14633
+ inputs: {
14634
+ class: {
14635
+ classPropertyName: "class",
14636
+ publicName: "class",
14637
+ isSignal: true,
14638
+ isRequired: false,
14639
+ transformFunction: null
14640
+ },
14641
+ size: {
14642
+ classPropertyName: "size",
14643
+ publicName: "size",
14644
+ isSignal: true,
14645
+ isRequired: false,
14646
+ transformFunction: null
14647
+ }
14648
+ },
14649
+ host: { properties: { "class": "variants()" } },
14650
+ ngImport: i0
14651
+ });
14652
+ };
14653
+ i0.ɵɵngDeclareClassMetadata({
14654
+ minVersion: "12.0.0",
14655
+ version: "22.2.1",
14656
+ ngImport: i0,
14657
+ type: KbdComponent,
14658
+ decorators: [{
14659
+ type: Directive,
14660
+ args: [{
14661
+ selector: "kbd, Kbd",
14662
+ standalone: true,
14663
+ host: { "[class]": "variants()" }
14664
+ }]
14665
+ }],
14666
+ propDecorators: {
14667
+ class: [{
14668
+ type: i0.Input,
14669
+ args: [{
14670
+ isSignal: true,
14671
+ alias: "class",
14672
+ required: false
14673
+ }]
14674
+ }],
14675
+ size: [{
14676
+ type: i0.Input,
14677
+ args: [{
14678
+ isSignal: true,
14679
+ alias: "size",
14680
+ required: false
14681
+ }]
14682
+ }]
14683
+ }
14684
+ });
14685
+ var KbdGroupComponent = class KbdGroupComponent {
14686
+ static ɵfac = i0.ɵɵngDeclareFactory({
14687
+ minVersion: "12.0.0",
14688
+ version: "22.2.1",
14689
+ ngImport: i0,
14690
+ type: KbdGroupComponent,
14691
+ deps: [],
14692
+ target: i0.ɵɵFactoryTarget.Directive
14693
+ });
14694
+ static ɵdir = i0.ɵɵngDeclareDirective({
14695
+ minVersion: "14.0.0",
14696
+ version: "22.2.1",
14697
+ type: KbdGroupComponent,
14698
+ isStandalone: true,
14699
+ selector: "kbd-group, kbdgroup, KbdGroup",
14700
+ host: {
14701
+ attributes: { "role": "group" },
14702
+ classAttribute: "inline-flex items-center gap-(--spacing-4xs)"
14703
+ },
14704
+ ngImport: i0
14705
+ });
14706
+ };
14707
+ i0.ɵɵngDeclareClassMetadata({
14708
+ minVersion: "12.0.0",
14709
+ version: "22.2.1",
14710
+ ngImport: i0,
14711
+ type: KbdGroupComponent,
14712
+ decorators: [{
14713
+ type: Directive,
14714
+ args: [{
14715
+ selector: "kbd-group, kbdgroup, KbdGroup",
14716
+ standalone: true,
14717
+ host: {
14718
+ role: "group",
14719
+ class: "inline-flex items-center gap-(--spacing-4xs)"
14720
+ }
14721
+ }]
14722
+ }]
14723
+ });
14552
14724
  const LIST_ITEM_LEFT_CLASS = "list-item-left";
14553
14725
  const LIST_ITEM_TEXT_BLOCK_CLASS = "list-item-text-block";
14554
14726
  const LIST_ITEM_TEXT_CLASS = "list-item-text";
@@ -14558,12 +14730,13 @@ const LIST_ITEM_EXPANDER_CLASS = "list-item-expander";
14558
14730
  const LIST_ITEM_EXPANDER_BUTTON_CLASS = "list-item-expander-btn";
14559
14731
  const LIST_ITEM_AVATAR_CLASS = "list-item-avatar";
14560
14732
  const LIST_ITEM_ICON_RIGHT_CLASS = "list-item-icon-right";
14733
+ const LIST_ITEM_ACTION_HINT_CLASS = "list-item-action-hint";
14561
14734
  const LIST_ITEM_CHEVRON_RIGHT_CLASS = "list-item-chevron-right";
14562
14735
  function getListDepthStyle(depth = 0) {
14563
14736
  return depth > 0 ? { paddingLeft: `calc(var(--spacing-2xs) + ${depth} * 20px)` } : void 0;
14564
14737
  }
14565
14738
  const listItemVariants = cva([
14566
- "box-border flex w-full items-center gap-(--spacing-2xs)",
14739
+ "relative box-border flex w-full items-center gap-(--spacing-2xs)",
14567
14740
  "rounded-(--radius-sm) px-(--spacing-2xs) py-(--spacing-3xs)",
14568
14741
  "bg-transparent",
14569
14742
  "transition-[background-color] duration-100 ease-out motion-reduce:transition-none",
@@ -14586,6 +14759,13 @@ const listItemVariants = cva([
14586
14759
  "[&_.list-item-expander-btn:hover:not(:disabled)]:bg-(--bg-primary-light) [&_.list-item-expander-btn:hover:not(:disabled)]:text-(--font-neutral-black)",
14587
14760
  "[&_.list-item-avatar]:inline-flex [&_.list-item-avatar]:h-6 [&_.list-item-avatar]:w-6 [&_.list-item-avatar]:shrink-0 [&_.list-item-avatar]:items-center [&_.list-item-avatar]:justify-center [&_.list-item-avatar]:overflow-hidden [&_.list-item-avatar]:rounded-full [&_.list-item-avatar]:bg-(--bg-primary-lightest) [&_.list-item-avatar]:text-(length:--size-sm) [&_.list-item-avatar]:font-bold [&_.list-item-avatar]:text-(--font-primary-base)",
14588
14761
  "[&_.list-item-icon-right]:inline-flex [&_.list-item-icon-right]:shrink-0 [&_.list-item-icon-right]:cursor-pointer [&_.list-item-icon-right]:items-center [&_.list-item-icon-right]:justify-center [&_.list-item-icon-right]:rounded-(--radius-xs) [&_.list-item-icon-right]:border-0 [&_.list-item-icon-right]:bg-transparent [&_.list-item-icon-right]:p-0.5 [&_.list-item-icon-right]:text-(length:--icon-xs) [&_.list-item-icon-right]:leading-none [&_.list-item-icon-right]:text-(--font-primary-muted) [&_.list-item-icon-right]:opacity-0",
14762
+ "[&_.list-item-action-hint]:hidden [&_.list-item-action-hint]:items-center [&_.list-item-action-hint]:gap-(--spacing-2xs) [&_.list-item-action-hint]:ps-(--spacing-xs) [&_.list-item-action-hint]:pb-(--spacing-3xs) [&_.list-item-action-hint]:text-(length:--size-sm) [&_.list-item-action-hint]:leading-(--line-height-2) [&_.list-item-action-hint]:text-(--font-neutral-base) focus-visible:[&_.list-item-action-hint]:flex",
14763
+ "has-[.list-item-action-hint]:focus-visible:grid has-[.list-item-action-hint]:focus-visible:h-auto has-[.list-item-action-hint]:focus-visible:grid-flow-col has-[.list-item-action-hint]:focus-visible:grid-cols-[minmax(0,1fr)] has-[.list-item-action-hint]:focus-visible:grid-rows-[auto_auto] has-[.list-item-action-hint]:focus-visible:gap-y-0",
14764
+ "has-[.list-item-action-hint]:focus-visible:[&>*]:row-span-2 has-[.list-item-action-hint]:focus-visible:[&>*]:row-start-1 has-[.list-item-action-hint]:focus-visible:[&>*]:self-center",
14765
+ "has-[.list-item-action-hint]:focus-visible:[&>.list-item-left]:col-start-1 has-[.list-item-action-hint]:focus-visible:[&>.list-item-left]:row-span-1",
14766
+ "has-[.list-item-action-hint]:focus-visible:[&_.list-item-icon-right]:row-span-2 has-[.list-item-action-hint]:focus-visible:[&_.list-item-icon-right]:row-start-1 has-[.list-item-action-hint]:focus-visible:[&_.list-item-icon-right]:self-center",
14767
+ "has-[.list-item-action-hint]:focus-visible:[&_.list-item-action-hint]:col-start-1 has-[.list-item-action-hint]:focus-visible:[&_.list-item-action-hint]:row-span-1 has-[.list-item-action-hint]:focus-visible:[&_.list-item-action-hint]:row-start-2 has-[.list-item-action-hint]:focus-visible:[&_.list-item-action-hint]:self-start",
14768
+ "focus-visible:[&_.list-item-icon-right]:text-(--font-error-base)",
14589
14769
  "hover:[&_.list-item-icon-right]:opacity-100 focus-visible:[&_.list-item-icon-right]:opacity-100 active:[&_.list-item-icon-right]:opacity-100 aria-selected:[&_.list-item-icon-right]:opacity-100",
14590
14770
  "[&_.list-item-icon-right:hover]:bg-(--bg-error-lightest) [&_.list-item-icon-right:hover]:text-(--font-error-base)",
14591
14771
  "[&_.list-item-chevron-right]:inline-flex [&_.list-item-chevron-right]:shrink-0 [&_.list-item-chevron-right]:items-center [&_.list-item-chevron-right]:justify-center [&_.list-item-chevron-right]:text-(length:--icon-sm) [&_.list-item-chevron-right]:text-(--font-secondary-base-alt) [&_.list-item-chevron-right]:transition-transform [&_.list-item-chevron-right]:duration-150 [&_.list-item-chevron-right]:ease-out",
@@ -14598,8 +14778,8 @@ const listItemVariants = cva([
14598
14778
  "list-menu": "m-0 h-[var(--row-height-sm)] cursor-pointer appearance-none gap-0 border-0 bg-transparent text-left font-[family-name:var(--family-base,'Hanken_Grotesk'),sans-serif]"
14599
14779
  },
14600
14780
  size: {
14601
- small: "h-[var(--row-height-sm)]",
14602
- medium: "h-[var(--row-height-md)]"
14781
+ small: "h-[var(--row-height-sm)] has-[.list-item-action-hint]:focus-visible:min-h-[var(--row-height-sm)]",
14782
+ medium: "h-[var(--row-height-md)] has-[.list-item-action-hint]:focus-visible:min-h-[var(--row-height-md)]"
14603
14783
  },
14604
14784
  selected: {
14605
14785
  true: "bg-(--bg-primary-lighter)",
@@ -14621,6 +14801,12 @@ const listItemVariants = cva([
14621
14801
  selected: false
14622
14802
  }
14623
14803
  });
14804
+ let nextActionDescriptionId = 0;
14805
+ const KEY_NAMES = {
14806
+ Delete: "Del",
14807
+ Backspace: "⌫",
14808
+ Escape: "Esc"
14809
+ };
14624
14810
  var ListItemComponent = class ListItemComponent {
14625
14811
  class = input(...ngDevMode ? [void 0, { debugName: "class" }] : /* istanbul ignore next */ []);
14626
14812
  variant = input(...ngDevMode ? [void 0, { debugName: "variant" }] : /* istanbul ignore next */ []);
@@ -14638,16 +14824,22 @@ var ListItemComponent = class ListItemComponent {
14638
14824
  class: this.class()
14639
14825
  })), ...ngDevMode ? [{ debugName: "variants" }] : /* istanbul ignore next */ []);
14640
14826
  paddingLeft = computed(() => getListDepthStyle(this.depth())?.paddingLeft ?? null, ...ngDevMode ? [{ debugName: "paddingLeft" }] : /* istanbul ignore next */ []);
14641
- host = inject(ElementRef);
14642
- hasAction = computed(() => !!this.action(), ...ngDevMode ? [{ debugName: "hasAction" }] : /* istanbul ignore next */ []);
14827
+ hasAction = computed(() => {
14828
+ const action = this.action();
14829
+ return !!action && !action.disabled();
14830
+ }, ...ngDevMode ? [{ debugName: "hasAction" }] : /* istanbul ignore next */ []);
14643
14831
  action = contentChild(ListItemActionComponent, ...ngDevMode ? [{ debugName: "action" }] : /* istanbul ignore next */ []);
14832
+ keyShortcuts = computed(() => this.hasAction() ? this.action().keys().join(" ") : null, ...ngDevMode ? [{ debugName: "keyShortcuts" }] : /* istanbul ignore next */ []);
14833
+ actionDescriptionId = computed(() => {
14834
+ const action = this.action();
14835
+ return this.hasAction() && action?.description() ? action.descriptionId : null;
14836
+ }, ...ngDevMode ? [{ debugName: "actionDescriptionId" }] : /* istanbul ignore next */ []);
14644
14837
  onKeydown(event) {
14645
- if (event.key !== "Delete" || !this.hasAction()) return;
14646
- const action = this.host.nativeElement.querySelector(`.${LIST_ITEM_ICON_RIGHT_CLASS}`);
14647
- if (!action || action.dataset["disabled"]) return;
14838
+ const action = this.action();
14839
+ if (!action || action.disabled() || !action.keys().includes(event.key)) return;
14648
14840
  event.preventDefault();
14649
14841
  event.stopPropagation();
14650
- action.click();
14842
+ action.trigger();
14651
14843
  }
14652
14844
  static ɵfac = i0.ɵɵngDeclareFactory({
14653
14845
  minVersion: "12.0.0",
@@ -14698,7 +14890,8 @@ var ListItemComponent = class ListItemComponent {
14698
14890
  properties: {
14699
14891
  "class": "variants()",
14700
14892
  "style.padding-left": "paddingLeft()",
14701
- "attr.aria-keyshortcuts": "hasAction() ? 'Delete' : null"
14893
+ "attr.aria-keyshortcuts": "keyShortcuts()",
14894
+ "attr.aria-describedby": "actionDescriptionId()"
14702
14895
  }
14703
14896
  },
14704
14897
  queries: [{
@@ -14745,7 +14938,8 @@ i0.ɵɵngDeclareClassMetadata({
14745
14938
  host: {
14746
14939
  "[class]": "variants()",
14747
14940
  "[style.padding-left]": "paddingLeft()",
14748
- "[attr.aria-keyshortcuts]": "hasAction() ? 'Delete' : null",
14941
+ "[attr.aria-keyshortcuts]": "keyShortcuts()",
14942
+ "[attr.aria-describedby]": "actionDescriptionId()",
14749
14943
  "(keydown)": "onKeydown($event)"
14750
14944
  }
14751
14945
  }]
@@ -15034,7 +15228,35 @@ var ListItemActionComponent = class ListItemActionComponent {
15034
15228
  ...ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {},
15035
15229
  transform: booleanAttribute
15036
15230
  });
15231
+ keys = input(["Delete"], ...ngDevMode ? [{ debugName: "keys" }] : /* istanbul ignore next */ []);
15232
+ shortcut = input(...ngDevMode ? [void 0, { debugName: "shortcut" }] : /* istanbul ignore next */ []);
15233
+ description = input(...ngDevMode ? [void 0, { debugName: "description" }] : /* istanbul ignore next */ []);
15234
+ descriptionId = `list-item-action-description-${nextActionDescriptionId++}`;
15235
+ keyName = computed(() => {
15236
+ const key = this.keys()[0] ?? "";
15237
+ return this.shortcut() ?? KEY_NAMES[key] ?? key;
15238
+ }, ...ngDevMode ? [{ debugName: "keyName" }] : /* istanbul ignore next */ []);
15239
+ trigger$ = viewChild("trigger", ...ngDevMode ? [{ debugName: "trigger$" }] : /* istanbul ignore next */ []);
15240
+ trigger() {
15241
+ if (this.disabled()) return;
15242
+ this.trigger$()?.nativeElement.click();
15243
+ }
15244
+ hint = computed(() => {
15245
+ const text = this.description() ?? "";
15246
+ const key = this.keyName();
15247
+ const at = text.indexOf(key);
15248
+ return at < 0 ? {
15249
+ before: text,
15250
+ after: "",
15251
+ withKey: false
15252
+ } : {
15253
+ before: text.slice(0, at),
15254
+ after: text.slice(at + key.length),
15255
+ withKey: true
15256
+ };
15257
+ }, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
15037
15258
  btnClass = LIST_ITEM_ICON_RIGHT_CLASS;
15259
+ hintClass = LIST_ITEM_ACTION_HINT_CLASS;
15038
15260
  static ɵfac = i0.ɵɵngDeclareFactory({
15039
15261
  minVersion: "12.0.0",
15040
15262
  version: "22.2.1",
@@ -15044,7 +15266,7 @@ var ListItemActionComponent = class ListItemActionComponent {
15044
15266
  target: i0.ɵɵFactoryTarget.Component
15045
15267
  });
15046
15268
  static ɵcmp = i0.ɵɵngDeclareComponent({
15047
- minVersion: "17.1.0",
15269
+ minVersion: "17.0.0",
15048
15270
  version: "22.2.1",
15049
15271
  type: ListItemActionComponent,
15050
15272
  isStandalone: true,
@@ -15063,13 +15285,47 @@ var ListItemActionComponent = class ListItemActionComponent {
15063
15285
  isSignal: true,
15064
15286
  isRequired: false,
15065
15287
  transformFunction: null
15288
+ },
15289
+ keys: {
15290
+ classPropertyName: "keys",
15291
+ publicName: "keys",
15292
+ isSignal: true,
15293
+ isRequired: false,
15294
+ transformFunction: null
15295
+ },
15296
+ shortcut: {
15297
+ classPropertyName: "shortcut",
15298
+ publicName: "shortcut",
15299
+ isSignal: true,
15300
+ isRequired: false,
15301
+ transformFunction: null
15302
+ },
15303
+ description: {
15304
+ classPropertyName: "description",
15305
+ publicName: "description",
15306
+ isSignal: true,
15307
+ isRequired: false,
15308
+ transformFunction: null
15066
15309
  }
15067
15310
  },
15068
15311
  host: { classAttribute: "contents" },
15312
+ viewQueries: [{
15313
+ propertyName: "trigger$",
15314
+ first: true,
15315
+ predicate: ["trigger"],
15316
+ descendants: true,
15317
+ isSignal: true
15318
+ }],
15069
15319
  exportAs: ["listItemAction"],
15070
15320
  ngImport: i0,
15071
15321
  template: `
15322
+ <!-- Texte masqué relié à la ligne par aria-describedby. aria-hidden : il ne doit pas entrer dans le
15323
+ nom de l'option (calculé depuis son contenu), une référence aria-describedby le lit quand même. -->
15324
+ @if (description() && !disabled()) {
15325
+ <span [id]="descriptionId" class="sr-only" aria-hidden="true">{{ description() }}</span>
15326
+ }
15072
15327
  <span
15328
+ #trigger
15073
15329
  [class]="btnClass"
15074
15330
  aria-hidden="true"
15075
15331
  [class.pointer-events-none]="disabled()"
@@ -15078,8 +15334,27 @@ var ListItemActionComponent = class ListItemActionComponent {
15078
15334
  [attr.data-disabled]="disabled() || null">
15079
15335
  <ng-content />
15080
15336
  </span>
15337
+ <!-- Seconde ligne de la ligne, visible au focus clavier seulement (voir le CVA). Enfant direct de la
15338
+ ligne, l'hôte de ce composant étant en display: contents. -->
15339
+ @if (description() && !disabled()) {
15340
+ <span [class]="hintClass" aria-hidden="true">
15341
+ <span>
15342
+ {{ hint().before }}
15343
+ @if (hint().withKey) {
15344
+ <kbd>{{ keyName() }}</kbd>
15345
+ }
15346
+ {{ hint().after }}
15347
+ </span>
15348
+ </span>
15349
+ }
15081
15350
  `,
15082
15351
  isInline: true,
15352
+ dependencies: [{
15353
+ kind: "directive",
15354
+ type: KbdComponent,
15355
+ selector: "kbd, Kbd",
15356
+ inputs: ["class", "size"]
15357
+ }],
15083
15358
  changeDetection: i0.ChangeDetectionStrategy.OnPush
15084
15359
  });
15085
15360
  };
@@ -15095,8 +15370,15 @@ i0.ɵɵngDeclareClassMetadata({
15095
15370
  exportAs: "listItemAction",
15096
15371
  standalone: true,
15097
15372
  changeDetection: ChangeDetectionStrategy.OnPush,
15373
+ imports: [KbdComponent],
15098
15374
  template: `
15375
+ <!-- Texte masqué relié à la ligne par aria-describedby. aria-hidden : il ne doit pas entrer dans le
15376
+ nom de l'option (calculé depuis son contenu), une référence aria-describedby le lit quand même. -->
15377
+ @if (description() && !disabled()) {
15378
+ <span [id]="descriptionId" class="sr-only" aria-hidden="true">{{ description() }}</span>
15379
+ }
15099
15380
  <span
15381
+ #trigger
15100
15382
  [class]="btnClass"
15101
15383
  aria-hidden="true"
15102
15384
  [class.pointer-events-none]="disabled()"
@@ -15105,6 +15387,19 @@ i0.ɵɵngDeclareClassMetadata({
15105
15387
  [attr.data-disabled]="disabled() || null">
15106
15388
  <ng-content />
15107
15389
  </span>
15390
+ <!-- Seconde ligne de la ligne, visible au focus clavier seulement (voir le CVA). Enfant direct de la
15391
+ ligne, l'hôte de ce composant étant en display: contents. -->
15392
+ @if (description() && !disabled()) {
15393
+ <span [class]="hintClass" aria-hidden="true">
15394
+ <span>
15395
+ {{ hint().before }}
15396
+ @if (hint().withKey) {
15397
+ <kbd>{{ keyName() }}</kbd>
15398
+ }
15399
+ {{ hint().after }}
15400
+ </span>
15401
+ </span>
15402
+ }
15108
15403
  `,
15109
15404
  host: { class: "contents" }
15110
15405
  }]
@@ -15125,6 +15420,34 @@ i0.ɵɵngDeclareClassMetadata({
15125
15420
  alias: "disabled",
15126
15421
  required: false
15127
15422
  }]
15423
+ }],
15424
+ keys: [{
15425
+ type: i0.Input,
15426
+ args: [{
15427
+ isSignal: true,
15428
+ alias: "keys",
15429
+ required: false
15430
+ }]
15431
+ }],
15432
+ shortcut: [{
15433
+ type: i0.Input,
15434
+ args: [{
15435
+ isSignal: true,
15436
+ alias: "shortcut",
15437
+ required: false
15438
+ }]
15439
+ }],
15440
+ description: [{
15441
+ type: i0.Input,
15442
+ args: [{
15443
+ isSignal: true,
15444
+ alias: "description",
15445
+ required: false
15446
+ }]
15447
+ }],
15448
+ trigger$: [{
15449
+ type: i0.ViewChild,
15450
+ args: ["trigger", { isSignal: true }]
15128
15451
  }]
15129
15452
  }
15130
15453
  });
@@ -16046,9 +16369,11 @@ i0.ɵɵngDeclareClassMetadata({
16046
16369
  }] }
16047
16370
  });
16048
16371
  const switchRootVariants = cva([
16049
- "relative inline-flex h-11 w-11 cursor-pointer items-center justify-center select-none",
16372
+ "relative inline-flex min-h-(--switch-hitbox) cursor-pointer items-center gap-2 select-none [--switch-hitbox:2.75rem]",
16050
16373
  "has-disabled:cursor-not-allowed",
16051
16374
  "[&_.switch-input]:absolute [&_.switch-input]:-m-px [&_.switch-input]:h-px [&_.switch-input]:w-px [&_.switch-input]:overflow-hidden [&_.switch-input]:border-0 [&_.switch-input]:p-0 [&_.switch-input]:whitespace-nowrap [&_.switch-input]:[clip:rect(0,0,0,0)]",
16375
+ "[&_.switch-hitbox]:relative [&_.switch-hitbox]:inline-flex [&_.switch-hitbox]:h-(--switch-hitbox) [&_.switch-hitbox]:w-(--switch-hitbox) [&_.switch-hitbox]:shrink-0 [&_.switch-hitbox]:items-center [&_.switch-hitbox]:justify-center",
16376
+ "[&_.switch-label]:min-w-0 [&_.switch-label:empty]:hidden",
16052
16377
  "[&_.switch-track]:relative [&_.switch-track]:inline-flex [&_.switch-track]:shrink-0 [&_.switch-track]:rounded-full",
16053
16378
  "[&_.switch-track]:border [&_.switch-track]:border-solid [&_.switch-track]:border-(--stroke-primary-base) [&_.switch-track]:bg-(--bg-neutral-white)",
16054
16379
  "[&_.switch-track]:transition-[background,border-color] [&_.switch-track]:duration-120 [&_.switch-track]:ease-[ease] motion-reduce:[&_.switch-track]:transition-none",
@@ -16100,8 +16425,12 @@ var SwitchComponent = class SwitchComponent {
16100
16425
  ...ngDevMode ? { debugName: "presentational" } : /* istanbul ignore next */ {},
16101
16426
  transform: booleanAttribute
16102
16427
  });
16428
+ compact = input(false, {
16429
+ ...ngDevMode ? { debugName: "compact" } : /* istanbul ignore next */ {},
16430
+ transform: booleanAttribute
16431
+ });
16103
16432
  tabIndex = input(void 0, ...ngDevMode ? [{ debugName: "tabIndex" }] : /* istanbul ignore next */ []);
16104
- variants = computed(() => cn(switchRootVariants({ size: this.size() }), this.presentational() && "pointer-events-none", this.class()), ...ngDevMode ? [{ debugName: "variants" }] : /* istanbul ignore next */ []);
16433
+ variants = computed(() => cn(switchRootVariants({ size: this.size() }), this.presentational() && "pointer-events-none", (this.compact() || this.presentational()) && "[--switch-hitbox:auto]", this.class()), ...ngDevMode ? [{ debugName: "variants" }] : /* istanbul ignore next */ []);
16105
16434
  onCheckedChange(event) {
16106
16435
  const input = event.target;
16107
16436
  this.checked.set(input.checked);
@@ -16170,6 +16499,13 @@ var SwitchComponent = class SwitchComponent {
16170
16499
  isRequired: false,
16171
16500
  transformFunction: null
16172
16501
  },
16502
+ compact: {
16503
+ classPropertyName: "compact",
16504
+ publicName: "compact",
16505
+ isSignal: true,
16506
+ isRequired: false,
16507
+ transformFunction: null
16508
+ },
16173
16509
  tabIndex: {
16174
16510
  classPropertyName: "tabIndex",
16175
16511
  publicName: "tabIndex",
@@ -16196,12 +16532,15 @@ var SwitchComponent = class SwitchComponent {
16196
16532
  [attr.inert]="presentational() ? '' : null"
16197
16533
  (change)="onCheckedChange($event)"
16198
16534
  >
16199
- <span class="switch-track">
16200
- <span class="switch-thumb">
16201
- <XMarkIcon class="switch-thumb-icon switch-thumb-icon-off"/>
16202
- <CheckIcon class="switch-thumb-icon switch-thumb-icon-on"/>
16535
+ <span class="switch-hitbox">
16536
+ <span class="switch-track">
16537
+ <span class="switch-thumb">
16538
+ <XMarkIcon class="switch-thumb-icon switch-thumb-icon-off"/>
16539
+ <CheckIcon class="switch-thumb-icon switch-thumb-icon-on"/>
16540
+ </span>
16203
16541
  </span>
16204
16542
  </span>
16543
+ <span class="switch-label"><ng-content /></span>
16205
16544
  </label>
16206
16545
  `,
16207
16546
  isInline: true,
@@ -16215,7 +16554,8 @@ var SwitchComponent = class SwitchComponent {
16215
16554
  type: CheckIcon,
16216
16555
  selector: "check, check-icon, Check, CheckIcon",
16217
16556
  inputs: ["class"]
16218
- }]
16557
+ }],
16558
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
16219
16559
  });
16220
16560
  };
16221
16561
  i0.ɵɵngDeclareClassMetadata({
@@ -16229,6 +16569,7 @@ i0.ɵɵngDeclareClassMetadata({
16229
16569
  selector: "switch, Switch",
16230
16570
  imports: [XMarkIcon, CheckIcon],
16231
16571
  standalone: true,
16572
+ changeDetection: ChangeDetectionStrategy.OnPush,
16232
16573
  template: `
16233
16574
  <label [class]="variants()" [attr.aria-hidden]="presentational() ? 'true' : null">
16234
16575
  <input
@@ -16244,12 +16585,15 @@ i0.ɵɵngDeclareClassMetadata({
16244
16585
  [attr.inert]="presentational() ? '' : null"
16245
16586
  (change)="onCheckedChange($event)"
16246
16587
  >
16247
- <span class="switch-track">
16248
- <span class="switch-thumb">
16249
- <XMarkIcon class="switch-thumb-icon switch-thumb-icon-off"/>
16250
- <CheckIcon class="switch-thumb-icon switch-thumb-icon-on"/>
16588
+ <span class="switch-hitbox">
16589
+ <span class="switch-track">
16590
+ <span class="switch-thumb">
16591
+ <XMarkIcon class="switch-thumb-icon switch-thumb-icon-off"/>
16592
+ <CheckIcon class="switch-thumb-icon switch-thumb-icon-on"/>
16593
+ </span>
16251
16594
  </span>
16252
16595
  </span>
16596
+ <span class="switch-label"><ng-content /></span>
16253
16597
  </label>
16254
16598
  `,
16255
16599
  host: { class: "contents" }
@@ -16315,6 +16659,14 @@ i0.ɵɵngDeclareClassMetadata({
16315
16659
  required: false
16316
16660
  }]
16317
16661
  }],
16662
+ compact: [{
16663
+ type: i0.Input,
16664
+ args: [{
16665
+ isSignal: true,
16666
+ alias: "compact",
16667
+ required: false
16668
+ }]
16669
+ }],
16318
16670
  tabIndex: [{
16319
16671
  type: i0.Input,
16320
16672
  args: [{
@@ -18349,136 +18701,11 @@ i0.ɵɵngDeclareClassMetadata({
18349
18701
  }]
18350
18702
  }
18351
18703
  });
18352
- const kbdVariants = cva([
18353
- "pointer-events-none inline-flex w-fit items-center justify-center gap-(--spacing-4xs) select-none",
18354
- "border border-solid border-(--stroke-neutral-disabled) bg-(--bg-neutral-base) text-(--font-neutral-base)",
18355
- "font-[family-name:var(--family-base,'Hanken_Grotesk'),sans-serif] font-medium",
18356
- "[&_svg:not([class*='size-'])]:size-3"
18357
- ], {
18358
- variants: { size: {
18359
- xs: "h-4 min-w-4 rounded-(--radius-xs) px-(--spacing-4xs) text-(length:--size-xs) leading-(--line-height-xs)",
18360
- sm: "h-5 min-w-5 rounded-(--radius-xs) px-(--spacing-4xs) text-(length:--size-sm) leading-(--line-height-sm)",
18361
- md: "h-6 min-w-6 rounded-(--radius-sm) px-(--spacing-3xs) text-(length:--size-base) leading-(--line-height-base)"
18362
- } },
18363
- defaultVariants: { size: "sm" }
18364
- });
18365
- var KbdComponent = class KbdComponent {
18366
- class = input(...ngDevMode ? [void 0, { debugName: "class" }] : /* istanbul ignore next */ []);
18367
- size = input("sm", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
18368
- variants = computed(() => cn(kbdVariants({
18369
- size: this.size(),
18370
- class: this.class()
18371
- })), ...ngDevMode ? [{ debugName: "variants" }] : /* istanbul ignore next */ []);
18372
- static ɵfac = i0.ɵɵngDeclareFactory({
18373
- minVersion: "12.0.0",
18374
- version: "22.2.1",
18375
- ngImport: i0,
18376
- type: KbdComponent,
18377
- deps: [],
18378
- target: i0.ɵɵFactoryTarget.Directive
18379
- });
18380
- static ɵdir = i0.ɵɵngDeclareDirective({
18381
- minVersion: "17.1.0",
18382
- version: "22.2.1",
18383
- type: KbdComponent,
18384
- isStandalone: true,
18385
- selector: "kbd, Kbd",
18386
- inputs: {
18387
- class: {
18388
- classPropertyName: "class",
18389
- publicName: "class",
18390
- isSignal: true,
18391
- isRequired: false,
18392
- transformFunction: null
18393
- },
18394
- size: {
18395
- classPropertyName: "size",
18396
- publicName: "size",
18397
- isSignal: true,
18398
- isRequired: false,
18399
- transformFunction: null
18400
- }
18401
- },
18402
- host: { properties: { "class": "variants()" } },
18403
- ngImport: i0
18404
- });
18405
- };
18406
- i0.ɵɵngDeclareClassMetadata({
18407
- minVersion: "12.0.0",
18408
- version: "22.2.1",
18409
- ngImport: i0,
18410
- type: KbdComponent,
18411
- decorators: [{
18412
- type: Directive,
18413
- args: [{
18414
- selector: "kbd, Kbd",
18415
- standalone: true,
18416
- host: { "[class]": "variants()" }
18417
- }]
18418
- }],
18419
- propDecorators: {
18420
- class: [{
18421
- type: i0.Input,
18422
- args: [{
18423
- isSignal: true,
18424
- alias: "class",
18425
- required: false
18426
- }]
18427
- }],
18428
- size: [{
18429
- type: i0.Input,
18430
- args: [{
18431
- isSignal: true,
18432
- alias: "size",
18433
- required: false
18434
- }]
18435
- }]
18436
- }
18437
- });
18438
- var KbdGroupComponent = class KbdGroupComponent {
18439
- static ɵfac = i0.ɵɵngDeclareFactory({
18440
- minVersion: "12.0.0",
18441
- version: "22.2.1",
18442
- ngImport: i0,
18443
- type: KbdGroupComponent,
18444
- deps: [],
18445
- target: i0.ɵɵFactoryTarget.Directive
18446
- });
18447
- static ɵdir = i0.ɵɵngDeclareDirective({
18448
- minVersion: "14.0.0",
18449
- version: "22.2.1",
18450
- type: KbdGroupComponent,
18451
- isStandalone: true,
18452
- selector: "kbd-group, kbdgroup, KbdGroup",
18453
- host: {
18454
- attributes: { "role": "group" },
18455
- classAttribute: "inline-flex items-center gap-(--spacing-4xs)"
18456
- },
18457
- ngImport: i0
18458
- });
18459
- };
18460
- i0.ɵɵngDeclareClassMetadata({
18461
- minVersion: "12.0.0",
18462
- version: "22.2.1",
18463
- ngImport: i0,
18464
- type: KbdGroupComponent,
18465
- decorators: [{
18466
- type: Directive,
18467
- args: [{
18468
- selector: "kbd-group, kbdgroup, KbdGroup",
18469
- standalone: true,
18470
- host: {
18471
- role: "group",
18472
- class: "inline-flex items-center gap-(--spacing-4xs)"
18473
- }
18474
- }]
18475
- }]
18476
- });
18477
- const avatarVariants = cva([
18478
- "inline-flex shrink-0 items-center justify-center overflow-hidden",
18479
- "rounded-(--radius-rounded)",
18480
- "font-[family-name:var(--family-base,'Hanken_Grotesk'),sans-serif] select-none",
18481
- "[&_.avatar-initials]:leading-none [&_.avatar-initials]:font-(--weight-semibold)"
18704
+ const avatarVariants = cva([
18705
+ "inline-flex shrink-0 items-center justify-center overflow-hidden",
18706
+ "rounded-(--radius-rounded)",
18707
+ "font-[family-name:var(--family-base,'Hanken_Grotesk'),sans-serif] select-none",
18708
+ "[&_.avatar-initials]:leading-none [&_.avatar-initials]:font-(--weight-semibold)"
18482
18709
  ], {
18483
18710
  variants: {
18484
18711
  content: {
@@ -19854,10 +20081,57 @@ i0.ɵɵngDeclareClassMetadata({
19854
20081
  }]
19855
20082
  }
19856
20083
  });
19857
- var SearchInputComponent = class SearchInputComponent {
20084
+ const SEARCH_INPUT_IMPORTS = [
20085
+ SearchIcon,
20086
+ ButtonComponent,
20087
+ InputComponent,
20088
+ InputControlDirective,
20089
+ InputIconLeftDirective,
20090
+ InputIconRightDirective,
20091
+ XMarkIcon,
20092
+ TooltipDirective
20093
+ ];
20094
+ const BEFORE_CONTROL$1 = `
20095
+ <input-group [size]="size()" [textSize]="textSize()" [class]="cn('group/search', class())">
20096
+ <span input-icon-left>
20097
+ <SearchIcon [class]="searchIconClass()" />
20098
+ </span>`;
20099
+ const CONTROL_ATTRIBUTES$1 = `
20100
+ input-control
20101
+ #search
20102
+ type="search"
20103
+ spellcheck="false"
20104
+ autocapitalize="off"
20105
+ autocomplete="off"
20106
+ autocorrect="off"
20107
+ [disabled]="disabled()"
20108
+ [placeholder]="placeholder()"
20109
+ [attr.aria-label]="ariaLabel()"
20110
+ [attr.aria-keyshortcuts]="hotkey()"`;
20111
+ const AFTER_CONTROL$1 = `
20112
+ <button
20113
+ input-icon-right
20114
+ variant="tertiary"
20115
+ scheme="neutral"
20116
+ [iconOnly]="true"
20117
+ [size]="buttonSize()"
20118
+ type="button"
20119
+ [class]="value()
20120
+ ? 'rotate-90 opacity-100 transition-[rotate,opacity] duration-500'
20121
+ : 'rotate-0 opacity-0 pointer-events-none transition-[rotate,opacity] duration-500'"
20122
+ [tabindex]="value() ? 0 : -1"
20123
+ [attr.aria-label]="clearLabel()"
20124
+ [tooltip]="clearLabel()"
20125
+ (keydown.enter)="clearSearch($event)"
20126
+ (click)="clearSearch($event)">
20127
+ <XMarkIcon [class]="iconClass()" />
20128
+ <span class="sr-only">{{ clearLabel() }}</span>
20129
+ </button>
20130
+ <ng-content />
20131
+ </input-group>`;
20132
+ var SearchInputBase = class SearchInputBase {
19858
20133
  cn = cn;
19859
20134
  searchInput = viewChild.required("search", ...ngDevMode ? [{ debugName: "searchInput" }] : /* istanbul ignore next */ []);
19860
- combobox = viewChild.required(Combobox, ...ngDevMode ? [{ debugName: "combobox" }] : /* istanbul ignore next */ []);
19861
20135
  value = model("", ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
19862
20136
  placeholder = input("Search...", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
19863
20137
  disabled = input(false, {
@@ -19877,9 +20151,6 @@ var SearchInputComponent = class SearchInputComponent {
19877
20151
  buttonSize = computed(() => this.size() === "sm" || this.smallText() ? "xs" : "sm", ...ngDevMode ? [{ debugName: "buttonSize" }] : /* istanbul ignore next */ []);
19878
20152
  iconClass = computed(() => this.smallText() ? "size-3" : "", ...ngDevMode ? [{ debugName: "iconClass" }] : /* istanbul ignore next */ []);
19879
20153
  searchIconClass = computed(() => cn("rotate-0 transition-[rotate] duration-500 group-focus-within/search:rotate-90", this.iconClass()), ...ngDevMode ? [{ debugName: "searchIconClass" }] : /* istanbul ignore next */ []);
19880
- constructor() {
19881
- fixStaleComboboxRelay(() => this.combobox());
19882
- }
19883
20154
  clearSearch(e) {
19884
20155
  e.stopImmediatePropagation();
19885
20156
  this.value.set("");
@@ -19888,16 +20159,15 @@ var SearchInputComponent = class SearchInputComponent {
19888
20159
  minVersion: "12.0.0",
19889
20160
  version: "22.2.1",
19890
20161
  ngImport: i0,
19891
- type: SearchInputComponent,
20162
+ type: SearchInputBase,
19892
20163
  deps: [],
19893
- target: i0.ɵɵFactoryTarget.Component
20164
+ target: i0.ɵɵFactoryTarget.Directive
19894
20165
  });
19895
- static ɵcmp = i0.ɵɵngDeclareComponent({
20166
+ static ɵdir = i0.ɵɵngDeclareDirective({
19896
20167
  minVersion: "17.2.0",
19897
20168
  version: "22.2.1",
19898
- type: SearchInputComponent,
20169
+ type: SearchInputBase,
19899
20170
  isStandalone: true,
19900
- selector: "SearchInput, search-input, searchinput",
19901
20171
  inputs: {
19902
20172
  value: {
19903
20173
  classPropertyName: "value",
@@ -19971,54 +20241,119 @@ var SearchInputComponent = class SearchInputComponent {
19971
20241
  predicate: ["search"],
19972
20242
  descendants: true,
19973
20243
  isSignal: true
20244
+ }],
20245
+ ngImport: i0
20246
+ });
20247
+ };
20248
+ i0.ɵɵngDeclareClassMetadata({
20249
+ minVersion: "12.0.0",
20250
+ version: "22.2.1",
20251
+ ngImport: i0,
20252
+ type: SearchInputBase,
20253
+ decorators: [{
20254
+ type: Directive,
20255
+ args: [{ host: { "[class]": "cn(disabled() && 'pointer-events-none opacity-50')" } }]
20256
+ }],
20257
+ propDecorators: {
20258
+ searchInput: [{
20259
+ type: i0.ViewChild,
20260
+ args: ["search", { isSignal: true }]
20261
+ }],
20262
+ value: [{
20263
+ type: i0.Input,
20264
+ args: [{
20265
+ isSignal: true,
20266
+ alias: "value",
20267
+ required: false
20268
+ }]
19974
20269
  }, {
19975
- propertyName: "combobox",
19976
- first: true,
19977
- predicate: Combobox,
19978
- descendants: true,
19979
- isSignal: true
20270
+ type: i0.Output,
20271
+ args: ["valueChange"]
20272
+ }],
20273
+ placeholder: [{
20274
+ type: i0.Input,
20275
+ args: [{
20276
+ isSignal: true,
20277
+ alias: "placeholder",
20278
+ required: false
20279
+ }]
20280
+ }],
20281
+ disabled: [{
20282
+ type: i0.Input,
20283
+ args: [{
20284
+ isSignal: true,
20285
+ alias: "disabled",
20286
+ required: false
20287
+ }]
20288
+ }],
20289
+ ariaLabel: [{
20290
+ type: i0.Input,
20291
+ args: [{
20292
+ isSignal: true,
20293
+ alias: "aria-label",
20294
+ required: false
20295
+ }]
20296
+ }],
20297
+ hotkey: [{
20298
+ type: i0.Input,
20299
+ args: [{
20300
+ isSignal: true,
20301
+ alias: "hotkey",
20302
+ required: false
20303
+ }]
20304
+ }],
20305
+ clearLabel: [{
20306
+ type: i0.Input,
20307
+ args: [{
20308
+ isSignal: true,
20309
+ alias: "clearLabel",
20310
+ required: false
20311
+ }]
20312
+ }],
20313
+ class: [{
20314
+ type: i0.Input,
20315
+ args: [{
20316
+ isSignal: true,
20317
+ alias: "class",
20318
+ required: false
20319
+ }]
20320
+ }],
20321
+ size: [{
20322
+ type: i0.Input,
20323
+ args: [{
20324
+ isSignal: true,
20325
+ alias: "size",
20326
+ required: false
20327
+ }]
19980
20328
  }],
20329
+ textSize: [{
20330
+ type: i0.Input,
20331
+ args: [{
20332
+ isSignal: true,
20333
+ alias: "textSize",
20334
+ required: false
20335
+ }]
20336
+ }]
20337
+ }
20338
+ });
20339
+ var SearchInputComponent = class SearchInputComponent extends SearchInputBase {
20340
+ static ɵfac = i0.ɵɵngDeclareFactory({
20341
+ minVersion: "12.0.0",
20342
+ version: "22.2.1",
19981
20343
  ngImport: i0,
19982
- template: `
19983
- <input-group [size]="size()" [textSize]="textSize()" [class]="cn('group/search', class())">
19984
- <span input-icon-left>
19985
- <SearchIcon [class]="searchIconClass()" />
19986
- </span>
19987
- <input
19988
- input-control
19989
- #search
19990
- ngCombobox
19991
- type="search"
19992
- spellcheck="false"
19993
- autocapitalize="off"
19994
- autocomplete="off"
19995
- autocorrect="off"
19996
- [disabled]="disabled()"
19997
- [placeholder]="placeholder()"
19998
- [(value)]="value"
19999
- [attr.aria-label]="ariaLabel()"
20000
- [attr.aria-keyshortcuts]="hotkey()" />
20001
- <button
20002
- input-icon-right
20003
- variant="tertiary"
20004
- scheme="neutral"
20005
- [iconOnly]="true"
20006
- [size]="buttonSize()"
20007
- type="button"
20008
- [class]="value()
20009
- ? 'rotate-90 opacity-100 transition-[rotate,opacity] duration-500'
20010
- : 'rotate-0 opacity-0 pointer-events-none transition-[rotate,opacity] duration-500'"
20011
- [tabindex]="value() ? 0 : -1"
20012
- [attr.aria-label]="clearLabel()"
20013
- [tooltip]="clearLabel()"
20014
- (keydown.enter)="clearSearch($event)"
20015
- (click)="clearSearch($event)">
20016
- <XMarkIcon [class]="iconClass()" />
20017
- <span class="sr-only">{{ clearLabel() }}</span>
20018
- </button>
20019
- <ng-content />
20020
- </input-group>
20021
- `,
20344
+ type: SearchInputComponent,
20345
+ deps: null,
20346
+ target: i0.ɵɵFactoryTarget.Component
20347
+ });
20348
+ static ɵcmp = i0.ɵɵngDeclareComponent({
20349
+ minVersion: "14.0.0",
20350
+ version: "22.2.1",
20351
+ type: SearchInputComponent,
20352
+ isStandalone: true,
20353
+ selector: "SearchInput:not([suggestions]), search-input:not([suggestions]), searchinput:not([suggestions])",
20354
+ usesInheritance: true,
20355
+ ngImport: i0,
20356
+ template: "\n <input-group [size]=\"size()\" [textSize]=\"textSize()\" [class]=\"cn('group/search', class())\">\n <span input-icon-left>\n <SearchIcon [class]=\"searchIconClass()\" />\n </span>\n <input \n input-control\n #search\n type=\"search\"\n spellcheck=\"false\"\n autocapitalize=\"off\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-keyshortcuts]=\"hotkey()\"\n [value]=\"value()\"\n (input)=\"value.set($any($event.target).value)\" />\n <button\n input-icon-right\n variant=\"tertiary\"\n scheme=\"neutral\"\n [iconOnly]=\"true\"\n [size]=\"buttonSize()\"\n type=\"button\"\n [class]=\"value()\n ? 'rotate-90 opacity-100 transition-[rotate,opacity] duration-500'\n : 'rotate-0 opacity-0 pointer-events-none transition-[rotate,opacity] duration-500'\"\n [tabindex]=\"value() ? 0 : -1\"\n [attr.aria-label]=\"clearLabel()\"\n [tooltip]=\"clearLabel()\"\n (keydown.enter)=\"clearSearch($event)\"\n (click)=\"clearSearch($event)\">\n <XMarkIcon [class]=\"iconClass()\" />\n <span class=\"sr-only\">{{ clearLabel() }}</span>\n </button>\n <ng-content />\n </input-group>\n ",
20022
20357
  isInline: true,
20023
20358
  dependencies: [
20024
20359
  {
@@ -20039,23 +20374,6 @@ var SearchInputComponent = class SearchInputComponent {
20039
20374
  "size"
20040
20375
  ]
20041
20376
  },
20042
- {
20043
- kind: "directive",
20044
- type: Combobox,
20045
- selector: "[ngCombobox]",
20046
- inputs: [
20047
- "disabled",
20048
- "readonly",
20049
- "softDisabled",
20050
- "alwaysExpanded",
20051
- "tabindex",
20052
- "expanded",
20053
- "value",
20054
- "inlineSuggestion"
20055
- ],
20056
- outputs: ["expandedChange", "valueChange"],
20057
- exportAs: ["ngCombobox"]
20058
- },
20059
20377
  {
20060
20378
  kind: "directive",
20061
20379
  type: InputComponent,
@@ -20131,373 +20449,43 @@ i0.ɵɵngDeclareClassMetadata({
20131
20449
  decorators: [{
20132
20450
  type: Component,
20133
20451
  args: [{
20134
- selector: "SearchInput, search-input, searchinput",
20452
+ selector: "SearchInput:not([suggestions]), search-input:not([suggestions]), searchinput:not([suggestions])",
20135
20453
  standalone: true,
20136
- imports: [
20137
- SearchIcon,
20138
- ButtonComponent,
20139
- Combobox,
20140
- InputComponent,
20141
- InputControlDirective,
20142
- InputIconLeftDirective,
20143
- InputIconRightDirective,
20144
- XMarkIcon,
20145
- TooltipDirective
20146
- ],
20147
- template: `
20148
- <input-group [size]="size()" [textSize]="textSize()" [class]="cn('group/search', class())">
20149
- <span input-icon-left>
20150
- <SearchIcon [class]="searchIconClass()" />
20151
- </span>
20152
- <input
20153
- input-control
20154
- #search
20155
- ngCombobox
20156
- type="search"
20157
- spellcheck="false"
20158
- autocapitalize="off"
20159
- autocomplete="off"
20160
- autocorrect="off"
20161
- [disabled]="disabled()"
20162
- [placeholder]="placeholder()"
20163
- [(value)]="value"
20164
- [attr.aria-label]="ariaLabel()"
20165
- [attr.aria-keyshortcuts]="hotkey()" />
20166
- <button
20167
- input-icon-right
20168
- variant="tertiary"
20169
- scheme="neutral"
20170
- [iconOnly]="true"
20171
- [size]="buttonSize()"
20172
- type="button"
20173
- [class]="value()
20174
- ? 'rotate-90 opacity-100 transition-[rotate,opacity] duration-500'
20175
- : 'rotate-0 opacity-0 pointer-events-none transition-[rotate,opacity] duration-500'"
20176
- [tabindex]="value() ? 0 : -1"
20177
- [attr.aria-label]="clearLabel()"
20178
- [tooltip]="clearLabel()"
20179
- (keydown.enter)="clearSearch($event)"
20180
- (click)="clearSearch($event)">
20181
- <XMarkIcon [class]="iconClass()" />
20182
- <span class="sr-only">{{ clearLabel() }}</span>
20183
- </button>
20184
- <ng-content />
20185
- </input-group>
20186
- `,
20187
- host: { "[class]": "cn(disabled() && 'pointer-events-none opacity-50')" }
20188
- }]
20189
- }],
20190
- ctorParameters: () => [],
20191
- propDecorators: {
20192
- searchInput: [{
20193
- type: i0.ViewChild,
20194
- args: ["search", { isSignal: true }]
20195
- }],
20196
- combobox: [{
20197
- type: i0.ViewChild,
20198
- args: [i0.forwardRef(() => Combobox), { isSignal: true }]
20199
- }],
20200
- value: [{
20201
- type: i0.Input,
20202
- args: [{
20203
- isSignal: true,
20204
- alias: "value",
20205
- required: false
20206
- }]
20207
- }, {
20208
- type: i0.Output,
20209
- args: ["valueChange"]
20210
- }],
20211
- placeholder: [{
20212
- type: i0.Input,
20213
- args: [{
20214
- isSignal: true,
20215
- alias: "placeholder",
20216
- required: false
20217
- }]
20218
- }],
20219
- disabled: [{
20220
- type: i0.Input,
20221
- args: [{
20222
- isSignal: true,
20223
- alias: "disabled",
20224
- required: false
20225
- }]
20226
- }],
20227
- ariaLabel: [{
20228
- type: i0.Input,
20229
- args: [{
20230
- isSignal: true,
20231
- alias: "aria-label",
20232
- required: false
20233
- }]
20234
- }],
20235
- hotkey: [{
20236
- type: i0.Input,
20237
- args: [{
20238
- isSignal: true,
20239
- alias: "hotkey",
20240
- required: false
20241
- }]
20242
- }],
20243
- clearLabel: [{
20244
- type: i0.Input,
20245
- args: [{
20246
- isSignal: true,
20247
- alias: "clearLabel",
20248
- required: false
20249
- }]
20250
- }],
20251
- class: [{
20252
- type: i0.Input,
20253
- args: [{
20254
- isSignal: true,
20255
- alias: "class",
20256
- required: false
20257
- }]
20258
- }],
20259
- size: [{
20260
- type: i0.Input,
20261
- args: [{
20262
- isSignal: true,
20263
- alias: "size",
20264
- required: false
20265
- }]
20266
- }],
20267
- textSize: [{
20268
- type: i0.Input,
20269
- args: [{
20270
- isSignal: true,
20271
- alias: "textSize",
20272
- required: false
20273
- }]
20454
+ imports: SEARCH_INPUT_IMPORTS,
20455
+ template: `${BEFORE_CONTROL$1}
20456
+ <input ${CONTROL_ATTRIBUTES$1}
20457
+ [value]="value()"
20458
+ (input)="value.set($any($event.target).value)" />${AFTER_CONTROL$1}
20459
+ `
20274
20460
  }]
20275
- }
20276
- });
20277
- const SB_ICON_CLASS = "sb-icon";
20278
- const SB_INPUT_CLASS = "sb-input";
20279
- const searchBarVariants = cva([
20280
- "box-border inline-flex cursor-text items-center bg-(--bg-neutral-white)",
20281
- "rounded-(--radius-rounded) border border-solid border-(--stroke-primary-muted)",
20282
- "transition-[border-color,background] duration-120 ease-[ease] motion-reduce:transition-none",
20283
- "hover:not-has-focus:not-has-disabled:bg-(--bg-primary-lighter)",
20284
- "hover:not-has-focus:not-has-disabled:border-(--stroke-primary-hovered)",
20285
- "has-focus:not-has-disabled:border-(--stroke-primary-pressed)",
20286
- "has-[:focus-visible]:outline-2 has-[:focus-visible]:outline-offset-2 has-[:focus-visible]:outline-(--stroke-focus) has-[:focus-visible]:outline-solid",
20287
- "has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:border-(--stroke-neutral-disabled) has-disabled:bg-(--bg-neutral-base)",
20288
- "[&_.sb-icon]:inline-flex [&_.sb-icon]:shrink-0 [&_.sb-icon]:items-center [&_.sb-icon]:justify-center [&_.sb-icon]:leading-none [&_.sb-icon]:text-(--font-primary-muted)",
20289
- "has-disabled:[&_.sb-icon]:text-(--font-neutral-muted)",
20290
- "[&_.sb-input]:min-w-0 [&_.sb-input]:flex-1 [&_.sb-input]:border-0 [&_.sb-input]:bg-transparent [&_.sb-input]:outline-none",
20291
- "[&_.sb-input]:p-0 [&_.sb-input]:font-[family-name:var(--family-base),sans-serif] [&_.sb-input]:leading-[1.4] [&_.sb-input]:text-(--font-neutral-black)",
20292
- "[&_.sb-input]:placeholder:text-(--font-primary-muted)",
20293
- "has-disabled:[&_.sb-input]:text-(--font-neutral-muted)"
20294
- ], {
20295
- variants: { size: {
20296
- small: "h-6 gap-(--spacing-xs) px-(--spacing-xs) [&_.sb-icon]:text-(length:--icon-xs) [&_.sb-input]:text-(length:--size-xs)",
20297
- medium: "h-9 gap-(--spacing-xs) px-(--spacing-md) [&_.sb-icon]:text-(length:--icon-sm) [&_.sb-input]:text-(length:--size-base)",
20298
- large: "h-(--row-height-lg) gap-(--spacing-2xs) px-(--spacing-md) [&_.sb-icon]:text-base [&_.sb-input]:text-(length:--size-lg)"
20299
- } },
20300
- defaultVariants: { size: "large" }
20461
+ }]
20301
20462
  });
20302
- var SearchBarComponent = class SearchBarComponent {
20303
- cn = cn;
20304
- searchBarVariants = searchBarVariants;
20305
- searchNativeReset = INPUT_SEARCH_NATIVE_RESET;
20306
- searchInput = viewChild.required("search", ...ngDevMode ? [{ debugName: "searchInput" }] : /* istanbul ignore next */ []);
20463
+ var SearchInputSuggestionsComponent = class SearchInputSuggestionsComponent extends SearchInputBase {
20307
20464
  combobox = viewChild.required(Combobox, ...ngDevMode ? [{ debugName: "combobox" }] : /* istanbul ignore next */ []);
20308
- value = model("", ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
20309
- search = output();
20310
- placeholder = input("Search...", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
20311
- ariaLabel = input(...ngDevMode ? [void 0, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
20312
- clearLabel = input("Clear search", ...ngDevMode ? [{ debugName: "clearLabel" }] : /* istanbul ignore next */ []);
20313
- sendLabel = input("Send", ...ngDevMode ? [{ debugName: "sendLabel" }] : /* istanbul ignore next */ []);
20314
- disabled = input(false, {
20315
- ...ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {},
20316
- transform: booleanAttribute
20317
- });
20318
- hotkey = input(...ngDevMode ? [void 0, { debugName: "hotkey" }] : /* istanbul ignore next */ []);
20319
- size = input("large", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
20320
- class = input(...ngDevMode ? [void 0, { debugName: "class" }] : /* istanbul ignore next */ []);
20321
- buttonSize = computed(() => this.size() === "small" ? "xs" : "sm", ...ngDevMode ? [{ debugName: "buttonSize" }] : /* istanbul ignore next */ []);
20322
- iconClass = computed(() => cn("shrink-0", this.size() === "small" ? "size-3" : ""), ...ngDevMode ? [{ debugName: "iconClass" }] : /* istanbul ignore next */ []);
20323
- searchIconClass = computed(() => cn("rotate-0 transition-[rotate] duration-500 group-focus-within/search:rotate-90", this.iconClass()), ...ngDevMode ? [{ debugName: "searchIconClass" }] : /* istanbul ignore next */ []);
20324
- constructor() {
20325
- afterRenderEffect(() => {
20326
- const combobox = this.combobox();
20327
- if (!combobox.expanded()) combobox._pattern.keyboardEventRelay.set(void 0);
20328
- });
20329
- }
20330
- clearSearch(e) {
20331
- e.stopImmediatePropagation();
20332
- this.value.set("");
20333
- }
20334
- emitSearch(e) {
20335
- e.stopImmediatePropagation();
20336
- this.search.emit(this.value());
20337
- }
20338
20465
  static ɵfac = i0.ɵɵngDeclareFactory({
20339
20466
  minVersion: "12.0.0",
20340
20467
  version: "22.2.1",
20341
20468
  ngImport: i0,
20342
- type: SearchBarComponent,
20343
- deps: [],
20469
+ type: SearchInputSuggestionsComponent,
20470
+ deps: null,
20344
20471
  target: i0.ɵɵFactoryTarget.Component
20345
20472
  });
20346
20473
  static ɵcmp = i0.ɵɵngDeclareComponent({
20347
20474
  minVersion: "17.2.0",
20348
20475
  version: "22.2.1",
20349
- type: SearchBarComponent,
20476
+ type: SearchInputSuggestionsComponent,
20350
20477
  isStandalone: true,
20351
- selector: "SearchBar, search-bar, searchbar",
20352
- inputs: {
20353
- value: {
20354
- classPropertyName: "value",
20355
- publicName: "value",
20356
- isSignal: true,
20357
- isRequired: false,
20358
- transformFunction: null
20359
- },
20360
- placeholder: {
20361
- classPropertyName: "placeholder",
20362
- publicName: "placeholder",
20363
- isSignal: true,
20364
- isRequired: false,
20365
- transformFunction: null
20366
- },
20367
- ariaLabel: {
20368
- classPropertyName: "ariaLabel",
20369
- publicName: "ariaLabel",
20370
- isSignal: true,
20371
- isRequired: false,
20372
- transformFunction: null
20373
- },
20374
- clearLabel: {
20375
- classPropertyName: "clearLabel",
20376
- publicName: "clearLabel",
20377
- isSignal: true,
20378
- isRequired: false,
20379
- transformFunction: null
20380
- },
20381
- sendLabel: {
20382
- classPropertyName: "sendLabel",
20383
- publicName: "sendLabel",
20384
- isSignal: true,
20385
- isRequired: false,
20386
- transformFunction: null
20387
- },
20388
- disabled: {
20389
- classPropertyName: "disabled",
20390
- publicName: "disabled",
20391
- isSignal: true,
20392
- isRequired: false,
20393
- transformFunction: null
20394
- },
20395
- hotkey: {
20396
- classPropertyName: "hotkey",
20397
- publicName: "hotkey",
20398
- isSignal: true,
20399
- isRequired: false,
20400
- transformFunction: null
20401
- },
20402
- size: {
20403
- classPropertyName: "size",
20404
- publicName: "size",
20405
- isSignal: true,
20406
- isRequired: false,
20407
- transformFunction: null
20408
- },
20409
- class: {
20410
- classPropertyName: "class",
20411
- publicName: "class",
20412
- isSignal: true,
20413
- isRequired: false,
20414
- transformFunction: null
20415
- }
20416
- },
20417
- outputs: {
20418
- value: "valueChange",
20419
- search: "search"
20420
- },
20421
- host: { properties: { "class": "cn('group/search', searchBarVariants({ size: size(), class: class() }))" } },
20478
+ selector: "SearchInput[suggestions], search-input[suggestions], searchinput[suggestions]",
20422
20479
  viewQueries: [{
20423
- propertyName: "searchInput",
20424
- first: true,
20425
- predicate: ["search"],
20426
- descendants: true,
20427
- isSignal: true
20428
- }, {
20429
20480
  propertyName: "combobox",
20430
20481
  first: true,
20431
20482
  predicate: Combobox,
20432
20483
  descendants: true,
20433
20484
  isSignal: true
20434
20485
  }],
20486
+ usesInheritance: true,
20435
20487
  ngImport: i0,
20436
- template: `
20437
- <span class="sb-icon">
20438
- <SearchIcon [class]="searchIconClass()" />
20439
- </span>
20440
- <input
20441
- class="sb-input"
20442
- [class]="searchNativeReset"
20443
- #search
20444
- ngCombobox
20445
- type="search"
20446
- spellcheck="false"
20447
- autocapitalize="off"
20448
- autocomplete="off"
20449
- autocorrect="off"
20450
- [disabled]="disabled()"
20451
- [placeholder]="placeholder()"
20452
- [(value)]="value"
20453
- [attr.aria-label]="ariaLabel()"
20454
- [attr.aria-keyshortcuts]="hotkey()" />
20455
- <button
20456
- variant="tertiary"
20457
- scheme="neutral"
20458
- [iconOnly]="true"
20459
- [size]="buttonSize()"
20460
- type="button"
20461
- [disabled]="disabled()"
20462
- [class]="value()
20463
- ? 'rotate-90 opacity-100 transition-[rotate,opacity] duration-500'
20464
- : 'rotate-0 opacity-0 pointer-events-none transition-[rotate,opacity] duration-500'"
20465
- [tabindex]="value() && !disabled() ? 0 : -1"
20466
- [attr.aria-label]="clearLabel()"
20467
- [tooltip]="clearLabel()"
20468
- (keydown.enter)="clearSearch($event)"
20469
- (click)="clearSearch($event)">
20470
- <XMarkIcon [class]="iconClass()" aria-hidden="true" />
20471
- <span class="sr-only">{{ clearLabel() }}</span>
20472
- </button>
20473
- <!-- Actions applicatives (favori, filtre rapide…) : le slot par défaut est ici, entre « clear »
20474
- et « send », parce que c'est la place naturelle d'une action liée à la requête. Ce qui doit
20475
- rester APRÈS le bouton d'envoi porte slot="trailing" (voir plus bas). -->
20476
- <ng-content />
20477
- <button
20478
- variant="tertiary"
20479
- scheme="neutral"
20480
- [iconOnly]="true"
20481
- [size]="buttonSize()"
20482
- type="button"
20483
- [disabled]="disabled()"
20484
- [class]="value()
20485
- ? 'opacity-100 transition-opacity duration-300'
20486
- : 'opacity-0 pointer-events-none transition-opacity duration-300'"
20487
- [tabindex]="value() && !disabled() ? 0 : -1"
20488
- [attr.aria-label]="sendLabel()"
20489
- [tooltip]="sendLabel()"
20490
- (keydown.enter)="emitSearch($event)"
20491
- (click)="emitSearch($event)">
20492
- <SendHorizontalIcon [class]="iconClass()" aria-hidden="true" />
20493
- <span class="sr-only">{{ sendLabel() }}</span>
20494
- </button>
20495
- <!-- Zone de fin de pilule, après le bouton d'envoi (CTA du type « Ask AI »…).
20496
- ⚠️ Le contenu d'un bloc @if ne peut pas atteindre ce slot : la projection ne teste que les
20497
- enfants directs de l'hôte, et le nœud d'un @if ne porte aucun attribut — il retombe donc
20498
- dans le slot par défaut. Envelopper alors le bloc dans un <ng-container slot="trailing">. -->
20499
- <ng-content select="[slot='trailing']" />
20500
- `,
20488
+ template: "\n <input-group [size]=\"size()\" [textSize]=\"textSize()\" [class]=\"cn('group/search', class())\">\n <span input-icon-left>\n <SearchIcon [class]=\"searchIconClass()\" />\n </span>\n <input\n ngCombobox \n input-control\n #search\n type=\"search\"\n spellcheck=\"false\"\n autocapitalize=\"off\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-keyshortcuts]=\"hotkey()\"\n [(value)]=\"value\" />\n <button\n input-icon-right\n variant=\"tertiary\"\n scheme=\"neutral\"\n [iconOnly]=\"true\"\n [size]=\"buttonSize()\"\n type=\"button\"\n [class]=\"value()\n ? 'rotate-90 opacity-100 transition-[rotate,opacity] duration-500'\n : 'rotate-0 opacity-0 pointer-events-none transition-[rotate,opacity] duration-500'\"\n [tabindex]=\"value() ? 0 : -1\"\n [attr.aria-label]=\"clearLabel()\"\n [tooltip]=\"clearLabel()\"\n (keydown.enter)=\"clearSearch($event)\"\n (click)=\"clearSearch($event)\">\n <XMarkIcon [class]=\"iconClass()\" />\n <span class=\"sr-only\">{{ clearLabel() }}</span>\n </button>\n <ng-content />\n </input-group>\n ",
20501
20489
  isInline: true,
20502
20490
  dependencies: [
20503
20491
  {
@@ -20506,29 +20494,6 @@ var SearchBarComponent = class SearchBarComponent {
20506
20494
  selector: "search, search-icon, Search, SearchIcon",
20507
20495
  inputs: ["class"]
20508
20496
  },
20509
- {
20510
- kind: "component",
20511
- type: SendHorizontalIcon,
20512
- selector: "send-horizontal, send-horizontal-icon, SendHorizontal, SendHorizontalIcon",
20513
- inputs: ["class"]
20514
- },
20515
- {
20516
- kind: "directive",
20517
- type: Combobox,
20518
- selector: "[ngCombobox]",
20519
- inputs: [
20520
- "disabled",
20521
- "readonly",
20522
- "softDisabled",
20523
- "alwaysExpanded",
20524
- "tabindex",
20525
- "expanded",
20526
- "value",
20527
- "inlineSuggestion"
20528
- ],
20529
- outputs: ["expandedChange", "valueChange"],
20530
- exportAs: ["ngCombobox"]
20531
- },
20532
20497
  {
20533
20498
  kind: "directive",
20534
20499
  type: ButtonComponent,
@@ -20541,6 +20506,38 @@ var SearchBarComponent = class SearchBarComponent {
20541
20506
  "size"
20542
20507
  ]
20543
20508
  },
20509
+ {
20510
+ kind: "directive",
20511
+ type: InputComponent,
20512
+ selector: "input-group, inputgroup, InputGroup",
20513
+ inputs: [
20514
+ "class",
20515
+ "size",
20516
+ "scheme",
20517
+ "filled",
20518
+ "numbers",
20519
+ "autoHeight",
20520
+ "textSize"
20521
+ ]
20522
+ },
20523
+ {
20524
+ kind: "directive",
20525
+ type: InputControlDirective,
20526
+ selector: "input[input-control], input[inputControl]",
20527
+ inputs: ["class"]
20528
+ },
20529
+ {
20530
+ kind: "directive",
20531
+ type: InputIconLeftDirective,
20532
+ selector: "[input-icon-left], [inputIconLeft]",
20533
+ inputs: ["class"]
20534
+ },
20535
+ {
20536
+ kind: "directive",
20537
+ type: InputIconRightDirective,
20538
+ selector: "[input-icon-right], [inputIconRight]",
20539
+ inputs: ["class"]
20540
+ },
20544
20541
  {
20545
20542
  kind: "component",
20546
20543
  type: XMarkIcon,
@@ -20572,6 +20569,23 @@ var SearchBarComponent = class SearchBarComponent {
20572
20569
  "tooltip-offset"
20573
20570
  ],
20574
20571
  exportAs: ["tooltip"]
20572
+ },
20573
+ {
20574
+ kind: "directive",
20575
+ type: Combobox,
20576
+ selector: "[ngCombobox]",
20577
+ inputs: [
20578
+ "disabled",
20579
+ "readonly",
20580
+ "softDisabled",
20581
+ "alwaysExpanded",
20582
+ "tabindex",
20583
+ "expanded",
20584
+ "value",
20585
+ "inlineSuggestion"
20586
+ ],
20587
+ outputs: ["expandedChange", "valueChange"],
20588
+ exportAs: ["ngCombobox"]
20575
20589
  }
20576
20590
  ]
20577
20591
  });
@@ -20580,29 +20594,65 @@ i0.ɵɵngDeclareClassMetadata({
20580
20594
  minVersion: "12.0.0",
20581
20595
  version: "22.2.1",
20582
20596
  ngImport: i0,
20583
- type: SearchBarComponent,
20597
+ type: SearchInputSuggestionsComponent,
20584
20598
  decorators: [{
20585
20599
  type: Component,
20586
20600
  args: [{
20587
- selector: "SearchBar, search-bar, searchbar",
20601
+ selector: "SearchInput[suggestions], search-input[suggestions], searchinput[suggestions]",
20588
20602
  standalone: true,
20589
- imports: [
20590
- SearchIcon,
20591
- SendHorizontalIcon,
20592
- Combobox,
20593
- ButtonComponent,
20594
- XMarkIcon,
20595
- TooltipDirective
20596
- ],
20597
- template: `
20603
+ imports: [...SEARCH_INPUT_IMPORTS, Combobox],
20604
+ template: `${BEFORE_CONTROL$1}
20605
+ <input
20606
+ ngCombobox ${CONTROL_ATTRIBUTES$1}
20607
+ [(value)]="value" />${AFTER_CONTROL$1}
20608
+ `
20609
+ }]
20610
+ }],
20611
+ propDecorators: { combobox: [{
20612
+ type: i0.ViewChild,
20613
+ args: [i0.forwardRef(() => Combobox), { isSignal: true }]
20614
+ }] }
20615
+ });
20616
+ const SB_ICON_CLASS = "sb-icon";
20617
+ const SB_INPUT_CLASS = "sb-input";
20618
+ const searchBarVariants = cva([
20619
+ "box-border inline-flex cursor-text items-center bg-(--bg-neutral-white)",
20620
+ "rounded-(--radius-rounded) border border-solid border-(--stroke-primary-muted)",
20621
+ "transition-[border-color,background] duration-120 ease-[ease] motion-reduce:transition-none",
20622
+ "hover:not-has-focus:not-has-disabled:bg-(--bg-primary-lighter)",
20623
+ "hover:not-has-focus:not-has-disabled:border-(--stroke-primary-hovered)",
20624
+ "has-focus:not-has-disabled:border-(--stroke-primary-pressed)",
20625
+ "has-[:focus-visible]:outline-2 has-[:focus-visible]:outline-offset-2 has-[:focus-visible]:outline-(--stroke-focus) has-[:focus-visible]:outline-solid",
20626
+ "has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:border-(--stroke-neutral-disabled) has-disabled:bg-(--bg-neutral-base)",
20627
+ "[&_.sb-icon]:inline-flex [&_.sb-icon]:shrink-0 [&_.sb-icon]:items-center [&_.sb-icon]:justify-center [&_.sb-icon]:leading-none [&_.sb-icon]:text-(--font-primary-muted)",
20628
+ "has-disabled:[&_.sb-icon]:text-(--font-neutral-muted)",
20629
+ "[&_.sb-input]:min-w-0 [&_.sb-input]:flex-1 [&_.sb-input]:border-0 [&_.sb-input]:bg-transparent [&_.sb-input]:outline-none",
20630
+ "[&_.sb-input]:p-0 [&_.sb-input]:font-[family-name:var(--family-base),sans-serif] [&_.sb-input]:leading-[1.4] [&_.sb-input]:text-(--font-neutral-black)",
20631
+ "[&_.sb-input]:placeholder:text-(--font-primary-muted)",
20632
+ "has-disabled:[&_.sb-input]:text-(--font-neutral-muted)"
20633
+ ], {
20634
+ variants: { size: {
20635
+ small: "h-6 gap-(--spacing-xs) px-(--spacing-xs) [&_.sb-icon]:text-(length:--icon-xs) [&_.sb-input]:text-(length:--size-xs)",
20636
+ medium: "h-9 gap-(--spacing-xs) px-(--spacing-md) [&_.sb-icon]:text-(length:--icon-sm) [&_.sb-input]:text-(length:--size-base)",
20637
+ large: "h-(--row-height-lg) gap-(--spacing-2xs) px-(--spacing-md) [&_.sb-icon]:text-base [&_.sb-input]:text-(length:--size-lg)"
20638
+ } },
20639
+ defaultVariants: { size: "large" }
20640
+ });
20641
+ const SEARCH_BAR_IMPORTS = [
20642
+ SearchIcon,
20643
+ SendHorizontalIcon,
20644
+ ButtonComponent,
20645
+ XMarkIcon,
20646
+ TooltipDirective
20647
+ ];
20648
+ const BEFORE_CONTROL = `
20598
20649
  <span class="sb-icon">
20599
20650
  <SearchIcon [class]="searchIconClass()" />
20600
- </span>
20601
- <input
20651
+ </span>`;
20652
+ const CONTROL_ATTRIBUTES = `
20602
20653
  class="sb-input"
20603
20654
  [class]="searchNativeReset"
20604
20655
  #search
20605
- ngCombobox
20606
20656
  type="search"
20607
20657
  spellcheck="false"
20608
20658
  autocapitalize="off"
@@ -20610,9 +20660,9 @@ i0.ɵɵngDeclareClassMetadata({
20610
20660
  autocorrect="off"
20611
20661
  [disabled]="disabled()"
20612
20662
  [placeholder]="placeholder()"
20613
- [(value)]="value"
20614
20663
  [attr.aria-label]="ariaLabel()"
20615
- [attr.aria-keyshortcuts]="hotkey()" />
20664
+ [attr.aria-keyshortcuts]="hotkey()"`;
20665
+ const AFTER_CONTROL = `
20616
20666
  <button
20617
20667
  variant="tertiary"
20618
20668
  scheme="neutral"
@@ -20658,20 +20708,146 @@ i0.ɵɵngDeclareClassMetadata({
20658
20708
  enfants directs de l'hôte, et le nœud d'un @if ne porte aucun attribut — il retombe donc
20659
20709
  dans le slot par défaut. Envelopper alors le bloc dans un <ng-container slot="trailing">. -->
20660
20710
  <ng-content select="[slot='trailing']" />
20661
- `,
20662
- host: { "[class]": "cn('group/search', searchBarVariants({ size: size(), class: class() }))" }
20663
- }]
20664
- }],
20665
- ctorParameters: () => [],
20711
+ `;
20712
+ var SearchBarBase = class SearchBarBase {
20713
+ cn = cn;
20714
+ searchBarVariants = searchBarVariants;
20715
+ searchNativeReset = INPUT_SEARCH_NATIVE_RESET;
20716
+ searchInput = viewChild.required("search", ...ngDevMode ? [{ debugName: "searchInput" }] : /* istanbul ignore next */ []);
20717
+ value = model("", ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
20718
+ search = output();
20719
+ placeholder = input("Search...", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
20720
+ ariaLabel = input(void 0, {
20721
+ ...ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {},
20722
+ alias: "aria-label"
20723
+ });
20724
+ clearLabel = input("Clear search", ...ngDevMode ? [{ debugName: "clearLabel" }] : /* istanbul ignore next */ []);
20725
+ sendLabel = input("Send", ...ngDevMode ? [{ debugName: "sendLabel" }] : /* istanbul ignore next */ []);
20726
+ disabled = input(false, {
20727
+ ...ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {},
20728
+ transform: booleanAttribute
20729
+ });
20730
+ hotkey = input(...ngDevMode ? [void 0, { debugName: "hotkey" }] : /* istanbul ignore next */ []);
20731
+ size = input("large", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
20732
+ class = input(...ngDevMode ? [void 0, { debugName: "class" }] : /* istanbul ignore next */ []);
20733
+ buttonSize = computed(() => this.size() === "small" ? "xs" : "sm", ...ngDevMode ? [{ debugName: "buttonSize" }] : /* istanbul ignore next */ []);
20734
+ iconClass = computed(() => cn("shrink-0", this.size() === "small" ? "size-3" : ""), ...ngDevMode ? [{ debugName: "iconClass" }] : /* istanbul ignore next */ []);
20735
+ searchIconClass = computed(() => cn("rotate-0 transition-[rotate] duration-500 group-focus-within/search:rotate-90", this.iconClass()), ...ngDevMode ? [{ debugName: "searchIconClass" }] : /* istanbul ignore next */ []);
20736
+ clearSearch(e) {
20737
+ e.stopImmediatePropagation();
20738
+ this.value.set("");
20739
+ }
20740
+ emitSearch(e) {
20741
+ e.stopImmediatePropagation();
20742
+ this.search.emit(this.value());
20743
+ }
20744
+ static ɵfac = i0.ɵɵngDeclareFactory({
20745
+ minVersion: "12.0.0",
20746
+ version: "22.2.1",
20747
+ ngImport: i0,
20748
+ type: SearchBarBase,
20749
+ deps: [],
20750
+ target: i0.ɵɵFactoryTarget.Directive
20751
+ });
20752
+ static ɵdir = i0.ɵɵngDeclareDirective({
20753
+ minVersion: "17.2.0",
20754
+ version: "22.2.1",
20755
+ type: SearchBarBase,
20756
+ isStandalone: true,
20757
+ inputs: {
20758
+ value: {
20759
+ classPropertyName: "value",
20760
+ publicName: "value",
20761
+ isSignal: true,
20762
+ isRequired: false,
20763
+ transformFunction: null
20764
+ },
20765
+ placeholder: {
20766
+ classPropertyName: "placeholder",
20767
+ publicName: "placeholder",
20768
+ isSignal: true,
20769
+ isRequired: false,
20770
+ transformFunction: null
20771
+ },
20772
+ ariaLabel: {
20773
+ classPropertyName: "ariaLabel",
20774
+ publicName: "aria-label",
20775
+ isSignal: true,
20776
+ isRequired: false,
20777
+ transformFunction: null
20778
+ },
20779
+ clearLabel: {
20780
+ classPropertyName: "clearLabel",
20781
+ publicName: "clearLabel",
20782
+ isSignal: true,
20783
+ isRequired: false,
20784
+ transformFunction: null
20785
+ },
20786
+ sendLabel: {
20787
+ classPropertyName: "sendLabel",
20788
+ publicName: "sendLabel",
20789
+ isSignal: true,
20790
+ isRequired: false,
20791
+ transformFunction: null
20792
+ },
20793
+ disabled: {
20794
+ classPropertyName: "disabled",
20795
+ publicName: "disabled",
20796
+ isSignal: true,
20797
+ isRequired: false,
20798
+ transformFunction: null
20799
+ },
20800
+ hotkey: {
20801
+ classPropertyName: "hotkey",
20802
+ publicName: "hotkey",
20803
+ isSignal: true,
20804
+ isRequired: false,
20805
+ transformFunction: null
20806
+ },
20807
+ size: {
20808
+ classPropertyName: "size",
20809
+ publicName: "size",
20810
+ isSignal: true,
20811
+ isRequired: false,
20812
+ transformFunction: null
20813
+ },
20814
+ class: {
20815
+ classPropertyName: "class",
20816
+ publicName: "class",
20817
+ isSignal: true,
20818
+ isRequired: false,
20819
+ transformFunction: null
20820
+ }
20821
+ },
20822
+ outputs: {
20823
+ value: "valueChange",
20824
+ search: "search"
20825
+ },
20826
+ host: { properties: { "class": "cn('group/search', searchBarVariants({ size: size(), class: class() }))" } },
20827
+ viewQueries: [{
20828
+ propertyName: "searchInput",
20829
+ first: true,
20830
+ predicate: ["search"],
20831
+ descendants: true,
20832
+ isSignal: true
20833
+ }],
20834
+ ngImport: i0
20835
+ });
20836
+ };
20837
+ i0.ɵɵngDeclareClassMetadata({
20838
+ minVersion: "12.0.0",
20839
+ version: "22.2.1",
20840
+ ngImport: i0,
20841
+ type: SearchBarBase,
20842
+ decorators: [{
20843
+ type: Directive,
20844
+ args: [{ host: { "[class]": "cn('group/search', searchBarVariants({ size: size(), class: class() }))" } }]
20845
+ }],
20666
20846
  propDecorators: {
20667
20847
  searchInput: [{
20668
20848
  type: i0.ViewChild,
20669
20849
  args: ["search", { isSignal: true }]
20670
20850
  }],
20671
- combobox: [{
20672
- type: i0.ViewChild,
20673
- args: [i0.forwardRef(() => Combobox), { isSignal: true }]
20674
- }],
20675
20851
  value: [{
20676
20852
  type: i0.Input,
20677
20853
  args: [{
@@ -20699,7 +20875,7 @@ i0.ɵɵngDeclareClassMetadata({
20699
20875
  type: i0.Input,
20700
20876
  args: [{
20701
20877
  isSignal: true,
20702
- alias: "ariaLabel",
20878
+ alias: "aria-label",
20703
20879
  required: false
20704
20880
  }]
20705
20881
  }],
@@ -20753,6 +20929,229 @@ i0.ɵɵngDeclareClassMetadata({
20753
20929
  }]
20754
20930
  }
20755
20931
  });
20932
+ var SearchBarComponent = class SearchBarComponent extends SearchBarBase {
20933
+ static ɵfac = i0.ɵɵngDeclareFactory({
20934
+ minVersion: "12.0.0",
20935
+ version: "22.2.1",
20936
+ ngImport: i0,
20937
+ type: SearchBarComponent,
20938
+ deps: null,
20939
+ target: i0.ɵɵFactoryTarget.Component
20940
+ });
20941
+ static ɵcmp = i0.ɵɵngDeclareComponent({
20942
+ minVersion: "14.0.0",
20943
+ version: "22.2.1",
20944
+ type: SearchBarComponent,
20945
+ isStandalone: true,
20946
+ selector: "SearchBar:not([suggestions]), search-bar:not([suggestions]), searchbar:not([suggestions])",
20947
+ usesInheritance: true,
20948
+ ngImport: i0,
20949
+ template: "\n <span class=\"sb-icon\">\n <SearchIcon [class]=\"searchIconClass()\" />\n </span>\n <input \n class=\"sb-input\"\n [class]=\"searchNativeReset\"\n #search\n type=\"search\"\n spellcheck=\"false\"\n autocapitalize=\"off\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-keyshortcuts]=\"hotkey()\"\n [value]=\"value()\"\n (input)=\"value.set($any($event.target).value)\" />\n <button\n variant=\"tertiary\"\n scheme=\"neutral\"\n [iconOnly]=\"true\"\n [size]=\"buttonSize()\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [class]=\"value()\n ? 'rotate-90 opacity-100 transition-[rotate,opacity] duration-500'\n : 'rotate-0 opacity-0 pointer-events-none transition-[rotate,opacity] duration-500'\"\n [tabindex]=\"value() && !disabled() ? 0 : -1\"\n [attr.aria-label]=\"clearLabel()\"\n [tooltip]=\"clearLabel()\"\n (keydown.enter)=\"clearSearch($event)\"\n (click)=\"clearSearch($event)\">\n <XMarkIcon [class]=\"iconClass()\" aria-hidden=\"true\" />\n <span class=\"sr-only\">{{ clearLabel() }}</span>\n </button>\n <!-- Actions applicatives (favori, filtre rapide…) : le slot par défaut est ici, entre « clear »\n et « send », parce que c'est la place naturelle d'une action liée à la requête. Ce qui doit\n rester APRÈS le bouton d'envoi porte slot=\"trailing\" (voir plus bas). -->\n <ng-content />\n <button\n variant=\"tertiary\"\n scheme=\"neutral\"\n [iconOnly]=\"true\"\n [size]=\"buttonSize()\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [class]=\"value()\n ? 'opacity-100 transition-opacity duration-300'\n : 'opacity-0 pointer-events-none transition-opacity duration-300'\"\n [tabindex]=\"value() && !disabled() ? 0 : -1\"\n [attr.aria-label]=\"sendLabel()\"\n [tooltip]=\"sendLabel()\"\n (keydown.enter)=\"emitSearch($event)\"\n (click)=\"emitSearch($event)\">\n <SendHorizontalIcon [class]=\"iconClass()\" aria-hidden=\"true\" />\n <span class=\"sr-only\">{{ sendLabel() }}</span>\n </button>\n <!-- Zone de fin de pilule, après le bouton d'envoi (CTA du type « Ask AI »…).\n ⚠️ Le contenu d'un bloc @if ne peut pas atteindre ce slot : la projection ne teste que les\n enfants directs de l'hôte, et le nœud d'un @if ne porte aucun attribut — il retombe donc\n dans le slot par défaut. Envelopper alors le bloc dans un <ng-container slot=\"trailing\">. -->\n <ng-content select=\"[slot='trailing']\" />\n",
20950
+ isInline: true,
20951
+ dependencies: [
20952
+ {
20953
+ kind: "component",
20954
+ type: SearchIcon,
20955
+ selector: "search, search-icon, Search, SearchIcon",
20956
+ inputs: ["class"]
20957
+ },
20958
+ {
20959
+ kind: "component",
20960
+ type: SendHorizontalIcon,
20961
+ selector: "send-horizontal, send-horizontal-icon, SendHorizontal, SendHorizontalIcon",
20962
+ inputs: ["class"]
20963
+ },
20964
+ {
20965
+ kind: "directive",
20966
+ type: ButtonComponent,
20967
+ selector: "button",
20968
+ inputs: [
20969
+ "class",
20970
+ "variant",
20971
+ "scheme",
20972
+ "iconOnly",
20973
+ "size"
20974
+ ]
20975
+ },
20976
+ {
20977
+ kind: "component",
20978
+ type: XMarkIcon,
20979
+ selector: "x-mark, x-mark-icon, XMark, XMarkIcon",
20980
+ inputs: ["class"]
20981
+ },
20982
+ {
20983
+ kind: "directive",
20984
+ type: TooltipDirective,
20985
+ selector: "[tooltip]",
20986
+ inputs: [
20987
+ "tooltip",
20988
+ "tooltipPosition",
20989
+ "tooltipEvent",
20990
+ "showDelay",
20991
+ "hideDelay",
20992
+ "life",
20993
+ "tooltipOffset",
20994
+ "autoHide",
20995
+ "hideOnEscape",
20996
+ "escape",
20997
+ "tooltipDisabled",
20998
+ "tooltipArrow",
20999
+ "tooltipStyleClass",
21000
+ "tooltipOptions",
21001
+ "tooltip-position",
21002
+ "tooltip-delay",
21003
+ "tooltip-duration",
21004
+ "tooltip-offset"
21005
+ ],
21006
+ exportAs: ["tooltip"]
21007
+ }
21008
+ ]
21009
+ });
21010
+ };
21011
+ i0.ɵɵngDeclareClassMetadata({
21012
+ minVersion: "12.0.0",
21013
+ version: "22.2.1",
21014
+ ngImport: i0,
21015
+ type: SearchBarComponent,
21016
+ decorators: [{
21017
+ type: Component,
21018
+ args: [{
21019
+ selector: "SearchBar:not([suggestions]), search-bar:not([suggestions]), searchbar:not([suggestions])",
21020
+ standalone: true,
21021
+ imports: SEARCH_BAR_IMPORTS,
21022
+ template: `${BEFORE_CONTROL}
21023
+ <input ${CONTROL_ATTRIBUTES}
21024
+ [value]="value()"
21025
+ (input)="value.set($any($event.target).value)" />${AFTER_CONTROL}`
21026
+ }]
21027
+ }]
21028
+ });
21029
+ var SearchBarSuggestionsComponent = class SearchBarSuggestionsComponent extends SearchBarBase {
21030
+ combobox = viewChild.required(Combobox, ...ngDevMode ? [{ debugName: "combobox" }] : /* istanbul ignore next */ []);
21031
+ static ɵfac = i0.ɵɵngDeclareFactory({
21032
+ minVersion: "12.0.0",
21033
+ version: "22.2.1",
21034
+ ngImport: i0,
21035
+ type: SearchBarSuggestionsComponent,
21036
+ deps: null,
21037
+ target: i0.ɵɵFactoryTarget.Component
21038
+ });
21039
+ static ɵcmp = i0.ɵɵngDeclareComponent({
21040
+ minVersion: "17.2.0",
21041
+ version: "22.2.1",
21042
+ type: SearchBarSuggestionsComponent,
21043
+ isStandalone: true,
21044
+ selector: "SearchBar[suggestions], search-bar[suggestions], searchbar[suggestions]",
21045
+ viewQueries: [{
21046
+ propertyName: "combobox",
21047
+ first: true,
21048
+ predicate: Combobox,
21049
+ descendants: true,
21050
+ isSignal: true
21051
+ }],
21052
+ usesInheritance: true,
21053
+ ngImport: i0,
21054
+ template: "\n <span class=\"sb-icon\">\n <SearchIcon [class]=\"searchIconClass()\" />\n </span>\n <input\n ngCombobox \n class=\"sb-input\"\n [class]=\"searchNativeReset\"\n #search\n type=\"search\"\n spellcheck=\"false\"\n autocapitalize=\"off\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-keyshortcuts]=\"hotkey()\"\n [(value)]=\"value\" />\n <button\n variant=\"tertiary\"\n scheme=\"neutral\"\n [iconOnly]=\"true\"\n [size]=\"buttonSize()\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [class]=\"value()\n ? 'rotate-90 opacity-100 transition-[rotate,opacity] duration-500'\n : 'rotate-0 opacity-0 pointer-events-none transition-[rotate,opacity] duration-500'\"\n [tabindex]=\"value() && !disabled() ? 0 : -1\"\n [attr.aria-label]=\"clearLabel()\"\n [tooltip]=\"clearLabel()\"\n (keydown.enter)=\"clearSearch($event)\"\n (click)=\"clearSearch($event)\">\n <XMarkIcon [class]=\"iconClass()\" aria-hidden=\"true\" />\n <span class=\"sr-only\">{{ clearLabel() }}</span>\n </button>\n <!-- Actions applicatives (favori, filtre rapide…) : le slot par défaut est ici, entre « clear »\n et « send », parce que c'est la place naturelle d'une action liée à la requête. Ce qui doit\n rester APRÈS le bouton d'envoi porte slot=\"trailing\" (voir plus bas). -->\n <ng-content />\n <button\n variant=\"tertiary\"\n scheme=\"neutral\"\n [iconOnly]=\"true\"\n [size]=\"buttonSize()\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [class]=\"value()\n ? 'opacity-100 transition-opacity duration-300'\n : 'opacity-0 pointer-events-none transition-opacity duration-300'\"\n [tabindex]=\"value() && !disabled() ? 0 : -1\"\n [attr.aria-label]=\"sendLabel()\"\n [tooltip]=\"sendLabel()\"\n (keydown.enter)=\"emitSearch($event)\"\n (click)=\"emitSearch($event)\">\n <SendHorizontalIcon [class]=\"iconClass()\" aria-hidden=\"true\" />\n <span class=\"sr-only\">{{ sendLabel() }}</span>\n </button>\n <!-- Zone de fin de pilule, après le bouton d'envoi (CTA du type « Ask AI »…).\n ⚠️ Le contenu d'un bloc @if ne peut pas atteindre ce slot : la projection ne teste que les\n enfants directs de l'hôte, et le nœud d'un @if ne porte aucun attribut — il retombe donc\n dans le slot par défaut. Envelopper alors le bloc dans un <ng-container slot=\"trailing\">. -->\n <ng-content select=\"[slot='trailing']\" />\n",
21055
+ isInline: true,
21056
+ dependencies: [
21057
+ {
21058
+ kind: "component",
21059
+ type: SearchIcon,
21060
+ selector: "search, search-icon, Search, SearchIcon",
21061
+ inputs: ["class"]
21062
+ },
21063
+ {
21064
+ kind: "component",
21065
+ type: SendHorizontalIcon,
21066
+ selector: "send-horizontal, send-horizontal-icon, SendHorizontal, SendHorizontalIcon",
21067
+ inputs: ["class"]
21068
+ },
21069
+ {
21070
+ kind: "directive",
21071
+ type: ButtonComponent,
21072
+ selector: "button",
21073
+ inputs: [
21074
+ "class",
21075
+ "variant",
21076
+ "scheme",
21077
+ "iconOnly",
21078
+ "size"
21079
+ ]
21080
+ },
21081
+ {
21082
+ kind: "component",
21083
+ type: XMarkIcon,
21084
+ selector: "x-mark, x-mark-icon, XMark, XMarkIcon",
21085
+ inputs: ["class"]
21086
+ },
21087
+ {
21088
+ kind: "directive",
21089
+ type: TooltipDirective,
21090
+ selector: "[tooltip]",
21091
+ inputs: [
21092
+ "tooltip",
21093
+ "tooltipPosition",
21094
+ "tooltipEvent",
21095
+ "showDelay",
21096
+ "hideDelay",
21097
+ "life",
21098
+ "tooltipOffset",
21099
+ "autoHide",
21100
+ "hideOnEscape",
21101
+ "escape",
21102
+ "tooltipDisabled",
21103
+ "tooltipArrow",
21104
+ "tooltipStyleClass",
21105
+ "tooltipOptions",
21106
+ "tooltip-position",
21107
+ "tooltip-delay",
21108
+ "tooltip-duration",
21109
+ "tooltip-offset"
21110
+ ],
21111
+ exportAs: ["tooltip"]
21112
+ },
21113
+ {
21114
+ kind: "directive",
21115
+ type: Combobox,
21116
+ selector: "[ngCombobox]",
21117
+ inputs: [
21118
+ "disabled",
21119
+ "readonly",
21120
+ "softDisabled",
21121
+ "alwaysExpanded",
21122
+ "tabindex",
21123
+ "expanded",
21124
+ "value",
21125
+ "inlineSuggestion"
21126
+ ],
21127
+ outputs: ["expandedChange", "valueChange"],
21128
+ exportAs: ["ngCombobox"]
21129
+ }
21130
+ ]
21131
+ });
21132
+ };
21133
+ i0.ɵɵngDeclareClassMetadata({
21134
+ minVersion: "12.0.0",
21135
+ version: "22.2.1",
21136
+ ngImport: i0,
21137
+ type: SearchBarSuggestionsComponent,
21138
+ decorators: [{
21139
+ type: Component,
21140
+ args: [{
21141
+ selector: "SearchBar[suggestions], search-bar[suggestions], searchbar[suggestions]",
21142
+ standalone: true,
21143
+ imports: [...SEARCH_BAR_IMPORTS, Combobox],
21144
+ template: `${BEFORE_CONTROL}
21145
+ <input
21146
+ ngCombobox ${CONTROL_ATTRIBUTES}
21147
+ [(value)]="value" />${AFTER_CONTROL}`
21148
+ }]
21149
+ }],
21150
+ propDecorators: { combobox: [{
21151
+ type: i0.ViewChild,
21152
+ args: [i0.forwardRef(() => Combobox), { isSignal: true }]
21153
+ }] }
21154
+ });
20756
21155
  const DIALOG_REF = new InjectionToken("DIALOG_REF");
20757
21156
  const MODAL_LABEL = new InjectionToken("MODAL_LABEL");
20758
21157
  const MODAL_CLASS = "modal";
@@ -23933,6 +24332,6 @@ function normalize(sizes) {
23933
24332
  if (total <= 0) return sizes.map(() => 100 / sizes.length);
23934
24333
  return sizes.map((size) => size / total * 100);
23935
24334
  }
23936
- export { AUTOCOMPLETE_TAGS_CLASS, AUTOCOMPLETE_TRIGGER_CLASS, ArrowDownIcon, ArrowDownIconComponent, ArrowDownZaIcon, ArrowDownZaIconComponent, ArrowLeftIcon, ArrowLeftIconComponent, ArrowRightFromBracketIcon, ArrowRightFromBracketIconComponent, ArrowRightIcon, ArrowRightIconComponent, ArrowUpAzIcon, ArrowUpAzIconComponent, ArrowUpIcon, ArrowUpIconComponent, ArrowUpRightFromSquareIcon, ArrowUpRightFromSquareIconComponent, ArrowsMaximizeIcon, ArrowsMaximizeIconComponent, AutocompleteComponent, AvatarComponent, AvatarFallbackComponent, AvatarImageComponent, AwardIcon, AwardIconComponent, BadgeComponent, BarsIcon, BarsIconComponent, BellIcon, BellIconComponent, BookmarkIcon, BookmarkIconComponent, BreakpointObserverService, BuildingIcon, BuildingIconComponent, BulletComponent, ButtonComponent, CALL_REF, CalendarClockIcon, CalendarClockIconComponent, CalendarDayIcon, CalendarDayIconComponent, CallRef, ChatPlusIcon, ChatPlusIconComponent, CheckIcon, CheckIconComponent, CheckboxComponent, ChevronDownIcon, ChevronDownIconComponent, ChevronLeftIcon, ChevronLeftIconComponent, ChevronRightIcon, ChevronRightIconComponent, ChevronUpIcon, ChevronUpIconComponent, ChevronsLeftIcon, ChevronsLeftIconComponent, ChevronsRightIcon, ChevronsRightIconComponent, CircleCheckIcon, CircleCheckIconComponent, CircleXIcon, CircleXIconComponent, ClipboardIcon, ClipboardIconComponent, ClockIcon, ClockIconComponent, CogIcon, CogIconComponent, CommentIcon, CommentIconComponent, CommentsIcon, CommentsIconComponent, DIALOG_REF, DebugIcon, DebugIconComponent, DesktopIcon, DesktopIconComponent, DialogBodyComponent, DialogComponent, DialogContentComponent, DialogDescriptionComponent, DialogFooterComponent, DialogHeaderComponent, DialogService, DialogTitleComponent, DownloadIcon, DownloadIconComponent, PopoverDirective as DropdownDirective, PopoverDirective, EditIcon, EditIconComponent, EllipsisIcon, EllipsisIconComponent, EllipsisVerticalIcon, EllipsisVerticalIconComponent, EnvelopeIcon, EnvelopeIconComponent, ExternalLinkIcon, ExternalLinkIconComponent, EyeIcon, EyeIconComponent, EyeSlashIcon, EyeSlashIconComponent, FileHTMLIcon, FileHTMLIconComponent, FileIcon, FileIconComponent, FileMagnifyingGlassIcon, FileMagnifyingGlassIconComponent, FileOutputIcon, FileOutputIconComponent, FileSearchIcon, FileSearchIconComponent, FileSpreadsheetIcon, FileSpreadsheetIconComponent, FileTextIcon, FileTextIconComponent, FilesIcon, FilesIconComponent, FilterIcon, FilterIconComponent, FilterXIcon, FilterXIconComponent, FlagEnglishIcon, FlagEnglishIconComponent, FlagFrenchIcon, FlagFrenchIconComponent, FlagGermanIcon, FlagGermanIconComponent, FlashlightIcon, FlashlightIconComponent, FolderIcon, FolderIconComponent, FolderOpenIcon, FolderOpenIconComponent, FrownIcon, FrownIconComponent, GearIcon, GearIconComponent, GitForkIcon, GitForkIconComponent, GlobeIcon, GlobeIconComponent, GridIcon, GridIconComponent, HighlighterIcon, HighlighterIconComponent, HistoryIcon, HistoryIconComponent, HomeIcon, HomeIconComponent, HouseIcon, HouseIconComponent, ImageIcon, ImageIconComponent, InboxIcon, InboxIconComponent, InfoCircleIcon, InfoCircleIconComponent, InputComponent, InputControlDirective, InputCounterComponent, InputIconLeftDirective, InputIconRightDirective, KbdComponent, KbdGroupComponent, KeyIcon, KeyIconComponent, KeyboardIcon, KeyboardIconComponent, LINK_LABEL_CLASS, LIST_ITEM_AVATAR_CLASS, LIST_ITEM_CHEVRON_RIGHT_CLASS, LIST_ITEM_EXPANDER_BUTTON_CLASS, LIST_ITEM_EXPANDER_CLASS, LIST_ITEM_ICON_CLASS, LIST_ITEM_ICON_RIGHT_CLASS, LIST_ITEM_LEFT_CLASS, LIST_ITEM_SUBTEXT_CLASS, LIST_ITEM_TEXT_BLOCK_CLASS, LIST_ITEM_TEXT_CLASS, LIST_REF, LanguageIcon, LanguageIconComponent, LightbulbIcon, LightbulbIconComponent, LightbulbSlashIcon, LightbulbSlashIconComponent, LinkComponent, LinkIcon, LinkIconComponent, LinkIconLeftDirective, LinkIconRightDirective, ListComponent, ListFilterIcon, ListFilterIconComponent, ListIcon, ListIconComponent, ListItemActionComponent, ListItemAvatarDirective, ListItemChevronComponent, ListItemComponent, ListItemExpanderComponent, ListItemIconDirective, ListItemLeftDirective, ListItemTextComponent, ListboxActivateOnHover, LoadingCircleIcon, LoadingCircleIconComponent, MODAL_BODY_CLASS, MODAL_BODY_TEXT_CLASS, MODAL_CLASS, MODAL_CLOSE_CLASS, MODAL_FOOTER_CLASS, MODAL_HEADER_CLASS, MODAL_HEADER_LEFT_CLASS, MODAL_LABEL, MODAL_TITLE_CLASS, MODAL_TITLE_WRAP_CLASS, MagnifyingGlassIcon, MagnifyingGlassIconComponent, MagnifyingGlassMinusIcon, MagnifyingGlassMinusIconComponent, MagnifyingGlassPlusIcon, MagnifyingGlassPlusIconComponent, MapPinIcon, MapPinIconComponent, MenuComponent, MenuContentComponent, MenuItemComponent, MenuTriggerDirective, MinusIcon, MinusIconComponent, MoonIcon, MoonIconComponent, NewChatIcon, NewChatIconComponent, PaletteIcon, PaletteIconComponent, PanelLeftIcon, PanelLeftIconComponent, PanelRightIcon, PanelRightIconComponent, PaperclipIcon, PaperclipIconComponent, PenToSquareIcon, PenToSquareIconComponent, PlusIcon, PlusIconComponent, PresentationIcon, PresentationIconComponent, QuestionCircleIcon, QuestionCircleIconComponent, QuestionIcon, QuestionIconComponent, RESIZABLE_PANEL_CLASS, RESIZABLE_PANEL_GROUP, RadioComponent, RefreshIcon, RefreshIconComponent, ResizableHandleComponent, ResizablePanelComponent, ResizablePanelGroupComponent, RobotIcon, RobotIconComponent, RotateIcon, RotateIconComponent, RowFeedComponent, RowGridComponent, SB_ICON_CLASS, SB_INPUT_CLASS, SELECT_CHEVRON_CLASS, SELECT_EMPTY_CLASS, SELECT_HINT_CLASS, SELECT_LABEL_CLASS, SELECT_MENU_CLASS, SELECT_OPTION_BODY_CLASS, SELECT_OPTION_CHECK_CLASS, SELECT_OPTION_CLASS, SELECT_OPTION_LABEL_CLASS, SELECT_OPTION_LEADING_ICON_CLASS, SELECT_OPTION_SUBLABEL_CLASS, SELECT_PLACEHOLDER_CLASS, SELECT_REF, SELECT_TRIGGER_CLASS, SELECT_TRIGGER_ICON_CLASS, SELECT_TRIGGER_LABEL_CLASS, SHEET_BODY_CLASS, SHEET_CLASS, SHEET_CLOSE_CLASS, SHEET_FOOTER_CLASS, SHEET_HEADER_CLASS, SHEET_HEADER_LEFT_CLASS, SHEET_TITLE_WRAP_CLASS, SIDEBAR_CLASS, SIDEBAR_CONTENT_CLASS, SIDEBAR_FOOTER_CLASS, SIDEBAR_GROUP_CLASS, SIDEBAR_GROUP_LABEL_CLASS, SIDEBAR_HEADER_CLASS, SIDEBAR_INSET_CLASS, SIDEBAR_ITEM_CLASS, SIDEBAR_ITEM_LABEL_CLASS, SIDEBAR_REF, SaveIcon, SaveIconComponent, SearchBarComponent, SearchIcon, SearchIconComponent, SearchInputComponent, SelectComponent, SelectLabelDirective, SelectTriggerDirective, SendHorizontalIcon, SendHorizontalIconComponent, SendIcon, SendIconComponent, SheetBodyComponent, SheetComponent, SheetFooterComponent, SheetHeaderComponent, SidebarComponent, SidebarContentDirective, SidebarFooterDirective, SidebarGroupDirective, SidebarGroupLabelDirective, SidebarHeaderDirective, SidebarInsetDirective, SidebarItemDirective, SidebarItemLabelDirective, SidebarTriggerDirective, SlashIcon, SlashIconComponent, SlidersIcon, SlidersIconComponent, SparklesIcon, SparklesIconComponent, SpinnerIcon, SpinnerIconComponent, SquareCheckBigIcon, SquareCheckBigIconComponent, SquareCheckIcon, SquareCheckIconComponent, SquareIcon, SquareIconComponent, SquareMinusIcon, SquareMinusIconComponent, SquarePenIcon, SquarePenIconComponent, StarIcon, StarIconComponent, SubMenuComponent, SunBrightIcon, SunBrightIconComponent, SwitchComponent, SyncIcon, SyncIconComponent, TEXTAREA_CONTROL_CLASS, TEXTAREA_COUNTER_CLASS, TEXTAREA_LINE_HEIGHT, TOGGLE_GROUP, TOGGLE_ICON_CLASS, TOGGLE_LABEL_CLASS, TOOLTIP_CLASS, TREE_ITEM_EXPANDER_CLASS, TabComponent, TabListComponent, TabPanelComponent, TabsComponent, TagComponent, TagIcon, TagIconComponent, TagInputComponent, TagRemoveComponent, TagsIcon, TagsIconComponent, TextareaComponent, TextareaControlDirective, TextareaCounterComponent, ThumbsDownIcon, ThumbsDownIconComponent, ThumbsUpIcon, ThumbsUpIconComponent, ToggleComponent, ToggleGroupComponent, ToggleItemComponent, ToggleLeftIcon, ToggleLeftIconComponent, ToggleRightIcon, ToggleRightIconComponent, TooltipComponent, TooltipContentDirective, TooltipDirective, TrashCanIcon, TrashCanIconComponent, TrashIcon, TrashIconComponent, TreeComponent, TreeItemComponent, TreeItemExpanderComponent, TreeItemGroupComponent, TriangleAlertIcon, TriangleAlertIconComponent, TypeIcon, TypeIconComponent, UndoIcon, UndoIconComponent, UploadIcon, UploadIconComponent, UserIcon, UserIconComponent, UserRoundIcon, UserRoundIconComponent, UserSecretIcon, UserSecretIconComponent, VideoIcon, VideoIconComponent, XMarkIcon, XMarkIconComponent, createCallable, fixStaleComboboxRelay, getListDepthStyle, injectCallRef, injectFloatingPanel, linkIconVariants, listItemVariants, menuContentVariants, menuItemVariants, menuPanelVariants, menuSeparatorVariants, modalVariants, provideCallable, resizableGroupVariants, resizableHandleVariants, searchBarVariants, selectChevronVariants, selectMenuVariants, selectOptionVariants, selectTriggerVariants, selectWrapVariants, sheetVariants, sidebarInsetVariants, sidebarVariants, textareaWrapVariants, toggleGroupVariants, toggleVariants, tooltipVariants, treeItemVariants };
24335
+ export { AUTOCOMPLETE_TAGS_CLASS, AUTOCOMPLETE_TRIGGER_CLASS, ArrowDownIcon, ArrowDownIconComponent, ArrowDownZaIcon, ArrowDownZaIconComponent, ArrowLeftIcon, ArrowLeftIconComponent, ArrowRightFromBracketIcon, ArrowRightFromBracketIconComponent, ArrowRightIcon, ArrowRightIconComponent, ArrowUpAzIcon, ArrowUpAzIconComponent, ArrowUpIcon, ArrowUpIconComponent, ArrowUpRightFromSquareIcon, ArrowUpRightFromSquareIconComponent, ArrowsMaximizeIcon, ArrowsMaximizeIconComponent, AutocompleteComponent, AvatarComponent, AvatarFallbackComponent, AvatarImageComponent, AwardIcon, AwardIconComponent, BadgeComponent, BarsIcon, BarsIconComponent, BellIcon, BellIconComponent, BookmarkIcon, BookmarkIconComponent, BreakpointObserverService, BuildingIcon, BuildingIconComponent, BulletComponent, ButtonComponent, CALL_REF, CalendarClockIcon, CalendarClockIconComponent, CalendarDayIcon, CalendarDayIconComponent, CallRef, ChatPlusIcon, ChatPlusIconComponent, CheckIcon, CheckIconComponent, CheckboxComponent, ChevronDownIcon, ChevronDownIconComponent, ChevronLeftIcon, ChevronLeftIconComponent, ChevronRightIcon, ChevronRightIconComponent, ChevronUpIcon, ChevronUpIconComponent, ChevronsLeftIcon, ChevronsLeftIconComponent, ChevronsRightIcon, ChevronsRightIconComponent, CircleCheckIcon, CircleCheckIconComponent, CircleXIcon, CircleXIconComponent, ClipboardIcon, ClipboardIconComponent, ClockIcon, ClockIconComponent, CogIcon, CogIconComponent, CommentIcon, CommentIconComponent, CommentsIcon, CommentsIconComponent, DIALOG_REF, DebugIcon, DebugIconComponent, DesktopIcon, DesktopIconComponent, DialogBodyComponent, DialogComponent, DialogContentComponent, DialogDescriptionComponent, DialogFooterComponent, DialogHeaderComponent, DialogService, DialogTitleComponent, DownloadIcon, DownloadIconComponent, PopoverDirective as DropdownDirective, PopoverDirective, EditIcon, EditIconComponent, EllipsisIcon, EllipsisIconComponent, EllipsisVerticalIcon, EllipsisVerticalIconComponent, EnvelopeIcon, EnvelopeIconComponent, ExternalLinkIcon, ExternalLinkIconComponent, EyeIcon, EyeIconComponent, EyeSlashIcon, EyeSlashIconComponent, FileHTMLIcon, FileHTMLIconComponent, FileIcon, FileIconComponent, FileMagnifyingGlassIcon, FileMagnifyingGlassIconComponent, FileOutputIcon, FileOutputIconComponent, FileSearchIcon, FileSearchIconComponent, FileSpreadsheetIcon, FileSpreadsheetIconComponent, FileTextIcon, FileTextIconComponent, FilesIcon, FilesIconComponent, FilterIcon, FilterIconComponent, FilterXIcon, FilterXIconComponent, FlagEnglishIcon, FlagEnglishIconComponent, FlagFrenchIcon, FlagFrenchIconComponent, FlagGermanIcon, FlagGermanIconComponent, FlashlightIcon, FlashlightIconComponent, FolderIcon, FolderIconComponent, FolderOpenIcon, FolderOpenIconComponent, FrownIcon, FrownIconComponent, GearIcon, GearIconComponent, GitForkIcon, GitForkIconComponent, GlobeIcon, GlobeIconComponent, GridIcon, GridIconComponent, HighlighterIcon, HighlighterIconComponent, HistoryIcon, HistoryIconComponent, HomeIcon, HomeIconComponent, HouseIcon, HouseIconComponent, ImageIcon, ImageIconComponent, InboxIcon, InboxIconComponent, InfoCircleIcon, InfoCircleIconComponent, InputComponent, InputControlDirective, InputCounterComponent, InputIconLeftDirective, InputIconRightDirective, KbdComponent, KbdGroupComponent, KeyIcon, KeyIconComponent, KeyboardIcon, KeyboardIconComponent, LINK_LABEL_CLASS, LIST_ITEM_AVATAR_CLASS, LIST_ITEM_CHEVRON_RIGHT_CLASS, LIST_ITEM_EXPANDER_BUTTON_CLASS, LIST_ITEM_EXPANDER_CLASS, LIST_ITEM_ICON_CLASS, LIST_ITEM_ICON_RIGHT_CLASS, LIST_ITEM_LEFT_CLASS, LIST_ITEM_SUBTEXT_CLASS, LIST_ITEM_TEXT_BLOCK_CLASS, LIST_ITEM_TEXT_CLASS, LIST_REF, LanguageIcon, LanguageIconComponent, LightbulbIcon, LightbulbIconComponent, LightbulbSlashIcon, LightbulbSlashIconComponent, LinkComponent, LinkIcon, LinkIconComponent, LinkIconLeftDirective, LinkIconRightDirective, ListComponent, ListFilterIcon, ListFilterIconComponent, ListIcon, ListIconComponent, ListItemActionComponent, ListItemAvatarDirective, ListItemChevronComponent, ListItemComponent, ListItemExpanderComponent, ListItemIconDirective, ListItemLeftDirective, ListItemTextComponent, ListboxActivateOnHover, LoadingCircleIcon, LoadingCircleIconComponent, MODAL_BODY_CLASS, MODAL_BODY_TEXT_CLASS, MODAL_CLASS, MODAL_CLOSE_CLASS, MODAL_FOOTER_CLASS, MODAL_HEADER_CLASS, MODAL_HEADER_LEFT_CLASS, MODAL_LABEL, MODAL_TITLE_CLASS, MODAL_TITLE_WRAP_CLASS, MagnifyingGlassIcon, MagnifyingGlassIconComponent, MagnifyingGlassMinusIcon, MagnifyingGlassMinusIconComponent, MagnifyingGlassPlusIcon, MagnifyingGlassPlusIconComponent, MapPinIcon, MapPinIconComponent, MenuComponent, MenuContentComponent, MenuItemComponent, MenuTriggerDirective, MinusIcon, MinusIconComponent, MoonIcon, MoonIconComponent, NewChatIcon, NewChatIconComponent, PaletteIcon, PaletteIconComponent, PanelLeftIcon, PanelLeftIconComponent, PanelRightIcon, PanelRightIconComponent, PaperclipIcon, PaperclipIconComponent, PenToSquareIcon, PenToSquareIconComponent, PlusIcon, PlusIconComponent, PresentationIcon, PresentationIconComponent, QuestionCircleIcon, QuestionCircleIconComponent, QuestionIcon, QuestionIconComponent, RESIZABLE_PANEL_CLASS, RESIZABLE_PANEL_GROUP, RadioComponent, RefreshIcon, RefreshIconComponent, ResizableHandleComponent, ResizablePanelComponent, ResizablePanelGroupComponent, RobotIcon, RobotIconComponent, RotateIcon, RotateIconComponent, RowFeedComponent, RowGridComponent, SB_ICON_CLASS, SB_INPUT_CLASS, SELECT_CHEVRON_CLASS, SELECT_EMPTY_CLASS, SELECT_HINT_CLASS, SELECT_LABEL_CLASS, SELECT_MENU_CLASS, SELECT_OPTION_BODY_CLASS, SELECT_OPTION_CHECK_CLASS, SELECT_OPTION_CLASS, SELECT_OPTION_LABEL_CLASS, SELECT_OPTION_LEADING_ICON_CLASS, SELECT_OPTION_SUBLABEL_CLASS, SELECT_PLACEHOLDER_CLASS, SELECT_REF, SELECT_TRIGGER_CLASS, SELECT_TRIGGER_ICON_CLASS, SELECT_TRIGGER_LABEL_CLASS, SHEET_BODY_CLASS, SHEET_CLASS, SHEET_CLOSE_CLASS, SHEET_FOOTER_CLASS, SHEET_HEADER_CLASS, SHEET_HEADER_LEFT_CLASS, SHEET_TITLE_WRAP_CLASS, SIDEBAR_CLASS, SIDEBAR_CONTENT_CLASS, SIDEBAR_FOOTER_CLASS, SIDEBAR_GROUP_CLASS, SIDEBAR_GROUP_LABEL_CLASS, SIDEBAR_HEADER_CLASS, SIDEBAR_INSET_CLASS, SIDEBAR_ITEM_CLASS, SIDEBAR_ITEM_LABEL_CLASS, SIDEBAR_REF, SaveIcon, SaveIconComponent, SearchBarComponent, SearchBarSuggestionsComponent, SearchIcon, SearchIconComponent, SearchInputComponent, SearchInputSuggestionsComponent, SelectComponent, SelectLabelDirective, SelectTriggerDirective, SendHorizontalIcon, SendHorizontalIconComponent, SendIcon, SendIconComponent, SheetBodyComponent, SheetComponent, SheetFooterComponent, SheetHeaderComponent, SidebarComponent, SidebarContentDirective, SidebarFooterDirective, SidebarGroupDirective, SidebarGroupLabelDirective, SidebarHeaderDirective, SidebarInsetDirective, SidebarItemDirective, SidebarItemLabelDirective, SidebarTriggerDirective, SlashIcon, SlashIconComponent, SlidersIcon, SlidersIconComponent, SparklesIcon, SparklesIconComponent, SpinnerIcon, SpinnerIconComponent, SquareCheckBigIcon, SquareCheckBigIconComponent, SquareCheckIcon, SquareCheckIconComponent, SquareIcon, SquareIconComponent, SquareMinusIcon, SquareMinusIconComponent, SquarePenIcon, SquarePenIconComponent, StarIcon, StarIconComponent, SubMenuComponent, SunBrightIcon, SunBrightIconComponent, SwitchComponent, SyncIcon, SyncIconComponent, TEXTAREA_CONTROL_CLASS, TEXTAREA_COUNTER_CLASS, TEXTAREA_LINE_HEIGHT, TOGGLE_GROUP, TOGGLE_ICON_CLASS, TOGGLE_LABEL_CLASS, TOOLTIP_CLASS, TREE_ITEM_EXPANDER_CLASS, TabComponent, TabListComponent, TabPanelComponent, TabsComponent, TagComponent, TagIcon, TagIconComponent, TagInputComponent, TagRemoveComponent, TagsIcon, TagsIconComponent, TextareaComponent, TextareaControlDirective, TextareaCounterComponent, ThumbsDownIcon, ThumbsDownIconComponent, ThumbsUpIcon, ThumbsUpIconComponent, ToggleComponent, ToggleGroupComponent, ToggleItemComponent, ToggleLeftIcon, ToggleLeftIconComponent, ToggleRightIcon, ToggleRightIconComponent, TooltipComponent, TooltipContentDirective, TooltipDirective, TrashCanIcon, TrashCanIconComponent, TrashIcon, TrashIconComponent, TreeComponent, TreeItemComponent, TreeItemExpanderComponent, TreeItemGroupComponent, TriangleAlertIcon, TriangleAlertIconComponent, TypeIcon, TypeIconComponent, UndoIcon, UndoIconComponent, UploadIcon, UploadIconComponent, UserIcon, UserIconComponent, UserRoundIcon, UserRoundIconComponent, UserSecretIcon, UserSecretIconComponent, VideoIcon, VideoIconComponent, XMarkIcon, XMarkIconComponent, createCallable, getListDepthStyle, injectCallRef, injectFloatingPanel, isApplePlatform, linkIconVariants, listItemVariants, menuContentVariants, menuItemVariants, menuPanelVariants, menuSeparatorVariants, modalVariants, provideCallable, resizableGroupVariants, resizableHandleVariants, searchBarVariants, selectChevronVariants, selectMenuVariants, selectOptionVariants, selectTriggerVariants, selectWrapVariants, sheetVariants, sidebarInsetVariants, sidebarVariants, textareaWrapVariants, toggleGroupVariants, toggleVariants, tooltipVariants, treeItemVariants };
23937
24336
 
23938
24337
  //# sourceMappingURL=sinequa-galactik.mjs.map