@litigiovirtual/ius-design-components 1.0.300 → 2.0.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 (430) hide show
  1. package/README.md +14 -24
  2. package/fesm2022/litigiovirtual-ius-design-components-utils.mjs +6 -6
  3. package/fesm2022/litigiovirtual-ius-design-components-utils.mjs.map +1 -1
  4. package/fesm2022/litigiovirtual-ius-design-components.mjs +6047 -7480
  5. package/fesm2022/litigiovirtual-ius-design-components.mjs.map +1 -1
  6. package/package.json +10 -14
  7. package/types/litigiovirtual-ius-design-components-utils.d.ts +131 -0
  8. package/types/litigiovirtual-ius-design-components.d.ts +2971 -0
  9. package/esm2022/lib/add-user-container/add-user-container.component.mjs +0 -92
  10. package/esm2022/lib/add-user-container/index.mjs +0 -2
  11. package/esm2022/lib/alert/alert.component.mjs +0 -76
  12. package/esm2022/lib/alert/index.mjs +0 -2
  13. package/esm2022/lib/avatar-business/avatar-business.component.mjs +0 -52
  14. package/esm2022/lib/avatar-business/index.mjs +0 -2
  15. package/esm2022/lib/avatar-icon/avatar-icon.component.mjs +0 -33
  16. package/esm2022/lib/avatar-icon/index.mjs +0 -2
  17. package/esm2022/lib/avatar-v2/avatar-v2.component.mjs +0 -87
  18. package/esm2022/lib/avatar-v2/index.mjs +0 -2
  19. package/esm2022/lib/badge/badge.component.mjs +0 -26
  20. package/esm2022/lib/badge/index.mjs +0 -2
  21. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -22
  22. package/esm2022/lib/breadcrumb/index.mjs +0 -2
  23. package/esm2022/lib/button-accounts/button-accounts.component.mjs +0 -73
  24. package/esm2022/lib/button-accounts/index.mjs +0 -2
  25. package/esm2022/lib/button-auth/button-auth.component.mjs +0 -119
  26. package/esm2022/lib/button-auth/index.mjs +0 -2
  27. package/esm2022/lib/button-circle-secondary/button-circle-secondary.component.mjs +0 -28
  28. package/esm2022/lib/button-circle-secondary/index.mjs +0 -2
  29. package/esm2022/lib/button-circle-tertiary/button-circle-tertiary.component.mjs +0 -28
  30. package/esm2022/lib/button-circle-tertiary/index.mjs +0 -2
  31. package/esm2022/lib/button-dynamic/button-dynamic.component.mjs +0 -121
  32. package/esm2022/lib/button-dynamic/index.mjs +0 -2
  33. package/esm2022/lib/button-filter/button-filter.component.mjs +0 -90
  34. package/esm2022/lib/button-filter/index.mjs +0 -2
  35. package/esm2022/lib/button-menu-link/button-menu-link.component.mjs +0 -31
  36. package/esm2022/lib/button-menu-link/index.mjs +0 -2
  37. package/esm2022/lib/button-order/button-order.component.mjs +0 -75
  38. package/esm2022/lib/button-order/index.mjs +0 -2
  39. package/esm2022/lib/button-squared-secondary/button-squared-secondary.component.mjs +0 -28
  40. package/esm2022/lib/button-squared-secondary/index.mjs +0 -2
  41. package/esm2022/lib/button-squared-tertiary/button-squared-tertiary.component.mjs +0 -28
  42. package/esm2022/lib/button-squared-tertiary/index.mjs +0 -2
  43. package/esm2022/lib/button-standard-outline/button-standard-outline.component.mjs +0 -34
  44. package/esm2022/lib/button-standard-outline/index.mjs +0 -2
  45. package/esm2022/lib/button-standard-primary/button-standard-primary.component.mjs +0 -34
  46. package/esm2022/lib/button-standard-primary/index.mjs +0 -2
  47. package/esm2022/lib/button-standard-secondary/button-standard-secondary.component.mjs +0 -24
  48. package/esm2022/lib/button-standard-secondary/index.mjs +0 -2
  49. package/esm2022/lib/button-standard-tertiary/button-standard-tertiary.component.mjs +0 -34
  50. package/esm2022/lib/button-standard-tertiary/index.mjs +0 -2
  51. package/esm2022/lib/button-standard-tertiary-small/button-standard-tertiary-small.component.mjs +0 -34
  52. package/esm2022/lib/button-standard-tertiary-small/index.mjs +0 -2
  53. package/esm2022/lib/calification/calification.component.mjs +0 -36
  54. package/esm2022/lib/calification/index.mjs +0 -2
  55. package/esm2022/lib/card-agenda-judicial/card-agenda-judicial.component.mjs +0 -62
  56. package/esm2022/lib/card-agenda-judicial/index.mjs +0 -2
  57. package/esm2022/lib/card-block/card-block.component.mjs +0 -53
  58. package/esm2022/lib/card-block/index.mjs +0 -2
  59. package/esm2022/lib/card-button-checkbox/card-button-checkbox.component.mjs +0 -42
  60. package/esm2022/lib/card-button-checkbox/index.mjs +0 -2
  61. package/esm2022/lib/card-collapse-detalle-proceso/card-collapse-detalle-proceso.component.mjs +0 -32
  62. package/esm2022/lib/card-collapse-detalle-proceso/index.mjs +0 -2
  63. package/esm2022/lib/card-dynamic-content/card-dynamic-content.component.mjs +0 -20
  64. package/esm2022/lib/card-dynamic-content/index.mjs +0 -2
  65. package/esm2022/lib/card-gestion-cupo/card-gestion-cupo.component.mjs +0 -28
  66. package/esm2022/lib/card-gestion-cupo/index.mjs +0 -2
  67. package/esm2022/lib/card-info-facturacion/card-info-facturacion.component.mjs +0 -43
  68. package/esm2022/lib/card-info-facturacion/index.mjs +0 -2
  69. package/esm2022/lib/card-list-consumo/card-list-consumo.component.mjs +0 -39
  70. package/esm2022/lib/card-list-consumo/index.mjs +0 -2
  71. package/esm2022/lib/card-list-drag-on/card-list-drag-on.component.mjs +0 -84
  72. package/esm2022/lib/card-list-drag-on/index.mjs +0 -2
  73. package/esm2022/lib/card-list-movimientos/card-list-movimientos.component.mjs +0 -43
  74. package/esm2022/lib/card-list-movimientos/index.mjs +0 -2
  75. package/esm2022/lib/card-list-proceso/card-list-proceso.component.mjs +0 -44
  76. package/esm2022/lib/card-list-proceso/index.mjs +0 -2
  77. package/esm2022/lib/card-log/card-log.component.mjs +0 -36
  78. package/esm2022/lib/card-log/index.mjs +0 -2
  79. package/esm2022/lib/card-plan-small/card-plan-small.component.mjs +0 -18
  80. package/esm2022/lib/card-plan-small/index.mjs +0 -2
  81. package/esm2022/lib/card-plan-subscription/card-plan-subscription.component.mjs +0 -55
  82. package/esm2022/lib/card-plan-subscription/index.mjs +0 -2
  83. package/esm2022/lib/card-ticket/card-ticket.component.mjs +0 -54
  84. package/esm2022/lib/card-ticket/index.mjs +0 -2
  85. package/esm2022/lib/card-tipo-proceso/card-tipo-proceso.component.mjs +0 -67
  86. package/esm2022/lib/card-tipo-proceso/index.mjs +0 -2
  87. package/esm2022/lib/card-uso-plan/card-uso-plan.component.mjs +0 -43
  88. package/esm2022/lib/card-uso-plan/index.mjs +0 -2
  89. package/esm2022/lib/categories/categories.component.mjs +0 -43
  90. package/esm2022/lib/categories/index.mjs +0 -2
  91. package/esm2022/lib/charts-bar-grouped/charts-bar-grouped.component.mjs +0 -238
  92. package/esm2022/lib/charts-bar-grouped/index.mjs +0 -2
  93. package/esm2022/lib/charts-donut/charts-donut.component.mjs +0 -137
  94. package/esm2022/lib/charts-donut/index.mjs +0 -2
  95. package/esm2022/lib/checkbox/checkbox.component.mjs +0 -31
  96. package/esm2022/lib/checkbox/index.mjs +0 -2
  97. package/esm2022/lib/checkbox-radio/checkbox-radio.component.mjs +0 -74
  98. package/esm2022/lib/checkbox-radio/index.mjs +0 -2
  99. package/esm2022/lib/chip/chip.component.mjs +0 -33
  100. package/esm2022/lib/chip/index.mjs +0 -2
  101. package/esm2022/lib/chip-user/chip-user.component.mjs +0 -30
  102. package/esm2022/lib/chip-user/index.mjs +0 -2
  103. package/esm2022/lib/create-ticket/create-ticket.component.mjs +0 -101
  104. package/esm2022/lib/create-ticket/index.mjs +0 -2
  105. package/esm2022/lib/custom-dropdown/custom-dropdown.component.mjs +0 -264
  106. package/esm2022/lib/custom-dropdown/index.mjs +0 -2
  107. package/esm2022/lib/date-hour-picker/date-hour-picker.component.mjs +0 -362
  108. package/esm2022/lib/date-hour-picker/index.mjs +0 -2
  109. package/esm2022/lib/date-picker/date-picker.component.mjs +0 -161
  110. package/esm2022/lib/date-picker/index.mjs +0 -2
  111. package/esm2022/lib/directives/infinite-scroll.directive.mjs +0 -52
  112. package/esm2022/lib/directives/popover.directive.mjs +0 -170
  113. package/esm2022/lib/double-date-picker/double-date-picker.component.mjs +0 -230
  114. package/esm2022/lib/double-date-picker/index.mjs +0 -2
  115. package/esm2022/lib/drawer-container-right/drawer-container-right.component.mjs +0 -71
  116. package/esm2022/lib/drawer-container-right/index.mjs +0 -2
  117. package/esm2022/lib/dropdown/dropdown.component.mjs +0 -77
  118. package/esm2022/lib/dropdown/index.mjs +0 -2
  119. package/esm2022/lib/dropdown-contextual-menu/dropdown-contextual-menu.component.mjs +0 -11
  120. package/esm2022/lib/dropdown-contextual-menu/index.mjs +0 -2
  121. package/esm2022/lib/dropdown-option-item/dropdown-option-item.component.mjs +0 -37
  122. package/esm2022/lib/dropdown-option-item/index.mjs +0 -2
  123. package/esm2022/lib/dropdown-user-menu/dropdown-user-menu.component.mjs +0 -64
  124. package/esm2022/lib/dropdown-user-menu/index.mjs +0 -2
  125. package/esm2022/lib/empty-list/empty-list.component.mjs +0 -22
  126. package/esm2022/lib/empty-list/index.mjs +0 -2
  127. package/esm2022/lib/filter-item/filter-item.component.mjs +0 -28
  128. package/esm2022/lib/filter-item/index.mjs +0 -2
  129. package/esm2022/lib/icon-lg/icon-lg.component.mjs +0 -29
  130. package/esm2022/lib/icon-lg/index.mjs +0 -2
  131. package/esm2022/lib/icon-md/icon-md.component.mjs +0 -29
  132. package/esm2022/lib/icon-md/index.mjs +0 -2
  133. package/esm2022/lib/icon-sm/icon-sm.component.mjs +0 -29
  134. package/esm2022/lib/icon-sm/index.mjs +0 -2
  135. package/esm2022/lib/icon-xl/icon-xl.component.mjs +0 -29
  136. package/esm2022/lib/icon-xl/index.mjs +0 -2
  137. package/esm2022/lib/icon-xs/icon-xs.component.mjs +0 -29
  138. package/esm2022/lib/icon-xs/index.mjs +0 -2
  139. package/esm2022/lib/icon-xxl/icon-xxl.component.mjs +0 -29
  140. package/esm2022/lib/icon-xxl/index.mjs +0 -2
  141. package/esm2022/lib/icons/icons-map.mjs +0 -1164
  142. package/esm2022/lib/input-card/index.mjs +0 -2
  143. package/esm2022/lib/input-card/input-card.component.mjs +0 -158
  144. package/esm2022/lib/input-large/index.mjs +0 -2
  145. package/esm2022/lib/input-large/input-large.component.mjs +0 -98
  146. package/esm2022/lib/input-otp/index.mjs +0 -2
  147. package/esm2022/lib/input-otp/input-otp.component.mjs +0 -173
  148. package/esm2022/lib/input-password/index.mjs +0 -2
  149. package/esm2022/lib/input-password/input-password.component.mjs +0 -91
  150. package/esm2022/lib/input-select/index.mjs +0 -2
  151. package/esm2022/lib/input-select/input-select.component.mjs +0 -237
  152. package/esm2022/lib/input-select-filter/index.mjs +0 -2
  153. package/esm2022/lib/input-select-filter/input-select-filter.component.mjs +0 -202
  154. package/esm2022/lib/input-select-number/index.mjs +0 -2
  155. package/esm2022/lib/input-select-number/input-select-number.component.mjs +0 -68
  156. package/esm2022/lib/input-textfield/index.mjs +0 -2
  157. package/esm2022/lib/input-textfield/input-textfield.component.mjs +0 -143
  158. package/esm2022/lib/item-document/index.mjs +0 -2
  159. package/esm2022/lib/item-document/item-document.component.mjs +0 -61
  160. package/esm2022/lib/linear-progress-bar/index.mjs +0 -2
  161. package/esm2022/lib/linear-progress-bar/linear-progress-bar.component.mjs +0 -16
  162. package/esm2022/lib/loading-circle/index.mjs +0 -2
  163. package/esm2022/lib/loading-circle/loading-circle.component.mjs +0 -17
  164. package/esm2022/lib/loading-component-dynamic/index.mjs +0 -2
  165. package/esm2022/lib/loading-component-dynamic/loading-component-dynamic.component.mjs +0 -63
  166. package/esm2022/lib/menu-item/index.mjs +0 -2
  167. package/esm2022/lib/menu-item/menu-item.component.mjs +0 -62
  168. package/esm2022/lib/nav-rail/index.mjs +0 -2
  169. package/esm2022/lib/nav-rail/nav-rail.component.mjs +0 -53
  170. package/esm2022/lib/notification-card/index.mjs +0 -2
  171. package/esm2022/lib/notification-card/notification-card.component.mjs +0 -107
  172. package/esm2022/lib/notifications/index.mjs +0 -2
  173. package/esm2022/lib/notifications/notifications.component.mjs +0 -167
  174. package/esm2022/lib/option/index.mjs +0 -2
  175. package/esm2022/lib/option/option.component.mjs +0 -38
  176. package/esm2022/lib/option-item/index.mjs +0 -2
  177. package/esm2022/lib/option-item/option-item.component.mjs +0 -36
  178. package/esm2022/lib/page-not-found/index.mjs +0 -2
  179. package/esm2022/lib/page-not-found/page-not-found.component.mjs +0 -28
  180. package/esm2022/lib/popover/popover.component.mjs +0 -30
  181. package/esm2022/lib/progress-bar/progress-bar.component.mjs +0 -117
  182. package/esm2022/lib/search-bar/index.mjs +0 -2
  183. package/esm2022/lib/search-bar/search-bar.component.mjs +0 -79
  184. package/esm2022/lib/section-collapse-drawer-child/index.mjs +0 -2
  185. package/esm2022/lib/section-collapse-drawer-child/section-collapse-drawer-child.component.mjs +0 -79
  186. package/esm2022/lib/section-collapse-drawer-parent/index.mjs +0 -2
  187. package/esm2022/lib/section-collapse-drawer-parent/section-collapse-drawer-parent.component.mjs +0 -79
  188. package/esm2022/lib/segment/index.mjs +0 -2
  189. package/esm2022/lib/segment/segment.component.mjs +0 -43
  190. package/esm2022/lib/simple-card-contador/index.mjs +0 -2
  191. package/esm2022/lib/simple-card-contador/simple-card-contador.component.mjs +0 -53
  192. package/esm2022/lib/simple-chip/index.mjs +0 -2
  193. package/esm2022/lib/simple-chip/simple-chip.component.mjs +0 -38
  194. package/esm2022/lib/simple-divider/index.mjs +0 -2
  195. package/esm2022/lib/simple-divider/simple-divider.component.mjs +0 -11
  196. package/esm2022/lib/simple-user-card/index.mjs +0 -2
  197. package/esm2022/lib/simple-user-card/simple-user-card.component.mjs +0 -17
  198. package/esm2022/lib/slide-toggle/index.mjs +0 -2
  199. package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +0 -26
  200. package/esm2022/lib/snackbar/index.mjs +0 -2
  201. package/esm2022/lib/snackbar/snackbar.component.mjs +0 -40
  202. package/esm2022/lib/support-panel/index.mjs +0 -2
  203. package/esm2022/lib/support-panel/support-panel.component.mjs +0 -45
  204. package/esm2022/lib/toolbar/index.mjs +0 -2
  205. package/esm2022/lib/toolbar/toolbar.component.mjs +0 -376
  206. package/esm2022/lib/toolbar-user-menu/index.mjs +0 -2
  207. package/esm2022/lib/toolbar-user-menu/toolbar-user-menu.component.mjs +0 -139
  208. package/esm2022/lib/user-card/index.mjs +0 -2
  209. package/esm2022/lib/user-card/user-card.component.mjs +0 -91
  210. package/esm2022/litigiovirtual-ius-design-components.mjs +0 -5
  211. package/esm2022/public-api.mjs +0 -102
  212. package/esm2022/utils/currency-format.pipe.mjs +0 -95
  213. package/esm2022/utils/date-format.util.mjs +0 -73
  214. package/esm2022/utils/file-mime.util.mjs +0 -22
  215. package/esm2022/utils/file-size.util.mjs +0 -11
  216. package/esm2022/utils/formato-hora.pipe.mjs +0 -44
  217. package/esm2022/utils/list-filter.util.mjs +0 -77
  218. package/esm2022/utils/litigiovirtual-ius-design-components-utils.mjs +0 -5
  219. package/esm2022/utils/public-api.mjs +0 -16
  220. package/index.d.ts +0 -5
  221. package/lib/add-user-container/add-user-container.component.d.ts +0 -22
  222. package/lib/add-user-container/index.d.ts +0 -1
  223. package/lib/alert/alert.component.d.ts +0 -22
  224. package/lib/alert/index.d.ts +0 -1
  225. package/lib/avatar-business/avatar-business.component.d.ts +0 -16
  226. package/lib/avatar-business/index.d.ts +0 -1
  227. package/lib/avatar-icon/avatar-icon.component.d.ts +0 -10
  228. package/lib/avatar-icon/index.d.ts +0 -1
  229. package/lib/avatar-v2/avatar-v2.component.d.ts +0 -26
  230. package/lib/avatar-v2/index.d.ts +0 -1
  231. package/lib/badge/badge.component.d.ts +0 -7
  232. package/lib/badge/index.d.ts +0 -1
  233. package/lib/breadcrumb/breadcrumb.component.d.ts +0 -16
  234. package/lib/breadcrumb/index.d.ts +0 -1
  235. package/lib/button-accounts/button-accounts.component.d.ts +0 -28
  236. package/lib/button-accounts/index.d.ts +0 -1
  237. package/lib/button-auth/button-auth.component.d.ts +0 -24
  238. package/lib/button-auth/index.d.ts +0 -1
  239. package/lib/button-circle-secondary/button-circle-secondary.component.d.ts +0 -10
  240. package/lib/button-circle-secondary/index.d.ts +0 -1
  241. package/lib/button-circle-tertiary/button-circle-tertiary.component.d.ts +0 -10
  242. package/lib/button-circle-tertiary/index.d.ts +0 -1
  243. package/lib/button-dynamic/button-dynamic.component.d.ts +0 -30
  244. package/lib/button-dynamic/index.d.ts +0 -1
  245. package/lib/button-filter/button-filter.component.d.ts +0 -25
  246. package/lib/button-filter/index.d.ts +0 -1
  247. package/lib/button-menu-link/button-menu-link.component.d.ts +0 -11
  248. package/lib/button-menu-link/index.d.ts +0 -1
  249. package/lib/button-order/button-order.component.d.ts +0 -29
  250. package/lib/button-order/index.d.ts +0 -1
  251. package/lib/button-squared-secondary/button-squared-secondary.component.d.ts +0 -10
  252. package/lib/button-squared-secondary/index.d.ts +0 -1
  253. package/lib/button-squared-tertiary/button-squared-tertiary.component.d.ts +0 -10
  254. package/lib/button-squared-tertiary/index.d.ts +0 -1
  255. package/lib/button-standard-outline/button-standard-outline.component.d.ts +0 -12
  256. package/lib/button-standard-outline/index.d.ts +0 -1
  257. package/lib/button-standard-primary/button-standard-primary.component.d.ts +0 -12
  258. package/lib/button-standard-primary/index.d.ts +0 -1
  259. package/lib/button-standard-secondary/button-standard-secondary.component.d.ts +0 -9
  260. package/lib/button-standard-secondary/index.d.ts +0 -1
  261. package/lib/button-standard-tertiary/button-standard-tertiary.component.d.ts +0 -12
  262. package/lib/button-standard-tertiary/index.d.ts +0 -1
  263. package/lib/button-standard-tertiary-small/button-standard-tertiary-small.component.d.ts +0 -12
  264. package/lib/button-standard-tertiary-small/index.d.ts +0 -1
  265. package/lib/calification/calification.component.d.ts +0 -14
  266. package/lib/calification/index.d.ts +0 -1
  267. package/lib/card-agenda-judicial/card-agenda-judicial.component.d.ts +0 -20
  268. package/lib/card-agenda-judicial/index.d.ts +0 -1
  269. package/lib/card-block/card-block.component.d.ts +0 -23
  270. package/lib/card-block/index.d.ts +0 -1
  271. package/lib/card-button-checkbox/card-button-checkbox.component.d.ts +0 -14
  272. package/lib/card-button-checkbox/index.d.ts +0 -1
  273. package/lib/card-collapse-detalle-proceso/card-collapse-detalle-proceso.component.d.ts +0 -13
  274. package/lib/card-collapse-detalle-proceso/index.d.ts +0 -1
  275. package/lib/card-dynamic-content/card-dynamic-content.component.d.ts +0 -7
  276. package/lib/card-dynamic-content/index.d.ts +0 -1
  277. package/lib/card-gestion-cupo/card-gestion-cupo.component.d.ts +0 -12
  278. package/lib/card-gestion-cupo/index.d.ts +0 -1
  279. package/lib/card-info-facturacion/card-info-facturacion.component.d.ts +0 -19
  280. package/lib/card-info-facturacion/index.d.ts +0 -1
  281. package/lib/card-list-consumo/card-list-consumo.component.d.ts +0 -16
  282. package/lib/card-list-consumo/index.d.ts +0 -1
  283. package/lib/card-list-drag-on/card-list-drag-on.component.d.ts +0 -28
  284. package/lib/card-list-drag-on/index.d.ts +0 -1
  285. package/lib/card-list-movimientos/card-list-movimientos.component.d.ts +0 -16
  286. package/lib/card-list-movimientos/index.d.ts +0 -1
  287. package/lib/card-list-proceso/card-list-proceso.component.d.ts +0 -19
  288. package/lib/card-list-proceso/index.d.ts +0 -1
  289. package/lib/card-log/card-log.component.d.ts +0 -18
  290. package/lib/card-log/index.d.ts +0 -1
  291. package/lib/card-plan-small/card-plan-small.component.d.ts +0 -8
  292. package/lib/card-plan-small/index.d.ts +0 -1
  293. package/lib/card-plan-subscription/card-plan-subscription.component.d.ts +0 -23
  294. package/lib/card-plan-subscription/index.d.ts +0 -1
  295. package/lib/card-ticket/card-ticket.component.d.ts +0 -22
  296. package/lib/card-ticket/index.d.ts +0 -1
  297. package/lib/card-tipo-proceso/card-tipo-proceso.component.d.ts +0 -25
  298. package/lib/card-tipo-proceso/index.d.ts +0 -1
  299. package/lib/card-uso-plan/card-uso-plan.component.d.ts +0 -19
  300. package/lib/card-uso-plan/index.d.ts +0 -1
  301. package/lib/categories/categories.component.d.ts +0 -14
  302. package/lib/categories/index.d.ts +0 -1
  303. package/lib/charts-bar-grouped/charts-bar-grouped.component.d.ts +0 -98
  304. package/lib/charts-bar-grouped/index.d.ts +0 -1
  305. package/lib/charts-donut/charts-donut.component.d.ts +0 -47
  306. package/lib/charts-donut/index.d.ts +0 -1
  307. package/lib/checkbox/checkbox.component.d.ts +0 -10
  308. package/lib/checkbox/index.d.ts +0 -1
  309. package/lib/checkbox-radio/checkbox-radio.component.d.ts +0 -20
  310. package/lib/checkbox-radio/index.d.ts +0 -1
  311. package/lib/chip/chip.component.d.ts +0 -11
  312. package/lib/chip/index.d.ts +0 -1
  313. package/lib/chip-user/chip-user.component.d.ts +0 -12
  314. package/lib/chip-user/index.d.ts +0 -1
  315. package/lib/create-ticket/create-ticket.component.d.ts +0 -57
  316. package/lib/create-ticket/index.d.ts +0 -1
  317. package/lib/custom-dropdown/custom-dropdown.component.d.ts +0 -60
  318. package/lib/custom-dropdown/index.d.ts +0 -1
  319. package/lib/date-hour-picker/date-hour-picker.component.d.ts +0 -73
  320. package/lib/date-hour-picker/index.d.ts +0 -1
  321. package/lib/date-picker/date-picker.component.d.ts +0 -42
  322. package/lib/date-picker/index.d.ts +0 -1
  323. package/lib/directives/infinite-scroll.directive.d.ts +0 -15
  324. package/lib/directives/popover.directive.d.ts +0 -41
  325. package/lib/double-date-picker/double-date-picker.component.d.ts +0 -57
  326. package/lib/double-date-picker/index.d.ts +0 -1
  327. package/lib/drawer-container-right/drawer-container-right.component.d.ts +0 -13
  328. package/lib/drawer-container-right/index.d.ts +0 -1
  329. package/lib/dropdown/dropdown.component.d.ts +0 -28
  330. package/lib/dropdown/index.d.ts +0 -1
  331. package/lib/dropdown-contextual-menu/dropdown-contextual-menu.component.d.ts +0 -5
  332. package/lib/dropdown-contextual-menu/index.d.ts +0 -1
  333. package/lib/dropdown-option-item/dropdown-option-item.component.d.ts +0 -15
  334. package/lib/dropdown-option-item/index.d.ts +0 -1
  335. package/lib/dropdown-user-menu/dropdown-user-menu.component.d.ts +0 -20
  336. package/lib/dropdown-user-menu/index.d.ts +0 -1
  337. package/lib/empty-list/empty-list.component.d.ts +0 -8
  338. package/lib/empty-list/index.d.ts +0 -1
  339. package/lib/filter-item/filter-item.component.d.ts +0 -10
  340. package/lib/filter-item/index.d.ts +0 -1
  341. package/lib/icon-lg/icon-lg.component.d.ts +0 -12
  342. package/lib/icon-lg/index.d.ts +0 -1
  343. package/lib/icon-md/icon-md.component.d.ts +0 -12
  344. package/lib/icon-md/index.d.ts +0 -1
  345. package/lib/icon-sm/icon-sm.component.d.ts +0 -13
  346. package/lib/icon-sm/index.d.ts +0 -1
  347. package/lib/icon-xl/icon-xl.component.d.ts +0 -12
  348. package/lib/icon-xl/index.d.ts +0 -1
  349. package/lib/icon-xs/icon-xs.component.d.ts +0 -12
  350. package/lib/icon-xs/index.d.ts +0 -1
  351. package/lib/icon-xxl/icon-xxl.component.d.ts +0 -12
  352. package/lib/icon-xxl/index.d.ts +0 -1
  353. package/lib/icons/icons-map.d.ts +0 -1
  354. package/lib/input-card/index.d.ts +0 -1
  355. package/lib/input-card/input-card.component.d.ts +0 -43
  356. package/lib/input-large/index.d.ts +0 -1
  357. package/lib/input-large/input-large.component.d.ts +0 -30
  358. package/lib/input-otp/index.d.ts +0 -1
  359. package/lib/input-otp/input-otp.component.d.ts +0 -34
  360. package/lib/input-password/index.d.ts +0 -1
  361. package/lib/input-password/input-password.component.d.ts +0 -29
  362. package/lib/input-select/index.d.ts +0 -1
  363. package/lib/input-select/input-select.component.d.ts +0 -55
  364. package/lib/input-select-filter/index.d.ts +0 -1
  365. package/lib/input-select-filter/input-select-filter.component.d.ts +0 -62
  366. package/lib/input-select-number/index.d.ts +0 -1
  367. package/lib/input-select-number/input-select-number.component.d.ts +0 -18
  368. package/lib/input-textfield/index.d.ts +0 -1
  369. package/lib/input-textfield/input-textfield.component.d.ts +0 -36
  370. package/lib/item-document/index.d.ts +0 -1
  371. package/lib/item-document/item-document.component.d.ts +0 -19
  372. package/lib/linear-progress-bar/index.d.ts +0 -1
  373. package/lib/linear-progress-bar/linear-progress-bar.component.d.ts +0 -6
  374. package/lib/loading-circle/index.d.ts +0 -1
  375. package/lib/loading-circle/loading-circle.component.d.ts +0 -6
  376. package/lib/loading-component-dynamic/index.d.ts +0 -1
  377. package/lib/loading-component-dynamic/loading-component-dynamic.component.d.ts +0 -22
  378. package/lib/menu-item/index.d.ts +0 -1
  379. package/lib/menu-item/menu-item.component.d.ts +0 -19
  380. package/lib/nav-rail/index.d.ts +0 -1
  381. package/lib/nav-rail/nav-rail.component.d.ts +0 -10
  382. package/lib/notification-card/index.d.ts +0 -1
  383. package/lib/notification-card/notification-card.component.d.ts +0 -37
  384. package/lib/notifications/index.d.ts +0 -1
  385. package/lib/notifications/notifications.component.d.ts +0 -30
  386. package/lib/option/index.d.ts +0 -1
  387. package/lib/option/option.component.d.ts +0 -14
  388. package/lib/option-item/index.d.ts +0 -1
  389. package/lib/option-item/option-item.component.d.ts +0 -13
  390. package/lib/page-not-found/index.d.ts +0 -1
  391. package/lib/page-not-found/page-not-found.component.d.ts +0 -12
  392. package/lib/popover/popover.component.d.ts +0 -10
  393. package/lib/progress-bar/progress-bar.component.d.ts +0 -43
  394. package/lib/search-bar/index.d.ts +0 -1
  395. package/lib/search-bar/search-bar.component.d.ts +0 -24
  396. package/lib/section-collapse-drawer-child/index.d.ts +0 -1
  397. package/lib/section-collapse-drawer-child/section-collapse-drawer-child.component.d.ts +0 -14
  398. package/lib/section-collapse-drawer-parent/index.d.ts +0 -1
  399. package/lib/section-collapse-drawer-parent/section-collapse-drawer-parent.component.d.ts +0 -14
  400. package/lib/segment/index.d.ts +0 -1
  401. package/lib/segment/segment.component.d.ts +0 -14
  402. package/lib/simple-card-contador/index.d.ts +0 -1
  403. package/lib/simple-card-contador/simple-card-contador.component.d.ts +0 -14
  404. package/lib/simple-chip/index.d.ts +0 -1
  405. package/lib/simple-chip/simple-chip.component.d.ts +0 -13
  406. package/lib/simple-divider/index.d.ts +0 -1
  407. package/lib/simple-divider/simple-divider.component.d.ts +0 -5
  408. package/lib/simple-user-card/index.d.ts +0 -1
  409. package/lib/simple-user-card/simple-user-card.component.d.ts +0 -8
  410. package/lib/slide-toggle/index.d.ts +0 -1
  411. package/lib/slide-toggle/slide-toggle.component.d.ts +0 -10
  412. package/lib/snackbar/index.d.ts +0 -1
  413. package/lib/snackbar/snackbar.component.d.ts +0 -16
  414. package/lib/support-panel/index.d.ts +0 -1
  415. package/lib/support-panel/support-panel.component.d.ts +0 -17
  416. package/lib/toolbar/index.d.ts +0 -1
  417. package/lib/toolbar/toolbar.component.d.ts +0 -145
  418. package/lib/toolbar-user-menu/index.d.ts +0 -1
  419. package/lib/toolbar-user-menu/toolbar-user-menu.component.d.ts +0 -45
  420. package/lib/user-card/index.d.ts +0 -1
  421. package/lib/user-card/user-card.component.d.ts +0 -34
  422. package/public-api.d.ts +0 -100
  423. package/utils/currency-format.pipe.d.ts +0 -29
  424. package/utils/date-format.util.d.ts +0 -20
  425. package/utils/file-mime.util.d.ts +0 -8
  426. package/utils/file-size.util.d.ts +0 -8
  427. package/utils/formato-hora.pipe.d.ts +0 -14
  428. package/utils/index.d.ts +0 -5
  429. package/utils/list-filter.util.d.ts +0 -46
  430. package/utils/public-api.d.ts +0 -6
@@ -0,0 +1,2971 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnDestroy, EventEmitter, AfterViewInit, OnChanges, SimpleChanges, OnInit, TemplateRef, Signal } from '@angular/core';
3
+ import { ControlValueAccessor } from '@angular/forms';
4
+ import { SafeHtml } from '@angular/platform-browser';
5
+
6
+ /** Jerarquía visual. `danger` = destructivo (color semántico, no accent). */
7
+ type IusButtonVariant = 'primary' | 'outline' | 'secondary' | 'tertiary' | 'danger';
8
+ /** Tamaño del botón — small ≈31 · medium ≈39 (default) · large ≈45px. */
9
+ type IusButtonSize = 'small' | 'medium' | 'large';
10
+ /** Resultado visual forzado (modo no-dynamic). */
11
+ type IusButtonStatus = 'success' | 'error';
12
+ /** `type` nativo del `<button>`. */
13
+ type IusButtonType = 'button' | 'submit' | 'reset';
14
+ /** Lo que puede devolver `action` en modo `dynamic` (void → success). */
15
+ type IusButtonActionResult = IusButtonStatus | void;
16
+ interface SizePreset$2 {
17
+ px: string;
18
+ py: string;
19
+ fs: string;
20
+ lh: string;
21
+ icon: string;
22
+ gap: string;
23
+ }
24
+ /**
25
+ * Button — Ius Design v2.
26
+ *
27
+ * Botón estándar de Litigiovirtual: 5 jerarquías (`primary` · `outline` ·
28
+ * `secondary` · `tertiary` · `danger`), 3 tamaños y un modo `dynamic` con la
29
+ * máquina de estados *Loading → Success/Error* (§6 de Button.ng-spec.md).
30
+ * Renderiza un `<button>` nativo; para navegación pura usar un enlace/Link.
31
+ *
32
+ * Modo `dynamic`: al pulsar ejecuta `action(event)`, muestra `loading` (la
33
+ * promesa + 400 ms mínimos), luego `success`/`error` durante 800 ms y vuelve a
34
+ * idle. Una excepción de `action` cae a `error`; resolver sin valor es
35
+ * `success`. `dynamic` ignora los inputs manuales `loading`/`status`.
36
+ *
37
+ * Nota: el `state` de la spec ("solo demos") se omite de la API pública —
38
+ * mismo criterio que TextField. El playground congela hover/pressed con el
39
+ * atributo `data-force` en el host (solo CSS); loading/success/error/disabled
40
+ * se fuerzan con los inputs públicos `loading`/`status`/`disabled`.
41
+ */
42
+ declare class ButtonComponent implements OnDestroy {
43
+ /** Jerarquía visual del botón. */
44
+ variant: IusButtonVariant;
45
+ /** Texto del botón. Tiene prioridad sobre el contenido proyectado. */
46
+ label?: string;
47
+ /** Ligadura Material Symbols Rounded a la izquierda (ej. `"add"`). */
48
+ prefixIcon?: string;
49
+ /** Ligadura a la derecha. (Nombre heredado del original — conservar `sufixIcon` para paridad de API.) */
50
+ sufixIcon?: string;
51
+ /** Activa la máquina de estado transitorio. Ignora `loading` y `status`. */
52
+ dynamic: boolean;
53
+ /** Loading manual. Ignorado si `dynamic`. */
54
+ loading: boolean;
55
+ /** Resultado manual. Ignorado si `dynamic`. */
56
+ status?: IusButtonStatus;
57
+ /** Deshabilitado. El efectivo también cubre loading/status (§7). */
58
+ disabled: boolean;
59
+ /** Fuerza visualmente pressed (demos). */
60
+ pressed: boolean;
61
+ /** Ocupa el 100 % del ancho del contenedor (formularios, login). */
62
+ fullWidth: boolean;
63
+ /** `type` del `<button>` nativo. */
64
+ type: IusButtonType;
65
+ /**
66
+ * Nombre accesible del `<button>` (equivalente Angular del passthrough
67
+ * `...rest`/`aria-label` del golden; lo usa OAuthButton al componer).
68
+ */
69
+ ariaLabel?: string;
70
+ /** Acción del modo `dynamic`; su resolución decide success/error (§3). */
71
+ action?: (event: MouseEvent) => Promise<IusButtonActionResult> | IusButtonActionResult;
72
+ /**
73
+ * Tamaño explícito → emite `data-size` y aplica el preset §5. Sin él, el
74
+ * botón hereda `--ius-control-size` del contenedor (medium por defecto),
75
+ * igual que el golden con `size="auto"` (regla transversal 9).
76
+ */
77
+ size?: IusButtonSize;
78
+ /** Emite al pulsar. (No `click`: colisiona con el evento nativo del host.) */
79
+ readonly clicked: EventEmitter<MouseEvent>;
80
+ /** Preset inline del tamaño explícito (null = heredar vía CSS). */
81
+ protected get preset(): SizePreset$2 | null;
82
+ /** Fase de la máquina `dynamic` (§6). */
83
+ private readonly dynPhase;
84
+ private timer;
85
+ private destroyed;
86
+ protected get phase(): 'idle' | 'loading' | 'success' | 'error';
87
+ protected get isLoading(): boolean;
88
+ protected get statusValue(): IusButtonStatus | null;
89
+ /** Disabled efectivo (§7): `disabled || loading || status`. */
90
+ protected get isDisabled(): boolean;
91
+ ngOnDestroy(): void;
92
+ protected handleClick(event: MouseEvent): Promise<void>;
93
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonComponent, never>;
94
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "ius-button", never, { "variant": { "alias": "variant"; "required": false; }; "label": { "alias": "label"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "sufixIcon": { "alias": "sufixIcon"; "required": false; }; "dynamic": { "alias": "dynamic"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "status": { "alias": "status"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "pressed": { "alias": "pressed"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "type": { "alias": "type"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "action": { "alias": "action"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
95
+ static ngAcceptInputType_dynamic: unknown;
96
+ static ngAcceptInputType_loading: unknown;
97
+ static ngAcceptInputType_disabled: unknown;
98
+ static ngAcceptInputType_pressed: unknown;
99
+ static ngAcceptInputType_fullWidth: unknown;
100
+ }
101
+
102
+ type OrbPose = {
103
+ yaw: number;
104
+ pitch: number;
105
+ };
106
+ type OrbMood = 'idle' | 'thinking' | 'speaking' | 'alert' | 'off';
107
+ /** Período del ciclo (segundos) por mood. */
108
+ declare const ORB_PERIODS: Record<string, number>;
109
+ /**
110
+ * Proyecta el cubo con la pose dada y devuelve el markup SVG interno
111
+ * (contorno redondeado + aristas internas con fade). El consumidor lo
112
+ * escribe en el `<g class="cube-g">` (innerHTML, sin re-crear nodos).
113
+ */
114
+ declare function renderCubeSvg(yaw: number, pitch: number): string;
115
+ declare function poseThinking(p: number): OrbPose;
116
+ /** Balanceo isométrico calmado (idle/alert), amplitud 0.8. */
117
+ declare function poseIso(p: number, amp?: number): OrbPose;
118
+ declare function poseSpeaking(p: number, voice: number): OrbPose;
119
+ /** Envolvente de voz: senos incomensurables → cadencia irregular tipo sílabas (0..1). */
120
+ declare function voiceEnv(t: number): number;
121
+ /** Pose por mood (speaking va aparte porque necesita `voice`). */
122
+ declare function pose(p: number, mood: OrbMood): OrbPose;
123
+
124
+ /** Ánimo de la presencia de ElenIA. */
125
+ type IusEleniaOrbMood = OrbMood;
126
+ /** Superficie donde vive el orbe; `dark` aviva el flujo sobre navy. */
127
+ type IusEleniaOrbSurface = 'light' | 'dark';
128
+ /**
129
+ * ElenIAOrb — Ius Design v2.
130
+ *
131
+ * Presencia **de marca** de ElenIA (asistente IA): esfera de luz líquida con
132
+ * el cubo Litigiovirtual proyectado como wireframe que voltea 360°. Es una
133
+ * marca de presencia, no un control ni un cargador (esperas → Loading/
134
+ * LoadingMark; persona → Avatar). No expone hover/pressed: la superficie
135
+ * interactiva la compone el contenedor (`ius-elenia-bubble`).
136
+ *
137
+ * El cubo se recalcula por frame con el módulo puro `ius-orb-geometry`
138
+ * (silueta por convex hull + backface culling + poses por mood); el RAF corre
139
+ * **fuera de la zona** de Angular para no disparar change detection por
140
+ * frame. En `paused`, `prefers-reduced-motion` o `mood='off'` no corre RAF:
141
+ * se dibuja un único frame de reposo.
142
+ */
143
+ declare class EleniaOrbComponent implements AfterViewInit, OnChanges, OnDestroy {
144
+ /** Lado del orbe en px (mínimo recomendado 48). Alimenta `--_orb`. */
145
+ size: number;
146
+ /** Ánimo de la presencia (§4/§6 de la ng-spec). */
147
+ mood: IusEleniaOrbMood;
148
+ /** `dark` aplica `brightness(1.12)` al flujo (más luminoso sobre navy). */
149
+ surface: IusEleniaOrbSurface;
150
+ /** Congela la animación en un frame de reposo (también reduced-motion). */
151
+ paused: boolean;
152
+ /** Etiqueta accesible del glifo. */
153
+ ariaLabel: string;
154
+ private cubeGroup;
155
+ private readonly zone;
156
+ private readonly host;
157
+ private raf;
158
+ private viewReady;
159
+ ngAfterViewInit(): void;
160
+ ngOnChanges(changes: SimpleChanges): void;
161
+ ngOnDestroy(): void;
162
+ /** Cancela el RAF anterior y re-arma según mood/paused (golden useEffect). */
163
+ private restart;
164
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EleniaOrbComponent, never>;
165
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EleniaOrbComponent, "ius-elenia-orb", never, { "size": { "alias": "size"; "required": false; }; "mood": { "alias": "mood"; "required": false; }; "surface": { "alias": "surface"; "required": false; }; "paused": { "alias": "paused"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, {}, never, never, true, never>;
166
+ static ngAcceptInputType_size: unknown;
167
+ static ngAcceptInputType_paused: unknown;
168
+ }
169
+
170
+ /** Tamaño estructural del FAB (lado del botón / orbe interior). */
171
+ type IusEleniaBubbleSize = 'small' | 'medium' | 'large';
172
+ /** Anclaje flotante; `static` lo deja en el flujo para que ancle el consumidor. */
173
+ type IusEleniaBubblePosition = 'bottom-end' | 'bottom-start' | 'top-end' | 'top-start' | 'static';
174
+ interface SizePreset$1 {
175
+ box: number;
176
+ orb: number;
177
+ }
178
+ /**
179
+ * ElenIABubble — Ius Design v2. Lanzador flotante (FAB) del asistente ElenIA.
180
+ *
181
+ * **El orbe ES el botón** (regla rectora de la ng-spec): compone
182
+ * `ius-elenia-orb` intacto, sin caja/fondo/sombra de chrome en icon-only y
183
+ * sin recortar su halo. Los estados hover/pressed/open se expresan con la
184
+ * propia luz del orbe (crece ~1.09 y sube sus vars de luz; pressed comprime
185
+ * ~.94) — nunca un velo gris. Con `label` se vuelve **extendido**: píldora
186
+ * navy elevada con el orbe a ras del borde (`surface="dark"`).
187
+ *
188
+ * Sin máquina dinámica: es un disparador; `mood`/`open` los controla el
189
+ * consumidor. `alert` = novedad sin leer (el orbe late como faro — única
190
+ * señal, sin badge); con `peek` además asoma un mensaje que invita
191
+ * (solo en `alert`, cerrado e icon-only).
192
+ */
193
+ declare class EleniaBubbleComponent {
194
+ /** Ánimo — se pasa tal cual al orbe. `off` además apaga el encendido de hover. */
195
+ mood: IusEleniaOrbMood;
196
+ /** Preset estructural §5 (box/orb 48·42 / 60·52 / 72·62). */
197
+ size: IusEleniaBubbleSize;
198
+ /** Panel de ElenIA abierto → activo sostenido (refleja `aria-expanded`). */
199
+ open: boolean;
200
+ /** Si se pasa, el FAB se vuelve extendido (píldora navy + texto). */
201
+ label?: string;
202
+ /** Anclaje flotante (4 esquinas fixed + `static`). */
203
+ position: IusEleniaBubblePosition;
204
+ /** Congela la animación del orbe (preview/captura). */
205
+ paused: boolean;
206
+ /** Mensaje "peek" que asoma junto al FAB (solo con `mood="alert"`, cerrado e icon-only). */
207
+ peek?: string;
208
+ /** Título del peek. */
209
+ peekTitle: string;
210
+ /** Ligadura del ícono del peek. */
211
+ peekIcon: string;
212
+ /** Nombre accesible; fallback: `label` o "Abrir ElenIA". */
213
+ ariaLabel?: string;
214
+ /** Emite al pulsar el FAB (abrir/cerrar el panel). No `click`. */
215
+ readonly clicked: EventEmitter<MouseEvent>;
216
+ /** Pulso sobre el cuerpo del peek (abrir directo la novedad). */
217
+ readonly peekClicked: EventEmitter<MouseEvent>;
218
+ /** Descarta el peek (la X). */
219
+ readonly peekDismissed: EventEmitter<MouseEvent>;
220
+ protected get preset(): SizePreset$1;
221
+ /** Extendido = hay label (espejo del golden: `label != null && label !== ''`). */
222
+ protected get extended(): boolean;
223
+ protected get accessibleLabel(): string;
224
+ protected get showPeek(): boolean;
225
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EleniaBubbleComponent, never>;
226
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EleniaBubbleComponent, "ius-elenia-bubble", never, { "mood": { "alias": "mood"; "required": false; }; "size": { "alias": "size"; "required": false; }; "open": { "alias": "open"; "required": false; }; "label": { "alias": "label"; "required": false; }; "position": { "alias": "position"; "required": false; }; "paused": { "alias": "paused"; "required": false; }; "peek": { "alias": "peek"; "required": false; }; "peekTitle": { "alias": "peekTitle"; "required": false; }; "peekIcon": { "alias": "peekIcon"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, { "clicked": "clicked"; "peekClicked": "peekClicked"; "peekDismissed": "peekDismissed"; }, never, never, true, never>;
227
+ static ngAcceptInputType_open: unknown;
228
+ static ngAcceptInputType_paused: unknown;
229
+ }
230
+
231
+ /** Proveedor de identidad soportado. Ampliar = agregar logo + label al mapa. */
232
+ type IusOAuthProvider = 'google' | 'microsoft' | 'linkedin';
233
+ /** Tamaño heredado del Button — small ≈34 · medium ≈40 (default) · large ≈48px; logo 18/20/22. */
234
+ type IusOAuthButtonSize = 'small' | 'medium' | 'large';
235
+ /** `type` nativo del `<button>`. */
236
+ type IusOAuthButtonType = 'button' | 'submit' | 'reset';
237
+ /**
238
+ * OAuthButton — Ius Design v2.
239
+ *
240
+ * Botón de **login con proveedor externo** (Google · Microsoft · LinkedIn).
241
+ * **Compone `ius-button` (`variant="secondary"`)** e inyecta el logo de marca
242
+ * + etiqueta como contenido: hereda geometría, tamaños, foco y estados, con
243
+ * hover/pressed **suavizados** (neutral-4/neutral-5, texto oscuro, sin
244
+ * inversión — ng-spec §4). NO es un `Button` con `prefixIcon`: el logo es un
245
+ * asset de marca **SVG inline multicolor** (excepción documentada — no se
246
+ * tokeniza ni recolorea; `disabled` lo atenúa con `grayscale`).
247
+ */
248
+ declare class OauthButtonComponent {
249
+ /** Define el logo de marca y la etiqueta por defecto. */
250
+ provider: IusOAuthProvider;
251
+ /** Override del texto (default: nombre del proveedor). */
252
+ label?: string;
253
+ /** Tamaño (pasa al Button compuesto; el logo escala 18/20/22). */
254
+ size: IusOAuthButtonSize;
255
+ /** Ancho completo — patrón de login apilado. */
256
+ fullWidth: boolean;
257
+ /** Deshabilitado: hereda del Button + logo en gris. */
258
+ disabled: boolean;
259
+ /** `type` del `<button>` nativo. */
260
+ type: IusOAuthButtonType;
261
+ /** Nombre accesible; default `"Continuar con <label>"`. */
262
+ ariaLabel?: string;
263
+ /** Emite al pulsar; inicia el flujo del proveedor. (No `click`.) */
264
+ readonly clicked: EventEmitter<MouseEvent>;
265
+ protected get text(): string;
266
+ protected get effectiveAriaLabel(): string;
267
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OauthButtonComponent, never>;
268
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OauthButtonComponent, "ius-oauth-button", never, { "provider": { "alias": "provider"; "required": true; }; "label": { "alias": "label"; "required": false; }; "size": { "alias": "size"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "type": { "alias": "type"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, { "clicked": "clicked"; }, never, never, true, never>;
269
+ static ngAcceptInputType_fullWidth: unknown;
270
+ static ngAcceptInputType_disabled: unknown;
271
+ }
272
+
273
+ /** Lado + alineación, más los aliases del Figma y `auto`. */
274
+ type IusPopoverPlacement = 'auto' | 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end' | 'TL' | 'Top' | 'TR' | 'RT' | 'Right' | 'RB' | 'BL' | 'Bottom' | 'BR' | 'LT' | 'Left' | 'LB';
275
+ /** Cómo abre el popover; `manual` = control externo vía `open`. */
276
+ type IusPopoverTrigger = 'hover' | 'click' | 'focus' | 'manual';
277
+ /** Densidad del padding interno del panel. */
278
+ type IusPopoverPadding = 'default' | 'compact' | 'none';
279
+ type Side = 'top' | 'bottom' | 'left' | 'right';
280
+ /**
281
+ * Popover — Ius Design v2. **MOTOR de anclaje de overlays.**
282
+ *
283
+ * Burbuja flotante (título + contenido) anclada a un trigger, con flip
284
+ * automático al borde del viewport. Es la base que reusan Tooltip, Dropdown,
285
+ * DateFilter, AppLauncher, etc. Posicionamiento y portal delegados en
286
+ * **CDK Overlay** (`FlexibleConnectedPositionStrategy`), como exige la
287
+ * ng-spec — aquí solo se mapean placements/aliases, `auto`, offset y flecha.
288
+ *
289
+ * - Trigger `hover` (incluye focus, como el golden) · `click` · `focus` ·
290
+ * `manual` (controlado por `open`).
291
+ * - `anchorRect`: anclaje virtual contra un rect (p. ej. el caret del
292
+ * RichTextEditor) en vez del trigger; se reevalúa en scroll/resize.
293
+ * - `dismissable` (opt-in): cierra por Esc y pointerdown fuera, emitiendo
294
+ * `openChange(false)`.
295
+ * - Contenido: inputs `title`/`content` (strings) o proyección rica con
296
+ * `<ng-template iusPopoverContent>`-style: `<div iusPopoverContent>…</div>`.
297
+ */
298
+ declare class PopoverComponent implements OnInit, OnChanges, OnDestroy {
299
+ /** Título en negrita arriba (blanco con título = Popover; sin título oscuro = Tooltip). */
300
+ title?: string;
301
+ /** Contenido de texto simple. Para contenido rico proyectar `[iusPopoverContent]`. */
302
+ content?: string;
303
+ /** 12 colocaciones + aliases del Figma + `auto` (lado con más espacio). */
304
+ placement: IusPopoverPlacement;
305
+ /** Cómo abre. `manual` no instala handlers: controlar con `open`. */
306
+ trigger: IusPopoverTrigger;
307
+ /** Distancia trigger↔panel en px. */
308
+ offset: number;
309
+ /** Modo controlado (undefined = no controlado con `defaultOpen`). */
310
+ open?: boolean;
311
+ /** Estado inicial del modo no controlado. */
312
+ defaultOpen: boolean;
313
+ /** Rabito del globo. */
314
+ showArrow: boolean;
315
+ /** Nunca abre. */
316
+ disabled: boolean;
317
+ /** Anclaje virtual: rect o función que lo devuelve (caret de un editor). */
318
+ anchorRect?: DOMRect | (() => DOMRect | null);
319
+ /** Densidad del padding: `compact` (8px) para menús; `none` = lo gestiona el contenido. */
320
+ padding: IusPopoverPadding;
321
+ /** Cierra por Esc y clic fuera (opt-in; emite `openChange(false)`). */
322
+ dismissable: boolean;
323
+ /** Clase(s) extra del panel (espejo de `popoverClassName`) — la usa Tooltip. */
324
+ panelClass?: string;
325
+ /** Espejo de `onOpenChange`. */
326
+ readonly openChange: EventEmitter<boolean>;
327
+ private panelTpl;
328
+ private readonly overlay;
329
+ private readonly elementRef;
330
+ private readonly viewContainerRef;
331
+ private overlayRef;
332
+ private subs;
333
+ private removeWindowListeners;
334
+ private readonly internalOpen;
335
+ private initialized;
336
+ /** Lado efectivo tras flip/auto — alimenta `data-side` y la flecha. */
337
+ protected readonly side: _angular_core.WritableSignal<Side>;
338
+ protected readonly arrowLeft: _angular_core.WritableSignal<string | null>;
339
+ protected readonly arrowTop: _angular_core.WritableSignal<string | null>;
340
+ protected get isOpen(): boolean;
341
+ ngOnInit(): void;
342
+ ngOnChanges(changes: SimpleChanges): void;
343
+ ngOnDestroy(): void;
344
+ protected onHostMouseEnter(): void;
345
+ protected onHostMouseLeave(): void;
346
+ protected onHostFocusIn(): void;
347
+ protected onHostFocusOut(): void;
348
+ protected onHostClick(): void;
349
+ private setOpen;
350
+ private syncOverlay;
351
+ private attachPanel;
352
+ private detachPanel;
353
+ private teardownOverlay;
354
+ private applyPositionStrategy;
355
+ private buildPositionStrategy;
356
+ private resolveOrigin;
357
+ /**
358
+ * Placement → lista de posiciones CDK: la preferida primero y su opuesta
359
+ * como fallback (flip del golden). `auto` ordena los 4 lados por espacio
360
+ * disponible alrededor del ancla, como `autoPlace` del golden.
361
+ */
362
+ private buildPositions;
363
+ private sidesBySpace;
364
+ private position;
365
+ private sideOfPosition;
366
+ /** Rabito centrado sobre el ancla, con clamp [12, tamaño-24] (golden). */
367
+ private updateArrow;
368
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverComponent, never>;
369
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PopoverComponent, "ius-popover", never, { "title": { "alias": "title"; "required": false; }; "content": { "alias": "content"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "trigger": { "alias": "trigger"; "required": false; }; "offset": { "alias": "offset"; "required": false; }; "open": { "alias": "open"; "required": false; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; }; "showArrow": { "alias": "showArrow"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "anchorRect": { "alias": "anchorRect"; "required": false; }; "padding": { "alias": "padding"; "required": false; }; "dismissable": { "alias": "dismissable"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; }, { "openChange": "openChange"; }, never, ["*", "[iusPopoverContent]"], true, never>;
370
+ static ngAcceptInputType_offset: unknown;
371
+ static ngAcceptInputType_defaultOpen: unknown;
372
+ static ngAcceptInputType_showArrow: unknown;
373
+ static ngAcceptInputType_disabled: unknown;
374
+ static ngAcceptInputType_dismissable: unknown;
375
+ }
376
+
377
+ /** Tamaño del texto — small 12/16 · medium 14/20 (default) · large 16/22. */
378
+ type IusTextButtonSize = 'small' | 'medium' | 'large';
379
+ /** `type` nativo del `<button>`. */
380
+ type IusTextButtonType = 'button' | 'submit' | 'reset';
381
+ interface SizePreset {
382
+ fs: string;
383
+ lh: string;
384
+ icon: string;
385
+ gap: string;
386
+ }
387
+ /**
388
+ * TextButton — Ius Design v2.
389
+ *
390
+ * Botón **solo texto** para acciones de bajo peso visual (links contextuales,
391
+ * "Ver más", "Cancelar", navegación inline). Sin fondo, borde ni padding:
392
+ * hereda el alto de la tipografía. El único cambio por estado es el color
393
+ * (default → hover primary-500 → pressed primary-600 → disabled).
394
+ *
395
+ * Foco por `outline` (info-200, offset 2, radius sm) — única excepción del
396
+ * sistema, no usa box-shadow (ng-spec §6). Para acciones destructivas NO usar
397
+ * este componente: `ius-button variant="tertiary"` con color danger.
398
+ *
399
+ * Nota: el `state` de la spec ("solo demos") se omite de la API pública —
400
+ * mismo criterio que Button/TextField. El playground congela hover/pressed
401
+ * con el atributo `data-force` en el host (solo CSS).
402
+ */
403
+ declare class TextButtonComponent {
404
+ /** Texto del botón. Tiene prioridad sobre el contenido proyectado. */
405
+ label?: string;
406
+ /** Ligadura Material Symbols Rounded a la izquierda. */
407
+ prefixIcon?: string;
408
+ /** Ligadura a la derecha. (Nombre heredado del original — conservar `sufixIcon` para paridad de API.) */
409
+ sufixIcon?: string;
410
+ /** Tamaño del preset §5. */
411
+ size: IusTextButtonSize;
412
+ /** Deshabilitado (`disabled` nativo + `aria-disabled`). */
413
+ disabled: boolean;
414
+ /** `type` del `<button>` nativo. */
415
+ type: IusTextButtonType;
416
+ /**
417
+ * Passthrough `aria-expanded`/`aria-controls` al `<button>` (equivalente
418
+ * Angular del `...rest` del golden; los usa ShowMore al componer).
419
+ */
420
+ ariaExpanded?: boolean;
421
+ ariaControls?: string;
422
+ /** Emite al pulsar. (No `click`: colisiona con el evento nativo del host.) */
423
+ readonly clicked: EventEmitter<MouseEvent>;
424
+ protected get preset(): SizePreset;
425
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextButtonComponent, never>;
426
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextButtonComponent, "ius-text-button", never, { "label": { "alias": "label"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "sufixIcon": { "alias": "sufixIcon"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "type": { "alias": "type"; "required": false; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; }; "ariaControls": { "alias": "ariaControls"; "required": false; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
427
+ static ngAcceptInputType_disabled: unknown;
428
+ }
429
+
430
+ /** Alineación del disparador dentro de su fila. */
431
+ type IusShowMoreAlign = 'center' | 'start' | 'end' | 'block';
432
+ /**
433
+ * ShowMore — Ius Design v2.
434
+ *
435
+ * **Solo el disparador** "Mostrar N más ⌄ / Mostrar menos ⌃": el
436
+ * recorte/expansión de la lista lo maneja el consumidor (`expanded` es
437
+ * controlado y `toggle` pide alternar). Compone `ius-text-button`.
438
+ * Acción suelta → TextButton; paginar tablas → Pagination.
439
+ *
440
+ * `collapsible=false` = revelado de una vía: tras expandir, el control
441
+ * desaparece (espejo del `return null` del golden).
442
+ */
443
+ declare class ShowMoreComponent {
444
+ /** Estado expandido (controlado por el consumidor). */
445
+ expanded: boolean;
446
+ /** Arma "Mostrar N más"; sin él, "Mostrar más". */
447
+ remaining?: number;
448
+ /** Override del label colapsado. */
449
+ moreLabel?: string;
450
+ /** Override del label expandido. */
451
+ lessLabel: string;
452
+ /** Si `false`, tras expandir el control desaparece (una vía). */
453
+ collapsible: boolean;
454
+ /** Tamaño del TextButton compuesto. */
455
+ size: IusTextButtonSize;
456
+ /** Alineación; `block` estira el botón al 100 %. */
457
+ align: IusShowMoreAlign;
458
+ /** id del contenedor que controla (`aria-controls`). */
459
+ ariaControls?: string;
460
+ /** Pide alternar (original `onToggle`). */
461
+ readonly toggle: EventEmitter<MouseEvent>;
462
+ protected get label(): string;
463
+ /** Revelado de una vía consumado → el control se oculta. */
464
+ protected get hidden(): boolean;
465
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShowMoreComponent, never>;
466
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShowMoreComponent, "ius-show-more", never, { "expanded": { "alias": "expanded"; "required": false; }; "remaining": { "alias": "remaining"; "required": false; }; "moreLabel": { "alias": "moreLabel"; "required": false; }; "lessLabel": { "alias": "lessLabel"; "required": false; }; "collapsible": { "alias": "collapsible"; "required": false; }; "size": { "alias": "size"; "required": false; }; "align": { "alias": "align"; "required": false; }; "ariaControls": { "alias": "ariaControls"; "required": false; }; }, { "toggle": "toggle"; }, never, never, true, never>;
467
+ static ngAcceptInputType_expanded: unknown;
468
+ static ngAcceptInputType_collapsible: unknown;
469
+ }
470
+
471
+ /** Cómo abre el tooltip; `hover` también responde a focus de teclado. */
472
+ type IusTooltipTrigger = 'hover' | 'focus' | 'manual';
473
+ /**
474
+ * Tooltip — Ius Design v2.
475
+ *
476
+ * Etiqueta breve en hover/focus para nombrar controles icon-only, aclarar
477
+ * texto truncado o dar una pista terse. **Compone `ius-popover`** (mismo
478
+ * motor de anclaje/flip/auto) con visual **oscuro compacto sin título**
479
+ * (`panelClass="ius-tooltip"`; la piel vive en el SCSS del Popover).
480
+ *
481
+ * Sin contenido interactivo. Ayuda con título+párrafo o mini-menú → Popover;
482
+ * aviso accionable → Alert; onboarding → Tour/Coachmark.
483
+ *
484
+ * Sin `label` no hay burbuja: el trigger proyectado pasa tal cual (el
485
+ * popover queda `disabled`), espejo del `return children` del golden.
486
+ */
487
+ declare class TooltipComponent {
488
+ /** Texto breve; vacío = sin burbuja. */
489
+ label?: string;
490
+ /** Colocación (misma escala del Popover); `auto` = lado con más espacio. */
491
+ placement: IusPopoverPlacement;
492
+ /** `hover` (incluye focus de teclado) · `focus` · `manual`. */
493
+ trigger: IusTooltipTrigger;
494
+ /** Distancia trigger↔burbuja. */
495
+ offset: number;
496
+ /** Sin rabito por defecto. */
497
+ showArrow: boolean;
498
+ /** Nunca abre. */
499
+ disabled: boolean;
500
+ /** Modo controlado (undefined = no controlado). */
501
+ open?: boolean;
502
+ /** Estado inicial del modo no controlado. */
503
+ defaultOpen: boolean;
504
+ /** Espejo de `onOpenChange`. */
505
+ readonly openChange: EventEmitter<boolean>;
506
+ protected get effectiveDisabled(): boolean;
507
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipComponent, never>;
508
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipComponent, "ius-tooltip", never, { "label": { "alias": "label"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "trigger": { "alias": "trigger"; "required": false; }; "offset": { "alias": "offset"; "required": false; }; "showArrow": { "alias": "showArrow"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "open": { "alias": "open"; "required": false; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; }; }, { "openChange": "openChange"; }, never, ["*"], true, never>;
509
+ static ngAcceptInputType_offset: unknown;
510
+ static ngAcceptInputType_showArrow: unknown;
511
+ static ngAcceptInputType_disabled: unknown;
512
+ static ngAcceptInputType_defaultOpen: unknown;
513
+ }
514
+
515
+ /** Tamaño del campo — small ~34 · medium ~40 (default) · large ~48px. */
516
+ type IusTextFieldSize = 'small' | 'medium' | 'large';
517
+ /** `type` nativo soportado por el input. */
518
+ type IusTextFieldType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';
519
+ /**
520
+ * TextField — Ius Design v2.
521
+ *
522
+ * Campo de texto base (BASE de la familia de inputs de texto). Wrapper `.ius-tf`
523
+ * con label + caja del input (+ prefixIcon + clear) + helpText/errorText.
524
+ * Cubre 5 estados (Default · Hovered · Focused · Focused-Error · Disabled) y
525
+ * 3 tamaños. Implementa `ControlValueAccessor` completo para integrarse con
526
+ * `[(ngModel)]` / `formControl`.
527
+ *
528
+ * `showIconHelp` compone `ius-popover` (título + contenido en hover/focus
529
+ * sobre la pastilla "?"), igual que la spec original. API pública intacta.
530
+ */
531
+ declare class TextFieldComponent implements ControlValueAccessor {
532
+ /** Label sobre el input (con `:` final). Sin label si se omite. */
533
+ label?: string;
534
+ /** Placeholder dentro del input. */
535
+ placeholder?: string;
536
+ /** Punto rojo (•) a la izquierda del label. */
537
+ required: boolean;
538
+ /** Ícono Material Symbols Rounded a la izquierda del input. */
539
+ prefixIcon?: string;
540
+ /** Forzar visibilidad del botón de limpiar. Por defecto: auto (visible con valor). */
541
+ showClear?: boolean;
542
+ /** Línea de ayuda bajo el campo (estado normal). */
543
+ helpText?: string;
544
+ /** Reemplaza `helpText` cuando `error` es `true`. */
545
+ errorText?: string;
546
+ /** Mostrar/ocultar la línea de ayuda. */
547
+ showHelpText: boolean;
548
+ /** Pastilla "?" junto al label. */
549
+ showIconHelp: boolean;
550
+ /** Título del contenido de ayuda (popover). */
551
+ iconHelpTitle?: string;
552
+ /** Cuerpo del contenido de ayuda (popover). */
553
+ iconHelpContent?: string;
554
+ /** Estado de error (colores + errorText). */
555
+ error: boolean;
556
+ /** `name` del input. */
557
+ name?: string;
558
+ /** `type` del input. La variación password enmascara y agrega el toggle de revelado. */
559
+ type: IusTextFieldType;
560
+ private readonly sizeState;
561
+ set size(value: IusTextFieldSize);
562
+ get size(): IusTextFieldSize;
563
+ private readonly disabledState;
564
+ set disabled(value: boolean);
565
+ get disabled(): boolean;
566
+ /** Además del CVA: notifica cada cambio de valor. */
567
+ readonly valueChange: EventEmitter<string>;
568
+ /** Al pulsar el botón de limpiar (×). */
569
+ readonly cleared: EventEmitter<void>;
570
+ protected readonly value: _angular_core.WritableSignal<string>;
571
+ protected readonly focused: _angular_core.WritableSignal<boolean>;
572
+ protected readonly revealed: _angular_core.WritableSignal<boolean>;
573
+ protected readonly inputId: string;
574
+ protected readonly helpId: string;
575
+ private onChange;
576
+ private onTouched;
577
+ protected get isPassword(): boolean;
578
+ protected get inputType(): string;
579
+ protected get hint(): string | undefined;
580
+ protected get showHint(): boolean;
581
+ protected get showClearComputed(): boolean;
582
+ writeValue(value: string): void;
583
+ registerOnChange(fn: (value: string) => void): void;
584
+ registerOnTouched(fn: () => void): void;
585
+ setDisabledState(isDisabled: boolean): void;
586
+ protected onInput(event: Event): void;
587
+ protected onFocus(): void;
588
+ protected onBlur(): void;
589
+ protected toggleReveal(): void;
590
+ protected clear(): void;
591
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextFieldComponent, never>;
592
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextFieldComponent, "ius-text-field", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "helpText": { "alias": "helpText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "showHelpText": { "alias": "showHelpText"; "required": false; }; "showIconHelp": { "alias": "showIconHelp"; "required": false; }; "iconHelpTitle": { "alias": "iconHelpTitle"; "required": false; }; "iconHelpContent": { "alias": "iconHelpContent"; "required": false; }; "error": { "alias": "error"; "required": false; }; "name": { "alias": "name"; "required": false; }; "type": { "alias": "type"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "valueChange": "valueChange"; "cleared": "cleared"; }, never, never, true, never>;
593
+ static ngAcceptInputType_required: unknown;
594
+ static ngAcceptInputType_showHelpText: unknown;
595
+ static ngAcceptInputType_showIconHelp: unknown;
596
+ static ngAcceptInputType_error: unknown;
597
+ static ngAcceptInputType_disabled: unknown;
598
+ }
599
+
600
+ /** Lado de casilla: small 44 · medium 48 (default) · large 56 px. */
601
+ type IusCodeFieldSize = 'small' | 'medium' | 'large';
602
+ /**
603
+ * CodeField — Ius Design v2.
604
+ *
605
+ * Variación **segmentada** de TextField: una casilla por carácter (OTP / 2FA /
606
+ * PIN). Hereda el wrapper `.ius-tf` (label + required + iconHelp + helpText/
607
+ * errorText), los 5 estados y el botón de limpiar. Fuente de verdad:
608
+ * `CodeField.jsx` + `CodeField.ng-spec.md` (delta sobre TextField).
609
+ *
610
+ * Comportamiento: auto-avance al escribir, `Backspace` en casilla vacía
611
+ * retrocede, pegar distribuye la cadena, flechas navegan. Implementa
612
+ * `ControlValueAccessor` (el valor es la cadena completa concatenada).
613
+ *
614
+ * Nota: las clases `.ius-tf__*` (label/hint) se replican en el SCSS de este
615
+ * componente porque bajo ViewEncapsulation.Emulated las de TextField no
616
+ * alcanzan a otro componente. `showIconHelp` usa `title` nativo como respaldo
617
+ * (igual que TextField) hasta que exista `ius-popover`.
618
+ */
619
+ declare class CodeFieldComponent implements ControlValueAccessor {
620
+ /** Label sobre las casillas (con `:` final). */
621
+ label?: string;
622
+ /** Punto rojo (•) a la izquierda del label. */
623
+ required: boolean;
624
+ /** Pastilla "?" junto al label (respaldo: `title` nativo). */
625
+ showIconHelp: boolean;
626
+ /** Título del contenido de ayuda. */
627
+ iconHelpTitle?: string;
628
+ /** Cuerpo del contenido de ayuda. */
629
+ iconHelpContent?: string;
630
+ /** Línea de ayuda bajo el campo. */
631
+ helpText?: string;
632
+ /** Reemplaza `helpText` cuando `error` es `true`. */
633
+ errorText?: string;
634
+ /** Mostrar/ocultar la línea de ayuda. */
635
+ showHelpText: boolean;
636
+ /** Carácter guía en casilla vacía. */
637
+ placeholderChar: string;
638
+ /** Solo `0-9` + `inputMode="numeric"`. */
639
+ numeric: boolean;
640
+ /** Oculta con `•` (`type="password"`), para PIN sensibles. */
641
+ mask: boolean;
642
+ /** Estado de error (colores + errorText). */
643
+ error: boolean;
644
+ /** `name` base del grupo de casillas. */
645
+ name?: string;
646
+ /** Forzar visibilidad del botón de limpiar. Por defecto: auto (con valor). */
647
+ showClear?: boolean;
648
+ private readonly lengthState;
649
+ /** Nº de casillas. */
650
+ set length(value: number);
651
+ get length(): number;
652
+ private readonly sizeState;
653
+ set size(value: IusCodeFieldSize);
654
+ get size(): IusCodeFieldSize;
655
+ private readonly disabledState;
656
+ set disabled(value: boolean);
657
+ get disabled(): boolean;
658
+ /** Cadena completa concatenada (original `onChange`). */
659
+ readonly valueChange: EventEmitter<string>;
660
+ /** Al llenar todas las casillas (original `onComplete`). */
661
+ readonly completed: EventEmitter<string>;
662
+ /** Al pulsar el botón de limpiar. */
663
+ readonly cleared: EventEmitter<void>;
664
+ protected readonly chars: _angular_core.WritableSignal<string[]>;
665
+ protected readonly focused: _angular_core.WritableSignal<boolean>;
666
+ protected readonly indexes: _angular_core.Signal<number[]>;
667
+ protected readonly baseId: string;
668
+ private readonly cellRefs;
669
+ private onChange;
670
+ private onTouched;
671
+ protected get hint(): string | undefined;
672
+ protected get showHint(): boolean;
673
+ protected get helpIconTitle(): string | undefined;
674
+ protected get showClearComputed(): boolean;
675
+ protected cellAria(i: number): string;
676
+ writeValue(value: string): void;
677
+ registerOnChange(fn: (value: string) => void): void;
678
+ registerOnTouched(fn: () => void): void;
679
+ setDisabledState(isDisabled: boolean): void;
680
+ private sanitize;
681
+ private focusCell;
682
+ private commit;
683
+ private setCharAt;
684
+ protected onInput(i: number, event: Event): void;
685
+ protected onKeyDown(i: number, event: KeyboardEvent): void;
686
+ protected onPaste(i: number, event: ClipboardEvent): void;
687
+ protected onFocus(): void;
688
+ protected onBlur(): void;
689
+ protected clear(): void;
690
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CodeFieldComponent, never>;
691
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeFieldComponent, "ius-code-field", never, { "label": { "alias": "label"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showIconHelp": { "alias": "showIconHelp"; "required": false; }; "iconHelpTitle": { "alias": "iconHelpTitle"; "required": false; }; "iconHelpContent": { "alias": "iconHelpContent"; "required": false; }; "helpText": { "alias": "helpText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "showHelpText": { "alias": "showHelpText"; "required": false; }; "placeholderChar": { "alias": "placeholderChar"; "required": false; }; "numeric": { "alias": "numeric"; "required": false; }; "mask": { "alias": "mask"; "required": false; }; "error": { "alias": "error"; "required": false; }; "name": { "alias": "name"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "length": { "alias": "length"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "valueChange": "valueChange"; "completed": "completed"; "cleared": "cleared"; }, never, never, true, never>;
692
+ static ngAcceptInputType_required: unknown;
693
+ static ngAcceptInputType_showIconHelp: unknown;
694
+ static ngAcceptInputType_showHelpText: unknown;
695
+ static ngAcceptInputType_numeric: unknown;
696
+ static ngAcceptInputType_mask: unknown;
697
+ static ngAcceptInputType_error: unknown;
698
+ static ngAcceptInputType_disabled: unknown;
699
+ }
700
+
701
+ /** Tono del aro: marca + semánticos + 6 hues de fruta (12 en total). */
702
+ type CountdownRingTone = 'primary' | 'info' | 'success' | 'warning' | 'danger' | 'neutral' | 'durazno' | 'banano' | 'sandia' | 'arandano' | 'uva' | 'aguacate';
703
+ /** Tamaño del aro: small 18 · medium 24 (default) · large 34 px. */
704
+ type CountdownRingSize = 'small' | 'medium' | 'large';
705
+ interface RingDim {
706
+ d: number;
707
+ s: number;
708
+ }
709
+ /**
710
+ * CountdownRing — Ius Design v2 (familia feedback).
711
+ *
712
+ * Aro de progreso temporal (`<svg>` decorativo). **Controlado** por `progress`
713
+ * (comparte reloj con `Countdown`) o corre su propio reloj con `seconds`.
714
+ * Normal se **llena**; `inverse` arranca lleno y se **vacía** (OTP). No captura
715
+ * foco ni puntero. Fuente de verdad: `CountdownRing.jsx`.
716
+ */
717
+ declare class CountdownRingComponent {
718
+ /** Fracción transcurrida (0→1), controlada por el padre. Ignora el reloj interno. */
719
+ readonly progress: _angular_core.InputSignal<number | undefined>;
720
+ /** Duración del reloj interno (modo suelto). */
721
+ readonly seconds: _angular_core.InputSignal<number | undefined>;
722
+ /** Corre el reloj interno. Ignorado si hay `progress`. */
723
+ readonly running: _angular_core.InputSignalWithTransform<boolean, unknown>;
724
+ /** Congela conservando lo transcurrido. */
725
+ readonly paused: _angular_core.InputSignalWithTransform<boolean, unknown>;
726
+ /** Arranca lleno y se vacía. */
727
+ readonly inverse: _angular_core.InputSignalWithTransform<boolean, unknown>;
728
+ /** Tono (12). */
729
+ readonly tone: _angular_core.InputSignal<CountdownRingTone>;
730
+ /** Tamaño del aro. */
731
+ readonly size: _angular_core.InputSignal<CountdownRingSize>;
732
+ /** Etiqueta accesible. */
733
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
734
+ /** Al llegar a 0 (solo reloj interno). */
735
+ readonly completed: _angular_core.OutputEmitterRef<void>;
736
+ private readonly clock;
737
+ protected readonly isControlled: _angular_core.Signal<boolean>;
738
+ protected readonly dim: _angular_core.Signal<RingDim>;
739
+ protected readonly ringR: _angular_core.Signal<number>;
740
+ protected readonly toneVars: _angular_core.Signal<{
741
+ arc: string;
742
+ trk: string;
743
+ }>;
744
+ /** Fracción transcurrida 0→1 (controlada o del reloj interno). */
745
+ private readonly elapsed;
746
+ /** Largo del arco 0→100 (normal llena; inverse vacía). */
747
+ protected readonly arcLen: _angular_core.Signal<number>;
748
+ protected readonly dashArray: _angular_core.Signal<string>;
749
+ constructor();
750
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CountdownRingComponent, never>;
751
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CountdownRingComponent, "ius-countdown-ring", never, { "progress": { "alias": "progress"; "required": false; "isSignal": true; }; "seconds": { "alias": "seconds"; "required": false; "isSignal": true; }; "running": { "alias": "running"; "required": false; "isSignal": true; }; "paused": { "alias": "paused"; "required": false; "isSignal": true; }; "inverse": { "alias": "inverse"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "completed": "completed"; }, never, ["*"], true, never>;
752
+ }
753
+
754
+ /** Formato del tiempo. */
755
+ type CountdownFormat = 'auto' | 'mm:ss' | 'hh:mm:ss' | 'ss';
756
+ /** Dirección del reloj. */
757
+ type CountdownDirection = 'down' | 'up';
758
+ /**
759
+ * Countdown — Ius Design v2 (familia feedback).
760
+ *
761
+ * Lectura de tiempo en vivo (cronómetro). Regresiva por defecto (reenvío de
762
+ * OTP, sesiones por expirar) o ascendente (`up`). Etiqueta gris + tiempo tonal
763
+ * en negrita `tabular-nums`, con aro opcional (`showRing`) que **comparte el
764
+ * mismo reloj** (le pasa `progress`). Fuente de verdad: `Countdown.jsx`.
765
+ */
766
+ declare class CountdownComponent {
767
+ /** Duración total en segundos. */
768
+ readonly seconds: _angular_core.InputSignal<number>;
769
+ /** Regresiva (`down`) / ascendente (`up`). */
770
+ readonly direction: _angular_core.InputSignal<CountdownDirection>;
771
+ /** Corre el reloj. */
772
+ readonly running: _angular_core.InputSignalWithTransform<boolean, unknown>;
773
+ /** Congela conservando lo transcurrido. */
774
+ readonly paused: _angular_core.InputSignalWithTransform<boolean, unknown>;
775
+ /** Formato del tiempo. */
776
+ readonly format: _angular_core.InputSignal<CountdownFormat>;
777
+ /** Sufijo tras el tiempo (`00:59s`). */
778
+ readonly suffix: _angular_core.InputSignal<string>;
779
+ /** Texto guía a la izquierda (gris). */
780
+ readonly label: _angular_core.InputSignal<string | undefined>;
781
+ /** Muestra el aro sincronizado. */
782
+ readonly showRing: _angular_core.InputSignalWithTransform<boolean, unknown>;
783
+ /** Lado del aro. */
784
+ readonly ringPlacement: _angular_core.InputSignal<"start" | "end">;
785
+ /** Sentido del aro (por defecto: regresiva vacía, ascendente llena). */
786
+ readonly ringInverse: _angular_core.InputSignal<boolean | undefined>;
787
+ /** Tono del número y del aro. */
788
+ readonly tone: _angular_core.InputSignal<CountdownRingTone>;
789
+ /** Tamaño. */
790
+ readonly size: _angular_core.InputSignal<CountdownRingSize>;
791
+ /** Etiqueta accesible. */
792
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
793
+ /** Al llegar al total (regresiva → 0). */
794
+ readonly completed: _angular_core.OutputEmitterRef<void>;
795
+ private readonly clock;
796
+ private readonly totalMs;
797
+ /** Fracción transcurrida 0→1 (para el aro). */
798
+ protected readonly fraction: _angular_core.Signal<number>;
799
+ private readonly remainingSec;
800
+ private readonly elapsedSec;
801
+ protected readonly text: _angular_core.Signal<string>;
802
+ protected readonly done: _angular_core.Signal<boolean>;
803
+ protected readonly ringInv: _angular_core.Signal<boolean>;
804
+ protected readonly numColor: _angular_core.Signal<string>;
805
+ constructor();
806
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CountdownComponent, never>;
807
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CountdownComponent, "ius-countdown", never, { "seconds": { "alias": "seconds"; "required": true; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "running": { "alias": "running"; "required": false; "isSignal": true; }; "paused": { "alias": "paused"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showRing": { "alias": "showRing"; "required": false; "isSignal": true; }; "ringPlacement": { "alias": "ringPlacement"; "required": false; "isSignal": true; }; "ringInverse": { "alias": "ringInverse"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "completed": "completed"; }, never, never, true, never>;
808
+ }
809
+
810
+ /** Tono del Alert (6 familias). */
811
+ type AlertTone = 'info' | 'success' | 'warning' | 'danger' | 'neutral' | 'primary';
812
+ /** Tratamiento de fondo. */
813
+ type AlertVariant = 'soft' | 'gradient' | 'outline' | 'solid';
814
+ /** Tamaño. */
815
+ type AlertSize = 'small' | 'medium' | 'large';
816
+ /**
817
+ * Marca la fila de acciones al pie del Alert. Úsalo en el elemento contenedor:
818
+ * `<div iusAlertActions><ius-button …/></div>`. Excluyente con `iusAlertTrailing`.
819
+ */
820
+ declare class IusAlertActionsDirective {
821
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusAlertActionsDirective, never>;
822
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusAlertActionsDirective, "[iusAlertActions]", never, {}, {}, never, never, true, never>;
823
+ }
824
+ /**
825
+ * Marca la acción inline a la derecha (centrada) del Alert:
826
+ * `<div iusAlertTrailing><ius-button …/></div>`. Excluyente con `iusAlertActions`.
827
+ */
828
+ declare class IusAlertTrailingDirective {
829
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusAlertTrailingDirective, never>;
830
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusAlertTrailingDirective, "[iusAlertTrailing]", never, {}, {}, never, never, true, never>;
831
+ }
832
+ /**
833
+ * Alert — Ius Design v2 (familia feedback).
834
+ *
835
+ * Mensaje contextual en bloque (banner / callout). 6 tonos × 4 variantes
836
+ * (soft/gradient/outline/solid), 3 tamaños, ícono (+chip), overline/título/meta,
837
+ * cuerpo y slots de acción (`trailing` ⊻ `actions`) proyectados. La armonización
838
+ * on-color de los hijos (Button/Tag) vive en el CSS (`::ng-deep` acotado al
839
+ * Alert), no en su API. Fuente de verdad: `Alert.jsx` + `Alert.ng-spec.md`.
840
+ *
841
+ * No es para feedback efímero (→ Toast) ni error de validación de campo
842
+ * (→ el input). El briefing proactivo de IA es `Insight`, no Alert.
843
+ */
844
+ declare class AlertComponent {
845
+ /** Tono: fija tinte, borde, color de ícono/título y degradado. */
846
+ readonly tone: _angular_core.InputSignal<AlertTone>;
847
+ /** Tratamiento de fondo. */
848
+ readonly variant: _angular_core.InputSignal<AlertVariant>;
849
+ /** Tamaño. */
850
+ readonly size: _angular_core.InputSignal<AlertSize>;
851
+ /** Estilo del borde. */
852
+ readonly border: _angular_core.InputSignal<"solid" | "none" | "dashed">;
853
+ /** Título tonal en negrita. */
854
+ readonly title: _angular_core.InputSignal<string | undefined>;
855
+ /** Línea superior breve (uppercase). */
856
+ readonly overline: _angular_core.InputSignal<string | undefined>;
857
+ /** Ligadura Material Symbols; `false` oculta el ícono; omitir = default por tono. */
858
+ readonly icon: _angular_core.InputSignal<string | false | undefined>;
859
+ /** Envuelve el ícono en chip cuadrado tonal (auto en `solid`). */
860
+ readonly iconChip: _angular_core.InputSignalWithTransform<boolean, unknown>;
861
+ /** Texto tenue a la derecha del encabezado. */
862
+ readonly meta: _angular_core.InputSignal<string | undefined>;
863
+ /** Muestra el botón × de cierre. */
864
+ readonly closable: _angular_core.InputSignalWithTransform<boolean, unknown>;
865
+ /** aria-label del cierre. */
866
+ readonly closeLabel: _angular_core.InputSignal<string>;
867
+ /** Divisor sobre la fila de acciones. */
868
+ readonly actionsDivider: _angular_core.InputSignalWithTransform<boolean, unknown>;
869
+ /** Alineación (auto: `center` si hay `trailing` sin `actions`). */
870
+ readonly align: _angular_core.InputSignal<"start" | "center" | undefined>;
871
+ /** `status` (default, no interrumpe) o `alert` (asertivo). */
872
+ readonly role: _angular_core.InputSignal<"status" | "alert">;
873
+ /** Al pulsar × (original: `onClose`). */
874
+ readonly closed: _angular_core.OutputEmitterRef<void>;
875
+ private readonly actionsRef;
876
+ private readonly trailingRef;
877
+ protected readonly hasActions: _angular_core.Signal<boolean>;
878
+ protected readonly hasTrailing: _angular_core.Signal<boolean>;
879
+ /** trailing y actions son excluyentes: si hay ambos, gana actions. */
880
+ protected readonly showTrailing: _angular_core.Signal<boolean>;
881
+ protected readonly computedAlign: _angular_core.Signal<"start" | "center">;
882
+ protected readonly iconName: _angular_core.Signal<string | null>;
883
+ protected readonly chip: _angular_core.Signal<boolean>;
884
+ protected readonly showHead: _angular_core.Signal<boolean>;
885
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertComponent, never>;
886
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertComponent, "ius-alert", never, { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "border": { "alias": "border"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "overline": { "alias": "overline"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconChip": { "alias": "iconChip"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "actionsDivider": { "alias": "actionsDivider"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, ["actionsRef", "trailingRef"], ["*", "[iusAlertActions]", "[iusAlertTrailing]"], true, never>;
887
+ }
888
+
889
+ /** Una pieza de arte: viewBox + markup interno del <svg> (paths, gradientes). */
890
+ interface IllustrationEntry {
891
+ viewBox: string;
892
+ inner: string;
893
+ }
894
+ /** Nombres de ilustración del sistema (98 piezas). La capa semántica
895
+ * (situación → nombre) vive en IllustrationCatalog (aún sin portar). */
896
+ type IllustrationName = 'emptyTray' | 'emptyBox' | 'screenError' | 'error404' | 'unplugged' | 'webMaintenance' | 'launchRocketScreen' | 'rocketProgress' | 'userDisplayOk' | 'shieldSecurity' | 'verifyShield' | 'brokenShield' | 'securityShieldComplete' | 'otpPadlock' | 'emailReadSecure' | 'contactCard' | 'portfolioUser' | 'addGroup' | 'userChoice' | 'userConnection' | 'meeting' | 'gearsUser' | 'gearTransferUser' | 'gearCircularGroup' | 'chartHierarchy' | 'eyeRingChart' | 'apiServices' | 'attachment' | 'cashPayment' | 'trash' | 'accountBalance' | 'agreementOk' | 'aiBrain' | 'ai' | 'approvedDoc' | 'award' | 'balance' | 'banking' | 'barChart' | 'bellAlert' | 'billingMachine' | 'briefcase' | 'budget' | 'chatBot' | 'chronology' | 'codeLaw' | 'corporateFare' | 'corruptFile' | 'creditCardScreen' | 'cv' | 'desert' | 'diagram' | 'directory' | 'docShieldOk' | 'docShieldGavel' | 'donutChart' | 'ebook' | 'emailPc' | 'emptyFolder' | 'statistics' | 'folderManagement' | 'folderShield' | 'futuristicBuilding' | 'gavel' | 'globalNetwork' | 'handUp' | 'handsetSound' | 'lecternPerson' | 'legalBook' | 'library' | 'lightbulb' | 'lineChart' | 'linearChronology' | 'medal' | 'notes' | 'padlock' | 'paintCan' | 'pcInfo' | 'personKey' | 'pipeline' | 'plane' | 'postbox' | 'profile' | 'pyramid' | 'sandglassPay' | 'searchLens' | 'schedule' | 'screenGraph' | 'startup' | 'stepsNumbered' | 'steps' | 'store' | 'support' | 'subscription' | 'targetAudience' | 'target' | 'trade' | 'warehouse';
897
+ /** Lista de los 98 nombres (orden del catálogo). */
898
+ declare const ILLUSTRATION_NAMES: IllustrationName[];
899
+ /** Arte horneado por nombre. */
900
+ declare const ILLUSTRATIONS: Record<IllustrationName, IllustrationEntry>;
901
+
902
+ /** Tamaño: `small` 64 · `medium` 96 (default) · `large` 140 px, o un número en px. */
903
+ type IllustrationSize = 'small' | 'medium' | 'large' | number;
904
+ /**
905
+ * Illustration — Ius Design v2 (familia feedback).
906
+ *
907
+ * Primitiva de **render** de ilustraciones "spot" (vacío, error, éxito,
908
+ * seguridad, jurídico, finanzas…). Dibuja un `<svg role="img">` por `name`.
909
+ * Paleta de arte propia (periwinkle/lima) horneada en los SVG — NO consume
910
+ * tokens de color del DS (ver Illustration.ng-spec.md §1).
911
+ *
912
+ * La capa de **significado** (situación → nombre) vive en el foundation
913
+ * `IllustrationCatalog` (aún sin portar). Para iconografía pequeña de UI usar
914
+ * Material Symbols (`.ius-icon`), no esto.
915
+ *
916
+ * Namespacing: los IDs de gradiente vienen prefijados por pieza
917
+ * (`IUSIL_<name>_*`); aquí se les añade un **sufijo por instancia** para que
918
+ * varias ilustraciones convivan en la misma página sin colisión de `<defs>`.
919
+ *
920
+ * Nota de datos: la data (`illustrations.data.ts`) es un port PARCIAL (58/98):
921
+ * el original supera el tope de lectura del MCP. Los nombres no incluidos
922
+ * renderizan el placeholder hasta reemplazar la data por el verbatim completo.
923
+ */
924
+ declare class IllustrationComponent {
925
+ private readonly sanitizer;
926
+ /** ID único por instancia, para el sufijo de gradientes. */
927
+ private readonly instanceId;
928
+ private _name;
929
+ /** Qué ilustración renderizar. Ver `IllustrationCatalog` para la semántica. */
930
+ set name(value: IllustrationName);
931
+ get name(): IllustrationName;
932
+ private _size;
933
+ set size(value: IllustrationSize);
934
+ get size(): IllustrationSize;
935
+ /** Etiqueta accesible (`role="img"`). Default: el `name`. */
936
+ title?: string;
937
+ protected viewBox: string;
938
+ protected safeInner: SafeHtml;
939
+ protected hasEntry: boolean;
940
+ /** Lado en px resuelto desde `size`. */
941
+ protected get px(): number;
942
+ protected get ariaLabel(): string;
943
+ private rebuild;
944
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IllustrationComponent, never>;
945
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IllustrationComponent, "ius-illustration", never, { "name": { "alias": "name"; "required": true; }; "size": { "alias": "size"; "required": false; }; "title": { "alias": "title"; "required": false; }; }, {}, never, never, true, never>;
946
+ }
947
+
948
+ /** Tamaño de la casilla — small 16 · medium 20 (default) · large 24 px. */
949
+ type IusCheckboxSize = 'small' | 'medium' | 'large';
950
+ /** Lado del label respecto a la casilla. */
951
+ type IusCheckboxLabelPosition = 'left' | 'right';
952
+ /**
953
+ * Checkbox — Ius Design v2.
954
+ *
955
+ * Casilla de selección (BASE de la molécula de toggle: halo + estados + CVA
956
+ * booleano — patrón que reusarán Switch y Radio). Marca en navy (Primary-900)
957
+ * con check blanco; halo circular gris en hover y azul en pressed/focus.
958
+ * Soporta estado `indeterminate` (guion), que **prevalece visualmente** sobre
959
+ * `checked`. Implementa `ControlValueAccessor` (`boolean`) para integrarse con
960
+ * `[(ngModel)]` / `formControl`.
961
+ *
962
+ * Nota: `showIconHelp` compone `Popover` en la spec original (React); ese
963
+ * componente aún no está portado en este monorepo, así que aquí se usa un
964
+ * `title` nativo como respaldo accesible (mismo criterio que TextField).
965
+ * Reemplazar por `ius-popover` cuando exista, sin cambiar la API pública.
966
+ *
967
+ * `state` (`idle | hover | pressed | focused | disabled`) de la spec es SOLO
968
+ * para demos/especímenes → se omite de la API pública; el playground congela
969
+ * un estado visual con el atributo `data-force` (igual que TextField).
970
+ */
971
+ declare class CheckboxComponent implements ControlValueAccessor {
972
+ /** Texto junto a la casilla. Sin label si se omite. */
973
+ label?: string;
974
+ /** Lado del label respecto a la casilla. */
975
+ labelPosition: IusCheckboxLabelPosition;
976
+ /** Pastilla "?" junto al label. */
977
+ showIconHelp: boolean;
978
+ /** Título del contenido de ayuda (popover). */
979
+ iconHelpTitle?: string;
980
+ /** Cuerpo del contenido de ayuda (popover). */
981
+ iconHelpContent?: string;
982
+ /** `name` del input. */
983
+ name?: string;
984
+ /** `value` del input. */
985
+ value?: string;
986
+ private readonly sizeState;
987
+ set size(value: IusCheckboxSize);
988
+ get size(): IusCheckboxSize;
989
+ private readonly checkedState;
990
+ set checked(value: boolean);
991
+ get checked(): boolean;
992
+ /** Estado inicial no controlado (alias de `checked` como valor inicial). */
993
+ set defaultChecked(value: boolean);
994
+ /** Estado intermedio (guion); prevalece visualmente sobre `checked`. */
995
+ indeterminate: boolean;
996
+ private readonly disabledState;
997
+ set disabled(value: boolean);
998
+ get disabled(): boolean;
999
+ /** Callback con el nuevo booleano (original `onChange(checked)`; nunca `change`). */
1000
+ readonly checkedChange: EventEmitter<boolean>;
1001
+ protected readonly inputId: string;
1002
+ private onChange;
1003
+ private onTouched;
1004
+ /** Glifo Material Symbols dentro de la casilla. */
1005
+ protected get glyph(): string;
1006
+ protected get ariaChecked(): 'mixed' | 'true' | 'false';
1007
+ protected get helpIconTitle(): string | undefined;
1008
+ writeValue(value: boolean): void;
1009
+ registerOnChange(fn: (value: boolean) => void): void;
1010
+ registerOnTouched(fn: () => void): void;
1011
+ setDisabledState(isDisabled: boolean): void;
1012
+ protected onToggle(): void;
1013
+ protected onBlur(): void;
1014
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckboxComponent, never>;
1015
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxComponent, "ius-checkbox", never, { "label": { "alias": "label"; "required": false; }; "labelPosition": { "alias": "labelPosition"; "required": false; }; "showIconHelp": { "alias": "showIconHelp"; "required": false; }; "iconHelpTitle": { "alias": "iconHelpTitle"; "required": false; }; "iconHelpContent": { "alias": "iconHelpContent"; "required": false; }; "name": { "alias": "name"; "required": false; }; "value": { "alias": "value"; "required": false; }; "size": { "alias": "size"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; "defaultChecked": { "alias": "defaultChecked"; "required": false; }; "indeterminate": { "alias": "indeterminate"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "checkedChange": "checkedChange"; }, never, never, true, never>;
1016
+ static ngAcceptInputType_showIconHelp: unknown;
1017
+ static ngAcceptInputType_checked: unknown;
1018
+ static ngAcceptInputType_defaultChecked: unknown;
1019
+ static ngAcceptInputType_indeterminate: unknown;
1020
+ static ngAcceptInputType_disabled: unknown;
1021
+ }
1022
+
1023
+ /** Forma del medallón. `*-outline` = fondo blanco + anillo del color de acento. */
1024
+ type IusAvatarShape = 'circle' | 'square' | 'circle-outline' | 'square-outline';
1025
+ /** Tamaño — xsmall 24 · small 32 · medium 40 (default) · large 64 px. */
1026
+ type IusAvatarSize = 'xsmall' | 'small' | 'medium' | 'large';
1027
+ /** Familia de color del relleno (monograma/ícono). `auto` = estable por nombre. */
1028
+ type IusAvatarColor = 'auto' | 'info' | 'primary' | 'success' | 'warning' | 'danger' | 'neutral' | 'durazno' | 'banano' | 'sandia' | 'arandano' | 'uva' | 'aguacate';
1029
+ /**
1030
+ * Avatar — Ius Design v2.
1031
+ *
1032
+ * Medallón de contacto/usuario/entidad. Prioridad de contenido
1033
+ * **foto → ícono → monograma**. `color="auto"` deriva un color estable del
1034
+ * nombre (hash determinista). Con `editable` se renderiza como control
1035
+ * enfocable (role=button) con overlay de edición en hover/focus.
1036
+ *
1037
+ * `state` (`idle | hover | focused`) de la spec es SOLO para demos → se omite de
1038
+ * la API pública; el playground congela el estado con `data-force`.
1039
+ */
1040
+ declare class AvatarComponent {
1041
+ /** Texto alternativo de la imagen. */
1042
+ alt?: string;
1043
+ /** Nombre completo: genera iniciales y, con `color=auto`, el color. */
1044
+ name?: string;
1045
+ /** Monograma explícito (sobrescribe las iniciales derivadas de `name`). */
1046
+ monogram?: string;
1047
+ /** Ícono Material Symbols (si no hay foto). */
1048
+ icon?: string;
1049
+ /** Forma del medallón. */
1050
+ shape: IusAvatarShape;
1051
+ /** Tamaño del medallón. */
1052
+ size: IusAvatarSize;
1053
+ /** Familia de color del relleno (monograma/ícono). */
1054
+ color: IusAvatarColor;
1055
+ /** Permite editar: overlay de edición + render enfocable + evento `edit`. */
1056
+ editable: boolean;
1057
+ /** Ícono del overlay de edición. */
1058
+ editIcon: string;
1059
+ /** Etiqueta accesible explícita (anula la derivada). */
1060
+ ariaLabel?: string;
1061
+ /** Solo `editable`: clic o Enter/Espacio sobre el medallón. */
1062
+ readonly edit: EventEmitter<Event>;
1063
+ private readonly imgError;
1064
+ private _src?;
1065
+ /** URL de la fotografía. Prioridad si carga; si falla, cae a ícono/monograma. */
1066
+ set src(value: string | undefined);
1067
+ get src(): string | undefined;
1068
+ protected get hasPhoto(): boolean;
1069
+ /** Prioridad de contenido: foto → ícono → monograma. */
1070
+ protected get variant(): 'photo' | 'icon' | 'mono';
1071
+ protected get resolvedColor(): Exclude<IusAvatarColor, 'auto'>;
1072
+ protected get initials(): string;
1073
+ protected get imgAlt(): string;
1074
+ protected get hostRole(): string | null;
1075
+ private get computedLabel();
1076
+ protected get hostAriaLabel(): string | null;
1077
+ protected onImgError(): void;
1078
+ protected onHostClick(event: MouseEvent): void;
1079
+ protected onKeydown(event: KeyboardEvent): void;
1080
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarComponent, never>;
1081
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarComponent, "ius-avatar", never, { "alt": { "alias": "alt"; "required": false; }; "name": { "alias": "name"; "required": false; }; "monogram": { "alias": "monogram"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "shape": { "alias": "shape"; "required": false; }; "size": { "alias": "size"; "required": false; }; "color": { "alias": "color"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "editIcon": { "alias": "editIcon"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "src": { "alias": "src"; "required": false; }; }, { "edit": "edit"; }, never, never, true, never>;
1082
+ static ngAcceptInputType_editable: unknown;
1083
+ }
1084
+
1085
+ /** Jerarquía visual del IconButton. */
1086
+ type IusIconButtonVariant = 'secondary' | 'tertiary';
1087
+ /** Tamaño cuadrado — small 28 · medium 36 (default) · large 44 px. */
1088
+ type IusIconButtonSize = 'small' | 'medium' | 'large';
1089
+ /** Forma del contenedor. */
1090
+ type IusIconButtonShape = 'squared' | 'circle';
1091
+ /**
1092
+ * IconButton — Ius Design v2.
1093
+ *
1094
+ * Botón icon-only (una sola ligadura Material Symbols Rounded). Dos jerarquías
1095
+ * (`secondary` = fondo neutral + ícono verde; `tertiary` = transparente + ícono
1096
+ * secundario), dos formas (`squared` radio 8 · `circle` radio pill, con borde
1097
+ * outlined en circle·secondary) y tres tamaños (28/36/44). El pressed comparte
1098
+ * el verde de marca (Success-500) salvo circle·tertiary (Primary-900).
1099
+ *
1100
+ * `tooltip` compone `ius-tooltip` (etiqueta en hover/focus, como el golden).
1101
+ * No reemplaza a `ariaLabel`: la etiqueta accesible sigue siendo obligatoria.
1102
+ *
1103
+ * `state` (demos) de la spec se omite de la API pública; el playground congela
1104
+ * el estado con el atributo `data-force` en el host.
1105
+ */
1106
+ declare class IconButtonComponent implements OnInit {
1107
+ /** Ligadura Material Symbols Rounded (requerido). Ej. `"add"`, `"close"`. */
1108
+ icon: string;
1109
+ /** Jerarquía visual. */
1110
+ variant: IusIconButtonVariant;
1111
+ /** Tamaño del cuadro. */
1112
+ size: IusIconButtonSize;
1113
+ /** Forma del contenedor. */
1114
+ shape: IusIconButtonShape;
1115
+ /** Deshabilitado. */
1116
+ disabled: boolean;
1117
+ /** `type` del `<button>`. */
1118
+ type: 'button' | 'submit' | 'reset';
1119
+ /** Texto accesible. Si se omite, cae al nombre del ícono (poco descriptivo). */
1120
+ ariaLabel?: string;
1121
+ /** Etiqueta breve en hover/focus (compone `ius-tooltip`). No sustituye a `ariaLabel`. */
1122
+ tooltip?: string;
1123
+ /** Colocación del tooltip. */
1124
+ tooltipPlacement: IusPopoverPlacement;
1125
+ /** Emite al pulsar. Nunca `click` (colisión con el nativo del host). */
1126
+ readonly clicked: EventEmitter<MouseEvent>;
1127
+ ngOnInit(): void;
1128
+ protected get computedLabel(): string;
1129
+ protected onClick(event: MouseEvent): void;
1130
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconButtonComponent, never>;
1131
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconButtonComponent, "ius-icon-button", never, { "icon": { "alias": "icon"; "required": true; }; "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "shape": { "alias": "shape"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "type": { "alias": "type"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "tooltipPlacement": { "alias": "tooltipPlacement"; "required": false; }; }, { "clicked": "clicked"; }, never, never, true, never>;
1132
+ static ngAcceptInputType_disabled: unknown;
1133
+ }
1134
+
1135
+ /** Cuenta activa (medallón/nombre). Color auto estable por nombre de cuenta. */
1136
+ interface IusNavUserAccount {
1137
+ name?: string;
1138
+ monogram?: string;
1139
+ icon?: string;
1140
+ color?: IusAvatarColor;
1141
+ }
1142
+ /** Usuario (foto + nombre). */
1143
+ interface IusNavUserUser {
1144
+ name?: string;
1145
+ avatar?: string;
1146
+ }
1147
+ /** Presentación — stacked (cuenta sobre usuario) · single (solo usuario). */
1148
+ type IusNavUserLayout = 'stacked' | 'single';
1149
+ /**
1150
+ * NavUser — Ius Design v2.
1151
+ *
1152
+ * Control de cuenta + usuario del HeaderBar; abre el UserMenu (este componente
1153
+ * es solo el disparador). Ligero: sin borde ni fondo en reposo, fondo neutro en
1154
+ * hover/pressed/open. `stacked` (default) apila el nombre de cuenta sobre el del
1155
+ * usuario; `single` muestra solo el usuario. Un solo Avatar (foto del usuario).
1156
+ *
1157
+ * `state` (`hover | pressed | open`) de la spec es SOLO para demos → el
1158
+ * playground congela el estado con el atributo `data-state` en el host.
1159
+ */
1160
+ declare class NavUserComponent {
1161
+ /** Usuario (foto a la derecha + nombre). */
1162
+ user?: IusNavUserUser;
1163
+ /** Cuenta activa (nombre arriba en `stacked`). */
1164
+ account?: IusNavUserAccount;
1165
+ /** Presentación. */
1166
+ layout: IusNavUserLayout;
1167
+ /** Menú abierto: fondo neutro + chevron/estado abierto. */
1168
+ open: boolean;
1169
+ /** Etiqueta accesible explícita. */
1170
+ ariaLabel?: string;
1171
+ /** Al pulsar (conecta con el UserMenu). Nunca `click`. */
1172
+ readonly clicked: EventEmitter<MouseEvent>;
1173
+ protected get avatarIcon(): string | undefined;
1174
+ protected get hostAriaLabel(): string;
1175
+ protected onClick(event: MouseEvent): void;
1176
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavUserComponent, never>;
1177
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavUserComponent, "ius-nav-user", never, { "user": { "alias": "user"; "required": false; }; "account": { "alias": "account"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "open": { "alias": "open"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, { "clicked": "clicked"; }, never, never, true, never>;
1178
+ static ngAcceptInputType_open: unknown;
1179
+ }
1180
+
1181
+ /**
1182
+ * HeaderBar — Ius Design v2.
1183
+ *
1184
+ * Franja superior transversal del ecosistema (identidad de sesión): marca +
1185
+ * módulo a la izquierda; clúster de acciones (ayuda · soporte · agenda ·
1186
+ * notificaciones · apps) + NavUser (cuenta) a la derecha. Compone IconButton y
1187
+ * NavUser. Persiste al navegar; no es breadcrumb (eso va en PageHeader).
1188
+ *
1189
+ * Slots: `logo` (`<… slot="logo">`, fallback = placeholder neutro, no se inventa
1190
+ * logo), `actions` (`<… slot="actions">`, reemplaza el clúster completo),
1191
+ * `appsTemplate` (TemplateRef en vez del IconButton apps, p. ej. AppLauncher
1192
+ * cuando exista). `module` es string (identidad de módulo estable).
1193
+ *
1194
+ * Notas de port:
1195
+ * - Alto 52px según el CSS golden (el prompt menciona 60px; el jsx manda).
1196
+ * - El punto de novedad de notificaciones compone `Insignia dot` en el golden;
1197
+ * Insignia aún no está portada → se usa un punto inline equivalente.
1198
+ * - Outputs con sufijo `Click` (help/support/… ya son inputs boolean → no se
1199
+ * puede reusar el nombre; se evita además el nativo `click`).
1200
+ */
1201
+ declare class HeaderBarComponent {
1202
+ /** Nombre del módulo activo (identidad estable, NO breadcrumb). */
1203
+ module?: string;
1204
+ /** Mostrar el botón de ayuda. */
1205
+ help: boolean;
1206
+ /** Mostrar el botón de soporte. */
1207
+ support: boolean;
1208
+ /** Mostrar el lanzador de aplicaciones. */
1209
+ apps: boolean;
1210
+ /** Mostrar el ícono de Agenda (eventos próximos). */
1211
+ calendar: boolean;
1212
+ /** Campana con punto de novedad (solo punto, sin contador). Omitir la oculta. */
1213
+ notifications: boolean;
1214
+ /** Nodo a renderizar en lugar del IconButton apps (p. ej. un AppLauncher). Requiere `apps`. */
1215
+ appsTemplate?: TemplateRef<any>;
1216
+ /** Usuario de la cuenta (foto + nombre); se renderiza como NavUser. Omitir oculta el bloque. */
1217
+ user?: IusNavUserUser;
1218
+ /** Cuenta activa (nombre arriba); habilita el layout apilado del NavUser. */
1219
+ account?: IusNavUserAccount;
1220
+ /** Menú de cuenta abierto (estado abierto del NavUser). */
1221
+ accountOpen: boolean;
1222
+ /** Clic en la marca. Sin suscriptor, la marca es estática (sin hover). */
1223
+ readonly brandClick: EventEmitter<MouseEvent>;
1224
+ readonly helpClick: EventEmitter<MouseEvent>;
1225
+ readonly supportClick: EventEmitter<MouseEvent>;
1226
+ readonly appsClick: EventEmitter<MouseEvent>;
1227
+ readonly calendarClick: EventEmitter<MouseEvent>;
1228
+ readonly notificationsClick: EventEmitter<MouseEvent>;
1229
+ readonly accountClick: EventEmitter<MouseEvent>;
1230
+ /** La marca es estática (cursor default, sin hover) si nadie escucha `brandClick`. */
1231
+ protected get brandStatic(): boolean;
1232
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderBarComponent, never>;
1233
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderBarComponent, "ius-header-bar", never, { "module": { "alias": "module"; "required": false; }; "help": { "alias": "help"; "required": false; }; "support": { "alias": "support"; "required": false; }; "apps": { "alias": "apps"; "required": false; }; "calendar": { "alias": "calendar"; "required": false; }; "notifications": { "alias": "notifications"; "required": false; }; "appsTemplate": { "alias": "appsTemplate"; "required": false; }; "user": { "alias": "user"; "required": false; }; "account": { "alias": "account"; "required": false; }; "accountOpen": { "alias": "accountOpen"; "required": false; }; }, { "brandClick": "brandClick"; "helpClick": "helpClick"; "supportClick": "supportClick"; "appsClick": "appsClick"; "calendarClick": "calendarClick"; "notificationsClick": "notificationsClick"; "accountClick": "accountClick"; }, never, ["[slot=logo]", "[slot=actions]"], true, never>;
1234
+ static ngAcceptInputType_help: unknown;
1235
+ static ngAcceptInputType_support: unknown;
1236
+ static ngAcceptInputType_apps: unknown;
1237
+ static ngAcceptInputType_calendar: unknown;
1238
+ static ngAcceptInputType_notifications: unknown;
1239
+ static ngAcceptInputType_accountOpen: unknown;
1240
+ }
1241
+
1242
+ /** Tono del anillo. */
1243
+ type IusCircularProgressTone = 'info' | 'primary' | 'success' | 'warning' | 'danger' | 'neutral' | 'brand';
1244
+ /** Tamaño — small 22 · medium 30 (default) · large 44 px. */
1245
+ type IusCircularProgressSize = 'small' | 'medium' | 'large';
1246
+ interface Dim {
1247
+ d: number;
1248
+ s: number;
1249
+ }
1250
+ /**
1251
+ * CircularProgress — Ius Design v2.
1252
+ *
1253
+ * Anillo de progreso: determinado (`value`) o indeterminado (cometa que gira).
1254
+ * Port del golden CircularProgress.jsx (geometría de dos arcos + gradiente
1255
+ * cometa). La cuenta regresiva (`duration`/countdown, rAF) del golden NO se
1256
+ * porta aún — pendiente; cubre determinado + indeterminado.
1257
+ */
1258
+ declare class CircularProgressComponent {
1259
+ value: number;
1260
+ max: number;
1261
+ indeterminate: boolean;
1262
+ tone: IusCircularProgressTone;
1263
+ size: IusCircularProgressSize;
1264
+ showValue: boolean;
1265
+ ariaLabel?: string;
1266
+ protected readonly gid: string;
1267
+ protected get dim(): Dim;
1268
+ protected get r(): number;
1269
+ protected get cx(): number;
1270
+ protected get cy(): number;
1271
+ protected get toneVar(): string;
1272
+ protected get grad(): {
1273
+ strong: string;
1274
+ light: string;
1275
+ };
1276
+ protected get pct(): number;
1277
+ protected get roundedPct(): number;
1278
+ private get half();
1279
+ protected get coloredLen(): number;
1280
+ protected get grayLen(): number;
1281
+ protected get coloredDash(): string;
1282
+ protected get coloredOffset(): number;
1283
+ protected get grayDash(): string;
1284
+ protected get grayOffset(): number;
1285
+ protected get center(): string | null;
1286
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CircularProgressComponent, never>;
1287
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CircularProgressComponent, "ius-circular-progress", never, { "value": { "alias": "value"; "required": false; }; "max": { "alias": "max"; "required": false; }; "indeterminate": { "alias": "indeterminate"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; "size": { "alias": "size"; "required": false; }; "showValue": { "alias": "showValue"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, {}, never, never, true, never>;
1288
+ static ngAcceptInputType_indeterminate: unknown;
1289
+ static ngAcceptInputType_showValue: unknown;
1290
+ }
1291
+
1292
+ /** Modo de presentación. */
1293
+ type IusLoadingVariant = 'inline' | 'section' | 'page' | 'overlay';
1294
+ /**
1295
+ * Loading — Ius Design v2.
1296
+ *
1297
+ * Orquesta la espera indeterminada (CircularProgress) en 4 modos: inline,
1298
+ * section, page, overlay (capa con scrim sobre `children` proyectados).
1299
+ *
1300
+ * Nota: `brand` compone `LoadingMark` (cometa) en el golden; ese componente aún
1301
+ * no está portado → en modo brand se conserva el CircularProgress y la
1302
+ * superficie con degradado de marca en page/overlay. Reemplazar por
1303
+ * `ius-loading-mark` cuando exista, sin cambiar la API.
1304
+ */
1305
+ declare class LoadingComponent {
1306
+ variant: IusLoadingVariant;
1307
+ /** Etiqueta junto/bajo el spinner. `''`/null la oculta. */
1308
+ label: string | null;
1309
+ showLabel: boolean;
1310
+ /** Tono del spinner (ignorado en brand). */
1311
+ tone: IusCircularProgressTone;
1312
+ /** Look de marca (degradado navy→cian en page/overlay). */
1313
+ brand: boolean;
1314
+ /** Tamaño del spinner (default por variante). */
1315
+ size?: IusCircularProgressSize;
1316
+ /** Solo `overlay`: muestra/oculta la capa. */
1317
+ active: boolean;
1318
+ /** Etiqueta accesible del spinner si `label` no es texto. */
1319
+ ariaLabel?: string;
1320
+ protected get sz(): IusCircularProgressSize;
1321
+ /** Lado en px del cometa LoadingMark (modo brand). */
1322
+ protected get markPx(): number;
1323
+ /**
1324
+ * Solo `page` brand pinta la superficie navy (el cometa abre a cian para
1325
+ * despegar del fondo). En section/overlay el scrim es claro → cometa navy.
1326
+ */
1327
+ protected get markSurface(): 'light' | 'dark';
1328
+ protected get spinnerAria(): string;
1329
+ protected get showLabelNode(): boolean;
1330
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadingComponent, never>;
1331
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoadingComponent, "ius-loading", never, { "variant": { "alias": "variant"; "required": false; }; "label": { "alias": "label"; "required": false; }; "showLabel": { "alias": "showLabel"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; "brand": { "alias": "brand"; "required": false; }; "size": { "alias": "size"; "required": false; }; "active": { "alias": "active"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, {}, never, ["*"], true, never>;
1332
+ static ngAcceptInputType_showLabel: unknown;
1333
+ static ngAcceptInputType_brand: unknown;
1334
+ static ngAcceptInputType_active: unknown;
1335
+ }
1336
+
1337
+ /** Situación por defecto (ícono + tono). */
1338
+ type IusEmptyStateVariant = 'no-data' | 'no-results';
1339
+ /** Tamaño — escala círculo/tipografía/padding/botones. */
1340
+ type IusEmptyStateSize = 'compact' | 'medium' | 'full';
1341
+ type IusEmptyStateTone = 'info' | 'primary' | 'success' | 'warning' | 'danger' | 'neutral';
1342
+ /** Acción del EmptyState. `onClick` del golden → outputs (primaryClick)/(secondaryClick). */
1343
+ interface IusEmptyStateAction {
1344
+ label?: string;
1345
+ icon?: string;
1346
+ variant?: 'primary' | 'outline' | 'secondary' | 'tertiary' | 'danger';
1347
+ dynamic?: boolean;
1348
+ disabled?: boolean;
1349
+ }
1350
+ /**
1351
+ * EmptyState — Ius Design v2.
1352
+ *
1353
+ * Estado de "sin datos": ícono en círculo de tono suave (o ilustración spot) +
1354
+ * título + descripción + 0–2 acciones (Button). Para resultado/estado de página
1355
+ * completa (éxito/error/404/403/500) → StatusState.
1356
+ *
1357
+ * Compone `ius-button` (acciones) e `ius-illustration` (visual opcional, resuelto
1358
+ * por situación vía IllustrationCatalog). `illustration`: `true` autoresuelve por
1359
+ * `variant`; `string` = situación/nombre del catálogo; o un nodo a medida vía
1360
+ * `illustrationTemplate`.
1361
+ */
1362
+ declare class EmptyStateComponent {
1363
+ variant: IusEmptyStateVariant;
1364
+ size: IusEmptyStateSize;
1365
+ tone?: IusEmptyStateTone;
1366
+ /** Ligadura Material Symbols. `false` oculta el visual. */
1367
+ icon?: string | false;
1368
+ /** Ilustración spot: `true` autoresuelve por `variant`; `string` = situación/nombre. */
1369
+ illustration?: boolean | string;
1370
+ /** Nodo de ilustración a medida (reemplaza el círculo de ícono y el autoresolve). */
1371
+ illustrationTemplate?: TemplateRef<any>;
1372
+ title?: string;
1373
+ description?: string;
1374
+ /** Acción primaria (Button). String = solo label. */
1375
+ primaryAction?: IusEmptyStateAction | string;
1376
+ /** Acción secundaria (Button secondary). String = solo label. */
1377
+ secondaryAction?: IusEmptyStateAction | string;
1378
+ /** Escape hatch: nodo de acciones a medida (reemplaza primary/secondary). */
1379
+ actionsTemplate?: TemplateRef<any>;
1380
+ role: string;
1381
+ readonly primaryClick: EventEmitter<MouseEvent>;
1382
+ readonly secondaryClick: EventEmitter<MouseEvent>;
1383
+ private get preset();
1384
+ protected get effTone(): IusEmptyStateTone;
1385
+ protected get iconName(): string | null;
1386
+ protected get btnSize(): 'small' | 'medium' | 'large';
1387
+ protected get illusSize(): 'small' | 'medium' | 'large';
1388
+ /** Nombre de ilustración resuelto desde `illustration` (true/string). */
1389
+ protected get illusName(): IllustrationName | null;
1390
+ protected get hasIllustration(): boolean;
1391
+ protected get hasVisual(): boolean;
1392
+ private norm;
1393
+ protected get primary(): IusEmptyStateAction | null;
1394
+ protected get secondary(): IusEmptyStateAction | null;
1395
+ protected get hasActions(): boolean;
1396
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmptyStateComponent, never>;
1397
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmptyStateComponent, "ius-empty-state", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "illustration": { "alias": "illustration"; "required": false; }; "illustrationTemplate": { "alias": "illustrationTemplate"; "required": false; }; "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; "primaryAction": { "alias": "primaryAction"; "required": false; }; "secondaryAction": { "alias": "secondaryAction"; "required": false; }; "actionsTemplate": { "alias": "actionsTemplate"; "required": false; }; "role": { "alias": "role"; "required": false; }; }, { "primaryClick": "primaryClick"; "secondaryClick": "secondaryClick"; }, never, never, true, never>;
1398
+ }
1399
+
1400
+ /** Resultado/estado de página. */
1401
+ type IusStatusKind = 'success' | 'error' | 'not-found' | 'restricted' | 'server-error' | 'maintenance';
1402
+ /**
1403
+ * StatusState — Ius Design v2.
1404
+ *
1405
+ * Estado de página completa para el resultado de una acción/navegación: éxito,
1406
+ * error, 404, 403, 500, mantenimiento. Compone EmptyState (`size="full"`). Cada
1407
+ * `status` fija tono, código, ícono y copy por defecto.
1408
+ *
1409
+ * Visual (prioridad): ilustración a medida (`illustrationTemplate`) → numeral
1410
+ * del código (`showCode`) → ícono Material Symbols por status.
1411
+ *
1412
+ * Nota de port: el visual por defecto del golden es la ilustración spot
1413
+ * (`Illustration` resuelta por `resolveIllustration(status)`); `ius-illustration`
1414
+ * aún no está portado, así que por defecto se usa el ícono. Cuando exista, el
1415
+ * default pasará a la ilustración sin cambiar la API (`IllustrationCatalog` ya
1416
+ * está portado en `illustration-catalog.ts`).
1417
+ */
1418
+ declare class StatusStateComponent {
1419
+ status: IusStatusKind;
1420
+ code?: string | number;
1421
+ showCode: boolean;
1422
+ title?: string;
1423
+ description?: string;
1424
+ /** Ilustración a medida (reemplaza el visual por defecto). */
1425
+ illustrationTemplate?: TemplateRef<any>;
1426
+ /** Ícono Material Symbols (sobrescribe el del status). */
1427
+ icon?: string;
1428
+ tone?: IusEmptyStateTone;
1429
+ size: IusEmptyStateSize;
1430
+ primaryAction?: IusEmptyStateAction | string;
1431
+ secondaryAction?: IusEmptyStateAction | string;
1432
+ role?: string;
1433
+ readonly primaryClick: EventEmitter<MouseEvent>;
1434
+ readonly secondaryClick: EventEmitter<MouseEvent>;
1435
+ private get cfg();
1436
+ protected get effTone(): IusEmptyStateTone;
1437
+ protected get effCode(): string | null;
1438
+ protected get effRole(): string;
1439
+ protected get effTitle(): string;
1440
+ protected get effDescription(): string;
1441
+ protected get statusIcon(): string;
1442
+ protected get toneVar(): string;
1443
+ /** Se muestra el numeral cuando `showCode` y hay código. */
1444
+ protected get useCode(): boolean;
1445
+ /**
1446
+ * Pieza spot por situación (vía catálogo). El golden la renderiza SIEMPRE a
1447
+ * `size="large"`, desacoplada del prop `size` (que solo escala el layout de
1448
+ * EmptyState), por eso StatusState dibuja la ilustración él mismo y la pasa
1449
+ * como plantilla, en vez de delegar el tamaño a EmptyState.
1450
+ */
1451
+ protected get spotName(): IllustrationName | null;
1452
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatusStateComponent, never>;
1453
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatusStateComponent, "ius-status-state", never, { "status": { "alias": "status"; "required": false; }; "code": { "alias": "code"; "required": false; }; "showCode": { "alias": "showCode"; "required": false; }; "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; "illustrationTemplate": { "alias": "illustrationTemplate"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; "size": { "alias": "size"; "required": false; }; "primaryAction": { "alias": "primaryAction"; "required": false; }; "secondaryAction": { "alias": "secondaryAction"; "required": false; }; "role": { "alias": "role"; "required": false; }; }, { "primaryClick": "primaryClick"; "secondaryClick": "secondaryClick"; }, never, never, true, never>;
1454
+ static ngAcceptInputType_showCode: unknown;
1455
+ }
1456
+
1457
+ /** Situación semántica → ilustración. Las pantallas piden por intención. */
1458
+ declare const ILLUSTRATION_ALIAS: Readonly<Record<string, IllustrationName>>;
1459
+ /**
1460
+ * Resuelve una situación semántica o un nombre directo a un nombre de
1461
+ * ilustración válido. `null` si no reconoce ni situación ni nombre.
1462
+ */
1463
+ declare function resolveIllustration(key: string | null | undefined): IllustrationName | null;
1464
+
1465
+ /** Transición entre imágenes — `fade` (cross-fade) · `kenburns` (fade + zoom lento). */
1466
+ type IusCarouselTransition = 'fade' | 'kenburns';
1467
+ /** Velo de legibilidad sobre el claim. */
1468
+ type IusCarouselOverlay = 'none' | 'gradient' | 'brand';
1469
+ /** Orden de reproducción de la galería. */
1470
+ type IusCarouselOrder = 'sequential' | 'random';
1471
+ /** Ajuste de la imagen dentro del contenedor. */
1472
+ type IusCarouselObjectFit = 'cover' | 'contain';
1473
+ /** Imagen normalizada de la galería. */
1474
+ interface IusCarouselImage {
1475
+ src: string;
1476
+ alt: string;
1477
+ }
1478
+ /** Entrada aceptada por `images`: URL suelta o `{ src, alt }`. */
1479
+ type IusCarouselImageInput = string | {
1480
+ src: string;
1481
+ alt?: string;
1482
+ };
1483
+ /**
1484
+ *
1485
+ * Galería de imágenes en loop con cross-fade, decorativa full-height panel del
1486
+ * login, con claim de marca + subtítulo + CTA opcionales. La galería es
1487
+ * actualizable por input `images`; el consumidor le da el alto 100%×100%.
1488
+ *
1489
+ * Port Angular nativo de `Carousel.jsx` No es campo de
1490
+ * formulario — sin `ControlValueAccessor`. El CTA se proyecta:
1491
+ * `<button carousel-action>…</button>` dentro de `<ius-carousel>`.
1492
+ */
1493
+ declare class CarouselComponent {
1494
+ /** Galería actualizable. Al cambiar, reinicia en la primera imagen. */
1495
+ readonly images: _angular_core.InputSignal<IusCarouselImageInput[]>;
1496
+ /** Claim de marca (Roboto bold, blanco). Sin claim si se omite. */
1497
+ readonly title: _angular_core.InputSignal<string | undefined>;
1498
+ /** Subtítulo bajo el claim (Rubik). */
1499
+ readonly subtitle: _angular_core.InputSignal<string | undefined>;
1500
+ /** Tiempo por imagen (ms). */
1501
+ readonly interval: _angular_core.InputSignal<number>;
1502
+ /** Cross-fade o fade + zoom lento del activo. */
1503
+ readonly transition: _angular_core.InputSignal<IusCarouselTransition>;
1504
+ /** Scrim navy vía `color-mix` sobre `--ius-primary-900`. */
1505
+ readonly overlay: _angular_core.InputSignal<IusCarouselOverlay>;
1506
+ /** Indicadores clicables (el activo se ensancha). */
1507
+ readonly dots: _angular_core.InputSignalWithTransform<boolean, unknown>;
1508
+ /** Flechas ‹ › opcionales. */
1509
+ readonly arrows: _angular_core.InputSignalWithTransform<boolean, unknown>;
1510
+ /** `random` baraja (Fisher–Yates) al montar / cambiar `images`. */
1511
+ readonly order: _angular_core.InputSignal<IusCarouselOrder>;
1512
+ /** Autoavance en loop. */
1513
+ readonly autoPlay: _angular_core.InputSignalWithTransform<boolean, unknown>;
1514
+ /** Repetición al llegar al final. */
1515
+ readonly loop: _angular_core.InputSignalWithTransform<boolean, unknown>;
1516
+ /** Ajuste de la imagen. */
1517
+ readonly objectFit: _angular_core.InputSignal<IusCarouselObjectFit>;
1518
+ /** Pausa el autoplay al hover. */
1519
+ readonly pauseOnHover: _angular_core.InputSignalWithTransform<boolean, unknown>;
1520
+ /** Etiqueta de la región (accesibilidad). */
1521
+ readonly ariaLabel: _angular_core.InputSignal<string>;
1522
+ /** Índice visible actual (por si el consumidor sincroniza algo). Nunca `change`. */
1523
+ readonly indexChange: _angular_core.OutputEmitterRef<number>;
1524
+ /** Galería normalizada a `{ src, alt }`. */
1525
+ protected readonly slides: _angular_core.Signal<IusCarouselImage[]>;
1526
+ /** Orden de reproducción (secuencial o barajado). */
1527
+ protected readonly seq: _angular_core.Signal<number[]>;
1528
+ /**
1529
+ * Posición dentro del orden de reproducción. `linkedSignal` la reinicia a 0
1530
+ * cuando cambia el set de imágenes o el orden (espejo del
1531
+ * `useEffect(() => setPos(0), [n, order])` del JSX), y es escribible para la
1532
+ * navegación manual/automática.
1533
+ */
1534
+ protected readonly pos: _angular_core.WritableSignal<number>;
1535
+ /** Índice de la imagen visible (en la galería original). */
1536
+ protected readonly activeIndex: _angular_core.Signal<number>;
1537
+ private readonly paused;
1538
+ constructor();
1539
+ /** Navega a una posición del orden de reproducción (con loop o clamp). */
1540
+ protected go(next: number): void;
1541
+ protected onEnter(): void;
1542
+ protected onLeave(): void;
1543
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CarouselComponent, never>;
1544
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CarouselComponent, "ius-carousel", never, { "images": { "alias": "images"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "interval": { "alias": "interval"; "required": false; "isSignal": true; }; "transition": { "alias": "transition"; "required": false; "isSignal": true; }; "overlay": { "alias": "overlay"; "required": false; "isSignal": true; }; "dots": { "alias": "dots"; "required": false; "isSignal": true; }; "arrows": { "alias": "arrows"; "required": false; "isSignal": true; }; "order": { "alias": "order"; "required": false; "isSignal": true; }; "autoPlay": { "alias": "autoPlay"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "objectFit": { "alias": "objectFit"; "required": false; "isSignal": true; }; "pauseOnHover": { "alias": "pauseOnHover"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "indexChange": "indexChange"; }, never, ["[carousel-action]"], true, never>;
1545
+ }
1546
+
1547
+ /** Disposición de la ficha. */
1548
+ type DescriptionListLayout = 'inline' | 'stacked' | 'grid';
1549
+ /** Tamaño (afecta fs del valor y padding de celda en grid). */
1550
+ type DescriptionListSize = 'small' | 'medium';
1551
+ /**
1552
+ * Un par etiqueta·valor. `label`/`value` aceptan texto (`string`) o contenido
1553
+ * rico proyectado (`TemplateRef` — Tag, Avatar, EventPill, un mapa…).
1554
+ */
1555
+ interface DescriptionListItem {
1556
+ /** Etiqueta (dt). Texto o `TemplateRef`. */
1557
+ label: string | TemplateRef<unknown>;
1558
+ /** Valor (dd). Texto o `TemplateRef`. */
1559
+ value?: string | TemplateRef<unknown>;
1560
+ /** Ícono Material Symbols al lado del **valor** (no de la etiqueta). */
1561
+ icon?: string;
1562
+ /** Hace el valor un enlace real `<a href>`. */
1563
+ href?: string;
1564
+ /** Hace el valor un `<button>` que emite `valueClicked` (si no hay `href`). */
1565
+ clickable?: boolean;
1566
+ /** aria-label del valor navegable cuando el texto no basta. */
1567
+ ariaLabel?: string;
1568
+ /** Fuerza/desactiva `tabular-nums` en este valor (override de `tabularValues`). */
1569
+ tabular?: boolean;
1570
+ /** Solo `grid`: sub-columnas que ocupa la celda de valor. */
1571
+ span?: number;
1572
+ }
1573
+ /** Payload de `valueClicked`. */
1574
+ interface DescriptionListValueClick {
1575
+ item: DescriptionListItem;
1576
+ index: number;
1577
+ event: Event;
1578
+ }
1579
+ /**
1580
+ * DescriptionList — Ius Design v2 (familia data-display).
1581
+ *
1582
+ * Ficha de datos **solo lectura** (`<dl>/<dt>/<dd>`): pares etiqueta·valor de
1583
+ * una entidad. Es un **compositor**: aloja los valores ricos (Tag, Avatar,
1584
+ * EventPill, mapa) por proyección (`TemplateRef`), no los dibuja. 3 layouts
1585
+ * (inline subgrid · stacked · grid de celdas), navegable (href/clickable), y
1586
+ * densidad por `size` / `--ius-density`. Fuente de verdad: `DescriptionList.jsx`.
1587
+ *
1588
+ * No es para KPI único (→ Stat), fila navegable completa (→ ListCard) ni datos
1589
+ * editables (→ inputs).
1590
+ */
1591
+ declare class DescriptionListComponent {
1592
+ /** Pares etiqueta·valor. */
1593
+ readonly items: _angular_core.InputSignal<DescriptionListItem[]>;
1594
+ /** inline (columnas alineadas) · stacked (apilado) · grid (tabla de celdas). */
1595
+ readonly layout: _angular_core.InputSignal<DescriptionListLayout>;
1596
+ /** small (valor fs-sm + celdas compactas) · medium (valor fs-base). */
1597
+ readonly size: _angular_core.InputSignal<DescriptionListSize>;
1598
+ /** Solo grid: pares por fila (los `span` de una fila deben sumar `columns`). */
1599
+ readonly columns: _angular_core.InputSignal<number>;
1600
+ /** Solo inline: valor pegado a la etiqueta (start) o al borde derecho (end). */
1601
+ readonly valueAlign: _angular_core.InputSignal<"start" | "end">;
1602
+ /** Hairline entre filas (inline/stacked; ignorado en grid). */
1603
+ readonly divider: _angular_core.InputSignalWithTransform<boolean, unknown>;
1604
+ /** `tabular-nums` en valores string (override por ítem con `item.tabular`). */
1605
+ readonly tabularValues: _angular_core.InputSignalWithTransform<boolean, unknown>;
1606
+ /** Solo inline: ancho de la columna de etiquetas. */
1607
+ readonly termWidth: _angular_core.InputSignal<string>;
1608
+ /** Al activar un valor `clickable` (sin href). El caso `href` es un `<a>` nativo. */
1609
+ readonly valueClicked: _angular_core.OutputEmitterRef<DescriptionListValueClick>;
1610
+ protected readonly isGrid: _angular_core.Signal<boolean>;
1611
+ /** grid-template-columns inline según `columns` (no `repeat(var())`). */
1612
+ protected readonly gridCols: _angular_core.Signal<string | null>;
1613
+ protected isTemplate(v: unknown): v is TemplateRef<unknown>;
1614
+ protected asTemplate(v: unknown): TemplateRef<unknown>;
1615
+ protected isTab(item: DescriptionListItem): boolean;
1616
+ /** grid-column de la celda de valor: `span (2*span - 1)`. */
1617
+ protected gridColSpan(item: DescriptionListItem): string;
1618
+ protected onValueClick(item: DescriptionListItem, event: Event): void;
1619
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DescriptionListComponent, never>;
1620
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DescriptionListComponent, "ius-description-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "valueAlign": { "alias": "valueAlign"; "required": false; "isSignal": true; }; "divider": { "alias": "divider"; "required": false; "isSignal": true; }; "tabularValues": { "alias": "tabularValues"; "required": false; "isSignal": true; }; "termWidth": { "alias": "termWidth"; "required": false; "isSignal": true; }; }, { "valueClicked": "valueClicked"; }, never, never, true, never>;
1621
+ }
1622
+
1623
+ /** Motor de captcha. `turnstile` es privacy-friendly (recomendado). */
1624
+ type IusCaptchaProvider = 'turnstile' | 'recaptcha' | 'hcaptcha';
1625
+ /** Tema del widget (passthrough al proveedor). */
1626
+ type IusCaptchaTheme = 'auto' | 'light' | 'dark';
1627
+ /** Tamaño/disposición — vocabulario del proveedor, NO la escala del DS. */
1628
+ type IusCaptchaSize = 'normal' | 'flexible' | 'compact';
1629
+ /** Modo de aparición (Turnstile). */
1630
+ type IusCaptchaAppearance = 'always' | 'execute' | 'interaction-only';
1631
+ /** Estado forzado — SOLO demos / especímenes del DS. */
1632
+ type IusCaptchaState = 'loading' | 'ready' | 'verified' | 'expired' | 'error' | 'disabled';
1633
+ /** Contrato imperativo del campo (equivale al `CaptchaFieldHandle` del golden). */
1634
+ interface IusCaptchaFieldHandle {
1635
+ reset(): void;
1636
+ execute(): void;
1637
+ getResponse(): string;
1638
+ getWidgetId(): string | number | null;
1639
+ }
1640
+ /** Opciones normalizadas que el adaptador pasa al `render` del proveedor. */
1641
+ interface RenderOptions {
1642
+ sitekey: string;
1643
+ theme: IusCaptchaTheme;
1644
+ size: IusCaptchaSize;
1645
+ appearance: IusCaptchaAppearance;
1646
+ language: string;
1647
+ action?: string;
1648
+ cData?: string;
1649
+ onVerify: (token: string) => void;
1650
+ onExpire: () => void;
1651
+ onError: (code?: string) => void;
1652
+ onTimeout: () => void;
1653
+ }
1654
+ /** Adaptador por proveedor — normaliza render/reset/remove/execute. */
1655
+ interface ProviderAdapter {
1656
+ scriptUrl: string;
1657
+ global: string;
1658
+ responseField: string;
1659
+ label: string;
1660
+ render(el: HTMLElement, o: RenderOptions): string | number;
1661
+ reset(id: string | number): void;
1662
+ remove(id: string | number): void;
1663
+ execute(id: string | number): void;
1664
+ }
1665
+ interface PlaceholderContent {
1666
+ icon: string;
1667
+ name: string;
1668
+ note: string;
1669
+ }
1670
+ /**
1671
+ * CaptchaField — Ius Design v2.
1672
+ *
1673
+ * Campo de formulario que **integra un reto captcha de terceros** (Cloudflare
1674
+ * Turnstile por defecto · Google reCAPTCHA · hCaptcha) en el lenguaje del
1675
+ * sistema. El reto visual lo dibuja el proveedor dentro de un iframe que **no
1676
+ * se puede reestilizar**; el DS posee el marco: hueco reservado, esqueleto de
1677
+ * carga, label/ayuda, error de validación y el token oculto para el envío del
1678
+ * formulario. Fuente de verdad: `CaptchaField.jsx` + `CaptchaField.d.ts` +
1679
+ * `CaptchaField.ng-spec.md`.
1680
+ *
1681
+ * Implementa `ControlValueAccessor`: el valor de control es el **token** del
1682
+ * reto. Se emite en `onVerify` (nuevo token) y se limpia a `''` en
1683
+ * `onExpire`/`reset`. El script del proveedor se carga una sola vez por URL.
1684
+ *
1685
+ * `Skeleton` aún no está portado: el estado de carga usa un esqueleto inline
1686
+ * con tokens `--ius-*` (mismo alto que el hueco, sin salto de layout).
1687
+ * Reemplazar por `<ius-skeleton>` cuando exista.
1688
+ */
1689
+ declare class CaptchaFieldComponent implements ControlValueAccessor, IusCaptchaFieldHandle {
1690
+ private readonly platformId;
1691
+ private readonly providerState;
1692
+ set provider(value: IusCaptchaProvider);
1693
+ get provider(): IusCaptchaProvider;
1694
+ private readonly sitekeyState;
1695
+ /** Clave pública del sitio. Sin ella se muestra el hueco reservado (docs). */
1696
+ set sitekey(value: string | undefined);
1697
+ get sitekey(): string | undefined;
1698
+ private readonly themeState;
1699
+ set theme(value: IusCaptchaTheme);
1700
+ get theme(): IusCaptchaTheme;
1701
+ protected readonly sizeState: _angular_core.WritableSignal<IusCaptchaSize>;
1702
+ set size(value: IusCaptchaSize);
1703
+ get size(): IusCaptchaSize;
1704
+ private readonly appearanceState;
1705
+ set appearance(value: IusCaptchaAppearance);
1706
+ get appearance(): IusCaptchaAppearance;
1707
+ private readonly languageState;
1708
+ set language(value: string);
1709
+ get language(): string;
1710
+ private readonly actionState;
1711
+ /** Parámetro `action` (Turnstile) para telemetría del reto. */
1712
+ set action(value: string | undefined);
1713
+ get action(): string | undefined;
1714
+ private readonly cDataState;
1715
+ /** Datos de cliente opacos (`cData` de Turnstile). */
1716
+ set cData(value: string | undefined);
1717
+ get cData(): string | undefined;
1718
+ private readonly disabledState;
1719
+ /** Deshabilitado: no monta el reto; muestra el hueco inerte. */
1720
+ set disabled(value: boolean);
1721
+ get disabled(): boolean;
1722
+ private readonly errorState;
1723
+ /** Estado de error de validación (tiñe el marco `danger` + `errorText`). */
1724
+ set error(value: boolean);
1725
+ get error(): boolean;
1726
+ /**
1727
+ * Forzar visualmente un estado — **solo demos / especímenes del DS**. Salta
1728
+ * el montaje real y pinta el hueco reservado en ese estado. No usar en
1729
+ * producción (el reto real dibuja sus propios estados dentro del iframe).
1730
+ */
1731
+ protected readonly stateState: _angular_core.WritableSignal<IusCaptchaState | undefined>;
1732
+ set state(value: IusCaptchaState | undefined);
1733
+ get state(): IusCaptchaState | undefined;
1734
+ /** Label sobre el hueco. */
1735
+ label?: string;
1736
+ /** Texto de ayuda bajo el hueco. */
1737
+ helpText?: string;
1738
+ /** Reemplaza `helpText` cuando `error` es `true`. */
1739
+ errorText?: string;
1740
+ /** Nombre del input oculto que lleva el token (default por proveedor). */
1741
+ responseFieldName?: string;
1742
+ /** `id` del hueco/`<label>` (auto-generado si se omite). */
1743
+ id?: string;
1744
+ /** Reto resuelto → token a validar en el backend. */
1745
+ readonly verify: EventEmitter<string>;
1746
+ /** Token expirado. */
1747
+ readonly expire: EventEmitter<void>;
1748
+ /** Fallo del reto (código del proveedor). */
1749
+ readonly errored: EventEmitter<string | undefined>;
1750
+ /** Reto interactivo agotado. */
1751
+ readonly timedOut: EventEmitter<void>;
1752
+ /** Token (además del CVA). */
1753
+ readonly valueChange: EventEmitter<string>;
1754
+ protected readonly token: _angular_core.WritableSignal<string>;
1755
+ /** 'loading' | 'ready' | 'error' — fase del montaje del widget real. */
1756
+ protected readonly phase: _angular_core.WritableSignal<"error" | "loading" | "ready">;
1757
+ private widgetId;
1758
+ private readonly baseId;
1759
+ private readonly hostRef;
1760
+ private onChange;
1761
+ private onTouched;
1762
+ protected readonly adapter: _angular_core.Signal<ProviderAdapter>;
1763
+ protected readonly isDemo: _angular_core.Signal<boolean>;
1764
+ protected readonly isDisabled: _angular_core.Signal<boolean>;
1765
+ protected readonly isError: _angular_core.Signal<boolean>;
1766
+ /** ¿Montar el widget real? Solo con sitekey, sin demo y habilitado. */
1767
+ protected readonly useLive: _angular_core.Signal<boolean>;
1768
+ protected readonly ph: _angular_core.Signal<PlaceholderContent>;
1769
+ protected get fieldId(): string;
1770
+ protected get respName(): string;
1771
+ protected get hint(): string | undefined;
1772
+ constructor();
1773
+ writeValue(value: string): void;
1774
+ registerOnChange(fn: (value: string) => void): void;
1775
+ registerOnTouched(fn: () => void): void;
1776
+ setDisabledState(isDisabled: boolean): void;
1777
+ /** Reinicia el reto (p. ej. tras un login fallido). */
1778
+ reset(): void;
1779
+ /** Ejecuta el reto manualmente (`appearance="execute"` / modo invisible). */
1780
+ execute(): void;
1781
+ /** Token actual del proveedor (cadena vacía si aún no hay). */
1782
+ getResponse(): string;
1783
+ /** Id interno del widget del proveedor (o `null`). */
1784
+ getWidgetId(): string | number | null;
1785
+ private handleVerify;
1786
+ private handleExpire;
1787
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CaptchaFieldComponent, never>;
1788
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CaptchaFieldComponent, "ius-captcha-field", never, { "provider": { "alias": "provider"; "required": false; }; "sitekey": { "alias": "sitekey"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "size": { "alias": "size"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "language": { "alias": "language"; "required": false; }; "action": { "alias": "action"; "required": false; }; "cData": { "alias": "cData"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "error": { "alias": "error"; "required": false; }; "state": { "alias": "state"; "required": false; }; "label": { "alias": "label"; "required": false; }; "helpText": { "alias": "helpText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "responseFieldName": { "alias": "responseFieldName"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, { "verify": "verify"; "expire": "expire"; "errored": "errored"; "timedOut": "timedOut"; "valueChange": "valueChange"; }, never, never, true, never>;
1789
+ static ngAcceptInputType_disabled: unknown;
1790
+ static ngAcceptInputType_error: unknown;
1791
+ }
1792
+
1793
+ /** Propósito semántico — fija defaults sin bloquear capacidades. */
1794
+ type IusTagRole = 'label' | 'status' | 'filter';
1795
+ /** Familia de color: 6 semánticas + 6 frutas categóricas. */
1796
+ type IusTagTone = 'primary' | 'info' | 'success' | 'warning' | 'danger' | 'neutral' | 'durazno' | 'banano' | 'sandia' | 'arandano' | 'uva' | 'aguacate';
1797
+ /** Tratamiento de color. */
1798
+ type IusTagVariant = 'soft' | 'outline' | 'solid';
1799
+ /** Tamaño. */
1800
+ type IusTagSize = 'small' | 'medium' | 'large';
1801
+ /** Forma. */
1802
+ type IusTagShape = 'pill' | 'rounded';
1803
+ /** Estado forzado — solo demos. */
1804
+ type IusTagState = 'idle' | 'hover' | 'pressed' | 'focused';
1805
+ /**
1806
+ * Marca un prefijo libre proyectado (anula `icon`/`dot`):
1807
+ * `<ius-tag><span iusTagPrefix>…</span>Texto</ius-tag>`.
1808
+ */
1809
+ declare class IusTagPrefixDirective {
1810
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusTagPrefixDirective, never>;
1811
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusTagPrefixDirective, "[iusTagPrefix]", never, {}, {}, never, never, true, never>;
1812
+ }
1813
+ /**
1814
+ * Marca un sufijo libre proyectado (se ignora si hay `count`):
1815
+ * `<ius-tag>Texto<span iusTagSuffix>…</span></ius-tag>`.
1816
+ */
1817
+ declare class IusTagSuffixDirective {
1818
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusTagSuffixDirective, never>;
1819
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusTagSuffixDirective, "[iusTagSuffix]", never, {}, {}, never, never, true, never>;
1820
+ }
1821
+ /**
1822
+ * Tag — Ius Design v2 (familia data-display).
1823
+ *
1824
+ * Etiqueta compacta con prefijo/sufijo para clasificar, filtrar o marcar estado.
1825
+ * No intrusiva con el color: `soft` (tinte suave, default) · `outline` (solo el
1826
+ * acento coloreado) · `solid` (relleno fuerte, reservado a seleccionado/activo).
1827
+ * 12 tonos (6 semánticos + 6 frutas), 3 tamaños, `pill`/`rounded`, icon/dot/
1828
+ * prefix, count (`· N`)/suffix y cierre (×). Fuente de verdad: `Tag.jsx` +
1829
+ * `Tag.d.ts` + `Tag.ng-spec.md`.
1830
+ *
1831
+ * `role`: `label` (soft, estático) · `status` (soft + dot) · `filter`
1832
+ * (outline → solid al `selected`; interactivo). Un Tag interactivo (filter o
1833
+ * `[interactive]`) se comporta como botón (patrón ARIA `role="button"` sobre el
1834
+ * host: focusable, Enter/Espacio, `aria-pressed`) y emite `clicked`; el `×` emite
1835
+ * `closed`. Se usa host = pill (no se cambia el tag entre span/button) para no
1836
+ * duplicar los `<ng-content>` de proyección.
1837
+ *
1838
+ * Para tokens removibles en un campo → Chip; indicador atómico → Insignia.
1839
+ * En contexto Alert `solid`, la armonización on-color la aporta el CSS del Alert.
1840
+ */
1841
+ declare class TagComponent {
1842
+ private readonly el;
1843
+ /** Texto de la etiqueta (alternativa a proyectar contenido). */
1844
+ readonly label: _angular_core.InputSignal<string | undefined>;
1845
+ /** Propósito semántico (fija defaults de variant/dot). */
1846
+ readonly role: _angular_core.InputSignal<IusTagRole>;
1847
+ /** Familia de color. */
1848
+ readonly tone: _angular_core.InputSignal<IusTagTone>;
1849
+ /** Tratamiento de color; si se omite lo fija el `role`. */
1850
+ readonly variant: _angular_core.InputSignal<IusTagVariant | undefined>;
1851
+ /** Tamaño. */
1852
+ readonly size: _angular_core.InputSignal<IusTagSize>;
1853
+ /** Forma. */
1854
+ readonly shape: _angular_core.InputSignal<IusTagShape>;
1855
+ /** Ícono Material Symbols como prefijo (toma el acento). */
1856
+ readonly icon: _angular_core.InputSignal<string | undefined>;
1857
+ /** Punto de acento como prefijo; si se omite lo fija el `role`. */
1858
+ readonly dot: _angular_core.InputSignal<boolean | undefined>;
1859
+ /** Sufijo numérico → `· N`. */
1860
+ readonly count: _angular_core.InputSignal<string | number | undefined>;
1861
+ /** Muestra el botón de cierre (×). */
1862
+ readonly closable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1863
+ /** aria-label del cierre. */
1864
+ readonly closeLabel: _angular_core.InputSignal<string>;
1865
+ /** Seleccionado (fuerza `solid`); úsalo con filtros. */
1866
+ readonly selected: _angular_core.InputSignalWithTransform<boolean, unknown>;
1867
+ /** Deshabilitado. */
1868
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1869
+ /** Marca el Tag como interactivo (botón). `role="filter"` ya lo implica. */
1870
+ readonly interactive: _angular_core.InputSignalWithTransform<boolean, unknown>;
1871
+ /** Forzar visualmente un estado (demos). */
1872
+ readonly state: _angular_core.InputSignal<IusTagState | undefined>;
1873
+ /** Filtro pulsado (original `onClick`). */
1874
+ readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
1875
+ /** Cierre pulsado (original `onClose`). */
1876
+ readonly closed: _angular_core.OutputEmitterRef<void>;
1877
+ private readonly prefixRef;
1878
+ private readonly suffixRef;
1879
+ protected readonly hasPrefix: _angular_core.Signal<boolean>;
1880
+ protected readonly hasSuffix: _angular_core.Signal<boolean>;
1881
+ /** Interactivo si se marca explícito o el rol es `filter`. */
1882
+ protected readonly isInteractive: _angular_core.Signal<boolean>;
1883
+ private readonly baseVariant;
1884
+ /** Variante efectiva: `selected` fuerza `solid`. */
1885
+ protected readonly effVariant: _angular_core.Signal<IusTagVariant>;
1886
+ /** Mostrar dot: valor explícito o el default del rol. */
1887
+ protected readonly showDot: _angular_core.Signal<boolean>;
1888
+ protected onClickHost(event: MouseEvent): void;
1889
+ /**
1890
+ * Activa el Tag interactivo disparando un click nativo del host. Se enlaza a
1891
+ * Enter en `keydown` y a Espacio en `keyup` (patrón WAI-ARIA button: igual que
1892
+ * un `<button>` nativo, Enter repite al mantenerse y Espacio activa una sola
1893
+ * vez al soltar).
1894
+ */
1895
+ protected onKeyActivate(event: Event): void;
1896
+ /** Espacio en `keydown`: solo evita el scroll; la activación ocurre en `keyup`. */
1897
+ protected onSpaceDown(event: Event): void;
1898
+ protected onClose(event: Event): void;
1899
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagComponent, never>;
1900
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "ius-tag", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "dot": { "alias": "dot"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; "closed": "closed"; }, ["prefixRef", "suffixRef"], ["[iusTagPrefix]", "*", "[iusTagSuffix]"], true, never>;
1901
+ }
1902
+
1903
+ /** Tamaño del campo: small ~34 · medium ~40 (default) · large ~48 px. */
1904
+ type IusMultiTextFieldSize = 'small' | 'medium' | 'large';
1905
+ /** Estado forzado — solo demos / especímenes. */
1906
+ type IusMultiTextFieldState = 'hover' | 'focused' | 'error' | 'disabled';
1907
+ /** Un segmento (`<input>`) del MultiTextField. */
1908
+ interface IusMultiTextFieldSlot {
1909
+ /** Placeholder del segmento. */
1910
+ placeholder?: string;
1911
+ /** `name` del input (envío como form). */
1912
+ name?: string;
1913
+ /** Tipo del `<input>`. Default `text`. */
1914
+ type?: 'text' | 'number' | 'tel' | 'password';
1915
+ /** Valor controlado del segmento. */
1916
+ value?: string;
1917
+ /** Valor inicial (no controlado). */
1918
+ defaultValue?: string;
1919
+ /** Ancho fijo. Número → px; string → CSS literal. */
1920
+ width?: number | string;
1921
+ /** `flex` (`'1 1 auto'`, `'0 0 60px'`, …) si necesitas más control que `width`. */
1922
+ flex?: string | number;
1923
+ /** Largo máximo de caracteres (habilita auto-avance). */
1924
+ maxLength?: number;
1925
+ /** Etiqueta accesible del segmento (si el placeholder no basta). */
1926
+ ariaLabel?: string;
1927
+ /** Callback opcional al teclear este segmento (además del `valueChange` del conjunto). */
1928
+ onChange?: (value: string, event: Event) => void;
1929
+ }
1930
+ /**
1931
+ * MultiTextField — Ius Design v2 (familia inputs).
1932
+ *
1933
+ * Variación de **TextField** que acopla varios `<input>` dentro de una misma
1934
+ * caja separados por divisores verticales — para datos compuestos (tarjeta
1935
+ * MM | AAAA + CVV, teléfono con prefijo, NIT + DV…). Reusa el wrapper `.ius-tf`
1936
+ * (label con required + iconHelp, 5 estados, size, helpText/errorText) y un
1937
+ * **único** botón de limpiar que vacía todos los segmentos. Fuente de verdad:
1938
+ * `MultiTextField.jsx` + `MultiTextField.d.ts` (delta sobre `TextField.ng-spec`).
1939
+ *
1940
+ * `ControlValueAccessor` **a nivel de conjunto**: el valor es el array de
1941
+ * valores por segmento (`string[]`); también se emite en `valueChange`. Cada
1942
+ * slot puede además traer su propio `onChange`. Auto-avance al llenar el
1943
+ * `maxLength` y Backspace en segmento vacío retrocede.
1944
+ *
1945
+ * Nota: las clases `.ius-tf__*` (label/help/hint/field/clear) se replican en el
1946
+ * SCSS porque bajo `ViewEncapsulation.Emulated` las de TextField no alcanzan a
1947
+ * otro componente. `showIconHelp` usa `title` nativo como respaldo hasta que
1948
+ * exista `ius-popover`. `[data-force]` congela un estado visual en demos.
1949
+ */
1950
+ declare class MultiTextFieldComponent implements ControlValueAccessor {
1951
+ protected readonly slotsState: _angular_core.WritableSignal<IusMultiTextFieldSlot[]>;
1952
+ /** Segmentos; cada uno un `<input>` separado por un divisor vertical. */
1953
+ set slots(value: IusMultiTextFieldSlot[]);
1954
+ get slots(): IusMultiTextFieldSlot[];
1955
+ /** Label común a todos los segmentos. */
1956
+ label?: string;
1957
+ /** Indicador de obligatorio (•). */
1958
+ required: boolean;
1959
+ /** Ícono de ayuda `?` junto al label (respaldo: `title` nativo). */
1960
+ showIconHelp: boolean;
1961
+ /** Título del contenido de ayuda. */
1962
+ iconHelpTitle?: string;
1963
+ /** Cuerpo del contenido de ayuda. */
1964
+ iconHelpContent?: string;
1965
+ /** Línea de ayuda bajo el campo. */
1966
+ helpText?: string;
1967
+ /** Reemplaza `helpText` cuando `error` es `true`. */
1968
+ errorText?: string;
1969
+ /** Mostrar/ocultar la línea de ayuda. */
1970
+ showHelpText: boolean;
1971
+ /** Forzar visibilidad del botón limpiar (por defecto: auto con valor). */
1972
+ showClear?: boolean;
1973
+ private readonly errorState;
1974
+ /** Estado de error global. */
1975
+ set error(value: boolean);
1976
+ get error(): boolean;
1977
+ private readonly disabledState;
1978
+ /** Estado deshabilitado global. */
1979
+ set disabled(value: boolean);
1980
+ get disabled(): boolean;
1981
+ protected readonly sizeState: _angular_core.WritableSignal<IusMultiTextFieldSize>;
1982
+ set size(value: IusMultiTextFieldSize);
1983
+ get size(): IusMultiTextFieldSize;
1984
+ protected readonly stateState: _angular_core.WritableSignal<IusMultiTextFieldState | undefined>;
1985
+ /** Forzar visualmente un estado completo (solo demos). */
1986
+ set state(value: IusMultiTextFieldState | undefined);
1987
+ get state(): IusMultiTextFieldState | undefined;
1988
+ /** `id` base del campo (los segmentos serán `id-0`, `id-1`, …). */
1989
+ id?: string;
1990
+ /** Valores del conjunto (array por segmento). */
1991
+ readonly valueChange: EventEmitter<string[]>;
1992
+ /** Al pulsar el botón de limpiar (después de vaciar). */
1993
+ readonly cleared: EventEmitter<void>;
1994
+ protected readonly values: _angular_core.WritableSignal<string[]>;
1995
+ protected readonly focused: _angular_core.WritableSignal<boolean>;
1996
+ /** Tras limpiar en un estado demo, suprime el "valor" simulado. */
1997
+ private readonly suppressDemoValue;
1998
+ /** Último valor escrito por el CVA (por si llega antes que los slots). */
1999
+ private readonly pendingValue;
2000
+ private readonly baseIdState;
2001
+ private readonly slotInputs;
2002
+ private onChange;
2003
+ private onTouched;
2004
+ protected readonly isDisabled: _angular_core.Signal<boolean>;
2005
+ protected readonly isError: _angular_core.Signal<boolean>;
2006
+ protected readonly isFocused: _angular_core.Signal<boolean>;
2007
+ protected readonly hasAnyValue: _angular_core.Signal<boolean>;
2008
+ protected readonly demoHasValue: _angular_core.Signal<boolean>;
2009
+ protected get baseId(): string;
2010
+ protected get helpId(): string;
2011
+ protected get hint(): string | undefined;
2012
+ protected get showHint(): boolean;
2013
+ protected get helpIconTitle(): string | undefined;
2014
+ /** El botón de limpiar está activo (visible y operable). */
2015
+ protected get clearActive(): boolean;
2016
+ /** Se reserva el hueco del clear (visibility) para no desplazar los segmentos. */
2017
+ protected get clearReserved(): boolean;
2018
+ protected currentValue(i: number): string;
2019
+ /** flex del segmento: width > flex > (maxLength → base auto) > CSS (1 1 auto). */
2020
+ protected slotFlex(slot: IusMultiTextFieldSlot): string | null;
2021
+ /** width del segmento: solo cuando se deriva del maxLength. */
2022
+ protected slotWidth(slot: IusMultiTextFieldSlot): string | null;
2023
+ writeValue(value: string[] | null): void;
2024
+ registerOnChange(fn: (value: string[]) => void): void;
2025
+ registerOnTouched(fn: () => void): void;
2026
+ setDisabledState(isDisabled: boolean): void;
2027
+ private syncValues;
2028
+ private commit;
2029
+ private focusSlot;
2030
+ protected onSlotInput(i: number, event: Event): void;
2031
+ protected onSlotKeyDown(i: number, event: KeyboardEvent): void;
2032
+ protected onFocus(): void;
2033
+ protected onBlur(): void;
2034
+ protected clear(): void;
2035
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MultiTextFieldComponent, never>;
2036
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MultiTextFieldComponent, "ius-multi-text-field", never, { "slots": { "alias": "slots"; "required": false; }; "label": { "alias": "label"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showIconHelp": { "alias": "showIconHelp"; "required": false; }; "iconHelpTitle": { "alias": "iconHelpTitle"; "required": false; }; "iconHelpContent": { "alias": "iconHelpContent"; "required": false; }; "helpText": { "alias": "helpText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "showHelpText": { "alias": "showHelpText"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "error": { "alias": "error"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "state": { "alias": "state"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, { "valueChange": "valueChange"; "cleared": "cleared"; }, never, never, true, never>;
2037
+ static ngAcceptInputType_required: unknown;
2038
+ static ngAcceptInputType_showIconHelp: unknown;
2039
+ static ngAcceptInputType_showHelpText: unknown;
2040
+ static ngAcceptInputType_error: unknown;
2041
+ static ngAcceptInputType_disabled: unknown;
2042
+ }
2043
+
2044
+ /** Ancho máximo del diálogo — small 380 · medium 520 (default) · large 680px. */
2045
+ type IusModalSize = 'small' | 'medium' | 'large';
2046
+ /** Tono del círculo del ícono del header. */
2047
+ type IusModalIconTone = 'info' | 'success' | 'warning' | 'danger' | 'primary' | 'neutral';
2048
+ /** Motivo del cierre emitido por `closed`. */
2049
+ type IusModalCloseReason = 'close' | 'esc' | 'scrim' | 'secondary';
2050
+ /**
2051
+ * Marca el footer libre proyectado. Tiene prioridad sobre el footer de
2052
+ * conveniencia (`primaryLabel`/`secondaryLabel`):
2053
+ *
2054
+ * ```html
2055
+ * <ius-modal ...>
2056
+ * …cuerpo…
2057
+ * <div iusModalFooter>…acciones a medida…</div>
2058
+ * </ius-modal>
2059
+ * ```
2060
+ */
2061
+ declare class IusModalFooterDirective {
2062
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusModalFooterDirective, never>;
2063
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusModalFooterDirective, "[iusModalFooter]", never, {}, {}, never, never, true, never>;
2064
+ }
2065
+ /**
2066
+ * Modal — Ius Design v2.
2067
+ *
2068
+ * Diálogo centrado sobre un scrim que exige atención/decisión (confirmaciones,
2069
+ * avisos accionables) sin abandonar la pantalla. Se monta vía **CDK Overlay** en
2070
+ * `document.body` (no acepta `container`): portal + **scroll-lock** del fondo +
2071
+ * **focus-trap** dentro (`cdkTrapFocus`). `Esc`/scrim cierran (configurable).
2072
+ * `role="dialog"` `aria-modal="true"`.
2073
+ *
2074
+ * Compone `ius-button` (footer) e `ius-icon-button` (cerrar) — no introduce
2075
+ * controles propios. Para tareas con varios campos usar Drawer; para avisos no
2076
+ * bloqueantes usar Alert/Toast.
2077
+ *
2078
+ */
2079
+ declare class ModalComponent implements AfterViewInit, OnDestroy {
2080
+ private readonly overlay;
2081
+ private readonly viewContainerRef;
2082
+ /** Template con scrim + diálogo; se portalea al overlay al abrir. */
2083
+ private tpl;
2084
+ /** Footer libre proyectado (`[iusModalFooter]`). Si existe, gana al de conveniencia. */
2085
+ protected customFooter?: IusModalFooterDirective;
2086
+ private _open;
2087
+ /** Apertura controlada. */
2088
+ set open(value: boolean);
2089
+ get open(): boolean;
2090
+ /** Ancho máximo (380·520·680; ≤480px full-width). */
2091
+ size: IusModalSize;
2092
+ /** Título del header. */
2093
+ title?: string;
2094
+ /** Descripción breve bajo el título. */
2095
+ description?: string;
2096
+ /** Ligadura Material Symbols al inicio del header (círculo suave del tono). */
2097
+ icon?: string;
2098
+ /** Tono del círculo del ícono. */
2099
+ iconTone: IusModalIconTone;
2100
+ /** Botón de cerrar (×) en el header. */
2101
+ showClose: boolean;
2102
+ /** Texto del botón primario de conveniencia. */
2103
+ primaryLabel?: string;
2104
+ /** Loading del primario. */
2105
+ primaryLoading: boolean;
2106
+ /** Deshabilita el primario. */
2107
+ primaryDisabled: boolean;
2108
+ /** Acción destructiva: el primario de conveniencia usa `variant="danger"` (rojo). */
2109
+ destructive: boolean;
2110
+ /** Texto del botón secundario. `null` lo oculta. */
2111
+ secondaryLabel: string | null;
2112
+ /** Divisores entre header/body/footer. */
2113
+ dividers: boolean;
2114
+ /** Cerrar al hacer clic en el scrim. */
2115
+ closeOnScrim: boolean;
2116
+ /** Cerrar con Escape. */
2117
+ closeOnEsc: boolean;
2118
+ /** z-index del scrim. */
2119
+ zIndex: number;
2120
+ /** Etiqueta accesible si no hay `title`. */
2121
+ ariaLabel?: string;
2122
+ /** Cierre con el motivo (`onClose` del golden). */
2123
+ readonly closed: EventEmitter<IusModalCloseReason>;
2124
+ /** Clic en el primario de conveniencia (`onPrimary`). */
2125
+ readonly primary: EventEmitter<MouseEvent>;
2126
+ /** Clic en el secundario de conveniencia (`onSecondary`). Si nadie lo escucha, cierra. */
2127
+ readonly secondary: EventEmitter<void>;
2128
+ private overlayRef;
2129
+ private keydownSub;
2130
+ private viewReady;
2131
+ protected get hasHead(): boolean;
2132
+ protected get iconColors(): {
2133
+ bg: string;
2134
+ fg: string;
2135
+ };
2136
+ protected get showSecondary(): boolean;
2137
+ /** Footer de conveniencia sólo si no hay footer libre y hay algo que mostrar. */
2138
+ protected get hasConvenienceFooter(): boolean;
2139
+ ngAfterViewInit(): void;
2140
+ ngOnDestroy(): void;
2141
+ private sync;
2142
+ private attach;
2143
+ private detach;
2144
+ protected onScrimMouseDown(event: MouseEvent): void;
2145
+ protected onCloseClick(): void;
2146
+ protected onPrimary(event: MouseEvent): void;
2147
+ protected onSecondary(): void;
2148
+ private emitClose;
2149
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalComponent, never>;
2150
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "ius-modal", never, { "open": { "alias": "open"; "required": false; }; "size": { "alias": "size"; "required": false; }; "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconTone": { "alias": "iconTone"; "required": false; }; "showClose": { "alias": "showClose"; "required": false; }; "primaryLabel": { "alias": "primaryLabel"; "required": false; }; "primaryLoading": { "alias": "primaryLoading"; "required": false; }; "primaryDisabled": { "alias": "primaryDisabled"; "required": false; }; "destructive": { "alias": "destructive"; "required": false; }; "secondaryLabel": { "alias": "secondaryLabel"; "required": false; }; "dividers": { "alias": "dividers"; "required": false; }; "closeOnScrim": { "alias": "closeOnScrim"; "required": false; }; "closeOnEsc": { "alias": "closeOnEsc"; "required": false; }; "zIndex": { "alias": "zIndex"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, { "closed": "closed"; "primary": "primary"; "secondary": "secondary"; }, ["customFooter"], ["*", "[iusModalFooter]"], true, never>;
2151
+ static ngAcceptInputType_open: unknown;
2152
+ static ngAcceptInputType_showClose: unknown;
2153
+ static ngAcceptInputType_primaryLoading: unknown;
2154
+ static ngAcceptInputType_primaryDisabled: unknown;
2155
+ static ngAcceptInputType_destructive: unknown;
2156
+ static ngAcceptInputType_dividers: unknown;
2157
+ static ngAcceptInputType_closeOnScrim: unknown;
2158
+ static ngAcceptInputType_closeOnEsc: unknown;
2159
+ static ngAcceptInputType_zIndex: unknown;
2160
+ }
2161
+
2162
+ /**
2163
+ * Rol tipográfico → clase de escala (`typography.css`). `body` es alias de
2164
+ * `body-base`. Mapa exacto en VARIANT_CLASS/DEFAULT_TAG.
2165
+ */
2166
+ type IusTextVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'body-lg' | 'emphasis-lg' | 'body-base' | 'emphasis-base' | 'body' | 'caption' | 'body-sm' | 'label' | 'overline';
2167
+ /**
2168
+ * Alias de color de texto → `--ius-text-*`. `danger`→`--ius-text-error`,
2169
+ * `inverse`→`--ius-text-on-primary`.
2170
+ */
2171
+ type IusTextColor = 'primary' | 'secondary' | 'tertiary' | 'disabled' | 'inverse' | 'success' | 'danger' | 'warning' | 'info' | 'link';
2172
+ type IusTextWeight = 'regular' | 'medium' | 'bold';
2173
+ type IusTextAlign = 'left' | 'center' | 'right' | 'justify';
2174
+ /**
2175
+ * Tag polimórfico soportado. Adaptación Angular del `as` (React acepta cualquier
2176
+ * `keyof JSX.IntrinsicElements`; aquí un set finito para elegir el template, tal
2177
+ * como recomienda la ng-spec §3). Cubre los tags del sistema + inline comunes.
2178
+ */
2179
+ type IusTextTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'p' | 'span' | 'label' | 'div' | 'strong' | 'em' | 'small';
2180
+ /**
2181
+ * Text — Ius Design v2. Primitiva tipográfica (display-only, sin estado).
2182
+ *
2183
+ * Wrapper delgado sobre la escala de `typography.css`: mapea `variant` → clase y
2184
+ * expone `color / weight / as / align / italic / truncate / tabularNums` con
2185
+ * tokens `--ius-*` (cero valores crudos). Contrato único para todo texto plano.
2186
+ *
2187
+ * El host `ius-text` usa `display: contents`, así que no genera caja propia: el
2188
+ * tag renderizado (h1…h5 / p / span / label…) se comporta como hijo directo.
2189
+ *
2190
+ * Port completo: los 14 variants mapean a su clase real de `typography.css`
2191
+ * (incl. `.ius-label`/`.ius-overline`) y los 10 colores a su token `--ius-text-*`
2192
+ * (incl. `--ius-text-warning`/`--ius-text-info`), sincronizados desde Claude Design.
2193
+ *
2194
+ * Fuente de verdad: `components/data-display/Text/Text.jsx` + `Text.d.ts`
2195
+ * (contrato en `Text.ng-spec.md` §4).
2196
+ */
2197
+ declare class TextComponent {
2198
+ /** Rol tipográfico → clase de escala + tag por defecto. */
2199
+ variant: IusTextVariant;
2200
+ /** Color semántico (alias → `--ius-text-*`). Sin valor: hereda el de la clase. */
2201
+ color?: IusTextColor;
2202
+ /** Peso: override del peso por defecto del variant → `--ius-fw-*`. */
2203
+ weight?: IusTextWeight;
2204
+ /** Tag polimórfico: override del tag semántico por defecto del variant. */
2205
+ as?: IusTextTag;
2206
+ /** Alineación (`text-align`). */
2207
+ align?: IusTextAlign;
2208
+ /** Itálico (clase modificadora en body-base/caption/body-sm; inline en el resto). */
2209
+ italic: boolean;
2210
+ /** Trunca a una línea con elipsis. */
2211
+ truncate: boolean;
2212
+ /** Números tabulares (montos/radicados es-CO). */
2213
+ tabularNums: boolean;
2214
+ /** `for` del `<label>` (sólo aplica cuando el tag renderizado es `label`). */
2215
+ for?: string;
2216
+ /** Tag efectivo (as > default del variant > span). */
2217
+ protected get tag(): IusTextTag;
2218
+ private get variantClass();
2219
+ /** `ius-text` base + clase de escala (+ modificador itálico si aplica). */
2220
+ protected get klass(): string;
2221
+ /** Overrides por token (color/weight/align/italic-inline/tabular/truncate). */
2222
+ protected get styleObject(): Record<string, string>;
2223
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextComponent, never>;
2224
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextComponent, "ius-text", never, { "variant": { "alias": "variant"; "required": false; }; "color": { "alias": "color"; "required": false; }; "weight": { "alias": "weight"; "required": false; }; "as": { "alias": "as"; "required": false; }; "align": { "alias": "align"; "required": false; }; "italic": { "alias": "italic"; "required": false; }; "truncate": { "alias": "truncate"; "required": false; }; "tabularNums": { "alias": "tabularNums"; "required": false; }; "for": { "alias": "for"; "required": false; }; }, {}, never, ["*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"], true, never>;
2225
+ static ngAcceptInputType_italic: unknown;
2226
+ static ngAcceptInputType_truncate: unknown;
2227
+ static ngAcceptInputType_tabularNums: unknown;
2228
+ }
2229
+
2230
+ /** Degradado base según el fondo. */
2231
+ type IusLoadingMarkSurface = 'light' | 'dark';
2232
+ /**
2233
+ *
2234
+ * Cargador de **identidad** Litigiovirtual: tres fichas se deslizan por el
2235
+ * cuadrado mientras el conjunto gira y un **cometa** de luz cian orbita el
2236
+ * contorno sobre el degradado base navy→cian. Para splash, arranque y esperas
2237
+ * largas donde la marca debe estar presente. Para una espera neutra/compacta
2238
+ * dentro de la UI botón, fila, panel, usar Loading/CircularProgress; este no
2239
+ * lleva etiqueta ni se incrusta en controles.
2240
+ *
2241
+ */
2242
+ declare class LoadingMarkComponent {
2243
+ /** Lado del cuadro en px. */
2244
+ size: number;
2245
+ /** `light` navy sólido (default) · `dark` navy→cian sobre superficie navy. */
2246
+ surface: IusLoadingMarkSurface;
2247
+ /** Congela la animación (figura estática). También respeta reduced-motion. */
2248
+ paused: boolean;
2249
+ /** Etiqueta accesible. */
2250
+ ariaLabel: string;
2251
+ private readonly id;
2252
+ protected readonly baseId: string;
2253
+ protected readonly glowId: string;
2254
+ protected readonly softId: string;
2255
+ protected readonly maskId: string;
2256
+ /** Parada inicial del degradado base (siempre navy). */
2257
+ protected get baseFrom(): string;
2258
+ /** Parada final: navy en `light`; abre a `--ius-primary-600` en `dark`. */
2259
+ protected get baseTo(): string;
2260
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadingMarkComponent, never>;
2261
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoadingMarkComponent, "ius-loading-mark", never, { "size": { "alias": "size"; "required": false; }; "surface": { "alias": "surface"; "required": false; }; "paused": { "alias": "paused"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, {}, never, never, true, never>;
2262
+ static ngAcceptInputType_size: unknown;
2263
+ static ngAcceptInputType_paused: unknown;
2264
+ }
2265
+
2266
+ /** Escala del sistema — small ~34 · medium ~40 (default) · large ~48px. */
2267
+ type IusSegmentedSize = 'small' | 'medium' | 'large';
2268
+ /** `subtle` = pastilla blanca elevada (default) · `solid` = pastilla navy de marca. */
2269
+ type IusSegmentedVariant = 'subtle' | 'solid';
2270
+ /** Opción del control (2–5, cortas, todas visibles). */
2271
+ interface SegmentedOption {
2272
+ /** Valor único (lo que recibe `valueChange`). */
2273
+ value: string;
2274
+ /** Etiqueta visible (omitible en `iconOnly`). */
2275
+ label?: string;
2276
+ /** Ligadura Material Symbols Rounded. */
2277
+ icon?: string;
2278
+ /** Etiqueta accesible cuando `iconOnly` oculta el texto. */
2279
+ ariaLabel?: string;
2280
+ title?: string;
2281
+ /** Deshabilita sólo esta opción. */
2282
+ disabled?: boolean;
2283
+ }
2284
+ /**
2285
+ * SegmentedControl — Ius Design v2.
2286
+ *
2287
+ * Selector **único** de pocas opciones cortas, mutuamente excluyentes y **todas
2288
+ * visibles a la vez** (Mes/Semana/Día, filtros de estado, conmutadores de modo).
2289
+ * Para 0–1 opción → Switch; para muchas/largas → Select; para acciones → Button.
2290
+ *
2291
+ * `role="radiogroup"` + `role="radio"` con `aria-checked`; navegación con
2292
+ * ←/→/↑/↓/Home/End (mueve foco y selección) y roving `tabindex`. Implementa
2293
+ * `ControlValueAccessor` (`string`) y además soporta `[(value)]` directo.
2294
+ *
2295
+ * Fuente de verdad: `components/inputs/SegmentedControl/SegmentedControl.jsx` + `.d.ts`.
2296
+ */
2297
+ declare class SegmentedControlComponent implements ControlValueAccessor {
2298
+ /** Opciones mutuamente excluyentes (2–5 cortas; todas visibles). */
2299
+ options: SegmentedOption[];
2300
+ /** Escala del sistema. */
2301
+ size: IusSegmentedSize;
2302
+ /** Jerarquía visual de la pastilla seleccionada. */
2303
+ variant: IusSegmentedVariant;
2304
+ /** Ocupa todo el ancho, repartiendo las opciones por igual. */
2305
+ fullWidth: boolean;
2306
+ /** Sólo íconos (oculta labels; usa ariaLabel/label como título accesible). */
2307
+ iconOnly: boolean;
2308
+ /** Etiqueta accesible del grupo. */
2309
+ ariaLabel?: string;
2310
+ /** `name` de los radios. */
2311
+ name?: string;
2312
+ private readonly valueState;
2313
+ /** Valor seleccionado (controlado / CVA). */
2314
+ set value(v: string | undefined);
2315
+ get value(): string | undefined;
2316
+ private readonly disabledState;
2317
+ /** Deshabilita todo el control. */
2318
+ set disabled(v: boolean);
2319
+ get disabled(): boolean;
2320
+ /** Cambio de selección (original `onChange`). Habilita `[(value)]`. */
2321
+ readonly valueChange: EventEmitter<string>;
2322
+ protected readonly selected: _angular_core.Signal<string | undefined>;
2323
+ private readonly optRefs;
2324
+ private onChange;
2325
+ private onTouched;
2326
+ writeValue(value: string): void;
2327
+ registerOnChange(fn: (value: string) => void): void;
2328
+ registerOnTouched(fn: () => void): void;
2329
+ setDisabledState(isDisabled: boolean): void;
2330
+ protected isEnabled(o: SegmentedOption): boolean;
2331
+ /** Roving tabindex (espejo del golden: seleccionado, o el primero si no hay valor). */
2332
+ protected tabIndexFor(o: SegmentedOption, index: number): number;
2333
+ private commit;
2334
+ private focusAndSelect;
2335
+ private focusByOffset;
2336
+ protected onOptionClick(o: SegmentedOption): void;
2337
+ protected onKeyDown(event: KeyboardEvent, index: number): void;
2338
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SegmentedControlComponent, never>;
2339
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SegmentedControlComponent, "ius-segmented-control", never, { "options": { "alias": "options"; "required": false; }; "size": { "alias": "size"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "iconOnly": { "alias": "iconOnly"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "name": { "alias": "name"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
2340
+ static ngAcceptInputType_fullWidth: unknown;
2341
+ static ngAcceptInputType_iconOnly: unknown;
2342
+ static ngAcceptInputType_disabled: unknown;
2343
+ }
2344
+
2345
+ /** Escala del campo — small ~34 · medium ~40 (default) · large ~48px. */
2346
+ type IusSelectSize = 'small' | 'medium' | 'large';
2347
+ /** Estado forzado — **solo demos/especímenes**. En producción usar `disabled`/`error`. */
2348
+ type IusSelectState = 'hover' | 'focused' | 'open' | 'error' | 'disabled';
2349
+ /** Valor escalar de una opción. */
2350
+ type IusSelectValue = string | number;
2351
+ /** Opción del desplegable (plana). */
2352
+ interface SelectOption {
2353
+ /** Valor único (lo que recibe `valueChange`). */
2354
+ value: IusSelectValue;
2355
+ /** Etiqueta visible. */
2356
+ label: string;
2357
+ /** Ícono Material Symbols Rounded a la izquierda de la opción. */
2358
+ icon?: string;
2359
+ /** Opción no seleccionable. */
2360
+ disabled?: boolean;
2361
+ }
2362
+ /** Grupo de opciones (encabezado de sección + opciones). */
2363
+ interface SelectOptionGroup {
2364
+ /** Encabezado de sección. */
2365
+ label: string;
2366
+ options: SelectOption[];
2367
+ }
2368
+ interface VisibleGroup {
2369
+ label: string | null;
2370
+ items: {
2371
+ opt: SelectOption;
2372
+ flatIndex: number;
2373
+ }[];
2374
+ }
2375
+ interface VisibleModel {
2376
+ groups: VisibleGroup[];
2377
+ flat: SelectOption[];
2378
+ }
2379
+ /**
2380
+ * Select — Ius Design v2.
2381
+ *
2382
+ * Campo desplegable que reúne el shell del **TextField** (label + required +
2383
+ * iconHelp + prefixIcon + sufix chevron + estados + helpText/errorText, `size`)
2384
+ * y abre un menú con **scroll**, **búsqueda en vivo** (caja dentro del menú) y
2385
+ * **selección única o múltiple**. Implementa `ControlValueAccessor` completo
2386
+ * (valor escalar en single / array en múltiple) y además soporta `[(value)]`.
2387
+ *
2388
+ * - Single: muestra la etiqueta elegida; la opción se resalta en azul (fill).
2389
+ * - Múltiple: chips removibles dentro del campo + check por opción elegida.
2390
+ *
2391
+ * Fuente de verdad: `components/inputs/Select/Select.jsx` + `.d.ts` + ng-spec.
2392
+ *
2393
+ * Notas del port a Angular:
2394
+ * - El shell `.ius-tf` del TextField está *scoped* (`:host`) en su componente,
2395
+ * así que su CSS se re-porta aquí (mismo patrón que el resto del monorepo).
2396
+ * - El golden compone `OptionItem` (filas) y `Chip` (chips de múltiple): ya
2397
+ * portados como `ius-option-item` / `ius-chip`, se componen aquí directamente
2398
+ * (sin CSS inlineado). Los chips de múltiple usan `ius-chip removable`.
2399
+ * - El menú se posiciona con `position: fixed` + medición manual (flip abajo/
2400
+ * arriba, iguala ancho del campo), espejo de `updatePosition` del golden.
2401
+ */
2402
+ declare class SelectComponent implements ControlValueAccessor, OnInit, OnDestroy {
2403
+ private readonly optionsState;
2404
+ /** Opciones planas o agrupadas por secciones. */
2405
+ set options(value: SelectOption[] | SelectOptionGroup[]);
2406
+ get options(): SelectOption[] | SelectOptionGroup[];
2407
+ private readonly multipleState;
2408
+ /** Permitir elegir varias opciones (chips + checks). */
2409
+ set multiple(value: boolean);
2410
+ get multiple(): boolean;
2411
+ private readonly sizeState;
2412
+ /** Escala del campo. */
2413
+ set size(value: IusSelectSize);
2414
+ get size(): IusSelectSize;
2415
+ private readonly disabledState;
2416
+ /** Estado deshabilitado. */
2417
+ set disabled(value: boolean);
2418
+ get disabled(): boolean;
2419
+ private readonly errorState;
2420
+ /** Estado de error (borde rojo + errorText). */
2421
+ set error(value: boolean);
2422
+ get error(): boolean;
2423
+ /** Estado forzado — **solo demos/especímenes** del DS. */
2424
+ protected readonly stateInput: _angular_core.WritableSignal<IusSelectState | undefined>;
2425
+ set state(value: IusSelectState | undefined);
2426
+ get state(): IusSelectState | undefined;
2427
+ private readonly openInput;
2428
+ private openControlled;
2429
+ /** Apertura controlada del menú. */
2430
+ set open(value: boolean);
2431
+ get open(): boolean;
2432
+ private readonly valueState;
2433
+ private hasExplicitValue;
2434
+ /** Valor controlado: escalar en single, array en múltiple (CVA / `[(value)]`). */
2435
+ set value(value: IusSelectValue | IusSelectValue[] | null | undefined);
2436
+ get value(): IusSelectValue | IusSelectValue[] | null;
2437
+ /** Texto del label (sobre el campo, con `:` final). */
2438
+ label?: string;
2439
+ /** Indicador de obligatorio (•). */
2440
+ required: boolean;
2441
+ /** Placeholder cuando no hay selección. */
2442
+ placeholder: string;
2443
+ /** Ícono Material Symbols a la izquierda del campo. */
2444
+ prefixIcon?: string;
2445
+ /** Mostrar la caja de búsqueda dentro del menú. */
2446
+ searchable: boolean;
2447
+ /** Placeholder de la caja de búsqueda. */
2448
+ searchPlaceholder: string;
2449
+ /** Mensaje cuando la búsqueda no arroja resultados. */
2450
+ emptyText: string;
2451
+ /** Opciones visibles antes de hacer scroll. */
2452
+ maxVisible: number;
2453
+ /** Texto de ayuda bajo el campo (estado normal). */
2454
+ helpText?: string;
2455
+ /** Texto de error bajo el campo (sustituye a `helpText` cuando `error`). */
2456
+ errorText?: string;
2457
+ /** Mostrar/ocultar el texto de ayuda. */
2458
+ showHelpText: boolean;
2459
+ /** Ícono de ayuda `?` junto al label. */
2460
+ showIconHelp: boolean;
2461
+ /** Título del contenido de ayuda. */
2462
+ iconHelpTitle?: string;
2463
+ /** Cuerpo del contenido de ayuda. */
2464
+ iconHelpContent?: string;
2465
+ /**
2466
+ * Mostrar el botón de limpiar (`cancel`). Solo aparece con valor y campo
2467
+ * habilitado. `false` lo oculta siempre.
2468
+ */
2469
+ showClear: boolean;
2470
+ /** Abrir el menú al montar (no controlado). */
2471
+ defaultOpen: boolean;
2472
+ /** Variante compacta (sin ancho mínimo, padding reducido). Usado por SelectNumber. */
2473
+ compact: boolean;
2474
+ /** Valor inicial no controlado. */
2475
+ defaultValue?: IusSelectValue | IusSelectValue[];
2476
+ /** `id` del campo (para el label). */
2477
+ id?: string;
2478
+ /** `name` del control. */
2479
+ name?: string;
2480
+ /** Cambio de valor (original `onChange`). Habilita `[(value)]`. */
2481
+ readonly valueChange: EventEmitter<IusSelectValue | IusSelectValue[] | null>;
2482
+ /** Al limpiar el campo (original `onClear`). */
2483
+ readonly cleared: EventEmitter<void>;
2484
+ /** Cambio de apertura del menú (original `onOpenChange`). */
2485
+ readonly openChange: EventEmitter<boolean>;
2486
+ private readonly internalOpen;
2487
+ protected readonly query: _angular_core.WritableSignal<string>;
2488
+ protected readonly activeIndex: _angular_core.WritableSignal<number>;
2489
+ protected readonly menuPos: _angular_core.WritableSignal<{
2490
+ x: number;
2491
+ y: number;
2492
+ width: number;
2493
+ placement: "bottom" | "top";
2494
+ }>;
2495
+ private readonly field;
2496
+ private readonly menu;
2497
+ private readonly search;
2498
+ protected readonly baseId: string;
2499
+ protected readonly helpId: string;
2500
+ private onChange;
2501
+ private onTouched;
2502
+ private raf;
2503
+ private readonly repositionBound;
2504
+ protected readonly isDisabled: _angular_core.Signal<boolean>;
2505
+ protected readonly isError: _angular_core.Signal<boolean>;
2506
+ protected readonly isOpen: _angular_core.Signal<boolean>;
2507
+ /** `data-focused` del host (espejo del golden): abierto, forzado o error. */
2508
+ protected readonly focusedAttr: _angular_core.Signal<true | null>;
2509
+ private readonly allFlat;
2510
+ protected readonly visible: _angular_core.Signal<VisibleModel>;
2511
+ protected readonly hasValue: _angular_core.Signal<boolean>;
2512
+ protected readonly valueArray: _angular_core.Signal<IusSelectValue[]>;
2513
+ protected readonly singleValue: _angular_core.Signal<IusSelectValue | null>;
2514
+ protected get hint(): string | undefined;
2515
+ protected get showHint(): boolean;
2516
+ protected get showClearComputed(): boolean;
2517
+ protected get helpIconTitle(): string | undefined;
2518
+ protected get listMaxH(): number;
2519
+ protected labelFor(val: IusSelectValue): string;
2520
+ protected isChosen(val: IusSelectValue): boolean;
2521
+ ngOnInit(): void;
2522
+ ngOnDestroy(): void;
2523
+ writeValue(value: IusSelectValue | IusSelectValue[] | null): void;
2524
+ registerOnChange(fn: (value: IusSelectValue | IusSelectValue[] | null) => void): void;
2525
+ registerOnTouched(fn: () => void): void;
2526
+ setDisabledState(isDisabled: boolean): void;
2527
+ private commit;
2528
+ protected handleSelect(opt: SelectOption): void;
2529
+ protected removeChip(val: IusSelectValue): void;
2530
+ protected clear(event: Event): void;
2531
+ protected toggleOpen(): void;
2532
+ private setOpen;
2533
+ protected onSearch(event: Event): void;
2534
+ private moveActive;
2535
+ protected onTriggerKeyDown(event: KeyboardEvent): void;
2536
+ protected onDocumentMouseDown(event: MouseEvent): void;
2537
+ protected onEscape(): void;
2538
+ private scheduleReposition;
2539
+ private reposition;
2540
+ private attachListeners;
2541
+ private teardownListeners;
2542
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectComponent, never>;
2543
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent, "ius-select", never, { "options": { "alias": "options"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "error": { "alias": "error"; "required": false; }; "state": { "alias": "state"; "required": false; }; "open": { "alias": "open"; "required": false; }; "value": { "alias": "value"; "required": false; }; "label": { "alias": "label"; "required": false; }; "required": { "alias": "required"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "emptyText": { "alias": "emptyText"; "required": false; }; "maxVisible": { "alias": "maxVisible"; "required": false; }; "helpText": { "alias": "helpText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "showHelpText": { "alias": "showHelpText"; "required": false; }; "showIconHelp": { "alias": "showIconHelp"; "required": false; }; "iconHelpTitle": { "alias": "iconHelpTitle"; "required": false; }; "iconHelpContent": { "alias": "iconHelpContent"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "defaultValue": { "alias": "defaultValue"; "required": false; }; "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; }, { "valueChange": "valueChange"; "cleared": "cleared"; "openChange": "openChange"; }, never, never, true, never>;
2544
+ static ngAcceptInputType_multiple: unknown;
2545
+ static ngAcceptInputType_disabled: unknown;
2546
+ static ngAcceptInputType_error: unknown;
2547
+ static ngAcceptInputType_open: unknown;
2548
+ static ngAcceptInputType_required: unknown;
2549
+ static ngAcceptInputType_searchable: unknown;
2550
+ static ngAcceptInputType_maxVisible: unknown;
2551
+ static ngAcceptInputType_showHelpText: unknown;
2552
+ static ngAcceptInputType_showIconHelp: unknown;
2553
+ static ngAcceptInputType_showClear: unknown;
2554
+ static ngAcceptInputType_defaultOpen: unknown;
2555
+ static ngAcceptInputType_compact: unknown;
2556
+ }
2557
+
2558
+ /**
2559
+ * Un paso del asistente.
2560
+ *
2561
+ * `content` (que en el golden React es un `ReactNode`) se resuelve en Angular
2562
+ * con un `TemplateRef` por paso (ng-spec §2 / §7): el consumidor declara un
2563
+ * `<ng-template>` por paso y lo pasa aquí.
2564
+ */
2565
+ interface WizardStep {
2566
+ /** Identificador opcional del paso. */
2567
+ key?: string;
2568
+ /** Nombre visible del paso (etiqueta "Paso X de N · label"). */
2569
+ label?: string;
2570
+ /** Contenido del paso (típicamente un formulario), como plantilla. */
2571
+ content?: TemplateRef<unknown> | null;
2572
+ }
2573
+ /** API que devuelve `createWizard(...)` y consumen `<ius-wizard>` y `<ius-wizard-nav>`. */
2574
+ interface WizardApi {
2575
+ /** Pasos del flujo. */
2576
+ readonly steps: WizardStep[];
2577
+ /** Total de pasos. */
2578
+ readonly total: number;
2579
+ /** Paso actual (1-based). Reactivo (signal-backed). */
2580
+ readonly step: number;
2581
+ /** Índice actual (0-based). */
2582
+ readonly index: number;
2583
+ /** Paso actual (`steps[index]`). */
2584
+ readonly current: WizardStep | null;
2585
+ /** `true` en el primer paso. */
2586
+ readonly isFirst: boolean;
2587
+ /** `true` en el último paso. */
2588
+ readonly isLast: boolean;
2589
+ /** Avanza un paso; en el último, dispara `onFinish`. */
2590
+ next(): void;
2591
+ /** Retrocede un paso (no baja de 1). */
2592
+ back(): void;
2593
+ /** Salta a un paso (1-based), o función `(prev) => next`. */
2594
+ goTo(next: number | ((prev: number) => number)): void;
2595
+ }
2596
+ interface UseWizardOptions {
2597
+ /** Pasos del flujo. */
2598
+ steps: WizardStep[];
2599
+ /** Paso inicial (no controlado). Default 1. */
2600
+ defaultStep?: number;
2601
+ /**
2602
+ * Paso inicial controlado (1-based). En el port Angular el estado siempre
2603
+ * vive en el controller (signal); pásalo para sembrar el paso inicial y
2604
+ * observa los cambios con `onStepChange` / fuérzalos con `goTo`.
2605
+ */
2606
+ step?: number;
2607
+ /** Cambio de paso (recibe el nuevo paso 1-based). */
2608
+ onStepChange?: (step: number) => void;
2609
+ /** Se dispara al pulsar "siguiente" en el último paso (cierre del flujo). */
2610
+ onFinish?: () => void;
2611
+ }
2612
+ /**
2613
+ * Controller de estado del Wizard — equivalente Angular del hook `Wizard.use`
2614
+ * de React (ng-spec §2). El paso vive en un `signal` interno, así que leer
2615
+ * `api.step` / `api.current` / `api.isLast` en una plantilla registra la
2616
+ * dependencia y refresca los componentes `OnPush` que consumen la `api`.
2617
+ */
2618
+ declare class WizardController implements WizardApi {
2619
+ readonly steps: WizardStep[];
2620
+ private readonly _step;
2621
+ /** Señal de solo lectura del paso (por si el consumidor la quiere directa). */
2622
+ readonly step$: Signal<number>;
2623
+ private readonly onStepChange?;
2624
+ private readonly onFinish?;
2625
+ constructor(options: UseWizardOptions);
2626
+ get total(): number;
2627
+ get step(): number;
2628
+ get index(): number;
2629
+ get current(): WizardStep | null;
2630
+ get isFirst(): boolean;
2631
+ get isLast(): boolean;
2632
+ goTo: (next: number | ((prev: number) => number)) => void;
2633
+ next: () => void;
2634
+ back: () => void;
2635
+ }
2636
+ /**
2637
+ * `createWizard(options)` — fábrica del estado del asistente (equivalente a
2638
+ * `Wizard.use(...)`). Devuelve la `WizardApi` que leen `<ius-wizard>` y
2639
+ * `<ius-wizard-nav>`.
2640
+ */
2641
+ declare function createWizard(options: UseWizardOptions): WizardApi;
2642
+
2643
+ /**
2644
+ * Wizard (body) — Ius Design v2.
2645
+ *
2646
+ * Cuerpo del asistente: indicador de progreso + etiqueta "Paso X de N · label"
2647
+ * + el contenido del paso activo. **Agnóstico del contenedor** — vive en el
2648
+ * body de un Drawer/Modal o de una página; el footer (`ius-wizard-nav`) lee la
2649
+ * misma `api`. Distinto del `Stepper` (indicador display-only).
2650
+ *
2651
+ * El estado lo gobierna el controller `createWizard(...)` (ver `wizard.ts`),
2652
+ * espejo del hook `Wizard.use` de React (ng-spec §2).
2653
+ *
2654
+ * Nota del port: el indicador por defecto del golden es `LinearProgressBar`
2655
+ * (aún no portado); aquí se inlinea su modo "steps" (`.ius-lpb`, fill/rest)
2656
+ * fiel al golden. Cuando exista `ius-linear-progress-bar`, reemplazar por
2657
+ * composición sin cambiar la API. `indicator` permite pasar un nodo propio.
2658
+ */
2659
+ declare class WizardComponent {
2660
+ /** API de `createWizard(...)`. */
2661
+ api: WizardApi;
2662
+ /** Muestra el indicador de progreso (por defecto la barra "steps"). */
2663
+ showIndicator: boolean;
2664
+ /** Indicador personalizado (reemplaza la barra por defecto). */
2665
+ indicator?: TemplateRef<unknown>;
2666
+ /** Muestra la etiqueta "Paso X de N · label". */
2667
+ showStepLabel: boolean;
2668
+ /** Palabra para "Paso". */
2669
+ stepWord: string;
2670
+ /** Palabra para "de". */
2671
+ ofWord: string;
2672
+ /** Porcentaje del indicador (step/total), espejo del modo stepped del LPB. */
2673
+ protected get percent(): number;
2674
+ protected get ariaNow(): number;
2675
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WizardComponent, never>;
2676
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WizardComponent, "ius-wizard", never, { "api": { "alias": "api"; "required": true; }; "showIndicator": { "alias": "showIndicator"; "required": false; }; "indicator": { "alias": "indicator"; "required": false; }; "showStepLabel": { "alias": "showStepLabel"; "required": false; }; "stepWord": { "alias": "stepWord"; "required": false; }; "ofWord": { "alias": "ofWord"; "required": false; }; }, {}, never, never, true, never>;
2677
+ static ngAcceptInputType_showIndicator: unknown;
2678
+ static ngAcceptInputType_showStepLabel: unknown;
2679
+ }
2680
+
2681
+ /**
2682
+ * WizardNav (footer) — Ius Design v2.
2683
+ *
2684
+ * Footer de navegación del asistente: **Atrás** (secondary, deshabilitado en el
2685
+ * primero — o `hideBackOnFirst` para ocultarlo) + **Siguiente** (primary, ícono
2686
+ * `arrow_forward`); en el último paso, Siguiente pasa a **Guardar**
2687
+ * (`finishDynamic` activa el modo dynamic loading → success del Button).
2688
+ *
2689
+ * Pensado para el slot `footer` del Drawer/Modal o el footer propio de una
2690
+ * página. Lee la misma `api` que `<ius-wizard>`. Compone `ius-button`.
2691
+ *
2692
+ * El handler final se pasa como `finishAction` (con `finishDynamic` debe
2693
+ * devolver una `Promise` para integrarse con el modo dynamic del Button);
2694
+ * además se emite el output `finish` (ng-spec §4).
2695
+ */
2696
+ declare class WizardNavComponent {
2697
+ /** API de `createWizard(...)`. */
2698
+ api: WizardApi;
2699
+ /** Etiqueta del botón atrás. */
2700
+ backLabel: string;
2701
+ /** Etiqueta del botón siguiente. */
2702
+ nextLabel: string;
2703
+ /** Etiqueta del botón final (último paso). */
2704
+ finishLabel: string;
2705
+ /** Ícono al final del botón siguiente. */
2706
+ nextIcon: string;
2707
+ /** El botón final usa el modo `dynamic` del Button (loading → success). */
2708
+ finishDynamic: boolean;
2709
+ /** Deshabilita "siguiente" (p. ej. validación del paso pendiente). */
2710
+ nextDisabled: boolean;
2711
+ /** Oculta el botón atrás en el primer paso (en vez de deshabilitarlo). */
2712
+ hideBackOnFirst: boolean;
2713
+ /**
2714
+ * Handler del botón final. Con `finishDynamic` debe devolver una `Promise`
2715
+ * (su resolución decide success/error del Button).
2716
+ */
2717
+ finishAction?: () => void | IusButtonActionResult | Promise<IusButtonActionResult | void>;
2718
+ /** Se dispara al pulsar el botón final (original `onFinish`). */
2719
+ readonly finish: EventEmitter<void>;
2720
+ /** `action` para el modo dynamic del Button: emite `finish` y espera el handler. */
2721
+ protected readonly runFinish: () => Promise<IusButtonActionResult | void>;
2722
+ /** Click del botón final en modo NO dynamic. */
2723
+ protected onFinishClick(): void;
2724
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WizardNavComponent, never>;
2725
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WizardNavComponent, "ius-wizard-nav", never, { "api": { "alias": "api"; "required": true; }; "backLabel": { "alias": "backLabel"; "required": false; }; "nextLabel": { "alias": "nextLabel"; "required": false; }; "finishLabel": { "alias": "finishLabel"; "required": false; }; "nextIcon": { "alias": "nextIcon"; "required": false; }; "finishDynamic": { "alias": "finishDynamic"; "required": false; }; "nextDisabled": { "alias": "nextDisabled"; "required": false; }; "hideBackOnFirst": { "alias": "hideBackOnFirst"; "required": false; }; "finishAction": { "alias": "finishAction"; "required": false; }; }, { "finish": "finish"; }, never, never, true, never>;
2726
+ static ngAcceptInputType_finishDynamic: unknown;
2727
+ static ngAcceptInputType_nextDisabled: unknown;
2728
+ static ngAcceptInputType_hideBackOnFirst: unknown;
2729
+ }
2730
+
2731
+ /** Eje con scroll. */
2732
+ type IusScrollAxis = 'y' | 'x' | 'both';
2733
+ /** Grosor de la barra — `thin` es alias de `small`. */
2734
+ type IusScrollSize = 'small' | 'medium' | 'large' | 'thin';
2735
+ /**
2736
+ * ScrollArea — Ius Design v2.
2737
+ *
2738
+ * Contenedor con scroll **canónico** del sistema: aplica la barra unificada
2739
+ * (utilidad global `.ius-scroll` de `tokens/scrollbar.css`) para que cualquier
2740
+ * área desplazable tenga el mismo thumb pill `neutral-4` (hover `neutral-5`,
2741
+ * track transparente) sin reescribir reglas `::-webkit-scrollbar`. **No** para
2742
+ * el scroll de toda la página (eso lo maneja el documento).
2743
+ *
2744
+ * Nota del port: el `as` polimórfico del golden no aplica — el host es siempre
2745
+ * `<ius-scroll-area>` (`.ius-sa`). El `viewRef` de React se expone como
2746
+ * `getViewport()` (equivalente a un `@ViewChild` del viewport).
2747
+ */
2748
+ declare class ScrollAreaComponent implements AfterViewInit, OnChanges, OnDestroy {
2749
+ /** Eje con scroll. */
2750
+ axis: IusScrollAxis;
2751
+ /** Grosor de barra; `thin` = alias de `small`. */
2752
+ size: IusScrollSize;
2753
+ /** Thumb solo visible en hover/foco (lienzos amplios). */
2754
+ autoHide: boolean;
2755
+ /** Máscara de gradiente en los bordes con scroll disponible. */
2756
+ fade: boolean;
2757
+ /** Límite que dispara el scroll vertical (número → px). */
2758
+ maxHeight?: number | string;
2759
+ /** Límite que dispara el scroll horizontal (número → px). */
2760
+ maxWidth?: number | string;
2761
+ /** Clase(s) extra para el viewport. */
2762
+ viewClassName?: string;
2763
+ /** Reenvía el evento nativo `scroll` del viewport (opcional, ng-spec §3). */
2764
+ readonly scrolled: EventEmitter<Event>;
2765
+ private readonly view;
2766
+ private ro;
2767
+ private readonly onScroll;
2768
+ /** Clases del viewport: base + barra unificada + variante de tamaño/autoHide. */
2769
+ protected get viewClasses(): string;
2770
+ protected get maxHeightCss(): string | null;
2771
+ protected get maxWidthCss(): string | null;
2772
+ private toCss;
2773
+ ngAfterViewInit(): void;
2774
+ ngOnChanges(): void;
2775
+ ngOnDestroy(): void;
2776
+ /** Acceso al viewport (equivalente al `viewRef` del golden). */
2777
+ getViewport(): HTMLElement | null;
2778
+ private updateFade;
2779
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollAreaComponent, never>;
2780
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrollAreaComponent, "ius-scroll-area", never, { "axis": { "alias": "axis"; "required": false; }; "size": { "alias": "size"; "required": false; }; "autoHide": { "alias": "autoHide"; "required": false; }; "fade": { "alias": "fade"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "maxWidth": { "alias": "maxWidth"; "required": false; }; "viewClassName": { "alias": "viewClassName"; "required": false; }; }, { "scrolled": "scrolled"; }, never, ["*"], true, never>;
2781
+ static ngAcceptInputType_autoHide: unknown;
2782
+ static ngAcceptInputType_fade: unknown;
2783
+ }
2784
+
2785
+ /** Tamaño de la fila — heredado del Select. small · medium (default) · large. */
2786
+ type IusOptionItemSize = 'small' | 'medium' | 'large';
2787
+ /**
2788
+ * Estado forzado — **solo demos/especímenes del DS**. En producción usar
2789
+ * `selected`/`multi`/`active`/`disabled`. Sobrescribe la interacción real.
2790
+ */
2791
+ type IusOptionItemState = 'idle' | 'hover' | 'pressed' | 'disabled' | 'selected' | 'selectedVar' | 'selectedHovered';
2792
+ /**
2793
+ * OptionItem — Ius Design.
2794
+ *
2795
+ * Átomo de **fila de opción** dentro del menú (MenuInput) del **Select** (y
2796
+ * SelectNumber, y cualquier lista de opciones del sistema). **No se usa suelto en
2797
+ * formularios** — es la pieza interna que renderiza cada opción. Cubre los 7
2798
+ * estados del especimen Figma: Default · Hovered · Pressed · Disabled · Selected
2799
+ * (multi, check circular al final) · Selected Var (single, relleno azul) ·
2800
+ * Selected Hovered.
2801
+ *
2802
+ * Regla de marca: `multi` + `selected` → check (Selected); single + `selected` →
2803
+ * relleno azul (Selected Var). `active` es el resaltado de navegación por teclado
2804
+ * (mismo fondo que hover) sin marcar la opción como elegida.
2805
+ *
2806
+ * Fuente de verdad: `components/inputs/OptionItem/OptionItem.jsx` + `.d.ts` +
2807
+ * `OptionItem.ng-spec.md`. Todo sale de tokens `--ius-*` (los px 6/11/22 son los
2808
+ * mismos valores crudos que fija el golden para el alto de fila y el disco del
2809
+ * check — excepción documentada por la fuente de verdad).
2810
+ */
2811
+ declare class OptionItemComponent {
2812
+ /** Texto de la opción. Alternativa a la proyección de contenido. */
2813
+ label?: string;
2814
+ /** Ícono Material Symbols a la izquierda (opcional). */
2815
+ icon?: string;
2816
+ /** La opción está elegida. */
2817
+ selected: boolean;
2818
+ /** Selección múltiple: con `selected` → check circular (si no, relleno azul). */
2819
+ multi: boolean;
2820
+ /** Resaltado de navegación por teclado (activa, sin elegir aún). */
2821
+ active: boolean;
2822
+ /** Opción no seleccionable. */
2823
+ disabled: boolean;
2824
+ /** Tamaño de la fila, heredado del Select. */
2825
+ size: IusOptionItemSize;
2826
+ /** Valor de la opción (para `role="option"` / aria). */
2827
+ value?: string | number;
2828
+ /** Estado forzado — **solo demos/especímenes**. */
2829
+ state?: IusOptionItemState;
2830
+ /** Al elegir la opción (original `onSelect`). */
2831
+ readonly selectClicked: EventEmitter<void>;
2832
+ /** ¿Hay un estado forzado activo (demo)? */
2833
+ protected get forced(): boolean;
2834
+ /** ¿La opción se ve como elegida (real o forzada)? */
2835
+ protected get isSelected(): boolean;
2836
+ /** ¿Elegida en modo múltiple (check) vs single (relleno)? */
2837
+ protected get isMultiSel(): boolean;
2838
+ /** Marca de elegido: `check` (multi) o `fill` (single). */
2839
+ protected get variant(): 'check' | 'fill';
2840
+ /** Deshabilitada (real o forzada). */
2841
+ protected get isDisabled(): boolean;
2842
+ /** ¿Mostrar el disco de check al final (solo multi elegido)? */
2843
+ protected get showCheck(): boolean;
2844
+ protected handleClick(): void;
2845
+ protected onMouseDown(event: MouseEvent): void;
2846
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OptionItemComponent, never>;
2847
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OptionItemComponent, "ius-option-item", never, { "label": { "alias": "label"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "multi": { "alias": "multi"; "required": false; }; "active": { "alias": "active"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "value": { "alias": "value"; "required": false; }; "state": { "alias": "state"; "required": false; }; }, { "selectClicked": "selectClicked"; }, never, ["*"], true, never>;
2848
+ static ngAcceptInputType_selected: unknown;
2849
+ static ngAcceptInputType_multi: unknown;
2850
+ static ngAcceptInputType_active: unknown;
2851
+ static ngAcceptInputType_disabled: unknown;
2852
+ }
2853
+
2854
+ /** Tamaño del chip — small ~24 · medium ~28 (default) · large ~32px (alineado a inputs). */
2855
+ type IusChipSize = 'small' | 'medium' | 'large';
2856
+ /** Estado forzado — **solo demos/especímenes del DS**. Sobrescribe la interacción real. */
2857
+ type IusChipState = 'idle' | 'hover' | 'disabled';
2858
+ /**
2859
+ * Chip — Ius Design.
2860
+ *
2861
+ * Etiqueta compacta tipo "pill" que representa un valor seleccionado. Dos modos:
2862
+ * - **Eliminable** (`removable`): relleno azul + botón × circular. Para inputs y
2863
+ * formularios (lo usan Select / CascaderSelect en multiselección) — cada chip es
2864
+ * un valor elegido que el usuario puede quitar.
2865
+ * - **No eliminable** (default): blanco con borde. Para vistas de solo lectura /
2866
+ * display.
2867
+ *
2868
+ * Tres estados (Default · Hovered · Disabled) y tres tamaños. Admite un ícono a la
2869
+ * izquierda. **No** es interactivo (no clickable/toggle) ni maneja color de estado
2870
+ * → para eso usar **Tag**.
2871
+ *
2872
+ * Fuente de verdad: `components/data-display/Chip/Chip.jsx` + `.d.ts` + ng-spec.
2873
+ * Todo sale de tokens `--ius-*`; los px de la pill (3/4/5 py, 8/10/12 px, 16/18/20
2874
+ * de la ×) son los valores que fija el golden para el alto por tamaño (excepción
2875
+ * documentada por la fuente de verdad).
2876
+ */
2877
+ declare class ChipComponent {
2878
+ /** Texto del chip. Alternativa a la proyección de contenido. */
2879
+ label?: string;
2880
+ /** Ícono Material Symbols a la izquierda (opcional). */
2881
+ icon?: string;
2882
+ /** Muestra el botón × y habilita quitar el chip (relleno azul). */
2883
+ removable: boolean;
2884
+ /** Tamaño de la pill. */
2885
+ size: IusChipSize;
2886
+ /** Deshabilitado (atenuado, × no funcional). */
2887
+ disabled: boolean;
2888
+ /** Estado forzado — **solo demos/especímenes**. */
2889
+ state?: IusChipState;
2890
+ /** aria-label del botón quitar. */
2891
+ removeLabel: string;
2892
+ /** Al pulsar la × (original `onRemove`). */
2893
+ readonly removed: EventEmitter<void>;
2894
+ /** Deshabilitado (real o forzado). */
2895
+ protected get isDisabled(): boolean;
2896
+ /** `data-state` solo cuando hay un estado forzado (≠ idle). */
2897
+ protected get forcedState(): IusChipState | null;
2898
+ protected handleRemove(event: MouseEvent): void;
2899
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChipComponent, never>;
2900
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChipComponent, "ius-chip", never, { "label": { "alias": "label"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "removable": { "alias": "removable"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "state": { "alias": "state"; "required": false; }; "removeLabel": { "alias": "removeLabel"; "required": false; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
2901
+ static ngAcceptInputType_removable: unknown;
2902
+ static ngAcceptInputType_disabled: unknown;
2903
+ }
2904
+
2905
+ type IusFlexDirection = 'row' | 'column';
2906
+ type IusFlexGap = 'none' | 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
2907
+ type IusFlexAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
2908
+ type IusFlexJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
2909
+ /**
2910
+ * Flex — primitivo de maquetación (ng-spec components/layout/Flex).
2911
+ *
2912
+ * Contenedor flexbox cuyo `gap` está RESTRINGIDO a la escala --ius-space-*
2913
+ * (no existe gap numérico libre: esa restricción es el punto del componente).
2914
+ * Reemplaza el `<div style="display:flex; gap:…">` a mano.
2915
+ *
2916
+ * Sin estilos propios: todas las reglas viven en la librería de estilos
2917
+ * (tokens.css › sección layout.css, clases .ius-flex + data-attrs) — este
2918
+ * componente es azúcar que emite la clase y los atributos.
2919
+ *
2920
+ * El `as` de la spec se resuelve con el selector de ATRIBUTO, sin nodo extra:
2921
+ * <nav ius-flex gap="sm">…</nav> · <ul ius-flex direction="column">…</ul>
2922
+ * La forma de elemento también es válida: <ius-flex gap="lg">…</ius-flex>.
2923
+ *
2924
+ * Solo estructura: no aporta cáscara de página (AppLayout), superficie (Card)
2925
+ * ni tipografía (Text). Sin outputs, sin estado, sin user-select.
2926
+ */
2927
+ declare class FlexComponent {
2928
+ /** Eje principal; 'column' = patrón stack. Solo emite data-dir en column. */
2929
+ direction: IusFlexDirection;
2930
+ /** Separación entre hijos — SOLO escala --ius-space-*. */
2931
+ gap: IusFlexGap;
2932
+ /** align-items; sin valor no se emite (default del navegador: stretch). */
2933
+ align?: IusFlexAlign;
2934
+ /** justify-content; sin valor no se emite (default: flex-start). */
2935
+ justify?: IusFlexJustify;
2936
+ /** flex-wrap: wrap (patrón cluster). */
2937
+ wrap: boolean;
2938
+ /** inline-flex en vez de flex (grupos que fluyen dentro de texto). */
2939
+ inline: boolean;
2940
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlexComponent, never>;
2941
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlexComponent, "ius-flex, [ius-flex]", never, { "direction": { "alias": "direction"; "required": false; }; "gap": { "alias": "gap"; "required": false; }; "align": { "alias": "align"; "required": false; }; "justify": { "alias": "justify"; "required": false; }; "wrap": { "alias": "wrap"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; }, {}, never, ["*"], true, never>;
2942
+ }
2943
+
2944
+ type IusDividerOrientation = 'horizontal' | 'vertical';
2945
+ type IusDividerVariant = 'solid' | 'dashed';
2946
+ type IusDividerTextAlign = 'start' | 'center' | 'end';
2947
+ /**
2948
+ * Divider — separador NEUTRO (ng-spec components/data-display/Divider).
2949
+ * Línea fina 1px --ius-neutral-3, horizontal (con etiqueta opcional proyectada)
2950
+ * o vertical (rellena el alto del contenedor). Para separadores con tono
2951
+ * semántico → Alert o borde propio. Sin outputs.
2952
+ *
2953
+ * Etiqueta: contenido proyectado (solo horizontal). textAlign mueve el trazo
2954
+ * corto (stub) al lado del título, como el golden.
2955
+ */
2956
+ declare class DividerComponent implements AfterViewInit {
2957
+ /** Eje; vertical rellena el alto del contenedor (sin etiqueta). */
2958
+ orientation: IusDividerOrientation;
2959
+ /** dashed = separación suave. */
2960
+ variant: IusDividerVariant;
2961
+ /** Alineación de la etiqueta (solo horizontal con etiqueta). */
2962
+ textAlign: IusDividerTextAlign;
2963
+ private labelWrap;
2964
+ protected readonly hasLabel: _angular_core.WritableSignal<boolean>;
2965
+ ngAfterViewInit(): void;
2966
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DividerComponent, never>;
2967
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DividerComponent, "ius-divider", never, { "orientation": { "alias": "orientation"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "textAlign": { "alias": "textAlign"; "required": false; }; }, {}, never, ["*"], true, never>;
2968
+ }
2969
+
2970
+ export { AlertComponent, AvatarComponent, ButtonComponent, CaptchaFieldComponent, CarouselComponent, CheckboxComponent, ChipComponent, CircularProgressComponent, CodeFieldComponent, CountdownComponent, CountdownRingComponent, DescriptionListComponent, DividerComponent, EleniaBubbleComponent, EleniaOrbComponent, EmptyStateComponent, FlexComponent, HeaderBarComponent, ILLUSTRATIONS, ILLUSTRATION_ALIAS, ILLUSTRATION_NAMES, IconButtonComponent, IllustrationComponent, IusAlertActionsDirective, IusAlertTrailingDirective, IusModalFooterDirective, IusTagPrefixDirective, IusTagSuffixDirective, LoadingComponent, LoadingMarkComponent, ModalComponent, MultiTextFieldComponent, NavUserComponent, ORB_PERIODS, OauthButtonComponent, OptionItemComponent, PopoverComponent, ScrollAreaComponent, SegmentedControlComponent, SelectComponent, ShowMoreComponent, StatusStateComponent, TagComponent, TextButtonComponent, TextComponent, TextFieldComponent, TooltipComponent, WizardComponent, WizardController, WizardNavComponent, createWizard, pose, poseIso, poseSpeaking, poseThinking, renderCubeSvg, resolveIllustration, voiceEnv };
2971
+ export type { AlertSize, AlertTone, AlertVariant, CountdownDirection, CountdownFormat, CountdownRingSize, CountdownRingTone, DescriptionListItem, DescriptionListLayout, DescriptionListSize, DescriptionListValueClick, IllustrationEntry, IllustrationName, IllustrationSize, IusAvatarColor, IusAvatarShape, IusAvatarSize, IusButtonActionResult, IusButtonSize, IusButtonStatus, IusButtonType, IusButtonVariant, IusCaptchaAppearance, IusCaptchaFieldHandle, IusCaptchaProvider, IusCaptchaSize, IusCaptchaState, IusCaptchaTheme, IusCarouselImage, IusCarouselImageInput, IusCarouselObjectFit, IusCarouselOrder, IusCarouselOverlay, IusCarouselTransition, IusCheckboxLabelPosition, IusCheckboxSize, IusChipSize, IusChipState, IusCircularProgressSize, IusCircularProgressTone, IusCodeFieldSize, IusDividerOrientation, IusDividerTextAlign, IusDividerVariant, IusEleniaBubblePosition, IusEleniaBubbleSize, IusEleniaOrbMood, IusEleniaOrbSurface, IusEmptyStateAction, IusEmptyStateSize, IusEmptyStateTone, IusEmptyStateVariant, IusFlexAlign, IusFlexDirection, IusFlexGap, IusFlexJustify, IusIconButtonShape, IusIconButtonSize, IusIconButtonVariant, IusLoadingMarkSurface, IusLoadingVariant, IusModalCloseReason, IusModalIconTone, IusModalSize, IusMultiTextFieldSize, IusMultiTextFieldSlot, IusMultiTextFieldState, IusNavUserAccount, IusNavUserLayout, IusNavUserUser, IusOAuthButtonSize, IusOAuthButtonType, IusOAuthProvider, IusOptionItemSize, IusOptionItemState, IusPopoverPadding, IusPopoverPlacement, IusPopoverTrigger, IusScrollAxis, IusScrollSize, IusSegmentedSize, IusSegmentedVariant, IusSelectSize, IusSelectState, IusSelectValue, IusShowMoreAlign, IusStatusKind, IusTagRole, IusTagShape, IusTagSize, IusTagState, IusTagTone, IusTagVariant, IusTextAlign, IusTextButtonSize, IusTextButtonType, IusTextColor, IusTextFieldSize, IusTextFieldType, IusTextTag, IusTextVariant, IusTextWeight, IusTooltipTrigger, OrbMood, OrbPose, SegmentedOption, SelectOption, SelectOptionGroup, UseWizardOptions, WizardApi, WizardStep };