@tociva/tailng-ui 0.8.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +8 -8
  2. package/fesm2022/tociva-tailng-ui-buttons-indicators.mjs +22 -0
  3. package/fesm2022/tociva-tailng-ui-buttons-indicators.mjs.map +1 -0
  4. package/fesm2022/tociva-tailng-ui-data-table-structure.mjs +22 -0
  5. package/fesm2022/tociva-tailng-ui-data-table-structure.mjs.map +1 -0
  6. package/fesm2022/tociva-tailng-ui-form-controls.mjs +22 -0
  7. package/fesm2022/tociva-tailng-ui-form-controls.mjs.map +1 -0
  8. package/fesm2022/tociva-tailng-ui-layout.mjs +22 -0
  9. package/fesm2022/tociva-tailng-ui-layout.mjs.map +1 -0
  10. package/fesm2022/tociva-tailng-ui-navigation.mjs +22 -0
  11. package/fesm2022/tociva-tailng-ui-navigation.mjs.map +1 -0
  12. package/fesm2022/tociva-tailng-ui-popups-overlays.mjs +22 -0
  13. package/fesm2022/tociva-tailng-ui-popups-overlays.mjs.map +1 -0
  14. package/fesm2022/tociva-tailng-ui-utilities.mjs +22 -0
  15. package/fesm2022/tociva-tailng-ui-utilities.mjs.map +1 -0
  16. package/fesm2022/tociva-tailng-ui.mjs +1 -14
  17. package/fesm2022/tociva-tailng-ui.mjs.map +1 -1
  18. package/package.json +30 -2
  19. package/types/tociva-tailng-ui-buttons-indicators.d.ts +179 -0
  20. package/types/tociva-tailng-ui-buttons-indicators.d.ts.map +1 -0
  21. package/types/tociva-tailng-ui-data-table-structure.d.ts +355 -0
  22. package/types/tociva-tailng-ui-data-table-structure.d.ts.map +1 -0
  23. package/types/tociva-tailng-ui-form-controls.d.ts +903 -0
  24. package/types/tociva-tailng-ui-form-controls.d.ts.map +1 -0
  25. package/types/tociva-tailng-ui-layout.d.ts +174 -0
  26. package/types/tociva-tailng-ui-layout.d.ts.map +1 -0
  27. package/types/tociva-tailng-ui-navigation.d.ts +282 -0
  28. package/types/tociva-tailng-ui-navigation.d.ts.map +1 -0
  29. package/types/tociva-tailng-ui-popups-overlays.d.ts +408 -0
  30. package/types/tociva-tailng-ui-popups-overlays.d.ts.map +1 -0
  31. package/types/tociva-tailng-ui-utilities.d.ts +74 -0
  32. package/types/tociva-tailng-ui-utilities.d.ts.map +1 -0
  33. package/types/tociva-tailng-ui.d.ts +7 -2264
  34. package/types/tociva-tailng-ui.d.ts.map +1 -1
@@ -0,0 +1,408 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ElementRef, TemplateRef } from '@angular/core';
3
+ import { OptionTplContext } from '@tociva/tailng-cdk/util';
4
+
5
+ type TngOverlayPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
6
+ type TngConnectedOverlayCloseReason = 'outside-click' | 'inside-click' | 'escape' | 'programmatic' | 'detach';
7
+ declare class TngConnectedOverlay {
8
+ /**
9
+ * Control
10
+ */
11
+ readonly open: _angular_core.InputSignal<boolean>;
12
+ /**
13
+ * Anchor: pass either ElementRef<HTMLElement> or HTMLElement
14
+ * Example: [anchor]="inputEl" where inputEl is ElementRef<HTMLInputElement>
15
+ */
16
+ readonly anchor: _angular_core.InputSignal<HTMLElement | ElementRef<HTMLElement> | null>;
17
+ /**
18
+ * Position / size
19
+ */
20
+ readonly placement: _angular_core.InputSignal<TngOverlayPlacement>;
21
+ readonly offset: _angular_core.InputSignal<number>;
22
+ readonly width: _angular_core.InputSignal<number | "anchor">;
23
+ /**
24
+ * Close behavior
25
+ */
26
+ readonly closeOnOutsideClick: _angular_core.InputSignal<boolean>;
27
+ readonly closeOnInsideClick: _angular_core.InputSignal<boolean>;
28
+ readonly closeOnEscape: _angular_core.InputSignal<boolean>;
29
+ /**
30
+ * Backdrop (modal semantics)
31
+ */
32
+ readonly hasBackdrop: _angular_core.InputSignal<boolean>;
33
+ readonly backdropClass: _angular_core.InputSignal<string>;
34
+ /**
35
+ * Events
36
+ */
37
+ readonly opened: _angular_core.OutputEmitterRef<void>;
38
+ readonly closed: _angular_core.OutputEmitterRef<TngConnectedOverlayCloseReason>;
39
+ readonly backdropClick: _angular_core.OutputEmitterRef<void>;
40
+ private overlayRoot?;
41
+ private readonly topPx;
42
+ private readonly leftPx;
43
+ private readonly widthPx;
44
+ private readonly minWidthPx;
45
+ private didEmitOpened;
46
+ private raf;
47
+ /**
48
+ * Resolve anchor element
49
+ */
50
+ readonly anchorEl: _angular_core.Signal<HTMLElement | null>;
51
+ /**
52
+ * Overlay style for template
53
+ */
54
+ readonly overlayStyle: _angular_core.Signal<Record<string, string | undefined>>;
55
+ constructor();
56
+ /**
57
+ * Public API: parent can call close programmatically (optional)
58
+ */
59
+ close(reason?: TngConnectedOverlayCloseReason): void;
60
+ /**
61
+ * Recompute overlay position
62
+ */
63
+ updatePosition(): void;
64
+ private getOverlayWidthForPosition;
65
+ private requestReposition;
66
+ /**
67
+ * Backdrop pointerdown (if enabled)
68
+ */
69
+ onBackdropPointerDown(ev: PointerEvent): void;
70
+ /**
71
+ * Close on escape
72
+ */
73
+ onDocKeydown(ev: KeyboardEvent): void;
74
+ /**
75
+ * Close on outside click (and optionally inside click)
76
+ * Use pointerdown so it works for mouse/touch/pen and is earlier than click.
77
+ */
78
+ onDocPointerDown(ev: PointerEvent): void;
79
+ /**
80
+ * Keep position in sync on viewport changes
81
+ */
82
+ onResize(): void;
83
+ onScroll(): void;
84
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngConnectedOverlay, never>;
85
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngConnectedOverlay, "tng-connected-overlay", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "anchor": { "alias": "anchor"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "closeOnOutsideClick": { "alias": "closeOnOutsideClick"; "required": false; "isSignal": true; }; "closeOnInsideClick": { "alias": "closeOnInsideClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; "isSignal": true; }; "backdropClass": { "alias": "backdropClass"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; "backdropClick": "backdropClick"; }, never, ["*"], true, never>;
86
+ }
87
+
88
+ type TngOverlayCloseReason = 'selection' | 'escape' | 'outside-click' | 'blur' | 'programmatic';
89
+ declare class TngOverlayRef<R = TngOverlayCloseReason> {
90
+ /**
91
+ * Controlled open state (parent owns state).
92
+ * Use [(open)]="signal()" style with openChange.
93
+ */
94
+ readonly open: _angular_core.InputSignal<boolean>;
95
+ readonly openChange: _angular_core.OutputEmitterRef<boolean>;
96
+ /** Lifecycle outputs */
97
+ readonly opened: _angular_core.OutputEmitterRef<void>;
98
+ readonly closed: _angular_core.OutputEmitterRef<R>;
99
+ /** Read-only computed */
100
+ readonly isOpen: _angular_core.Signal<boolean>;
101
+ /** Request open (controlled) */
102
+ requestOpen(): void;
103
+ /** Request close (controlled) */
104
+ requestClose(reason: R): void;
105
+ /** Convenience aliases */
106
+ openOverlay(): void;
107
+ close(reason: R): void;
108
+ toggle(): void;
109
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngOverlayRef<any>, never>;
110
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngOverlayRef<any>, "tng-overlay-ref", ["tngOverlayRef"], { "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "openChange": "openChange"; "opened": "opened"; "closed": "closed"; }, never, ["*"], true, never>;
111
+ }
112
+
113
+ declare class TngOverlayPanel {
114
+ /** Consumer-provided class overrides / extensions */
115
+ readonly klass: _angular_core.InputSignal<string>;
116
+ /**
117
+ * When true, treat panel as modal surface:
118
+ * - trap focus
119
+ * - restore focus on destroy
120
+ * - aria-modal="true"
121
+ */
122
+ readonly modal: _angular_core.InputSignal<boolean>;
123
+ /** a11y */
124
+ readonly role: _angular_core.InputSignal<"dialog" | "menu" | "listbox" | "region" | "presentation">;
125
+ readonly ariaLabel: _angular_core.InputSignal<string>;
126
+ readonly ariaLabelledby: _angular_core.InputSignal<string>;
127
+ readonly ariaDescribedby: _angular_core.InputSignal<string>;
128
+ /** Focus trap options (only meaningful when modal=true) */
129
+ readonly restoreFocus: _angular_core.InputSignal<boolean>;
130
+ readonly autoCapture: _angular_core.InputSignal<boolean>;
131
+ readonly deferCaptureElements: _angular_core.InputSignal<boolean>;
132
+ /** Base themed Tailwind classes */
133
+ private readonly baseClasses;
134
+ /** Final merged class string */
135
+ readonly classes: _angular_core.Signal<string>;
136
+ /** For ARIA: only true when modal */
137
+ readonly ariaModal: _angular_core.Signal<"true" | null>;
138
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngOverlayPanel, never>;
139
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngOverlayPanel, "tng-overlay-panel", never, { "klass": { "alias": "klass"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "ariaDescribedby": { "alias": "ariaDescribedby"; "required": false; "isSignal": true; }; "restoreFocus": { "alias": "restoreFocus"; "required": false; "isSignal": true; }; "autoCapture": { "alias": "autoCapture"; "required": false; "isSignal": true; }; "deferCaptureElements": { "alias": "deferCaptureElements"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
140
+ }
141
+
142
+ type TngDialogCloseReason = 'confirm' | 'cancel' | 'escape' | 'outside-click' | 'programmatic';
143
+ declare class TngDialog {
144
+ /** Controlled open state */
145
+ readonly open: _angular_core.InputSignal<boolean>;
146
+ /** Close behavior */
147
+ readonly closeOnBackdropClick: _angular_core.InputSignal<boolean>;
148
+ readonly closeOnEscape: _angular_core.InputSignal<boolean>;
149
+ /** a11y */
150
+ readonly ariaLabel: _angular_core.InputSignal<string>;
151
+ /** Focus trap (a11y) */
152
+ readonly trapFocus: _angular_core.InputSignal<boolean>;
153
+ readonly restoreFocus: _angular_core.InputSignal<boolean>;
154
+ readonly autoCapture: _angular_core.InputSignal<boolean>;
155
+ readonly deferCaptureElements: _angular_core.InputSignal<boolean>;
156
+ /** When no tabbables exist, focus the panel */
157
+ readonly autoFocusPanelWhenEmpty: _angular_core.InputSignal<boolean>;
158
+ /** Klass inputs */
159
+ readonly backdropKlass: _angular_core.InputSignal<string>;
160
+ readonly panelKlass: _angular_core.InputSignal<string>;
161
+ readonly headerWrapKlass: _angular_core.InputSignal<string>;
162
+ readonly bodyWrapKlass: _angular_core.InputSignal<string>;
163
+ readonly footerWrapKlass: _angular_core.InputSignal<string>;
164
+ /** Outputs */
165
+ readonly closed: _angular_core.OutputEmitterRef<TngDialogCloseReason>;
166
+ readonly opened: _angular_core.OutputEmitterRef<void>;
167
+ /** Derived */
168
+ readonly isOpen: _angular_core.Signal<boolean>;
169
+ /** Panel ref */
170
+ private readonly panelRef;
171
+ private readonly injector;
172
+ private didEmitOpened;
173
+ constructor();
174
+ ngDoCheck(): void;
175
+ requestClose(reason: TngDialogCloseReason): void;
176
+ onBackdropClick(): void;
177
+ onPanelKeydown(ev: KeyboardEvent): void;
178
+ private focusPanelIfNoTabbable;
179
+ private hasTabbable;
180
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngDialog, never>;
181
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngDialog, "tng-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "trapFocus": { "alias": "trapFocus"; "required": false; "isSignal": true; }; "restoreFocus": { "alias": "restoreFocus"; "required": false; "isSignal": true; }; "autoCapture": { "alias": "autoCapture"; "required": false; "isSignal": true; }; "deferCaptureElements": { "alias": "deferCaptureElements"; "required": false; "isSignal": true; }; "autoFocusPanelWhenEmpty": { "alias": "autoFocusPanelWhenEmpty"; "required": false; "isSignal": true; }; "backdropKlass": { "alias": "backdropKlass"; "required": false; "isSignal": true; }; "panelKlass": { "alias": "panelKlass"; "required": false; "isSignal": true; }; "headerWrapKlass": { "alias": "headerWrapKlass"; "required": false; "isSignal": true; }; "bodyWrapKlass": { "alias": "bodyWrapKlass"; "required": false; "isSignal": true; }; "footerWrapKlass": { "alias": "footerWrapKlass"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "opened": "opened"; }, never, ["[tngDialogHeader]", "*", "[tngDialogFooter]"], true, never>;
182
+ }
183
+
184
+ declare class TngDialogInitialFocus {
185
+ readonly cdkFocusInitialAttr = "";
186
+ readonly cdkFocusInitialCamelAttr = "";
187
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngDialogInitialFocus, never>;
188
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TngDialogInitialFocus, "[tngDialogInitialFocus]", never, {}, {}, never, never, true, never>;
189
+ }
190
+
191
+ type TypeaheadMatchMode = 'startsWith' | 'includes';
192
+ type TngOptionListKeyAction = 'move' | 'select' | 'typeahead' | 'none';
193
+ type TngOptionListKeyStroke = {
194
+ key: string;
195
+ handled: boolean;
196
+ prevented: boolean;
197
+ action: TngOptionListKeyAction;
198
+ nextActiveIndex?: number;
199
+ query?: string;
200
+ originalEvent: KeyboardEvent;
201
+ };
202
+ declare class TngOptionList<T> {
203
+ listbox?: ElementRef<HTMLElement>;
204
+ readonly modal: _angular_core.InputSignal<boolean>;
205
+ /** overlay-panel options (only used when modal=true) */
206
+ readonly panelKlass: _angular_core.InputSignal<string>;
207
+ readonly restoreFocus: _angular_core.InputSignal<boolean>;
208
+ readonly autoCapture: _angular_core.InputSignal<boolean>;
209
+ readonly deferCaptureElements: _angular_core.InputSignal<boolean>;
210
+ /** a11y (for listbox container) */
211
+ readonly ariaLabel: _angular_core.InputSignal<string>;
212
+ readonly ariaLabelledby: _angular_core.InputSignal<string>;
213
+ readonly ariaDescribedby: _angular_core.InputSignal<string>;
214
+ /**
215
+ * tabindex for listbox container:
216
+ * - Default: 0 (focusable, good for keyboard + typeahead)
217
+ * - Set -1 for programmatic focus only
218
+ * - Set null to omit tabindex attribute
219
+ */
220
+ readonly tabindex: _angular_core.InputSignal<number | null>;
221
+ readonly optionTemplate: _angular_core.InputSignal<TemplateRef<OptionTplContext<T>> | null>;
222
+ readonly items: _angular_core.InputSignal<T[]>;
223
+ readonly activeIndex: _angular_core.InputSignal<number>;
224
+ readonly displayWith: _angular_core.InputSignal<(item: T) => string>;
225
+ readonly emptyText: _angular_core.InputSignal<string>;
226
+ readonly containerKlass: _angular_core.InputSignal<string>;
227
+ readonly optionKlass: _angular_core.InputSignal<string>;
228
+ readonly optionActiveKlass: _angular_core.InputSignal<string>;
229
+ readonly optionInactiveKlass: _angular_core.InputSignal<string>;
230
+ readonly emptyKlass: _angular_core.InputSignal<string>;
231
+ optionTpl?: TemplateRef<OptionTplContext<T>>;
232
+ readonly optionMouseDown: _angular_core.OutputEmitterRef<{
233
+ item: T;
234
+ index: number;
235
+ }>;
236
+ readonly optionHover: _angular_core.OutputEmitterRef<number>;
237
+ /** Parent-controlled active index */
238
+ readonly activeIndexChange: _angular_core.OutputEmitterRef<number>;
239
+ /** Parent decides what selection means */
240
+ readonly requestSelectActive: _angular_core.OutputEmitterRef<void>;
241
+ /** Optional: parent can observe typeahead match */
242
+ readonly requestTypeaheadMatch: _angular_core.OutputEmitterRef<{
243
+ query: string;
244
+ index: number;
245
+ }>;
246
+ /** Optional: key stroke propagation */
247
+ readonly propagateKeys: _angular_core.InputSignal<boolean>;
248
+ readonly keyStroke: _angular_core.OutputEmitterRef<TngOptionListKeyStroke>;
249
+ readonly keyboard: _angular_core.InputSignal<boolean>;
250
+ readonly loop: _angular_core.InputSignal<boolean>;
251
+ readonly selectOnEnter: _angular_core.InputSignal<boolean>;
252
+ readonly typeahead: _angular_core.InputSignal<boolean>;
253
+ readonly typeaheadMode: _angular_core.InputSignal<TypeaheadMatchMode>;
254
+ readonly typeaheadResetMs: _angular_core.InputSignal<number>;
255
+ readonly pageJumpSize: _angular_core.InputSignal<number>;
256
+ private readonly typeaheadQuery;
257
+ private typeaheadTimer;
258
+ readonly hasItems: _angular_core.Signal<boolean>;
259
+ constructor();
260
+ get tpl(): TemplateRef<OptionTplContext<T>> | undefined;
261
+ display(item: T): string;
262
+ isActive(i: number): boolean;
263
+ optionClasses(i: number): string;
264
+ onMouseDown(item: T, index: number, ev: MouseEvent): void;
265
+ onMouseEnter(index: number): void;
266
+ onKeydown(ev: KeyboardEvent): void;
267
+ private emitKeyStroke;
268
+ private computeNextIndex;
269
+ /**
270
+ * Controlled activeIndex
271
+ * - Emit activeIndexChange (parent owns state)
272
+ * - Scrolling is handled by the effect() reacting to activeIndex()
273
+ */
274
+ private commitActive;
275
+ /**
276
+ * Scroll the active option into view.
277
+ * Let the browser pick the nearest scrollable ancestor.
278
+ */
279
+ private scrollIndexIntoView;
280
+ private onTypeaheadKey;
281
+ private findTypeaheadMatch;
282
+ private isPrintableKey;
283
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngOptionList<any>, never>;
284
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngOptionList<any>, "tng-option-list", never, { "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "panelKlass": { "alias": "panelKlass"; "required": false; "isSignal": true; }; "restoreFocus": { "alias": "restoreFocus"; "required": false; "isSignal": true; }; "autoCapture": { "alias": "autoCapture"; "required": false; "isSignal": true; }; "deferCaptureElements": { "alias": "deferCaptureElements"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "ariaDescribedby": { "alias": "ariaDescribedby"; "required": false; "isSignal": true; }; "tabindex": { "alias": "tabindex"; "required": false; "isSignal": true; }; "optionTemplate": { "alias": "optionTemplate"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "containerKlass": { "alias": "containerKlass"; "required": false; "isSignal": true; }; "optionKlass": { "alias": "optionKlass"; "required": false; "isSignal": true; }; "optionActiveKlass": { "alias": "optionActiveKlass"; "required": false; "isSignal": true; }; "optionInactiveKlass": { "alias": "optionInactiveKlass"; "required": false; "isSignal": true; }; "emptyKlass": { "alias": "emptyKlass"; "required": false; "isSignal": true; }; "propagateKeys": { "alias": "propagateKeys"; "required": false; "isSignal": true; }; "keyboard": { "alias": "keyboard"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "selectOnEnter": { "alias": "selectOnEnter"; "required": false; "isSignal": true; }; "typeahead": { "alias": "typeahead"; "required": false; "isSignal": true; }; "typeaheadMode": { "alias": "typeaheadMode"; "required": false; "isSignal": true; }; "typeaheadResetMs": { "alias": "typeaheadResetMs"; "required": false; "isSignal": true; }; "pageJumpSize": { "alias": "pageJumpSize"; "required": false; "isSignal": true; }; }, { "optionMouseDown": "optionMouseDown"; "optionHover": "optionHover"; "activeIndexChange": "activeIndexChange"; "requestSelectActive": "requestSelectActive"; "requestTypeaheadMatch": "requestTypeaheadMatch"; "keyStroke": "keyStroke"; }, ["optionTpl"], never, true, never>;
285
+ }
286
+
287
+ type TngPopoverPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
288
+ type TngPopoverCloseReason = 'outside-click' | 'escape' | 'programmatic';
289
+ declare class TngPopover {
290
+ contentTpl?: TemplateRef<unknown>;
291
+ triggerEl: ElementRef<HTMLElement>;
292
+ readonly open: _angular_core.InputSignal<boolean | null>;
293
+ readonly placement: _angular_core.InputSignal<TngPopoverPlacement>;
294
+ readonly offset: _angular_core.InputSignal<number>;
295
+ readonly width: _angular_core.InputSignal<number | "anchor">;
296
+ readonly closeOnOutsideClick: _angular_core.InputSignal<boolean>;
297
+ readonly closeOnEscape: _angular_core.InputSignal<boolean>;
298
+ readonly rootKlass: _angular_core.InputSignal<string>;
299
+ readonly triggerKlass: _angular_core.InputSignal<string>;
300
+ readonly panelKlass: _angular_core.InputSignal<string>;
301
+ readonly opened: _angular_core.OutputEmitterRef<void>;
302
+ readonly closed: _angular_core.OutputEmitterRef<TngPopoverCloseReason>;
303
+ readonly openChange: _angular_core.OutputEmitterRef<boolean>;
304
+ private readonly internalOpen;
305
+ readonly isOpen: _angular_core.Signal<boolean>;
306
+ constructor();
307
+ toggle(): void;
308
+ requestOpen(): void;
309
+ requestClose(reason: TngPopoverCloseReason): void;
310
+ onOverlayClosed(reason: any): void;
311
+ onTriggerClick(): void;
312
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngPopover, never>;
313
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngPopover, "tng-popover", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "closeOnOutsideClick": { "alias": "closeOnOutsideClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "rootKlass": { "alias": "rootKlass"; "required": false; "isSignal": true; }; "triggerKlass": { "alias": "triggerKlass"; "required": false; "isSignal": true; }; "panelKlass": { "alias": "panelKlass"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; "openChange": "openChange"; }, ["contentTpl"], ["[tngPopoverTrigger]", "[tngPopoverContent]"], true, never>;
314
+ }
315
+
316
+ type TngSnackbarIntent = 'default' | 'success' | 'info' | 'warning' | 'error';
317
+ type TngSnackbarItem = {
318
+ id: string;
319
+ message: string;
320
+ intent?: TngSnackbarIntent;
321
+ /** Optional action button */
322
+ actionLabel?: string;
323
+ /** Auto-dismiss duration (ms). 0/undefined disables auto-dismiss. */
324
+ durationMs?: number;
325
+ };
326
+
327
+ type TngSnackbarPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
328
+ declare class TngSnackbarHost {
329
+ /** Controlled items array */
330
+ readonly items: _angular_core.InputSignal<TngSnackbarItem[]>;
331
+ /** Placement on screen */
332
+ readonly position: _angular_core.InputSignal<TngSnackbarPosition>;
333
+ /** Max stack size (visual). Consumer should also enforce if desired. */
334
+ readonly max: _angular_core.InputSignal<number>;
335
+ /** Outputs */
336
+ readonly dismiss: _angular_core.OutputEmitterRef<{
337
+ id: string;
338
+ reason: "timeout" | "dismiss" | "action";
339
+ }>;
340
+ readonly hostKlass: _angular_core.InputSignal<string>;
341
+ readonly itemKlass: _angular_core.InputSignal<string>;
342
+ readonly itemInnerKlass: _angular_core.InputSignal<string>;
343
+ readonly messageKlass: _angular_core.InputSignal<string>;
344
+ readonly actionKlass: _angular_core.InputSignal<string>;
345
+ readonly dismissBtnKlass: _angular_core.InputSignal<string>;
346
+ /** Intent -> klass mapping */
347
+ readonly intentKlass: _angular_core.InputSignal<(intent: TngSnackbarIntent) => string>;
348
+ readonly hostPositionKlass: _angular_core.Signal<string>;
349
+ /** Track which ids have active timers */
350
+ private readonly timers;
351
+ constructor();
352
+ itemClasses(item: TngSnackbarItem): string;
353
+ onDismiss(id: string): void;
354
+ onAction(id: string): void;
355
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngSnackbarHost, never>;
356
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngSnackbarHost, "tng-snackbar-host", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "hostKlass": { "alias": "hostKlass"; "required": false; "isSignal": true; }; "itemKlass": { "alias": "itemKlass"; "required": false; "isSignal": true; }; "itemInnerKlass": { "alias": "itemInnerKlass"; "required": false; "isSignal": true; }; "messageKlass": { "alias": "messageKlass"; "required": false; "isSignal": true; }; "actionKlass": { "alias": "actionKlass"; "required": false; "isSignal": true; }; "dismissBtnKlass": { "alias": "dismissBtnKlass"; "required": false; "isSignal": true; }; "intentKlass": { "alias": "intentKlass"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, never, true, never>;
357
+ }
358
+
359
+ type TngTooltipPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
360
+ type TngTooltipCloseReason = 'escape' | 'blur' | 'programmatic';
361
+ declare class TngTooltip {
362
+ triggerEl: ElementRef<HTMLElement>;
363
+ /**
364
+ * Option B: projected template support
365
+ * Usage:
366
+ * <tng-tooltip>
367
+ * <ng-template #tooltipContent>...</ng-template>
368
+ * <button>...</button>
369
+ * </tng-tooltip>
370
+ */
371
+ projectedTpl?: TemplateRef<unknown>;
372
+ /** Option A: explicit input template (kept for flexibility) */
373
+ readonly contentTpl: _angular_core.InputSignal<TemplateRef<unknown> | null>;
374
+ /** Simple text tooltip */
375
+ readonly text: _angular_core.InputSignal<string>;
376
+ /** Behavior */
377
+ readonly placement: _angular_core.InputSignal<TngTooltipPlacement>;
378
+ readonly offset: _angular_core.InputSignal<number>;
379
+ readonly showDelay: _angular_core.InputSignal<number>;
380
+ readonly hideDelay: _angular_core.InputSignal<number>;
381
+ readonly disabled: _angular_core.InputSignal<boolean>;
382
+ /** Klass */
383
+ readonly panelKlass: _angular_core.InputSignal<string>;
384
+ readonly surfaceKlass: _angular_core.InputSignal<string>;
385
+ /** Events */
386
+ readonly opened: _angular_core.OutputEmitterRef<void>;
387
+ readonly closed: _angular_core.OutputEmitterRef<TngTooltipCloseReason>;
388
+ readonly open: _angular_core.WritableSignal<boolean>;
389
+ private showTimer;
390
+ private hideTimer;
391
+ /** Resolved template (Option A overrides Option B) */
392
+ readonly tpl: _angular_core.Signal<TemplateRef<unknown> | null>;
393
+ readonly hasContent: _angular_core.Signal<boolean>;
394
+ private clearTimers;
395
+ private requestOpen;
396
+ private requestClose;
397
+ onMouseEnter(): void;
398
+ onMouseLeave(): void;
399
+ onFocusIn(): void;
400
+ onFocusOut(): void;
401
+ onDocKeydown(ev: KeyboardEvent): void;
402
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngTooltip, never>;
403
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngTooltip, "tng-tooltip", never, { "contentTpl": { "alias": "contentTpl"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "showDelay": { "alias": "showDelay"; "required": false; "isSignal": true; }; "hideDelay": { "alias": "hideDelay"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "panelKlass": { "alias": "panelKlass"; "required": false; "isSignal": true; }; "surfaceKlass": { "alias": "surfaceKlass"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; }, ["projectedTpl"], ["*"], true, never>;
404
+ }
405
+
406
+ export { TngConnectedOverlay, TngDialog, TngDialogInitialFocus, TngOptionList, TngOverlayPanel, TngOverlayRef, TngPopover, TngSnackbarHost, TngTooltip };
407
+ export type { TngConnectedOverlayCloseReason, TngDialogCloseReason, TngOptionListKeyAction, TngOptionListKeyStroke, TngOverlayCloseReason, TngOverlayPlacement, TngPopoverCloseReason, TngPopoverPlacement, TngSnackbarIntent, TngSnackbarItem, TngSnackbarPosition, TngTooltipCloseReason, TngTooltipPlacement };
408
+ //# sourceMappingURL=tociva-tailng-ui-popups-overlays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tociva-tailng-ui-popups-overlays.d.ts","sources":["../../../../libs/ui/popups-overlays/src/lib/connected-overlay/connected-overlay.component.ts","../../../../libs/ui/popups-overlays/src/lib/overlay-ref/overlay-ref.component.ts","../../../../libs/ui/popups-overlays/src/lib/overlay-panel/overlay-panel.component.ts","../../../../libs/ui/popups-overlays/src/lib/dialog/dialog.component.ts","../../../../libs/ui/popups-overlays/src/lib/dialog/dialog-initial-focus.directive.ts","../../../../libs/ui/popups-overlays/src/lib/option-list/option-list.component.ts","../../../../libs/ui/popups-overlays/src/lib/popover/popover.component.ts","../../../../libs/ui/popups-overlays/src/lib/snackbar/snackbar.types.ts","../../../../libs/ui/popups-overlays/src/lib/snackbar/snackbar-host.component.ts","../../../../libs/ui/popups-overlays/src/lib/tooltip/tooltip.component.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { SafeHtml } from '@angular/platform-browser';
3
+
4
+ type TngCodeLanguage = 'text' | 'bash' | 'json' | 'typescript' | 'ts' | 'html' | 'css';
5
+ type TngHighlightedHtml = string;
6
+ interface TngCodeHighlighter {
7
+ /**
8
+ * Must return HTML-safe highlighted output (no <script>, etc).
9
+ * Code-block will inject this via [innerHTML].
10
+ */
11
+ highlight(code: string, language: TngCodeLanguage): TngHighlightedHtml;
12
+ }
13
+
14
+ declare class TngCodeBlock {
15
+ private sanitizer;
16
+ content: _angular_core.InputSignal<string | null>;
17
+ language: _angular_core.InputSignal<TngCodeLanguage>;
18
+ showLineNumbers: _angular_core.InputSignal<boolean>;
19
+ wrap: _angular_core.InputSignal<boolean>;
20
+ highlighter: _angular_core.InputSignal<TngCodeHighlighter | null>;
21
+ rootKlass: _angular_core.InputSignal<string>;
22
+ bodyKlass: _angular_core.InputSignal<string>;
23
+ gutterKlass: _angular_core.InputSignal<string>;
24
+ preKlass: _angular_core.InputSignal<string>;
25
+ codeKlass: _angular_core.InputSignal<string>;
26
+ private projectedEl;
27
+ readonly code: _angular_core.Signal<string>;
28
+ readonly lines: _angular_core.Signal<number>;
29
+ readonly lineNumbers: _angular_core.Signal<number[]>;
30
+ /**
31
+ * IMPORTANT:
32
+ * - Without highlighter: return escaped string (safe)
33
+ * - With highlighter: return SafeHtml via bypassSecurityTrustHtml
34
+ * because Shiki uses inline styles which Angular sanitization strips.
35
+ */
36
+ readonly renderedHtml: _angular_core.Signal<string | SafeHtml>;
37
+ readonly rootKlassFinal: _angular_core.Signal<string>;
38
+ readonly bodyKlassFinal: _angular_core.Signal<string>;
39
+ readonly gutterKlassFinal: _angular_core.Signal<string>;
40
+ readonly preKlassFinal: _angular_core.Signal<string>;
41
+ readonly codeKlassFinal: _angular_core.Signal<string>;
42
+ private join;
43
+ private escapeHtml;
44
+ copyklass: _angular_core.InputSignal<string>;
45
+ copyLabel: _angular_core.InputSignal<string>;
46
+ text: _angular_core.InputSignal<string>;
47
+ copied: _angular_core.WritableSignal<boolean>;
48
+ copyCode(): void;
49
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngCodeBlock, never>;
50
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngCodeBlock, "tng-code-block", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "language": { "alias": "language"; "required": false; "isSignal": true; }; "showLineNumbers": { "alias": "showLineNumbers"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "highlighter": { "alias": "highlighter"; "required": false; "isSignal": true; }; "rootKlass": { "alias": "rootKlass"; "required": false; "isSignal": true; }; "bodyKlass": { "alias": "bodyKlass"; "required": false; "isSignal": true; }; "gutterKlass": { "alias": "gutterKlass"; "required": false; "isSignal": true; }; "preKlass": { "alias": "preKlass"; "required": false; "isSignal": true; }; "codeKlass": { "alias": "codeKlass"; "required": false; "isSignal": true; }; "copyklass": { "alias": "copyklass"; "required": false; "isSignal": true; }; "copyLabel": { "alias": "copyLabel"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
51
+ }
52
+
53
+ type CopyButtonVariant = 'ghost' | 'outline' | 'solid';
54
+ type CopyButtonSize = 'sm' | 'md';
55
+ declare class TngCopyButton {
56
+ text: _angular_core.InputSignal<string>;
57
+ variant: _angular_core.InputSignal<CopyButtonVariant>;
58
+ size: _angular_core.InputSignal<CopyButtonSize>;
59
+ /** how long to show "copied" state */
60
+ resetAfterMs: _angular_core.InputSignal<number>;
61
+ copied: _angular_core.WritableSignal<boolean>;
62
+ private resetTimer;
63
+ copy(): Promise<void>;
64
+ private base;
65
+ private sizes;
66
+ private variants;
67
+ klass: _angular_core.Signal<string>;
68
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngCopyButton, never>;
69
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngCopyButton, "tng-copy-button", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "resetAfterMs": { "alias": "resetAfterMs"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[tngCopied]"], true, never>;
70
+ }
71
+
72
+ export { TngCodeBlock, TngCopyButton };
73
+ export type { TngCodeHighlighter, TngCodeLanguage, TngHighlightedHtml };
74
+ //# sourceMappingURL=tociva-tailng-ui-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tociva-tailng-ui-utilities.d.ts","sources":["../../../../libs/ui/utilities/src/lib/code-block/code-highlighter.type.ts","../../../../libs/ui/utilities/src/lib/code-block/code-block.component.ts","../../../../libs/ui/utilities/src/lib/copy-button/copy-button.component.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":";;;;AASM,KAAA,kBAAA;;AAGJ;;;AAGG;;AAEJ;;ACbD,cAAA,YAAA;;AAWE,aAAO,aAAA,CAAA,WAAA;AACP,cAAQ,aAAA,CAAA,WAAA,CAAA,eAAA;AACR,qBAAe,aAAA,CAAA,WAAA;AACf,UAAI,aAAA,CAAA,WAAA;AACJ,iBAAW,aAAA,CAAA,WAAA,CAAA,kBAAA;AAKX,eAAS,aAAA,CAAA,WAAA;AACT,eAAS,aAAA,CAAA,WAAA;AACT,iBAAW,aAAA,CAAA,WAAA;AACX,cAAQ,aAAA,CAAA,WAAA;AACR,eAAS,aAAA,CAAA,WAAA;;mBAII,aAAA,CAAA,MAAA;oBAMC,aAAA,CAAA,MAAA;0BAKM,aAAA,CAAA,MAAA;AAIpB;;;;;AAKG;2BACkB,aAAA,CAAA,MAAA,UAAA,QAAA;6BAcE,aAAA,CAAA,MAAA;6BAOA,aAAA,CAAA,MAAA;+BAEE,aAAA,CAAA,MAAA;4BAOH,aAAA,CAAA,MAAA;6BASC,aAAA,CAAA,MAAA;AAEvB;AAIA;AASF,eAAS,aAAA,CAAA,WAAA;AAIT,eAAS,aAAA,CAAA,WAAA;AAEP,UAAI,aAAA,CAAA,WAAA;AACJ,YAAM,aAAA,CAAA,cAAA;;;;AAOP;;ACvHD,KAAA,iBAAA;AACA,KAAA,cAAA;AAEA,cAAA,aAAA;AAME,UAAI,aAAA,CAAA,WAAA;AAEJ,aAAO,aAAA,CAAA,WAAA,CAAA,iBAAA;AACP,UAAI,aAAA,CAAA,WAAA,CAAA,cAAA;;AAGJ,kBAAY,aAAA,CAAA,WAAA;AAEZ,YAAM,aAAA,CAAA,cAAA;;AAGA,YAAA,OAAA;;;;AA0BN,WAAK,aAAA,CAAA,MAAA;;;AACN;;;;"}