@ngb-bootstrap/core 0.0.0 → 0.1.0-next.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.
Files changed (76) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +18 -0
  3. package/README.md +26 -0
  4. package/fesm2022/ngb-bootstrap-core-alert.mjs +154 -0
  5. package/fesm2022/ngb-bootstrap-core-alert.mjs.map +1 -0
  6. package/fesm2022/ngb-bootstrap-core-badge.mjs +100 -0
  7. package/fesm2022/ngb-bootstrap-core-badge.mjs.map +1 -0
  8. package/fesm2022/ngb-bootstrap-core-breadcrumb.mjs +135 -0
  9. package/fesm2022/ngb-bootstrap-core-breadcrumb.mjs.map +1 -0
  10. package/fesm2022/ngb-bootstrap-core-button.mjs +513 -0
  11. package/fesm2022/ngb-bootstrap-core-button.mjs.map +1 -0
  12. package/fesm2022/ngb-bootstrap-core-card.mjs +540 -0
  13. package/fesm2022/ngb-bootstrap-core-card.mjs.map +1 -0
  14. package/fesm2022/ngb-bootstrap-core-cdk.mjs +282 -0
  15. package/fesm2022/ngb-bootstrap-core-cdk.mjs.map +1 -0
  16. package/fesm2022/ngb-bootstrap-core-checkbox.mjs +165 -0
  17. package/fesm2022/ngb-bootstrap-core-checkbox.mjs.map +1 -0
  18. package/fesm2022/ngb-bootstrap-core-chips.mjs +512 -0
  19. package/fesm2022/ngb-bootstrap-core-chips.mjs.map +1 -0
  20. package/fesm2022/ngb-bootstrap-core-floating-label.mjs +83 -0
  21. package/fesm2022/ngb-bootstrap-core-floating-label.mjs.map +1 -0
  22. package/fesm2022/ngb-bootstrap-core-footer.mjs +48 -0
  23. package/fesm2022/ngb-bootstrap-core-footer.mjs.map +1 -0
  24. package/fesm2022/ngb-bootstrap-core-icon.mjs +243 -0
  25. package/fesm2022/ngb-bootstrap-core-icon.mjs.map +1 -0
  26. package/fesm2022/ngb-bootstrap-core-input.mjs +540 -0
  27. package/fesm2022/ngb-bootstrap-core-input.mjs.map +1 -0
  28. package/fesm2022/ngb-bootstrap-core-layout.mjs +272 -0
  29. package/fesm2022/ngb-bootstrap-core-layout.mjs.map +1 -0
  30. package/fesm2022/ngb-bootstrap-core-navbar.mjs +150 -0
  31. package/fesm2022/ngb-bootstrap-core-navbar.mjs.map +1 -0
  32. package/fesm2022/ngb-bootstrap-core-radio.mjs +279 -0
  33. package/fesm2022/ngb-bootstrap-core-radio.mjs.map +1 -0
  34. package/fesm2022/ngb-bootstrap-core-sidebar.mjs +425 -0
  35. package/fesm2022/ngb-bootstrap-core-sidebar.mjs.map +1 -0
  36. package/fesm2022/ngb-bootstrap-core-spinner.mjs +126 -0
  37. package/fesm2022/ngb-bootstrap-core-spinner.mjs.map +1 -0
  38. package/fesm2022/ngb-bootstrap-core-switch.mjs +147 -0
  39. package/fesm2022/ngb-bootstrap-core-switch.mjs.map +1 -0
  40. package/fesm2022/ngb-bootstrap-core.mjs +69 -0
  41. package/fesm2022/ngb-bootstrap-core.mjs.map +1 -0
  42. package/ngb-bootstrap.css +827 -0
  43. package/package.json +118 -4
  44. package/styles/_breadcrumb.scss +9 -0
  45. package/styles/_button.scss +14 -0
  46. package/styles/_card.scss +86 -0
  47. package/styles/_chip.scss +10 -0
  48. package/styles/_choice.scss +14 -0
  49. package/styles/_contrast.scss +23 -0
  50. package/styles/_icon.scss +62 -0
  51. package/styles/_index.scss +33 -0
  52. package/styles/_input.scss +9 -0
  53. package/styles/_layout.scss +602 -0
  54. package/styles/_overlay.scss +14 -0
  55. package/styles/_tokens.scss +29 -0
  56. package/styles/_typography.scss +77 -0
  57. package/styles/ngb-bootstrap.scss +2 -0
  58. package/types/ngb-bootstrap-core-alert.d.ts +65 -0
  59. package/types/ngb-bootstrap-core-badge.d.ts +38 -0
  60. package/types/ngb-bootstrap-core-breadcrumb.d.ts +32 -0
  61. package/types/ngb-bootstrap-core-button.d.ts +177 -0
  62. package/types/ngb-bootstrap-core-card.d.ts +154 -0
  63. package/types/ngb-bootstrap-core-cdk.d.ts +165 -0
  64. package/types/ngb-bootstrap-core-checkbox.d.ts +53 -0
  65. package/types/ngb-bootstrap-core-chips.d.ts +170 -0
  66. package/types/ngb-bootstrap-core-floating-label.d.ts +22 -0
  67. package/types/ngb-bootstrap-core-footer.d.ts +16 -0
  68. package/types/ngb-bootstrap-core-icon.d.ts +99 -0
  69. package/types/ngb-bootstrap-core-input.d.ts +208 -0
  70. package/types/ngb-bootstrap-core-layout.d.ts +102 -0
  71. package/types/ngb-bootstrap-core-navbar.d.ts +33 -0
  72. package/types/ngb-bootstrap-core-radio.d.ts +96 -0
  73. package/types/ngb-bootstrap-core-sidebar.d.ts +62 -0
  74. package/types/ngb-bootstrap-core-spinner.d.ts +49 -0
  75. package/types/ngb-bootstrap-core-switch.d.ts +44 -0
  76. package/types/ngb-bootstrap-core.d.ts +82 -0
@@ -0,0 +1,165 @@
1
+ import { ConnectedPosition, OverlayRef } from "@angular/cdk/overlay";
2
+ import { ComponentPortal, TemplatePortal } from "@angular/cdk/portal";
3
+ import * as i0 from "@angular/core";
4
+ import { AfterContentChecked, Injector, Provider, Type } from "@angular/core";
5
+ import { Observable } from "rxjs";
6
+ import { ControlValueAccessor } from "@angular/forms";
7
+ import { NGB_DEFAULT_I18N, NGB_I18N, NgbI18n, NgbI18nOverrides, provideNgbI18n } from "@ngb-bootstrap/core";
8
+ /** Where the panel sits relative to its anchor, using Bootstrap's placement names. */
9
+ export type NgbPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'start' | 'start-top' | 'start-bottom' | 'end' | 'end-top' | 'end-bottom';
10
+ /**
11
+ * Maps a placement to CDK connected positions: the placement first, then its opposite side as
12
+ * a fallback (the CDK picks the first one that fits). `offset` is the gap in px.
13
+ *
14
+ * ```ts
15
+ * ngbPositions('bottom-start', 8);
16
+ * ```
17
+ */
18
+ export declare function ngbPositions(placement: NgbPlacement, offset?: number): ConnectedPosition[];
19
+ export interface NgbAnchoredOverlayConfig {
20
+ /** Default `bottom`. */
21
+ placement?: NgbPlacement;
22
+ /** Gap in px between anchor and panel. Default 0. */
23
+ offset?: number;
24
+ /** Close on Escape. Default true. */
25
+ closeOnEscape?: boolean;
26
+ /** Close on a pointer press outside the panel and anchor. Default true. */
27
+ closeOnOutsideClick?: boolean;
28
+ /** Extra classes for the CDK pane. */
29
+ panelClass?: string | string[];
30
+ /** Injector for the created component or template view. */
31
+ injector?: Injector;
32
+ }
33
+ /** Handle to an open anchored panel. */
34
+ export interface NgbAnchoredOverlayRef {
35
+ /** The underlying CDK overlay, for anything not covered here. */
36
+ readonly overlayRef: OverlayRef;
37
+ /** Emits once when the panel is closed (by the user or by `close()`). */
38
+ readonly closed: Observable<void>;
39
+ /** Closes and disposes the panel. Safe to call twice. */
40
+ close(): void;
41
+ }
42
+ /**
43
+ * Opens a component or template next to an anchor element using the CDK's flexible connected
44
+ * position strategy. It adds Bootstrap placement names, a flip fallback, scroll repositioning and
45
+ * Escape / outside-click closing; anything else is available through `overlayRef`.
46
+ *
47
+ * ```ts
48
+ * const ref = inject(NgbAnchoredOverlay).open(button, new ComponentPortal(Tip), {
49
+ * placement: 'top',
50
+ * offset: 8,
51
+ * });
52
+ * ref.closed.subscribe(() => (this.open = false));
53
+ * ```
54
+ */
55
+ export declare class NgbAnchoredOverlay {
56
+ private readonly overlay;
57
+ open(anchor: HTMLElement, content: ComponentPortal<unknown> | TemplatePortal<unknown>, config?: NgbAnchoredOverlayConfig): NgbAnchoredOverlayRef;
58
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbAnchoredOverlay, never>;
59
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
60
+ }
61
+ /**
62
+ * App-scoped unique id source. Counters live in this root service rather than at module level, so
63
+ * every application (and every SSR request) starts from zero. The server and the browser then
64
+ * generate the same ids in the same order, which keeps hydration from mismatching on `id`,
65
+ * `for` and `aria-*` attributes.
66
+ */
67
+ export declare class NgbIdGenerator {
68
+ private readonly counters;
69
+ /** Returns `${prefix}-${n}`, counting separately per prefix. */
70
+ next(prefix: string): string;
71
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbIdGenerator, never>;
72
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
73
+ }
74
+ /**
75
+ * Creates a unique id such as `ngb-tooltip-1`. Call it in an injection context, typically a field
76
+ * initialiser, so ids are created in the same order on server and client.
77
+ *
78
+ * ```ts
79
+ * protected readonly id = ngbId('ngb-tooltip');
80
+ * ```
81
+ */
82
+ export declare function ngbId(prefix?: string): string;
83
+ /**
84
+ * Base for form controls. It implements `ControlValueAccessor` on top of signals, so a control
85
+ * only needs a template that reads `value()` / `isDisabled()` and calls `setValue()` and
86
+ * `markTouched()`. It works with `ngModel`, reactive forms and plain `[(value)]` binding.
87
+ *
88
+ * ```ts
89
+ * @Component({
90
+ * selector: 'ngb-switch',
91
+ * providers: [provideNgbValueAccessor(() => NgbSwitch)],
92
+ * template: `<input type="checkbox" role="switch" [checked]="value()" [disabled]="isDisabled()"
93
+ * (change)="setValue($any($event.target).checked)" (blur)="markTouched()" />`,
94
+ * })
95
+ * export class NgbSwitch extends NgbValueAccessor<boolean> {}
96
+ * ```
97
+ *
98
+ * `writeValue` also emits `valueChange`, because `model()` always does; `onChange` fires only
99
+ * for changes made through `setValue`. `isInvalid()` follows the form control (invalid and
100
+ * touched), like `ngbInput`, unless the `invalid` input forces it.
101
+ */
102
+ export declare abstract class NgbValueAccessor<T> implements ControlValueAccessor, AfterContentChecked {
103
+ private readonly injector;
104
+ /** Current value; two-way bindable with `[(value)]`. */
105
+ readonly value: import("@angular/core").ModelSignal<T | null>;
106
+ /** Disabled through the `disabled` input. Forms can also disable the control. */
107
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
108
+ private readonly formDisabled;
109
+ /** True when disabled by the input or by the form control. */
110
+ readonly isDisabled: import("@angular/core").Signal<boolean>;
111
+ /**
112
+ * Forces the invalid state on or off, for errors the form does not know about, such as a server
113
+ * response. By default the control is invalid when its form control is invalid and touched.
114
+ */
115
+ readonly invalid: import("@angular/core").InputSignalWithTransform<boolean | undefined, unknown>;
116
+ private readonly touchedInvalid;
117
+ /** True while the control shows its invalid state (`.is-invalid`, `aria-invalid`). */
118
+ readonly isInvalid: import("@angular/core").Signal<boolean>;
119
+ private ngControl?;
120
+ private watched;
121
+ private subscription?;
122
+ private onChange;
123
+ private onTouched;
124
+ constructor();
125
+ ngAfterContentChecked(): void;
126
+ /** Re-reads the form control's state. Runs on every change detection pass and on its events. */
127
+ private syncControl;
128
+ /** Call from the template when the user changes the value. */
129
+ setValue(value: T | null): void;
130
+ /** Call from the template on blur. */
131
+ markTouched(): void;
132
+ writeValue(value: T | null): void;
133
+ registerOnChange(fn: (value: T | null) => void): void;
134
+ registerOnTouched(fn: () => void): void;
135
+ setDisabledState(isDisabled: boolean): void;
136
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbValueAccessor<any>, never>;
137
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbValueAccessor<any>, never, never, {
138
+ "value": {
139
+ "alias": "value";
140
+ "required": false;
141
+ "isSignal": true;
142
+ };
143
+ "disabled": {
144
+ "alias": "disabled";
145
+ "required": false;
146
+ "isSignal": true;
147
+ };
148
+ "invalid": {
149
+ "alias": "invalid";
150
+ "required": false;
151
+ "isSignal": true;
152
+ };
153
+ }, {
154
+ "value": "valueChange";
155
+ }, never, never, true, never>;
156
+ }
157
+ /**
158
+ * Provider that registers a component as an `NG_VALUE_ACCESSOR`.
159
+ *
160
+ * ```ts
161
+ * providers: [provideNgbValueAccessor(() => NgbSwitch)]
162
+ * ```
163
+ */
164
+ export declare function provideNgbValueAccessor(type: () => Type<unknown>): Provider;
165
+ export { NGB_DEFAULT_I18N, NGB_I18N, type NgbI18n, type NgbI18nOverrides, provideNgbI18n };
@@ -0,0 +1,53 @@
1
+ import { NgbThemeColor } from "@ngb-bootstrap/core";
2
+ import { NgbValueAccessor } from "@ngb-bootstrap/core/cdk";
3
+ import * as i0 from "@angular/core";
4
+ export type NgbCheckSize = 'sm' | 'md' | 'lg';
5
+ /**
6
+ * Checkbox built on Bootstrap 6 `.check` over a native `<input type="checkbox">`. The projected
7
+ * content is the label. The model is `value` (`true` / `false`), the same name every ngb form
8
+ * control uses, so `[(value)]`, `[(ngModel)]` and `formControlName` all work.
9
+ *
10
+ * ```html
11
+ * <ngb-checkbox [(value)]="accepted" hint="You can change this later.">Accept the terms</ngb-checkbox>
12
+ * <ngb-checkbox formControlName="all" [indeterminate]="some()">Select all</ngb-checkbox>
13
+ * ```
14
+ */
15
+ export declare class NgbCheckbox extends NgbValueAccessor<boolean> {
16
+ protected readonly id: string;
17
+ protected readonly hintId: string;
18
+ /** Mixed state, shown with a dash. A user toggle clears it. Two-way bindable. */
19
+ readonly indeterminate: import("@angular/core").ModelSignal<boolean>;
20
+ /** Description shown under the label and linked with `aria-describedby`. */
21
+ readonly hint: import("@angular/core").InputSignal<string | undefined>;
22
+ /** Theme colour (Bootstrap `.theme-*`). Defaults to the control colour. */
23
+ readonly color: import("@angular/core").InputSignal<NgbThemeColor | undefined>;
24
+ /** `sm`, `md` (default) or `lg`. */
25
+ readonly size: import("@angular/core").InputSignal<NgbCheckSize>;
26
+ protected readonly classes: import("@angular/core").Signal<string>;
27
+ protected toggle(event: Event): void;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbCheckbox, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbCheckbox, "ngb-checkbox", never, {
30
+ "indeterminate": {
31
+ "alias": "indeterminate";
32
+ "required": false;
33
+ "isSignal": true;
34
+ };
35
+ "hint": {
36
+ "alias": "hint";
37
+ "required": false;
38
+ "isSignal": true;
39
+ };
40
+ "color": {
41
+ "alias": "color";
42
+ "required": false;
43
+ "isSignal": true;
44
+ };
45
+ "size": {
46
+ "alias": "size";
47
+ "required": false;
48
+ "isSignal": true;
49
+ };
50
+ }, {
51
+ "indeterminate": "indeterminateChange";
52
+ }, never, ["*"], true, never>;
53
+ }
@@ -0,0 +1,170 @@
1
+ import * as i0 from "@angular/core";
2
+ import { InjectionToken, Signal } from "@angular/core";
3
+ import { NgbThemeColor } from "@ngb-bootstrap/core";
4
+ import { NgbIconDefinition } from "@ngb-bootstrap/icons";
5
+ import { FocusKeyManager } from "@angular/cdk/a11y";
6
+ import { NgbValueAccessor } from "@ngb-bootstrap/core/cdk";
7
+ /** What a chip needs from the `ngb-chip-group` it sits in. Implemented by `NgbChipGroup`. */
8
+ export interface NgbChipGroupRef {
9
+ isSelected(value: unknown): boolean;
10
+ toggle(value: unknown): void;
11
+ /** True for the one chip that is in the tab order (roving tabindex). */
12
+ isTabbable(chip: unknown): boolean;
13
+ /** Called when a chip receives focus, so arrow keys continue from it. */
14
+ activate(chip: unknown): void;
15
+ readonly isDisabled: Signal<boolean>;
16
+ }
17
+ /** Lets chips find their group without importing it, which would be circular. */
18
+ export declare const NGB_CHIP_GROUP: InjectionToken<NgbChipGroupRef>;
19
+ /**
20
+ * Compact label, built on Bootstrap 6 `.chip`. A chip is static by default; make it `selectable`
21
+ * to toggle it (`aria-pressed`) or `removable` to add a dismiss button that emits `removed`.
22
+ *
23
+ * ```html
24
+ * <ngb-chip color="success" [icon]="ngbIconCheck">Done</ngb-chip>
25
+ * <ngb-chip selectable [(selected)]="on">Filter</ngb-chip>
26
+ * <ngb-chip removable (removed)="remove(tag)">{{ tag }}</ngb-chip>
27
+ * ```
28
+ *
29
+ * Inside an `ngb-chip-group` the chip's `value` is what the group selects. A selectable chip is a
30
+ * focusable toggle; its dismiss button then leaves the tab order and Delete or Backspace removes
31
+ * the chip instead.
32
+ */
33
+ export declare class NgbChip {
34
+ private readonly el;
35
+ private readonly i18n;
36
+ private readonly group;
37
+ private readonly dismiss;
38
+ protected readonly closeIcon: NgbIconDefinition;
39
+ /** Theme colour (Bootstrap `.theme-*`). Defaults to Bootstrap's neutral chip. */
40
+ readonly color: import("@angular/core").InputSignal<NgbThemeColor | undefined>;
41
+ /** Leading icon from `@ngb-bootstrap/icons`. */
42
+ readonly icon: import("@angular/core").InputSignal<NgbIconDefinition | undefined>;
43
+ /** Makes the chip a toggle button with `aria-pressed`. */
44
+ readonly selectable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
45
+ /** Selected state of a selectable chip outside a group; two-way bindable. */
46
+ readonly selected: import("@angular/core").ModelSignal<boolean>;
47
+ /** What the surrounding `ngb-chip-group` selects when this chip is toggled. */
48
+ readonly value: import("@angular/core").InputSignal<unknown>;
49
+ /** Adds a dismiss button. */
50
+ readonly removable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
51
+ /** Disables the chip and its dismiss button. */
52
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
53
+ /**
54
+ * Text used in the dismiss button's name ("Remove {label}"). Defaults to the chip's text.
55
+ * Set it when the content isn't plain text.
56
+ */
57
+ readonly label: import("@angular/core").InputSignal<string | undefined>;
58
+ /** Emits when the dismiss button is pressed, or on Delete / Backspace in a selectable chip. */
59
+ readonly removed: import("@angular/core").OutputEmitterRef<void>;
60
+ /** True when disabled by the input or by its group. */
61
+ readonly isDisabled: Signal<boolean>;
62
+ protected readonly isSelected: Signal<boolean>;
63
+ protected readonly classes: Signal<string>;
64
+ protected readonly tabIndex: Signal<-1 | 0 | null>;
65
+ /** Accessible name of the dismiss button. Reads the chip's text when `label` isn't set. */
66
+ protected removeLabel(): string;
67
+ private textLabel;
68
+ /** Focuses the chip, or its dismiss button if it isn't selectable. Used by the group's key manager. */
69
+ focus(): void;
70
+ protected onClick(): void;
71
+ protected onKeydown(event: KeyboardEvent): void;
72
+ protected onDismiss(event: Event): void;
73
+ private toggle;
74
+ private remove;
75
+ /**
76
+ * The chip is about to leave the DOM: hand focus to the next chip, else the previous one. Chips
77
+ * may sit directly next to each other or each inside a wrapper such as a grid column.
78
+ */
79
+ private moveFocusToNeighbour;
80
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbChip, never>;
81
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbChip, "ngb-chip", never, {
82
+ "color": {
83
+ "alias": "color";
84
+ "required": false;
85
+ "isSignal": true;
86
+ };
87
+ "icon": {
88
+ "alias": "icon";
89
+ "required": false;
90
+ "isSignal": true;
91
+ };
92
+ "selectable": {
93
+ "alias": "selectable";
94
+ "required": false;
95
+ "isSignal": true;
96
+ };
97
+ "selected": {
98
+ "alias": "selected";
99
+ "required": false;
100
+ "isSignal": true;
101
+ };
102
+ "value": {
103
+ "alias": "value";
104
+ "required": false;
105
+ "isSignal": true;
106
+ };
107
+ "removable": {
108
+ "alias": "removable";
109
+ "required": false;
110
+ "isSignal": true;
111
+ };
112
+ "disabled": {
113
+ "alias": "disabled";
114
+ "required": false;
115
+ "isSignal": true;
116
+ };
117
+ "label": {
118
+ "alias": "label";
119
+ "required": false;
120
+ "isSignal": true;
121
+ };
122
+ }, {
123
+ "selected": "selectedChange";
124
+ "removed": "removed";
125
+ }, never, ["*"], true, never>;
126
+ }
127
+ /**
128
+ * Group of chips. It is a single tab stop: arrow keys, Home and End move between the selectable
129
+ * chips and Enter or Space toggles one. The value is the `value` of the selected chip, or an array
130
+ * of them with `multiple`. Works with `[(value)]`, `ngModel` and reactive forms.
131
+ *
132
+ * ```html
133
+ * <ngb-chip-group label="Topics" multiple [(value)]="topics">
134
+ * <ngb-chip selectable value="a11y">Accessibility</ngb-chip>
135
+ * <ngb-chip selectable value="i18n">Internationalisation</ngb-chip>
136
+ * </ngb-chip-group>
137
+ * ```
138
+ */
139
+ export declare class NgbChipGroup extends NgbValueAccessor<unknown> implements NgbChipGroupRef {
140
+ /** Accessible name of the group. */
141
+ readonly label: import("@angular/core").InputSignal<string | undefined>;
142
+ /** Allows several chips to be selected; the value is then an array. */
143
+ readonly multiple: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
144
+ private readonly chips;
145
+ private readonly options;
146
+ private readonly focusable;
147
+ private readonly focusableOptions;
148
+ private readonly active;
149
+ protected readonly keyManager: FocusKeyManager<unknown>;
150
+ /** The chip in the tab order: the last focused one, else the first selected, else the first. */
151
+ private readonly tabbable;
152
+ isSelected(value: unknown): boolean;
153
+ toggle(value: unknown): void;
154
+ isTabbable(chip: unknown): boolean;
155
+ activate(chip: unknown): void;
156
+ private option;
157
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbChipGroup, never>;
158
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbChipGroup, "ngb-chip-group", never, {
159
+ "label": {
160
+ "alias": "label";
161
+ "required": false;
162
+ "isSignal": true;
163
+ };
164
+ "multiple": {
165
+ "alias": "multiple";
166
+ "required": false;
167
+ "isSignal": true;
168
+ };
169
+ }, {}, ["chips"], ["*"], true, never>;
170
+ }
@@ -0,0 +1,22 @@
1
+ import { NgbField } from "@ngb-bootstrap/core/input";
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Floating label built on Bootstrap 6 `.form-floating`. The label sits inside the control and
5
+ * moves up once the control has focus or a value. It works with `<input>`, `<textarea>` and
6
+ * `<select>`: put an `ngbInput` inside.
7
+ *
8
+ * Bootstrap detects a value with `:placeholder-shown`, so the control needs a `placeholder`. The
9
+ * input gets a single space by default; set `placeholder` to show a hint once it has focus.
10
+ *
11
+ * ```html
12
+ * <ngb-floating-label label="Email" hint="We never share it." error="Enter a valid email.">
13
+ * <input ngbInput type="email" formControlName="email" />
14
+ * </ngb-floating-label>
15
+ * ```
16
+ */
17
+ export declare class NgbFloatingLabel extends NgbField {
18
+ /** Default placeholder handed to the input: a space, so `:placeholder-shown` works. */
19
+ readonly placeholder = " ";
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbFloatingLabel, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbFloatingLabel, "ngb-floating-label", never, {}, {}, never, ["*"], true, never>;
22
+ }
@@ -0,0 +1,16 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Page footer in the Taiga UI docs style: small secondary text, laid out as a wrapping row. Inside
4
+ * `<ngb-layout-content>` it is its own panel below the content; elsewhere it has a top divider.
5
+ *
6
+ * ```html
7
+ * <ngb-footer>
8
+ * <span>© 2026 My app</span>
9
+ * <nav aria-label="Footer"><a href="…">GitHub</a></nav>
10
+ * </ngb-footer>
11
+ * ```
12
+ */
13
+ export declare class NgbFooter {
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbFooter, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbFooter, "ngb-footer", never, {}, {}, never, ["*"], true, never>;
16
+ }
@@ -0,0 +1,99 @@
1
+ import { SafeHtml } from "@angular/platform-browser";
2
+ import { NgbIconDefinition, NgbIconName, NgbIconTheme } from "@ngb-bootstrap/icons";
3
+ import * as i0 from "@angular/core";
4
+ import { EnvironmentProviders, InjectionToken } from "@angular/core";
5
+ /**
6
+ * SVG icon from `@ngb-bootstrap/icons` (IconPark) or the app's own registered SVGs.
7
+ * Decorative by default (`aria-hidden`); set `label` when the icon carries meaning on its own.
8
+ *
9
+ * ```html
10
+ * <ngb-icon name="home" theme="two-tone" size="1.25rem" />
11
+ * <ngb-icon [icon]="ngbIconSearch" label="Search" />
12
+ * ```
13
+ */
14
+ export declare class NgbIcon {
15
+ private readonly registry;
16
+ private readonly config;
17
+ private readonly sanitizer;
18
+ private readonly id;
19
+ /** Name of a registered icon (see `provideNgbIcons`). */
20
+ readonly name: import("@angular/core").InputSignal<NgbIconName | (string & {}) | undefined>;
21
+ /** Icon definition to render directly, without registering it. Takes precedence over `name`. */
22
+ readonly icon: import("@angular/core").InputSignal<NgbIconDefinition | undefined>;
23
+ /** `outline` (default), `filled`, `two-tone` or `multi-color`. */
24
+ readonly theme: import("@angular/core").InputSignal<NgbIconTheme>;
25
+ /** Any CSS length, e.g. `1.5rem`. Defaults to `1em`, the surrounding font size. */
26
+ readonly size: import("@angular/core").InputSignal<string | undefined>;
27
+ /** Stroke width on IconPark's 48-unit grid. Defaults to 4. */
28
+ readonly strokeWidth: import("@angular/core").InputSignal<number | undefined>;
29
+ /** Accessible name. Without it the icon is hidden from assistive technology. */
30
+ readonly label: import("@angular/core").InputSignal<string | undefined>;
31
+ private readonly definition;
32
+ protected readonly classes: import("@angular/core").Signal<string>;
33
+ protected readonly svg: import("@angular/core").Signal<SafeHtml>;
34
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbIcon, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbIcon, "ngb-icon", never, {
36
+ "name": {
37
+ "alias": "name";
38
+ "required": false;
39
+ "isSignal": true;
40
+ };
41
+ "icon": {
42
+ "alias": "icon";
43
+ "required": false;
44
+ "isSignal": true;
45
+ };
46
+ "theme": {
47
+ "alias": "theme";
48
+ "required": false;
49
+ "isSignal": true;
50
+ };
51
+ "size": {
52
+ "alias": "size";
53
+ "required": false;
54
+ "isSignal": true;
55
+ };
56
+ "strokeWidth": {
57
+ "alias": "strokeWidth";
58
+ "required": false;
59
+ "isSignal": true;
60
+ };
61
+ "label": {
62
+ "alias": "label";
63
+ "required": false;
64
+ "isSignal": true;
65
+ };
66
+ }, {}, never, never, true, never>;
67
+ }
68
+ /** Defaults for every `<ngb-icon>`. */
69
+ export interface NgbIconConfig {
70
+ /** IconPark theme. */
71
+ theme: NgbIconTheme;
72
+ /** Mirror icons IconPark marks as directional when they sit in a right-to-left layout. */
73
+ flipInRtl: boolean;
74
+ }
75
+ export declare const NGB_ICON_DEFAULT_CONFIG: NgbIconConfig;
76
+ export declare const NGB_ICON_CONFIG: InjectionToken<NgbIconConfig>;
77
+ /** Overrides `<ngb-icon>` defaults. */
78
+ export declare function provideNgbIconConfig(config: Partial<NgbIconConfig>): EnvironmentProviders;
79
+ /** Icons that `<ngb-icon name="…">` can render, keyed by name. */
80
+ export declare class NgbIconRegistry {
81
+ private readonly icons;
82
+ private readonly warned;
83
+ /** Adds icons. A later registration with the same name replaces the earlier one. */
84
+ register(icons: readonly NgbIconDefinition[]): void;
85
+ /** Looks up an icon. Unknown names return `undefined` and log a warning in dev mode. */
86
+ get(name: string): NgbIconDefinition | undefined;
87
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbIconRegistry, never>;
88
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
89
+ }
90
+ /**
91
+ * Registers the icons an app (or a lazy route) uses with `<ngb-icon name="…">`.
92
+ * Accepts IconPark icons from `@ngb-bootstrap/icons` and an app's own `{ name, svg }` definitions.
93
+ *
94
+ * ```ts
95
+ * import { ngbIconHome, ngbIconSearch } from '@ngb-bootstrap/icons';
96
+ * bootstrapApplication(App, { providers: [provideNgbIcons([ngbIconHome, ngbIconSearch])] });
97
+ * ```
98
+ */
99
+ export declare function provideNgbIcons(icons: readonly NgbIconDefinition[]): EnvironmentProviders;