@neural-ui/core 1.2.1 → 1.3.1

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 (239) hide show
  1. package/README.md +56 -88
  2. package/accordion/package.json +4 -0
  3. package/alert/package.json +4 -0
  4. package/autocomplete/package.json +4 -0
  5. package/avatar/package.json +4 -0
  6. package/badge/package.json +4 -0
  7. package/block-ui/package.json +4 -0
  8. package/breadcrumb/package.json +4 -0
  9. package/button/package.json +4 -0
  10. package/card/package.json +4 -0
  11. package/chart/package.json +4 -0
  12. package/checkbox/package.json +4 -0
  13. package/chip/package.json +4 -0
  14. package/code-block/package.json +4 -0
  15. package/color-picker/package.json +4 -0
  16. package/command-palette/package.json +4 -0
  17. package/confirm-dialog/package.json +4 -0
  18. package/context-menu/package.json +4 -0
  19. package/dashboard-grid/package.json +4 -0
  20. package/date-input/package.json +4 -0
  21. package/divider/package.json +4 -0
  22. package/empty-state/package.json +4 -0
  23. package/fesm2022/neural-ui-core-accordion.mjs +162 -0
  24. package/fesm2022/neural-ui-core-accordion.mjs.map +1 -0
  25. package/fesm2022/neural-ui-core-alert.mjs +116 -0
  26. package/fesm2022/neural-ui-core-alert.mjs.map +1 -0
  27. package/fesm2022/neural-ui-core-autocomplete.mjs +406 -0
  28. package/fesm2022/neural-ui-core-autocomplete.mjs.map +1 -0
  29. package/fesm2022/neural-ui-core-avatar.mjs +109 -0
  30. package/fesm2022/neural-ui-core-avatar.mjs.map +1 -0
  31. package/fesm2022/neural-ui-core-badge.mjs +54 -0
  32. package/fesm2022/neural-ui-core-badge.mjs.map +1 -0
  33. package/fesm2022/neural-ui-core-block-ui.mjs +95 -0
  34. package/fesm2022/neural-ui-core-block-ui.mjs.map +1 -0
  35. package/fesm2022/neural-ui-core-breadcrumb.mjs +84 -0
  36. package/fesm2022/neural-ui-core-breadcrumb.mjs.map +1 -0
  37. package/fesm2022/neural-ui-core-button.mjs +125 -0
  38. package/fesm2022/neural-ui-core-button.mjs.map +1 -0
  39. package/fesm2022/neural-ui-core-card.mjs +69 -0
  40. package/fesm2022/neural-ui-core-card.mjs.map +1 -0
  41. package/fesm2022/neural-ui-core-chart.mjs +287 -0
  42. package/fesm2022/neural-ui-core-chart.mjs.map +1 -0
  43. package/fesm2022/neural-ui-core-checkbox.mjs +138 -0
  44. package/fesm2022/neural-ui-core-checkbox.mjs.map +1 -0
  45. package/fesm2022/neural-ui-core-chip.mjs +130 -0
  46. package/fesm2022/neural-ui-core-chip.mjs.map +1 -0
  47. package/fesm2022/neural-ui-core-code-block.mjs +250 -0
  48. package/fesm2022/neural-ui-core-code-block.mjs.map +1 -0
  49. package/fesm2022/neural-ui-core-color-picker.mjs +435 -0
  50. package/fesm2022/neural-ui-core-color-picker.mjs.map +1 -0
  51. package/fesm2022/neural-ui-core-command-palette.mjs +235 -0
  52. package/fesm2022/neural-ui-core-command-palette.mjs.map +1 -0
  53. package/fesm2022/neural-ui-core-confirm-dialog.mjs +118 -0
  54. package/fesm2022/neural-ui-core-confirm-dialog.mjs.map +1 -0
  55. package/fesm2022/neural-ui-core-context-menu.mjs +158 -0
  56. package/fesm2022/neural-ui-core-context-menu.mjs.map +1 -0
  57. package/fesm2022/neural-ui-core-dashboard-grid.mjs +144 -0
  58. package/fesm2022/neural-ui-core-dashboard-grid.mjs.map +1 -0
  59. package/fesm2022/neural-ui-core-date-input.mjs +1332 -0
  60. package/fesm2022/neural-ui-core-date-input.mjs.map +1 -0
  61. package/fesm2022/neural-ui-core-divider.mjs +54 -0
  62. package/fesm2022/neural-ui-core-divider.mjs.map +1 -0
  63. package/fesm2022/neural-ui-core-empty-state.mjs +84 -0
  64. package/fesm2022/neural-ui-core-empty-state.mjs.map +1 -0
  65. package/fesm2022/neural-ui-core-filter-bar.mjs +118 -0
  66. package/fesm2022/neural-ui-core-filter-bar.mjs.map +1 -0
  67. package/fesm2022/neural-ui-core-icon.mjs +50 -0
  68. package/fesm2022/neural-ui-core-icon.mjs.map +1 -0
  69. package/fesm2022/neural-ui-core-image-viewer.mjs +309 -0
  70. package/fesm2022/neural-ui-core-image-viewer.mjs.map +1 -0
  71. package/fesm2022/neural-ui-core-input-otp.mjs +192 -0
  72. package/fesm2022/neural-ui-core-input-otp.mjs.map +1 -0
  73. package/fesm2022/neural-ui-core-input.mjs +320 -0
  74. package/fesm2022/neural-ui-core-input.mjs.map +1 -0
  75. package/fesm2022/neural-ui-core-knob.mjs +323 -0
  76. package/fesm2022/neural-ui-core-knob.mjs.map +1 -0
  77. package/fesm2022/neural-ui-core-meter-group.mjs +122 -0
  78. package/fesm2022/neural-ui-core-meter-group.mjs.map +1 -0
  79. package/fesm2022/neural-ui-core-modal.mjs +156 -0
  80. package/fesm2022/neural-ui-core-modal.mjs.map +1 -0
  81. package/fesm2022/neural-ui-core-multiselect.mjs +825 -0
  82. package/fesm2022/neural-ui-core-multiselect.mjs.map +1 -0
  83. package/fesm2022/neural-ui-core-nav.mjs +952 -0
  84. package/fesm2022/neural-ui-core-nav.mjs.map +1 -0
  85. package/fesm2022/neural-ui-core-notification-center.mjs +264 -0
  86. package/fesm2022/neural-ui-core-notification-center.mjs.map +1 -0
  87. package/fesm2022/neural-ui-core-number-input.mjs +331 -0
  88. package/fesm2022/neural-ui-core-number-input.mjs.map +1 -0
  89. package/fesm2022/neural-ui-core-pagination.mjs +198 -0
  90. package/fesm2022/neural-ui-core-pagination.mjs.map +1 -0
  91. package/fesm2022/neural-ui-core-popover.mjs +207 -0
  92. package/fesm2022/neural-ui-core-popover.mjs.map +1 -0
  93. package/fesm2022/neural-ui-core-progress-bar.mjs +105 -0
  94. package/fesm2022/neural-ui-core-progress-bar.mjs.map +1 -0
  95. package/fesm2022/neural-ui-core-radio.mjs +171 -0
  96. package/fesm2022/neural-ui-core-radio.mjs.map +1 -0
  97. package/fesm2022/neural-ui-core-rating.mjs +151 -0
  98. package/fesm2022/neural-ui-core-rating.mjs.map +1 -0
  99. package/fesm2022/neural-ui-core-select.mjs +710 -0
  100. package/fesm2022/neural-ui-core-select.mjs.map +1 -0
  101. package/fesm2022/neural-ui-core-sidebar.mjs +214 -0
  102. package/fesm2022/neural-ui-core-sidebar.mjs.map +1 -0
  103. package/fesm2022/neural-ui-core-skeleton.mjs +40 -0
  104. package/fesm2022/neural-ui-core-skeleton.mjs.map +1 -0
  105. package/fesm2022/neural-ui-core-slider.mjs +146 -0
  106. package/fesm2022/neural-ui-core-slider.mjs.map +1 -0
  107. package/fesm2022/neural-ui-core-spinner.mjs +113 -0
  108. package/fesm2022/neural-ui-core-spinner.mjs.map +1 -0
  109. package/fesm2022/neural-ui-core-split-button.mjs +252 -0
  110. package/fesm2022/neural-ui-core-split-button.mjs.map +1 -0
  111. package/fesm2022/neural-ui-core-splitter.mjs +174 -0
  112. package/fesm2022/neural-ui-core-splitter.mjs.map +1 -0
  113. package/fesm2022/neural-ui-core-stats-card.mjs +163 -0
  114. package/fesm2022/neural-ui-core-stats-card.mjs.map +1 -0
  115. package/fesm2022/neural-ui-core-stepper.mjs +204 -0
  116. package/fesm2022/neural-ui-core-stepper.mjs.map +1 -0
  117. package/fesm2022/neural-ui-core-switch.mjs +111 -0
  118. package/fesm2022/neural-ui-core-switch.mjs.map +1 -0
  119. package/fesm2022/neural-ui-core-table.mjs +1872 -0
  120. package/fesm2022/neural-ui-core-table.mjs.map +1 -0
  121. package/fesm2022/neural-ui-core-tabs.mjs +338 -0
  122. package/fesm2022/neural-ui-core-tabs.mjs.map +1 -0
  123. package/fesm2022/neural-ui-core-textarea.mjs +188 -0
  124. package/fesm2022/neural-ui-core-textarea.mjs.map +1 -0
  125. package/fesm2022/neural-ui-core-timeline.mjs +117 -0
  126. package/fesm2022/neural-ui-core-timeline.mjs.map +1 -0
  127. package/fesm2022/neural-ui-core-toast.mjs +171 -0
  128. package/fesm2022/neural-ui-core-toast.mjs.map +1 -0
  129. package/fesm2022/neural-ui-core-toggle-button-group.mjs +162 -0
  130. package/fesm2022/neural-ui-core-toggle-button-group.mjs.map +1 -0
  131. package/fesm2022/neural-ui-core-toolbar.mjs +67 -0
  132. package/fesm2022/neural-ui-core-toolbar.mjs.map +1 -0
  133. package/fesm2022/neural-ui-core-tooltip.mjs +151 -0
  134. package/fesm2022/neural-ui-core-tooltip.mjs.map +1 -0
  135. package/fesm2022/neural-ui-core-url-state.mjs +96 -0
  136. package/fesm2022/neural-ui-core-url-state.mjs.map +1 -0
  137. package/fesm2022/neural-ui-core-virtual-list.mjs +126 -0
  138. package/fesm2022/neural-ui-core-virtual-list.mjs.map +1 -0
  139. package/fesm2022/neural-ui-core.mjs +11 -8544
  140. package/fesm2022/neural-ui-core.mjs.map +1 -1
  141. package/filter-bar/package.json +4 -0
  142. package/icon/package.json +4 -0
  143. package/image-viewer/package.json +4 -0
  144. package/input/package.json +4 -0
  145. package/input-otp/package.json +4 -0
  146. package/knob/package.json +4 -0
  147. package/meter-group/package.json +4 -0
  148. package/modal/package.json +4 -0
  149. package/multiselect/package.json +4 -0
  150. package/nav/package.json +4 -0
  151. package/notification-center/package.json +4 -0
  152. package/number-input/package.json +4 -0
  153. package/package.json +252 -5
  154. package/pagination/package.json +4 -0
  155. package/popover/package.json +4 -0
  156. package/progress-bar/package.json +4 -0
  157. package/radio/package.json +4 -0
  158. package/rating/package.json +4 -0
  159. package/select/package.json +4 -0
  160. package/sidebar/package.json +4 -0
  161. package/skeleton/package.json +4 -0
  162. package/slider/package.json +4 -0
  163. package/spinner/package.json +4 -0
  164. package/split-button/package.json +4 -0
  165. package/splitter/package.json +4 -0
  166. package/stats-card/package.json +4 -0
  167. package/stepper/package.json +4 -0
  168. package/styles/_tokens.scss +202 -0
  169. package/styles.scss +1 -0
  170. package/switch/package.json +4 -0
  171. package/table/package.json +4 -0
  172. package/tabs/package.json +4 -0
  173. package/textarea/package.json +4 -0
  174. package/timeline/package.json +4 -0
  175. package/toast/package.json +4 -0
  176. package/toggle-button-group/package.json +4 -0
  177. package/toolbar/package.json +4 -0
  178. package/tooltip/package.json +4 -0
  179. package/types/neural-ui-core-accordion.d.ts +55 -0
  180. package/types/neural-ui-core-alert.d.ts +47 -0
  181. package/types/neural-ui-core-autocomplete.d.ts +75 -0
  182. package/types/neural-ui-core-avatar.d.ts +39 -0
  183. package/types/neural-ui-core-badge.d.ts +36 -0
  184. package/types/neural-ui-core-block-ui.d.ts +46 -0
  185. package/types/neural-ui-core-breadcrumb.d.ts +38 -0
  186. package/types/neural-ui-core-button.d.ts +55 -0
  187. package/types/neural-ui-core-card.d.ts +37 -0
  188. package/types/neural-ui-core-chart.d.ts +236 -0
  189. package/types/neural-ui-core-checkbox.d.ts +33 -0
  190. package/types/neural-ui-core-chip.d.ts +53 -0
  191. package/types/neural-ui-core-code-block.d.ts +55 -0
  192. package/types/neural-ui-core-color-picker.d.ts +55 -0
  193. package/types/neural-ui-core-command-palette.d.ts +56 -0
  194. package/types/neural-ui-core-confirm-dialog.d.ts +50 -0
  195. package/types/neural-ui-core-context-menu.d.ts +66 -0
  196. package/types/neural-ui-core-dashboard-grid.d.ts +41 -0
  197. package/types/neural-ui-core-date-input.d.ts +178 -0
  198. package/types/neural-ui-core-divider.d.ts +20 -0
  199. package/types/neural-ui-core-empty-state.d.ts +32 -0
  200. package/types/neural-ui-core-filter-bar.d.ts +49 -0
  201. package/types/neural-ui-core-icon.d.ts +33 -0
  202. package/types/neural-ui-core-image-viewer.d.ts +67 -0
  203. package/types/neural-ui-core-input-otp.d.ts +49 -0
  204. package/types/neural-ui-core-input.d.ts +86 -0
  205. package/types/neural-ui-core-knob.d.ts +68 -0
  206. package/types/neural-ui-core-meter-group.d.ts +52 -0
  207. package/types/neural-ui-core-modal.d.ts +54 -0
  208. package/types/neural-ui-core-multiselect.d.ts +138 -0
  209. package/types/neural-ui-core-nav.d.ts +69 -0
  210. package/types/neural-ui-core-notification-center.d.ts +60 -0
  211. package/types/neural-ui-core-number-input.d.ts +63 -0
  212. package/types/neural-ui-core-pagination.d.ts +30 -0
  213. package/types/neural-ui-core-popover.d.ts +73 -0
  214. package/types/neural-ui-core-progress-bar.d.ts +35 -0
  215. package/types/neural-ui-core-radio.d.ts +51 -0
  216. package/types/neural-ui-core-rating.d.ts +34 -0
  217. package/types/neural-ui-core-select.d.ts +170 -0
  218. package/types/neural-ui-core-sidebar.d.ts +57 -0
  219. package/types/neural-ui-core-skeleton.d.ts +22 -0
  220. package/types/neural-ui-core-slider.d.ts +42 -0
  221. package/types/neural-ui-core-spinner.d.ts +38 -0
  222. package/types/neural-ui-core-split-button.d.ts +65 -0
  223. package/types/neural-ui-core-splitter.d.ts +28 -0
  224. package/types/neural-ui-core-stats-card.d.ts +39 -0
  225. package/types/neural-ui-core-stepper.d.ts +51 -0
  226. package/types/neural-ui-core-switch.d.ts +34 -0
  227. package/types/neural-ui-core-table.d.ts +285 -0
  228. package/types/neural-ui-core-tabs.d.ts +88 -0
  229. package/types/neural-ui-core-textarea.d.ts +52 -0
  230. package/types/neural-ui-core-timeline.d.ts +33 -0
  231. package/types/neural-ui-core-toast.d.ts +70 -0
  232. package/types/neural-ui-core-toggle-button-group.d.ts +63 -0
  233. package/types/neural-ui-core-toolbar.d.ts +36 -0
  234. package/types/neural-ui-core-tooltip.d.ts +48 -0
  235. package/types/neural-ui-core-url-state.d.ts +58 -0
  236. package/types/neural-ui-core-virtual-list.d.ts +60 -0
  237. package/types/neural-ui-core.d.ts +3 -2105
  238. package/url-state/package.json +4 -0
  239. package/virtual-list/package.json +4 -0
@@ -0,0 +1,68 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ControlValueAccessor } from '@angular/forms';
3
+
4
+ /**
5
+ * NeuralUI Knob Component
6
+ *
7
+ * Control de dial rotatorio para selección de valores numéricos. Implementa CVA.
8
+ *
9
+ * Uso: <neu-knob [min]="0" [max]="100" formControlName="volume" />
10
+ */
11
+ declare class NeuKnobComponent implements ControlValueAccessor {
12
+ /** Valor mínimo / Min value */
13
+ readonly min: _angular_core.InputSignal<number>;
14
+ /** Valor máximo / Max value */
15
+ readonly max: _angular_core.InputSignal<number>;
16
+ /** Incremento por paso / Step increment */
17
+ readonly step: _angular_core.InputSignal<number>;
18
+ /** Tamaño del dial en px / Dial size in px */
19
+ readonly size: _angular_core.InputSignal<number>;
20
+ /** Muestra el valor numérico en el centro / Shows the numeric value in the center */
21
+ readonly showValue: _angular_core.InputSignal<boolean>;
22
+ /** Etiqueta visible / Visible label */
23
+ readonly label: _angular_core.InputSignal<string>;
24
+ /** Emitido en cada cambio / Emitted on each change */
25
+ readonly valueChange: _angular_core.OutputEmitterRef<number>;
26
+ readonly _id: string;
27
+ readonly _cvaDisabled: _angular_core.WritableSignal<boolean>;
28
+ readonly _value: _angular_core.WritableSignal<number>;
29
+ readonly _strokeWidth: _angular_core.Signal<number>;
30
+ readonly _radius: _angular_core.Signal<number>;
31
+ readonly _circumference: _angular_core.Signal<number>;
32
+ /** Arc spans 260° (from -40° to 220°) */
33
+ readonly _arcLength: _angular_core.Signal<number>;
34
+ readonly _normalizedValue: _angular_core.Signal<number>;
35
+ readonly _arcDashArray: _angular_core.Signal<string>;
36
+ readonly _arcDashOffset: _angular_core.Signal<number>;
37
+ readonly _indicatorAngle: _angular_core.Signal<number>;
38
+ readonly _indicatorX: _angular_core.Signal<number>;
39
+ readonly _indicatorY: _angular_core.Signal<number>;
40
+ private _dragStartAngle;
41
+ private _dragStartValue;
42
+ private _onChange;
43
+ private _onTouched;
44
+ private readonly _el;
45
+ /** Calcula el ángulo en grados desde el centro del dial al punto (x, y).
46
+ * Calculates the angle in degrees from the dial center to point (x, y). */
47
+ private _getAngle;
48
+ readonly hostClasses: _angular_core.Signal<{
49
+ 'neu-knob': boolean;
50
+ 'neu-knob--disabled': boolean;
51
+ }>;
52
+ writeValue(val: number | null): void;
53
+ registerOnChange(fn: (v: number) => void): void;
54
+ registerOnTouched(fn: () => void): void;
55
+ setDisabledState(disabled: boolean): void;
56
+ onMouseDown(event: MouseEvent): void;
57
+ onTouchStart(event: TouchEvent): void;
58
+ onKeyDown(event: KeyboardEvent): void;
59
+ /** Aplica el drag circular calculando el delta de ángulo respecto al punto inicial.
60
+ * Applies circular drag by computing the angle delta from the start point. */
61
+ private _applyCircularDrag;
62
+ private _emit;
63
+ private _clamp;
64
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuKnobComponent, never>;
65
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuKnobComponent, "neu-knob", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
66
+ }
67
+
68
+ export { NeuKnobComponent };
@@ -0,0 +1,52 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ interface NeuMeterItem {
4
+ /** Etiqueta del segmento / Segment label */
5
+ label: string;
6
+ /** Valor numérico del segmento / Numeric value of the segment */
7
+ value: number;
8
+ /** Color CSS opcional / Optional CSS color */
9
+ color?: string;
10
+ }
11
+ /**
12
+ * NeuralUI MeterGroup Component
13
+ *
14
+ * Barra de progreso multi-segmento que muestra la distribución de valores.
15
+ *
16
+ * Uso:
17
+ * <neu-meter-group [items]="meters" [total]="100" />
18
+ */
19
+ declare class NeuMeterGroupComponent {
20
+ /** Segmentos del medidor / Meter segments */
21
+ readonly items: _angular_core.InputSignal<NeuMeterItem[]>;
22
+ /** Total de referencia (0 = suma de items) / Reference total (0 = sum of items) */
23
+ readonly total: _angular_core.InputSignal<number>;
24
+ /** Altura de la barra en px / Bar height in px */
25
+ readonly height: _angular_core.InputSignal<number>;
26
+ /** Esquinas redondeadas / Rounded corners */
27
+ readonly rounded: _angular_core.InputSignal<boolean>;
28
+ /** Muestra leyenda debajo / Shows legend below */
29
+ readonly showLegend: _angular_core.InputSignal<boolean>;
30
+ /** Aria-label de la barra / Aria-label for the bar */
31
+ readonly ariaLabel: _angular_core.InputSignal<string>;
32
+ readonly hostClasses: _angular_core.Signal<{
33
+ 'neu-meter-group': boolean;
34
+ 'neu-meter-group--rounded': boolean;
35
+ }>;
36
+ readonly _usedSum: _angular_core.Signal<number>;
37
+ readonly _effectiveTotal: _angular_core.Signal<number>;
38
+ readonly _segments: _angular_core.Signal<{
39
+ pct: number;
40
+ /** Etiqueta del segmento / Segment label */
41
+ label: string;
42
+ /** Valor numérico del segmento / Numeric value of the segment */
43
+ value: number;
44
+ /** Color CSS opcional / Optional CSS color */
45
+ color?: string;
46
+ }[]>;
47
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuMeterGroupComponent, never>;
48
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuMeterGroupComponent, "neu-meter-group", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
49
+ }
50
+
51
+ export { NeuMeterGroupComponent };
52
+ export type { NeuMeterItem };
@@ -0,0 +1,54 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { Type } from '@angular/core';
3
+ import { DialogRef } from '@angular/cdk/dialog';
4
+
5
+ type NeuDialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
6
+ /** Datos que se inyectan en el componente del diálogo / Data injected into the dialog component */
7
+ interface NeuDialogData<T = unknown> {
8
+ title?: string;
9
+ data?: T;
10
+ }
11
+ declare class NeuDialogService {
12
+ private readonly dialog;
13
+ open<T = unknown, R = unknown>(component: Type<unknown>, config?: {
14
+ title?: string;
15
+ data?: T;
16
+ size?: NeuDialogSize;
17
+ disableClose?: boolean;
18
+ }): DialogRef<R>;
19
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuDialogService, never>;
20
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<NeuDialogService>;
21
+ }
22
+ /**
23
+ * NeuDialogComponent — Diálogo accesible con header, body y footer. / Accessible dialog with header, body and footer.
24
+ * Úsalo directamente como componente declarativo pasando `open` como signal. / Use it directly as a declarative component passing `open` as a signal.
25
+ *
26
+ * Para uso programático, utiliza NeuDialogService.open().
27
+ *
28
+ * Uso declarativo:
29
+ * <neu-dialog [open]="isOpen()" title="Editar usuario" (closed)="isOpen.set(false)">
30
+ * <p>Contenido del diálogo</p>
31
+ * <div neu-dialog-footer>
32
+ * <neu-button (click)="save()">Guardar</neu-button>
33
+ * </div>
34
+ * </neu-dialog>
35
+ */
36
+ declare class NeuDialogComponent {
37
+ /** Controla la visibilidad del diálogo. / Controls dialog visibility. */
38
+ open: _angular_core.InputSignal<boolean>;
39
+ /** Título que aparece en el header. / Title shown in the header. */
40
+ title: _angular_core.InputSignal<string>;
41
+ /** Tamaño del panel: sm | md | lg | xl | full. / Panel size: sm | md | lg | xl | full. */
42
+ size: _angular_core.InputSignal<NeuDialogSize>;
43
+ /** Si es true, el backdrop y el botón cerrar no funcionan. / If true, the backdrop and close button do not work. */
44
+ disableClose: _angular_core.InputSignal<boolean>;
45
+ /** Emite cuando el usuario cierra el diálogo. / Emits when the user closes the dialog. */
46
+ closed: _angular_core.OutputEmitterRef<void>;
47
+ /** @internal — ID único para aria-labelledby / Unique ID for aria-labelledby */
48
+ readonly _uid: string;
49
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuDialogComponent, never>;
50
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuDialogComponent, "neu-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disableClose": { "alias": "disableClose"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*", "[neu-dialog-footer]"], true, never>;
51
+ }
52
+
53
+ export { NeuDialogComponent, NeuDialogService };
54
+ export type { NeuDialogData, NeuDialogSize };
@@ -0,0 +1,138 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { TemplateRef, Signal } from '@angular/core';
3
+ import { ControlValueAccessor } from '@angular/forms';
4
+ import { NeuSelectOption } from '@neural-ui/core/select';
5
+ export { NeuSelectOption } from '@neural-ui/core/select';
6
+
7
+ /**
8
+ * Directiva para personalizar el template de cada ítem del dropdown de Multiselect. / Directive to customize the template of each Multiselect dropdown item.
9
+ *
10
+ * Uso:
11
+ * ```html
12
+ * <neu-multiselect [options]="opts" [formControl]="valuesCtrl">
13
+ * <ng-template neuMultiselectItem let-item>
14
+ * <span class="flag flag-{{ item.value }}"></span>
15
+ * {{ item.label }}
16
+ * </ng-template>
17
+ * </neu-multiselect>
18
+ * ```
19
+ */
20
+ declare class NeuMultiselectItemDirective {
21
+ readonly templateRef: TemplateRef<{
22
+ $implicit: NeuSelectOption;
23
+ }>;
24
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuMultiselectItemDirective, never>;
25
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuMultiselectItemDirective, "[neuMultiselectItem]", never, {}, {}, never, never, true, never>;
26
+ }
27
+
28
+ /**
29
+ * NeuralUI Multiselect Component
30
+ *
31
+ * Dropdown de selección múltiple con chips, búsqueda integrada y soporte / Multiple selection dropdown with chips, integrated search and support
32
+ * para ControlValueAccessor y Reactive Forms. Puede usarse dentro de un FormGroup o con un FormControl standalone. / for ControlValueAccessor and Reactive Forms. It can be used inside a FormGroup or with a standalone FormControl.
33
+ *
34
+ * Uso:
35
+ * readonly technologiesCtrl = new FormControl<string[]>([], { nonNullable: true });
36
+ * <neu-multiselect label="Tecnologías" [options]="opts" [formControl]="technologiesCtrl" />
37
+ */
38
+ declare class NeuMultiselectComponent implements ControlValueAccessor {
39
+ private readonly elementRef;
40
+ private readonly _urlState;
41
+ private readonly _mobileViewportMax;
42
+ private readonly _viewportMargin;
43
+ private readonly _urlParamSignals;
44
+ private _getUrlParamSignal;
45
+ constructor();
46
+ /** @internal */
47
+ readonly _triggerId: string;
48
+ readonly _panelId: string;
49
+ /** Template personalizado para cada opción del dropdown / Custom template for each dropdown option */
50
+ readonly itemTpl: Signal<NeuMultiselectItemDirective | undefined>;
51
+ /** Opciones del dropdown / Dropdown options */
52
+ options: _angular_core.InputSignal<NeuSelectOption[]>;
53
+ /** Etiqueta del componente / Component label */
54
+ label: _angular_core.InputSignal<string>;
55
+ /** Muestra el label como flotante dentro del campo (true) o estático encima (false) / Shows the label as floating inside the field (true) or static above (false) */
56
+ floatingLabel: _angular_core.InputSignal<boolean>;
57
+ /** Tamaño del campo: 'sm' = 36px | 'md' = 48px | 'lg' = 56px / Field size */
58
+ size: _angular_core.InputSignal<"sm" | "md" | "lg">;
59
+ /** Placeholder cuando no hay selección / Placeholder when there is no selection */
60
+ placeholder: _angular_core.InputSignal<string>;
61
+ /** Mensaje de error / Error message */
62
+ errorMessage: _angular_core.InputSignal<string>;
63
+ /** Texto de ayuda bajo el campo / Helper text below the field */
64
+ hint: _angular_core.InputSignal<string>;
65
+ /** Deshabilita el componente / Disables the component */
66
+ disabled: _angular_core.InputSignal<boolean>;
67
+ /** Activa input de búsqueda/filtro en el panel / Activates the search/filter input in the panel */
68
+ searchable: _angular_core.InputSignal<boolean>;
69
+ /** Placeholder del input de búsqueda / Search input placeholder */
70
+ searchPlaceholder: _angular_core.InputSignal<string>;
71
+ /** Texto cuando no hay opciones tras filtrar / Text when no options remain after filtering */
72
+ noResultsMessage: _angular_core.InputSignal<string>;
73
+ /** Texto del botón de limpiar todas las selecciones / Button text to clear all selections */
74
+ clearAllLabel: _angular_core.InputSignal<string>;
75
+ /** Muestra un botón × en el trigger para limpiar la selección de una vez / Shows a × button in the trigger to clear the selection at once */
76
+ clearable: _angular_core.InputSignal<boolean>;
77
+ /** Aria-label del botón clear que aparece en el trigger / Aria-label for the clear button shown in the trigger */
78
+ clearAriaLabel: _angular_core.InputSignal<string>;
79
+ /**
80
+ * Sincroniza los valores seleccionados con este query param de la URL.
81
+ * Los valores se codifican como lista separada por comas: `?{urlParam}=a,b,c`.
82
+ * Pasar `null` (default) deshabilita la sincronización.
83
+ */
84
+ urlParam: _angular_core.InputSignal<string | null>;
85
+ /**
86
+ * Emite el array de NeuSelectOption completo (incluyendo data) al cambiar la selección.
87
+ * Emite [] al limpiar toda la selección.
88
+ * Los valores del formControl siguen siendo string[].
89
+ */
90
+ readonly selectionChange: _angular_core.OutputEmitterRef<NeuSelectOption[]>;
91
+ protected readonly _values: _angular_core.WritableSignal<string[]>;
92
+ readonly isOpen: _angular_core.WritableSignal<boolean>;
93
+ readonly searchQuery: _angular_core.WritableSignal<string>;
94
+ readonly _chipMode: _angular_core.WritableSignal<"chips" | "count">;
95
+ readonly panelPosition: _angular_core.WritableSignal<{
96
+ position: string | null;
97
+ top: string | null;
98
+ left: string | null;
99
+ width: string | null;
100
+ maxHeight: string | null;
101
+ }>;
102
+ readonly _visibleChips: Signal<string[]>;
103
+ readonly hasError: Signal<boolean>;
104
+ readonly describedBy: Signal<string | null>;
105
+ readonly filteredOptions: Signal<NeuSelectOption[]>;
106
+ readonly resultsAnnouncement: Signal<string>;
107
+ private _onChange;
108
+ private _onTouched;
109
+ writeValue(value: string[] | null): void;
110
+ registerOnChange(fn: (v: string[]) => void): void;
111
+ registerOnTouched(fn: () => void): void;
112
+ private readonly _cvaDisabled;
113
+ setDisabledState(isDisabled: boolean): void;
114
+ readonly isDisabledFinal: Signal<boolean>;
115
+ protected labelFor(value: string): string;
116
+ protected isSelected(value: string): boolean;
117
+ protected toggle(): void;
118
+ /** Abre el panel y mueve el foco al primer item / Opens the panel and moves focus to the first item */
119
+ onTriggerKey(event: Event): void;
120
+ onTriggerActionKey(event: KeyboardEvent): void;
121
+ focusTrigger(): void;
122
+ /** Navega entre opciones con flechas / Navigates between options with arrows */
123
+ focusOptionByIndex(event: Event, current: NeuSelectOption, dir: 1 | -1): void;
124
+ protected close(): void;
125
+ protected toggleOption(option: NeuSelectOption): void;
126
+ protected removeValue(value: string, event: MouseEvent): void;
127
+ protected clearAll(event: MouseEvent): void;
128
+ protected toggleChipMode(event: MouseEvent): void;
129
+ protected onDocumentClick(event: MouseEvent): void;
130
+ onWindowResize(): void;
131
+ onWindowScroll(): void;
132
+ private syncPanelPosition;
133
+ private resetPanelPosition;
134
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuMultiselectComponent, never>;
135
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuMultiselectComponent, "neu-multiselect", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "floatingLabel": { "alias": "floatingLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "clearAllLabel": { "alias": "clearAllLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "urlParam": { "alias": "urlParam"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, ["itemTpl"], never, true, never>;
136
+ }
137
+
138
+ export { NeuMultiselectComponent, NeuMultiselectItemDirective };
@@ -0,0 +1,69 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /**
4
+ * Ítem de navegación con soporte para 3 niveles de profundidad.
5
+ *
6
+ * Destino del enlace — usa UNO de los dos:
7
+ * - `route` → navegación interna Angular (RouterLink)
8
+ * - `href` → URL externa, se abre en nueva pestaña con rel="noopener noreferrer"
9
+ *
10
+ * Los ítems con `children` actúan como grupo acordeón (sin destino propio).
11
+ * Máximo 3 niveles: raíz → hijos → nietos.
12
+ * Los nietos no pueden tener `children`.
13
+ */
14
+ interface NeuNavItem {
15
+ id: string;
16
+ label: string;
17
+ icon: string;
18
+ /** Ruta Angular interna (RouterLink). Excluye `href`. / Internal Angular route (RouterLink). Excludes `href`. */
19
+ route?: string;
20
+ /** URL externa. Se abre en nueva pestaña. Excluye `route`. / External URL. Opens in a new tab. Excludes `route`. */
21
+ href?: string;
22
+ /** Ítems hijo (nivel 2). Cada hijo puede tener sus propios `children` (nivel 3). / Child items (level 2). Each child can have its own `children` (level 3). */
23
+ children?: NeuNavItem[];
24
+ badge?: string;
25
+ badgeVariant?: 'default' | 'success' | 'warning' | 'danger' | 'info';
26
+ disabled?: boolean;
27
+ }
28
+ declare class NeuNavComponent {
29
+ private readonly router;
30
+ private readonly currentUrl;
31
+ /** Lista de ítems de navegación / Navigation item list */
32
+ items: _angular_core.InputSignal<NeuNavItem[]>;
33
+ /** Estado inicial colapsado / Initial collapsed state */
34
+ collapsed: _angular_core.InputSignal<boolean>;
35
+ /** Muestra el botón de colapsar/expandir / Shows the collapse/expand button */
36
+ collapsible: _angular_core.InputSignal<boolean>;
37
+ /** Etiqueta accesible del <nav> / Accessible label for the <nav> */
38
+ ariaLabel: _angular_core.InputSignal<string>;
39
+ /** Aria-label del botón cuando el nav está colapsado / Aria-label for the button when the nav is collapsed */
40
+ expandLabel: _angular_core.InputSignal<string>;
41
+ /** Aria-label del botón cuando el nav está expandido / Aria-label for the button when the nav is expanded */
42
+ collapseLabel: _angular_core.InputSignal<string>;
43
+ /** Emite cuando cambia el estado colapsado / Emits when the collapsed state changes */
44
+ collapsedChange: _angular_core.OutputEmitterRef<boolean>;
45
+ readonly isCollapsed: _angular_core.WritableSignal<boolean>;
46
+ private readonly openGroups;
47
+ readonly flyoutState: _angular_core.WritableSignal<{
48
+ item: NeuNavItem;
49
+ top: number;
50
+ left: number;
51
+ } | null>;
52
+ private _flyoutTimer;
53
+ constructor();
54
+ toggleCollapse(): void;
55
+ toggleGroup(id: string): void;
56
+ isGroupOpen(id: string): boolean;
57
+ isCurrentRoute(route: string): boolean;
58
+ isGroupActive(item: NeuNavItem): boolean;
59
+ onGroupMouseEnter(item: NeuNavItem, event: MouseEvent): void;
60
+ onGroupMouseLeave(): void;
61
+ onFlyoutMouseEnter(): void;
62
+ onFlyoutMouseLeave(): void;
63
+ private _openActiveGroup;
64
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuNavComponent, never>;
65
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuNavComponent, "neu-nav", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; }, { "collapsedChange": "collapsedChange"; }, never, ["[neu-nav-brand-icon]", "[neu-nav-brand]", "[neu-nav-footer]"], true, never>;
66
+ }
67
+
68
+ export { NeuNavComponent };
69
+ export type { NeuNavItem };
@@ -0,0 +1,60 @@
1
+ import * as i0 from '@angular/core';
2
+
3
+ type NeuNotificationType = 'info' | 'success' | 'warning' | 'error';
4
+ interface NeuNotification {
5
+ id: string;
6
+ type: NeuNotificationType;
7
+ title?: string;
8
+ message: string;
9
+ /** Auto-dismiss duration in ms (0 = persistent) */
10
+ duration?: number;
11
+ /** Icon text / emoji */
12
+ icon?: string;
13
+ timestamp: Date;
14
+ read: boolean;
15
+ }
16
+ interface NeuNotificationOptions extends Omit<NeuNotification, 'id' | 'timestamp' | 'read'> {
17
+ }
18
+ /**
19
+ * NeuralUI NotificationService
20
+ *
21
+ * Servicio inyectable que gestiona la cola de notificaciones.
22
+ *
23
+ * Uso:
24
+ * inject(NeuNotificationService).push({ type: 'success', message: '¡Guardado!' });
25
+ */
26
+ declare class NeuNotificationService {
27
+ readonly notifications: i0.WritableSignal<NeuNotification[]>;
28
+ readonly unreadCount: i0.Signal<number>;
29
+ /** Agrega una notificación / Adds a notification */
30
+ push(opts: Partial<NeuNotificationOptions> & Pick<NeuNotificationOptions, 'message'>): string;
31
+ /** Elimina una notificación / Removes a notification */
32
+ remove(id: string): void;
33
+ /** Marca todas como leídas / Marks all as read */
34
+ markAllRead(): void;
35
+ /** Elimina todas / Clears all */
36
+ clearAll(): void;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<NeuNotificationService, never>;
38
+ static ɵprov: i0.ɵɵInjectableDeclaration<NeuNotificationService>;
39
+ }
40
+ /**
41
+ * NeuralUI NotificationCenter Component
42
+ *
43
+ * Icono de campana con badge de no leídos y panel de notificaciones
44
+ * deslizante. Consume NeuNotificationService.
45
+ *
46
+ * Uso:
47
+ * <neu-notification-center />
48
+ */
49
+ declare class NeuNotificationCenterComponent {
50
+ readonly _svc: NeuNotificationService;
51
+ readonly _isOpen: i0.WritableSignal<boolean>;
52
+ readonly _panelId: string;
53
+ _toggle(): void;
54
+ _relativeTime(date: Date): string;
55
+ static ɵfac: i0.ɵɵFactoryDeclaration<NeuNotificationCenterComponent, never>;
56
+ static ɵcmp: i0.ɵɵComponentDeclaration<NeuNotificationCenterComponent, "neu-notification-center", never, {}, {}, never, never, true, never>;
57
+ }
58
+
59
+ export { NeuNotificationCenterComponent, NeuNotificationService };
60
+ export type { NeuNotification, NeuNotificationOptions, NeuNotificationType };
@@ -0,0 +1,63 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ControlValueAccessor } from '@angular/forms';
3
+
4
+ /**
5
+ * NeuralUI NumberInput Component
6
+ *
7
+ * Input numérico con botones de incremento/decremento. Implementa CVA.
8
+ * Soporta layout apilado (stacked), horizontal y vertical.
9
+ *
10
+ * Numeric input with increment/decrement buttons. Implements CVA.
11
+ * Supports stacked, horizontal and vertical layouts.
12
+ *
13
+ * Uso: <neu-number-input [min]="0" [max]="99" label="Cantidad" />
14
+ */
15
+ declare class NeuNumberInputComponent implements ControlValueAccessor {
16
+ /** Valor mínimo / Min value */
17
+ readonly min: _angular_core.InputSignal<number>;
18
+ /** Valor máximo / Max value */
19
+ readonly max: _angular_core.InputSignal<number>;
20
+ /** Incremento / Step */
21
+ readonly step: _angular_core.InputSignal<number>;
22
+ /** Etiqueta para el input (accesibilidad) / Label for the input (accessibility) */
23
+ readonly label: _angular_core.InputSignal<string>;
24
+ /** Aria-label del botón de decremento */
25
+ readonly decrementLabel: _angular_core.InputSignal<string>;
26
+ /** Aria-label del botón de incremento */
27
+ readonly incrementLabel: _angular_core.InputSignal<string>;
28
+ /** Muestra los botones en vertical / Shows buttons vertically */
29
+ readonly vertical: _angular_core.InputSignal<boolean>;
30
+ /** Agrupa ambos botones apilados al final del input / Groups both buttons stacked at input end */
31
+ readonly stacked: _angular_core.InputSignal<boolean>;
32
+ /** Tamaño del campo: 'sm' = 36px | 'md' = 48px | 'lg' = 56px / Field size */
33
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
34
+ /** Emitido en cada cambio / Emitted on each change */
35
+ readonly valueChange: _angular_core.OutputEmitterRef<number>;
36
+ readonly _id: string;
37
+ readonly _cvaDisabled: _angular_core.WritableSignal<boolean>;
38
+ readonly _value: _angular_core.WritableSignal<number>;
39
+ readonly hostClasses: _angular_core.Signal<{
40
+ 'neu-number-input': boolean;
41
+ 'neu-number-input--vertical': boolean;
42
+ 'neu-number-input--stacked': boolean;
43
+ 'neu-number-input--disabled': boolean;
44
+ 'neu-number-input--sm': boolean;
45
+ 'neu-number-input--lg': boolean;
46
+ }>;
47
+ private _onChange;
48
+ private _onTouched;
49
+ writeValue(val: number | null): void;
50
+ registerOnChange(fn: (v: number) => void): void;
51
+ registerOnTouched(fn: () => void): void;
52
+ setDisabledState(disabled: boolean): void;
53
+ increment(): void;
54
+ decrement(): void;
55
+ onInputChange(event: Event): void;
56
+ onBlur(): void;
57
+ private _emit;
58
+ private _clamp;
59
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuNumberInputComponent, never>;
60
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuNumberInputComponent, "neu-number-input", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "decrementLabel": { "alias": "decrementLabel"; "required": false; "isSignal": true; }; "incrementLabel": { "alias": "incrementLabel"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
61
+ }
62
+
63
+ export { NeuNumberInputComponent };
@@ -0,0 +1,30 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /**
4
+ * NeuralUI Pagination Component
5
+ *
6
+ * Paginación accesible con navegación por páginas, primera/última y ellipsis.
7
+ *
8
+ * Uso:
9
+ * <neu-pagination [total]="200" [pageSize]="10" [page]="currentPage"
10
+ * (pageChange)="currentPage = $event" />
11
+ */
12
+ declare class NeuPaginationComponent {
13
+ /** Página actual (1-indexed) / Current page (1-indexed) */
14
+ page: _angular_core.InputSignal<number>;
15
+ /** Total de ítems / Total items */
16
+ total: _angular_core.InputSignal<number>;
17
+ /** Ítems por página / Items per page */
18
+ pageSize: _angular_core.InputSignal<number>;
19
+ /** Número máximo de botones de página visibles (sin contar anterior/siguiente) / Maximum number of visible page buttons (not counting prev/next) */
20
+ maxVisible: _angular_core.InputSignal<number>;
21
+ /** Emite la nueva página al hacer click / Emits the new page on click */
22
+ pageChange: _angular_core.OutputEmitterRef<number>;
23
+ readonly totalPages: _angular_core.Signal<number>;
24
+ readonly pages: _angular_core.Signal<number[]>;
25
+ go(page: number): void;
26
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuPaginationComponent, never>;
27
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuPaginationComponent, "neu-pagination", never, { "page": { "alias": "page"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "maxVisible": { "alias": "maxVisible"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
28
+ }
29
+
30
+ export { NeuPaginationComponent };
@@ -0,0 +1,73 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnDestroy, TemplateRef } from '@angular/core';
3
+
4
+ type NeuPopoverPosition = 'top' | 'bottom' | 'left' | 'right';
5
+ type NeuPopoverTrigger = 'click' | 'hover' | 'focus';
6
+ /**
7
+ * NeuralUI Popover Overlay Component (internal)
8
+ * Renderizado por CDK Portal — no usar directamente.
9
+ */
10
+ declare class NeuPopoverOverlayComponent {
11
+ readonly _text: _angular_core.WritableSignal<string>;
12
+ _templateRef: TemplateRef<unknown> | null;
13
+ _context: unknown;
14
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuPopoverOverlayComponent, never>;
15
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuPopoverOverlayComponent, "neu-popover-overlay", never, {}, {}, never, never, true, never>;
16
+ }
17
+ /**
18
+ * NeuralUI Popover Directive
19
+ *
20
+ * Muestra un popover flotante anclado al elemento host usando CDK Overlay.
21
+ *
22
+ * Uso:
23
+ * <button [neuPopoverTemplate]="myTpl">Info</button>
24
+ * <ng-template #myTpl>Contenido del popover</ng-template>
25
+ *
26
+ * <button [neuPopoverText]="'Descripción detallada'">Hover me</button>
27
+ */
28
+ declare class NeuPopoverDirective implements OnDestroy {
29
+ /** Template del contenido / Content template */
30
+ readonly neuPopover: _angular_core.InputSignal<TemplateRef<unknown> | null>;
31
+ /** Texto plano cuando no hay template / Plain text when no template */
32
+ readonly neuPopoverText: _angular_core.InputSignal<string>;
33
+ /** Posición preferida / Preferred position */
34
+ readonly neuPopoverPosition: _angular_core.InputSignal<NeuPopoverPosition>;
35
+ /** Trigger del popover / Popover trigger */
36
+ readonly neuPopoverTrigger: _angular_core.InputSignal<NeuPopoverTrigger>;
37
+ /** Desactiva el popover / Disables the popover */
38
+ readonly neuPopoverDisabled: _angular_core.InputSignal<boolean>;
39
+ /** Contexto del template / Template context */
40
+ readonly neuPopoverContext: _angular_core.InputSignal<unknown>;
41
+ /** Emitido al abrir / Emitted on open */
42
+ readonly popoverOpened: _angular_core.OutputEmitterRef<void>;
43
+ /** Emitido al cerrar / Emitted on close */
44
+ readonly popoverClosed: _angular_core.OutputEmitterRef<void>;
45
+ readonly _isOpen: _angular_core.WritableSignal<boolean>;
46
+ private readonly _overlay;
47
+ private readonly _el;
48
+ private readonly _injector;
49
+ private readonly _vcr;
50
+ private _overlayRef;
51
+ private _compRef;
52
+ onHostClick(): void;
53
+ onMouseEnter(): void;
54
+ onMouseLeave(): void;
55
+ onFocus(): void;
56
+ onBlur(): void;
57
+ /** Abre el popover / Opens the popover */
58
+ open(): void;
59
+ /** Cierra el popover / Closes the popover */
60
+ close(): void;
61
+ /** Alterna la visibilidad / Toggles visibility */
62
+ toggle(): void;
63
+ ngOnDestroy(): void;
64
+ protected _hostAriaHasPopup(): 'dialog' | null;
65
+ protected _hostAriaExpanded(): 'true' | 'false' | null;
66
+ private _toggle;
67
+ private _createOverlay;
68
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuPopoverDirective, never>;
69
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuPopoverDirective, "[neuPopover]", ["neuPopover"], { "neuPopover": { "alias": "neuPopover"; "required": false; "isSignal": true; }; "neuPopoverText": { "alias": "neuPopoverText"; "required": false; "isSignal": true; }; "neuPopoverPosition": { "alias": "neuPopoverPosition"; "required": false; "isSignal": true; }; "neuPopoverTrigger": { "alias": "neuPopoverTrigger"; "required": false; "isSignal": true; }; "neuPopoverDisabled": { "alias": "neuPopoverDisabled"; "required": false; "isSignal": true; }; "neuPopoverContext": { "alias": "neuPopoverContext"; "required": false; "isSignal": true; }; }, { "popoverOpened": "popoverOpened"; "popoverClosed": "popoverClosed"; }, never, never, true, never>;
70
+ }
71
+
72
+ export { NeuPopoverDirective, NeuPopoverOverlayComponent };
73
+ export type { NeuPopoverPosition, NeuPopoverTrigger };