@caribeng/ui 22.1.0 → 22.2.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 (253) hide show
  1. package/README.md +52 -12
  2. package/fesm2022/caribeng-ui-accordion.mjs +2 -2
  3. package/fesm2022/caribeng-ui-anchor.mjs +169 -0
  4. package/fesm2022/caribeng-ui-autocomplete.mjs +10 -8
  5. package/fesm2022/caribeng-ui-avatargroup.mjs +9 -3
  6. package/fesm2022/caribeng-ui-blockui.mjs +12 -4
  7. package/fesm2022/caribeng-ui-breadcrumb.mjs +5 -2
  8. package/fesm2022/caribeng-ui-button.mjs +22 -2
  9. package/fesm2022/caribeng-ui-caribe-alert.mjs +5 -2
  10. package/fesm2022/caribeng-ui-caribe-animation-lottie.mjs +6 -3
  11. package/fesm2022/caribeng-ui-caribe-button-group.mjs +6 -3
  12. package/fesm2022/caribeng-ui-caribe-calendar.mjs +11 -6
  13. package/fesm2022/caribeng-ui-caribe-card-content.mjs +6 -3
  14. package/fesm2022/caribeng-ui-caribe-card-move.mjs +29 -7
  15. package/fesm2022/caribeng-ui-caribe-card-select.mjs +56 -14
  16. package/fesm2022/caribeng-ui-caribe-circle-loading.mjs +10 -7
  17. package/fesm2022/caribeng-ui-caribe-coachmark.mjs +42 -19
  18. package/fesm2022/caribeng-ui-caribe-data-table.mjs +15 -9
  19. package/fesm2022/caribeng-ui-caribe-dots-indicator.mjs +38 -5
  20. package/fesm2022/caribeng-ui-caribe-expansion-panel.mjs +16 -5
  21. package/fesm2022/caribeng-ui-caribe-fab-menu.mjs +56 -7
  22. package/fesm2022/caribeng-ui-caribe-file-download.mjs +68 -27
  23. package/fesm2022/caribeng-ui-caribe-file-select.mjs +22 -17
  24. package/fesm2022/caribeng-ui-caribe-float-menu.mjs +6 -3
  25. package/fesm2022/caribeng-ui-caribe-footer.mjs +8 -4
  26. package/fesm2022/caribeng-ui-caribe-header.mjs +6 -3
  27. package/fesm2022/caribeng-ui-caribe-icon-button.mjs +6 -3
  28. package/fesm2022/caribeng-ui-caribe-illustration.mjs +6 -3
  29. package/fesm2022/caribeng-ui-caribe-inline-alert.mjs +5 -2
  30. package/fesm2022/caribeng-ui-caribe-input-search.mjs +14 -10
  31. package/fesm2022/caribeng-ui-caribe-input-select.mjs +12 -10
  32. package/fesm2022/caribeng-ui-caribe-input-token.mjs +61 -11
  33. package/fesm2022/caribeng-ui-caribe-link.mjs +7 -2
  34. package/fesm2022/caribeng-ui-caribe-loader.mjs +8 -5
  35. package/fesm2022/caribeng-ui-caribe-modal.mjs +32 -16
  36. package/fesm2022/caribeng-ui-caribe-off-canvas.mjs +26 -12
  37. package/fesm2022/caribeng-ui-caribe-onboarding.mjs +44 -19
  38. package/fesm2022/caribeng-ui-caribe-pictogram.mjs +6 -3
  39. package/fesm2022/caribeng-ui-caribe-pop-over.mjs +34 -10
  40. package/fesm2022/caribeng-ui-caribe-preloader.mjs +9 -6
  41. package/fesm2022/caribeng-ui-caribe-progress-bar.mjs +5 -2
  42. package/fesm2022/caribeng-ui-caribe-shortcut.mjs +8 -3
  43. package/fesm2022/caribeng-ui-caribe-step-indicator.mjs +12 -5
  44. package/fesm2022/caribeng-ui-caribe-stroke.mjs +6 -3
  45. package/fesm2022/caribeng-ui-caribe-switch.mjs +5 -3
  46. package/fesm2022/caribeng-ui-caribe-tag-button.mjs +1 -1
  47. package/fesm2022/caribeng-ui-caribe-tracker.mjs +5 -2
  48. package/fesm2022/caribeng-ui-caribe-transaction-status.mjs +1 -1
  49. package/fesm2022/caribeng-ui-caribe-voucher.mjs +11 -8
  50. package/fesm2022/caribeng-ui-carousel.mjs +49 -14
  51. package/fesm2022/caribeng-ui-cascadeselect.mjs +22 -8
  52. package/fesm2022/caribeng-ui-chart.mjs +2598 -303
  53. package/fesm2022/caribeng-ui-chip.mjs +9 -4
  54. package/fesm2022/caribeng-ui-chips.mjs +9 -5
  55. package/fesm2022/caribeng-ui-colorpicker.mjs +9 -7
  56. package/fesm2022/caribeng-ui-confirmdialog.mjs +74 -9
  57. package/fesm2022/caribeng-ui-confirmpopup.mjs +134 -9
  58. package/fesm2022/caribeng-ui-contextmenu.mjs +6 -3
  59. package/fesm2022/caribeng-ui-dataview.mjs +211 -6
  60. package/fesm2022/caribeng-ui-datepicker.mjs +1630 -393
  61. package/fesm2022/caribeng-ui-descriptions.mjs +124 -0
  62. package/fesm2022/caribeng-ui-dialog.mjs +10 -7
  63. package/fesm2022/caribeng-ui-dock.mjs +6 -3
  64. package/fesm2022/caribeng-ui-drawer.mjs +10 -7
  65. package/fesm2022/caribeng-ui-dynamicdialog.mjs +210 -6
  66. package/fesm2022/caribeng-ui-editor.mjs +4392 -243
  67. package/fesm2022/caribeng-ui-empty.mjs +80 -0
  68. package/fesm2022/caribeng-ui-file-card.mjs +2 -2
  69. package/fesm2022/caribeng-ui-fileupload.mjs +96 -19
  70. package/fesm2022/caribeng-ui-floatlabel.mjs +4 -2
  71. package/fesm2022/caribeng-ui-folder-card.mjs +10 -3
  72. package/fesm2022/caribeng-ui-galleria.mjs +76 -45
  73. package/fesm2022/caribeng-ui-image.mjs +52 -29
  74. package/fesm2022/caribeng-ui-inplace.mjs +22 -6
  75. package/fesm2022/caribeng-ui-input-number.mjs +9 -7
  76. package/fesm2022/caribeng-ui-inputgroup.mjs +2 -2
  77. package/fesm2022/caribeng-ui-inputmask.mjs +14 -11
  78. package/fesm2022/caribeng-ui-inputotp.mjs +12 -6
  79. package/fesm2022/caribeng-ui-keyfilter.mjs +72 -0
  80. package/fesm2022/caribeng-ui-listbox.mjs +13 -11
  81. package/fesm2022/caribeng-ui-megamenu.mjs +222 -30
  82. package/fesm2022/caribeng-ui-menu.mjs +11 -5
  83. package/fesm2022/caribeng-ui-menubar.mjs +10 -5
  84. package/fesm2022/caribeng-ui-message.mjs +7 -4
  85. package/fesm2022/caribeng-ui-metergroup.mjs +29 -11
  86. package/fesm2022/caribeng-ui-multiselect.mjs +399 -97
  87. package/fesm2022/caribeng-ui-orderlist.mjs +230 -11
  88. package/fesm2022/caribeng-ui-organizationchart.mjs +12 -7
  89. package/fesm2022/caribeng-ui-paginator.mjs +18 -15
  90. package/fesm2022/caribeng-ui-panel.mjs +5 -2
  91. package/fesm2022/caribeng-ui-panelmenu.mjs +6 -3
  92. package/fesm2022/caribeng-ui-password.mjs +8 -6
  93. package/fesm2022/caribeng-ui-pdfviewer.mjs +1553 -0
  94. package/fesm2022/caribeng-ui-picklist.mjs +251 -14
  95. package/fesm2022/caribeng-ui-pricing.mjs +17 -14
  96. package/fesm2022/caribeng-ui-rating.mjs +7 -3
  97. package/fesm2022/caribeng-ui-repeater.mjs +223 -0
  98. package/fesm2022/caribeng-ui-result.mjs +91 -0
  99. package/fesm2022/caribeng-ui-scrollpanel.mjs +6 -3
  100. package/fesm2022/caribeng-ui-scrolltop.mjs +6 -3
  101. package/fesm2022/caribeng-ui-select.mjs +379 -87
  102. package/fesm2022/caribeng-ui-selectbutton.mjs +2 -2
  103. package/fesm2022/caribeng-ui-slider.mjs +171 -75
  104. package/fesm2022/caribeng-ui-speeddial.mjs +7 -4
  105. package/fesm2022/caribeng-ui-spinner.mjs +5 -2
  106. package/fesm2022/caribeng-ui-splitbutton.mjs +163 -0
  107. package/fesm2022/caribeng-ui-splitter.mjs +5 -2
  108. package/fesm2022/caribeng-ui-statistic.mjs +183 -0
  109. package/fesm2022/caribeng-ui-stepper.mjs +8 -5
  110. package/fesm2022/caribeng-ui-steps.mjs +6 -3
  111. package/fesm2022/caribeng-ui-table.mjs +708 -82
  112. package/fesm2022/caribeng-ui-tabmenu.mjs +6 -3
  113. package/fesm2022/caribeng-ui-tag.mjs +2 -2
  114. package/fesm2022/caribeng-ui-terminal.mjs +45 -9
  115. package/fesm2022/caribeng-ui-themetoggle.mjs +82 -0
  116. package/fesm2022/caribeng-ui-tieredmenu.mjs +9 -6
  117. package/fesm2022/caribeng-ui-timeline.mjs +175 -6
  118. package/fesm2022/caribeng-ui-toast.mjs +7 -4
  119. package/fesm2022/caribeng-ui-togglebutton.mjs +8 -6
  120. package/fesm2022/caribeng-ui-toolbar.mjs +6 -3
  121. package/fesm2022/caribeng-ui-tree.mjs +302 -6
  122. package/fesm2022/caribeng-ui-treeselect.mjs +26 -10
  123. package/fesm2022/caribeng-ui-treetable.mjs +269 -6
  124. package/fesm2022/caribeng-ui-virtualscroller.mjs +123 -10
  125. package/fesm2022/caribeng-ui.mjs +829 -6
  126. package/package.json +70 -11
  127. package/schematics/collection.json +10 -0
  128. package/schematics/ng-add/index.js +125 -0
  129. package/schematics/ng-add/schema.js +2 -0
  130. package/schematics/ng-add/schema.json +66 -0
  131. package/styles/caribeng.css +380 -0
  132. package/styles/scss/_mixins.scss +46 -0
  133. package/styles/scss/_overlay.scss +15 -0
  134. package/styles/scss/_tokens.scss +267 -0
  135. package/styles/scss/_utilities.scss +73 -0
  136. package/styles/scss/_variables.scss +33 -0
  137. package/styles/scss/index.scss +16 -0
  138. package/types/caribeng-ui-anchor.d.ts +50 -0
  139. package/types/caribeng-ui-autocomplete.d.ts +4 -2
  140. package/types/caribeng-ui-avatargroup.d.ts +3 -1
  141. package/types/caribeng-ui-blockui.d.ts +9 -4
  142. package/types/caribeng-ui-breadcrumb.d.ts +3 -0
  143. package/types/caribeng-ui-button.d.ts +9 -1
  144. package/types/caribeng-ui-caribe-alert.d.ts +3 -0
  145. package/types/caribeng-ui-caribe-animation-lottie.d.ts +4 -1
  146. package/types/caribeng-ui-caribe-button-group.d.ts +4 -1
  147. package/types/caribeng-ui-caribe-calendar.d.ts +5 -1
  148. package/types/caribeng-ui-caribe-card-content.d.ts +4 -1
  149. package/types/caribeng-ui-caribe-card-move.d.ts +13 -13
  150. package/types/caribeng-ui-caribe-card-select.d.ts +10 -1
  151. package/types/caribeng-ui-caribe-circle-loading.d.ts +4 -1
  152. package/types/caribeng-ui-caribe-coachmark.d.ts +6 -0
  153. package/types/caribeng-ui-caribe-data-table.d.ts +7 -2
  154. package/types/caribeng-ui-caribe-dots-indicator.d.ts +9 -0
  155. package/types/caribeng-ui-caribe-expansion-panel.d.ts +7 -10
  156. package/types/caribeng-ui-caribe-fab-menu.d.ts +10 -1
  157. package/types/caribeng-ui-caribe-file-download.d.ts +8 -10
  158. package/types/caribeng-ui-caribe-file-select.d.ts +7 -1
  159. package/types/caribeng-ui-caribe-float-menu.d.ts +4 -1
  160. package/types/caribeng-ui-caribe-header.d.ts +3 -0
  161. package/types/caribeng-ui-caribe-icon-button.d.ts +4 -1
  162. package/types/caribeng-ui-caribe-illustration.d.ts +4 -1
  163. package/types/caribeng-ui-caribe-inline-alert.d.ts +3 -0
  164. package/types/caribeng-ui-caribe-input-search.d.ts +4 -2
  165. package/types/caribeng-ui-caribe-input-select.d.ts +4 -2
  166. package/types/caribeng-ui-caribe-input-token.d.ts +16 -1
  167. package/types/caribeng-ui-caribe-link.d.ts +3 -0
  168. package/types/caribeng-ui-caribe-loader.d.ts +4 -1
  169. package/types/caribeng-ui-caribe-modal.d.ts +7 -10
  170. package/types/caribeng-ui-caribe-off-canvas.d.ts +6 -1
  171. package/types/caribeng-ui-caribe-onboarding.d.ts +6 -0
  172. package/types/caribeng-ui-caribe-pictogram.d.ts +4 -1
  173. package/types/caribeng-ui-caribe-pop-over.d.ts +7 -10
  174. package/types/caribeng-ui-caribe-preloader.d.ts +4 -1
  175. package/types/caribeng-ui-caribe-progress-bar.d.ts +3 -0
  176. package/types/caribeng-ui-caribe-shortcut.d.ts +3 -1
  177. package/types/caribeng-ui-caribe-step-indicator.d.ts +6 -0
  178. package/types/caribeng-ui-caribe-stroke.d.ts +4 -1
  179. package/types/caribeng-ui-caribe-switch.d.ts +3 -1
  180. package/types/caribeng-ui-caribe-tracker.d.ts +3 -0
  181. package/types/caribeng-ui-caribe-voucher.d.ts +5 -2
  182. package/types/caribeng-ui-carousel.d.ts +10 -1
  183. package/types/caribeng-ui-cascadeselect.d.ts +7 -2
  184. package/types/caribeng-ui-chart.d.ts +469 -44
  185. package/types/caribeng-ui-chip.d.ts +6 -0
  186. package/types/caribeng-ui-chips.d.ts +6 -2
  187. package/types/caribeng-ui-colorpicker.d.ts +3 -1
  188. package/types/caribeng-ui-confirmdialog.d.ts +25 -6
  189. package/types/caribeng-ui-confirmpopup.d.ts +37 -5
  190. package/types/caribeng-ui-contextmenu.d.ts +4 -1
  191. package/types/caribeng-ui-dataview.d.ts +63 -5
  192. package/types/caribeng-ui-datepicker.d.ts +186 -21
  193. package/types/caribeng-ui-descriptions.d.ts +63 -0
  194. package/types/caribeng-ui-dialog.d.ts +4 -1
  195. package/types/caribeng-ui-dock.d.ts +4 -1
  196. package/types/caribeng-ui-drawer.d.ts +4 -1
  197. package/types/caribeng-ui-dynamicdialog.d.ts +93 -3
  198. package/types/caribeng-ui-editor.d.ts +486 -13
  199. package/types/caribeng-ui-empty.d.ts +34 -0
  200. package/types/caribeng-ui-file-card.d.ts +1 -1
  201. package/types/caribeng-ui-fileupload.d.ts +27 -4
  202. package/types/caribeng-ui-folder-card.d.ts +4 -1
  203. package/types/caribeng-ui-galleria.d.ts +9 -0
  204. package/types/caribeng-ui-image.d.ts +10 -0
  205. package/types/caribeng-ui-inplace.d.ts +8 -0
  206. package/types/caribeng-ui-input-number.d.ts +3 -1
  207. package/types/caribeng-ui-inputmask.d.ts +5 -0
  208. package/types/caribeng-ui-inputotp.d.ts +7 -2
  209. package/types/caribeng-ui-keyfilter.d.ts +30 -0
  210. package/types/caribeng-ui-listbox.d.ts +5 -3
  211. package/types/caribeng-ui-megamenu.d.ts +26 -2
  212. package/types/caribeng-ui-menu.d.ts +7 -2
  213. package/types/caribeng-ui-menubar.d.ts +5 -1
  214. package/types/caribeng-ui-message.d.ts +3 -0
  215. package/types/caribeng-ui-metergroup.d.ts +9 -1
  216. package/types/caribeng-ui-multiselect.d.ts +71 -10
  217. package/types/caribeng-ui-orderlist.d.ts +58 -6
  218. package/types/caribeng-ui-organizationchart.d.ts +7 -1
  219. package/types/caribeng-ui-paginator.d.ts +3 -0
  220. package/types/caribeng-ui-panel.d.ts +3 -0
  221. package/types/caribeng-ui-panelmenu.d.ts +4 -1
  222. package/types/caribeng-ui-password.d.ts +4 -2
  223. package/types/caribeng-ui-pdfviewer.d.ts +258 -0
  224. package/types/caribeng-ui-picklist.d.ts +67 -7
  225. package/types/caribeng-ui-pricing.d.ts +8 -5
  226. package/types/caribeng-ui-rating.d.ts +6 -2
  227. package/types/caribeng-ui-repeater.d.ts +79 -0
  228. package/types/caribeng-ui-result.d.ts +35 -0
  229. package/types/caribeng-ui-scrollpanel.d.ts +4 -1
  230. package/types/caribeng-ui-scrolltop.d.ts +4 -1
  231. package/types/caribeng-ui-select.d.ts +73 -9
  232. package/types/caribeng-ui-slider.d.ts +63 -10
  233. package/types/caribeng-ui-speeddial.d.ts +5 -2
  234. package/types/caribeng-ui-spinner.d.ts +3 -0
  235. package/types/caribeng-ui-splitbutton.d.ts +49 -0
  236. package/types/caribeng-ui-splitter.d.ts +3 -0
  237. package/types/caribeng-ui-statistic.d.ts +65 -0
  238. package/types/caribeng-ui-stepper.d.ts +3 -0
  239. package/types/caribeng-ui-steps.d.ts +4 -1
  240. package/types/caribeng-ui-table.d.ts +184 -16
  241. package/types/caribeng-ui-tabmenu.d.ts +4 -1
  242. package/types/caribeng-ui-terminal.d.ts +10 -0
  243. package/types/caribeng-ui-themetoggle.d.ts +32 -0
  244. package/types/caribeng-ui-tieredmenu.d.ts +5 -2
  245. package/types/caribeng-ui-timeline.d.ts +63 -4
  246. package/types/caribeng-ui-toast.d.ts +3 -0
  247. package/types/caribeng-ui-togglebutton.d.ts +5 -3
  248. package/types/caribeng-ui-toolbar.d.ts +7 -4
  249. package/types/caribeng-ui-tree.d.ts +76 -4
  250. package/types/caribeng-ui-treeselect.d.ts +10 -2
  251. package/types/caribeng-ui-treetable.d.ts +68 -4
  252. package/types/caribeng-ui-virtualscroller.d.ts +45 -5
  253. package/types/caribeng-ui.d.ts +501 -12
@@ -1,7 +1,11 @@
1
+ import * as _caribeng_ui from '@caribeng/ui';
2
+ import { cbFormat } from '@caribeng/ui';
1
3
  import * as _angular_core from '@angular/core';
2
4
  import { TemplateRef } from '@angular/core';
3
5
  import { CbPaginatorState } from '@caribeng/ui/paginator';
4
6
 
7
+ /** Cómo compara un filtro el texto buscado con el valor de la celda (sin distinguir mayúsculas ni tildes). */
8
+ type CbTableFilterMatchMode = 'contains' | 'startsWith' | 'equals';
5
9
  interface CbTableColumn {
6
10
  /** Propiedad de la fila a mostrar. */
7
11
  field: string;
@@ -9,35 +13,110 @@ interface CbTableColumn {
9
13
  header: string;
10
14
  /** Permite ordenar por esta columna. */
11
15
  sortable?: boolean;
16
+ /** Muestra un campo de filtro bajo el encabezado. */
17
+ filter?: boolean;
18
+ /** Comparación del filtro de la columna. Por defecto `contains`. */
19
+ filterMatchMode?: CbTableFilterMatchMode;
20
+ /** Placeholder del filtro de la columna. */
21
+ filterPlaceholder?: string;
12
22
  /** Alineación del contenido. */
13
23
  align?: 'left' | 'center' | 'right';
14
24
  /** Ancho CSS de la columna. */
15
25
  width?: string;
26
+ /** Fija la columna a la izquierda al hacer scroll horizontal (las fijas se muestran primero). */
27
+ frozen?: boolean;
28
+ /** Incluir la columna en `toCSV()` / `exportCSV()`. Por defecto `true`. */
29
+ exportable?: boolean;
16
30
  }
17
- interface CbTableCellContext {
18
- $implicit: unknown;
19
- row: unknown;
20
- value: unknown;
31
+ interface CbTableCellContext<T = any> {
32
+ $implicit: T;
33
+ row: T;
34
+ value: any;
21
35
  col: CbTableColumn;
22
36
  }
37
+ interface CbTableRowExpansionContext<T = any> {
38
+ $implicit: T;
39
+ /** Posición de la fila en los datos filtrados y ordenados. */
40
+ index: number;
41
+ }
42
+ interface CbTableGroupHeaderContext<T = any> {
43
+ /** Valor del campo `groupRowsBy` del grupo. */
44
+ $implicit: T;
45
+ /** Filas del grupo (en todos los datos filtrados). */
46
+ count: number;
47
+ }
48
+ /** Petición de datos en modo `lazy`: la tabla pide la página, el orden y los filtros al servidor. */
49
+ interface CbTableLazyLoadEvent {
50
+ first: number;
51
+ rows: number;
52
+ sortField: string | null;
53
+ sortOrder: 1 | -1;
54
+ globalFilter: string;
55
+ filters: Readonly<Partial<Record<string, string>>>;
56
+ }
57
+ /** Opciones de `toCSV()` / `exportCSV()`. */
58
+ interface CbTableCsvOptions {
59
+ /** Solo las filas seleccionadas. */
60
+ selectionOnly?: boolean;
61
+ /** Separador de columnas. Por defecto `,`. */
62
+ separator?: string;
63
+ }
64
+ /** Estado de los filtros, emitido por `filterChange`. */
65
+ interface CbTableFilterState {
66
+ global: string;
67
+ /** Texto de filtro por campo de columna. */
68
+ columns: Readonly<Partial<Record<string, string>>>;
69
+ }
70
+ /** Plantilla de las celdas de una columna: `<ng-template cbTableCell="campo" let-row let-value="value">`. */
23
71
  declare class CbTableCellDirective {
24
72
  readonly cbTableCell: _angular_core.InputSignal<string>;
25
- readonly template: TemplateRef<CbTableCellContext>;
73
+ readonly template: TemplateRef<CbTableCellContext<any>>;
74
+ static ngTemplateContextGuard(_dir: CbTableCellDirective, ctx: unknown): ctx is CbTableCellContext;
26
75
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbTableCellDirective, never>;
27
76
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CbTableCellDirective, "ng-template[cbTableCell]", never, { "cbTableCell": { "alias": "cbTableCell"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
28
77
  }
78
+ /** Contenido de la fila expandida: `<ng-template cbTableRowExpansion let-row>`. */
79
+ declare class CbTableRowExpansion {
80
+ readonly template: TemplateRef<CbTableRowExpansionContext<any>>;
81
+ static ngTemplateContextGuard(_dir: CbTableRowExpansion, ctx: unknown): ctx is CbTableRowExpansionContext;
82
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbTableRowExpansion, never>;
83
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CbTableRowExpansion, "ng-template[cbTableRowExpansion]", never, {}, {}, never, never, true, never>;
84
+ }
85
+ /** Cabecera de grupo: `<ng-template cbTableGroupHeader let-valor let-count="count">`. */
86
+ declare class CbTableGroupHeader {
87
+ readonly template: TemplateRef<CbTableGroupHeaderContext<any>>;
88
+ static ngTemplateContextGuard(_dir: CbTableGroupHeader, ctx: unknown): ctx is CbTableGroupHeaderContext;
89
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbTableGroupHeader, never>;
90
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CbTableGroupHeader, "ng-template[cbTableGroupHeader]", never, {}, {}, never, never, true, never>;
91
+ }
29
92
  /**
30
93
  * Table de CaribeNG: tabla de datos con columnas declarativas, ordenación,
31
- * paginación y selección (simple/múltiple).
94
+ * filtros (global y por columna), paginación, selección (simple/múltiple),
95
+ * columnas redimensionables y fijas, cabecera fija, filas expandibles y
96
+ * agrupadas, exportación a CSV y carga desde el servidor (`lazy`).
32
97
  *
33
98
  * @example
34
99
  * ```html
35
- * <cb-table [value]="productos" [columns]="cols" [paginator]="true" [rows]="5"
36
- * striped selectionMode="multiple" dataKey="id" [(selection)]="sel" />
100
+ * <input type="search" [(ngModel)]="busqueda" aria-label="Buscar" />
101
+ * <cb-table [value]="productos" [columns]="cols" [globalFilter]="busqueda" [paginator]="true" [rows]="5"
102
+ * striped selectionMode="multiple" dataKey="id" [(selection)]="sel" resizableColumns>
103
+ * <ng-template cbTableRowExpansion let-producto>{{ producto.descripcion }}</ng-template>
104
+ * </cb-table>
37
105
  * ```
38
106
  */
39
107
  declare class CbTable {
108
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
109
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
110
+ /** Rellena `{0}`, `{1}`… de un texto traducido. */
111
+ protected readonly fmt: typeof cbFormat;
112
+ protected readonly minColumnWidth = 48;
113
+ private readonly document;
40
114
  private readonly cellTemplates;
115
+ /** Plantilla de fila expandida; si existe, se añade la columna de expandir. */
116
+ protected readonly expansion: _angular_core.Signal<CbTableRowExpansion | undefined>;
117
+ /** Plantilla de cabecera de grupo (con `groupRowsBy`). */
118
+ protected readonly groupHeader: _angular_core.Signal<CbTableGroupHeader | undefined>;
119
+ private readonly tableRef;
41
120
  readonly value: _angular_core.InputSignal<readonly unknown[]>;
42
121
  readonly columns: _angular_core.InputSignal<readonly CbTableColumn[]>;
43
122
  readonly paginator: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -46,40 +125,129 @@ declare class CbTable {
46
125
  readonly striped: _angular_core.InputSignalWithTransform<boolean, unknown>;
47
126
  readonly rowHover: _angular_core.InputSignalWithTransform<boolean, unknown>;
48
127
  readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
49
- readonly emptyMessage: _angular_core.InputSignal<string>;
128
+ readonly emptyMessage: _angular_core.InputSignal<string | undefined>;
129
+ /** Nombre accesible de la tabla. */
130
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
50
131
  /** `single`, `multiple` o `null` (sin selección). */
51
132
  readonly selectionMode: _angular_core.InputSignal<"single" | "multiple" | null>;
52
- /** Propiedad identificadora para comparar selección (si no, por referencia). */
133
+ /** Propiedad identificadora para comparar selección y filas expandidas (si no, por referencia). */
53
134
  readonly dataKey: _angular_core.InputSignal<string | null>;
135
+ /** Texto del filtro global (two-way). Busca en `globalFilterFields`. */
136
+ readonly globalFilter: _angular_core.ModelSignal<string>;
137
+ /** Campos en los que busca el filtro global. Por defecto, los de todas las columnas. */
138
+ readonly globalFilterFields: _angular_core.InputSignal<readonly string[] | null>;
139
+ /** Permite cambiar el ancho de las columnas arrastrando o con el teclado. */
140
+ readonly resizableColumns: _angular_core.InputSignalWithTransform<boolean, unknown>;
141
+ /** Claves (`dataKey`) o filas expandidas (two-way). */
142
+ readonly expandedRowKeys: _angular_core.ModelSignal<readonly unknown[]>;
143
+ /** Alto máximo (CSS) de la tabla: hace scroll con la cabecera fija. */
144
+ readonly scrollHeight: _angular_core.InputSignal<string | null>;
145
+ /** Agrupa las filas por este campo, con una fila de cabecera por grupo. */
146
+ readonly groupRowsBy: _angular_core.InputSignal<string | null>;
147
+ /**
148
+ * Datos desde el servidor: la tabla no filtra, ordena ni pagina; emite `lazyLoad`
149
+ * y muestra `value` tal cual (la página actual).
150
+ */
151
+ readonly lazy: _angular_core.InputSignalWithTransform<boolean, unknown>;
152
+ /** Total de filas en el servidor (modo `lazy`), para el paginador. */
153
+ readonly totalRecords: _angular_core.InputSignal<number | null>;
154
+ /** Muestra la capa de carga y marca la tabla con `aria-busy`. */
155
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
54
156
  readonly selection: _angular_core.ModelSignal<unknown>;
55
157
  readonly sortChange: _angular_core.OutputEmitterRef<{
56
158
  field: string | null;
57
159
  order: 1 | -1;
58
160
  }>;
59
- protected readonly first: _angular_core.WritableSignal<number>;
161
+ readonly filterChange: _angular_core.OutputEmitterRef<CbTableFilterState>;
162
+ readonly columnResize: _angular_core.OutputEmitterRef<{
163
+ field: string;
164
+ width: number;
165
+ }>;
166
+ readonly rowExpand: _angular_core.OutputEmitterRef<unknown>;
167
+ readonly rowCollapse: _angular_core.OutputEmitterRef<unknown>;
168
+ /** En modo `lazy`: página, orden y filtros que hay que pedir al servidor. */
169
+ readonly lazyLoad: _angular_core.OutputEmitterRef<CbTableLazyLoadEvent>;
60
170
  private readonly sortField;
61
171
  private readonly sortOrder;
62
- protected readonly sorted: _angular_core.Signal<unknown[]>;
63
- protected readonly pageRows: _angular_core.Signal<unknown[]>;
172
+ protected readonly columnFilters: _angular_core.WritableSignal<Readonly<Partial<Record<string, string>>>>;
173
+ protected readonly widths: _angular_core.WritableSignal<Readonly<Partial<Record<string, number>>>>;
174
+ /** Columnas en orden de pantalla: las fijas primero. */
175
+ protected readonly displayColumns: _angular_core.Signal<CbTableColumn[]>;
176
+ protected readonly hasFrozen: _angular_core.Signal<boolean>;
177
+ protected readonly lastFrozen: _angular_core.Signal<string | null>;
178
+ /** Desplazamiento `left` (px) de cada celda fija, medido tras el render. */
179
+ private readonly frozenOffsets;
180
+ protected readonly hasColumnFilters: _angular_core.Signal<boolean>;
181
+ protected readonly isFiltering: _angular_core.Signal<boolean>;
182
+ protected readonly filtered: _angular_core.Signal<readonly unknown[]>;
183
+ protected readonly sorted: _angular_core.Signal<readonly unknown[]>;
184
+ /** Filas totales: las del servidor en modo `lazy`, las filtradas si no. */
185
+ protected readonly total: _angular_core.Signal<number>;
186
+ /** Primera fila de la página; vuelve a 0 al filtrar u ordenar (y, sin `lazy`, al cambiar los datos). */
187
+ protected readonly first: _angular_core.WritableSignal<number>;
188
+ /** Filas por grupo en todos los datos (no solo en la página). */
189
+ private readonly groupCounts;
190
+ protected readonly pageRows: _angular_core.Signal<readonly unknown[]>;
64
191
  protected readonly colspan: _angular_core.Signal<number>;
192
+ private readonly selectedCount;
65
193
  protected readonly allSelected: _angular_core.Signal<boolean>;
194
+ protected readonly someSelected: _angular_core.Signal<boolean>;
195
+ private readonly uid;
196
+ private stopResize;
197
+ constructor();
198
+ /** Aplica el filtro global (equivale a `[globalFilter]`). */
199
+ filterGlobal(text: string): void;
200
+ /** Aplica el filtro de una columna. */
201
+ filterColumn(field: string, text: string): void;
202
+ /** Quita todos los filtros. */
203
+ clearFilters(): void;
204
+ private emitFilters;
205
+ /** Pide al servidor la página actual (solo en modo `lazy`). */
206
+ private emitLazy;
207
+ private matchMode;
66
208
  protected onSort(col: CbTableColumn): void;
67
209
  protected sortIcon(col: CbTableColumn): string;
68
210
  protected ariaSort(col: CbTableColumn): string | null;
69
211
  protected onRowClick(row: unknown): void;
70
212
  protected toggleAll(): void;
71
213
  protected isSelected(row: unknown): boolean;
214
+ protected isExpanded(row: unknown): boolean;
215
+ /** Expande o contrae una fila. */
216
+ toggleExpansion(row: unknown): void;
217
+ protected expansionId(index: number): string;
218
+ protected columnWidth(col: CbTableColumn): string | null;
219
+ protected startResize(event: PointerEvent, col: CbTableColumn): void;
220
+ /** Flecha izquierda / derecha cambian el ancho (10 px; 50 px con Mayús). */
221
+ protected onResizerKeydown(event: KeyboardEvent, col: CbTableColumn): void;
222
+ private currentWidth;
223
+ private setWidth;
72
224
  protected onPageChange(state: CbPaginatorState): void;
225
+ protected groupOf(row: unknown): unknown;
226
+ protected groupCount(row: unknown): number;
227
+ /** La fila abre grupo si es la primera de la página o cambia el valor del grupo. */
228
+ protected isGroupStart(index: number): boolean;
229
+ protected frozenLeft(key: string): number | null;
230
+ /** Suma los anchos de las celdas fijas anteriores (expandir, selección y columnas `frozen`). */
231
+ private measureFrozen;
232
+ /**
233
+ * Datos en CSV: columnas visibles (salvo `exportable: false`) y todas las filas
234
+ * filtradas y ordenadas (no solo la página), o las seleccionadas con `selectionOnly`.
235
+ */
236
+ toCSV(options?: CbTableCsvOptions): string;
237
+ /** Descarga el CSV (`nombre.csv`), con BOM para que Excel respete tildes y eñes. */
238
+ exportCSV(filename?: string, options?: CbTableCsvOptions): void;
73
239
  protected cellValue(row: unknown, col: CbTableColumn): unknown;
74
240
  protected cellTemplate(field: string): CbTableCellDirective | undefined;
75
241
  protected cellContext(row: unknown, col: CbTableColumn): CbTableCellContext;
76
242
  protected rowKey(row: unknown, index: number): unknown;
243
+ /** Clave de una fila: su `dataKey` o la propia fila. */
244
+ private keyOf;
77
245
  private same;
78
246
  private compare;
79
247
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbTable, never>;
80
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbTable, "cb-table", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "paginator": { "alias": "paginator"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "rowsPerPageOptions": { "alias": "rowsPerPageOptions"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "rowHover": { "alias": "rowHover"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; }, { "rows": "rowsChange"; "selection": "selectionChange"; "sortChange": "sortChange"; }, ["cellTemplates"], never, true, never>;
248
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbTable, "cb-table", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "paginator": { "alias": "paginator"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "rowsPerPageOptions": { "alias": "rowsPerPageOptions"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "rowHover": { "alias": "rowHover"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "globalFilter": { "alias": "globalFilter"; "required": false; "isSignal": true; }; "globalFilterFields": { "alias": "globalFilterFields"; "required": false; "isSignal": true; }; "resizableColumns": { "alias": "resizableColumns"; "required": false; "isSignal": true; }; "expandedRowKeys": { "alias": "expandedRowKeys"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "groupRowsBy": { "alias": "groupRowsBy"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; }, { "rows": "rowsChange"; "globalFilter": "globalFilterChange"; "expandedRowKeys": "expandedRowKeysChange"; "selection": "selectionChange"; "sortChange": "sortChange"; "filterChange": "filterChange"; "columnResize": "columnResize"; "rowExpand": "rowExpand"; "rowCollapse": "rowCollapse"; "lazyLoad": "lazyLoad"; }, ["cellTemplates", "expansion", "groupHeader"], ["[cbTableHeader]"], true, never>;
81
249
  }
82
250
 
83
- export { CbTable, CbTableCellDirective };
84
- export type { CbTableCellContext, CbTableColumn };
251
+ export { CbTable, CbTableCellDirective, CbTableGroupHeader, CbTableRowExpansion };
252
+ export type { CbTableCellContext, CbTableColumn, CbTableCsvOptions, CbTableFilterMatchMode, CbTableFilterState, CbTableGroupHeaderContext, CbTableLazyLoadEvent, CbTableRowExpansionContext };
85
253
  //# sourceMappingURL=caribeng-ui-table.d.ts.map
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
2
3
 
3
4
  interface CbTabMenuItem {
4
5
  label: string;
@@ -8,9 +9,11 @@ interface CbTabMenuItem {
8
9
  }
9
10
  /** Horizontal navigation menu with an active item. */
10
11
  declare class CbTabMenu {
12
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
13
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
11
14
  readonly items: _angular_core.InputSignal<readonly CbTabMenuItem[]>;
12
15
  readonly activeIndex: _angular_core.ModelSignal<number>;
13
- readonly ariaLabel: _angular_core.InputSignal<string>;
16
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
14
17
  readonly itemSelect: _angular_core.OutputEmitterRef<CbTabMenuItem>;
15
18
  select(item: CbTabMenuItem, index: number): void;
16
19
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbTabMenu, never>;
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
2
3
 
3
4
  interface CbTerminalEntry {
4
5
  command: string;
@@ -8,13 +9,22 @@ interface CbTerminalEntry {
8
9
  * Terminal de CaribeNG: consola interactiva basada en señales con historial de comandos.
9
10
  */
10
11
  declare class CbTerminal {
12
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
13
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
11
14
  readonly welcomeMessage: _angular_core.InputSignal<string>;
12
15
  readonly prompt: _angular_core.InputSignal<string>;
13
16
  readonly commandEntered: _angular_core.OutputEmitterRef<string>;
14
17
  readonly entries: _angular_core.WritableSignal<CbTerminalEntry[]>;
15
18
  readonly currentCommand: _angular_core.WritableSignal<string>;
19
+ /** Posición en el historial al recorrerlo con flechas (`null` = escribiendo uno nuevo). */
20
+ private historyIndex;
21
+ private readonly commandInput;
22
+ /** Fija el comando actual también en el DOM (el binding no detecta '' → '' si no hubo render entre medias). */
23
+ private setCommand;
16
24
  protected onInput(event: Event): void;
17
25
  submitCommand(): void;
26
+ /** Flecha arriba / abajo recorren los comandos anteriores. */
27
+ protected recall(event: Event, step: -1 | 1): void;
18
28
  sendResponse(response: string): void;
19
29
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbTerminal, never>;
20
30
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbTerminal, "cb-terminal", never, { "welcomeMessage": { "alias": "welcomeMessage"; "required": false; "isSignal": true; }; "prompt": { "alias": "prompt"; "required": false; "isSignal": true; }; }, { "commandEntered": "commandEntered"; }, never, never, true, never>;
@@ -0,0 +1,32 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
3
+ import { CbThemeService, CbSize } from '@caribeng/ui';
4
+
5
+ /**
6
+ * Botón de cambio de tema claro / oscuro sobre `CbThemeService` (con
7
+ * `provideCaribeNG({ persistTheme: true })` recuerda la elección).
8
+ *
9
+ * Su nombre accesible describe la acción ("Cambiar a tema oscuro"), por eso
10
+ * no usa `aria-pressed`.
11
+ *
12
+ * @example
13
+ * ```html
14
+ * <cb-theme-toggle />
15
+ * <cb-theme-toggle showLabel size="sm" />
16
+ * ```
17
+ */
18
+ declare class CbThemeToggle {
19
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
20
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
21
+ protected readonly theme: CbThemeService;
22
+ readonly size: _angular_core.InputSignal<CbSize>;
23
+ /** Muestra el texto además del icono. */
24
+ readonly showLabel: _angular_core.InputSignalWithTransform<boolean, unknown>;
25
+ /** Acción que hará el botón: cambiar al tema contrario al actual. */
26
+ protected readonly label: _angular_core.Signal<string>;
27
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbThemeToggle, never>;
28
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbThemeToggle, "cb-theme-toggle", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
29
+ }
30
+
31
+ export { CbThemeToggle };
32
+ //# sourceMappingURL=caribeng-ui-themetoggle.d.ts.map
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
2
3
 
3
4
  interface CbTieredMenuItem {
4
5
  label: string;
@@ -10,12 +11,14 @@ interface CbTieredMenuItem {
10
11
  }
11
12
  /** Popup menu with cascading submenus. */
12
13
  declare class CbTieredMenu {
14
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
15
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
13
16
  private readonly overlay;
14
17
  private readonly vcr;
15
18
  private readonly destroyRef;
16
19
  readonly items: _angular_core.InputSignal<readonly CbTieredMenuItem[]>;
17
- readonly ariaLabel: _angular_core.InputSignal<string>;
18
- readonly triggerLabel: _angular_core.InputSignal<string>;
20
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
21
+ readonly triggerLabel: _angular_core.InputSignal<string | undefined>;
19
22
  readonly itemSelect: _angular_core.OutputEmitterRef<CbTieredMenuItem>;
20
23
  protected readonly isOpen: _angular_core.WritableSignal<boolean>;
21
24
  protected readonly openIndex: _angular_core.WritableSignal<number | null>;
@@ -1,18 +1,77 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
3
+ import * as _caribeng_ui from '@caribeng/ui';
2
4
 
3
5
  interface CbTimelineEvent {
4
6
  title: string;
7
+ /** Fecha o momento, tal como se muestra (p. ej. "Hoy, 10:30"). */
5
8
  date?: string;
9
+ /** Fecha legible por máquina para `<time datetime>` (p. ej. "2026-10-20T10:30"). */
10
+ datetime?: string;
6
11
  description?: string;
12
+ /** Icono dentro del marcador (nombre del set de iconos). */
13
+ icon?: string;
14
+ /** Color del marcador (cualquier color CSS). */
15
+ color?: string;
7
16
  }
17
+ type CbTimelineAlign = 'left' | 'right' | 'alternate';
18
+ /** Contexto de las plantillas `let-event let-index="index"`. */
19
+ interface CbTimelineContext {
20
+ $implicit: CbTimelineEvent;
21
+ index: number;
22
+ }
23
+ /** Plantilla del contenido de cada evento. */
24
+ declare class CbTimelineContentTemplate {
25
+ readonly template: TemplateRef<CbTimelineContext>;
26
+ static ngTemplateContextGuard(_dir: CbTimelineContentTemplate, ctx: unknown): ctx is CbTimelineContext;
27
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbTimelineContentTemplate, never>;
28
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CbTimelineContentTemplate, "ng-template[cbTimelineContent]", never, {}, {}, never, never, true, never>;
29
+ }
30
+ /** Plantilla del lado opuesto al contenido (p. ej. la fecha). */
31
+ declare class CbTimelineOppositeTemplate {
32
+ readonly template: TemplateRef<CbTimelineContext>;
33
+ static ngTemplateContextGuard(_dir: CbTimelineOppositeTemplate, ctx: unknown): ctx is CbTimelineContext;
34
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbTimelineOppositeTemplate, never>;
35
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CbTimelineOppositeTemplate, "ng-template[cbTimelineOpposite]", never, {}, {}, never, never, true, never>;
36
+ }
37
+ /** Plantilla del marcador de cada evento. */
38
+ declare class CbTimelineMarkerTemplate {
39
+ readonly template: TemplateRef<CbTimelineContext>;
40
+ static ngTemplateContextGuard(_dir: CbTimelineMarkerTemplate, ctx: unknown): ctx is CbTimelineContext;
41
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbTimelineMarkerTemplate, never>;
42
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CbTimelineMarkerTemplate, "ng-template[cbTimelineMarker]", never, {}, {}, never, never, true, never>;
43
+ }
44
+ /**
45
+ * Línea de tiempo de CaribeNG: eventos en vertical u horizontal, alineados a
46
+ * un lado o alternados, con plantillas para el contenido, el lado opuesto y
47
+ * el marcador.
48
+ *
49
+ * @example
50
+ * ```html
51
+ * <cb-timeline [value]="eventos" align="alternate" />
52
+ *
53
+ * <cb-timeline [value]="eventos">
54
+ * <ng-template cbTimelineContent let-evento>{{ evento.title }}</ng-template>
55
+ * </cb-timeline>
56
+ * ```
57
+ */
8
58
  declare class CbTimeline {
59
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
60
+ /** Eventos, en orden. */
9
61
  readonly value: _angular_core.InputSignal<readonly CbTimelineEvent[]>;
62
+ /** Disposición: vertical (por defecto) u horizontal. */
10
63
  readonly orientation: _angular_core.InputSignal<"vertical" | "horizontal">;
11
- readonly ariaLabel: _angular_core.InputSignal<string>;
64
+ /** Lado del contenido respecto a la línea: izquierda, derecha o alternado. */
65
+ readonly align: _angular_core.InputSignal<CbTimelineAlign>;
66
+ /** Nombre accesible de la lista. Por defecto, el del idioma activo. */
67
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
68
+ protected readonly contentTemplate: _angular_core.Signal<CbTimelineContentTemplate | undefined>;
69
+ protected readonly oppositeTemplate: _angular_core.Signal<CbTimelineOppositeTemplate | undefined>;
70
+ protected readonly markerTemplate: _angular_core.Signal<CbTimelineMarkerTemplate | undefined>;
12
71
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbTimeline, never>;
13
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbTimeline, "cb-timeline", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
72
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbTimeline, "cb-timeline", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, ["contentTemplate", "oppositeTemplate", "markerTemplate"], never, true, never>;
14
73
  }
15
74
 
16
- export { CbTimeline };
17
- export type { CbTimelineEvent };
75
+ export { CbTimeline, CbTimelineContentTemplate, CbTimelineMarkerTemplate, CbTimelineOppositeTemplate };
76
+ export type { CbTimelineAlign, CbTimelineContext, CbTimelineEvent };
18
77
  //# sourceMappingURL=caribeng-ui-timeline.d.ts.map
@@ -1,4 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
2
3
  import { CbSeverity } from '@caribeng/ui';
3
4
 
4
5
  interface CbToastMessage {
@@ -58,6 +59,8 @@ type CbToastPosition = 'top-right' | 'top-left' | 'top-center' | 'bottom-right'
58
59
  * ```
59
60
  */
60
61
  declare class CbToast {
62
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
63
+ protected readonly t: i0.Signal<_caribeng_ui.CbTranslation>;
61
64
  protected readonly service: CbToastService;
62
65
  readonly position: i0.InputSignal<CbToastPosition>;
63
66
  protected iconFor(severity: CbSeverity): string;
@@ -1,6 +1,6 @@
1
+ import * as _angular_core from '@angular/core';
1
2
  import * as _caribeng_ui from '@caribeng/ui';
2
3
  import { CbSize } from '@caribeng/ui';
3
- import * as _angular_core from '@angular/core';
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
5
 
6
6
  /**
@@ -13,8 +13,10 @@ import { ControlValueAccessor } from '@angular/forms';
13
13
  * ```
14
14
  */
15
15
  declare class CbToggleButton implements ControlValueAccessor {
16
- readonly onLabel: _angular_core.InputSignal<string>;
17
- readonly offLabel: _angular_core.InputSignal<string>;
16
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
17
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
18
+ readonly onLabel: _angular_core.InputSignal<string | undefined>;
19
+ readonly offLabel: _angular_core.InputSignal<string | undefined>;
18
20
  readonly onIcon: _angular_core.InputSignal<string>;
19
21
  readonly offIcon: _angular_core.InputSignal<string>;
20
22
  readonly size: _angular_core.InputSignal<CbSize>;
@@ -1,4 +1,5 @@
1
- import * as i0 from '@angular/core';
1
+ import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
2
3
 
3
4
  /**
4
5
  * Toolbar de CaribeNG: contenedor horizontal accesible (`role="toolbar"`) para
@@ -15,10 +16,12 @@ import * as i0 from '@angular/core';
15
16
  * ```
16
17
  */
17
18
  declare class CbToolbar {
19
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
20
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
18
21
  /** Etiqueta accesible para el contenedor `role="toolbar"`. */
19
- readonly ariaLabel: i0.InputSignal<string>;
20
- static ɵfac: i0.ɵɵFactoryDeclaration<CbToolbar, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<CbToolbar, "cb-toolbar", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["[cb-toolbar-start]", "*", "[cb-toolbar-center]", "[cb-toolbar-end]"], true, never>;
22
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
23
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbToolbar, never>;
24
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbToolbar, "cb-toolbar", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["[cb-toolbar-start]", "*", "[cb-toolbar-center]", "[cb-toolbar-end]"], true, never>;
22
25
  }
23
26
 
24
27
  export { CbToolbar };
@@ -1,19 +1,91 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
3
+ import * as _caribeng_ui from '@caribeng/ui';
4
+ import { cbFormat } from '@caribeng/ui';
2
5
 
6
+ /** Nodo de un `<cb-tree>`. */
3
7
  interface CbTreeNode {
8
+ /** Identificador único en todo el árbol. */
4
9
  key: string;
5
10
  label: string;
11
+ /** Icono opcional (nombre del set de iconos). */
12
+ icon?: string;
13
+ /** El nodo no se puede seleccionar (sí expandir). */
14
+ disabled?: boolean;
6
15
  children?: readonly CbTreeNode[];
16
+ /** Datos propios, disponibles en la plantilla de nodo. */
17
+ data?: unknown;
7
18
  }
19
+ /** Contexto de la plantilla `<ng-template cbTreeNode let-node let-level="level">`. */
20
+ interface CbTreeNodeContext {
21
+ $implicit: CbTreeNode;
22
+ level: number;
23
+ expanded: boolean;
24
+ selected: boolean;
25
+ }
26
+ /** Plantilla para el contenido de cada nodo. */
27
+ declare class CbTreeNodeTemplate {
28
+ readonly template: TemplateRef<CbTreeNodeContext>;
29
+ static ngTemplateContextGuard(_dir: CbTreeNodeTemplate, ctx: unknown): ctx is CbTreeNodeContext;
30
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbTreeNodeTemplate, never>;
31
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CbTreeNodeTemplate, "ng-template[cbTreeNode]", never, {}, {}, never, never, true, never>;
32
+ }
33
+ /**
34
+ * Árbol jerárquico de CaribeNG con niveles ilimitados, selección simple y
35
+ * navegación con teclado según el patrón *tree* de WAI-ARIA.
36
+ *
37
+ * @example
38
+ * ```html
39
+ * <cb-tree [value]="nodes" [(selection)]="selected" ariaLabel="Documentos" />
40
+ *
41
+ * <cb-tree [value]="nodes">
42
+ * <ng-template cbTreeNode let-node>{{ node.label }} ({{ node.children?.length ?? 0 }})</ng-template>
43
+ * </cb-tree>
44
+ * ```
45
+ */
8
46
  declare class CbTree {
47
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
48
+ protected readonly fmt: typeof cbFormat;
49
+ private readonly host;
50
+ private readonly uid;
51
+ /** Nodos raíz. */
9
52
  readonly value: _angular_core.InputSignal<readonly CbTreeNode[]>;
53
+ /** Nodo seleccionado (two-way). */
10
54
  readonly selection: _angular_core.ModelSignal<CbTreeNode | null>;
55
+ /** Nombre accesible del árbol. */
56
+ readonly ariaLabel: _angular_core.InputSignal<string>;
57
+ /** Se emite al expandir un nodo. */
58
+ readonly nodeExpand: _angular_core.OutputEmitterRef<CbTreeNode>;
59
+ /** Se emite al contraer un nodo. */
60
+ readonly nodeCollapse: _angular_core.OutputEmitterRef<CbTreeNode>;
61
+ /** Se emite al seleccionar un nodo. */
62
+ readonly nodeSelect: _angular_core.OutputEmitterRef<CbTreeNode>;
63
+ protected readonly nodeTemplate: _angular_core.Signal<CbTreeNodeTemplate | undefined>;
11
64
  protected readonly expanded: _angular_core.WritableSignal<ReadonlySet<string>>;
12
- protected toggle(key: string): void;
65
+ /** Último nodo enfocado por el usuario. */
66
+ protected readonly activeKey: _angular_core.WritableSignal<string | null>;
67
+ /** Nodo que recibe el foco con Tab (roving tabindex): el activo, el seleccionado o el primero. */
68
+ protected readonly tabbableKey: _angular_core.Signal<string>;
69
+ /** Nodos visibles en orden de lectura (solo ramas expandidas). */
70
+ private readonly visible;
71
+ /** Expande todos los nodos. */
72
+ expandAll(): void;
73
+ /** Contrae todos los nodos. */
74
+ collapseAll(): void;
75
+ protected hasChildren(node: CbTreeNode): boolean;
76
+ protected isExpanded(node: CbTreeNode): boolean;
77
+ protected isSelected(node: CbTreeNode): boolean;
78
+ protected itemId(node: CbTreeNode): string;
79
+ protected toggle(node: CbTreeNode, event?: Event): void;
80
+ protected onClick(event: Event, node: CbTreeNode): void;
81
+ protected onKeydown(event: KeyboardEvent): void;
82
+ private select;
83
+ private setExpanded;
84
+ private focus;
13
85
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbTree, never>;
14
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbTree, "cb-tree", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; }, { "selection": "selectionChange"; }, never, never, true, never>;
86
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbTree, "cb-tree", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "selection": "selectionChange"; "nodeExpand": "nodeExpand"; "nodeCollapse": "nodeCollapse"; "nodeSelect": "nodeSelect"; }, ["nodeTemplate"], never, true, never>;
15
87
  }
16
88
 
17
- export { CbTree };
18
- export type { CbTreeNode };
89
+ export { CbTree, CbTreeNodeTemplate };
90
+ export type { CbTreeNode, CbTreeNodeContext };
19
91
  //# sourceMappingURL=caribeng-ui-tree.d.ts.map