@lilydesignsystem/angular-headless 0.5.0 → 0.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.
@@ -1,4 +1,5 @@
1
1
  import * as i0 from "@angular/core";
2
+ import { OnInit } from "@angular/core";
2
3
  /**
3
4
  * AccordionCheckbox — a checkbox option that reveals an accordion panel when checked
4
5
  *
@@ -3370,7 +3371,13 @@ export declare class ColorInput {
3370
3371
  */
3371
3372
  export declare class ColorPicker {
3372
3373
  readonly label: import("@angular/core").InputSignal<string>;
3374
+ /** Horizontal position, 0-100 (saturation). Two-way bindable. */
3375
+ readonly x: import("@angular/core").ModelSignal<number>;
3376
+ /** Vertical position, 0-100 (brightness). Two-way bindable. */
3377
+ readonly y: import("@angular/core").ModelSignal<number>;
3378
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
3373
3379
  readonly className: import("@angular/core").InputSignal<string>;
3380
+ protected onKeydown(event: KeyboardEvent): void;
3374
3381
  static ɵfac: i0.ɵɵFactoryDeclaration<ColorPicker, never>;
3375
3382
  static ɵcmp: i0.ɵɵComponentDeclaration<ColorPicker, "lily-color-picker", never, {
3376
3383
  "label": {
@@ -3378,12 +3385,30 @@ export declare class ColorPicker {
3378
3385
  "required": false;
3379
3386
  "isSignal": true;
3380
3387
  };
3388
+ "x": {
3389
+ "alias": "x";
3390
+ "required": false;
3391
+ "isSignal": true;
3392
+ };
3393
+ "y": {
3394
+ "alias": "y";
3395
+ "required": false;
3396
+ "isSignal": true;
3397
+ };
3398
+ "disabled": {
3399
+ "alias": "disabled";
3400
+ "required": false;
3401
+ "isSignal": true;
3402
+ };
3381
3403
  "className": {
3382
3404
  "alias": "className";
3383
3405
  "required": false;
3384
3406
  "isSignal": true;
3385
3407
  };
3386
- }, {}, never, ["*"], true, never>;
3408
+ }, {
3409
+ "x": "xChange";
3410
+ "y": "yChange";
3411
+ }, never, ["*"], true, never>;
3387
3412
  }
3388
3413
  /**
3389
3414
  * ColorPickerButton — a button showing a color swatch in a color picker
@@ -3670,6 +3695,10 @@ export declare class ContentsLink {
3670
3695
  readonly href: import("@angular/core").InputSignal<string>;
3671
3696
  readonly label: import("@angular/core").InputSignal<string>;
3672
3697
  readonly className: import("@angular/core").InputSignal<string>;
3698
+ /** Sets data-count on the link (and data-complete when 0). */
3699
+ readonly count: import("@angular/core").InputSignal<number | undefined>;
3700
+ /** Visible, localised count text (e.g. "3 to do"), rendered inside the link after the text. */
3701
+ readonly countLabel: import("@angular/core").InputSignal<string | undefined>;
3673
3702
  static ɵfac: i0.ɵɵFactoryDeclaration<ContentsLink, never>;
3674
3703
  static ɵcmp: i0.ɵɵComponentDeclaration<ContentsLink, "lily-contents-link", never, {
3675
3704
  "href": {
@@ -3687,6 +3716,16 @@ export declare class ContentsLink {
3687
3716
  "required": false;
3688
3717
  "isSignal": true;
3689
3718
  };
3719
+ "count": {
3720
+ "alias": "count";
3721
+ "required": false;
3722
+ "isSignal": true;
3723
+ };
3724
+ "countLabel": {
3725
+ "alias": "countLabel";
3726
+ "required": false;
3727
+ "isSignal": true;
3728
+ };
3690
3729
  }, {}, never, ["*"], true, never>;
3691
3730
  }
3692
3731
  /**
@@ -3737,15 +3776,55 @@ export declare class ContentsListItem {
3737
3776
  }, {}, never, ["*"], true, never>;
3738
3777
  }
3739
3778
  /**
3740
- * ContentsNav — a contents navigation area
3779
+ * Which section is current: the last whose top has passed the activation line
3780
+ * (`tops` are each section's top relative to the scroller; `offset` is the line).
3781
+ * At the bottom of the scroll range the last section wins (a short last section
3782
+ * never reaches the line); before the first section, the first.
3783
+ */
3784
+ declare function activeSectionIndex(tops: number[], offset: number, atBottom: boolean): number;
3785
+ /** The in-page `<a href="#id">` links inside `nav`. */
3786
+ declare function contentsLinks(nav: Element): HTMLAnchorElement[];
3787
+ declare function contentsLinkId(link: Element): string;
3788
+ declare function contentsTarget(link: Element, doc: Document): HTMLElement | null;
3789
+ export type ScrollspyOptions = {
3790
+ /** Activation line, px below the top of `root`. */
3791
+ offset?: number;
3792
+ /** A scrolling element other than the viewport. */
3793
+ root?: HTMLElement | null;
3794
+ /** The `aria-current` token set on the active link. */
3795
+ current?: string;
3796
+ /** Called once per change, with the section id. */
3797
+ onChange?: (id: string) => void;
3798
+ };
3799
+ /**
3800
+ * Mark the link of the section in view with `aria-current` and `data-active`
3801
+ * (and its enclosing `<li>`s with `data-descendant-active`). Returns a function
3802
+ * that stops listening.
3803
+ */
3804
+ declare function startScrollspy(nav: HTMLElement, options?: ScrollspyOptions): () => void;
3805
+ /**
3806
+ * ContentsNav — a navigation landmark for a table of contents.
3741
3807
  *
3742
- * Headless Angular component. Renders the semantic HTML root with the
3743
- * kebab-case class hook `contents-nav` and the consumer-provided `className`.
3744
- * Ships zero CSS; the consumer styles via the class hook.
3808
+ * With `spy` it also marks the link of the section currently in view
3809
+ * (`aria-current` and `data-active`): the links are the consumer's own
3810
+ * `<a href="#id">` elements projected into the nav. See the component's
3811
+ * `index.md` for the rules (activation line, bottom of page, click lock).
3745
3812
  */
3746
3813
  export declare class ContentsNav {
3747
3814
  readonly label: import("@angular/core").InputSignal<string>;
3748
3815
  readonly className: import("@angular/core").InputSignal<string>;
3816
+ /** Scrollspy: mark the link of the section currently in view. */
3817
+ readonly spy: import("@angular/core").InputSignal<boolean>;
3818
+ /** Activation line, px below the top of `root`; set to a fixed header's height. */
3819
+ readonly offset: import("@angular/core").InputSignal<number>;
3820
+ /** A scrolling element other than the viewport. */
3821
+ readonly root: import("@angular/core").InputSignal<HTMLElement | null>;
3822
+ /** The aria-current token set on the active link. */
3823
+ readonly current: import("@angular/core").InputSignal<string>;
3824
+ /** The id of the section currently in view (spy only). Two-way bindable: `[(active)]`. */
3825
+ readonly active: import("@angular/core").ModelSignal<string>;
3826
+ private readonly navEl;
3827
+ constructor();
3749
3828
  static ɵfac: i0.ɵɵFactoryDeclaration<ContentsNav, never>;
3750
3829
  static ɵcmp: i0.ɵɵComponentDeclaration<ContentsNav, "lily-contents-nav", never, {
3751
3830
  "label": {
@@ -3758,7 +3837,34 @@ export declare class ContentsNav {
3758
3837
  "required": false;
3759
3838
  "isSignal": true;
3760
3839
  };
3761
- }, {}, never, ["*"], true, never>;
3840
+ "spy": {
3841
+ "alias": "spy";
3842
+ "required": false;
3843
+ "isSignal": true;
3844
+ };
3845
+ "offset": {
3846
+ "alias": "offset";
3847
+ "required": false;
3848
+ "isSignal": true;
3849
+ };
3850
+ "root": {
3851
+ "alias": "root";
3852
+ "required": false;
3853
+ "isSignal": true;
3854
+ };
3855
+ "current": {
3856
+ "alias": "current";
3857
+ "required": false;
3858
+ "isSignal": true;
3859
+ };
3860
+ "active": {
3861
+ "alias": "active";
3862
+ "required": false;
3863
+ "isSignal": true;
3864
+ };
3865
+ }, {
3866
+ "active": "activeChange";
3867
+ }, never, ["*"], true, never>;
3762
3868
  }
3763
3869
  /**
3764
3870
  * ContextMenu — a menu that appears on right-click or long-press
@@ -3769,7 +3875,13 @@ export declare class ContentsNav {
3769
3875
  */
3770
3876
  export declare class ContextMenu {
3771
3877
  readonly label: import("@angular/core").InputSignal<string>;
3878
+ /** Whether the menu is visible. Two-way bindable; Escape sets it to false. */
3879
+ readonly open: import("@angular/core").ModelSignal<boolean>;
3772
3880
  readonly className: import("@angular/core").InputSignal<string>;
3881
+ private readonly menu;
3882
+ constructor();
3883
+ /** Roving focus over the `role="menuitem"` descendants (WAI-ARIA APG menu pattern). */
3884
+ protected onKeydown(event: KeyboardEvent): void;
3773
3885
  static ɵfac: i0.ɵɵFactoryDeclaration<ContextMenu, never>;
3774
3886
  static ɵcmp: i0.ɵɵComponentDeclaration<ContextMenu, "lily-context-menu", never, {
3775
3887
  "label": {
@@ -3777,12 +3889,19 @@ export declare class ContextMenu {
3777
3889
  "required": false;
3778
3890
  "isSignal": true;
3779
3891
  };
3892
+ "open": {
3893
+ "alias": "open";
3894
+ "required": false;
3895
+ "isSignal": true;
3896
+ };
3780
3897
  "className": {
3781
3898
  "alias": "className";
3782
3899
  "required": false;
3783
3900
  "isSignal": true;
3784
3901
  };
3785
- }, {}, never, ["*"], true, never>;
3902
+ }, {
3903
+ "open": "openChange";
3904
+ }, never, ["*"], true, never>;
3786
3905
  }
3787
3906
  /**
3788
3907
  * ContextMenuItem — one item in a context menu
@@ -4661,7 +4780,15 @@ export declare class DeutschlandKrankenversichertennummerView {
4661
4780
  */
4662
4781
  export declare class Dial {
4663
4782
  readonly label: import("@angular/core").InputSignal<string>;
4783
+ /** Current value. Two-way bindable. */
4784
+ readonly value: import("@angular/core").ModelSignal<number>;
4785
+ readonly min: import("@angular/core").InputSignal<number>;
4786
+ readonly max: import("@angular/core").InputSignal<number>;
4787
+ readonly step: import("@angular/core").InputSignal<number>;
4788
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
4664
4789
  readonly className: import("@angular/core").InputSignal<string>;
4790
+ private clamp;
4791
+ protected onKeydown(event: KeyboardEvent): void;
4665
4792
  static ɵfac: i0.ɵɵFactoryDeclaration<Dial, never>;
4666
4793
  static ɵcmp: i0.ɵɵComponentDeclaration<Dial, "lily-dial", never, {
4667
4794
  "label": {
@@ -4669,12 +4796,39 @@ export declare class Dial {
4669
4796
  "required": false;
4670
4797
  "isSignal": true;
4671
4798
  };
4799
+ "value": {
4800
+ "alias": "value";
4801
+ "required": false;
4802
+ "isSignal": true;
4803
+ };
4804
+ "min": {
4805
+ "alias": "min";
4806
+ "required": false;
4807
+ "isSignal": true;
4808
+ };
4809
+ "max": {
4810
+ "alias": "max";
4811
+ "required": false;
4812
+ "isSignal": true;
4813
+ };
4814
+ "step": {
4815
+ "alias": "step";
4816
+ "required": false;
4817
+ "isSignal": true;
4818
+ };
4819
+ "disabled": {
4820
+ "alias": "disabled";
4821
+ "required": false;
4822
+ "isSignal": true;
4823
+ };
4672
4824
  "className": {
4673
4825
  "alias": "className";
4674
4826
  "required": false;
4675
4827
  "isSignal": true;
4676
4828
  };
4677
- }, {}, never, ["*"], true, never>;
4829
+ }, {
4830
+ "value": "valueChange";
4831
+ }, never, ["*"], true, never>;
4678
4832
  }
4679
4833
  /**
4680
4834
  * DialGroup — a group of dial components
@@ -4709,8 +4863,12 @@ export declare class DialGroup {
4709
4863
  */
4710
4864
  export declare class Dialog {
4711
4865
  readonly label: import("@angular/core").InputSignal<string>;
4712
- readonly open: import("@angular/core").InputSignal<boolean>;
4866
+ /** Whether the dialog is visible. Two-way bindable; Escape sets it to false. */
4867
+ readonly open: import("@angular/core").ModelSignal<boolean>;
4868
+ /** Whether the dialog is modal (`aria-modal`). */
4869
+ readonly modal: import("@angular/core").InputSignal<boolean>;
4713
4870
  readonly className: import("@angular/core").InputSignal<string>;
4871
+ protected onKeydown(event: KeyboardEvent): void;
4714
4872
  static ɵfac: i0.ɵɵFactoryDeclaration<Dialog, never>;
4715
4873
  static ɵcmp: i0.ɵɵComponentDeclaration<Dialog, "lily-dialog", never, {
4716
4874
  "label": {
@@ -4723,12 +4881,19 @@ export declare class Dialog {
4723
4881
  "required": false;
4724
4882
  "isSignal": true;
4725
4883
  };
4884
+ "modal": {
4885
+ "alias": "modal";
4886
+ "required": false;
4887
+ "isSignal": true;
4888
+ };
4726
4889
  "className": {
4727
4890
  "alias": "className";
4728
4891
  "required": false;
4729
4892
  "isSignal": true;
4730
4893
  };
4731
- }, {}, never, ["*"], true, never>;
4894
+ }, {
4895
+ "open": "openChange";
4896
+ }, never, ["*"], true, never>;
4732
4897
  }
4733
4898
  /**
4734
4899
  * Diff — a side-by-side comparison of two items
@@ -4992,7 +5157,12 @@ export declare class Draft {
4992
5157
  */
4993
5158
  export declare class Drawer {
4994
5159
  readonly label: import("@angular/core").InputSignal<string>;
5160
+ /** Whether the panel is shown. Two-way bindable; Escape sets it to false. */
5161
+ readonly open: import("@angular/core").ModelSignal<boolean>;
5162
+ /** Edge the panel attaches to; exposed as `data-side`. */
5163
+ readonly side: import("@angular/core").InputSignal<"left" | "right" | "top" | "bottom">;
4995
5164
  readonly className: import("@angular/core").InputSignal<string>;
5165
+ protected onKeydown(event: KeyboardEvent): void;
4996
5166
  static ɵfac: i0.ɵɵFactoryDeclaration<Drawer, never>;
4997
5167
  static ɵcmp: i0.ɵɵComponentDeclaration<Drawer, "lily-drawer", never, {
4998
5168
  "label": {
@@ -5000,12 +5170,24 @@ export declare class Drawer {
5000
5170
  "required": false;
5001
5171
  "isSignal": true;
5002
5172
  };
5173
+ "open": {
5174
+ "alias": "open";
5175
+ "required": false;
5176
+ "isSignal": true;
5177
+ };
5178
+ "side": {
5179
+ "alias": "side";
5180
+ "required": false;
5181
+ "isSignal": true;
5182
+ };
5003
5183
  "className": {
5004
5184
  "alias": "className";
5005
5185
  "required": false;
5006
5186
  "isSignal": true;
5007
5187
  };
5008
- }, {}, never, ["*"], true, never>;
5188
+ }, {
5189
+ "open": "openChange";
5190
+ }, never, ["*"], true, never>;
5009
5191
  }
5010
5192
  /**
5011
5193
  * DropdownMenu — a menu that opens below a trigger button
@@ -5016,7 +5198,13 @@ export declare class Drawer {
5016
5198
  */
5017
5199
  export declare class DropdownMenu {
5018
5200
  readonly label: import("@angular/core").InputSignal<string>;
5201
+ /** Whether the menu is open. Two-way bindable; Escape sets it to false. */
5202
+ readonly open: import("@angular/core").ModelSignal<boolean>;
5019
5203
  readonly className: import("@angular/core").InputSignal<string>;
5204
+ private readonly menu;
5205
+ constructor();
5206
+ /** Roving focus over the `role="menuitem"` descendants (WAI-ARIA APG menu pattern). */
5207
+ protected onKeydown(event: KeyboardEvent): void;
5020
5208
  static ɵfac: i0.ɵɵFactoryDeclaration<DropdownMenu, never>;
5021
5209
  static ɵcmp: i0.ɵɵComponentDeclaration<DropdownMenu, "lily-dropdown-menu", never, {
5022
5210
  "label": {
@@ -5024,12 +5212,19 @@ export declare class DropdownMenu {
5024
5212
  "required": false;
5025
5213
  "isSignal": true;
5026
5214
  };
5215
+ "open": {
5216
+ "alias": "open";
5217
+ "required": false;
5218
+ "isSignal": true;
5219
+ };
5027
5220
  "className": {
5028
5221
  "alias": "className";
5029
5222
  "required": false;
5030
5223
  "isSignal": true;
5031
5224
  };
5032
- }, {}, never, ["*"], true, never>;
5225
+ }, {
5226
+ "open": "openChange";
5227
+ }, never, ["*"], true, never>;
5033
5228
  }
5034
5229
  /**
5035
5230
  * Editable — an inline-editable text element that toggles between view and edit modes
@@ -5040,7 +5235,16 @@ export declare class DropdownMenu {
5040
5235
  */
5041
5236
  export declare class Editable {
5042
5237
  readonly label: import("@angular/core").InputSignal<string>;
5238
+ /** The committed value. Two-way bindable. */
5239
+ readonly value: import("@angular/core").ModelSignal<string>;
5240
+ /** Whether the text field is showing. Two-way bindable. */
5241
+ readonly editing: import("@angular/core").ModelSignal<boolean>;
5242
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
5043
5243
  readonly className: import("@angular/core").InputSignal<string>;
5244
+ protected readonly draft: import("@angular/core").WritableSignal<string>;
5245
+ protected startEditing(): void;
5246
+ protected onDisplayKeydown(event: KeyboardEvent): void;
5247
+ protected onInputKeydown(event: KeyboardEvent): void;
5044
5248
  static ɵfac: i0.ɵɵFactoryDeclaration<Editable, never>;
5045
5249
  static ɵcmp: i0.ɵɵComponentDeclaration<Editable, "lily-editable", never, {
5046
5250
  "label": {
@@ -5048,12 +5252,30 @@ export declare class Editable {
5048
5252
  "required": false;
5049
5253
  "isSignal": true;
5050
5254
  };
5255
+ "value": {
5256
+ "alias": "value";
5257
+ "required": false;
5258
+ "isSignal": true;
5259
+ };
5260
+ "editing": {
5261
+ "alias": "editing";
5262
+ "required": false;
5263
+ "isSignal": true;
5264
+ };
5265
+ "disabled": {
5266
+ "alias": "disabled";
5267
+ "required": false;
5268
+ "isSignal": true;
5269
+ };
5051
5270
  "className": {
5052
5271
  "alias": "className";
5053
5272
  "required": false;
5054
5273
  "isSignal": true;
5055
5274
  };
5056
- }, {}, never, ["*"], true, never>;
5275
+ }, {
5276
+ "value": "valueChange";
5277
+ "editing": "editingChange";
5278
+ }, never, never, true, never>;
5057
5279
  }
5058
5280
  /**
5059
5281
  * EditableForm — a form wrapper for inline editing of content
@@ -5064,7 +5286,15 @@ export declare class Editable {
5064
5286
  */
5065
5287
  export declare class EditableForm {
5066
5288
  readonly label: import("@angular/core").InputSignal<string>;
5289
+ /** Whether the form is showing. Two-way bindable; submit and Escape set it to false. */
5290
+ readonly editing: import("@angular/core").ModelSignal<boolean>;
5067
5291
  readonly className: import("@angular/core").InputSignal<string>;
5292
+ /** Emitted after the form is submitted (the native submit is prevented). */
5293
+ readonly submitted: import("@angular/core").OutputEmitterRef<SubmitEvent>;
5294
+ /** Emitted when Escape cancels editing. */
5295
+ readonly cancelled: import("@angular/core").OutputEmitterRef<void>;
5296
+ protected onSubmit(event: Event): void;
5297
+ protected onKeydown(event: KeyboardEvent): void;
5068
5298
  static ɵfac: i0.ɵɵFactoryDeclaration<EditableForm, never>;
5069
5299
  static ɵcmp: i0.ɵɵComponentDeclaration<EditableForm, "lily-editable-form", never, {
5070
5300
  "label": {
@@ -5072,12 +5302,21 @@ export declare class EditableForm {
5072
5302
  "required": false;
5073
5303
  "isSignal": true;
5074
5304
  };
5305
+ "editing": {
5306
+ "alias": "editing";
5307
+ "required": false;
5308
+ "isSignal": true;
5309
+ };
5075
5310
  "className": {
5076
5311
  "alias": "className";
5077
5312
  "required": false;
5078
5313
  "isSignal": true;
5079
5314
  };
5080
- }, {}, never, ["*"], true, never>;
5315
+ }, {
5316
+ "editing": "editingChange";
5317
+ "submitted": "submitted";
5318
+ "cancelled": "cancelled";
5319
+ }, never, ["*"], true, never>;
5081
5320
  }
5082
5321
  /**
5083
5322
  * EestiIsikukoodInput — an input for entering Estonia's Isikukood (IK)
@@ -7336,6 +7575,60 @@ export declare class HeatmapChart {
7336
7575
  };
7337
7576
  }, {}, never, ["*", "[dataTable]"], true, never>;
7338
7577
  }
7578
+ /**
7579
+ * HeatmapChartWithYearOfDays — a headless wrapper for a grid chart where cell colour encodes the value.
7580
+ *
7581
+ * Mirrors the Svelte canonical: the consumer supplies the inline <svg> as
7582
+ * projected content; nothing is drawn here. The graphic is a role="img"
7583
+ * wrapper named by `label` (`describedBy` is its aria-describedby). An
7584
+ * element projected with the `dataTable` attribute (`<table dataTable>`)
7585
+ * is rendered in `.heatmap-chart-with-year-of-days-data-table`, a SIBLING of the image wrapper:
7586
+ * role="img" makes descendants presentational, so a table inside it would
7587
+ * be invisible to assistive technology.
7588
+ * Keyboard: none on the graphic; the table follows native table behaviour.
7589
+ * Deviations from Svelte: no rest-props spread (Angular cannot spread onto
7590
+ * an inner element); the data-table wrapper is always rendered (Angular
7591
+ * cannot detect projected content), empty when nothing is projected.
7592
+ */
7593
+ export declare class HeatmapChartWithYearOfDays {
7594
+ /** Accessible name for the chart. */
7595
+ readonly label: import("@angular/core").InputSignal<string>;
7596
+ /** The calendar year shown (data-year). */
7597
+ readonly year: import("@angular/core").InputSignal<number>;
7598
+ /** First weekday row: 0 = Sunday … 6 = Saturday (data-week-start). No default: it is locale-dependent. */
7599
+ readonly weekStart: import("@angular/core").InputSignal<number>;
7600
+ /** Id of a description (aria-describedby on the image wrapper). */
7601
+ readonly describedBy: import("@angular/core").InputSignal<string>;
7602
+ readonly className: import("@angular/core").InputSignal<string>;
7603
+ static ɵfac: i0.ɵɵFactoryDeclaration<HeatmapChartWithYearOfDays, never>;
7604
+ static ɵcmp: i0.ɵɵComponentDeclaration<HeatmapChartWithYearOfDays, "lily-heatmap-chart-with-year-of-days", never, {
7605
+ "label": {
7606
+ "alias": "label";
7607
+ "required": true;
7608
+ "isSignal": true;
7609
+ };
7610
+ "year": {
7611
+ "alias": "year";
7612
+ "required": true;
7613
+ "isSignal": true;
7614
+ };
7615
+ "weekStart": {
7616
+ "alias": "weekStart";
7617
+ "required": true;
7618
+ "isSignal": true;
7619
+ };
7620
+ "describedBy": {
7621
+ "alias": "describedBy";
7622
+ "required": false;
7623
+ "isSignal": true;
7624
+ };
7625
+ "className": {
7626
+ "alias": "className";
7627
+ "required": false;
7628
+ "isSignal": true;
7629
+ };
7630
+ }, {}, never, ["*", "[dataTable]"], true, never>;
7631
+ }
7339
7632
  /**
7340
7633
  * Hero — a large box or image with a title and description
7341
7634
  *
@@ -7466,7 +7759,10 @@ export declare class Hint {
7466
7759
  */
7467
7760
  export declare class HorizontalScroller {
7468
7761
  readonly label: import("@angular/core").InputSignal<string>;
7762
+ /** Pixels scrolled by ArrowLeft / ArrowRight. */
7763
+ readonly step: import("@angular/core").InputSignal<number>;
7469
7764
  readonly className: import("@angular/core").InputSignal<string>;
7765
+ protected onKeydown(event: KeyboardEvent): void;
7470
7766
  static ɵfac: i0.ɵɵFactoryDeclaration<HorizontalScroller, never>;
7471
7767
  static ɵcmp: i0.ɵɵComponentDeclaration<HorizontalScroller, "lily-horizontal-scroller", never, {
7472
7768
  "label": {
@@ -7474,6 +7770,11 @@ export declare class HorizontalScroller {
7474
7770
  "required": false;
7475
7771
  "isSignal": true;
7476
7772
  };
7773
+ "step": {
7774
+ "alias": "step";
7775
+ "required": false;
7776
+ "isSignal": true;
7777
+ };
7477
7778
  "className": {
7478
7779
  "alias": "className";
7479
7780
  "required": false;
@@ -10023,6 +10324,8 @@ export declare class MentionsInput {
10023
10324
  export declare class Menu {
10024
10325
  readonly label: import("@angular/core").InputSignal<string>;
10025
10326
  readonly className: import("@angular/core").InputSignal<string>;
10327
+ /** Roving focus over the `role="menuitem"` descendants (WAI-ARIA APG menu pattern). */
10328
+ protected onKeydown(event: KeyboardEvent): void;
10026
10329
  static ɵfac: i0.ɵɵFactoryDeclaration<Menu, never>;
10027
10330
  static ɵcmp: i0.ɵɵComponentDeclaration<Menu, "lily-menu", never, {
10028
10331
  "label": {
@@ -10047,6 +10350,8 @@ export declare class Menu {
10047
10350
  export declare class MenuBar {
10048
10351
  readonly label: import("@angular/core").InputSignal<string>;
10049
10352
  readonly className: import("@angular/core").InputSignal<string>;
10353
+ /** Roving focus left/right over the `role="menuitem"` descendants. */
10354
+ protected onKeydown(event: KeyboardEvent): void;
10050
10355
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuBar, never>;
10051
10356
  static ɵcmp: i0.ɵɵComponentDeclaration<MenuBar, "lily-menu-bar", never, {
10052
10357
  "label": {
@@ -10259,6 +10564,89 @@ export declare class MexicoClaveUnicaDeRegistroDePoblacionView {
10259
10564
  };
10260
10565
  }, {}, never, never, true, never>;
10261
10566
  }
10567
+ /**
10568
+ * Middle truncation: shorten a string to fit a width by cutting out the middle, keeping the start and the end ("report-fi…q3.pdf").
10569
+ * Pure and framework-neutral: the caller supplies `measure`, so the module reads no DOM and is tested without a browser.
10570
+ *
10571
+ * Works on grapheme clusters (Intl.Segmenter, falling back to code points), so it never splits a surrogate pair, a combining
10572
+ * sequence or an emoji. The width search is binary, so it measures O(log n) candidate strings.
10573
+ *
10574
+ * Strategies:
10575
+ * "even" the start and the end share what fits, the end taking the extra cluster when the count is odd.
10576
+ * "fixed-end" exactly `end` clusters are kept at the end; the start takes all the remaining room.
10577
+ * "min-end" an even split, but at least `end` clusters are kept at the end (a file extension, a domain suffix).
10578
+ */
10579
+ export type TruncationStrategy = "even" | "fixed-end" | "min-end";
10580
+ export interface TruncateMiddleOptions {
10581
+ /** The ellipsis string. Required: the module has no default text (internationalisation). */
10582
+ ellipsis: string;
10583
+ /** The width available to the whole result, in the unit `measure` returns. */
10584
+ maxWidth: number;
10585
+ /** Width of a string in the same unit as `maxWidth`. */
10586
+ measure: (text: string) => number;
10587
+ strategy?: TruncationStrategy;
10588
+ /** Clusters kept at the end for "fixed-end" and "min-end". Ignored by "even". */
10589
+ end?: number;
10590
+ }
10591
+ /** Split into user-perceived characters. */
10592
+ declare function splitGraphemes(text: string): string[];
10593
+ /** The text shortened to fit `maxWidth`, or unchanged when it already fits. */
10594
+ declare function truncateMiddle(text: string, options: TruncateMiddleOptions): string;
10595
+ /**
10596
+ * MiddleTruncation — a string shortened in the middle to fit its width, keeping the start and the end.
10597
+ *
10598
+ * Mirrors the Svelte canonical: the width is measured in the browser (canvas text metrics in the element's own font)
10599
+ * and re-measured when the container resizes; until then, and on the server, the full text is shown. The shortened string
10600
+ * is aria-hidden and the whole text sits in `.middle-truncation-full`, which the consumer visually hides, so assistive
10601
+ * technology, find-in-page and copy get the real text.
10602
+ *
10603
+ * Inputs: `text` (required), `ellipsis` (required, no default), `strategy` ("even" | "fixed-end" | "min-end"), `end`, `className`.
10604
+ * Keyboard: none.
10605
+ * Deviation from Svelte: no rest-props spread (Angular cannot spread onto an inner element).
10606
+ */
10607
+ export declare class MiddleTruncation {
10608
+ readonly className: import("@angular/core").InputSignal<string>;
10609
+ /** The full text. */
10610
+ readonly text: import("@angular/core").InputSignal<string>;
10611
+ /** The cut marker; no default. */
10612
+ readonly ellipsis: import("@angular/core").InputSignal<string>;
10613
+ /** How the room is shared between start and end. */
10614
+ readonly strategy: import("@angular/core").InputSignal<TruncationStrategy>;
10615
+ /** Characters kept at the end for "fixed-end" and "min-end". */
10616
+ readonly end: import("@angular/core").InputSignal<number | undefined>;
10617
+ private readonly root;
10618
+ protected readonly shown: import("@angular/core").WritableSignal<string | null>;
10619
+ private context;
10620
+ constructor();
10621
+ static ɵfac: i0.ɵɵFactoryDeclaration<MiddleTruncation, never>;
10622
+ static ɵcmp: i0.ɵɵComponentDeclaration<MiddleTruncation, "lily-middle-truncation", never, {
10623
+ "className": {
10624
+ "alias": "className";
10625
+ "required": false;
10626
+ "isSignal": true;
10627
+ };
10628
+ "text": {
10629
+ "alias": "text";
10630
+ "required": true;
10631
+ "isSignal": true;
10632
+ };
10633
+ "ellipsis": {
10634
+ "alias": "ellipsis";
10635
+ "required": true;
10636
+ "isSignal": true;
10637
+ };
10638
+ "strategy": {
10639
+ "alias": "strategy";
10640
+ "required": false;
10641
+ "isSignal": true;
10642
+ };
10643
+ "end": {
10644
+ "alias": "end";
10645
+ "required": false;
10646
+ "isSignal": true;
10647
+ };
10648
+ }, {}, never, never, true, never>;
10649
+ }
10262
10650
  /**
10263
10651
  * MisrAlRaqmAlQawmiInput — an input for entering Egypt's الرقم القومي (National Number)
10264
10652
  *
@@ -12055,9 +12443,25 @@ export declare class PilipinasPhilhealthIdentificationNumberView {
12055
12443
  * kebab-case class hook `pin-input-div` and the consumer-provided `className`.
12056
12444
  * Ships zero CSS; the consumer styles via the class hook.
12057
12445
  */
12058
- export declare class PinInputDiv {
12446
+ export declare class PinInputDiv implements OnInit {
12059
12447
  readonly label: import("@angular/core").InputSignal<string>;
12448
+ readonly length: import("@angular/core").InputSignal<number>;
12449
+ /** Accessible name of one box, e.g. `(n, total) => ...`. Falls back to `label`. */
12450
+ readonly digitLabel: import("@angular/core").InputSignal<((position: number, length: number) => string) | undefined>;
12451
+ /** The digits entered so far, as one string. Two-way bindable. */
12452
+ readonly value: import("@angular/core").ModelSignal<string>;
12453
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
12060
12454
  readonly className: import("@angular/core").InputSignal<string>;
12455
+ protected readonly digits: import("@angular/core").WritableSignal<string[]>;
12456
+ protected readonly indexes: import("@angular/core").Signal<number[]>;
12457
+ private readonly inputs;
12458
+ private initialDigits;
12459
+ private readonly host;
12460
+ constructor();
12461
+ ngOnInit(): void;
12462
+ protected digitName(index: number): string | null;
12463
+ protected onInput(index: number, event: Event): void;
12464
+ protected onKeydown(index: number, event: KeyboardEvent): void;
12061
12465
  static ɵfac: i0.ɵɵFactoryDeclaration<PinInputDiv, never>;
12062
12466
  static ɵcmp: i0.ɵɵComponentDeclaration<PinInputDiv, "lily-pin-input-div", never, {
12063
12467
  "label": {
@@ -12065,12 +12469,34 @@ export declare class PinInputDiv {
12065
12469
  "required": false;
12066
12470
  "isSignal": true;
12067
12471
  };
12472
+ "length": {
12473
+ "alias": "length";
12474
+ "required": false;
12475
+ "isSignal": true;
12476
+ };
12477
+ "digitLabel": {
12478
+ "alias": "digitLabel";
12479
+ "required": false;
12480
+ "isSignal": true;
12481
+ };
12482
+ "value": {
12483
+ "alias": "value";
12484
+ "required": false;
12485
+ "isSignal": true;
12486
+ };
12487
+ "disabled": {
12488
+ "alias": "disabled";
12489
+ "required": false;
12490
+ "isSignal": true;
12491
+ };
12068
12492
  "className": {
12069
12493
  "alias": "className";
12070
12494
  "required": false;
12071
12495
  "isSignal": true;
12072
12496
  };
12073
- }, {}, never, ["*"], true, never>;
12497
+ }, {
12498
+ "value": "valueChange";
12499
+ }, never, never, true, never>;
12074
12500
  }
12075
12501
  /**
12076
12502
  * Place — a place component that contains other place-related information
@@ -14105,6 +14531,12 @@ export declare class SegmentGroup {
14105
14531
  export declare class SegmentGroupItem {
14106
14532
  readonly label: import("@angular/core").InputSignal<string>;
14107
14533
  readonly className: import("@angular/core").InputSignal<string>;
14534
+ /** Whether this segment is selected (`aria-checked`, and the roving tab stop). */
14535
+ readonly checked: import("@angular/core").InputSignal<boolean>;
14536
+ /** Value associated with this segment, exposed as `data-value`. */
14537
+ readonly value: import("@angular/core").InputSignal<string>;
14538
+ /** Whether this segment is disabled. */
14539
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
14108
14540
  static ɵfac: i0.ɵɵFactoryDeclaration<SegmentGroupItem, never>;
14109
14541
  static ɵcmp: i0.ɵɵComponentDeclaration<SegmentGroupItem, "lily-segment-group-item", never, {
14110
14542
  "label": {
@@ -14117,6 +14549,21 @@ export declare class SegmentGroupItem {
14117
14549
  "required": false;
14118
14550
  "isSignal": true;
14119
14551
  };
14552
+ "checked": {
14553
+ "alias": "checked";
14554
+ "required": false;
14555
+ "isSignal": true;
14556
+ };
14557
+ "value": {
14558
+ "alias": "value";
14559
+ "required": false;
14560
+ "isSignal": true;
14561
+ };
14562
+ "disabled": {
14563
+ "alias": "disabled";
14564
+ "required": false;
14565
+ "isSignal": true;
14566
+ };
14120
14567
  }, {}, never, ["*"], true, never>;
14121
14568
  }
14122
14569
  /**
@@ -14232,7 +14679,12 @@ export declare class SharePage {
14232
14679
  */
14233
14680
  export declare class Sheet {
14234
14681
  readonly label: import("@angular/core").InputSignal<string>;
14682
+ /** Whether the panel is shown. Two-way bindable; Escape sets it to false. */
14683
+ readonly open: import("@angular/core").ModelSignal<boolean>;
14684
+ /** Edge the panel attaches to; exposed as `data-side`. */
14685
+ readonly side: import("@angular/core").InputSignal<"left" | "right" | "top" | "bottom">;
14235
14686
  readonly className: import("@angular/core").InputSignal<string>;
14687
+ protected onKeydown(event: KeyboardEvent): void;
14236
14688
  static ɵfac: i0.ɵɵFactoryDeclaration<Sheet, never>;
14237
14689
  static ɵcmp: i0.ɵɵComponentDeclaration<Sheet, "lily-sheet", never, {
14238
14690
  "label": {
@@ -14240,12 +14692,24 @@ export declare class Sheet {
14240
14692
  "required": false;
14241
14693
  "isSignal": true;
14242
14694
  };
14695
+ "open": {
14696
+ "alias": "open";
14697
+ "required": false;
14698
+ "isSignal": true;
14699
+ };
14700
+ "side": {
14701
+ "alias": "side";
14702
+ "required": false;
14703
+ "isSignal": true;
14704
+ };
14243
14705
  "className": {
14244
14706
  "alias": "className";
14245
14707
  "required": false;
14246
14708
  "isSignal": true;
14247
14709
  };
14248
- }, {}, never, ["*"], true, never>;
14710
+ }, {
14711
+ "open": "openChange";
14712
+ }, never, ["*"], true, never>;
14249
14713
  }
14250
14714
  /**
14251
14715
  * ShowMore — a content region clamped to a shorter height with a button that reveals the rest
@@ -14485,7 +14949,10 @@ export declare class SkipLink {
14485
14949
  */
14486
14950
  export declare class SlideOutDrawer {
14487
14951
  readonly label: import("@angular/core").InputSignal<string>;
14952
+ /** Whether the panel is shown. Two-way bindable; Escape sets it to false. */
14953
+ readonly open: import("@angular/core").ModelSignal<boolean>;
14488
14954
  readonly className: import("@angular/core").InputSignal<string>;
14955
+ protected onKeydown(event: KeyboardEvent): void;
14489
14956
  static ɵfac: i0.ɵɵFactoryDeclaration<SlideOutDrawer, never>;
14490
14957
  static ɵcmp: i0.ɵɵComponentDeclaration<SlideOutDrawer, "lily-slide-out-drawer", never, {
14491
14958
  "label": {
@@ -14493,12 +14960,19 @@ export declare class SlideOutDrawer {
14493
14960
  "required": false;
14494
14961
  "isSignal": true;
14495
14962
  };
14963
+ "open": {
14964
+ "alias": "open";
14965
+ "required": false;
14966
+ "isSignal": true;
14967
+ };
14496
14968
  "className": {
14497
14969
  "alias": "className";
14498
14970
  "required": false;
14499
14971
  "isSignal": true;
14500
14972
  };
14501
- }, {}, never, ["*"], true, never>;
14973
+ }, {
14974
+ "open": "openChange";
14975
+ }, never, ["*"], true, never>;
14502
14976
  }
14503
14977
  /**
14504
14978
  * Slider — a draggable control for selecting a value along a track
@@ -15564,10 +16038,16 @@ export declare class SverigePersonnummerView {
15564
16038
  * Ships zero CSS; the consumer styles via the class hook.
15565
16039
  */
15566
16040
  export declare class SwitchButton {
15567
- /** Optional aria-label override. */
15568
16041
  readonly label: import("@angular/core").InputSignal<string>;
15569
- /** Extra CSS classes appended to the base class. */
16042
+ /** Whether the control is on. Two-way bindable. */
16043
+ readonly checked: import("@angular/core").ModelSignal<boolean>;
16044
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
15570
16045
  readonly className: import("@angular/core").InputSignal<string>;
16046
+ /**
16047
+ * Space and Enter activate a native <button> through `click`, so no key handler is
16048
+ * needed (and none can double-toggle).
16049
+ */
16050
+ protected toggle(): void;
15571
16051
  static ɵfac: i0.ɵɵFactoryDeclaration<SwitchButton, never>;
15572
16052
  static ɵcmp: i0.ɵɵComponentDeclaration<SwitchButton, "lily-switch-button", never, {
15573
16053
  "label": {
@@ -15575,12 +16055,24 @@ export declare class SwitchButton {
15575
16055
  "required": false;
15576
16056
  "isSignal": true;
15577
16057
  };
16058
+ "checked": {
16059
+ "alias": "checked";
16060
+ "required": false;
16061
+ "isSignal": true;
16062
+ };
16063
+ "disabled": {
16064
+ "alias": "disabled";
16065
+ "required": false;
16066
+ "isSignal": true;
16067
+ };
15578
16068
  "className": {
15579
16069
  "alias": "className";
15580
16070
  "required": false;
15581
16071
  "isSignal": true;
15582
16072
  };
15583
- }, {}, never, ["*"], true, never>;
16073
+ }, {
16074
+ "checked": "checkedChange";
16075
+ }, never, ["*"], true, never>;
15584
16076
  }
15585
16077
  /**
15586
16078
  * TabBar — a group of tabs for switching between content panels
@@ -15592,6 +16084,8 @@ export declare class SwitchButton {
15592
16084
  export declare class TabBar {
15593
16085
  readonly label: import("@angular/core").InputSignal<string>;
15594
16086
  readonly className: import("@angular/core").InputSignal<string>;
16087
+ /** Roving focus over the `role="tab"` descendants (left/right, wrapping; Home/End). */
16088
+ protected onKeydown(event: KeyboardEvent): void;
15595
16089
  static ɵfac: i0.ɵɵFactoryDeclaration<TabBar, never>;
15596
16090
  static ɵcmp: i0.ɵɵComponentDeclaration<TabBar, "lily-tab-bar", never, {
15597
16091
  "label": {
@@ -15616,6 +16110,10 @@ export declare class TabBar {
15616
16110
  export declare class TabBarButton {
15617
16111
  /** Optional aria-label override. */
15618
16112
  readonly label: import("@angular/core").InputSignal<string>;
16113
+ /** Whether this tab is the selected one (roving tabindex: only it is tabbable). */
16114
+ readonly selected: import("@angular/core").InputSignal<boolean>;
16115
+ /** Id of the tab panel this tab controls. */
16116
+ readonly controls: import("@angular/core").InputSignal<string>;
15619
16117
  /** Extra CSS classes appended to the base class. */
15620
16118
  readonly className: import("@angular/core").InputSignal<string>;
15621
16119
  static ɵfac: i0.ɵɵFactoryDeclaration<TabBarButton, never>;
@@ -15625,6 +16123,16 @@ export declare class TabBarButton {
15625
16123
  "required": false;
15626
16124
  "isSignal": true;
15627
16125
  };
16126
+ "selected": {
16127
+ "alias": "selected";
16128
+ "required": false;
16129
+ "isSignal": true;
16130
+ };
16131
+ "controls": {
16132
+ "alias": "controls";
16133
+ "required": false;
16134
+ "isSignal": true;
16135
+ };
15628
16136
  "className": {
15629
16137
  "alias": "className";
15630
16138
  "required": false;
@@ -15834,6 +16342,8 @@ export declare class TableTH {
15834
16342
  export declare class Tag {
15835
16343
  readonly label: import("@angular/core").InputSignal<string>;
15836
16344
  readonly className: import("@angular/core").InputSignal<string>;
16345
+ /** Announce changes: a role="status" live region. Off by default. */
16346
+ readonly live: import("@angular/core").InputSignal<boolean>;
15837
16347
  static ɵfac: i0.ɵɵFactoryDeclaration<Tag, never>;
15838
16348
  static ɵcmp: i0.ɵɵComponentDeclaration<Tag, "lily-tag", never, {
15839
16349
  "label": {
@@ -15846,7 +16356,12 @@ export declare class Tag {
15846
16356
  "required": false;
15847
16357
  "isSignal": true;
15848
16358
  };
15849
- }, {}, never, ["*"], true, never>;
16359
+ "live": {
16360
+ "alias": "live";
16361
+ "required": false;
16362
+ "isSignal": true;
16363
+ };
16364
+ }, {}, never, ["*", "*"], true, never>;
15850
16365
  }
15851
16366
  /**
15852
16367
  * TagGroup — a group of tag elements
@@ -15931,6 +16446,8 @@ export declare class TagInput {
15931
16446
  export declare class TaskBar {
15932
16447
  readonly label: import("@angular/core").InputSignal<string>;
15933
16448
  readonly className: import("@angular/core").InputSignal<string>;
16449
+ /** Roving focus over buttons and tabindex descendants (left/right, wrapping; Home/End). */
16450
+ protected onKeydown(event: KeyboardEvent): void;
15934
16451
  static ɵfac: i0.ɵɵFactoryDeclaration<TaskBar, never>;
15935
16452
  static ɵcmp: i0.ɵɵComponentDeclaration<TaskBar, "lily-task-bar", never, {
15936
16453
  "label": {
@@ -16433,6 +16950,12 @@ export declare class Tile {
16433
16950
  export declare class TileMap {
16434
16951
  readonly label: import("@angular/core").InputSignal<string>;
16435
16952
  readonly className: import("@angular/core").InputSignal<string>;
16953
+ /**
16954
+ * Arrow keys move focus between `[data-tile]` descendants (left/right by order, up/down to the
16955
+ * nearest tile in the row above or below); Enter / Space fire a bubbling `tile-activate` event
16956
+ * on the focused tile; Escape blurs it.
16957
+ */
16958
+ protected onKeydown(event: KeyboardEvent): void;
16436
16959
  static ɵfac: i0.ɵɵFactoryDeclaration<TileMap, never>;
16437
16960
  static ɵcmp: i0.ɵɵComponentDeclaration<TileMap, "lily-tile-map", never, {
16438
16961
  "label": {
@@ -16704,10 +17227,16 @@ export declare class Toast {
16704
17227
  * Ships zero CSS; the consumer styles via the class hook.
16705
17228
  */
16706
17229
  export declare class ToggleButton {
16707
- /** Optional aria-label override. */
16708
17230
  readonly label: import("@angular/core").InputSignal<string>;
16709
- /** Extra CSS classes appended to the base class. */
17231
+ /** Whether the control is on. Two-way bindable. */
17232
+ readonly pressed: import("@angular/core").ModelSignal<boolean>;
17233
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
16710
17234
  readonly className: import("@angular/core").InputSignal<string>;
17235
+ /**
17236
+ * Space and Enter activate a native <button> through `click`, so no key handler is
17237
+ * needed (and none can double-toggle).
17238
+ */
17239
+ protected toggle(): void;
16711
17240
  static ɵfac: i0.ɵɵFactoryDeclaration<ToggleButton, never>;
16712
17241
  static ɵcmp: i0.ɵɵComponentDeclaration<ToggleButton, "lily-toggle-button", never, {
16713
17242
  "label": {
@@ -16715,12 +17244,24 @@ export declare class ToggleButton {
16715
17244
  "required": false;
16716
17245
  "isSignal": true;
16717
17246
  };
17247
+ "pressed": {
17248
+ "alias": "pressed";
17249
+ "required": false;
17250
+ "isSignal": true;
17251
+ };
17252
+ "disabled": {
17253
+ "alias": "disabled";
17254
+ "required": false;
17255
+ "isSignal": true;
17256
+ };
16718
17257
  "className": {
16719
17258
  "alias": "className";
16720
17259
  "required": false;
16721
17260
  "isSignal": true;
16722
17261
  };
16723
- }, {}, never, ["*"], true, never>;
17262
+ }, {
17263
+ "pressed": "pressedChange";
17264
+ }, never, ["*"], true, never>;
16724
17265
  }
16725
17266
  /**
16726
17267
  * ToggleGroup — a group of toggle buttons for selecting options
@@ -16756,6 +17297,8 @@ export declare class ToggleGroup {
16756
17297
  export declare class ToolBar {
16757
17298
  readonly label: import("@angular/core").InputSignal<string>;
16758
17299
  readonly className: import("@angular/core").InputSignal<string>;
17300
+ /** Roving focus over buttons and tabindex descendants (left/right, wrapping; Home/End). */
17301
+ protected onKeydown(event: KeyboardEvent): void;
16759
17302
  static ɵfac: i0.ɵɵFactoryDeclaration<ToolBar, never>;
16760
17303
  static ɵcmp: i0.ɵɵComponentDeclaration<ToolBar, "lily-tool-bar", never, {
16761
17304
  "label": {
@@ -16976,7 +17519,10 @@ export declare class Tooltip {
16976
17519
  */
16977
17520
  export declare class Tour {
16978
17521
  readonly label: import("@angular/core").InputSignal<string>;
17522
+ /** Whether the tour is showing. Two-way bindable; Escape sets it to false. */
17523
+ readonly active: import("@angular/core").ModelSignal<boolean>;
16979
17524
  readonly className: import("@angular/core").InputSignal<string>;
17525
+ protected onKeydown(event: KeyboardEvent): void;
16980
17526
  static ɵfac: i0.ɵɵFactoryDeclaration<Tour, never>;
16981
17527
  static ɵcmp: i0.ɵɵComponentDeclaration<Tour, "lily-tour", never, {
16982
17528
  "label": {
@@ -16984,12 +17530,19 @@ export declare class Tour {
16984
17530
  "required": false;
16985
17531
  "isSignal": true;
16986
17532
  };
17533
+ "active": {
17534
+ "alias": "active";
17535
+ "required": false;
17536
+ "isSignal": true;
17537
+ };
16987
17538
  "className": {
16988
17539
  "alias": "className";
16989
17540
  "required": false;
16990
17541
  "isSignal": true;
16991
17542
  };
16992
- }, {}, never, ["*"], true, never>;
17543
+ }, {
17544
+ "active": "activeChange";
17545
+ }, never, ["*"], true, never>;
16993
17546
  }
16994
17547
  /**
16995
17548
  * TourList — an ordered list of tour guide steps
@@ -17000,7 +17553,10 @@ export declare class Tour {
17000
17553
  */
17001
17554
  export declare class TourList {
17002
17555
  readonly label: import("@angular/core").InputSignal<string>;
17556
+ /** Whether the tour is showing. Two-way bindable; Escape sets it to false. */
17557
+ readonly active: import("@angular/core").ModelSignal<boolean>;
17003
17558
  readonly className: import("@angular/core").InputSignal<string>;
17559
+ protected onKeydown(event: KeyboardEvent): void;
17004
17560
  static ɵfac: i0.ɵɵFactoryDeclaration<TourList, never>;
17005
17561
  static ɵcmp: i0.ɵɵComponentDeclaration<TourList, "lily-tour-list", never, {
17006
17562
  "label": {
@@ -17008,12 +17564,19 @@ export declare class TourList {
17008
17564
  "required": false;
17009
17565
  "isSignal": true;
17010
17566
  };
17567
+ "active": {
17568
+ "alias": "active";
17569
+ "required": false;
17570
+ "isSignal": true;
17571
+ };
17011
17572
  "className": {
17012
17573
  "alias": "className";
17013
17574
  "required": false;
17014
17575
  "isSignal": true;
17015
17576
  };
17016
- }, {}, never, ["*"], true, never>;
17577
+ }, {
17578
+ "active": "activeChange";
17579
+ }, never, ["*"], true, never>;
17017
17580
  }
17018
17581
  /**
17019
17582
  * TourListItem — one step in a tour guide list
@@ -17102,6 +17665,8 @@ export declare class TreeLink {
17102
17665
  export declare class TreeList {
17103
17666
  readonly label: import("@angular/core").InputSignal<string>;
17104
17667
  readonly className: import("@angular/core").InputSignal<string>;
17668
+ /** Focus moves over the `role="treeitem"` descendants (up/down, wrapping; Home/End). */
17669
+ protected onKeydown(event: KeyboardEvent): void;
17105
17670
  static ɵfac: i0.ɵɵFactoryDeclaration<TreeList, never>;
17106
17671
  static ɵcmp: i0.ɵɵComponentDeclaration<TreeList, "lily-tree-list", never, {
17107
17672
  "label": {
@@ -17130,6 +17695,9 @@ export declare class TreeList {
17130
17695
  */
17131
17696
  export declare class TreeListItem {
17132
17697
  readonly className: import("@angular/core").InputSignal<string>;
17698
+ /** Expanded state, two-way bindable. Leave undefined for a leaf (no aria-expanded). */
17699
+ readonly expanded: import("@angular/core").ModelSignal<boolean | undefined>;
17700
+ protected onKeydown(event: KeyboardEvent): void;
17133
17701
  static ɵfac: i0.ɵɵFactoryDeclaration<TreeListItem, never>;
17134
17702
  static ɵcmp: i0.ɵɵComponentDeclaration<TreeListItem, "li[lily-tree-list-item]", never, {
17135
17703
  "className": {
@@ -17137,7 +17705,14 @@ export declare class TreeListItem {
17137
17705
  "required": false;
17138
17706
  "isSignal": true;
17139
17707
  };
17140
- }, {}, never, ["*"], true, never>;
17708
+ "expanded": {
17709
+ "alias": "expanded";
17710
+ "required": false;
17711
+ "isSignal": true;
17712
+ };
17713
+ }, {
17714
+ "expanded": "expandedChange";
17715
+ }, never, ["*"], true, never>;
17141
17716
  }
17142
17717
  /**
17143
17718
  * TreeMenu — a hierarchical tree menu with expandable branches
@@ -17952,6 +18527,131 @@ export declare class WeekInput {
17952
18527
  "value": "valueChange";
17953
18528
  }, never, never, true, never>;
17954
18529
  }
18530
+ /**
18531
+ * Keyboard model for a wheel picker: a single-select listbox where the selection follows the cursor (APG listbox, "selection
18532
+ * follows focus"), so moving the cursor IS choosing. Pure and framework-neutral, tested without a browser.
18533
+ *
18534
+ * Disabled options are skipped by every move. Arrows wrap only when `loop` is set; Home, End, PageUp and PageDown never wrap.
18535
+ */
18536
+ export interface WheelOption {
18537
+ value: string;
18538
+ label: string;
18539
+ disabled?: boolean;
18540
+ }
18541
+ export type WheelMoveKey = "ArrowUp" | "ArrowDown" | "Home" | "End" | "PageUp" | "PageDown";
18542
+ declare const WHEEL_MOVE_KEYS: readonly string[];
18543
+ export interface WheelMoveOptions {
18544
+ /** Arrow keys wrap from the last enabled option to the first and back. Default false. */
18545
+ loop?: boolean;
18546
+ /** Enabled options PageUp / PageDown move by. Default 5. */
18547
+ pageSize?: number;
18548
+ }
18549
+ /**
18550
+ * The index to select after `key`, or -1 when no option can be selected. `current` is the selected index, or -1 for none.
18551
+ * With nothing selected, ArrowDown / PageDown / Home choose the first enabled option and ArrowUp / PageUp / End the last.
18552
+ */
18553
+ declare function nextWheelIndex(options: readonly WheelOption[], current: number, key: WheelMoveKey, move?: WheelMoveOptions): number;
18554
+ declare const WHEEL_TYPEAHEAD_RESET_MS = 700;
18555
+ export interface WheelTypeahead {
18556
+ prefix: string;
18557
+ at: number;
18558
+ }
18559
+ /** The prefix after `key` at time `now`: it grows while presses are within the reset time, else starts over. */
18560
+ declare function nextWheelPrefix(previous: WheelTypeahead, key: string, now: number, resetMs?: number): WheelTypeahead;
18561
+ /** Whether a key press is a type-ahead character: one printable character other than space, no Ctrl, Alt or Meta. */
18562
+ declare function isWheelTypeaheadKey(event: {
18563
+ key: string;
18564
+ ctrlKey?: boolean;
18565
+ altKey?: boolean;
18566
+ metaKey?: boolean;
18567
+ }): boolean;
18568
+ /**
18569
+ * The enabled option to move to for the typed `prefix`, or -1. Searches from the option after `current` and wraps; a prefix of one
18570
+ * repeated letter ("ss") counts as that single letter, so pressing it again steps through the options that start with it.
18571
+ */
18572
+ declare function wheelTypeaheadIndex(options: readonly WheelOption[], current: number, prefix: string): number;
18573
+ /**
18574
+ * WheelPicker — a vertical single-select listbox where the selection follows the cursor.
18575
+ *
18576
+ * Mirrors the Svelte canonical: moving with the arrow keys, typing, or clicking an option chooses it. The component owns
18577
+ * the roles and the keys; the wheel LOOK (scroll snapping, fading) is the consumer's CSS. `value` is a two-way `model`
18578
+ * (`[(value)]`); the listbox is `.wheel-picker-list` (`role="listbox"`, vertical, `aria-activedescendant`), each option
18579
+ * `.wheel-picker-option` (`role="option"`, `aria-selected`, `aria-disabled`). Keyboard (APG listbox, selection follows
18580
+ * focus): ArrowDown / ArrowUp, Home / End, PageDown / PageUp, type-ahead over the labels; disabled options are skipped.
18581
+ *
18582
+ * Inputs: `label` (required), `options` (required), `value` (model), `loop`, `pageSize`, `disabled`, `name`, `className`.
18583
+ * Deviation from Svelte: no rest-props spread (Angular cannot spread onto an inner element).
18584
+ */
18585
+ export declare class WheelPicker {
18586
+ readonly className: import("@angular/core").InputSignal<string>;
18587
+ /** Accessible name. */
18588
+ readonly label: import("@angular/core").InputSignal<string>;
18589
+ /** The choices. */
18590
+ readonly options: import("@angular/core").InputSignal<WheelOption[]>;
18591
+ /** The selected option's value; two-way. */
18592
+ readonly value: import("@angular/core").ModelSignal<string>;
18593
+ /** Arrow keys wrap at the ends. */
18594
+ readonly loop: import("@angular/core").InputSignal<boolean>;
18595
+ /** Enabled options PageUp / PageDown move by. */
18596
+ readonly pageSize: import("@angular/core").InputSignal<number>;
18597
+ /** Ignores keys and clicks. */
18598
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
18599
+ /** Form field name for a hidden input. */
18600
+ readonly name: import("@angular/core").InputSignal<string | undefined>;
18601
+ protected readonly uid: string;
18602
+ private readonly list;
18603
+ private typeahead;
18604
+ protected selectedIndex(): number;
18605
+ constructor();
18606
+ private select;
18607
+ protected onKeydown(event: KeyboardEvent): void;
18608
+ protected onClick(event: MouseEvent): void;
18609
+ static ɵfac: i0.ɵɵFactoryDeclaration<WheelPicker, never>;
18610
+ static ɵcmp: i0.ɵɵComponentDeclaration<WheelPicker, "lily-wheel-picker", never, {
18611
+ "className": {
18612
+ "alias": "className";
18613
+ "required": false;
18614
+ "isSignal": true;
18615
+ };
18616
+ "label": {
18617
+ "alias": "label";
18618
+ "required": true;
18619
+ "isSignal": true;
18620
+ };
18621
+ "options": {
18622
+ "alias": "options";
18623
+ "required": true;
18624
+ "isSignal": true;
18625
+ };
18626
+ "value": {
18627
+ "alias": "value";
18628
+ "required": false;
18629
+ "isSignal": true;
18630
+ };
18631
+ "loop": {
18632
+ "alias": "loop";
18633
+ "required": false;
18634
+ "isSignal": true;
18635
+ };
18636
+ "pageSize": {
18637
+ "alias": "pageSize";
18638
+ "required": false;
18639
+ "isSignal": true;
18640
+ };
18641
+ "disabled": {
18642
+ "alias": "disabled";
18643
+ "required": false;
18644
+ "isSignal": true;
18645
+ };
18646
+ "name": {
18647
+ "alias": "name";
18648
+ "required": false;
18649
+ "isSignal": true;
18650
+ };
18651
+ }, {
18652
+ "value": "valueChange";
18653
+ }, never, never, true, never>;
18654
+ }
17955
18655
  /**
17956
18656
  * YisraelTeudatZehutInput — an input for entering Israel's Teudat Zehut (תעודת זהות)
17957
18657
  *