@prolibu-suite/cobalt-core 0.10.0 → 0.10.2

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 (364) hide show
  1. package/custom-elements.json +481 -35
  2. package/dist/cjs/co-accordion.cjs.entry.js +33 -4
  3. package/dist/cjs/co-action-bar.cjs.entry.js +1 -1
  4. package/dist/cjs/co-audio-player.cjs.entry.js +82 -12
  5. package/dist/cjs/co-avatar.cjs.entry.js +72 -0
  6. package/dist/cjs/co-button.cjs.entry.js +1 -1
  7. package/dist/cjs/co-calendar_3.cjs.entry.js +7 -3
  8. package/dist/cjs/co-checkbox.cjs.entry.js +3 -3
  9. package/dist/cjs/co-chip_2.cjs.entry.js +68 -14
  10. package/dist/cjs/co-color-picker.cjs.entry.js +40 -10
  11. package/dist/cjs/co-column-picker.cjs.entry.js +1 -1
  12. package/dist/cjs/co-combobox.cjs.entry.js +1 -1
  13. package/dist/cjs/co-command-search.cjs.entry.js +1 -1
  14. package/dist/cjs/co-data-table.cjs.entry.js +82 -4
  15. package/dist/cjs/co-date-range-picker.cjs.entry.js +3 -1
  16. package/dist/cjs/co-emoji-picker.cjs.entry.js +1 -1
  17. package/dist/cjs/co-file-type-tile.cjs.entry.js +23 -7
  18. package/dist/cjs/co-input.cjs.entry.js +6 -2
  19. package/dist/cjs/co-menu-item.cjs.entry.js +1 -1
  20. package/dist/cjs/co-modal.cjs.entry.js +7 -3
  21. package/dist/cjs/co-navbar.cjs.entry.js +2 -2
  22. package/dist/cjs/co-number-field.cjs.entry.js +3 -3
  23. package/dist/cjs/co-overlay.cjs.entry.js +1 -1
  24. package/dist/cjs/co-page-header.cjs.entry.js +1 -1
  25. package/dist/cjs/co-phone-field.cjs.entry.js +5 -5
  26. package/dist/cjs/co-progress-bar.cjs.entry.js +2 -2
  27. package/dist/cjs/co-progress-circle.cjs.entry.js +2 -2
  28. package/dist/cjs/co-provider-logo_2.cjs.entry.js +1 -1
  29. package/dist/cjs/co-radio.cjs.entry.js +3 -3
  30. package/dist/cjs/co-rating.cjs.entry.js +3 -3
  31. package/dist/cjs/co-ref-field.cjs.entry.js +100 -9
  32. package/dist/cjs/co-rich-text-editor.cjs.entry.js +30 -10
  33. package/dist/cjs/co-rich-text-toolbar.cjs.entry.js +5 -2
  34. package/dist/cjs/co-rich-text-viewer.cjs.entry.js +19 -3
  35. package/dist/cjs/co-row.cjs.entry.js +2 -2
  36. package/dist/cjs/co-select.cjs.entry.js +8 -8
  37. package/dist/cjs/co-separator.cjs.entry.js +1 -1
  38. package/dist/cjs/co-sidebar-nav.cjs.entry.js +1 -1
  39. package/dist/cjs/co-sidebar.cjs.entry.js +2 -2
  40. package/dist/cjs/co-slider.cjs.entry.js +2 -2
  41. package/dist/cjs/co-switch.cjs.entry.js +3 -3
  42. package/dist/cjs/co-tab-group.cjs.entry.js +2 -2
  43. package/dist/cjs/co-tab.cjs.entry.js +2 -2
  44. package/dist/cjs/co-tags-field.cjs.entry.js +5 -5
  45. package/dist/cjs/co-textarea.cjs.entry.js +4 -4
  46. package/dist/cjs/co-time-field.cjs.entry.js +1 -1
  47. package/dist/cjs/co-toggle-button-group.cjs.entry.js +3 -3
  48. package/dist/cjs/co-toggle-button.cjs.entry.js +3 -3
  49. package/dist/cjs/{co-avatar_2.cjs.entry.js → co-tooltip.cjs.entry.js} +2 -70
  50. package/dist/cjs/co-video.cjs.entry.js +2 -2
  51. package/dist/cjs/cobalt.cjs.js +1 -1
  52. package/dist/cjs/{index-BYwrR87Z.js → index-2kMmd5-a.js} +6717 -6654
  53. package/dist/cjs/index-MDAnKsze.js +16 -12
  54. package/dist/cjs/loader.cjs.js +1 -1
  55. package/dist/cjs/{normalizeText-B-v-XPKf.js → normalizeText-D9rlJWZa.js} +29 -18
  56. package/dist/cjs/{toolbar-config-BSGas-Wl.js → toolbar-config-CYACt9hh.js} +13 -1
  57. package/dist/cobalt/cobalt.esm.js +1 -1
  58. package/dist/cobalt/{p-82266f11.entry.js → p-000a15b8.entry.js} +1 -1
  59. package/dist/cobalt/{p-e01f9b9a.entry.js → p-0c004735.entry.js} +1 -1
  60. package/dist/cobalt/{p-16954cea.entry.js → p-11c5ce78.entry.js} +1 -1
  61. package/dist/cobalt/{p-c465d619.entry.js → p-1861fe41.entry.js} +1 -1
  62. package/dist/cobalt/p-1cc818ca.entry.js +1 -0
  63. package/dist/cobalt/p-216a63ee.entry.js +1 -0
  64. package/dist/cobalt/p-24196410.entry.js +1 -0
  65. package/dist/cobalt/{p-4d897896.entry.js → p-28764b8e.entry.js} +1 -1
  66. package/dist/cobalt/{p-1a589c8e.entry.js → p-292b0389.entry.js} +1 -1
  67. package/dist/cobalt/{p-73c6d735.entry.js → p-2a30c143.entry.js} +1 -1
  68. package/dist/cobalt/{p-e8a4e6b0.entry.js → p-2c9dba2f.entry.js} +1 -1
  69. package/dist/cobalt/{p-83ea631d.entry.js → p-39a50e7f.entry.js} +1 -1
  70. package/dist/cobalt/p-39dc4ec8.entry.js +1 -0
  71. package/dist/cobalt/{p-325b91b6.entry.js → p-3d31c575.entry.js} +1 -1
  72. package/dist/cobalt/p-416795f5.entry.js +1 -0
  73. package/dist/cobalt/{p-37f5036b.entry.js → p-49834b8e.entry.js} +1 -1
  74. package/dist/cobalt/{p-54c987d7.entry.js → p-5a3e4c81.entry.js} +1 -1
  75. package/dist/cobalt/p-5c756787.entry.js +1 -0
  76. package/dist/cobalt/{p-27a7e549.entry.js → p-67f3b9d6.entry.js} +1 -1
  77. package/dist/cobalt/{p-bd683db3.entry.js → p-6a4f3179.entry.js} +1 -1
  78. package/dist/cobalt/{p-b565104d.entry.js → p-6dd220e0.entry.js} +1 -1
  79. package/dist/cobalt/{p-eb063cc0.entry.js → p-71cbc53c.entry.js} +1 -1
  80. package/dist/cobalt/p-72e52af7.entry.js +1 -0
  81. package/dist/cobalt/{p-50bcc76f.entry.js → p-7b5c555c.entry.js} +1 -1
  82. package/dist/cobalt/{p-10b82207.entry.js → p-8471abe2.entry.js} +1 -1
  83. package/dist/cobalt/{p-fe7e8813.entry.js → p-8530ad16.entry.js} +1 -1
  84. package/dist/cobalt/p-8a74bf7d.entry.js +1 -0
  85. package/dist/cobalt/{p-ea20f048.entry.js → p-8ebc0c12.entry.js} +1 -1
  86. package/dist/cobalt/p-8f2199ff.entry.js +1 -0
  87. package/dist/cobalt/p-9246e09c.entry.js +1 -0
  88. package/dist/cobalt/p-99a655f6.entry.js +1 -0
  89. package/dist/cobalt/{p-DOL2zACE.js → p-BAYo-RBt.js} +1 -1
  90. package/dist/cobalt/p-Ba_v-MzM.js +1 -0
  91. package/dist/cobalt/{p-Bryf3-Js.js → p-CJW9H3Gi.js} +1 -1
  92. package/dist/cobalt/p-a1b422ca.entry.js +1 -0
  93. package/dist/cobalt/p-a2462d7a.entry.js +1 -0
  94. package/dist/cobalt/p-ade07307.entry.js +1 -0
  95. package/dist/cobalt/{p-5298c030.entry.js → p-b437eff6.entry.js} +1 -1
  96. package/dist/cobalt/p-b698188c.entry.js +1 -0
  97. package/dist/cobalt/{p-6bf6bc3e.entry.js → p-b821d9de.entry.js} +1 -1
  98. package/dist/cobalt/p-bde32f8b.entry.js +1 -0
  99. package/dist/cobalt/{p-92b092db.entry.js → p-be34e447.entry.js} +1 -1
  100. package/dist/cobalt/{p-ad33c40e.entry.js → p-c30b4cb5.entry.js} +1 -1
  101. package/dist/cobalt/p-c7d7d7f7.entry.js +1 -0
  102. package/dist/cobalt/{p-aae86f96.entry.js → p-d0b2c418.entry.js} +1 -1
  103. package/dist/cobalt/p-d375014b.entry.js +1 -0
  104. package/dist/cobalt/p-eadfd661.entry.js +1 -0
  105. package/dist/cobalt/p-ee149fd2.entry.js +1 -0
  106. package/dist/cobalt/p-ef301976.entry.js +1 -0
  107. package/dist/cobalt/{p-fd150cc6.entry.js → p-f7eb1a40.entry.js} +1 -1
  108. package/dist/cobalt/p-f9a7b7c6.entry.js +1 -0
  109. package/dist/cobalt/{p-f68dd124.entry.js → p-fb2d1144.entry.js} +1 -1
  110. package/dist/collection/components/co-accordion/co-accordion.css +11 -4
  111. package/dist/collection/components/co-accordion/co-accordion.js +37 -6
  112. package/dist/collection/components/co-action-bar/co-action-bar.css +9 -2
  113. package/dist/collection/components/co-audio-player/co-audio-player.js +138 -12
  114. package/dist/collection/components/co-autocomplete/co-autocomplete.js +1 -1
  115. package/dist/collection/components/co-avatar/co-avatar.css +22 -1
  116. package/dist/collection/components/co-avatar-group/co-avatar-group.js +1 -1
  117. package/dist/collection/components/co-button/co-button.css +15 -3
  118. package/dist/collection/components/co-calendar/co-calendar.css +10 -4
  119. package/dist/collection/components/co-calendar/co-calendar.js +6 -2
  120. package/dist/collection/components/co-checkbox/co-checkbox.js +22 -3
  121. package/dist/collection/components/co-checkbox-group/co-checkbox-group.js +1 -1
  122. package/dist/collection/components/co-color-picker/co-color-picker.js +40 -10
  123. package/dist/collection/components/co-combobox/co-combobox.js +1 -1
  124. package/dist/collection/components/co-command-search/co-command-search.js +1 -1
  125. package/dist/collection/components/co-data-table/co-data-table.css +63 -2
  126. package/dist/collection/components/co-data-table/co-data-table.js +59 -4
  127. package/dist/collection/components/co-data-table/headerTruncationLogic.js +34 -0
  128. package/dist/collection/components/co-date-range-picker/co-date-range-picker.css +13 -0
  129. package/dist/collection/components/co-date-range-picker/co-date-range-picker.js +4 -2
  130. package/dist/collection/components/co-file-type-tile/co-file-type-tile.js +4 -43
  131. package/dist/collection/components/co-file-type-tile/co-file-type-tile.utils.js +55 -0
  132. package/dist/collection/components/co-input/co-input.js +17 -5
  133. package/dist/collection/components/co-menu-item/co-menu-item.css +9 -0
  134. package/dist/collection/components/co-modal/co-modal.css +6 -0
  135. package/dist/collection/components/co-modal/co-modal.js +33 -2
  136. package/dist/collection/components/co-navbar/co-navbar.js +2 -2
  137. package/dist/collection/components/co-number-field/co-number-field.js +3 -3
  138. package/dist/collection/components/co-option-list/co-option-list.js +38 -7
  139. package/dist/collection/components/co-option-list/optionListLogic.js +31 -8
  140. package/dist/collection/components/co-overlay/co-overlay.js +1 -1
  141. package/dist/collection/components/co-page-header/co-page-header.js +1 -1
  142. package/dist/collection/components/co-phone-field/co-phone-field.js +5 -5
  143. package/dist/collection/components/co-popover/co-popover.js +1 -1
  144. package/dist/collection/components/co-progress-bar/co-progress-bar.js +2 -2
  145. package/dist/collection/components/co-progress-circle/co-progress-circle.js +2 -2
  146. package/dist/collection/components/co-radio/co-radio.js +3 -3
  147. package/dist/collection/components/co-radio-group/co-radio-group.js +1 -1
  148. package/dist/collection/components/co-rating/co-rating.js +3 -3
  149. package/dist/collection/components/co-ref-field/co-ref-field.css +40 -0
  150. package/dist/collection/components/co-ref-field/co-ref-field.js +207 -11
  151. package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.css +22 -0
  152. package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.js +48 -8
  153. package/dist/collection/components/co-rich-text-toolbar/co-rich-text-toolbar.css +52 -0
  154. package/dist/collection/components/co-rich-text-toolbar/co-rich-text-toolbar.js +25 -2
  155. package/dist/collection/components/co-rich-text-viewer/co-rich-text-viewer.css +5 -0
  156. package/dist/collection/components/co-rich-text-viewer/co-rich-text-viewer.js +17 -1
  157. package/dist/collection/components/co-row/co-row.js +2 -2
  158. package/dist/collection/components/co-segmented-bar/co-segmented-bar.js +1 -1
  159. package/dist/collection/components/co-select/co-select.js +28 -9
  160. package/dist/collection/components/co-separator/co-separator.js +1 -1
  161. package/dist/collection/components/co-sidebar/co-sidebar.js +2 -2
  162. package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.js +1 -1
  163. package/dist/collection/components/co-skeleton/co-skeleton.js +1 -1
  164. package/dist/collection/components/co-slider/co-slider.js +2 -2
  165. package/dist/collection/components/co-switch/co-switch.js +3 -3
  166. package/dist/collection/components/co-tab/co-tab.js +2 -2
  167. package/dist/collection/components/co-tab-group/co-tab-group.js +2 -2
  168. package/dist/collection/components/co-tags-field/co-tags-field.js +5 -5
  169. package/dist/collection/components/co-textarea/co-textarea.js +4 -4
  170. package/dist/collection/components/co-time-field/co-time-field.js +1 -1
  171. package/dist/collection/components/co-toast/co-toast.js +2 -2
  172. package/dist/collection/components/co-toggle-button/co-toggle-button.css +6 -5
  173. package/dist/collection/components/co-toggle-button/co-toggle-button.js +2 -2
  174. package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.css +9 -5
  175. package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.js +2 -2
  176. package/dist/collection/components/co-tooltip/co-tooltip.js +2 -2
  177. package/dist/collection/components/co-transfer-list/co-transfer-list.js +1 -1
  178. package/dist/collection/components/co-video/co-video.js +2 -2
  179. package/dist/collection/utils/normalizeText.js +43 -0
  180. package/dist/components/co-accordion.js +1 -1
  181. package/dist/components/co-action-bar.js +1 -1
  182. package/dist/components/co-audio-player.js +1 -1
  183. package/dist/components/co-autocomplete.js +1 -1
  184. package/dist/components/co-avatar-group.js +1 -1
  185. package/dist/components/co-avatar.js +1 -1
  186. package/dist/components/co-button.js +1 -1
  187. package/dist/components/co-calendar-month.js +1 -1
  188. package/dist/components/co-calendar-timegrid.js +1 -1
  189. package/dist/components/co-calendar.js +1 -1
  190. package/dist/components/co-checkbox.js +1 -1
  191. package/dist/components/co-color-picker.js +1 -1
  192. package/dist/components/co-column-picker.js +1 -1
  193. package/dist/components/co-combobox.js +1 -1
  194. package/dist/components/co-command-search.js +1 -1
  195. package/dist/components/co-data-table.js +1 -1
  196. package/dist/components/co-date-picker.js +1 -1
  197. package/dist/components/co-date-range-picker.js +1 -1
  198. package/dist/components/co-date-range.js +1 -1
  199. package/dist/components/co-date-time-picker.js +1 -1
  200. package/dist/components/co-drawer.js +1 -1
  201. package/dist/components/co-drive-card.js +1 -1
  202. package/dist/components/co-emoji-picker.js +1 -1
  203. package/dist/components/co-event-calendar.js +1 -1
  204. package/dist/components/co-file-field.js +1 -1
  205. package/dist/components/co-file-type-tile.js +1 -1
  206. package/dist/components/co-input.js +1 -1
  207. package/dist/components/co-lightbox.js +1 -1
  208. package/dist/components/co-list-item.js +1 -1
  209. package/dist/components/co-menu-item.js +1 -1
  210. package/dist/components/co-modal.js +1 -1
  211. package/dist/components/co-navbar.js +1 -1
  212. package/dist/components/co-number-field.js +1 -1
  213. package/dist/components/co-option-list.js +1 -1
  214. package/dist/components/co-overlay.js +1 -1
  215. package/dist/components/co-page-header.js +1 -1
  216. package/dist/components/co-phone-field.js +1 -1
  217. package/dist/components/co-progress-bar.js +1 -1
  218. package/dist/components/co-progress-circle.js +1 -1
  219. package/dist/components/co-radio.js +1 -1
  220. package/dist/components/co-rating.js +1 -1
  221. package/dist/components/co-ref-field.js +1 -1
  222. package/dist/components/co-rich-text-editor.js +1 -1
  223. package/dist/components/co-rich-text-toolbar.js +1 -1
  224. package/dist/components/co-rich-text-viewer.js +1 -1
  225. package/dist/components/co-row.js +1 -1
  226. package/dist/components/co-select.js +1 -1
  227. package/dist/components/co-separator.js +1 -1
  228. package/dist/components/co-sidebar-nav.js +1 -1
  229. package/dist/components/co-sidebar.js +1 -1
  230. package/dist/components/co-skeleton.js +1 -1
  231. package/dist/components/co-slider.js +1 -1
  232. package/dist/components/co-switch.js +1 -1
  233. package/dist/components/co-tab-group.js +1 -1
  234. package/dist/components/co-tab.js +1 -1
  235. package/dist/components/co-tags-field.js +1 -1
  236. package/dist/components/co-textarea.js +1 -1
  237. package/dist/components/co-time-field.js +1 -1
  238. package/dist/components/co-toggle-button-group.js +1 -1
  239. package/dist/components/co-toggle-button.js +1 -1
  240. package/dist/components/co-tooltip.js +1 -1
  241. package/dist/components/co-video.js +1 -1
  242. package/dist/components/{p-CXPRaTuo.js → p-2EOI1nrz.js} +1 -1
  243. package/dist/components/p-7TncUlLN.js +1 -0
  244. package/dist/components/{p-DOL2zACE.js → p-BAYo-RBt.js} +1 -1
  245. package/dist/components/p-Ba_v-MzM.js +1 -0
  246. package/dist/components/p-BhCVadcA.js +1 -0
  247. package/dist/components/p-BrAFTkAn.js +1 -0
  248. package/dist/components/{p-DIo66nBr.js → p-Bsh0JMGf.js} +1 -1
  249. package/dist/components/{p-x4grh-eZ.js → p-CBTGN490.js} +1 -1
  250. package/dist/components/{p-Bryf3-Js.js → p-CJW9H3Gi.js} +1 -1
  251. package/dist/components/p-CWCYYQrF.js +1 -0
  252. package/dist/components/p-D7Lhxz7L.js +1 -0
  253. package/dist/components/{p-BxP8OBw6.js → p-DFlJMEJ-.js} +1 -1
  254. package/dist/components/p-DTPYZwaZ.js +1 -0
  255. package/dist/components/{p-Be_kyNRE.js → p-Dc_Kbari.js} +1 -1
  256. package/dist/components/{p-B1QFLcY9.js → p-Dcg4krSX.js} +1 -1
  257. package/dist/components/p-DrTRB8Ev.js +1 -0
  258. package/dist/components/{p-BBP5__CY.js → p-DvR45CLa.js} +1 -1
  259. package/dist/components/{p-CnX3L8aF.js → p-DxtNejr2.js} +1 -1
  260. package/dist/components/{p-DkDTmHCg.js → p-Nt4JJxbL.js} +1 -1
  261. package/dist/components/{p-Bv6U5y3d.js → p-uxdXViMV.js} +1 -1
  262. package/dist/esm/co-accordion.entry.js +33 -4
  263. package/dist/esm/co-action-bar.entry.js +1 -1
  264. package/dist/esm/co-audio-player.entry.js +82 -12
  265. package/dist/esm/co-avatar.entry.js +70 -0
  266. package/dist/esm/co-button.entry.js +1 -1
  267. package/dist/esm/co-calendar_3.entry.js +7 -3
  268. package/dist/esm/co-checkbox.entry.js +3 -3
  269. package/dist/esm/co-chip_2.entry.js +68 -14
  270. package/dist/esm/co-color-picker.entry.js +40 -10
  271. package/dist/esm/co-column-picker.entry.js +1 -1
  272. package/dist/esm/co-combobox.entry.js +1 -1
  273. package/dist/esm/co-command-search.entry.js +1 -1
  274. package/dist/esm/co-data-table.entry.js +82 -4
  275. package/dist/esm/co-date-range-picker.entry.js +3 -1
  276. package/dist/esm/co-emoji-picker.entry.js +1 -1
  277. package/dist/esm/co-file-type-tile.entry.js +23 -7
  278. package/dist/esm/co-input.entry.js +6 -2
  279. package/dist/esm/co-menu-item.entry.js +1 -1
  280. package/dist/esm/co-modal.entry.js +7 -3
  281. package/dist/esm/co-navbar.entry.js +2 -2
  282. package/dist/esm/co-number-field.entry.js +3 -3
  283. package/dist/esm/co-overlay.entry.js +1 -1
  284. package/dist/esm/co-page-header.entry.js +1 -1
  285. package/dist/esm/co-phone-field.entry.js +5 -5
  286. package/dist/esm/co-progress-bar.entry.js +2 -2
  287. package/dist/esm/co-progress-circle.entry.js +2 -2
  288. package/dist/esm/co-provider-logo_2.entry.js +1 -1
  289. package/dist/esm/co-radio.entry.js +3 -3
  290. package/dist/esm/co-rating.entry.js +3 -3
  291. package/dist/esm/co-ref-field.entry.js +100 -9
  292. package/dist/esm/co-rich-text-editor.entry.js +30 -10
  293. package/dist/esm/co-rich-text-toolbar.entry.js +5 -2
  294. package/dist/esm/co-rich-text-viewer.entry.js +19 -3
  295. package/dist/esm/co-row.entry.js +2 -2
  296. package/dist/esm/co-select.entry.js +8 -8
  297. package/dist/esm/co-separator.entry.js +1 -1
  298. package/dist/esm/co-sidebar-nav.entry.js +1 -1
  299. package/dist/esm/co-sidebar.entry.js +2 -2
  300. package/dist/esm/co-slider.entry.js +2 -2
  301. package/dist/esm/co-switch.entry.js +3 -3
  302. package/dist/esm/co-tab-group.entry.js +2 -2
  303. package/dist/esm/co-tab.entry.js +2 -2
  304. package/dist/esm/co-tags-field.entry.js +5 -5
  305. package/dist/esm/co-textarea.entry.js +4 -4
  306. package/dist/esm/co-time-field.entry.js +1 -1
  307. package/dist/esm/co-toggle-button-group.entry.js +3 -3
  308. package/dist/esm/co-toggle-button.entry.js +3 -3
  309. package/dist/esm/{co-avatar_2.entry.js → co-tooltip.entry.js} +3 -70
  310. package/dist/esm/co-video.entry.js +2 -2
  311. package/dist/esm/cobalt.js +1 -1
  312. package/dist/esm/{index-68iUQp5j.js → index-BBIYyvq-.js} +6717 -6654
  313. package/dist/esm/index-DH5lfRNj.js +16 -12
  314. package/dist/esm/loader.js +1 -1
  315. package/dist/esm/{normalizeText-CQY6Ul7q.js → normalizeText-Ba_v-MzM.js} +29 -18
  316. package/dist/esm/{toolbar-config-DOL2zACE.js → toolbar-config-BAYo-RBt.js} +13 -1
  317. package/dist/types/components/co-accordion/co-accordion.d.ts +17 -2
  318. package/dist/types/components/co-audio-player/co-audio-player.d.ts +25 -0
  319. package/dist/types/components/co-checkbox/co-checkbox.d.ts +4 -0
  320. package/dist/types/components/co-color-picker/co-color-picker.d.ts +4 -2
  321. package/dist/types/components/co-data-table/co-data-table.d.ts +15 -0
  322. package/dist/types/components/co-data-table/headerTruncationLogic.d.ts +24 -0
  323. package/dist/types/components/co-file-type-tile/co-file-type-tile.utils.d.ts +12 -0
  324. package/dist/types/components/co-input/co-input.d.ts +5 -1
  325. package/dist/types/components/co-modal/co-modal.d.ts +10 -0
  326. package/dist/types/components/co-option-list/co-option-list.d.ts +13 -0
  327. package/dist/types/components/co-option-list/optionListLogic.d.ts +23 -6
  328. package/dist/types/components/co-ref-field/co-ref-field.d.ts +38 -0
  329. package/dist/types/components/co-rich-text-editor/co-rich-text-editor.d.ts +7 -0
  330. package/dist/types/components/co-rich-text-toolbar/co-rich-text-toolbar.d.ts +4 -1
  331. package/dist/types/components/co-select/co-select.d.ts +6 -0
  332. package/dist/types/components.d.ts +120 -14
  333. package/dist/types/utils/normalizeText.d.ts +13 -0
  334. package/package.json +2 -2
  335. package/dist/cobalt/p-15d59169.entry.js +0 -1
  336. package/dist/cobalt/p-1788aab5.entry.js +0 -1
  337. package/dist/cobalt/p-20a39218.entry.js +0 -1
  338. package/dist/cobalt/p-3cc3ff93.entry.js +0 -1
  339. package/dist/cobalt/p-4908f33f.entry.js +0 -1
  340. package/dist/cobalt/p-63825d7f.entry.js +0 -1
  341. package/dist/cobalt/p-66b11b38.entry.js +0 -1
  342. package/dist/cobalt/p-6f700f0d.entry.js +0 -1
  343. package/dist/cobalt/p-83a9a05a.entry.js +0 -1
  344. package/dist/cobalt/p-85501c6a.entry.js +0 -1
  345. package/dist/cobalt/p-88195a63.entry.js +0 -1
  346. package/dist/cobalt/p-8fa5dc4a.entry.js +0 -1
  347. package/dist/cobalt/p-CQY6Ul7q.js +0 -1
  348. package/dist/cobalt/p-b0c4fc71.entry.js +0 -1
  349. package/dist/cobalt/p-b1e8d69e.entry.js +0 -1
  350. package/dist/cobalt/p-b48917c9.entry.js +0 -1
  351. package/dist/cobalt/p-c124e82b.entry.js +0 -1
  352. package/dist/cobalt/p-c32c176a.entry.js +0 -1
  353. package/dist/cobalt/p-e48f4e45.entry.js +0 -1
  354. package/dist/cobalt/p-e8a2f993.entry.js +0 -1
  355. package/dist/cobalt/p-eb8691f2.entry.js +0 -1
  356. package/dist/cobalt/p-ef5ca521.entry.js +0 -1
  357. package/dist/components/p-9ceBPSd1.js +0 -1
  358. package/dist/components/p-B2IsXte7.js +0 -1
  359. package/dist/components/p-BsTO1uUA.js +0 -1
  360. package/dist/components/p-CFFDmGPS.js +0 -1
  361. package/dist/components/p-CQY6Ul7q.js +0 -1
  362. package/dist/components/p-Cl3AdEQJ.js +0 -1
  363. package/dist/components/p-HxVRXXXC.js +0 -1
  364. package/dist/components/p-vby0ITbe.js +0 -1
@@ -17,15 +17,15 @@ export class CoRadio {
17
17
  };
18
18
  }
19
19
  render() {
20
- return (h("div", { key: '4d3635f594d87efe5dbfee2dae2c57dd359c79f8', class: {
20
+ return (h("div", { key: '59335ec237efb379852efc4fabcb7cbb37632a1e', class: {
21
21
  'co-radio-row': true,
22
22
  'co-radio-row--disabled': this.disabled,
23
- }, onClick: this.handleClick }, h("button", { key: '8e438682bc870404be748acba71589ab87f63dec', role: "radio", "aria-checked": String(this.checked), "aria-label": this.label || '', class: {
23
+ }, onClick: this.handleClick }, h("button", { key: 'dc726deac041e9df4cb34f60a473350426ed2cbc', role: "radio", "aria-checked": String(this.checked), "aria-label": this.label || '', class: {
24
24
  'co-radio': true,
25
25
  [`co-radio--${this.size}`]: true,
26
26
  'co-radio--checked': this.checked,
27
27
  'co-radio--disabled': this.disabled,
28
- }, disabled: this.disabled, part: "circle" }), this.label && (h("span", { key: '17668c66e61b664e3b49a2acd230b99b2cf8409b', class: "co-radio__label", part: "label" }, this.label))));
28
+ }, disabled: this.disabled, part: "circle" }), this.label && (h("span", { key: 'bf2602521d20f806283884ba3ebbab4ff4ef0c70', class: "co-radio__label", part: "label" }, this.label))));
29
29
  }
30
30
  static get is() { return "co-radio"; }
31
31
  static get encapsulation() { return "shadow"; }
@@ -219,7 +219,7 @@ export class CoRadioGroup {
219
219
  "references": {
220
220
  "RadioOption": {
221
221
  "location": "local",
222
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-radio-group/co-radio-group.tsx",
222
+ "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-radio-group/co-radio-group.tsx",
223
223
  "id": "src/components/co-radio-group/co-radio-group.tsx::RadioOption"
224
224
  }
225
225
  }
@@ -36,16 +36,16 @@ export class CoRating {
36
36
  const iconSize = this.size === 'large' ? 28 : 20;
37
37
  const active = this.hoverValue || this.value;
38
38
  const stars = Array.from({ length: this.max }, (_, i) => i + 1);
39
- return (h("div", { key: '3e6bb945a46ad896a07d2588c6a4d969bce3dfcf', class: {
39
+ return (h("div", { key: 'a825b7cf49067c0a12ccddb81554c172d90a888f', class: {
40
40
  'co-rating': true,
41
41
  'co-rating--disabled': this.disabled,
42
42
  'co-rating--readonly': this.readOnly,
43
43
  [`co-rating--${this.size}`]: true,
44
- } }, this.label && h("label", { key: 'ef9971e3314eb4f270c35b94d2a85f25b8861b68', class: "co-rating__label" }, this.label), h("div", { key: 'b1c3997ec8a3a8950e24ef97af571d5db7283b50', class: "co-rating__stars", onMouseLeave: this.handleMouseLeave }, stars.map(star => (h("button", { class: {
44
+ } }, this.label && h("label", { key: '354b3b676401d0265e5f64aed1b137b97a147468', class: "co-rating__label" }, this.label), h("div", { key: '29c8af2cde2482ac803e75025dc5533c7051c2ff', class: "co-rating__stars", onMouseLeave: this.handleMouseLeave }, stars.map(star => (h("button", { class: {
45
45
  'co-rating__star': true,
46
46
  'co-rating__star--active': star <= active,
47
47
  'co-rating__star--hover': this.hoverValue > 0 && star <= this.hoverValue,
48
- }, type: "button", tabIndex: this.disabled || this.readOnly ? -1 : 0, disabled: this.disabled, onClick: () => this.handleClick(star), onMouseEnter: () => this.handleMouseEnter(star), "aria-label": `${star} of ${this.max}` }, h("co-icon", { name: this.icon, size: iconSize, weight: star <= active ? 'fill' : 'regular' }))))), this.helperText && (h("div", { key: '523e14b17fceb0f52f77cd1e9b4053fdd25dffba', class: `co-rating__helper co-rating__helper--${this.status}` }, this.statusIcon && h("co-icon", { key: 'ae894de5a6c390837c511364b5e8b7ba8a8123f1', name: this.statusIcon, size: 14, weight: "fill", class: "co-rating__helper-icon" }), h("span", { key: '23d04a20799d6b15693c7eb119922e5584031373', class: "co-rating__helper-text" }, this.helperText)))));
48
+ }, type: "button", tabIndex: this.disabled || this.readOnly ? -1 : 0, disabled: this.disabled, onClick: () => this.handleClick(star), onMouseEnter: () => this.handleMouseEnter(star), "aria-label": `${star} of ${this.max}` }, h("co-icon", { name: this.icon, size: iconSize, weight: star <= active ? 'fill' : 'regular' }))))), this.helperText && (h("div", { key: '0fcc95b7e125f1ef57c67ed9e46d4511da5d3eaa', class: `co-rating__helper co-rating__helper--${this.status}` }, this.statusIcon && h("co-icon", { key: 'c9cb1f60e902c0b52a45225bedacd92ba08ae0b4', name: this.statusIcon, size: 14, weight: "fill", class: "co-rating__helper-icon" }), h("span", { key: '8a5479175de97fccb5947f2f8f2c87888481b104', class: "co-rating__helper-text" }, this.helperText)))));
49
49
  }
50
50
  static get is() { return "co-rating"; }
51
51
  static get encapsulation() { return "shadow"; }
@@ -163,6 +163,46 @@
163
163
  text-overflow: ellipsis;
164
164
  }
165
165
 
166
+ /* Valor heredado (inheritedLabel): lo que aplica por defecto con el campo
167
+ vacío. Se lee como contenido (text-secondary), no como hint (muted), y va
168
+ con un chip outlined opcional (inheritedBadgeLabel) que cabe en el trigger
169
+ md de 40px (22px = alto del contenido). */
170
+ /* El host block del co-tooltip es el ítem flex: min-width:0 acá y display:block
171
+ en el span son lo que deja truncar (un inline dentro del trigger no trunca). */
172
+ .co-ref-field__inherited-tip {
173
+ min-width: 0;
174
+ max-width: 100%;
175
+ }
176
+
177
+ .co-ref-field__inherited {
178
+ display: block;
179
+ color: var(--co-semantic-text-secondary);
180
+ font-size: inherit;
181
+ font-weight: 400;
182
+ line-height: 1;
183
+ white-space: nowrap;
184
+ overflow: hidden;
185
+ text-overflow: ellipsis;
186
+ }
187
+
188
+ .co-ref-field__inherited-badge {
189
+ flex-shrink: 0;
190
+ display: inline-flex;
191
+ align-items: center;
192
+ box-sizing: border-box;
193
+ height: 22px;
194
+ padding: 0 var(--co-spacing-sm2);
195
+ /* Escapes temáticos como el resto del trigger (--co-ref-field-trigger-*):
196
+ sobre una isla oscura en tema light, border-default (negro 16%) desaparece. */
197
+ border: 1px solid var(--co-ref-field-inherited-badge-border, var(--co-semantic-border-default));
198
+ border-radius: var(--co-border-radius-full);
199
+ color: var(--co-ref-field-inherited-badge-color, var(--co-semantic-text-secondary));
200
+ font-size: var(--co-font-size-12);
201
+ font-weight: 400;
202
+ line-height: 1;
203
+ white-space: nowrap;
204
+ }
205
+
166
206
  .co-ref-field__caret {
167
207
  flex-shrink: 0;
168
208
  color: var(--co-semantic-text-muted);
@@ -79,6 +79,15 @@ export class CoRefField {
79
79
  this.triggerBadgeIcon = '';
80
80
  /** Accessible name / tooltip for the trigger badge. */
81
81
  this.triggerBadgeLabel = '';
82
+ /**
83
+ * Valor HEREDADO: texto que se pinta cuando NO hay valor, en lugar del
84
+ * placeholder, para mostrar lo que aplica por defecto (p. ej. el layout
85
+ * predeterminado del workspace en Deal.proposal.template.layout). No es un
86
+ * valor: `value` sigue vacío y no hay ×. Vacío = placeholder de siempre.
87
+ */
88
+ this.inheritedLabel = '';
89
+ /** Chip outlined junto al valor heredado (p. ej. 'Predeterminado'). Solo con inheritedLabel. */
90
+ this.inheritedBadgeLabel = '';
82
91
  /**
83
92
  * Shape of the leading avatar (selected value + option rows). Defaults to
84
93
  * 'circle' (people refs); use 'square' for company/workspace refs — it renders
@@ -89,11 +98,21 @@ export class CoRefField {
89
98
  this.pinnable = false;
90
99
  /** Drag-reorder de la lista del panel (forward a co-option-list). */
91
100
  this.listReorderable = false;
101
+ /** Tooltip del valor heredado: co-tooltip lee `disabled` en el mouseenter
102
+ * (scheduleShow), así que el truncado se mide ANTES del hover — al montar /
103
+ * redimensionar el span (RO propio: el de los chips hace disconnect() por
104
+ * render) y al cambiar el texto — nunca en el hover mismo. */
105
+ this.inheritedTruncated = false;
92
106
  this.isOpen = false;
93
107
  /** How many trailing chips don't fit the trigger width (responsive mode). */
94
108
  this.overflowCount = 0;
95
109
  this.lastChipsKey = '\x00';
96
110
  this.pendingFocus = false;
111
+ /** El host proyecta su PROPIO panel (`<div slot="panel">`: galería, grid…)
112
+ * en lugar de la co-option-list. Se detecta al ABRIR — los hijos light-DOM
113
+ * ya existen y el panel se monta on-demand — y el host cierra/selecciona
114
+ * vía los métodos `selectOption`/`closePanel`. El footer se conserva. */
115
+ this.hasPanelSlot = false;
97
116
  // ── Popover event handlers ─────────────────────────────────
98
117
  this.handlePopoverOpen = () => {
99
118
  this.isOpen = true;
@@ -101,6 +120,28 @@ export class CoRefField {
101
120
  this.handlePopoverClose = () => {
102
121
  this.isOpen = false;
103
122
  };
123
+ this.measureInherited = () => {
124
+ const el = this.inheritedEl;
125
+ const truncated = el ? el.scrollWidth > el.clientWidth + 1 : false;
126
+ if (truncated !== this.inheritedTruncated)
127
+ this.inheritedTruncated = truncated;
128
+ };
129
+ // Stencil llama el ref con null al desmontar (nullifyVNodeRefs): observar /
130
+ // des-observar en el mismo lugar. observe() dispara una notificación inicial
131
+ // → primera medición sin hover previo.
132
+ this.setInheritedEl = (el) => {
133
+ var _a, _b;
134
+ const next = el || undefined;
135
+ if (next === this.inheritedEl)
136
+ return;
137
+ if (this.inheritedEl)
138
+ (_a = this.inheritedResizeObserver) === null || _a === void 0 ? void 0 : _a.unobserve(this.inheritedEl);
139
+ this.inheritedEl = next;
140
+ if (next)
141
+ (_b = this.inheritedResizeObserver) === null || _b === void 0 ? void 0 : _b.observe(next);
142
+ else if (this.inheritedTruncated)
143
+ this.inheritedTruncated = false;
144
+ };
104
145
  this.handleTriggerClick = (e) => {
105
146
  if (this.disabled)
106
147
  e.stopPropagation();
@@ -259,6 +300,11 @@ export class CoRefField {
259
300
  // Responsive chips: refit on any trigger width change (same pattern as
260
301
  // co-combobox).
261
302
  this.resizeObserver = new ResizeObserver(() => this.calcOverflow());
303
+ this.inheritedResizeObserver = new ResizeObserver(() => this.measureInherited());
304
+ // Reconexión del host: el observer es nuevo pero el span ya está montado y
305
+ // el ref no vuelve a llamarse (mismo elemento) → re-observar acá.
306
+ if (this.inheritedEl)
307
+ this.inheritedResizeObserver.observe(this.inheritedEl);
262
308
  }
263
309
  componentDidRender() {
264
310
  var _a, _b, _c, _d;
@@ -287,8 +333,9 @@ export class CoRefField {
287
333
  }
288
334
  }
289
335
  disconnectedCallback() {
290
- var _a;
336
+ var _a, _b;
291
337
  (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
338
+ (_b = this.inheritedResizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
292
339
  }
293
340
  /**
294
341
  * Counts how many trailing chips overflow the single-line chips wrapper
@@ -324,6 +371,7 @@ export class CoRefField {
324
371
  // ── Watchers ───────────────────────────────────────────────
325
372
  onOpenChange(isOpen) {
326
373
  if (isOpen) {
374
+ this.hasPanelSlot = !!this.el.querySelector(':scope > [slot="panel"]');
327
375
  this.coOpen.emit();
328
376
  // The panel is mounted on-demand: co-option-list takes its selected-first
329
377
  // snapshot in componentWillLoad on every open; we only need to focus the
@@ -338,6 +386,12 @@ export class CoRefField {
338
386
  this.restoreTriggerFocus();
339
387
  }
340
388
  }
389
+ // ── Valor heredado: medición del truncado (drives co-tooltip `disabled`) ──
390
+ onInheritedLabelChange() {
391
+ // El span no cambia de caja al cambiar el texto (overflow:hidden) → el RO
392
+ // no dispara: medir tras el render.
393
+ requestAnimationFrame(this.measureInherited);
394
+ }
341
395
  /** Devuelve el foco al trigger al cerrar el panel (Escape, selección),
342
396
  * salvo que el cierre venga de un click-outside que ya movió el foco a
343
397
  * otro elemento — en ese caso no robarlo. */
@@ -348,6 +402,25 @@ export class CoRefField {
348
402
  (_a = this.triggerEl) === null || _a === void 0 ? void 0 : _a.focus();
349
403
  }
350
404
  }
405
+ /** Selección desde un panel proyectado (slot `panel`): mismo contrato que un
406
+ * click en la co-option-list — actualiza `value`, emite `coChange` con
407
+ * `{ value, item }` y cierra en single. */
408
+ async selectOption(option) {
409
+ this.handleOptionClick(option);
410
+ }
411
+ /** Cierra el panel (Escape/Enter manejados por un panel proyectado). */
412
+ async closePanel() {
413
+ this.isOpen = false;
414
+ }
415
+ /** Abre el panel. Espejo de `closePanel` para un panel proyectado que se
416
+ * cierra a sí mismo (p.ej. para mostrar un modal — un click dentro de un
417
+ * co-modal cuenta como click-outside del popover) y quiere volver a abrirse
418
+ * después. No-op si está disabled, igual que el trigger. */
419
+ async openPanel() {
420
+ if (this.disabled)
421
+ return;
422
+ this.isOpen = true;
423
+ }
351
424
  // ── Render helpers ─────────────────────────────────────────
352
425
  renderTrigger() {
353
426
  const selected = this.effectiveDisplayItems;
@@ -359,7 +432,7 @@ export class CoRefField {
359
432
  [`co-ref-field--${this.normalizedSize}`]: true,
360
433
  [`co-ref-field--${this.status}`]: this.status !== 'default',
361
434
  'co-ref-field--flat': this.variant === 'flat',
362
- }, role: "combobox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-label": this.label || undefined, "aria-disabled": this.disabled ? 'true' : undefined, "aria-controls": this.isOpen ? CoRefField.LIST_ID : undefined, tabIndex: this.disabled ? -1 : 0, ref: (el) => (this.triggerEl = el), onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, this.iconLeft && (h("span", { class: "co-ref-field__icon" }, h("co-icon", { name: this.iconLeft, size: 16 }))), h("div", { class: "co-ref-field__value" }, !hasValue && h("span", { class: "co-ref-field__placeholder", part: "trigger-placeholder" }, this.placeholder), hasValue && !this.multiple && this.renderSingleValue(selected[0]), hasValue && this.multiple && this.renderMultipleValue(selected)), hasValue && this.triggerBadgeIcon && (h("span", { class: "co-ref-field__trigger-badge", part: "trigger-badge", role: "img", title: this.triggerBadgeLabel || undefined, "aria-label": this.triggerBadgeLabel || undefined }, h("co-icon", { name: this.triggerBadgeIcon, size: 11, weight: "fill" }))), hasValue && !this.multiple && this.editable && !this.disabled && (h("button", { class: "co-ref-field__edit", part: "trigger-edit", tabIndex: -1, onClick: this.handleEditClick, type: "button", title: this.editLabel || undefined, "aria-label": this.editLabel || undefined }, h("co-icon", { name: "pencil-simple", size: 14 }))), hasValue && this.clearable && !this.disabled && (h("button", { class: "co-ref-field__clear", part: "trigger-clear", tabIndex: -1, onClick: this.handleClear, type: "button" }, h("co-icon", { name: "x", size: 14 }))), h("span", { class: "co-ref-field__caret", part: "trigger-chevron" }, h("co-icon", { name: "caret-up-down", size: 16 }))));
435
+ }, role: "combobox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-label": this.label || undefined, "aria-disabled": this.disabled ? 'true' : undefined, "aria-controls": this.isOpen ? CoRefField.LIST_ID : undefined, tabIndex: this.disabled ? -1 : 0, ref: (el) => (this.triggerEl = el), onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, this.iconLeft && (h("span", { class: "co-ref-field__icon" }, h("co-icon", { name: this.iconLeft, size: 16 }))), h("div", { class: "co-ref-field__value" }, !hasValue && this.inheritedLabel && (h("co-tooltip", { block: true, class: "co-ref-field__inherited-tip", content: this.inheritedLabel, placement: "top", disabled: !this.inheritedTruncated }, h("span", { class: "co-ref-field__inherited", part: "trigger-inherited", ref: this.setInheritedEl }, this.inheritedLabel))), !hasValue && !this.inheritedLabel && (h("span", { class: "co-ref-field__placeholder", part: "trigger-placeholder" }, this.placeholder)), hasValue && !this.multiple && this.renderSingleValue(selected[0]), hasValue && this.multiple && this.renderMultipleValue(selected)), !hasValue && this.inheritedLabel && this.inheritedBadgeLabel && (h("span", { class: "co-ref-field__inherited-badge", part: "trigger-inherited-badge" }, this.inheritedBadgeLabel)), hasValue && this.triggerBadgeIcon && (h("span", { class: "co-ref-field__trigger-badge", part: "trigger-badge", role: "img", title: this.triggerBadgeLabel || undefined, "aria-label": this.triggerBadgeLabel || undefined }, h("co-icon", { name: this.triggerBadgeIcon, size: 11, weight: "fill" }))), hasValue && !this.multiple && this.editable && !this.disabled && (h("button", { class: "co-ref-field__edit", part: "trigger-edit", tabIndex: -1, onClick: this.handleEditClick, type: "button", title: this.editLabel || undefined, "aria-label": this.editLabel || undefined }, h("co-icon", { name: "pencil-simple", size: 14 }))), hasValue && this.clearable && !this.disabled && (h("button", { class: "co-ref-field__clear", part: "trigger-clear", tabIndex: -1, onClick: this.handleClear, type: "button" }, h("co-icon", { name: "x", size: 14 }))), h("span", { class: "co-ref-field__caret", part: "trigger-chevron" }, h("co-icon", { name: "caret-up-down", size: 16 }))));
363
436
  }
364
437
  /**
365
438
  * Leading visual for a selected value / chip. Prefers a real avatar (image
@@ -408,16 +481,31 @@ export class CoRefField {
408
481
  }, style: fill ? { backgroundColor: item.color } : undefined, onRemove: (e) => this.handleRemoveChip(item._id, e) }, item.image || item.avatar ? (this.renderItemAvatar(item)) : item.color && !fill ? (h("span", { class: "co-ref-field__chip-dot", style: { backgroundColor: item.color } })) : null));
409
482
  })), overflow > 0 && h("span", { class: "co-ref-field__chip-overflow" }, "+", overflow)));
410
483
  }
484
+ /** Botones del footer. `slotted`: dentro de la co-option-list van por su
485
+ * slot `footer`; en el panel proyectado se pintan directo bajo el slot. */
486
+ renderFooter(slotted) {
487
+ if (!this.showFooter)
488
+ return null;
489
+ return (h("div", { class: "co-ref-field__footer", slot: slotted ? 'footer' : undefined }, this.footerSecondaryLabel && (h("button", { class: "co-ref-field__footer-btn co-ref-field__footer-btn--secondary", type: "button", onClick: this.handleFooterSecondary }, h("co-icon", { name: "plus", size: 16 }), h("span", null, this.footerSecondaryLabel))), h("button", { class: "co-ref-field__footer-btn co-ref-field__footer-btn--primary", type: "button", onClick: this.handleFooterPrimary }, h("co-icon", { name: "check", size: 16 }), h("span", null, this.footerPrimaryLabel))));
490
+ }
411
491
  renderPanel() {
412
- return (h("div", { class: {
413
- 'co-ref-field__panel': true,
414
- 'co-ref-field__panel--dark': this.panelTheme === 'dark',
415
- 'co-ref-field__panel--light': this.panelTheme === 'light',
416
- }, style: this.panelWidth ? { width: this.panelWidth } : undefined }, h("co-option-list", { id: CoRefField.LIST_ID, ref: (el) => (this.optionListEl = el), items: typeof this.options === 'string' ? this.options : JSON.stringify(this.options), value: this.value, selectedItems: typeof this.selectedDisplay === 'string' ? this.selectedDisplay : JSON.stringify(this.selectedDisplay), multiple: this.multiple, selectedFirst: this.multiple, reorderable: this.multiple, pinnable: this.pinnable, listReorderable: this.listReorderable, selectedAffordance: "deselect", searchable: this.searchable, searchPlaceholder: this.searchPlaceholder, searchDebounce: this.searchDebounce, loading: this.loading, total: this.total, emptyMessage: this.emptyMessage, avatarShape: this.avatarShape, onCoSearch: (e) => this.coSearch.emit(e.detail), onCoChange: (e) => this.handleListChange(e.detail), onCoReorder: (e) => this.handleReorder(e.detail), onCoPinToggle: (e) => this.coPinToggle.emit(e.detail), onCoListReorder: (e) => this.coListReorder.emit(e.detail), onCoLoadMore: () => this.coLoadMore.emit() }, h("slot", { name: "panel-footer", slot: "footer" }), this.showFooter && (h("div", { class: "co-ref-field__footer", slot: "footer" }, this.footerSecondaryLabel && (h("button", { class: "co-ref-field__footer-btn co-ref-field__footer-btn--secondary", type: "button", onClick: this.handleFooterSecondary }, h("co-icon", { name: "plus", size: 16 }), h("span", null, this.footerSecondaryLabel))), h("button", { class: "co-ref-field__footer-btn co-ref-field__footer-btn--primary", type: "button", onClick: this.handleFooterPrimary }, h("co-icon", { name: "check", size: 16 }), h("span", null, this.footerPrimaryLabel)))))));
492
+ const panelClass = {
493
+ 'co-ref-field__panel': true,
494
+ 'co-ref-field__panel--dark': this.panelTheme === 'dark',
495
+ 'co-ref-field__panel--light': this.panelTheme === 'light',
496
+ };
497
+ const panelStyle = this.panelWidth ? { width: this.panelWidth } : undefined;
498
+ if (this.hasPanelSlot) {
499
+ // Panel del host: la búsqueda, las opciones y su a11y son suyas; acá
500
+ // quedan el chrome del panel (radius/tema/ancho), el id que el trigger
501
+ // referencia por aria-controls y el footer compartido.
502
+ return (h("div", { class: Object.assign(Object.assign({}, panelClass), { 'co-ref-field__panel--custom': true }), id: CoRefField.LIST_ID, style: panelStyle }, h("slot", { name: "panel" }), this.renderFooter(false)));
503
+ }
504
+ return (h("div", { class: panelClass, style: panelStyle }, h("co-option-list", { id: CoRefField.LIST_ID, ref: (el) => (this.optionListEl = el), items: typeof this.options === 'string' ? this.options : JSON.stringify(this.options), value: this.value, selectedItems: typeof this.selectedDisplay === 'string' ? this.selectedDisplay : JSON.stringify(this.selectedDisplay), multiple: this.multiple, selectedFirst: this.multiple, reorderable: this.multiple, pinnable: this.pinnable, listReorderable: this.listReorderable, selectedAffordance: "deselect", searchable: this.searchable, searchPlaceholder: this.searchPlaceholder, searchDebounce: this.searchDebounce, loading: this.loading, total: this.total, emptyMessage: this.emptyMessage, avatarShape: this.avatarShape, onCoSearch: (e) => this.coSearch.emit(e.detail), onCoChange: (e) => this.handleListChange(e.detail), onCoReorder: (e) => this.handleReorder(e.detail), onCoPinToggle: (e) => this.coPinToggle.emit(e.detail), onCoListReorder: (e) => this.coListReorder.emit(e.detail), onCoLoadMore: () => this.coLoadMore.emit() }, h("slot", { name: "panel-footer", slot: "footer" }), this.renderFooter(true))));
417
505
  }
418
506
  // ── Main render ────────────────────────────────────────────
419
507
  render() {
420
- return (h("div", { key: '8904995ce46d0552556775029316fa42c0d1261e', class: "co-ref-field" }, (this.label || this.secondaryLabel) && (h("div", { key: 'a3b1d77f18f04b0233d5cf9c5b18c484b60d06e4', class: "co-ref-field__labels" }, this.label && (h("label", { key: '837c1f52807a6b258874d4984fdd3aafd48737ed', class: "co-ref-field__label" }, this.labelIcon && (h("co-icon", { key: 'c9e74495eac50df1f9f074f3a25b3be7bcf36d1c', class: "co-ref-field__label-icon", name: this.labelIcon, size: 16 })), this.label, h(RequiredMark, { key: '49a4366d6fc20c7ddbad31d020a1d45ea4134554', required: this.required }))), this.secondaryLabel && (h("span", { key: '4f9dd9e68d79642cfafd16a71e51747599668f9e', class: "co-ref-field__secondary-label" }, this.secondaryLabel)))), h("co-popover", { key: '91ad529d27a62ccbcb8acac7f23cee7ac2ca33ce', open: this.isOpen, placement: "bottom-start", matchWidth: !this.panelWidth, offset: 4, onCoOpen: this.handlePopoverOpen, onCoClose: this.handlePopoverClose }, h("div", { key: '809b6f7e0f64ffd7c6151c1fae340114f5887e72', slot: "trigger" }, this.renderTrigger()), this.isOpen && this.renderPanel()), this.helperText && (h("div", { key: '4089f6e3cd993ce620742d619282d12542e87057', class: `co-ref-field__helper co-ref-field__helper--${this.status}` }, this.status !== 'default' && (h("co-icon", { key: '3d9e658ba0cc04034778911930837f1268afeedd', name: this.status === 'error' ? 'warning-circle' : this.status === 'success' ? 'check-circle' : 'info', size: 14 })), h("span", { key: '8c26be0575794b6f8b410f1fd0b71efd715d5324' }, this.helperText)))));
508
+ return (h("div", { key: 'fa7de667cc9002d1a4a042b0d200524cbcb89b78', class: "co-ref-field" }, (this.label || this.secondaryLabel) && (h("div", { key: 'a6ddd5b71364e4f5bdf63b04faa09bfc0a32f6bc', class: "co-ref-field__labels" }, this.label && (h("label", { key: '766f803c8be77f72e52e4d3cdd7b6d7a363a146a', class: "co-ref-field__label" }, this.labelIcon && (h("co-icon", { key: 'a8b6c7f189af4b9f37de8c3cc96cb489fd9183e4', class: "co-ref-field__label-icon", name: this.labelIcon, size: 16 })), this.label, h(RequiredMark, { key: '643edcb040ef9a91040e8d52f628bc0af06c36ba', required: this.required }))), this.secondaryLabel && (h("span", { key: '7a107c578e003760423acc6d450f2a42a0868375', class: "co-ref-field__secondary-label" }, this.secondaryLabel)))), h("co-popover", { key: '9938ca629c5927156ea137adfefd1d927104312b', open: this.isOpen, placement: "bottom-start", matchWidth: !this.panelWidth, offset: 4, onCoOpen: this.handlePopoverOpen, onCoClose: this.handlePopoverClose }, h("div", { key: '7618ea5fb13e4944596fd728cf934b5c28bd29ab', slot: "trigger" }, this.renderTrigger()), this.isOpen && this.renderPanel()), this.helperText && (h("div", { key: '1dd9fc7659e8f8791bb4b785407b0e89b32107c8', class: `co-ref-field__helper co-ref-field__helper--${this.status}` }, this.status !== 'default' && (h("co-icon", { key: '399674b95ebcc91581f1f1cea54451f8ee33d9da', name: this.status === 'error' ? 'warning-circle' : this.status === 'success' ? 'check-circle' : 'info', size: 14 })), h("span", { key: '640adc4e5cd4cd742a171cac1319b75489cb7ef8' }, this.helperText)))));
421
509
  }
422
510
  static get is() { return "co-ref-field"; }
423
511
  static get encapsulation() { return "shadow"; }
@@ -1088,6 +1176,46 @@ export class CoRefField {
1088
1176
  "attribute": "trigger-badge-label",
1089
1177
  "defaultValue": "''"
1090
1178
  },
1179
+ "inheritedLabel": {
1180
+ "type": "string",
1181
+ "mutable": false,
1182
+ "complexType": {
1183
+ "original": "string",
1184
+ "resolved": "string",
1185
+ "references": {}
1186
+ },
1187
+ "required": false,
1188
+ "optional": false,
1189
+ "docs": {
1190
+ "tags": [],
1191
+ "text": "Valor HEREDADO: texto que se pinta cuando NO hay valor, en lugar del\nplaceholder, para mostrar lo que aplica por defecto (p. ej. el layout\npredeterminado del workspace en Deal.proposal.template.layout). No es un\nvalor: `value` sigue vac\u00EDo y no hay \u00D7. Vac\u00EDo = placeholder de siempre."
1192
+ },
1193
+ "getter": false,
1194
+ "setter": false,
1195
+ "reflect": false,
1196
+ "attribute": "inherited-label",
1197
+ "defaultValue": "''"
1198
+ },
1199
+ "inheritedBadgeLabel": {
1200
+ "type": "string",
1201
+ "mutable": false,
1202
+ "complexType": {
1203
+ "original": "string",
1204
+ "resolved": "string",
1205
+ "references": {}
1206
+ },
1207
+ "required": false,
1208
+ "optional": false,
1209
+ "docs": {
1210
+ "tags": [],
1211
+ "text": "Chip outlined junto al valor heredado (p. ej. 'Predeterminado'). Solo con inheritedLabel."
1212
+ },
1213
+ "getter": false,
1214
+ "setter": false,
1215
+ "reflect": false,
1216
+ "attribute": "inherited-badge-label",
1217
+ "defaultValue": "''"
1218
+ },
1091
1219
  "panelWidth": {
1092
1220
  "type": "string",
1093
1221
  "mutable": false,
@@ -1171,6 +1299,7 @@ export class CoRefField {
1171
1299
  }
1172
1300
  static get states() {
1173
1301
  return {
1302
+ "inheritedTruncated": {},
1174
1303
  "isOpen": {},
1175
1304
  "overflowCount": {}
1176
1305
  };
@@ -1192,7 +1321,7 @@ export class CoRefField {
1192
1321
  "references": {
1193
1322
  "RefFieldOption": {
1194
1323
  "location": "local",
1195
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1324
+ "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1196
1325
  "id": "src/components/co-ref-field/co-ref-field.tsx::RefFieldOption"
1197
1326
  }
1198
1327
  }
@@ -1333,7 +1462,7 @@ export class CoRefField {
1333
1462
  "references": {
1334
1463
  "RefFieldOption": {
1335
1464
  "location": "local",
1336
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1465
+ "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1337
1466
  "id": "src/components/co-ref-field/co-ref-field.tsx::RefFieldOption"
1338
1467
  }
1339
1468
  }
@@ -1354,7 +1483,7 @@ export class CoRefField {
1354
1483
  "references": {
1355
1484
  "RefFieldOption": {
1356
1485
  "location": "local",
1357
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1486
+ "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1358
1487
  "id": "src/components/co-ref-field/co-ref-field.tsx::RefFieldOption"
1359
1488
  }
1360
1489
  }
@@ -1376,11 +1505,78 @@ export class CoRefField {
1376
1505
  }
1377
1506
  }];
1378
1507
  }
1508
+ static get methods() {
1509
+ return {
1510
+ "selectOption": {
1511
+ "complexType": {
1512
+ "signature": "(option: RefFieldOption) => Promise<void>",
1513
+ "parameters": [{
1514
+ "name": "option",
1515
+ "type": "RefFieldOption",
1516
+ "docs": ""
1517
+ }],
1518
+ "references": {
1519
+ "Promise": {
1520
+ "location": "global",
1521
+ "id": "global::Promise"
1522
+ },
1523
+ "RefFieldOption": {
1524
+ "location": "local",
1525
+ "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1526
+ "id": "src/components/co-ref-field/co-ref-field.tsx::RefFieldOption"
1527
+ }
1528
+ },
1529
+ "return": "Promise<void>"
1530
+ },
1531
+ "docs": {
1532
+ "text": "Selecci\u00F3n desde un panel proyectado (slot `panel`): mismo contrato que un\nclick en la co-option-list \u2014 actualiza `value`, emite `coChange` con\n`{ value, item }` y cierra en single.",
1533
+ "tags": []
1534
+ }
1535
+ },
1536
+ "closePanel": {
1537
+ "complexType": {
1538
+ "signature": "() => Promise<void>",
1539
+ "parameters": [],
1540
+ "references": {
1541
+ "Promise": {
1542
+ "location": "global",
1543
+ "id": "global::Promise"
1544
+ }
1545
+ },
1546
+ "return": "Promise<void>"
1547
+ },
1548
+ "docs": {
1549
+ "text": "Cierra el panel (Escape/Enter manejados por un panel proyectado).",
1550
+ "tags": []
1551
+ }
1552
+ },
1553
+ "openPanel": {
1554
+ "complexType": {
1555
+ "signature": "() => Promise<void>",
1556
+ "parameters": [],
1557
+ "references": {
1558
+ "Promise": {
1559
+ "location": "global",
1560
+ "id": "global::Promise"
1561
+ }
1562
+ },
1563
+ "return": "Promise<void>"
1564
+ },
1565
+ "docs": {
1566
+ "text": "Abre el panel. Espejo de `closePanel` para un panel proyectado que se\ncierra a s\u00ED mismo (p.ej. para mostrar un modal \u2014 un click dentro de un\nco-modal cuenta como click-outside del popover) y quiere volver a abrirse\ndespu\u00E9s. No-op si est\u00E1 disabled, igual que el trigger.",
1567
+ "tags": []
1568
+ }
1569
+ }
1570
+ };
1571
+ }
1379
1572
  static get elementRef() { return "el"; }
1380
1573
  static get watchers() {
1381
1574
  return [{
1382
1575
  "propName": "isOpen",
1383
1576
  "methodName": "onOpenChange"
1577
+ }, {
1578
+ "propName": "inheritedLabel",
1579
+ "methodName": "onInheritedLabelChange"
1384
1580
  }];
1385
1581
  }
1386
1582
  }
@@ -126,6 +126,28 @@ co-rich-text-editor {
126
126
  border-top-right-radius: calc(var(--co-border-radius-xs) - 1px);
127
127
  }
128
128
 
129
+ /* ---- Toolbar at the bottom (`toolbar-position="bottom"`) ----
130
+ The row owns the separator (border-top) and shows the frame's surface; the
131
+ toolbar inside drops its own border/background (co-rich-text-toolbar
132
+ `:host([position="bottom"])`). `<slot name="toolbar-end">` (light DOM) is the
133
+ consumer's footer, rendered whenever the mode is bottom — toolbar or not. */
134
+ .co-rich-text-editor__toolbar-row {
135
+ display: flex;
136
+ align-items: center;
137
+ justify-content: space-between;
138
+ gap: var(--co-spacing-md);
139
+ flex-shrink: 0;
140
+ min-width: 0;
141
+ border-top: 1px solid var(--co-semantic-border-subtle);
142
+ }
143
+
144
+ .co-rich-text-editor--toolbar-bottom .co-rich-text-editor__toolbar {
145
+ /* Nothing to nest at the top any more (mirror of the top-corner rule above). */
146
+ border-top-left-radius: 0;
147
+ border-top-right-radius: 0;
148
+ min-width: 0;
149
+ }
150
+
129
151
  .co-rte-content {
130
152
  min-height: 96px;
131
153
  color: var(--co-semantic-text-default);
@@ -37,6 +37,13 @@ export class CoRichTextEditor {
37
37
  this.autofocus = false;
38
38
  /** Toolbar layout. `auto` uses the preset default. */
39
39
  this.toolbar = 'auto';
40
+ /** Where the toolbar sits. `bottom` moves it under the content, into a row that also
41
+ * exposes a `toolbar-end` light-DOM slot (this component is `shadow: false`) for the
42
+ * consumer's footer (hint, submit). The row renders whenever the mode is `bottom`, even
43
+ * while the toolbar itself is hidden (disabled/readonly): keep the slotted child ALWAYS
44
+ * mounted and toggle its insides — a placeholder that comes and goes desyncs Stencil's
45
+ * slot relocation with the consumer's vdom. */
46
+ this.toolbarPosition = 'top';
40
47
  /** Passthrough: shows the toolbar attachment button (host owns the files). */
41
48
  this.attachmentsEnabled = false;
42
49
  /** BCP-47 locale for UI strings (e.g. 'en', 'es-CO', 'pt-BR'). Default English. */
@@ -296,7 +303,10 @@ export class CoRichTextEditor {
296
303
  }
297
304
  }
298
305
  sanitizeHtml(html) {
299
- return this.rt.sanitize(html, this.preset);
306
+ // Con las MISMAS features que cargaron el schema: sin ellas, un <img> con
307
+ // `features.image` o los attrs de menciones en un preset que no los lleva en
308
+ // su whitelist base se podaban EN SILENCIO al emitir (2026-09-18).
309
+ return this.rt.sanitize(html, this.preset, this.parsedFeatures);
300
310
  }
301
311
  buildOutput(editor) {
302
312
  const empty = editor.isEmpty;
@@ -1987,12 +1997,19 @@ export class CoRichTextEditor {
1987
1997
  const c = (((_a = dom === null || dom === void 0 ? void 0 : dom.closest) === null || _a === void 0 ? void 0 : _a.call(dom, '[data-resize-container]')) || dom);
1988
1998
  if (!c)
1989
1999
  return true;
1990
- c.dataset.imageLayout = node.attrs.imageLayout || 'inline';
2000
+ const layout = node.attrs.imageLayout || 'inline';
2001
+ c.dataset.imageLayout = layout;
1991
2002
  // Neutralise any absolute positioning baked by the old fixed-page model.
1992
2003
  c.style.position = '';
1993
2004
  c.style.left = '';
1994
2005
  c.style.top = '';
1995
2006
  c.style.zIndex = '';
2007
+ // The resize NodeView pins `display: inline-flex` INLINE on the container, which
2008
+ // beats the stylesheet's `display: block` for `center` / `full-width`: the editor
2009
+ // showed those images inline-left while the viewer (and the sent email) centred
2010
+ // them (2026-09-17). Clear it for block layouts so the CSS rule can apply; the
2011
+ // inline value is restored for flow layouts so the resize handles keep working.
2012
+ c.style.display = layout === 'center' || layout === 'full-width' ? '' : 'inline-flex';
1996
2013
  return true;
1997
2014
  });
1998
2015
  }
@@ -2034,7 +2051,12 @@ export class CoRichTextEditor {
2034
2051
  render() {
2035
2052
  const showToolbar = this.resolvedToolbar !== 'none' && !this.readonly && !this.disabled;
2036
2053
  const showCount = this.showCharacterCount || this.maxLength != null;
2037
- return (h("div", { key: '135188e840e6c824750f41311c8317677754a57e', class: {
2054
+ const bottom = this.toolbarPosition === 'bottom';
2055
+ const toolbar = showToolbar && (h("co-rich-text-toolbar", { key: '0df30a57a843cbcd967ffd254ae0e54bee448902', class: "co-rich-text-editor__toolbar", part: "toolbar", variant: this.resolvedToolbar, position: this.toolbarPosition, disabled: this.disabled || this.readonly, locale: this.locale, attachmentsEnabled: this.attachmentsEnabled, attachmentAccept: this.attachmentAccept, onCoAttachmentsSelected: (e) => {
2056
+ e.stopPropagation();
2057
+ this.coAttachmentsSelected.emit(e.detail);
2058
+ }, ref: (el) => (this.toolbarEl = el) }));
2059
+ return (h("div", { key: '03be9df0d50d00a3cf889b3404c4f347626aa27c', class: {
2038
2060
  'co-rich-text-editor': true,
2039
2061
  'co-rich-text-editor--focused': this.hasFocus,
2040
2062
  'co-rich-text-editor--disabled': this.disabled,
@@ -2042,10 +2064,8 @@ export class CoRichTextEditor {
2042
2064
  'co-rich-text-editor--loading': !this.ready,
2043
2065
  [`co-rich-text-editor--${this.status}`]: this.status !== 'default',
2044
2066
  'co-rich-text-editor--flat': this.variant === 'flat',
2045
- }, part: "wrapper" }, (this.label || this.secondaryLabel) && (h("div", { key: '6efe3d162583d450797bde27f772ed400f764f89', class: "co-rich-text-editor__labels" }, this.label && h("label", { key: 'e7e4b81fe3c7ac101b7583ef2aa75635c9730fc9', class: "co-rich-text-editor__label", part: "label" }, this.label), this.secondaryLabel && (h("span", { key: '57d843617b4faadb72997c94f89d3032da83c0ef', class: "co-rich-text-editor__secondary-label" }, this.secondaryLabel)))), h("div", { key: '8bdfacbab4a4b782d19cb1f3b42237387ed686c0', class: "co-rich-text-editor__frame" }, showToolbar && (h("co-rich-text-toolbar", { key: 'ef14095c7489e7f090cebaf227345a6ec7e8681f', class: "co-rich-text-editor__toolbar", part: "toolbar", variant: this.resolvedToolbar, disabled: this.disabled || this.readonly, locale: this.locale, attachmentsEnabled: this.attachmentsEnabled, attachmentAccept: this.attachmentAccept, onCoAttachmentsSelected: (e) => {
2046
- e.stopPropagation();
2047
- this.coAttachmentsSelected.emit(e.detail);
2048
- }, ref: (el) => (this.toolbarEl = el) })), h("div", { key: '554599eaefefb60470801d1ef6ced9ad271b197c', class: "co-rich-text-editor__box" }, h("div", { key: '85a5e5ace0ad305a58b4a18dd1f5cf102b5f480a', class: "co-rte-content", part: "content", role: "textbox", "aria-multiline": "true", "aria-label": this.label, "aria-required": this.required ? 'true' : undefined, "aria-invalid": this.status === 'error' ? 'true' : undefined, ref: (el) => (this.contentEl = el) }))), h("div", { key: 'dbc4bdbafa74e8fc19b243c151e5ade688b8f463', class: "co-rich-text-editor__footer" }, this.helperText && (h("div", { key: '464cbd83eef858073cd82cfc2d71772bf0a7904a', class: `co-rich-text-editor__helper co-rich-text-editor__helper--${this.status}`, part: "helper" }, h("co-icon", { key: '1bd007d69fac6948e30d585ad7b9f3ece0fe85ca', name: this.helperIcon, size: 14 }), h("span", { key: '33c618629fc830ff7cdb1bdb1b576bbbc3369435' }, this.helperText))), showCount && (h("span", { key: 'c0bfa6e67be05fe892c2f51b12392810e4d3fed0', class: "co-rich-text-editor__count", ref: (el) => (this.charCountEl = el) }, this.charCount, this.maxLength != null ? ` / ${this.maxLength}` : '')))));
2067
+ 'co-rich-text-editor--toolbar-bottom': bottom,
2068
+ }, part: "wrapper" }, (this.label || this.secondaryLabel) && (h("div", { key: 'ae732219465a376af19e771e63589c955be37c4b', class: "co-rich-text-editor__labels" }, this.label && h("label", { key: 'd316724c4f4bcbf55adf582b8ad40c6c45fba407', class: "co-rich-text-editor__label", part: "label" }, this.label), this.secondaryLabel && (h("span", { key: '3cca63f6dfa2335dcd7122eb734205d4fd86a90f', class: "co-rich-text-editor__secondary-label" }, this.secondaryLabel)))), h("div", { key: '620bd101dd94684f7b2d533401717eeb7421593c', class: "co-rich-text-editor__frame" }, !bottom && toolbar, h("div", { key: 'a20f163022dd1c6e23dfc222786ddf0fc6f9b3ac', class: "co-rich-text-editor__box" }, h("div", { key: 'd678e095ae36610895cb466c1a15c722b46d4483', class: "co-rte-content", part: "content", role: "textbox", "aria-multiline": "true", "aria-label": this.label, "aria-required": this.required ? 'true' : undefined, "aria-invalid": this.status === 'error' ? 'true' : undefined, ref: (el) => (this.contentEl = el) })), h("slot", { key: '62127cb0a34e7f43ceadcb20ef724aba0524fa69', name: "content-end" }), bottom && (h("div", { key: '99d574e7cbb2a115a243288b770cb03f1892ff93', class: "co-rich-text-editor__toolbar-row", part: "toolbar-row" }, toolbar, h("slot", { key: 'b9b971930ddda8d118c8b6d204fad8d41d25468e', name: "toolbar-end" })))), h("div", { key: 'caafa3f153192eee6efa7679dafa376dea69b150', class: "co-rich-text-editor__footer" }, this.helperText && (h("div", { key: '8d2ab21ababab2c14c912f8ffd6945001fca62f7', class: `co-rich-text-editor__helper co-rich-text-editor__helper--${this.status}`, part: "helper" }, h("co-icon", { key: 'b60df4c320b9356a87df39179c75360f91e858bf', name: this.helperIcon, size: 14 }), h("span", { key: 'd56108257c9bba2332e434d6240f4f387e2411f6' }, this.helperText))), showCount && (h("span", { key: '7973c2996e24ec991115fe4932915a9aefc1b495', class: "co-rich-text-editor__count", ref: (el) => (this.charCountEl = el) }, this.charCount, this.maxLength != null ? ` / ${this.maxLength}` : '')))));
2049
2069
  }
2050
2070
  static get is() { return "co-rich-text-editor"; }
2051
2071
  static get originalStyleUrls() {
@@ -2348,7 +2368,7 @@ export class CoRichTextEditor {
2348
2368
  "mutable": false,
2349
2369
  "complexType": {
2350
2370
  "original": "ToolbarVariant",
2351
- "resolved": "\"auto\" | \"basic\" | \"compact\" | \"compact-assets\" | \"full\" | \"none\" | \"notes\"",
2371
+ "resolved": "\"auto\" | \"basic\" | \"compact\" | \"compact-assets\" | \"email\" | \"full\" | \"none\" | \"notes\"",
2352
2372
  "references": {
2353
2373
  "ToolbarVariant": {
2354
2374
  "location": "import",
@@ -2370,6 +2390,26 @@ export class CoRichTextEditor {
2370
2390
  "attribute": "toolbar",
2371
2391
  "defaultValue": "'auto'"
2372
2392
  },
2393
+ "toolbarPosition": {
2394
+ "type": "string",
2395
+ "mutable": false,
2396
+ "complexType": {
2397
+ "original": "'top' | 'bottom'",
2398
+ "resolved": "\"bottom\" | \"top\"",
2399
+ "references": {}
2400
+ },
2401
+ "required": false,
2402
+ "optional": false,
2403
+ "docs": {
2404
+ "tags": [],
2405
+ "text": "Where the toolbar sits. `bottom` moves it under the content, into a row that also\nexposes a `toolbar-end` light-DOM slot (this component is `shadow: false`) for the\nconsumer's footer (hint, submit). The row renders whenever the mode is `bottom`, even\nwhile the toolbar itself is hidden (disabled/readonly): keep the slotted child ALWAYS\nmounted and toggle its insides \u2014 a placeholder that comes and goes desyncs Stencil's\nslot relocation with the consumer's vdom."
2406
+ },
2407
+ "getter": false,
2408
+ "setter": false,
2409
+ "reflect": true,
2410
+ "attribute": "toolbar-position",
2411
+ "defaultValue": "'top'"
2412
+ },
2373
2413
  "features": {
2374
2414
  "type": "string",
2375
2415
  "mutable": false,