@caribeng/ui 22.1.1 → 22.4.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 (305) hide show
  1. package/README.md +134 -12
  2. package/fesm2022/caribeng-ui-accordion.mjs +4 -4
  3. package/fesm2022/caribeng-ui-anchor.mjs +169 -0
  4. package/fesm2022/caribeng-ui-autocomplete.mjs +10 -8
  5. package/fesm2022/caribeng-ui-avatar.mjs +2 -2
  6. package/fesm2022/caribeng-ui-avatargroup.mjs +9 -3
  7. package/fesm2022/caribeng-ui-badge.mjs +8 -2
  8. package/fesm2022/caribeng-ui-blockui.mjs +12 -4
  9. package/fesm2022/caribeng-ui-breadcrumb.mjs +17 -7
  10. package/fesm2022/caribeng-ui-button.mjs +22 -2
  11. package/fesm2022/caribeng-ui-caribe-alert.mjs +5 -2
  12. package/fesm2022/caribeng-ui-caribe-animation-lottie.mjs +6 -3
  13. package/fesm2022/caribeng-ui-caribe-button-group.mjs +6 -3
  14. package/fesm2022/caribeng-ui-caribe-calendar.mjs +11 -6
  15. package/fesm2022/caribeng-ui-caribe-card-content.mjs +6 -3
  16. package/fesm2022/caribeng-ui-caribe-card-move.mjs +29 -7
  17. package/fesm2022/caribeng-ui-caribe-card-select.mjs +56 -14
  18. package/fesm2022/caribeng-ui-caribe-circle-loading.mjs +10 -7
  19. package/fesm2022/caribeng-ui-caribe-coachmark.mjs +42 -19
  20. package/fesm2022/caribeng-ui-caribe-data-table.mjs +15 -9
  21. package/fesm2022/caribeng-ui-caribe-dots-indicator.mjs +38 -5
  22. package/fesm2022/caribeng-ui-caribe-expansion-panel.mjs +16 -5
  23. package/fesm2022/caribeng-ui-caribe-fab-menu.mjs +56 -7
  24. package/fesm2022/caribeng-ui-caribe-file-download.mjs +68 -27
  25. package/fesm2022/caribeng-ui-caribe-file-select.mjs +22 -17
  26. package/fesm2022/caribeng-ui-caribe-float-menu.mjs +6 -3
  27. package/fesm2022/caribeng-ui-caribe-footer.mjs +8 -4
  28. package/fesm2022/caribeng-ui-caribe-header.mjs +6 -3
  29. package/fesm2022/caribeng-ui-caribe-icon-button.mjs +6 -3
  30. package/fesm2022/caribeng-ui-caribe-illustration.mjs +6 -3
  31. package/fesm2022/caribeng-ui-caribe-inline-alert.mjs +5 -2
  32. package/fesm2022/caribeng-ui-caribe-input-search.mjs +14 -10
  33. package/fesm2022/caribeng-ui-caribe-input-select.mjs +12 -10
  34. package/fesm2022/caribeng-ui-caribe-input-token.mjs +61 -11
  35. package/fesm2022/caribeng-ui-caribe-link.mjs +7 -2
  36. package/fesm2022/caribeng-ui-caribe-loader.mjs +8 -5
  37. package/fesm2022/caribeng-ui-caribe-modal.mjs +32 -16
  38. package/fesm2022/caribeng-ui-caribe-off-canvas.mjs +26 -12
  39. package/fesm2022/caribeng-ui-caribe-onboarding.mjs +44 -19
  40. package/fesm2022/caribeng-ui-caribe-pictogram.mjs +6 -3
  41. package/fesm2022/caribeng-ui-caribe-pop-over.mjs +34 -10
  42. package/fesm2022/caribeng-ui-caribe-preloader.mjs +9 -6
  43. package/fesm2022/caribeng-ui-caribe-progress-bar.mjs +5 -2
  44. package/fesm2022/caribeng-ui-caribe-shortcut.mjs +8 -3
  45. package/fesm2022/caribeng-ui-caribe-step-indicator.mjs +12 -5
  46. package/fesm2022/caribeng-ui-caribe-stroke.mjs +6 -3
  47. package/fesm2022/caribeng-ui-caribe-switch.mjs +5 -3
  48. package/fesm2022/caribeng-ui-caribe-tag-button.mjs +1 -1
  49. package/fesm2022/caribeng-ui-caribe-tracker.mjs +5 -2
  50. package/fesm2022/caribeng-ui-caribe-transaction-status.mjs +1 -1
  51. package/fesm2022/caribeng-ui-caribe-voucher.mjs +11 -8
  52. package/fesm2022/caribeng-ui-carousel.mjs +49 -14
  53. package/fesm2022/caribeng-ui-cascadeselect.mjs +22 -8
  54. package/fesm2022/caribeng-ui-chart.mjs +2601 -303
  55. package/fesm2022/caribeng-ui-chat.mjs +1303 -0
  56. package/fesm2022/caribeng-ui-chip.mjs +9 -4
  57. package/fesm2022/caribeng-ui-chips.mjs +9 -5
  58. package/fesm2022/caribeng-ui-code-block.mjs +332 -0
  59. package/fesm2022/caribeng-ui-colorpicker.mjs +107 -11
  60. package/fesm2022/caribeng-ui-command-palette.mjs +476 -0
  61. package/fesm2022/caribeng-ui-confirmdialog.mjs +140 -10
  62. package/fesm2022/caribeng-ui-confirmpopup.mjs +209 -9
  63. package/fesm2022/caribeng-ui-contextmenu.mjs +13 -6
  64. package/fesm2022/caribeng-ui-copy-button.mjs +230 -0
  65. package/fesm2022/caribeng-ui-dataview.mjs +214 -6
  66. package/fesm2022/caribeng-ui-datepicker.mjs +1630 -393
  67. package/fesm2022/caribeng-ui-descriptions.mjs +124 -0
  68. package/fesm2022/caribeng-ui-dialog.mjs +10 -7
  69. package/fesm2022/caribeng-ui-dock.mjs +58 -15
  70. package/fesm2022/caribeng-ui-drawer.mjs +17 -9
  71. package/fesm2022/caribeng-ui-dynamicdialog.mjs +210 -6
  72. package/fesm2022/caribeng-ui-editor.mjs +4413 -243
  73. package/fesm2022/caribeng-ui-empty.mjs +80 -0
  74. package/fesm2022/caribeng-ui-fieldset.mjs +2 -2
  75. package/fesm2022/caribeng-ui-file-card.mjs +136 -19
  76. package/fesm2022/caribeng-ui-fileupload.mjs +96 -19
  77. package/fesm2022/caribeng-ui-floatlabel.mjs +4 -2
  78. package/fesm2022/caribeng-ui-folder-card.mjs +132 -15
  79. package/fesm2022/caribeng-ui-galleria.mjs +76 -45
  80. package/fesm2022/caribeng-ui-image.mjs +52 -29
  81. package/fesm2022/caribeng-ui-inlinemessage.mjs +2 -2
  82. package/fesm2022/caribeng-ui-inplace.mjs +22 -6
  83. package/fesm2022/caribeng-ui-input-number.mjs +9 -7
  84. package/fesm2022/caribeng-ui-inputgroup.mjs +2 -2
  85. package/fesm2022/caribeng-ui-inputmask.mjs +22 -13
  86. package/fesm2022/caribeng-ui-inputotp.mjs +12 -6
  87. package/fesm2022/caribeng-ui-kanban.mjs +4612 -0
  88. package/fesm2022/caribeng-ui-kbd.mjs +122 -0
  89. package/fesm2022/caribeng-ui-keyfilter.mjs +72 -0
  90. package/fesm2022/caribeng-ui-listbox.mjs +13 -11
  91. package/fesm2022/caribeng-ui-megamenu.mjs +228 -32
  92. package/fesm2022/caribeng-ui-mentions.mjs +495 -0
  93. package/fesm2022/caribeng-ui-menu.mjs +18 -8
  94. package/fesm2022/caribeng-ui-menubar.mjs +17 -8
  95. package/fesm2022/caribeng-ui-message.mjs +13 -7
  96. package/fesm2022/caribeng-ui-metergroup.mjs +29 -11
  97. package/fesm2022/caribeng-ui-multiselect.mjs +399 -97
  98. package/fesm2022/caribeng-ui-orderlist.mjs +230 -11
  99. package/fesm2022/caribeng-ui-organizationchart.mjs +16 -15
  100. package/fesm2022/caribeng-ui-paginator.mjs +18 -15
  101. package/fesm2022/caribeng-ui-panel.mjs +11 -8
  102. package/fesm2022/caribeng-ui-panelmenu.mjs +14 -8
  103. package/fesm2022/caribeng-ui-password.mjs +8 -6
  104. package/fesm2022/caribeng-ui-pdfviewer.mjs +1553 -0
  105. package/fesm2022/caribeng-ui-phone-input.mjs +688 -0
  106. package/fesm2022/caribeng-ui-picklist.mjs +251 -14
  107. package/fesm2022/caribeng-ui-pricing.mjs +272 -75
  108. package/fesm2022/caribeng-ui-qrcode.mjs +564 -0
  109. package/fesm2022/caribeng-ui-rating.mjs +7 -3
  110. package/fesm2022/caribeng-ui-repeater.mjs +223 -0
  111. package/fesm2022/caribeng-ui-result.mjs +91 -0
  112. package/fesm2022/caribeng-ui-ripple.mjs +2 -0
  113. package/fesm2022/caribeng-ui-scrollpanel.mjs +6 -3
  114. package/fesm2022/caribeng-ui-scrolltop.mjs +9 -4
  115. package/fesm2022/caribeng-ui-select.mjs +379 -87
  116. package/fesm2022/caribeng-ui-selectbutton.mjs +2 -2
  117. package/fesm2022/caribeng-ui-sidebar.mjs +573 -0
  118. package/fesm2022/caribeng-ui-slider.mjs +171 -75
  119. package/fesm2022/caribeng-ui-speeddial.mjs +7 -4
  120. package/fesm2022/caribeng-ui-spinner.mjs +5 -2
  121. package/fesm2022/caribeng-ui-splitbutton.mjs +163 -0
  122. package/fesm2022/caribeng-ui-splitter.mjs +5 -2
  123. package/fesm2022/caribeng-ui-statistic.mjs +183 -0
  124. package/fesm2022/caribeng-ui-stepper.mjs +17 -7
  125. package/fesm2022/caribeng-ui-steps.mjs +6 -3
  126. package/fesm2022/caribeng-ui-table.mjs +716 -84
  127. package/fesm2022/caribeng-ui-tabmenu.mjs +13 -6
  128. package/fesm2022/caribeng-ui-tag.mjs +2 -2
  129. package/fesm2022/caribeng-ui-terminal.mjs +45 -9
  130. package/fesm2022/caribeng-ui-themetoggle.mjs +82 -0
  131. package/fesm2022/caribeng-ui-tieredmenu.mjs +113 -20
  132. package/fesm2022/caribeng-ui-timeline.mjs +175 -6
  133. package/fesm2022/caribeng-ui-toast.mjs +7 -4
  134. package/fesm2022/caribeng-ui-togglebutton.mjs +8 -6
  135. package/fesm2022/caribeng-ui-toolbar.mjs +6 -3
  136. package/fesm2022/caribeng-ui-tree.mjs +302 -6
  137. package/fesm2022/caribeng-ui-treeselect.mjs +26 -10
  138. package/fesm2022/caribeng-ui-treetable.mjs +269 -6
  139. package/fesm2022/caribeng-ui-virtualscroller.mjs +123 -10
  140. package/fesm2022/caribeng-ui.mjs +1216 -6
  141. package/package.json +93 -3
  142. package/schematics/collection.json +15 -0
  143. package/schematics/migrate-from-primeng/core-icons.json +1 -0
  144. package/schematics/migrate-from-primeng/icons.js +269 -0
  145. package/schematics/migrate-from-primeng/index.js +290 -0
  146. package/schematics/migrate-from-primeng/mappings/button.js +93 -0
  147. package/schematics/migrate-from-primeng/mappings/card.js +33 -0
  148. package/schematics/migrate-from-primeng/mappings/checkbox.js +44 -0
  149. package/schematics/migrate-from-primeng/mappings/confirm.js +221 -0
  150. package/schematics/migrate-from-primeng/mappings/datepicker.js +121 -0
  151. package/schematics/migrate-from-primeng/mappings/dialog.js +84 -0
  152. package/schematics/migrate-from-primeng/mappings/index.js +88 -0
  153. package/schematics/migrate-from-primeng/mappings/inputnumber.js +62 -0
  154. package/schematics/migrate-from-primeng/mappings/inputtext.js +60 -0
  155. package/schematics/migrate-from-primeng/mappings/menu.js +468 -0
  156. package/schematics/migrate-from-primeng/mappings/multiselect.js +49 -0
  157. package/schematics/migrate-from-primeng/mappings/radiobutton.js +22 -0
  158. package/schematics/migrate-from-primeng/mappings/rules.js +206 -0
  159. package/schematics/migrate-from-primeng/mappings/select.js +97 -0
  160. package/schematics/migrate-from-primeng/mappings/service-calls.js +100 -0
  161. package/schematics/migrate-from-primeng/mappings/table.js +613 -0
  162. package/schematics/migrate-from-primeng/mappings/tabs.js +225 -0
  163. package/schematics/migrate-from-primeng/mappings/tag.js +29 -0
  164. package/schematics/migrate-from-primeng/mappings/textarea.js +44 -0
  165. package/schematics/migrate-from-primeng/mappings/toast.js +173 -0
  166. package/schematics/migrate-from-primeng/mappings/toggleswitch.js +37 -0
  167. package/schematics/migrate-from-primeng/mappings/tooltip.js +44 -0
  168. package/schematics/migrate-from-primeng/mappings/types.js +10 -0
  169. package/schematics/migrate-from-primeng/report.js +79 -0
  170. package/schematics/migrate-from-primeng/schema.js +2 -0
  171. package/schematics/migrate-from-primeng/schema.json +34 -0
  172. package/schematics/migrate-from-primeng/template.js +387 -0
  173. package/schematics/migrate-from-primeng/todo.js +5 -0
  174. package/schematics/migrate-from-primeng/typescript.js +442 -0
  175. package/schematics/migrate-from-primeng/workspace.js +117 -0
  176. package/schematics/ng-add/index.js +140 -0
  177. package/schematics/ng-add/schema.js +2 -0
  178. package/schematics/ng-add/schema.json +66 -0
  179. package/types/caribeng-ui-anchor.d.ts +50 -0
  180. package/types/caribeng-ui-autocomplete.d.ts +4 -2
  181. package/types/caribeng-ui-avatargroup.d.ts +3 -1
  182. package/types/caribeng-ui-badge.d.ts +3 -1
  183. package/types/caribeng-ui-blockui.d.ts +9 -4
  184. package/types/caribeng-ui-breadcrumb.d.ts +11 -0
  185. package/types/caribeng-ui-button.d.ts +9 -1
  186. package/types/caribeng-ui-caribe-alert.d.ts +3 -0
  187. package/types/caribeng-ui-caribe-animation-lottie.d.ts +4 -1
  188. package/types/caribeng-ui-caribe-button-group.d.ts +4 -1
  189. package/types/caribeng-ui-caribe-calendar.d.ts +5 -1
  190. package/types/caribeng-ui-caribe-card-content.d.ts +4 -1
  191. package/types/caribeng-ui-caribe-card-move.d.ts +13 -13
  192. package/types/caribeng-ui-caribe-card-select.d.ts +10 -1
  193. package/types/caribeng-ui-caribe-circle-loading.d.ts +4 -1
  194. package/types/caribeng-ui-caribe-coachmark.d.ts +6 -0
  195. package/types/caribeng-ui-caribe-data-table.d.ts +7 -2
  196. package/types/caribeng-ui-caribe-dots-indicator.d.ts +9 -0
  197. package/types/caribeng-ui-caribe-expansion-panel.d.ts +7 -10
  198. package/types/caribeng-ui-caribe-fab-menu.d.ts +10 -1
  199. package/types/caribeng-ui-caribe-file-download.d.ts +8 -10
  200. package/types/caribeng-ui-caribe-file-select.d.ts +7 -1
  201. package/types/caribeng-ui-caribe-float-menu.d.ts +4 -1
  202. package/types/caribeng-ui-caribe-header.d.ts +3 -0
  203. package/types/caribeng-ui-caribe-icon-button.d.ts +4 -1
  204. package/types/caribeng-ui-caribe-illustration.d.ts +4 -1
  205. package/types/caribeng-ui-caribe-inline-alert.d.ts +3 -0
  206. package/types/caribeng-ui-caribe-input-search.d.ts +4 -2
  207. package/types/caribeng-ui-caribe-input-select.d.ts +4 -2
  208. package/types/caribeng-ui-caribe-input-token.d.ts +16 -1
  209. package/types/caribeng-ui-caribe-link.d.ts +3 -0
  210. package/types/caribeng-ui-caribe-loader.d.ts +4 -1
  211. package/types/caribeng-ui-caribe-modal.d.ts +7 -10
  212. package/types/caribeng-ui-caribe-off-canvas.d.ts +6 -1
  213. package/types/caribeng-ui-caribe-onboarding.d.ts +6 -0
  214. package/types/caribeng-ui-caribe-pictogram.d.ts +4 -1
  215. package/types/caribeng-ui-caribe-pop-over.d.ts +7 -10
  216. package/types/caribeng-ui-caribe-preloader.d.ts +4 -1
  217. package/types/caribeng-ui-caribe-progress-bar.d.ts +3 -0
  218. package/types/caribeng-ui-caribe-shortcut.d.ts +3 -1
  219. package/types/caribeng-ui-caribe-step-indicator.d.ts +6 -0
  220. package/types/caribeng-ui-caribe-stroke.d.ts +4 -1
  221. package/types/caribeng-ui-caribe-switch.d.ts +3 -1
  222. package/types/caribeng-ui-caribe-tracker.d.ts +3 -0
  223. package/types/caribeng-ui-caribe-voucher.d.ts +5 -2
  224. package/types/caribeng-ui-carousel.d.ts +10 -1
  225. package/types/caribeng-ui-cascadeselect.d.ts +7 -2
  226. package/types/caribeng-ui-chart.d.ts +471 -44
  227. package/types/caribeng-ui-chat.d.ts +299 -0
  228. package/types/caribeng-ui-chip.d.ts +6 -0
  229. package/types/caribeng-ui-chips.d.ts +6 -2
  230. package/types/caribeng-ui-code-block.d.ts +65 -0
  231. package/types/caribeng-ui-colorpicker.d.ts +8 -2
  232. package/types/caribeng-ui-command-palette.d.ts +133 -0
  233. package/types/caribeng-ui-confirmdialog.d.ts +57 -6
  234. package/types/caribeng-ui-confirmpopup.d.ts +74 -5
  235. package/types/caribeng-ui-contextmenu.d.ts +11 -1
  236. package/types/caribeng-ui-copy-button.d.ts +90 -0
  237. package/types/caribeng-ui-dataview.d.ts +65 -5
  238. package/types/caribeng-ui-datepicker.d.ts +186 -21
  239. package/types/caribeng-ui-descriptions.d.ts +63 -0
  240. package/types/caribeng-ui-dialog.d.ts +4 -1
  241. package/types/caribeng-ui-dock.d.ts +17 -2
  242. package/types/caribeng-ui-drawer.d.ts +7 -2
  243. package/types/caribeng-ui-dynamicdialog.d.ts +93 -3
  244. package/types/caribeng-ui-editor.d.ts +486 -13
  245. package/types/caribeng-ui-empty.d.ts +34 -0
  246. package/types/caribeng-ui-file-card.d.ts +28 -3
  247. package/types/caribeng-ui-fileupload.d.ts +27 -4
  248. package/types/caribeng-ui-folder-card.d.ts +31 -6
  249. package/types/caribeng-ui-galleria.d.ts +9 -0
  250. package/types/caribeng-ui-image.d.ts +10 -0
  251. package/types/caribeng-ui-inplace.d.ts +8 -0
  252. package/types/caribeng-ui-input-number.d.ts +3 -1
  253. package/types/caribeng-ui-inputmask.d.ts +8 -1
  254. package/types/caribeng-ui-inputotp.d.ts +7 -2
  255. package/types/caribeng-ui-kanban.d.ts +783 -0
  256. package/types/caribeng-ui-kbd.d.ts +36 -0
  257. package/types/caribeng-ui-keyfilter.d.ts +30 -0
  258. package/types/caribeng-ui-listbox.d.ts +5 -3
  259. package/types/caribeng-ui-megamenu.d.ts +37 -2
  260. package/types/caribeng-ui-mentions.d.ts +127 -0
  261. package/types/caribeng-ui-menu.d.ts +14 -2
  262. package/types/caribeng-ui-menubar.d.ts +12 -1
  263. package/types/caribeng-ui-message.d.ts +5 -0
  264. package/types/caribeng-ui-metergroup.d.ts +9 -1
  265. package/types/caribeng-ui-multiselect.d.ts +71 -10
  266. package/types/caribeng-ui-orderlist.d.ts +58 -6
  267. package/types/caribeng-ui-organizationchart.d.ts +7 -1
  268. package/types/caribeng-ui-paginator.d.ts +3 -0
  269. package/types/caribeng-ui-panel.d.ts +3 -0
  270. package/types/caribeng-ui-panelmenu.d.ts +11 -1
  271. package/types/caribeng-ui-password.d.ts +4 -2
  272. package/types/caribeng-ui-pdfviewer.d.ts +258 -0
  273. package/types/caribeng-ui-phone-input.d.ts +168 -0
  274. package/types/caribeng-ui-picklist.d.ts +67 -7
  275. package/types/caribeng-ui-pricing.d.ts +49 -9
  276. package/types/caribeng-ui-qrcode.d.ts +88 -0
  277. package/types/caribeng-ui-rating.d.ts +6 -2
  278. package/types/caribeng-ui-repeater.d.ts +79 -0
  279. package/types/caribeng-ui-result.d.ts +35 -0
  280. package/types/caribeng-ui-scrollpanel.d.ts +4 -1
  281. package/types/caribeng-ui-scrolltop.d.ts +4 -1
  282. package/types/caribeng-ui-select.d.ts +73 -9
  283. package/types/caribeng-ui-sidebar.d.ts +167 -0
  284. package/types/caribeng-ui-slider.d.ts +63 -10
  285. package/types/caribeng-ui-speeddial.d.ts +5 -2
  286. package/types/caribeng-ui-spinner.d.ts +3 -0
  287. package/types/caribeng-ui-splitbutton.d.ts +49 -0
  288. package/types/caribeng-ui-splitter.d.ts +3 -0
  289. package/types/caribeng-ui-statistic.d.ts +65 -0
  290. package/types/caribeng-ui-stepper.d.ts +5 -0
  291. package/types/caribeng-ui-steps.d.ts +4 -1
  292. package/types/caribeng-ui-table.d.ts +185 -17
  293. package/types/caribeng-ui-tabmenu.d.ts +11 -1
  294. package/types/caribeng-ui-terminal.d.ts +10 -0
  295. package/types/caribeng-ui-themetoggle.d.ts +32 -0
  296. package/types/caribeng-ui-tieredmenu.d.ts +22 -3
  297. package/types/caribeng-ui-timeline.d.ts +63 -4
  298. package/types/caribeng-ui-toast.d.ts +3 -0
  299. package/types/caribeng-ui-togglebutton.d.ts +5 -3
  300. package/types/caribeng-ui-toolbar.d.ts +7 -4
  301. package/types/caribeng-ui-tree.d.ts +76 -4
  302. package/types/caribeng-ui-treeselect.d.ts +10 -2
  303. package/types/caribeng-ui-treetable.d.ts +68 -4
  304. package/types/caribeng-ui-virtualscroller.d.ts +45 -5
  305. package/types/caribeng-ui.d.ts +775 -12
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, PLATFORM_ID, signal, computed, effect, Injectable, makeEnvironmentProviders, provideEnvironmentInitializer, Injector, DestroyRef, untracked } from '@angular/core';
2
+ import { InjectionToken, inject, PLATFORM_ID, signal, computed, effect, Injectable, makeEnvironmentProviders, provideEnvironmentInitializer, Injector, DestroyRef, untracked, afterNextRender } from '@angular/core';
3
3
  import { DOCUMENT, isPlatformBrowser } from '@angular/common';
4
4
  import { FormControl, NgControl } from '@angular/forms';
5
5
 
@@ -91,8 +91,7 @@ const CB_DEFAULT_CONFIG = {
91
91
  persistTheme: false,
92
92
  storageKey: 'caribeng-theme',
93
93
  requiredIndicator: 'none',
94
- requiredText: 'requerido',
95
- optionalText: 'opcional',
94
+ locale: 'es',
96
95
  };
97
96
  /** Token de inyección con la configuración resuelta de CaribeNG. */
98
97
  const CB_CONFIG = new InjectionToken('CB_CONFIG', {
@@ -224,6 +223,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
224
223
  args: [{ providedIn: 'root' }]
225
224
  }], ctorParameters: () => [] });
226
225
 
226
+ let nextId = 0;
227
+ /**
228
+ * Pide confirmaciones desde código, sin declarar un diálogo por cada una. Las
229
+ * muestra el `<cb-confirm-dialog service />` o `<cb-confirm-popup service />` de la vista
230
+ * (el input `service` los conecta), igual que `ConfirmationService` de PrimeNG.
231
+ *
232
+ * @example
233
+ * ```ts
234
+ * private readonly confirmation = inject(CbConfirmationService);
235
+ *
236
+ * borrar(item: Item, event: Event): void {
237
+ * this.confirmation.confirm({
238
+ * message: `¿Eliminar ${item.nombre}?`,
239
+ * acceptSeverity: 'danger',
240
+ * target: event.currentTarget, // solo para cb-confirm-popup
241
+ * accept: () => this.api.eliminar(item.id),
242
+ * });
243
+ * }
244
+ * ```
245
+ */
246
+ class CbConfirmationService {
247
+ constructor() {
248
+ this._request = signal(null, /* @ts-ignore */
249
+ ...(ngDevMode ? [{ debugName: "_request" }] : /* istanbul ignore next */ []));
250
+ /** Confirmación en curso, o `null`. La leen `cb-confirm-dialog` y `cb-confirm-popup`. */
251
+ this.request = this._request.asReadonly();
252
+ }
253
+ /** Muestra una confirmación. Si había otra abierta, la sustituye (sin llamar a su `reject`). */
254
+ confirm(confirmation) {
255
+ this._request.set({ id: ++nextId, confirmation });
256
+ }
257
+ /** Cierra la confirmación en curso sin llamar a `accept` ni a `reject`. */
258
+ close() {
259
+ this._request.set(null);
260
+ }
261
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
262
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbConfirmationService, providedIn: 'root' }); }
263
+ }
264
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbConfirmationService, decorators: [{
265
+ type: Injectable,
266
+ args: [{ providedIn: 'root' }]
267
+ }] });
268
+
227
269
  /**
228
270
  * Registra CaribeNG en una aplicación Angular (standalone o basada en módulos).
229
271
  *
@@ -249,6 +291,1132 @@ function provideCaribeNG(config = {}) {
249
291
  ]);
250
292
  }
251
293
 
294
+ /**
295
+ * Ejecuta el `command` del item (si tiene). Los menús lo llaman al elegir un
296
+ * item, además de emitir su evento de selección.
297
+ */
298
+ function cbRunCommand(item, originalEvent) {
299
+ item.command?.({ item: item, originalEvent });
300
+ }
301
+ /**
302
+ * Quita los items con `visible: false`, también dentro de `items` (submenús)
303
+ * y de `groups[].items` (MegaMenu). Devuelve los mismos objetos si no cambia
304
+ * nada, para que la selección emita el objeto original.
305
+ */
306
+ function cbVisibleItems(items) {
307
+ const result = [];
308
+ for (const item of items) {
309
+ if (item.visible === false)
310
+ continue;
311
+ let copy = null;
312
+ const nested = item.items;
313
+ if (Array.isArray(nested)) {
314
+ const filtered = cbVisibleItems(nested);
315
+ if (filtered.length !== nested.length || filtered.some((child, i) => child !== nested[i]))
316
+ copy = { ...item, items: filtered };
317
+ }
318
+ const groups = item.groups;
319
+ if (Array.isArray(groups)) {
320
+ let groupsChanged = false;
321
+ const filteredGroups = groups
322
+ .filter((group) => group.visible !== false || !(groupsChanged = true))
323
+ .map((group) => {
324
+ if (!Array.isArray(group.items))
325
+ return group;
326
+ const links = cbVisibleItems(group.items);
327
+ if (links.length === group.items.length && links.every((link, i) => link === group.items[i]))
328
+ return group;
329
+ groupsChanged = true;
330
+ return { ...group, items: links };
331
+ });
332
+ if (groupsChanged)
333
+ copy = { ...(copy ?? item), groups: filteredGroups };
334
+ }
335
+ result.push(copy ?? item);
336
+ }
337
+ return result;
338
+ }
339
+
340
+ /** Español (idioma por defecto). */
341
+ const CB_LOCALE_ES = {
342
+ intlLocale: 'es',
343
+ close: 'Cerrar',
344
+ clear: 'Limpiar',
345
+ remove: 'Quitar',
346
+ removeItem: 'Quitar {0}',
347
+ search: 'Buscar…',
348
+ filterOptions: 'Filtrar opciones',
349
+ noResults: 'Sin resultados',
350
+ noData: 'Sin datos',
351
+ select: 'Seleccionar',
352
+ selectItem: 'Seleccionar {0}',
353
+ selectedCount: '{0} seleccionados',
354
+ selectAll: 'Todos',
355
+ options: 'Opciones',
356
+ moreActions: 'Más acciones',
357
+ copy: 'Copiar',
358
+ copied: 'Copiado',
359
+ copyFailed: 'No se pudo copiar',
360
+ qrCode: 'Código QR',
361
+ commandPalette: 'Paleta de comandos',
362
+ commandPlaceholder: 'Busca una página o acción…',
363
+ commandResults: '{0} resultados',
364
+ commandNavigate: 'navegar',
365
+ commandSelect: 'elegir',
366
+ expandSidebar: 'Expandir menú lateral',
367
+ collapseSidebar: 'Contraer menú lateral',
368
+ openMenu: 'Abrir menú',
369
+ chatConversation: 'Conversación',
370
+ chatYou: 'Tú',
371
+ chatAssistant: 'Asistente',
372
+ chatPlaceholder: 'Escribe un mensaje…',
373
+ chatMessage: 'Mensaje',
374
+ chatSend: 'Enviar',
375
+ chatStop: 'Detener',
376
+ chatAttach: 'Adjuntar archivos',
377
+ chatSending: 'Enviando…',
378
+ chatError: 'No se pudo enviar',
379
+ chatRetry: 'Reintentar',
380
+ chatTyping: 'Escribiendo…',
381
+ chatGenerating: 'Generando respuesta…',
382
+ chatResponseReady: 'Respuesta lista',
383
+ chatJumpToLatest: 'Ir al último mensaje',
384
+ phoneCountry: 'País',
385
+ searchCountry: 'Buscar país',
386
+ phoneInvalid: 'Número de teléfono incompleto o no válido',
387
+ chatThinking: 'Pensando…',
388
+ chatThoughtFor: 'Razonó durante {0} s',
389
+ chatReasoning: 'Razonamiento',
390
+ chatToolRunning: 'Usando {0}…',
391
+ chatToolDone: 'Usó {0}',
392
+ chatToolError: 'Falló {0}',
393
+ chatToolInput: 'Entrada',
394
+ chatToolOutput: 'Resultado',
395
+ chatHelpful: 'Respuesta útil',
396
+ chatNotHelpful: 'Respuesta no útil',
397
+ chatRegenerate: 'Regenerar respuesta',
398
+ chatAttachments: 'Adjuntos',
399
+ kanbanCard: 'tarjeta',
400
+ kanbanInstructions: 'Para mover la tarjeta, pulsa Espacio, usa las flechas y vuelve a pulsar Espacio para soltarla. Escape cancela.',
401
+ kanbanGrabbed: '{0} tomada. Columna {1}, posición {2} de {3}.',
402
+ kanbanMoved: '{0}: columna {1}, posición {2} de {3}.',
403
+ kanbanDropped: '{0} soltada en {1}, posición {2}.',
404
+ kanbanCancelled: 'Movimiento cancelado. {0} vuelve a {1}.',
405
+ kanbanFull: '{0} está llena.',
406
+ kanbanCount: '{0} de {1}',
407
+ kanbanAdd: 'Añadir tarjeta',
408
+ kanbanEdit: 'Editar',
409
+ kanbanDelete: 'Eliminar',
410
+ kanbanMoveTo: 'Mover a {0}',
411
+ kanbanCardActions: 'Acciones de {0}',
412
+ kanbanCardTitle: 'Título de la tarjeta',
413
+ kanbanConfirmDelete: '¿Eliminar «{0}»?',
414
+ kanbanDeleted: '{0} eliminada.',
415
+ kanbanAdded: '{0} añadida a {1}.',
416
+ kanbanRenamed: '«{0}» ahora es «{1}».',
417
+ kanbanAddColumn: 'Añadir columna',
418
+ kanbanColumnName: 'Nombre de la columna',
419
+ kanbanNewColumn: 'Nueva columna',
420
+ kanbanColumnActions: 'Acciones de la columna {0}',
421
+ kanbanRename: 'Renombrar',
422
+ kanbanCollapse: 'Contraer {0}',
423
+ kanbanExpand: 'Expandir {0}',
424
+ kanbanConfirmDeleteColumn: '¿Eliminar la columna «{0}» y sus {1} tarjetas?',
425
+ kanbanDetails: 'Detalles de la tarea',
426
+ kanbanOpenDetails: 'Abrir detalles',
427
+ kanbanStatus: 'Columna',
428
+ kanbanAssignees: 'Responsables',
429
+ kanbanNoAssignees: 'Sin responsable',
430
+ kanbanUnassign: 'Quitar a {0}',
431
+ kanbanAssignedTo: 'Responsables: {0}',
432
+ kanbanPriority: 'Prioridad',
433
+ kanbanNoPriority: 'Sin prioridad',
434
+ kanbanPriorityLow: 'Baja',
435
+ kanbanPriorityMedium: 'Media',
436
+ kanbanPriorityHigh: 'Alta',
437
+ kanbanStartDate: 'Fecha de inicio',
438
+ kanbanEndDate: 'Fecha de fin',
439
+ kanbanDates: 'Fechas',
440
+ kanbanOverdue: 'vencida',
441
+ kanbanDescription: 'Descripción',
442
+ kanbanDescriptionPlaceholder: '¿De qué trata esta tarea?',
443
+ kanbanAttachments: 'Adjuntos',
444
+ kanbanAttach: 'Adjuntar archivos',
445
+ kanbanDropFiles: 'o arrástralos aquí',
446
+ kanbanRemoveAttachment: 'Quitar {0}',
447
+ kanbanAttachmentCount: '{0} adjuntos',
448
+ kanbanUpdated: '{0} actualizada.',
449
+ kanbanTaskName: 'Nombre',
450
+ kanbanAddTask: 'Añadir tarea',
451
+ kanbanAddSection: 'Añadir sección',
452
+ kanbanCompleted: 'Finalizada',
453
+ kanbanMarkComplete: 'Marcar «{0}» como finalizada',
454
+ kanbanMarkIncomplete: 'Marcar «{0}» como pendiente',
455
+ kanbanSectionCount: '{0}, {1} tareas',
456
+ kanbanListInstructions: 'Con Alt + flecha arriba o abajo, la tarea se mueve en la lista.',
457
+ kanbanNoDate: 'Sin fecha ({0})',
458
+ kanbanAddTaskOn: 'Añadir tarea el {0}',
459
+ kanbanWeekOf: 'Semana del {0} al {1}',
460
+ kanbanCalendarInstructions: 'Arrastra la tarea a otro día, o usa Alt + flechas: izquierda y derecha cambian el día; arriba y abajo, la semana.',
461
+ kanbanRescheduled: '{0}: {1}.',
462
+ kanbanPreviousWeek: 'Semana anterior',
463
+ kanbanNextWeek: 'Semana siguiente',
464
+ kanbanDays: 'Días',
465
+ kanbanZoomIn: 'Acercar',
466
+ kanbanZoomOut: 'Alejar',
467
+ kanbanAddTaskIn: 'Añadir tarea en {0}',
468
+ kanbanTimelineInstructions: 'Arrastra la tarea para cambiar sus fechas, o sus bordes para cambiar la duración. Con el teclado: Alt + izquierda o derecha la mueve un día, Alt + Mayús + izquierda o derecha cambia la fecha de fin, y Alt + arriba o abajo la pasa a otra sección.',
469
+ kanbanDashboard: 'Panel del proyecto',
470
+ kanbanTotalCompleted: 'Tareas finalizadas',
471
+ kanbanTotalIncomplete: 'Tareas sin finalizar',
472
+ kanbanTotalOverdue: 'Tareas con retraso',
473
+ kanbanTotalTasks: 'Tareas en total',
474
+ kanbanOfTotal: '{0} del total',
475
+ kanbanIncompleteBySection: 'Tareas sin finalizar por sección',
476
+ kanbanByCompletion: 'Tareas por estado de finalización',
477
+ kanbanIncompleteByAssignee: 'Tareas sin finalizar por responsable',
478
+ kanbanByWeek: 'Entregas por semana',
479
+ kanbanCompletedPlural: 'Finalizadas',
480
+ kanbanPendingPlural: 'A tiempo',
481
+ kanbanOverduePlural: 'Con retraso',
482
+ kanbanIncompletePlural: 'Sin finalizar',
483
+ kanbanViews: 'Vistas',
484
+ kanbanViewBoard: 'Tablero',
485
+ kanbanViewList: 'Lista',
486
+ kanbanViewTimeline: 'Cronograma',
487
+ kanbanViewDashboard: 'Panel',
488
+ kanbanViewCalendar: 'Calendario',
489
+ kanbanHideView: 'Ocultar {0}',
490
+ kanbanSideBySide: 'Lado a lado',
491
+ kanbanViewsHint: 'Activa varias vistas para verlas a la vez.',
492
+ save: 'Guardar',
493
+ mentionsCount: '{0} sugerencias',
494
+ add: 'Agregar',
495
+ onThisPage: 'En esta página',
496
+ trendUp: 'aumenta',
497
+ trendDown: 'disminuye',
498
+ itemAdded: '{0} agregado',
499
+ itemRemoved: '{0} eliminado',
500
+ minimum: 'Mínimo',
501
+ maximum: 'Máximo',
502
+ switchToDark: 'Cambiar a tema oscuro',
503
+ switchToLight: 'Cambiar a tema claro',
504
+ loading: 'Cargando',
505
+ loadingMessage: 'Cargando información…',
506
+ previous: 'Anterior',
507
+ next: 'Siguiente',
508
+ back: 'Atrás',
509
+ finish: 'Finalizar',
510
+ skip: 'Omitir',
511
+ start: 'Comenzar',
512
+ continue: 'Continuar',
513
+ stepOf: 'Paso {0} de {1}',
514
+ stepCompleted: 'completado',
515
+ expand: 'Expandir',
516
+ collapse: 'Contraer',
517
+ expandItem: 'Expandir {0}',
518
+ collapseItem: 'Contraer {0}',
519
+ togglePanel: 'Alternar panel',
520
+ progress: 'Progreso',
521
+ stepsProgress: 'Progreso de pasos',
522
+ page: 'Página {0}',
523
+ pageIndicator: 'Indicador de páginas',
524
+ download: 'Descargar',
525
+ details: 'Detalles',
526
+ viewDetails: 'Ver detalle',
527
+ share: 'Compartir',
528
+ receipt: 'Comprobante',
529
+ action: 'Acción',
530
+ actionGroup: 'Grupo de acciones',
531
+ accept: 'Aceptar',
532
+ cancel: 'Cancelar',
533
+ confirm: 'Confirmar',
534
+ confirmMessage: '¿Deseas continuar?',
535
+ yes: 'Sí',
536
+ no: 'No',
537
+ dialog: 'Diálogo',
538
+ panel: 'Panel',
539
+ sidePanel: 'Panel lateral',
540
+ opensInNewTab: '(se abre en una pestaña nueva)',
541
+ showInfo: 'Mostrar información',
542
+ closeEditing: 'Cerrar edición',
543
+ menu: 'Menú',
544
+ mainNavigation: 'Navegación principal',
545
+ contextMenu: 'Menú contextual',
546
+ categories: 'Categorías',
547
+ appDock: 'Dock de la aplicación',
548
+ panelMenu: 'Menú de paneles',
549
+ steps: 'Pasos',
550
+ sectionNavigation: 'Navegación de secciones',
551
+ breadcrumb: 'Ruta de navegación',
552
+ toolbar: 'Barra de herramientas',
553
+ quickActions: 'Menú de acciones rápidas',
554
+ floatingMenu: 'Menú flotante',
555
+ openActions: 'Abrir acciones',
556
+ closeActions: 'Cerrar acciones',
557
+ required: 'requerido',
558
+ optional: 'opcional',
559
+ showSuggestions: 'Mostrar sugerencias',
560
+ clearSearch: 'Limpiar búsqueda',
561
+ showPassword: 'Mostrar contraseña',
562
+ hidePassword: 'Ocultar contraseña',
563
+ passwordWeak: 'Fortaleza: Débil',
564
+ passwordMedium: 'Fortaleza: Media',
565
+ passwordStrong: 'Fortaleza: Fuerte',
566
+ increment: 'Incrementar',
567
+ decrement: 'Decrementar',
568
+ verificationCode: 'Código de verificación',
569
+ digit: 'Dígito {0}',
570
+ color: 'Color',
571
+ colorPicker: 'Selector de color',
572
+ hexColor: 'Color hexadecimal',
573
+ colorArea: 'Saturación y brillo',
574
+ colorAreaValue: 'Saturación {0} %, brillo {1} %',
575
+ hue: 'Tono',
576
+ switch: 'Interruptor',
577
+ ratingOf: '{0} de {1}',
578
+ openCalendar: 'Abrir calendario',
579
+ hours: 'Horas',
580
+ minutes: 'Minutos',
581
+ period: 'AM / PM',
582
+ chooseEndDate: 'Elige la fecha final',
583
+ previousMonth: 'Mes anterior',
584
+ nextMonth: 'Mes siguiente',
585
+ previousYear: 'Año anterior',
586
+ nextYear: 'Año siguiente',
587
+ previousDecade: 'Década anterior',
588
+ nextDecade: 'Década siguiente',
589
+ chooseMonth: 'Elegir mes',
590
+ chooseYear: 'Elegir año',
591
+ startTime: 'Hora de inicio',
592
+ endTime: 'Hora de fin',
593
+ invalidDate: 'Fecha no válida. Usa el formato {0}.',
594
+ datePresets: 'Atajos',
595
+ presetYesterday: 'Ayer',
596
+ presetLast7Days: 'Últimos 7 días',
597
+ presetLast30Days: 'Últimos 30 días',
598
+ presetThisMonth: 'Este mes',
599
+ presetLastMonth: 'Mes anterior',
600
+ presetThisYear: 'Este año',
601
+ presetLastYear: 'Año anterior',
602
+ today: 'Hoy',
603
+ weekdaysMin: 'L,M,X,J,V,S,D',
604
+ chooseFile: 'Elegir archivo',
605
+ upload: 'Subir',
606
+ dropFiles: 'Arrastra archivos aquí o pulsa "{0}".',
607
+ fileTooLarge: '{0}: supera el tamaño máximo de {1}.',
608
+ fileTypeNotAllowed: '{0}: tipo de archivo no permitido.',
609
+ selectDocument: 'Seleccionar documento',
610
+ formats: 'Formatos: {0}',
611
+ filesSelected: '{0} archivo(s) seleccionado(s)',
612
+ files: 'archivos',
613
+ pagination: 'Paginación',
614
+ firstPage: 'Primera página',
615
+ previousPage: 'Página anterior',
616
+ nextPage: 'Página siguiente',
617
+ lastPage: 'Última página',
618
+ rowsPerPage: 'Registros por página',
619
+ selectRow: 'Seleccionar fila {0}',
620
+ selectAllRows: 'Seleccionar todas las filas',
621
+ sortBy: 'Ordenar por {0}',
622
+ filterBy: 'Filtrar por {0}',
623
+ resizeColumn: 'Redimensionar columna {0}',
624
+ expandRow: 'Detalle de la fila {0}',
625
+ resultsCount: '{0} resultados',
626
+ noRecords: '0 registros',
627
+ moveUp: 'Subir',
628
+ moveDown: 'Bajar',
629
+ moveTop: 'Mover al inicio',
630
+ moveBottom: 'Mover al final',
631
+ moveToTarget: 'Mover a seleccionados',
632
+ moveAllToTarget: 'Mover todos a seleccionados',
633
+ moveToSource: 'Devolver a disponibles',
634
+ moveAllToSource: 'Devolver todos a disponibles',
635
+ available: 'Disponibles',
636
+ selected: 'Seleccionados',
637
+ sortableList: 'Lista ordenable',
638
+ orgChart: 'Organigrama',
639
+ changeLayout: 'Cambiar vista',
640
+ listView: 'Vista de lista',
641
+ gridView: 'Vista de cuadrícula',
642
+ timeline: 'Cronología',
643
+ chart: 'Gráfico de datos',
644
+ chartLegend: 'Leyenda del gráfico',
645
+ chartItem: 'Elemento {0}',
646
+ chartInstructions: 'Usa las flechas para recorrer los datos.',
647
+ chartTotal: 'Total',
648
+ chartChange: 'Variación',
649
+ chartOpen: 'Apertura',
650
+ chartHigh: 'Máximo',
651
+ chartLow: 'Mínimo',
652
+ chartClose: 'Cierre',
653
+ chartResetZoom: 'Restablecer zoom',
654
+ chartZoomInstructions: 'Pulsa + o − para acercar o alejar y 0 para ver todo; con el ratón, usa la rueda, arrastra para desplazarte y haz doble clic para restablecer.',
655
+ carousel: 'Carrusel',
656
+ slide: 'Diapositiva {0}',
657
+ slideOf: '{0} de {1}',
658
+ previousImage: 'Imagen anterior',
659
+ nextImage: 'Imagen siguiente',
660
+ thumbnail: 'Miniatura {0}',
661
+ enlargeImage: 'Ampliar {0}',
662
+ image: 'imagen',
663
+ imagePreview: 'Previsualización de imagen',
664
+ rotateLeft: 'Rotar a la izquierda',
665
+ rotateRight: 'Rotar a la derecha',
666
+ flipHorizontal: 'Voltear horizontal',
667
+ flipVertical: 'Voltear vertical',
668
+ zoomIn: 'Acercar',
669
+ zoomOut: 'Alejar',
670
+ reset: 'Restablecer',
671
+ fullscreen: 'Pantalla completa',
672
+ // Visor de PDF
673
+ pdfViewer: 'Visor de PDF',
674
+ pdfDocument: 'Documento PDF',
675
+ pageOf: 'Página {0} de {1}',
676
+ pageNumber: 'Número de página',
677
+ ofTotal: 'de {0}',
678
+ zoomLevel: 'Nivel de zoom',
679
+ fitWidth: 'Ajustar al ancho',
680
+ fitPage: 'Página completa',
681
+ print: 'Imprimir',
682
+ preparingPrint: 'Preparando impresión… {0} de {1}',
683
+ thumbnails: 'Miniaturas',
684
+ searchInDocument: 'Buscar en el documento',
685
+ previousMatch: 'Coincidencia anterior',
686
+ nextMatch: 'Coincidencia siguiente',
687
+ matchOf: '{0} de {1}',
688
+ searching: 'Buscando…',
689
+ loadingDocument: 'Cargando documento…',
690
+ documentError: 'No se pudo abrir el documento.',
691
+ protectedDocument: 'Este documento está protegido. Escribe la contraseña para abrirlo.',
692
+ incorrectPassword: 'Contraseña incorrecta. Inténtalo de nuevo.',
693
+ password: 'Contraseña',
694
+ open: 'Abrir',
695
+ scrollableArea: 'Área desplazable',
696
+ scrollTop: 'Volver arriba',
697
+ resizePanels: 'Redimensionar paneles',
698
+ command: 'Comando',
699
+ guidedHelp: 'Ayuda guiada',
700
+ onboarding: 'Introducción',
701
+ animation: 'Animación interactiva',
702
+ illustration: 'Ilustración',
703
+ pictogram: 'Pictograma',
704
+ decorativeStroke: 'Trazo decorativo',
705
+ preparingSession: 'Preparando tu sesión segura…',
706
+ monthly: 'Mensual',
707
+ yearly: 'Anual',
708
+ choose: 'Elegir',
709
+ chooseItem: 'Elegir {0}',
710
+ perMonth: '/mes',
711
+ perYear: '/año',
712
+ billingCycle: 'Ciclo de facturación',
713
+ notIncluded: 'no incluido',
714
+ payAnnually: 'Paga anualmente',
715
+ payMonthly: 'Paga mensualmente',
716
+ billedAnnually: 'Facturado {0} anualmente',
717
+ youSave: 'Ahorras {0}',
718
+ recommended: 'Recomendado',
719
+ textFormatting: 'Formato de texto',
720
+ paragraphStyle: 'Estilo de párrafo',
721
+ normal: 'Normal',
722
+ heading1: 'Título 1',
723
+ heading2: 'Título 2',
724
+ heading3: 'Título 3',
725
+ bold: 'Negrita',
726
+ italic: 'Cursiva',
727
+ underline: 'Subrayado',
728
+ strikethrough: 'Tachado',
729
+ bulletList: 'Lista con viñetas',
730
+ numberedList: 'Lista numerada',
731
+ quote: 'Cita',
732
+ alignLeft: 'Alinear a la izquierda',
733
+ alignCenter: 'Centrar',
734
+ alignRight: 'Alinear a la derecha',
735
+ insertLink: 'Insertar enlace',
736
+ insertImage: 'Insertar imagen',
737
+ clearFormat: 'Limpiar formato',
738
+ undo: 'Deshacer',
739
+ redo: 'Rehacer',
740
+ editorPlaceholder: 'Escribe aquí…',
741
+ textEditor: 'Editor de texto',
742
+ linkUrl: 'URL del enlace:',
743
+ inlineCode: 'Código',
744
+ horizontalLine: 'Línea horizontal',
745
+ sourceCode: 'Ver HTML',
746
+ removeLink: 'Quitar enlace',
747
+ openInNewTab: 'Abrir en una pestaña nueva',
748
+ invalidUrl: 'El enlace debe empezar por http://, https://, mailto: o tel:.',
749
+ characterCount: '{0} de {1} caracteres',
750
+ imageTooLarge: 'La imagen supera el tamaño máximo ({0}).',
751
+ imageUploadError: 'No se pudo subir la imagen.',
752
+ codeBlock: 'Bloque de código',
753
+ insertTable: 'Insertar tabla',
754
+ tableRows: 'Filas',
755
+ tableColumns: 'Columnas',
756
+ tableHeaderRow: 'Fila de encabezado',
757
+ insert: 'Insertar',
758
+ tableTools: 'Tabla',
759
+ insertRowAbove: 'Insertar fila arriba',
760
+ insertRowBelow: 'Insertar fila abajo',
761
+ insertColumnLeft: 'Insertar columna a la izquierda',
762
+ insertColumnRight: 'Insertar columna a la derecha',
763
+ deleteRow: 'Eliminar fila',
764
+ deleteColumn: 'Eliminar columna',
765
+ deleteTable: 'Eliminar tabla',
766
+ imageTools: 'Imagen',
767
+ imageInline: 'En línea con el texto',
768
+ imageAlignLeft: 'Alinear a la izquierda',
769
+ imageAlignCenter: 'Centrar',
770
+ imageAlignRight: 'Alinear a la derecha',
771
+ imageWidth: 'Ancho {0}',
772
+ imageOriginalSize: 'Tamaño original',
773
+ imageResize: 'Redimensionar imagen',
774
+ altText: 'Texto alternativo',
775
+ deleteImage: 'Eliminar imagen',
776
+ tableSize: '{0} filas × {1} columnas',
777
+ tableRow: 'Fila',
778
+ tableColumn: 'Columna',
779
+ above: 'Arriba',
780
+ below: 'Abajo',
781
+ toLeft: 'Izquierda',
782
+ toRight: 'Derecha',
783
+ tableDelete: 'Eliminar',
784
+ tableBorders: 'Bordes',
785
+ bordersAll: 'Todos los bordes',
786
+ bordersHorizontal: 'Solo líneas horizontales',
787
+ bordersNone: 'Sin bordes',
788
+ borderColor: 'Color del borde',
789
+ colorGray: 'Gris',
790
+ colorDark: 'Oscuro',
791
+ colorGreen: 'Verde',
792
+ colorBlue: 'Azul',
793
+ cropImage: 'Recortar',
794
+ cropArea: 'Área de recorte',
795
+ cropFree: 'Libre',
796
+ cropInstructions: 'Arrastra el recuadro o sus esquinas. Con el teclado: flechas para mover, Mayús + flechas para cambiar el tamaño.',
797
+ cropError: 'No se pudo recortar la imagen. Si viene de otro dominio, su servidor debe permitir CORS.',
798
+ exitFullscreen: 'Salir de pantalla completa',
799
+ heading4: 'Título 4',
800
+ fontSize: 'Tamaño de letra',
801
+ fontNormal: 'Normal',
802
+ textColor: 'Color del texto',
803
+ highlight: 'Resaltado',
804
+ automaticColor: 'Automático',
805
+ noHighlight: 'Sin resaltado',
806
+ colorBlack: 'Negro',
807
+ colorRed: 'Rojo',
808
+ colorOrange: 'Naranja',
809
+ colorYellow: 'Amarillo',
810
+ colorTeal: 'Turquesa',
811
+ colorPurple: 'Morado',
812
+ colorPink: 'Rosa',
813
+ subscript: 'Subíndice',
814
+ superscript: 'Superíndice',
815
+ taskList: 'Lista de tareas',
816
+ indent: 'Aumentar sangría',
817
+ outdent: 'Reducir sangría',
818
+ alignJustify: 'Justificar',
819
+ alignment: 'Alineación',
820
+ wordCount: '{0} palabras',
821
+ wordCountOne: '{0} palabra',
822
+ charCount: '{0} caracteres',
823
+ fontFamily: 'Fuente',
824
+ fontDefault: 'Predeterminada',
825
+ fontGroupRecommended: 'Recomendadas',
826
+ fontGroupOffice: 'Clásicas de Office',
827
+ fontGroupSans: 'Sans serif modernas',
828
+ fontGroupSerif: 'Serif',
829
+ fontGroupMono: 'Monoespaciadas para código',
830
+ fontGroupAccessible: 'Accesibilidad',
831
+ fontGroupFun: 'Divertidas',
832
+ specialCharacters: 'Caracteres especiales',
833
+ charsCurrency: 'Monedas',
834
+ charsMath: 'Matemáticas',
835
+ charsPunctuation: 'Puntuación y signos',
836
+ charsArrows: 'Flechas',
837
+ charsEmoji: 'Emoji',
838
+ findReplace: 'Buscar y reemplazar',
839
+ findText: 'Buscar',
840
+ replaceWith: 'Reemplazar con',
841
+ matchCase: 'Mayúsculas y minúsculas',
842
+ wholeWords: 'Palabras completas',
843
+ findPrevious: 'Resultado anterior',
844
+ findNext: 'Resultado siguiente',
845
+ replaceOne: 'Reemplazar',
846
+ replaceAll: 'Reemplazar todo',
847
+ findCount: '{0} de {1}',
848
+ replacedCount: 'Reemplazos hechos: {0}',
849
+ quickFormat: 'Formato rápido',
850
+ insertBlock: 'Insertar bloque',
851
+ paragraph: 'Párrafo',
852
+ };
853
+ /** Inglés. */
854
+ const CB_LOCALE_EN = {
855
+ intlLocale: 'en',
856
+ close: 'Close',
857
+ clear: 'Clear',
858
+ remove: 'Remove',
859
+ removeItem: 'Remove {0}',
860
+ search: 'Search…',
861
+ filterOptions: 'Filter options',
862
+ noResults: 'No results found',
863
+ noData: 'No data',
864
+ select: 'Select',
865
+ selectItem: 'Select {0}',
866
+ selectedCount: '{0} selected',
867
+ selectAll: 'All',
868
+ options: 'Options',
869
+ moreActions: 'More actions',
870
+ copy: 'Copy',
871
+ copied: 'Copied',
872
+ copyFailed: 'Could not copy',
873
+ qrCode: 'QR code',
874
+ commandPalette: 'Command palette',
875
+ commandPlaceholder: 'Search for a page or action…',
876
+ commandResults: '{0} results',
877
+ commandNavigate: 'navigate',
878
+ commandSelect: 'select',
879
+ expandSidebar: 'Expand sidebar',
880
+ collapseSidebar: 'Collapse sidebar',
881
+ openMenu: 'Open menu',
882
+ chatConversation: 'Conversation',
883
+ chatYou: 'You',
884
+ chatAssistant: 'Assistant',
885
+ chatPlaceholder: 'Write a message…',
886
+ chatMessage: 'Message',
887
+ chatSend: 'Send',
888
+ chatStop: 'Stop',
889
+ chatAttach: 'Attach files',
890
+ chatSending: 'Sending…',
891
+ chatError: 'Could not send',
892
+ chatRetry: 'Retry',
893
+ chatTyping: 'Typing…',
894
+ chatGenerating: 'Generating response…',
895
+ chatResponseReady: 'Response ready',
896
+ chatJumpToLatest: 'Jump to latest message',
897
+ phoneCountry: 'Country',
898
+ searchCountry: 'Search country',
899
+ phoneInvalid: 'Incomplete or invalid phone number',
900
+ chatThinking: 'Thinking…',
901
+ chatThoughtFor: 'Thought for {0} s',
902
+ chatReasoning: 'Reasoning',
903
+ chatToolRunning: 'Using {0}…',
904
+ chatToolDone: 'Used {0}',
905
+ chatToolError: '{0} failed',
906
+ chatToolInput: 'Input',
907
+ chatToolOutput: 'Result',
908
+ chatHelpful: 'Helpful response',
909
+ chatNotHelpful: 'Not helpful response',
910
+ chatRegenerate: 'Regenerate response',
911
+ chatAttachments: 'Attachments',
912
+ kanbanCard: 'card',
913
+ kanbanInstructions: 'To move the card, press Space, use the arrow keys and press Space again to drop it. Escape cancels.',
914
+ kanbanGrabbed: '{0} picked up. Column {1}, position {2} of {3}.',
915
+ kanbanMoved: '{0}: column {1}, position {2} of {3}.',
916
+ kanbanDropped: '{0} dropped in {1}, position {2}.',
917
+ kanbanCancelled: 'Move cancelled. {0} returns to {1}.',
918
+ kanbanFull: '{0} is full.',
919
+ kanbanCount: '{0} of {1}',
920
+ kanbanAdd: 'Add card',
921
+ kanbanEdit: 'Edit',
922
+ kanbanDelete: 'Delete',
923
+ kanbanMoveTo: 'Move to {0}',
924
+ kanbanCardActions: 'Actions for {0}',
925
+ kanbanCardTitle: 'Card title',
926
+ kanbanConfirmDelete: 'Delete “{0}”?',
927
+ kanbanDeleted: '{0} deleted.',
928
+ kanbanAdded: '{0} added to {1}.',
929
+ kanbanRenamed: '“{0}” is now “{1}”.',
930
+ kanbanAddColumn: 'Add column',
931
+ kanbanColumnName: 'Column name',
932
+ kanbanNewColumn: 'New column',
933
+ kanbanColumnActions: 'Actions for column {0}',
934
+ kanbanRename: 'Rename',
935
+ kanbanCollapse: 'Collapse {0}',
936
+ kanbanExpand: 'Expand {0}',
937
+ kanbanConfirmDeleteColumn: 'Delete column “{0}” and its {1} cards?',
938
+ kanbanDetails: 'Task details',
939
+ kanbanOpenDetails: 'Open details',
940
+ kanbanStatus: 'Column',
941
+ kanbanAssignees: 'Assignees',
942
+ kanbanNoAssignees: 'Unassigned',
943
+ kanbanUnassign: 'Remove {0}',
944
+ kanbanAssignedTo: 'Assignees: {0}',
945
+ kanbanPriority: 'Priority',
946
+ kanbanNoPriority: 'No priority',
947
+ kanbanPriorityLow: 'Low',
948
+ kanbanPriorityMedium: 'Medium',
949
+ kanbanPriorityHigh: 'High',
950
+ kanbanStartDate: 'Start date',
951
+ kanbanEndDate: 'Due date',
952
+ kanbanDates: 'Dates',
953
+ kanbanOverdue: 'overdue',
954
+ kanbanDescription: 'Description',
955
+ kanbanDescriptionPlaceholder: 'What is this task about?',
956
+ kanbanAttachments: 'Attachments',
957
+ kanbanAttach: 'Attach files',
958
+ kanbanDropFiles: 'or drop them here',
959
+ kanbanRemoveAttachment: 'Remove {0}',
960
+ kanbanAttachmentCount: '{0} attachments',
961
+ kanbanUpdated: '{0} updated.',
962
+ kanbanTaskName: 'Name',
963
+ kanbanAddTask: 'Add task',
964
+ kanbanAddSection: 'Add section',
965
+ kanbanCompleted: 'Completed',
966
+ kanbanMarkComplete: 'Mark “{0}” complete',
967
+ kanbanMarkIncomplete: 'Mark “{0}” incomplete',
968
+ kanbanSectionCount: '{0}, {1} tasks',
969
+ kanbanListInstructions: 'Press Alt + Up or Down arrow to move the task in the list.',
970
+ kanbanNoDate: 'No date ({0})',
971
+ kanbanAddTaskOn: 'Add task on {0}',
972
+ kanbanWeekOf: 'Week of {0} to {1}',
973
+ kanbanCalendarInstructions: 'Drag the task to another day, or use Alt + arrows: left and right change the day; up and down, the week.',
974
+ kanbanRescheduled: '{0}: {1}.',
975
+ kanbanPreviousWeek: 'Previous week',
976
+ kanbanNextWeek: 'Next week',
977
+ kanbanDays: 'Days',
978
+ kanbanZoomIn: 'Zoom in',
979
+ kanbanZoomOut: 'Zoom out',
980
+ kanbanAddTaskIn: 'Add task to {0}',
981
+ kanbanTimelineInstructions: 'Drag the task to change its dates, or its edges to change how long it lasts. With the keyboard: Alt + left or right moves it one day, Alt + Shift + left or right changes the end date, and Alt + up or down moves it to another section.',
982
+ kanbanDashboard: 'Project dashboard',
983
+ kanbanTotalCompleted: 'Completed tasks',
984
+ kanbanTotalIncomplete: 'Incomplete tasks',
985
+ kanbanTotalOverdue: 'Overdue tasks',
986
+ kanbanTotalTasks: 'Total tasks',
987
+ kanbanOfTotal: '{0} of total',
988
+ kanbanIncompleteBySection: 'Incomplete tasks by section',
989
+ kanbanByCompletion: 'Tasks by completion status',
990
+ kanbanIncompleteByAssignee: 'Incomplete tasks by assignee',
991
+ kanbanByWeek: 'Due dates by week',
992
+ kanbanCompletedPlural: 'Completed',
993
+ kanbanPendingPlural: 'On time',
994
+ kanbanOverduePlural: 'Overdue',
995
+ kanbanIncompletePlural: 'Incomplete',
996
+ kanbanViews: 'Views',
997
+ kanbanViewBoard: 'Board',
998
+ kanbanViewList: 'List',
999
+ kanbanViewTimeline: 'Timeline',
1000
+ kanbanViewDashboard: 'Dashboard',
1001
+ kanbanViewCalendar: 'Calendar',
1002
+ kanbanHideView: 'Hide {0}',
1003
+ kanbanSideBySide: 'Side by side',
1004
+ kanbanViewsHint: 'Turn on several views to see them at once.',
1005
+ save: 'Save',
1006
+ mentionsCount: '{0} suggestions',
1007
+ add: 'Add',
1008
+ onThisPage: 'On this page',
1009
+ trendUp: 'up',
1010
+ trendDown: 'down',
1011
+ itemAdded: '{0} added',
1012
+ itemRemoved: '{0} removed',
1013
+ minimum: 'Minimum',
1014
+ maximum: 'Maximum',
1015
+ switchToDark: 'Switch to dark theme',
1016
+ switchToLight: 'Switch to light theme',
1017
+ loading: 'Loading',
1018
+ loadingMessage: 'Loading…',
1019
+ previous: 'Previous',
1020
+ next: 'Next',
1021
+ back: 'Back',
1022
+ finish: 'Finish',
1023
+ skip: 'Skip',
1024
+ start: 'Get started',
1025
+ continue: 'Continue',
1026
+ stepOf: 'Step {0} of {1}',
1027
+ stepCompleted: 'completed',
1028
+ expand: 'Expand',
1029
+ collapse: 'Collapse',
1030
+ expandItem: 'Expand {0}',
1031
+ collapseItem: 'Collapse {0}',
1032
+ togglePanel: 'Toggle panel',
1033
+ progress: 'Progress',
1034
+ stepsProgress: 'Steps progress',
1035
+ page: 'Page {0}',
1036
+ pageIndicator: 'Page indicator',
1037
+ download: 'Download',
1038
+ details: 'Details',
1039
+ viewDetails: 'View details',
1040
+ share: 'Share',
1041
+ receipt: 'Receipt',
1042
+ action: 'Action',
1043
+ actionGroup: 'Action group',
1044
+ accept: 'Accept',
1045
+ cancel: 'Cancel',
1046
+ confirm: 'Confirm',
1047
+ confirmMessage: 'Do you want to continue?',
1048
+ yes: 'Yes',
1049
+ no: 'No',
1050
+ dialog: 'Dialog',
1051
+ panel: 'Panel',
1052
+ sidePanel: 'Side panel',
1053
+ opensInNewTab: '(opens in a new tab)',
1054
+ showInfo: 'Show information',
1055
+ closeEditing: 'Close editing',
1056
+ menu: 'Menu',
1057
+ mainNavigation: 'Main navigation',
1058
+ contextMenu: 'Context menu',
1059
+ categories: 'Categories',
1060
+ appDock: 'Application dock',
1061
+ panelMenu: 'Panel menu',
1062
+ steps: 'Steps',
1063
+ sectionNavigation: 'Section navigation',
1064
+ breadcrumb: 'Breadcrumb',
1065
+ toolbar: 'Toolbar',
1066
+ quickActions: 'Quick actions menu',
1067
+ floatingMenu: 'Floating menu',
1068
+ openActions: 'Open actions',
1069
+ closeActions: 'Close actions',
1070
+ required: 'required',
1071
+ optional: 'optional',
1072
+ showSuggestions: 'Show suggestions',
1073
+ clearSearch: 'Clear search',
1074
+ showPassword: 'Show password',
1075
+ hidePassword: 'Hide password',
1076
+ passwordWeak: 'Strength: Weak',
1077
+ passwordMedium: 'Strength: Medium',
1078
+ passwordStrong: 'Strength: Strong',
1079
+ increment: 'Increment',
1080
+ decrement: 'Decrement',
1081
+ verificationCode: 'Verification code',
1082
+ digit: 'Digit {0}',
1083
+ color: 'Color',
1084
+ colorPicker: 'Color picker',
1085
+ hexColor: 'Hex color',
1086
+ colorArea: 'Saturation and brightness',
1087
+ colorAreaValue: 'Saturation {0}%, brightness {1}%',
1088
+ hue: 'Hue',
1089
+ switch: 'Switch',
1090
+ ratingOf: '{0} of {1}',
1091
+ openCalendar: 'Open calendar',
1092
+ hours: 'Hours',
1093
+ minutes: 'Minutes',
1094
+ period: 'AM / PM',
1095
+ chooseEndDate: 'Choose the end date',
1096
+ previousMonth: 'Previous month',
1097
+ nextMonth: 'Next month',
1098
+ previousYear: 'Previous year',
1099
+ nextYear: 'Next year',
1100
+ previousDecade: 'Previous decade',
1101
+ nextDecade: 'Next decade',
1102
+ chooseMonth: 'Choose month',
1103
+ chooseYear: 'Choose year',
1104
+ startTime: 'Start time',
1105
+ endTime: 'End time',
1106
+ invalidDate: 'Invalid date. Use the format {0}.',
1107
+ datePresets: 'Shortcuts',
1108
+ presetYesterday: 'Yesterday',
1109
+ presetLast7Days: 'Last 7 days',
1110
+ presetLast30Days: 'Last 30 days',
1111
+ presetThisMonth: 'This month',
1112
+ presetLastMonth: 'Last month',
1113
+ presetThisYear: 'This year',
1114
+ presetLastYear: 'Last year',
1115
+ today: 'Today',
1116
+ weekdaysMin: 'M,T,W,T,F,S,S',
1117
+ chooseFile: 'Choose file',
1118
+ upload: 'Upload',
1119
+ dropFiles: 'Drag files here or click "{0}".',
1120
+ fileTooLarge: '{0}: exceeds the maximum size of {1}.',
1121
+ fileTypeNotAllowed: '{0}: file type not allowed.',
1122
+ selectDocument: 'Select document',
1123
+ formats: 'Formats: {0}',
1124
+ filesSelected: '{0} file(s) selected',
1125
+ files: 'files',
1126
+ pagination: 'Pagination',
1127
+ firstPage: 'First page',
1128
+ previousPage: 'Previous page',
1129
+ nextPage: 'Next page',
1130
+ lastPage: 'Last page',
1131
+ rowsPerPage: 'Rows per page',
1132
+ selectRow: 'Select row {0}',
1133
+ selectAllRows: 'Select all rows',
1134
+ sortBy: 'Sort by {0}',
1135
+ filterBy: 'Filter by {0}',
1136
+ resizeColumn: 'Resize column {0}',
1137
+ expandRow: 'Row {0} details',
1138
+ resultsCount: '{0} results',
1139
+ noRecords: '0 records',
1140
+ moveUp: 'Move up',
1141
+ moveDown: 'Move down',
1142
+ moveTop: 'Move to top',
1143
+ moveBottom: 'Move to bottom',
1144
+ moveToTarget: 'Move to selected',
1145
+ moveAllToTarget: 'Move all to selected',
1146
+ moveToSource: 'Move back to available',
1147
+ moveAllToSource: 'Move all back to available',
1148
+ available: 'Available',
1149
+ selected: 'Selected',
1150
+ sortableList: 'Sortable list',
1151
+ orgChart: 'Organization chart',
1152
+ changeLayout: 'Change layout',
1153
+ listView: 'List view',
1154
+ gridView: 'Grid view',
1155
+ timeline: 'Timeline',
1156
+ chart: 'Data chart',
1157
+ chartLegend: 'Chart legend',
1158
+ chartItem: 'Item {0}',
1159
+ chartInstructions: 'Use the arrow keys to explore the data.',
1160
+ chartTotal: 'Total',
1161
+ chartChange: 'Change',
1162
+ chartOpen: 'Open',
1163
+ chartHigh: 'High',
1164
+ chartLow: 'Low',
1165
+ chartClose: 'Close',
1166
+ chartResetZoom: 'Reset zoom',
1167
+ chartZoomInstructions: 'Press + or − to zoom in or out and 0 to see everything; with the mouse, use the wheel, drag to pan and double-click to reset.',
1168
+ carousel: 'Carousel',
1169
+ slide: 'Slide {0}',
1170
+ slideOf: '{0} of {1}',
1171
+ previousImage: 'Previous image',
1172
+ nextImage: 'Next image',
1173
+ thumbnail: 'Thumbnail {0}',
1174
+ enlargeImage: 'Enlarge {0}',
1175
+ image: 'image',
1176
+ imagePreview: 'Image preview',
1177
+ rotateLeft: 'Rotate left',
1178
+ rotateRight: 'Rotate right',
1179
+ flipHorizontal: 'Flip horizontal',
1180
+ flipVertical: 'Flip vertical',
1181
+ zoomIn: 'Zoom in',
1182
+ zoomOut: 'Zoom out',
1183
+ reset: 'Reset',
1184
+ fullscreen: 'Full screen',
1185
+ // Visor de PDF
1186
+ pdfViewer: 'PDF viewer',
1187
+ pdfDocument: 'PDF document',
1188
+ pageOf: 'Page {0} of {1}',
1189
+ pageNumber: 'Page number',
1190
+ ofTotal: 'of {0}',
1191
+ zoomLevel: 'Zoom level',
1192
+ fitWidth: 'Fit to width',
1193
+ fitPage: 'Fit page',
1194
+ print: 'Print',
1195
+ preparingPrint: 'Preparing to print… {0} of {1}',
1196
+ thumbnails: 'Thumbnails',
1197
+ searchInDocument: 'Search in document',
1198
+ previousMatch: 'Previous match',
1199
+ nextMatch: 'Next match',
1200
+ matchOf: '{0} of {1}',
1201
+ searching: 'Searching…',
1202
+ loadingDocument: 'Loading document…',
1203
+ documentError: 'The document could not be opened.',
1204
+ protectedDocument: 'This document is protected. Enter the password to open it.',
1205
+ incorrectPassword: 'Incorrect password. Try again.',
1206
+ password: 'Password',
1207
+ open: 'Open',
1208
+ scrollableArea: 'Scrollable area',
1209
+ scrollTop: 'Back to top',
1210
+ resizePanels: 'Resize panels',
1211
+ command: 'Command',
1212
+ guidedHelp: 'Guided help',
1213
+ onboarding: 'Onboarding',
1214
+ animation: 'Interactive animation',
1215
+ illustration: 'Illustration',
1216
+ pictogram: 'Pictogram',
1217
+ decorativeStroke: 'Decorative stroke',
1218
+ preparingSession: 'Preparing your secure session…',
1219
+ monthly: 'Monthly',
1220
+ yearly: 'Yearly',
1221
+ choose: 'Choose',
1222
+ chooseItem: 'Choose {0}',
1223
+ perMonth: '/mo',
1224
+ perYear: '/yr',
1225
+ billingCycle: 'Billing cycle',
1226
+ notIncluded: 'not included',
1227
+ payAnnually: 'Pay annually',
1228
+ payMonthly: 'Pay monthly',
1229
+ billedAnnually: 'Billed {0} annually',
1230
+ youSave: 'You save {0}',
1231
+ recommended: 'Recommended',
1232
+ textFormatting: 'Text formatting',
1233
+ paragraphStyle: 'Paragraph style',
1234
+ normal: 'Normal',
1235
+ heading1: 'Heading 1',
1236
+ heading2: 'Heading 2',
1237
+ heading3: 'Heading 3',
1238
+ bold: 'Bold',
1239
+ italic: 'Italic',
1240
+ underline: 'Underline',
1241
+ strikethrough: 'Strikethrough',
1242
+ bulletList: 'Bulleted list',
1243
+ numberedList: 'Numbered list',
1244
+ quote: 'Quote',
1245
+ alignLeft: 'Align left',
1246
+ alignCenter: 'Center',
1247
+ alignRight: 'Align right',
1248
+ insertLink: 'Insert link',
1249
+ insertImage: 'Insert image',
1250
+ clearFormat: 'Clear formatting',
1251
+ undo: 'Undo',
1252
+ redo: 'Redo',
1253
+ editorPlaceholder: 'Write here…',
1254
+ textEditor: 'Text editor',
1255
+ linkUrl: 'Link URL:',
1256
+ inlineCode: 'Code',
1257
+ horizontalLine: 'Horizontal line',
1258
+ sourceCode: 'View HTML',
1259
+ removeLink: 'Remove link',
1260
+ openInNewTab: 'Open in a new tab',
1261
+ invalidUrl: 'The link must start with http://, https://, mailto: or tel:.',
1262
+ characterCount: '{0} of {1} characters',
1263
+ imageTooLarge: 'The image exceeds the maximum size ({0}).',
1264
+ imageUploadError: 'The image could not be uploaded.',
1265
+ codeBlock: 'Code block',
1266
+ insertTable: 'Insert table',
1267
+ tableRows: 'Rows',
1268
+ tableColumns: 'Columns',
1269
+ tableHeaderRow: 'Header row',
1270
+ insert: 'Insert',
1271
+ tableTools: 'Table',
1272
+ insertRowAbove: 'Insert row above',
1273
+ insertRowBelow: 'Insert row below',
1274
+ insertColumnLeft: 'Insert column left',
1275
+ insertColumnRight: 'Insert column right',
1276
+ deleteRow: 'Delete row',
1277
+ deleteColumn: 'Delete column',
1278
+ deleteTable: 'Delete table',
1279
+ imageTools: 'Image',
1280
+ imageInline: 'In line with text',
1281
+ imageAlignLeft: 'Align left',
1282
+ imageAlignCenter: 'Center',
1283
+ imageAlignRight: 'Align right',
1284
+ imageWidth: 'Width {0}',
1285
+ imageOriginalSize: 'Original size',
1286
+ imageResize: 'Resize image',
1287
+ altText: 'Alternative text',
1288
+ deleteImage: 'Delete image',
1289
+ tableSize: '{0} rows × {1} columns',
1290
+ tableRow: 'Row',
1291
+ tableColumn: 'Column',
1292
+ above: 'Above',
1293
+ below: 'Below',
1294
+ toLeft: 'Left',
1295
+ toRight: 'Right',
1296
+ tableDelete: 'Delete',
1297
+ tableBorders: 'Borders',
1298
+ bordersAll: 'All borders',
1299
+ bordersHorizontal: 'Horizontal lines only',
1300
+ bordersNone: 'No borders',
1301
+ borderColor: 'Border color',
1302
+ colorGray: 'Gray',
1303
+ colorDark: 'Dark',
1304
+ colorGreen: 'Green',
1305
+ colorBlue: 'Blue',
1306
+ cropImage: 'Crop',
1307
+ cropArea: 'Crop area',
1308
+ cropFree: 'Free',
1309
+ cropInstructions: 'Drag the box or its corners. With the keyboard: arrows to move, Shift + arrows to resize.',
1310
+ cropError: 'The image could not be cropped. If it comes from another domain, its server must allow CORS.',
1311
+ exitFullscreen: 'Exit full screen',
1312
+ heading4: 'Heading 4',
1313
+ fontSize: 'Font size',
1314
+ fontNormal: 'Normal',
1315
+ textColor: 'Text color',
1316
+ highlight: 'Highlight',
1317
+ automaticColor: 'Automatic',
1318
+ noHighlight: 'No highlight',
1319
+ colorBlack: 'Black',
1320
+ colorRed: 'Red',
1321
+ colorOrange: 'Orange',
1322
+ colorYellow: 'Yellow',
1323
+ colorTeal: 'Teal',
1324
+ colorPurple: 'Purple',
1325
+ colorPink: 'Pink',
1326
+ subscript: 'Subscript',
1327
+ superscript: 'Superscript',
1328
+ taskList: 'Task list',
1329
+ indent: 'Increase indent',
1330
+ outdent: 'Decrease indent',
1331
+ alignJustify: 'Justify',
1332
+ alignment: 'Alignment',
1333
+ wordCount: '{0} words',
1334
+ wordCountOne: '{0} word',
1335
+ charCount: '{0} characters',
1336
+ fontFamily: 'Font',
1337
+ fontDefault: 'Default',
1338
+ fontGroupRecommended: 'Recommended',
1339
+ fontGroupOffice: 'Office classics',
1340
+ fontGroupSans: 'Modern sans serif',
1341
+ fontGroupSerif: 'Serif',
1342
+ fontGroupMono: 'Monospaced for code',
1343
+ fontGroupAccessible: 'Accessibility',
1344
+ fontGroupFun: 'Fun',
1345
+ specialCharacters: 'Special characters',
1346
+ charsCurrency: 'Currency',
1347
+ charsMath: 'Math',
1348
+ charsPunctuation: 'Punctuation and signs',
1349
+ charsArrows: 'Arrows',
1350
+ charsEmoji: 'Emoji',
1351
+ findReplace: 'Find and replace',
1352
+ findText: 'Find',
1353
+ replaceWith: 'Replace with',
1354
+ matchCase: 'Match case',
1355
+ wholeWords: 'Whole words',
1356
+ findPrevious: 'Previous result',
1357
+ findNext: 'Next result',
1358
+ replaceOne: 'Replace',
1359
+ replaceAll: 'Replace all',
1360
+ findCount: '{0} of {1}',
1361
+ replacedCount: 'Replacements made: {0}',
1362
+ quickFormat: 'Quick formatting',
1363
+ insertBlock: 'Insert block',
1364
+ paragraph: 'Paragraph',
1365
+ };
1366
+ /** Idiomas incluidos. */
1367
+ const CB_LOCALES = { es: CB_LOCALE_ES, en: CB_LOCALE_EN };
1368
+ /** Rellena `{0}`, `{1}`… con los argumentos. */
1369
+ function cbFormat(template, ...args) {
1370
+ return template.replace(/\{(\d+)\}/g, (m, i) => (args[+i] === undefined ? m : String(args[+i])));
1371
+ }
1372
+
1373
+ /**
1374
+ * Idioma de los textos de interfaz de CaribeNG. Se configura con
1375
+ * `provideCaribeNG({ locale, translation })` y puede cambiarse en caliente:
1376
+ * todos los componentes leen las traducciones como signal.
1377
+ *
1378
+ * ```ts
1379
+ * const locale = inject(CbLocaleService);
1380
+ * locale.use('en'); // idioma incluido
1381
+ * locale.setTranslation({ close: 'Salir' }); // sobrescribe textos sueltos
1382
+ * ```
1383
+ */
1384
+ class CbLocaleService {
1385
+ constructor() {
1386
+ this.config = inject(CB_CONFIG);
1387
+ this.base = signal(resolve(this.config.locale), /* @ts-ignore */
1388
+ ...(ngDevMode ? [{ debugName: "base" }] : /* istanbul ignore next */ []));
1389
+ this.overrides = signal(this.config.translation ?? {}, /* @ts-ignore */
1390
+ ...(ngDevMode ? [{ debugName: "overrides" }] : /* istanbul ignore next */ []));
1391
+ /** Traducciones activas (idioma base + textos sobrescritos). */
1392
+ this.translation = computed(() => ({ ...this.base(), ...this.overrides() }), /* @ts-ignore */
1393
+ ...(ngDevMode ? [{ debugName: "translation" }] : /* istanbul ignore next */ []));
1394
+ }
1395
+ /** Cambia el idioma base (`'es'`, `'en'` o un objeto de traducciones completo). */
1396
+ use(locale) {
1397
+ this.base.set(resolve(locale));
1398
+ }
1399
+ /** Sobrescribe textos sueltos sobre el idioma activo (se acumulan). */
1400
+ setTranslation(translation) {
1401
+ this.overrides.update((current) => ({ ...current, ...translation }));
1402
+ }
1403
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbLocaleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1404
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbLocaleService, providedIn: 'root' }); }
1405
+ }
1406
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CbLocaleService, decorators: [{
1407
+ type: Injectable,
1408
+ args: [{ providedIn: 'root' }]
1409
+ }] });
1410
+ /** Traducciones activas de CaribeNG como signal (para usar en componentes). */
1411
+ function injectCbTranslation() {
1412
+ return inject(CbLocaleService).translation;
1413
+ }
1414
+ function resolve(locale) {
1415
+ if (!locale)
1416
+ return CB_LOCALES.es;
1417
+ return typeof locale === 'string' ? (CB_LOCALES[locale] ?? CB_LOCALES.es) : locale;
1418
+ }
1419
+
252
1420
  /** Control vacío con el que se evalúa si los validadores incluyen `required`. */
253
1421
  const EMPTY = new FormControl(null);
254
1422
  /**
@@ -269,6 +1437,7 @@ const EMPTY = new FormControl(null);
269
1437
  function cbFieldState(manual) {
270
1438
  const injector = inject(Injector);
271
1439
  const config = inject(CB_CONFIG);
1440
+ const t = injectCbTranslation();
272
1441
  // Se incrementa con cada evento del control para recalcular los signals.
273
1442
  const version = signal(0, /* @ts-ignore */
274
1443
  ...(ngDevMode ? [{ debugName: "version" }] : /* istanbul ignore next */ []));
@@ -300,9 +1469,9 @@ function cbFieldState(manual) {
300
1469
  if (mode === 'asterisk' && isRequired)
301
1470
  return { kind: 'asterisk', text: '*' };
302
1471
  if (mode === 'text' && isRequired)
303
- return { kind: 'required', text: `(${config.requiredText})` };
1472
+ return { kind: 'required', text: `(${config.requiredText ?? t().required})` };
304
1473
  if (mode === 'optional' && !isRequired)
305
- return { kind: 'optional', text: `(${config.optionalText})` };
1474
+ return { kind: 'optional', text: `(${config.optionalText ?? t().optional})` };
306
1475
  return null;
307
1476
  }),
308
1477
  invalid: computed(() => {
@@ -314,6 +1483,47 @@ function cbFieldState(manual) {
314
1483
  };
315
1484
  }
316
1485
 
1486
+ /**
1487
+ * Gestión de foco de overlays (diálogos, paneles, popovers), según WAI-ARIA:
1488
+ * al abrirse, recuerda el elemento enfocado y mueve el foco a `initialFocus`;
1489
+ * al cerrarse, devuelve el foco al elemento que lo tenía.
1490
+ *
1491
+ * Debe llamarse en un contexto de inyección (constructor o inicializador de campo).
1492
+ *
1493
+ * @example
1494
+ * ```ts
1495
+ * readonly visible = model(false);
1496
+ * private readonly closeBtn = viewChild<ElementRef<HTMLButtonElement>>('closeBtn');
1497
+ * constructor() {
1498
+ * cbOverlayFocus({ open: this.visible, initialFocus: () => this.closeBtn()?.nativeElement });
1499
+ * }
1500
+ * ```
1501
+ */
1502
+ function cbOverlayFocus(options) {
1503
+ const injector = inject(Injector);
1504
+ const document = inject(DOCUMENT);
1505
+ let previous = null;
1506
+ let wasOpen = false;
1507
+ effect(() => {
1508
+ const open = options.open();
1509
+ if (open === wasOpen)
1510
+ return;
1511
+ wasOpen = open;
1512
+ untracked(() => {
1513
+ if (open) {
1514
+ previous = document.activeElement;
1515
+ afterNextRender(() => options.initialFocus()?.focus(), { injector });
1516
+ }
1517
+ else {
1518
+ const target = previous;
1519
+ previous = null;
1520
+ if (target?.isConnected)
1521
+ afterNextRender(() => target.focus(), { injector });
1522
+ }
1523
+ });
1524
+ });
1525
+ }
1526
+
317
1527
  /*
318
1528
  * Public API Surface de @caribeng/ui (entry point primario: núcleo + tema)
319
1529
  */
@@ -322,4 +1532,4 @@ function cbFieldState(manual) {
322
1532
  * Generated bundle index. Do not edit.
323
1533
  */
324
1534
 
325
- export { CB_COLOR_PRESETS, CB_CONFIG, CB_DEFAULT_CONFIG, CbThemeService, cbFieldState, provideCaribeNG };
1535
+ export { CB_COLOR_PRESETS, CB_CONFIG, CB_DEFAULT_CONFIG, CB_LOCALES, CB_LOCALE_EN, CB_LOCALE_ES, CbConfirmationService, CbLocaleService, CbThemeService, cbFieldState, cbFormat, cbOverlayFocus, cbRunCommand, cbVisibleItems, injectCbTranslation, provideCaribeNG };