@sinequa/galactik 2.5.0 → 2.7.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.
@@ -17,6 +17,7 @@ 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
+ import { FormField, disabled, form, readonly } from "@angular/forms/signals";
20
21
  function isApplePlatform() {
21
22
  if (typeof navigator === "undefined") return false;
22
23
  const platform = navigator.userAgentData?.platform || navigator.userAgent;
@@ -6555,6 +6556,67 @@ i0.ɵɵngDeclareClassMetadata({
6555
6556
  }] }
6556
6557
  });
6557
6558
  const QuestionCircleIconComponent = QuestionCircleIcon;
6559
+ var QuickFilterIcon = class QuickFilterIcon {
6560
+ class = input(...ngDevMode ? [void 0, { debugName: "class" }] : /* istanbul ignore next */ []);
6561
+ classes = computed(() => cn(this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
6562
+ static ɵfac = i0.ɵɵngDeclareFactory({
6563
+ minVersion: "12.0.0",
6564
+ version: "22.2.1",
6565
+ ngImport: i0,
6566
+ type: QuickFilterIcon,
6567
+ deps: [],
6568
+ target: i0.ɵɵFactoryTarget.Component
6569
+ });
6570
+ static ɵcmp = i0.ɵɵngDeclareComponent({
6571
+ minVersion: "17.1.0",
6572
+ version: "22.2.1",
6573
+ type: QuickFilterIcon,
6574
+ isStandalone: true,
6575
+ selector: "quick-filter, quick-filter-icon, QuickFilter, QuickFilterIcon",
6576
+ inputs: { class: {
6577
+ classPropertyName: "class",
6578
+ publicName: "class",
6579
+ isSignal: true,
6580
+ isRequired: false,
6581
+ transformFunction: null
6582
+ } },
6583
+ ngImport: i0,
6584
+ template: `
6585
+ <svg [class]="classes()" aria-hidden="true" width="1rem" height="1rem" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none">
6586
+ <path d="M5.5423 2.40094C5.1323 2.40094 4.7998 2.73344 4.7998 3.14344C4.7998 3.34094 4.8773 3.52844 5.0173 3.66844L8.3998 7.04844V9.60094C8.3998 9.76094 8.4623 9.91344 8.5748 10.0259L10.3323 11.7834C10.4723 11.9234 10.6598 12.0009 10.8573 12.0009C11.2673 12.0009 11.5998 11.6684 11.5998 11.2584V7.04844L14.9823 3.66594C15.1223 3.52594 15.1998 3.33844 15.1998 3.14094C15.1998 2.73094 14.8673 2.39844 14.4573 2.39844L5.5423 2.40094ZM9.4248 6.37594L6.6498 3.60094H13.3523L10.5773 6.37594C10.4648 6.48844 10.4023 6.64094 10.4023 6.80094V10.1534L9.60231 9.35344V6.80094C9.60231 6.64094 9.53981 6.48844 9.42731 6.37594H9.4248ZM4.4548 4.80094H1.5423C1.1323 4.80094 0.799805 5.13344 0.799805 5.54344C0.799805 5.74094 0.877305 5.92844 1.0173 6.06844L4.3998 9.44844V12.0009C4.3998 12.1609 4.4623 12.3134 4.5748 12.4259L6.3323 14.1834C6.4723 14.3234 6.6598 14.4009 6.8573 14.4009C7.2673 14.4009 7.5998 14.0684 7.5998 13.6584V10.7309C7.3423 10.4134 7.1998 10.0134 7.1998 9.59844V8.15094L6.5748 8.77594C6.4623 8.88844 6.3998 9.04094 6.3998 9.20094V12.5534L5.5998 11.7534V9.20094C5.5998 9.04094 5.5373 8.88844 5.4248 8.77594L2.6498 6.00094H5.6548L4.4548 4.80094Z" fill="currentColor"></path>
6587
+ </svg>
6588
+ `,
6589
+ isInline: true,
6590
+ styles: [":host{display:contents}\n"]
6591
+ });
6592
+ };
6593
+ i0.ɵɵngDeclareClassMetadata({
6594
+ minVersion: "12.0.0",
6595
+ version: "22.2.1",
6596
+ ngImport: i0,
6597
+ type: QuickFilterIcon,
6598
+ decorators: [{
6599
+ type: Component,
6600
+ args: [{
6601
+ selector: "quick-filter, quick-filter-icon, QuickFilter, QuickFilterIcon",
6602
+ template: `
6603
+ <svg [class]="classes()" aria-hidden="true" width="1rem" height="1rem" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none">
6604
+ <path d="M5.5423 2.40094C5.1323 2.40094 4.7998 2.73344 4.7998 3.14344C4.7998 3.34094 4.8773 3.52844 5.0173 3.66844L8.3998 7.04844V9.60094C8.3998 9.76094 8.4623 9.91344 8.5748 10.0259L10.3323 11.7834C10.4723 11.9234 10.6598 12.0009 10.8573 12.0009C11.2673 12.0009 11.5998 11.6684 11.5998 11.2584V7.04844L14.9823 3.66594C15.1223 3.52594 15.1998 3.33844 15.1998 3.14094C15.1998 2.73094 14.8673 2.39844 14.4573 2.39844L5.5423 2.40094ZM9.4248 6.37594L6.6498 3.60094H13.3523L10.5773 6.37594C10.4648 6.48844 10.4023 6.64094 10.4023 6.80094V10.1534L9.60231 9.35344V6.80094C9.60231 6.64094 9.53981 6.48844 9.42731 6.37594H9.4248ZM4.4548 4.80094H1.5423C1.1323 4.80094 0.799805 5.13344 0.799805 5.54344C0.799805 5.74094 0.877305 5.92844 1.0173 6.06844L4.3998 9.44844V12.0009C4.3998 12.1609 4.4623 12.3134 4.5748 12.4259L6.3323 14.1834C6.4723 14.3234 6.6598 14.4009 6.8573 14.4009C7.2673 14.4009 7.5998 14.0684 7.5998 13.6584V10.7309C7.3423 10.4134 7.1998 10.0134 7.1998 9.59844V8.15094L6.5748 8.77594C6.4623 8.88844 6.3998 9.04094 6.3998 9.20094V12.5534L5.5998 11.7534V9.20094C5.5998 9.04094 5.5373 8.88844 5.4248 8.77594L2.6498 6.00094H5.6548L4.4548 4.80094Z" fill="currentColor"></path>
6605
+ </svg>
6606
+ `,
6607
+ styles: [":host{display:contents}\n"]
6608
+ }]
6609
+ }],
6610
+ propDecorators: { class: [{
6611
+ type: i0.Input,
6612
+ args: [{
6613
+ isSignal: true,
6614
+ alias: "class",
6615
+ required: false
6616
+ }]
6617
+ }] }
6618
+ });
6619
+ const QuickFilterIconComponent = QuickFilterIcon;
6558
6620
  var RefreshIcon = class RefreshIcon {
6559
6621
  class = input(...ngDevMode ? [void 0, { debugName: "class" }] : /* istanbul ignore next */ []);
6560
6622
  classes = computed(() => cn(this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
@@ -9292,12 +9354,13 @@ function injectFloatingPanel(options) {
9292
9354
  panel.showPopover();
9293
9355
  }
9294
9356
  const placement = typeof options.placement === "function" ? options.placement() : options.placement ?? "bottom-start";
9357
+ const distance = typeof options.offset === "function" ? options.offset() : options.offset ?? 4;
9295
9358
  const stop = autoUpdate(anchor, panel, () => {
9296
9359
  computePosition(anchor, panel, {
9297
9360
  strategy: "fixed",
9298
9361
  placement,
9299
9362
  middleware: [
9300
- offset(options.offset ?? 4),
9363
+ offset(distance),
9301
9364
  ...allowFlip ? [flip()] : [],
9302
9365
  shift({ padding: options.padding ?? 8 }),
9303
9366
  ...arrowElement ? [arrow({
@@ -9347,6 +9410,315 @@ function placeArrow(panel, arrowElement, placed, data) {
9347
9410
  arrowElement.style.right = arrowElement.style.bottom = "";
9348
9411
  arrowElement.style.setProperty(staticSide, `${-arrowElement.offsetWidth / 2}px`);
9349
9412
  }
9413
+ const TOP_MARGIN = 8;
9414
+ const BOTTOM_MARGIN = 16;
9415
+ const holders = /* @__PURE__ */ new WeakMap();
9416
+ const MIN_ROOM_BELOW = 24;
9417
+ var PopoverResizeHandleComponent = class PopoverResizeHandleComponent {
9418
+ edge = input("top", ...ngDevMode ? [{ debugName: "edge" }] : /* istanbul ignore next */ []);
9419
+ min = input(200, {
9420
+ ...ngDevMode ? { debugName: "min" } : /* istanbul ignore next */ {},
9421
+ transform: numberAttribute
9422
+ });
9423
+ step = input(16, {
9424
+ ...ngDevMode ? { debugName: "step" } : /* istanbul ignore next */ {},
9425
+ transform: numberAttribute
9426
+ });
9427
+ label = input("Resize", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
9428
+ class = input(...ngDevMode ? [void 0, { debugName: "class" }] : /* istanbul ignore next */ []);
9429
+ resizeStart = output();
9430
+ host = inject(ElementRef);
9431
+ destroyRef = inject(DestroyRef);
9432
+ valueNow = signal(null, ...ngDevMode ? [{ debugName: "valueNow" }] : /* istanbul ignore next */ []);
9433
+ valueMax = signal(null, ...ngDevMode ? [{ debugName: "valueMax" }] : /* istanbul ignore next */ []);
9434
+ hidden = signal(false, ...ngDevMode ? [{ debugName: "hidden" }] : /* istanbul ignore next */ []);
9435
+ classes = computed(() => cn("flex h-(--spacing-xs) w-full shrink-0 cursor-row-resize touch-none items-center justify-center rounded-(--radius-xs) outline-none hover:[&>span]:opacity-100 focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-(--stroke-focus) focus-visible:[&>span]:opacity-100", this.hidden() && "hidden", this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
9436
+ held = null;
9437
+ heldTimer;
9438
+ drag = null;
9439
+ constructor() {
9440
+ afterNextRender(() => {
9441
+ const popover = this.popover();
9442
+ if (!popover) return;
9443
+ const refresh = () => this.refresh();
9444
+ popover.addEventListener("toggle", refresh);
9445
+ window.addEventListener("resize", refresh);
9446
+ const observer = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver(refresh);
9447
+ observer?.observe(popover);
9448
+ const placements = typeof MutationObserver === "undefined" ? void 0 : new MutationObserver(() => this.holdBottom());
9449
+ placements?.observe(popover, {
9450
+ attributes: true,
9451
+ attributeFilter: ["style"]
9452
+ });
9453
+ this.destroyRef.onDestroy(() => {
9454
+ popover.removeEventListener("toggle", refresh);
9455
+ window.removeEventListener("resize", refresh);
9456
+ observer?.disconnect();
9457
+ placements?.disconnect();
9458
+ clearTimeout(this.heldTimer);
9459
+ });
9460
+ this.refresh();
9461
+ });
9462
+ }
9463
+ popover() {
9464
+ return this.host.nativeElement.closest("[popover]");
9465
+ }
9466
+ refresh() {
9467
+ const popover = this.popover();
9468
+ if (!popover) return;
9469
+ const rect = popover.getBoundingClientRect();
9470
+ this.valueNow.set(Math.round(rect.height));
9471
+ this.valueMax.set(Math.round(this.largest(rect)));
9472
+ if (this.edge() === "bottom" && !this.drag) this.hidden.set(window.innerHeight - BOTTOM_MARGIN - rect.bottom < MIN_ROOM_BELOW);
9473
+ }
9474
+ largest(rect) {
9475
+ return this.edge() === "top" ? rect.bottom - TOP_MARGIN : window.innerHeight - BOTTOM_MARGIN - rect.top;
9476
+ }
9477
+ setHeight(requested, bottom) {
9478
+ const popover = this.popover();
9479
+ if (!popover) return;
9480
+ const rect = popover.getBoundingClientRect();
9481
+ const height = Math.round(Math.min(Math.max(requested, this.min()), Math.max(this.min(), this.edge() === "top" ? bottom - TOP_MARGIN : window.innerHeight - BOTTOM_MARGIN - rect.top)));
9482
+ popover.style.maxHeight = "none";
9483
+ popover.style.height = `${height}px`;
9484
+ if (this.edge() === "top") {
9485
+ const translated = this.translateY(popover);
9486
+ const top = rect.top - translated;
9487
+ const next = bottom - height - top;
9488
+ popover.style.translate = next ? `0 ${next}px` : "";
9489
+ this.hold(bottom, popover);
9490
+ }
9491
+ this.valueNow.set(height);
9492
+ this.valueMax.set(Math.round(this.edge() === "top" ? bottom - TOP_MARGIN : window.innerHeight - BOTTOM_MARGIN - popover.getBoundingClientRect().top));
9493
+ }
9494
+ holdBottom() {
9495
+ const popover = this.popover();
9496
+ if (this.held === null || !popover || this.edge() !== "top") return;
9497
+ const rect = popover.getBoundingClientRect();
9498
+ const translated = this.translateY(popover);
9499
+ const next = this.held - rect.height - (rect.top - translated);
9500
+ if (Math.abs(next - translated) > .5) popover.style.translate = next ? `0 ${next}px` : "";
9501
+ }
9502
+ hold(bottom, popover) {
9503
+ holders.set(popover, this);
9504
+ this.held = bottom;
9505
+ clearTimeout(this.heldTimer);
9506
+ this.heldTimer = setTimeout(() => this.held = null, 400);
9507
+ }
9508
+ release() {
9509
+ this.held = null;
9510
+ clearTimeout(this.heldTimer);
9511
+ }
9512
+ begin(popover) {
9513
+ const other = holders.get(popover);
9514
+ if (other && other !== this) other.release();
9515
+ this.resizeStart.emit();
9516
+ }
9517
+ translateY(popover) {
9518
+ const parts = popover.style.translate.trim().split(/\s+/);
9519
+ return parts.length > 1 ? parseFloat(parts[1]) || 0 : 0;
9520
+ }
9521
+ onPointerDown(event) {
9522
+ const popover = this.popover();
9523
+ if (!popover || event.pointerType === "mouse" && event.button !== 0) return;
9524
+ this.begin(popover);
9525
+ const rect = popover.getBoundingClientRect();
9526
+ this.drag = {
9527
+ pointerId: event.pointerId,
9528
+ startY: event.clientY,
9529
+ startHeight: rect.height,
9530
+ bottom: rect.bottom
9531
+ };
9532
+ this.host.nativeElement.setPointerCapture?.(event.pointerId);
9533
+ event.preventDefault();
9534
+ }
9535
+ onPointerMove(event) {
9536
+ const drag = this.drag;
9537
+ if (!drag || event.pointerId !== drag.pointerId) return;
9538
+ const delta = this.edge() === "top" ? drag.startY - event.clientY : event.clientY - drag.startY;
9539
+ this.setHeight(drag.startHeight + delta, drag.bottom);
9540
+ }
9541
+ onPointerEnd(event) {
9542
+ if (!this.drag || event.pointerId !== this.drag.pointerId) return;
9543
+ this.host.nativeElement.releasePointerCapture?.(event.pointerId);
9544
+ this.drag = null;
9545
+ this.refresh();
9546
+ }
9547
+ onKeydown(event) {
9548
+ const popover = this.popover();
9549
+ if (!popover) return;
9550
+ const rect = popover.getBoundingClientRect();
9551
+ const grows = this.edge() === "top" ? "ArrowUp" : "ArrowDown";
9552
+ const shrinks = this.edge() === "top" ? "ArrowDown" : "ArrowUp";
9553
+ let height;
9554
+ if (event.key === grows) height = rect.height + this.step();
9555
+ else if (event.key === shrinks) height = rect.height - this.step();
9556
+ else if (event.key === "Home") height = this.min();
9557
+ else if (event.key === "End") height = this.largest(rect);
9558
+ else return;
9559
+ event.preventDefault();
9560
+ this.begin(popover);
9561
+ this.setHeight(height, rect.bottom);
9562
+ }
9563
+ static ɵfac = i0.ɵɵngDeclareFactory({
9564
+ minVersion: "12.0.0",
9565
+ version: "22.2.1",
9566
+ ngImport: i0,
9567
+ type: PopoverResizeHandleComponent,
9568
+ deps: [],
9569
+ target: i0.ɵɵFactoryTarget.Component
9570
+ });
9571
+ static ɵcmp = i0.ɵɵngDeclareComponent({
9572
+ minVersion: "17.1.0",
9573
+ version: "22.2.1",
9574
+ type: PopoverResizeHandleComponent,
9575
+ isStandalone: true,
9576
+ selector: "PopoverResizeHandle, popover-resize-handle",
9577
+ inputs: {
9578
+ edge: {
9579
+ classPropertyName: "edge",
9580
+ publicName: "edge",
9581
+ isSignal: true,
9582
+ isRequired: false,
9583
+ transformFunction: null
9584
+ },
9585
+ min: {
9586
+ classPropertyName: "min",
9587
+ publicName: "min",
9588
+ isSignal: true,
9589
+ isRequired: false,
9590
+ transformFunction: null
9591
+ },
9592
+ step: {
9593
+ classPropertyName: "step",
9594
+ publicName: "step",
9595
+ isSignal: true,
9596
+ isRequired: false,
9597
+ transformFunction: null
9598
+ },
9599
+ label: {
9600
+ classPropertyName: "label",
9601
+ publicName: "label",
9602
+ isSignal: true,
9603
+ isRequired: false,
9604
+ transformFunction: null
9605
+ },
9606
+ class: {
9607
+ classPropertyName: "class",
9608
+ publicName: "class",
9609
+ isSignal: true,
9610
+ isRequired: false,
9611
+ transformFunction: null
9612
+ }
9613
+ },
9614
+ outputs: { resizeStart: "resizeStart" },
9615
+ host: {
9616
+ attributes: {
9617
+ "role": "separator",
9618
+ "aria-orientation": "horizontal"
9619
+ },
9620
+ listeners: {
9621
+ "pointerdown": "onPointerDown($event)",
9622
+ "pointermove": "onPointerMove($event)",
9623
+ "pointerup": "onPointerEnd($event)",
9624
+ "pointercancel": "onPointerEnd($event)",
9625
+ "keydown": "onKeydown($event)",
9626
+ "focus": "refresh()"
9627
+ },
9628
+ properties: {
9629
+ "attr.aria-label": "label()",
9630
+ "attr.aria-valuemin": "min()",
9631
+ "attr.aria-valuenow": "valueNow()",
9632
+ "attr.aria-valuemax": "valueMax()",
9633
+ "attr.tabindex": "hidden() ? -1 : 0",
9634
+ "class": "classes()"
9635
+ }
9636
+ },
9637
+ ngImport: i0,
9638
+ template: `<span
9639
+ aria-hidden="true"
9640
+ class="h-0.5 w-6 rounded-full bg-(--bg-neutral-base) opacity-0 transition-opacity duration-150 motion-reduce:transition-none"></span>`,
9641
+ isInline: true
9642
+ });
9643
+ };
9644
+ i0.ɵɵngDeclareClassMetadata({
9645
+ minVersion: "12.0.0",
9646
+ version: "22.2.1",
9647
+ ngImport: i0,
9648
+ type: PopoverResizeHandleComponent,
9649
+ decorators: [{
9650
+ type: Component,
9651
+ args: [{
9652
+ selector: "PopoverResizeHandle, popover-resize-handle",
9653
+ template: `<span
9654
+ aria-hidden="true"
9655
+ class="h-0.5 w-6 rounded-full bg-(--bg-neutral-base) opacity-0 transition-opacity duration-150 motion-reduce:transition-none"></span>`,
9656
+ host: {
9657
+ role: "separator",
9658
+ "aria-orientation": "horizontal",
9659
+ "[attr.aria-label]": "label()",
9660
+ "[attr.aria-valuemin]": "min()",
9661
+ "[attr.aria-valuenow]": "valueNow()",
9662
+ "[attr.aria-valuemax]": "valueMax()",
9663
+ "[attr.tabindex]": "hidden() ? -1 : 0",
9664
+ "[class]": "classes()",
9665
+ "(pointerdown)": "onPointerDown($event)",
9666
+ "(pointermove)": "onPointerMove($event)",
9667
+ "(pointerup)": "onPointerEnd($event)",
9668
+ "(pointercancel)": "onPointerEnd($event)",
9669
+ "(keydown)": "onKeydown($event)",
9670
+ "(focus)": "refresh()"
9671
+ }
9672
+ }]
9673
+ }],
9674
+ ctorParameters: () => [],
9675
+ propDecorators: {
9676
+ edge: [{
9677
+ type: i0.Input,
9678
+ args: [{
9679
+ isSignal: true,
9680
+ alias: "edge",
9681
+ required: false
9682
+ }]
9683
+ }],
9684
+ min: [{
9685
+ type: i0.Input,
9686
+ args: [{
9687
+ isSignal: true,
9688
+ alias: "min",
9689
+ required: false
9690
+ }]
9691
+ }],
9692
+ step: [{
9693
+ type: i0.Input,
9694
+ args: [{
9695
+ isSignal: true,
9696
+ alias: "step",
9697
+ required: false
9698
+ }]
9699
+ }],
9700
+ label: [{
9701
+ type: i0.Input,
9702
+ args: [{
9703
+ isSignal: true,
9704
+ alias: "label",
9705
+ required: false
9706
+ }]
9707
+ }],
9708
+ class: [{
9709
+ type: i0.Input,
9710
+ args: [{
9711
+ isSignal: true,
9712
+ alias: "class",
9713
+ required: false
9714
+ }]
9715
+ }],
9716
+ resizeStart: [{
9717
+ type: i0.Output,
9718
+ args: ["resizeStart"]
9719
+ }]
9720
+ }
9721
+ });
9350
9722
  const TOOLTIP_CLASS = "tooltip-panel";
9351
9723
  const tooltipVariants = cva([
9352
9724
  TOOLTIP_CLASS,
@@ -12172,7 +12544,7 @@ const inputWrapVariants = cva([
12172
12544
  "hover:not-has-disabled:not-has-[[readonly]]:not-has-focus:border-(--stroke-primary-hovered)",
12173
12545
  "hover:not-has-disabled:not-has-[[readonly]]:not-has-focus:bg-(--bg-primary-lighter)",
12174
12546
  "has-focus:not-has-disabled:not-has-[[readonly]]:bg-(--bg-neutral-white)",
12175
- "has-focus:not-has-disabled:not-has-[[readonly]]:outline-2 has-focus:not-has-disabled:not-has-[[readonly]]:outline-offset-0 has-focus:not-has-disabled:not-has-[[readonly]]:outline-(--bg-primary-hovered) has-focus:not-has-disabled:not-has-[[readonly]]:outline-solid",
12547
+ "has-focus:not-has-disabled:not-has-[[readonly]]:outline-2 has-focus:not-has-disabled:not-has-[[readonly]]:outline-offset-0 has-focus:not-has-disabled:not-has-[[readonly]]:outline-(--stroke-focus) has-focus:not-has-disabled:not-has-[[readonly]]:outline-solid",
12176
12548
  "has-disabled:cursor-not-allowed has-disabled:border-(--stroke-neutral-disabled) has-disabled:bg-(--bg-neutral-disabled)",
12177
12549
  "has-disabled:[&_.input-control]:text-(--font-neutral-muted)",
12178
12550
  "has-disabled:[&_.input-control]:cursor-not-allowed",
@@ -12311,10 +12683,10 @@ const tagVariants = cva([
12311
12683
  error: ""
12312
12684
  },
12313
12685
  size: {
12314
- xs: "gap-1 rounded-(--radius-xs) px-1 py-0.5 text-(length:--size-sm) leading-(--line-height-sm) [&_.tag-icon]:text-(length:--icon-xs)",
12686
+ xs: "gap-1 rounded-(--radius-xs) px-1 py-0.5 text-(length:--size-xs) leading-[var(--line-height-xs,var(--line-height-1))] [&_.tag-icon]:text-(length:--icon-xs)",
12315
12687
  sm: "gap-1 rounded-(--radius-sm) px-2 py-1 text-(length:--size-sm) leading-(--line-height-sm) [&_.tag-icon]:text-(length:--icon-xs)",
12316
12688
  md: "gap-2 rounded-(--radius-sm) px-3 py-2 text-(length:--size-base) leading-(--line-height-base) [&_.tag-icon]:text-(length:--icon-sm)",
12317
- xsmall: "gap-1 rounded-(--radius-xs) px-1 py-0.5 text-(length:--size-sm) leading-(--line-height-sm) [&_.tag-icon]:text-(length:--icon-xs)",
12689
+ xsmall: "gap-1 rounded-(--radius-xs) px-1 py-0.5 text-(length:--size-xs) leading-[var(--line-height-xs,var(--line-height-1))] [&_.tag-icon]:text-(length:--icon-xs)",
12318
12690
  small: "gap-1 rounded-(--radius-sm) px-2 py-1 text-(length:--size-sm) leading-(--line-height-sm) [&_.tag-icon]:text-(length:--icon-xs)",
12319
12691
  medium: "gap-2 rounded-(--radius-sm) px-3 py-2 text-(length:--size-base) leading-(--line-height-base) [&_.tag-icon]:text-(length:--icon-sm)"
12320
12692
  }
@@ -12763,11 +13135,13 @@ var AutocompleteComponent = class AutocompleteComponent {
12763
13135
  listboxEl = viewChild("listbox", ...ngDevMode ? [{ debugName: "listboxEl" }] : /* istanbul ignore next */ []);
12764
13136
  fieldEl = viewChild("field", ...ngDevMode ? [{ debugName: "fieldEl" }] : /* istanbul ignore next */ []);
12765
13137
  settledQuery = signal("", ...ngDevMode ? [{ debugName: "settledQuery" }] : /* istanbul ignore next */ []);
13138
+ browseAll = signal(false, ...ngDevMode ? [{ debugName: "browseAll" }] : /* istanbul ignore next */ []);
12766
13139
  search = resource({
12767
13140
  ...ngDevMode ? { debugName: "search" } : /* istanbul ignore next */ {},
12768
13141
  params: () => {
12769
13142
  const q = this.settledQuery().trim();
12770
- return q.length >= this.minLength() ? q : void 0;
13143
+ if (q.length >= this.minLength()) return q;
13144
+ return this.browseAll() ? "" : void 0;
12771
13145
  },
12772
13146
  loader: ({ params, abortSignal }) => this.loader()(params, { signal: abortSignal })
12773
13147
  });
@@ -12823,6 +13197,7 @@ var AutocompleteComponent = class AutocompleteComponent {
12823
13197
  }
12824
13198
  onInput(event) {
12825
13199
  queueMicrotask(() => this.combobox().expanded.set(this.open()));
13200
+ this.browseAll.set(false);
12826
13201
  if (!event.target.value.trim()) this.open.set(false);
12827
13202
  }
12828
13203
  onKeydown(event) {
@@ -12856,6 +13231,11 @@ var AutocompleteComponent = class AutocompleteComponent {
12856
13231
  }
12857
13232
  if (!pickedAny) return;
12858
13233
  if (this.closeOnPick()) this.clearQuery();
13234
+ else {
13235
+ this.query.set("");
13236
+ this.settledQuery.set("");
13237
+ this.browseAll.set(true);
13238
+ }
12859
13239
  this.combobox().element.focus();
12860
13240
  }
12861
13241
  onEnter(event) {
@@ -12870,6 +13250,7 @@ var AutocompleteComponent = class AutocompleteComponent {
12870
13250
  clearQuery() {
12871
13251
  this.query.set("");
12872
13252
  this.settledQuery.set("");
13253
+ this.browseAll.set(false);
12873
13254
  this.open.set(false);
12874
13255
  }
12875
13256
  onFocusOut(event) {
@@ -14066,7 +14447,9 @@ const toggleVariants = cva([
14066
14447
  "text-(--font-primary-base)",
14067
14448
  "not-aria-disabled:not-aria-pressed:hover:bg-(--bg-primary-hovered) not-aria-disabled:not-aria-pressed:hover:text-(--font-neutral-white)",
14068
14449
  "not-aria-disabled:not-aria-pressed:active:bg-(--bg-primary-pressed) not-aria-disabled:not-aria-pressed:active:font-bold not-aria-disabled:not-aria-pressed:active:text-(--font-primary-pressed)",
14069
- "aria-pressed:bg-(--bg-neutral-white) aria-pressed:text-(--font-primary-base) aria-pressed:shadow-(--shadow-2)"
14450
+ "aria-pressed:bg-(--bg-neutral-white) aria-pressed:text-(--font-primary-base) aria-pressed:shadow-(--shadow-2)",
14451
+ "[.dark_&]:aria-pressed:bg-(--bg-primary-base)",
14452
+ "[.dark_&]:not-aria-disabled:not-aria-pressed:hover:bg-(--bg-primary-light)"
14070
14453
  ],
14071
14454
  multi: [
14072
14455
  "text-(--font-neutral-black)",
@@ -14117,7 +14500,7 @@ const toggleVariants = cva([
14117
14500
  class: [
14118
14501
  "aria-pressed:before:absolute aria-pressed:before:content-['']",
14119
14502
  "aria-pressed:before:h-[2px] aria-pressed:before:rounded-[1px]",
14120
- "aria-pressed:before:pointer-events-none aria-pressed:before:bg-(--stroke-primary-lighter)"
14503
+ "aria-pressed:before:pointer-events-none aria-pressed:before:bg-(--stroke-primary-lighter) [.dark_&]:aria-pressed:before:bg-(--font-primary-base)"
14121
14504
  ]
14122
14505
  },
14123
14506
  {
@@ -14151,7 +14534,7 @@ const toggleVariants = cva([
14151
14534
  "aria-pressed:before:absolute aria-pressed:before:content-['']",
14152
14535
  "aria-pressed:before:left-1/2 aria-pressed:before:-translate-x-1/2",
14153
14536
  "aria-pressed:before:h-[2px] aria-pressed:before:w-2 aria-pressed:before:rounded-[1px]",
14154
- "aria-pressed:before:pointer-events-none aria-pressed:before:bg-(--stroke-primary-lighter)"
14537
+ "aria-pressed:before:pointer-events-none aria-pressed:before:bg-(--stroke-primary-lighter) [.dark_&]:aria-pressed:before:bg-(--font-primary-base)"
14155
14538
  ]
14156
14539
  },
14157
14540
  {
@@ -14188,8 +14571,8 @@ const toggleVariants = cva([
14188
14571
  });
14189
14572
  const toggleGroupVariants = cva(["inline-flex items-center gap-(--spacing-3xs)"], {
14190
14573
  variants: { variant: {
14191
- single: "rounded-(--radius-rounded) bg-(--bg-primary-lightest) p-(--spacing-3xs)",
14192
- multi: "rounded-(--radius-rounded) border border-(--stroke-primary-lighter) bg-(--bg-neutral-white) px-(--spacing-xl) py-(--spacing-2xs) shadow-(--shadow-1)"
14574
+ single: "rounded-(--radius-rounded) bg-(--bg-primary-lightest) p-(--spacing-3xs) [.dark_&]:bg-(--bg-primary-lighter)",
14575
+ multi: "rounded-(--radius-rounded) border border-(--stroke-primary-lighter) bg-(--bg-neutral-white) px-(--spacing-xl) py-(--spacing-2xs) shadow-(--shadow-1) [.dark_&]:border-(--stroke-primary-light)"
14193
14576
  } },
14194
14577
  defaultVariants: { variant: "single" }
14195
14578
  });
@@ -14885,7 +15268,10 @@ i0.ɵɵngDeclareClassMetadata({
14885
15268
  });
14886
15269
  const kbdVariants = cva([
14887
15270
  "pointer-events-none inline-flex w-fit items-center justify-center gap-(--spacing-4xs) select-none",
14888
- "border border-solid border-(--stroke-neutral-disabled) bg-(--bg-neutral-base) text-(--font-neutral-base)",
15271
+ "border border-solid text-(--font-neutral-base)",
15272
+ "border-[color-mix(in_srgb,var(--bg-neutral-base),black_15%)] bg-(--bg-neutral-base)",
15273
+ "[.dark_&]:bg-[color-mix(in_srgb,var(--bg-neutral-base),white_5%)]",
15274
+ "[.dark_&]:border-[color-mix(in_srgb,var(--bg-neutral-base),white_20%)]",
14889
15275
  "font-[family-name:var(--family-base,'Hanken_Grotesk'),sans-serif] font-medium",
14890
15276
  "[&_svg:not([class*='size-'])]:size-3"
14891
15277
  ], {
@@ -15611,13 +15997,18 @@ var ListItemActionComponent = class ListItemActionComponent {
15611
15997
  @if (description() && !disabled()) {
15612
15998
  <span [id]="descriptionId" class="sr-only" aria-hidden="true">{{ description() }}</span>
15613
15999
  }
16000
+ <!-- Icône masquée aux technologies d'assistance : une option de listbox a des enfants présentationnels, et
16001
+ NVDA ne lit rien sous la souris dans une option, quel que soit le rôle ou le nom de l'icône. L'action
16002
+ est annoncée par la ligne (aria-keyshortcuts + description) et atteinte par sa touche. L'infobulle
16003
+ ne sert qu'aux voyants, à la place du title natif. -->
15614
16004
  <span
15615
16005
  #trigger
15616
16006
  [class]="btnClass"
15617
16007
  aria-hidden="true"
16008
+ [tooltip]="ariaLabel()"
16009
+ [tooltipDisabled]="disabled()"
15618
16010
  [class.pointer-events-none]="disabled()"
15619
16011
  [class.opacity-50]="disabled()"
15620
- [attr.title]="ariaLabel()"
15621
16012
  [attr.data-disabled]="disabled() || null">
15622
16013
  <ng-content />
15623
16014
  </span>
@@ -15641,6 +16032,31 @@ var ListItemActionComponent = class ListItemActionComponent {
15641
16032
  type: KbdComponent,
15642
16033
  selector: "kbd, Kbd",
15643
16034
  inputs: ["class", "size"]
16035
+ }, {
16036
+ kind: "directive",
16037
+ type: TooltipDirective,
16038
+ selector: "[tooltip]",
16039
+ inputs: [
16040
+ "tooltip",
16041
+ "tooltipPosition",
16042
+ "tooltipEvent",
16043
+ "showDelay",
16044
+ "hideDelay",
16045
+ "life",
16046
+ "tooltipOffset",
16047
+ "autoHide",
16048
+ "hideOnEscape",
16049
+ "escape",
16050
+ "tooltipDisabled",
16051
+ "tooltipArrow",
16052
+ "tooltipStyleClass",
16053
+ "tooltipOptions",
16054
+ "tooltip-position",
16055
+ "tooltip-delay",
16056
+ "tooltip-duration",
16057
+ "tooltip-offset"
16058
+ ],
16059
+ exportAs: ["tooltip"]
15644
16060
  }],
15645
16061
  changeDetection: i0.ChangeDetectionStrategy.OnPush
15646
16062
  });
@@ -15657,20 +16073,25 @@ i0.ɵɵngDeclareClassMetadata({
15657
16073
  exportAs: "listItemAction",
15658
16074
  standalone: true,
15659
16075
  changeDetection: ChangeDetectionStrategy.OnPush,
15660
- imports: [KbdComponent],
16076
+ imports: [KbdComponent, TooltipDirective],
15661
16077
  template: `
15662
16078
  <!-- Texte masqué relié à la ligne par aria-describedby. aria-hidden : il ne doit pas entrer dans le
15663
16079
  nom de l'option (calculé depuis son contenu), une référence aria-describedby le lit quand même. -->
15664
16080
  @if (description() && !disabled()) {
15665
16081
  <span [id]="descriptionId" class="sr-only" aria-hidden="true">{{ description() }}</span>
15666
16082
  }
16083
+ <!-- Icône masquée aux technologies d'assistance : une option de listbox a des enfants présentationnels, et
16084
+ NVDA ne lit rien sous la souris dans une option, quel que soit le rôle ou le nom de l'icône. L'action
16085
+ est annoncée par la ligne (aria-keyshortcuts + description) et atteinte par sa touche. L'infobulle
16086
+ ne sert qu'aux voyants, à la place du title natif. -->
15667
16087
  <span
15668
16088
  #trigger
15669
16089
  [class]="btnClass"
15670
16090
  aria-hidden="true"
16091
+ [tooltip]="ariaLabel()"
16092
+ [tooltipDisabled]="disabled()"
15671
16093
  [class.pointer-events-none]="disabled()"
15672
16094
  [class.opacity-50]="disabled()"
15673
- [attr.title]="ariaLabel()"
15674
16095
  [attr.data-disabled]="disabled() || null">
15675
16096
  <ng-content />
15676
16097
  </span>
@@ -20378,6 +20799,9 @@ const SEARCH_INPUT_IMPORTS = [
20378
20799
  XMarkIcon,
20379
20800
  TooltipDirective
20380
20801
  ];
20802
+ const STATE_ATTRIBUTES$1 = `
20803
+ [disabled]="disabled()"
20804
+ [readOnly]="readonly()"`;
20381
20805
  const BEFORE_CONTROL$1 = `
20382
20806
  <input-group [size]="size()" [textSize]="textSize()" [class]="cn('group/search', class())">
20383
20807
  <span input-icon-left>
@@ -20391,8 +20815,10 @@ const CONTROL_ATTRIBUTES$1 = `
20391
20815
  autocapitalize="off"
20392
20816
  autocomplete="off"
20393
20817
  autocorrect="off"
20394
- [disabled]="disabled()"
20395
20818
  [placeholder]="placeholder()"
20819
+ [attr.aria-required]="required() || null"
20820
+ [attr.aria-invalid]="invalid() || null"
20821
+ (blur)="touch.emit()"
20396
20822
  [attr.aria-label]="ariaLabel()"
20397
20823
  [attr.aria-keyshortcuts]="hotkey()"`;
20398
20824
  const AFTER_CONTROL$1 = `
@@ -20425,6 +20851,22 @@ var SearchInputBase = class SearchInputBase {
20425
20851
  ...ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {},
20426
20852
  transform: booleanAttribute
20427
20853
  });
20854
+ readonly = input(false, {
20855
+ ...ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {},
20856
+ transform: booleanAttribute
20857
+ });
20858
+ required = input(false, {
20859
+ ...ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {},
20860
+ transform: booleanAttribute
20861
+ });
20862
+ invalid = input(false, {
20863
+ ...ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {},
20864
+ transform: booleanAttribute
20865
+ });
20866
+ touch = output();
20867
+ focus(options) {
20868
+ this.searchInput().nativeElement.focus(options);
20869
+ }
20428
20870
  ariaLabel = input(void 0, {
20429
20871
  ...ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {},
20430
20872
  alias: "aria-label"
@@ -20477,6 +20919,27 @@ var SearchInputBase = class SearchInputBase {
20477
20919
  isRequired: false,
20478
20920
  transformFunction: null
20479
20921
  },
20922
+ readonly: {
20923
+ classPropertyName: "readonly",
20924
+ publicName: "readonly",
20925
+ isSignal: true,
20926
+ isRequired: false,
20927
+ transformFunction: null
20928
+ },
20929
+ required: {
20930
+ classPropertyName: "required",
20931
+ publicName: "required",
20932
+ isSignal: true,
20933
+ isRequired: false,
20934
+ transformFunction: null
20935
+ },
20936
+ invalid: {
20937
+ classPropertyName: "invalid",
20938
+ publicName: "invalid",
20939
+ isSignal: true,
20940
+ isRequired: false,
20941
+ transformFunction: null
20942
+ },
20480
20943
  ariaLabel: {
20481
20944
  classPropertyName: "ariaLabel",
20482
20945
  publicName: "aria-label",
@@ -20520,7 +20983,10 @@ var SearchInputBase = class SearchInputBase {
20520
20983
  transformFunction: null
20521
20984
  }
20522
20985
  },
20523
- outputs: { value: "valueChange" },
20986
+ outputs: {
20987
+ value: "valueChange",
20988
+ touch: "touch"
20989
+ },
20524
20990
  host: { properties: { "class": "cn(disabled() && 'pointer-events-none opacity-50')" } },
20525
20991
  viewQueries: [{
20526
20992
  propertyName: "searchInput",
@@ -20573,6 +21039,34 @@ i0.ɵɵngDeclareClassMetadata({
20573
21039
  required: false
20574
21040
  }]
20575
21041
  }],
21042
+ readonly: [{
21043
+ type: i0.Input,
21044
+ args: [{
21045
+ isSignal: true,
21046
+ alias: "readonly",
21047
+ required: false
21048
+ }]
21049
+ }],
21050
+ required: [{
21051
+ type: i0.Input,
21052
+ args: [{
21053
+ isSignal: true,
21054
+ alias: "required",
21055
+ required: false
21056
+ }]
21057
+ }],
21058
+ invalid: [{
21059
+ type: i0.Input,
21060
+ args: [{
21061
+ isSignal: true,
21062
+ alias: "invalid",
21063
+ required: false
21064
+ }]
21065
+ }],
21066
+ touch: [{
21067
+ type: i0.Output,
21068
+ args: ["touch"]
21069
+ }],
20576
21070
  ariaLabel: [{
20577
21071
  type: i0.Input,
20578
21072
  args: [{
@@ -20624,6 +21118,10 @@ i0.ɵɵngDeclareClassMetadata({
20624
21118
  }
20625
21119
  });
20626
21120
  var SearchInputComponent = class SearchInputComponent extends SearchInputBase {
21121
+ field = form(this.value, (path) => {
21122
+ disabled(path, () => this.disabled());
21123
+ readonly(path, () => this.readonly());
21124
+ });
20627
21125
  static ɵfac = i0.ɵɵngDeclareFactory({
20628
21126
  minVersion: "12.0.0",
20629
21127
  version: "22.2.1",
@@ -20640,7 +21138,7 @@ var SearchInputComponent = class SearchInputComponent extends SearchInputBase {
20640
21138
  selector: "SearchInput:not([suggestions]), search-input:not([suggestions]), searchinput:not([suggestions])",
20641
21139
  usesInheritance: true,
20642
21140
  ngImport: i0,
20643
- 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 ",
21141
+ 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 [placeholder]=\"placeholder()\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-invalid]=\"invalid() || null\"\n (blur)=\"touch.emit()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-keyshortcuts]=\"hotkey()\"\n [formField]=\"field\" />\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 ",
20644
21142
  isInline: true,
20645
21143
  dependencies: [
20646
21144
  {
@@ -20724,6 +21222,13 @@ var SearchInputComponent = class SearchInputComponent extends SearchInputBase {
20724
21222
  "tooltip-offset"
20725
21223
  ],
20726
21224
  exportAs: ["tooltip"]
21225
+ },
21226
+ {
21227
+ kind: "directive",
21228
+ type: FormField,
21229
+ selector: "[formField]",
21230
+ inputs: ["formField"],
21231
+ exportAs: ["formField"]
20727
21232
  }
20728
21233
  ]
20729
21234
  });
@@ -20738,11 +21243,10 @@ i0.ɵɵngDeclareClassMetadata({
20738
21243
  args: [{
20739
21244
  selector: "SearchInput:not([suggestions]), search-input:not([suggestions]), searchinput:not([suggestions])",
20740
21245
  standalone: true,
20741
- imports: SEARCH_INPUT_IMPORTS,
21246
+ imports: [...SEARCH_INPUT_IMPORTS, FormField],
20742
21247
  template: `${BEFORE_CONTROL$1}
20743
21248
  <input ${CONTROL_ATTRIBUTES$1}
20744
- [value]="value()"
20745
- (input)="value.set($any($event.target).value)" />${AFTER_CONTROL$1}
21249
+ [formField]="field" />${AFTER_CONTROL$1}
20746
21250
  `
20747
21251
  }]
20748
21252
  }]
@@ -20772,7 +21276,7 @@ var SearchInputSuggestionsComponent = class SearchInputSuggestionsComponent exte
20772
21276
  }],
20773
21277
  usesInheritance: true,
20774
21278
  ngImport: i0,
20775
- 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 ",
21279
+ 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 [placeholder]=\"placeholder()\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-invalid]=\"invalid() || null\"\n (blur)=\"touch.emit()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-keyshortcuts]=\"hotkey()\" \n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\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 ",
20776
21280
  isInline: true,
20777
21281
  dependencies: [
20778
21282
  {
@@ -20890,7 +21394,7 @@ i0.ɵɵngDeclareClassMetadata({
20890
21394
  imports: [...SEARCH_INPUT_IMPORTS, Combobox],
20891
21395
  template: `${BEFORE_CONTROL$1}
20892
21396
  <input
20893
- ngCombobox ${CONTROL_ATTRIBUTES$1}
21397
+ ngCombobox ${CONTROL_ATTRIBUTES$1} ${STATE_ATTRIBUTES$1}
20894
21398
  [(value)]="value" />${AFTER_CONTROL$1}
20895
21399
  `
20896
21400
  }]
@@ -20921,7 +21425,8 @@ const searchBarVariants = cva([
20921
21425
  variants: { size: {
20922
21426
  small: "h-6 gap-(--spacing-xs) px-(--spacing-xs) [&_.sb-icon]:text-(length:--icon-xs) [&_.sb-input]:text-(length:--size-xs)",
20923
21427
  medium: "h-9 gap-(--spacing-xs) px-(--spacing-md) [&_.sb-icon]:text-(length:--icon-sm) [&_.sb-input]:text-(length:--size-base)",
20924
- large: "h-(--row-height-lg) gap-(--spacing-2xs) px-(--spacing-md) [&_.sb-icon]:text-base [&_.sb-input]:text-(length:--size-lg)"
21428
+ large: "h-(--row-height-lg) gap-(--spacing-2xs) px-(--spacing-md) [&_.sb-icon]:text-base [&_.sb-input]:text-(length:--size-lg)",
21429
+ hero: "gap-(--spacing-2xs) py-(--spacing-xs) ps-(--spacing-lg) pe-(--spacing-xs) shadow-(--shadow-2) [&_.sb-icon]:hidden [&_.sb-input]:text-(length:--size-lg)"
20925
21430
  } },
20926
21431
  defaultVariants: { size: "large" }
20927
21432
  });
@@ -20932,6 +21437,9 @@ const SEARCH_BAR_IMPORTS = [
20932
21437
  XMarkIcon,
20933
21438
  TooltipDirective
20934
21439
  ];
21440
+ const STATE_ATTRIBUTES = `
21441
+ [disabled]="disabled()"
21442
+ [readOnly]="readonly()"`;
20935
21443
  const BEFORE_CONTROL = `
20936
21444
  <span class="sb-icon">
20937
21445
  <SearchIcon [class]="searchIconClass()" />
@@ -20945,8 +21453,10 @@ const CONTROL_ATTRIBUTES = `
20945
21453
  autocapitalize="off"
20946
21454
  autocomplete="off"
20947
21455
  autocorrect="off"
20948
- [disabled]="disabled()"
20949
21456
  [placeholder]="placeholder()"
21457
+ [attr.aria-required]="required() || null"
21458
+ [attr.aria-invalid]="invalid() || null"
21459
+ (blur)="touch.emit()"
20950
21460
  [attr.aria-label]="ariaLabel()"
20951
21461
  [attr.aria-keyshortcuts]="hotkey()"
20952
21462
  (search)="$event.stopPropagation()"`;
@@ -20974,21 +21484,23 @@ const AFTER_CONTROL = `
20974
21484
  rester APRÈS le bouton d'envoi porte slot="trailing" (voir plus bas). -->
20975
21485
  <ng-content />
20976
21486
  <button
20977
- variant="tertiary"
20978
- scheme="neutral"
21487
+ [variant]="isHero() ? 'primary' : 'tertiary'"
21488
+ [scheme]="isHero() ? 'default' : 'neutral'"
20979
21489
  [iconOnly]="true"
20980
21490
  [size]="buttonSize()"
20981
21491
  type="button"
20982
21492
  [disabled]="disabled()"
20983
- [class]="value()
20984
- ? 'opacity-100 transition-opacity duration-300'
20985
- : 'opacity-0 pointer-events-none transition-opacity duration-300'"
20986
- [tabindex]="value() && !disabled() ? 0 : -1"
21493
+ [class]="sendClass()"
21494
+ [tabindex]="(value() || isHero()) && !disabled() ? 0 : -1"
20987
21495
  [attr.aria-label]="sendLabel()"
20988
21496
  [tooltip]="sendLabel()"
20989
21497
  (keydown.enter)="emitSearch($event)"
20990
21498
  (click)="emitSearch($event)">
20991
- <SendHorizontalIcon [class]="iconClass()" aria-hidden="true" />
21499
+ @if (isHero()) {
21500
+ <SearchIcon [class]="iconClass()" aria-hidden="true" />
21501
+ } @else {
21502
+ <SendHorizontalIcon [class]="iconClass()" aria-hidden="true" />
21503
+ }
20992
21504
  <span class="sr-only">{{ sendLabel() }}</span>
20993
21505
  </button>
20994
21506
  <!-- Zone de fin de pilule, après le bouton d'envoi (CTA du type « Ask AI »…).
@@ -21015,10 +21527,31 @@ var SearchBarBase = class SearchBarBase {
21015
21527
  ...ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {},
21016
21528
  transform: booleanAttribute
21017
21529
  });
21530
+ readonly = input(false, {
21531
+ ...ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {},
21532
+ transform: booleanAttribute
21533
+ });
21534
+ required = input(false, {
21535
+ ...ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {},
21536
+ transform: booleanAttribute
21537
+ });
21538
+ invalid = input(false, {
21539
+ ...ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {},
21540
+ transform: booleanAttribute
21541
+ });
21542
+ touch = output();
21543
+ focus(options) {
21544
+ this.searchInput().nativeElement.focus(options);
21545
+ }
21018
21546
  hotkey = input(...ngDevMode ? [void 0, { debugName: "hotkey" }] : /* istanbul ignore next */ []);
21019
21547
  size = input("large", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
21020
21548
  class = input(...ngDevMode ? [void 0, { debugName: "class" }] : /* istanbul ignore next */ []);
21021
- buttonSize = computed(() => this.size() === "small" ? "xs" : "sm", ...ngDevMode ? [{ debugName: "buttonSize" }] : /* istanbul ignore next */ []);
21549
+ buttonSize = computed(() => this.size() === "small" ? "xs" : this.size() === "hero" ? "md" : "sm", ...ngDevMode ? [{ debugName: "buttonSize" }] : /* istanbul ignore next */ []);
21550
+ isHero = computed(() => this.size() === "hero", ...ngDevMode ? [{ debugName: "isHero" }] : /* istanbul ignore next */ []);
21551
+ sendClass = computed(() => {
21552
+ if (this.isHero()) return cn("rounded-full transition-opacity duration-300", this.value() ? "opacity-100" : "opacity-50");
21553
+ return this.value() ? "opacity-100 transition-opacity duration-300" : "opacity-0 pointer-events-none transition-opacity duration-300";
21554
+ }, ...ngDevMode ? [{ debugName: "sendClass" }] : /* istanbul ignore next */ []);
21022
21555
  iconClass = computed(() => cn("shrink-0", this.size() === "small" ? "size-3" : ""), ...ngDevMode ? [{ debugName: "iconClass" }] : /* istanbul ignore next */ []);
21023
21556
  searchIconClass = computed(() => cn("rotate-0 transition-[rotate] duration-500 group-focus-within/search:rotate-90", this.iconClass()), ...ngDevMode ? [{ debugName: "searchIconClass" }] : /* istanbul ignore next */ []);
21024
21557
  clearSearch(e) {
@@ -21090,6 +21623,27 @@ var SearchBarBase = class SearchBarBase {
21090
21623
  isRequired: false,
21091
21624
  transformFunction: null
21092
21625
  },
21626
+ readonly: {
21627
+ classPropertyName: "readonly",
21628
+ publicName: "readonly",
21629
+ isSignal: true,
21630
+ isRequired: false,
21631
+ transformFunction: null
21632
+ },
21633
+ required: {
21634
+ classPropertyName: "required",
21635
+ publicName: "required",
21636
+ isSignal: true,
21637
+ isRequired: false,
21638
+ transformFunction: null
21639
+ },
21640
+ invalid: {
21641
+ classPropertyName: "invalid",
21642
+ publicName: "invalid",
21643
+ isSignal: true,
21644
+ isRequired: false,
21645
+ transformFunction: null
21646
+ },
21093
21647
  hotkey: {
21094
21648
  classPropertyName: "hotkey",
21095
21649
  publicName: "hotkey",
@@ -21114,7 +21668,8 @@ var SearchBarBase = class SearchBarBase {
21114
21668
  },
21115
21669
  outputs: {
21116
21670
  value: "valueChange",
21117
- search: "search"
21671
+ search: "search",
21672
+ touch: "touch"
21118
21673
  },
21119
21674
  host: { properties: { "class": "cn('group/search', searchBarVariants({ size: size(), class: class() }))" } },
21120
21675
  viewQueries: [{
@@ -21196,6 +21751,34 @@ i0.ɵɵngDeclareClassMetadata({
21196
21751
  required: false
21197
21752
  }]
21198
21753
  }],
21754
+ readonly: [{
21755
+ type: i0.Input,
21756
+ args: [{
21757
+ isSignal: true,
21758
+ alias: "readonly",
21759
+ required: false
21760
+ }]
21761
+ }],
21762
+ required: [{
21763
+ type: i0.Input,
21764
+ args: [{
21765
+ isSignal: true,
21766
+ alias: "required",
21767
+ required: false
21768
+ }]
21769
+ }],
21770
+ invalid: [{
21771
+ type: i0.Input,
21772
+ args: [{
21773
+ isSignal: true,
21774
+ alias: "invalid",
21775
+ required: false
21776
+ }]
21777
+ }],
21778
+ touch: [{
21779
+ type: i0.Output,
21780
+ args: ["touch"]
21781
+ }],
21199
21782
  hotkey: [{
21200
21783
  type: i0.Input,
21201
21784
  args: [{
@@ -21223,6 +21806,10 @@ i0.ɵɵngDeclareClassMetadata({
21223
21806
  }
21224
21807
  });
21225
21808
  var SearchBarComponent = class SearchBarComponent extends SearchBarBase {
21809
+ field = form(this.value, (path) => {
21810
+ disabled(path, () => this.disabled());
21811
+ readonly(path, () => this.readonly());
21812
+ });
21226
21813
  static ɵfac = i0.ɵɵngDeclareFactory({
21227
21814
  minVersion: "12.0.0",
21228
21815
  version: "22.2.1",
@@ -21232,14 +21819,14 @@ var SearchBarComponent = class SearchBarComponent extends SearchBarBase {
21232
21819
  target: i0.ɵɵFactoryTarget.Component
21233
21820
  });
21234
21821
  static ɵcmp = i0.ɵɵngDeclareComponent({
21235
- minVersion: "14.0.0",
21822
+ minVersion: "17.0.0",
21236
21823
  version: "22.2.1",
21237
21824
  type: SearchBarComponent,
21238
21825
  isStandalone: true,
21239
21826
  selector: "SearchBar:not([suggestions]), search-bar:not([suggestions]), searchbar:not([suggestions])",
21240
21827
  usesInheritance: true,
21241
21828
  ngImport: i0,
21242
- 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 (search)=\"$event.stopPropagation()\"\n [value]=\"value()\"\n (input)=\"value.set($any($event.target).value)\"\n (keydown.enter)=\"emitSearchOnEnter($event)\" />\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",
21829
+ 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 [placeholder]=\"placeholder()\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-invalid]=\"invalid() || null\"\n (blur)=\"touch.emit()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-keyshortcuts]=\"hotkey()\"\n (search)=\"$event.stopPropagation()\"\n [formField]=\"field\"\n (keydown.enter)=\"emitSearchOnEnter($event)\" />\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]=\"isHero() ? 'primary' : 'tertiary'\"\n [scheme]=\"isHero() ? 'default' : 'neutral'\"\n [iconOnly]=\"true\"\n [size]=\"buttonSize()\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [class]=\"sendClass()\"\n [tabindex]=\"(value() || isHero()) && !disabled() ? 0 : -1\"\n [attr.aria-label]=\"sendLabel()\"\n [tooltip]=\"sendLabel()\"\n (keydown.enter)=\"emitSearch($event)\"\n (click)=\"emitSearch($event)\">\n @if (isHero()) {\n <SearchIcon [class]=\"iconClass()\" aria-hidden=\"true\" />\n } @else {\n <SendHorizontalIcon [class]=\"iconClass()\" aria-hidden=\"true\" />\n }\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",
21243
21830
  isInline: true,
21244
21831
  dependencies: [
21245
21832
  {
@@ -21297,6 +21884,13 @@ var SearchBarComponent = class SearchBarComponent extends SearchBarBase {
21297
21884
  "tooltip-offset"
21298
21885
  ],
21299
21886
  exportAs: ["tooltip"]
21887
+ },
21888
+ {
21889
+ kind: "directive",
21890
+ type: FormField,
21891
+ selector: "[formField]",
21892
+ inputs: ["formField"],
21893
+ exportAs: ["formField"]
21300
21894
  }
21301
21895
  ]
21302
21896
  });
@@ -21311,11 +21905,10 @@ i0.ɵɵngDeclareClassMetadata({
21311
21905
  args: [{
21312
21906
  selector: "SearchBar:not([suggestions]), search-bar:not([suggestions]), searchbar:not([suggestions])",
21313
21907
  standalone: true,
21314
- imports: SEARCH_BAR_IMPORTS,
21908
+ imports: [...SEARCH_BAR_IMPORTS, FormField],
21315
21909
  template: `${BEFORE_CONTROL}
21316
21910
  <input ${CONTROL_ATTRIBUTES}
21317
- [value]="value()"
21318
- (input)="value.set($any($event.target).value)"
21911
+ [formField]="field"
21319
21912
  (keydown.enter)="emitSearchOnEnter($event)" />${AFTER_CONTROL}`
21320
21913
  }]
21321
21914
  }]
@@ -21331,7 +21924,7 @@ var SearchBarSuggestionsComponent = class SearchBarSuggestionsComponent extends
21331
21924
  target: i0.ɵɵFactoryTarget.Component
21332
21925
  });
21333
21926
  static ɵcmp = i0.ɵɵngDeclareComponent({
21334
- minVersion: "17.2.0",
21927
+ minVersion: "17.0.0",
21335
21928
  version: "22.2.1",
21336
21929
  type: SearchBarSuggestionsComponent,
21337
21930
  isStandalone: true,
@@ -21345,7 +21938,7 @@ var SearchBarSuggestionsComponent = class SearchBarSuggestionsComponent extends
21345
21938
  }],
21346
21939
  usesInheritance: true,
21347
21940
  ngImport: i0,
21348
- 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 (search)=\"$event.stopPropagation()\"\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",
21941
+ 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 [placeholder]=\"placeholder()\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-invalid]=\"invalid() || null\"\n (blur)=\"touch.emit()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-keyshortcuts]=\"hotkey()\"\n (search)=\"$event.stopPropagation()\" \n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\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]=\"isHero() ? 'primary' : 'tertiary'\"\n [scheme]=\"isHero() ? 'default' : 'neutral'\"\n [iconOnly]=\"true\"\n [size]=\"buttonSize()\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [class]=\"sendClass()\"\n [tabindex]=\"(value() || isHero()) && !disabled() ? 0 : -1\"\n [attr.aria-label]=\"sendLabel()\"\n [tooltip]=\"sendLabel()\"\n (keydown.enter)=\"emitSearch($event)\"\n (click)=\"emitSearch($event)\">\n @if (isHero()) {\n <SearchIcon [class]=\"iconClass()\" aria-hidden=\"true\" />\n } @else {\n <SendHorizontalIcon [class]=\"iconClass()\" aria-hidden=\"true\" />\n }\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",
21349
21942
  isInline: true,
21350
21943
  dependencies: [
21351
21944
  {
@@ -21437,7 +22030,7 @@ i0.ɵɵngDeclareClassMetadata({
21437
22030
  imports: [...SEARCH_BAR_IMPORTS, Combobox],
21438
22031
  template: `${BEFORE_CONTROL}
21439
22032
  <input
21440
- ngCombobox ${CONTROL_ATTRIBUTES}
22033
+ ngCombobox ${CONTROL_ATTRIBUTES} ${STATE_ATTRIBUTES}
21441
22034
  [(value)]="value" />${AFTER_CONTROL}`
21442
22035
  }]
21443
22036
  }],
@@ -25047,6 +25640,6 @@ i0.ɵɵngDeclareClassMetadata({
25047
25640
  }]
25048
25641
  }
25049
25642
  });
25050
- 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, BellSlashIcon, BellSlashIconComponent, 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, GripVerticalIcon, GripVerticalIconComponent, 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, LockIcon, LockIconComponent, 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, SortableDirective, SortableItemDirective, 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, TruncatedDirective, 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 };
25643
+ 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, BellSlashIcon, BellSlashIconComponent, 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, GripVerticalIcon, GripVerticalIconComponent, 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, LockIcon, LockIconComponent, 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, PopoverResizeHandleComponent, PresentationIcon, PresentationIconComponent, QuestionCircleIcon, QuestionCircleIconComponent, QuestionIcon, QuestionIconComponent, QuickFilterIcon, QuickFilterIconComponent, 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, SortableDirective, SortableItemDirective, 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, TruncatedDirective, 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 };
25051
25644
 
25052
25645
  //# sourceMappingURL=sinequa-galactik.mjs.map