@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
@@ -1,42 +1,5 @@
1
1
  import { h } from "@stencil/core";
2
- /** Extension → type bucket. Unknown extensions fall back to `file`. */
3
- const EXT_TO_TYPE = {
4
- pdf: 'pdf',
5
- doc: 'doc',
6
- docx: 'doc',
7
- txt: 'txt',
8
- md: 'txt',
9
- xls: 'sheet',
10
- xlsx: 'sheet',
11
- csv: 'sheet',
12
- png: 'image',
13
- jpg: 'image',
14
- jpeg: 'image',
15
- gif: 'image',
16
- svg: 'image',
17
- webp: 'image',
18
- mp4: 'video',
19
- mov: 'video',
20
- webm: 'video',
21
- fig: 'design',
22
- ai: 'design',
23
- psd: 'design',
24
- sketch: 'design',
25
- zip: 'zip',
26
- rar: 'zip',
27
- };
28
- /** Type → { icon, accent (foreground), tint (background) }. Exact values per design spec (audit 1.6). */
29
- const TYPE_META = {
30
- pdf: { icon: 'file-pdf', accent: 'var(--co-color-secondary-rojo-100)', tint: 'rgb(255,236,236)' },
31
- doc: { icon: 'file-text', accent: 'var(--co-color-primary-azul)', tint: 'var(--co-color-azul-100)' },
32
- sheet: { icon: 'table', accent: 'var(--co-color-status-success)', tint: 'var(--co-color-verde-100)' },
33
- image: { icon: 'image', accent: 'var(--co-color-secondary-violeta-100)', tint: 'rgb(233,232,255)' },
34
- video: { icon: 'broadcast', accent: 'var(--co-color-secondary-naranja-100)', tint: 'rgb(255,236,220)' },
35
- txt: { icon: 'text-align-left', accent: 'var(--co-color-gray-600)', tint: 'var(--co-color-gray-100)' },
36
- design: { icon: 'sparkle', accent: 'var(--co-color-primary-rosado)', tint: 'var(--co-color-rosado-100)' },
37
- zip: { icon: 'package', accent: 'var(--co-color-status-pending)', tint: 'var(--co-color-status-bg-pending)' },
38
- file: { icon: 'file', accent: 'var(--co-color-gray-600)', tint: 'var(--co-color-gray-100)' },
39
- };
2
+ import { resolveFileTileType, TYPE_META } from "./co-file-type-tile.utils";
40
3
  export class CoFileTypeTile {
41
4
  constructor() {
42
5
  /** Tile edge length in px (React uses 44 / 34 / 26). */
@@ -47,14 +10,12 @@ export class CoFileTypeTile {
47
10
  this.colorTags = true;
48
11
  }
49
12
  render() {
50
- var _a, _b;
51
- const key = ((_a = this.ext) !== null && _a !== void 0 ? _a : '').trim().toLowerCase().replace(/^\./, '');
52
- const type = (_b = EXT_TO_TYPE[key]) !== null && _b !== void 0 ? _b : 'file';
13
+ const type = resolveFileTileType(this.ext);
53
14
  const meta = TYPE_META[type];
54
15
  const iconSize = Math.round(this.size * 0.5);
55
16
  const background = this.colorTags ? meta.tint : 'var(--co-color-gray-100)';
56
17
  const color = this.colorTags ? meta.accent : 'var(--co-color-gray-600)';
57
- return (h("span", { key: '1df6dee1c0f729279f36463be6df9137bcbf4af0', class: {
18
+ return (h("span", { key: '0cbc40f94f5d917b4f3c35e0a9678daa81a58624', class: {
58
19
  'co-file-type-tile': true,
59
20
  [`co-file-type-tile--${type}`]: true,
60
21
  'co-file-type-tile--mono': !this.colorTags,
@@ -64,7 +25,7 @@ export class CoFileTypeTile {
64
25
  borderRadius: `${this.radius}px`,
65
26
  background,
66
27
  color,
67
- } }, h("co-icon", { key: '566163b957b853911e3eef15cd38c7573cf749b4', name: meta.icon, size: iconSize, weight: "fill" })));
28
+ } }, h("co-icon", { key: 'c5245ababcc734116d4e71dd48e41bf66d02fdff', name: meta.icon, size: iconSize, weight: "fill" })));
68
29
  }
69
30
  static get is() { return "co-file-type-tile"; }
70
31
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,55 @@
1
+ /** Extension → type bucket. Unknown extensions fall back to `file`. */
2
+ export const EXT_TO_TYPE = {
3
+ pdf: 'pdf',
4
+ doc: 'doc',
5
+ docx: 'doc',
6
+ odt: 'doc',
7
+ txt: 'txt',
8
+ md: 'txt',
9
+ xls: 'sheet',
10
+ xlsx: 'sheet',
11
+ csv: 'sheet',
12
+ ods: 'sheet',
13
+ ppt: 'slides',
14
+ pptx: 'slides',
15
+ key: 'slides',
16
+ png: 'image',
17
+ jpg: 'image',
18
+ jpeg: 'image',
19
+ gif: 'image',
20
+ svg: 'image',
21
+ webp: 'image',
22
+ mp4: 'video',
23
+ mov: 'video',
24
+ webm: 'video',
25
+ fig: 'design',
26
+ ai: 'design',
27
+ psd: 'design',
28
+ sketch: 'design',
29
+ zip: 'zip',
30
+ rar: 'zip',
31
+ // Forwarded emails (tickets created from an inbox carry the original
32
+ // messages as attachments): `.eml` from Gmail/IMAP, `.msg` from Outlook.
33
+ eml: 'mail',
34
+ msg: 'mail',
35
+ };
36
+ /** Type → { icon, accent (foreground), tint (background) }. Exact values per design spec (audit 1.6). */
37
+ export const TYPE_META = {
38
+ pdf: { icon: 'file-pdf', accent: 'var(--co-color-secondary-rojo-100)', tint: 'rgb(255,236,236)' },
39
+ doc: { icon: 'file-text', accent: 'var(--co-color-primary-azul)', tint: 'var(--co-color-azul-100)' },
40
+ sheet: { icon: 'table', accent: 'var(--co-color-status-success)', tint: 'var(--co-color-verde-100)' },
41
+ slides: { icon: 'presentation-chart', accent: 'var(--co-color-secondary-guinda-100)', tint: 'var(--co-color-secondary-guinda-25)' },
42
+ image: { icon: 'image', accent: 'var(--co-color-secondary-violeta-100)', tint: 'rgb(233,232,255)' },
43
+ video: { icon: 'broadcast', accent: 'var(--co-color-secondary-naranja-100)', tint: 'rgb(255,236,220)' },
44
+ txt: { icon: 'text-align-left', accent: 'var(--co-color-gray-600)', tint: 'var(--co-color-gray-100)' },
45
+ design: { icon: 'sparkle', accent: 'var(--co-color-primary-rosado)', tint: 'var(--co-color-rosado-100)' },
46
+ zip: { icon: 'package', accent: 'var(--co-color-status-pending)', tint: 'var(--co-color-status-bg-pending)' },
47
+ mail: { icon: 'envelope-simple', accent: 'var(--co-color-secondary-turquesa-100)', tint: 'var(--co-color-secondary-turquesa-25)' },
48
+ file: { icon: 'file', accent: 'var(--co-color-gray-600)', tint: 'var(--co-color-gray-100)' },
49
+ };
50
+ /** Bucket for an extension: case-insensitive, a leading dot is ignored, unknown → `file`. */
51
+ export function resolveFileTileType(ext) {
52
+ var _a;
53
+ const key = (ext !== null && ext !== void 0 ? ext : '').trim().toLowerCase().replace(/^\./, '');
54
+ return (_a = EXT_TO_TYPE[key]) !== null && _a !== void 0 ? _a : 'file';
55
+ }
@@ -120,9 +120,13 @@ export class CoInput {
120
120
  }
121
121
  }
122
122
  /** Programmatically focus the inner input (post-hydration safe). */
123
- async setFocus() {
123
+ /** Enfoca el input nativo. `options` se reenvía a `focus()` — p. ej.
124
+ * `{ preventScroll: true }` para un buscador que vive en un panel
125
+ * top-layer (co-popover): el scroll nativo hacia el foco trepa por los
126
+ * ancestros del light DOM y arrastra al host (drawer) sin necesidad. */
127
+ async setFocus(options) {
124
128
  var _a;
125
- (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.focus();
129
+ (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.focus(options);
126
130
  }
127
131
  componentDidLoad() {
128
132
  var _a;
@@ -742,18 +746,26 @@ export class CoInput {
742
746
  return {
743
747
  "setFocus": {
744
748
  "complexType": {
745
- "signature": "() => Promise<void>",
746
- "parameters": [],
749
+ "signature": "(options?: FocusOptions) => Promise<void>",
750
+ "parameters": [{
751
+ "name": "options",
752
+ "type": "FocusOptions | undefined",
753
+ "docs": ""
754
+ }],
747
755
  "references": {
748
756
  "Promise": {
749
757
  "location": "global",
750
758
  "id": "global::Promise"
759
+ },
760
+ "FocusOptions": {
761
+ "location": "global",
762
+ "id": "global::FocusOptions"
751
763
  }
752
764
  },
753
765
  "return": "Promise<void>"
754
766
  },
755
767
  "docs": {
756
- "text": "Programmatically focus the inner input (post-hydration safe).",
768
+ "text": "Enfoca el input nativo. `options` se reenv\u00EDa a `focus()` \u2014 p. ej.\n`{ preventScroll: true }` para un buscador que vive en un panel\ntop-layer (co-popover): el scroll nativo hacia el foco trepa por los\nancestros del light DOM y arrastra al host (drawer) sin necesidad.",
757
769
  "tags": []
758
770
  }
759
771
  }
@@ -122,6 +122,15 @@
122
122
 
123
123
  .co-menu-item__trigger-wrap { display: block; }
124
124
 
125
+ /* El trigger de un submenú va envuelto en co-popover, cuyo :host es inline-block:
126
+ sin esto la fila se encoge a su contenido y la flecha queda pegada al texto en
127
+ vez de al borde derecho del panel (las filas hoja no pasan por co-popover). Una
128
+ regla del scope exterior sobre el host gana a su :host. */
129
+ .co-menu-item__wrap--submenu > co-popover {
130
+ display: block;
131
+ width: 100%;
132
+ }
133
+
125
134
  .co-menu-item__submenu {
126
135
  /* surface-secondary = base-blanco. NOT surface-primary (that's base-negro). */
127
136
  background: var(--co-semantic-surface-secondary, #fff);
@@ -234,3 +234,9 @@
234
234
  .co-modal--no-dividers .co-modal__footer {
235
235
  border-top: none;
236
236
  }
237
+
238
+ /* header-divider="false": the body runs straight under the heading. */
239
+ .co-modal--no-header-divider .co-modal__body {
240
+ border-top: none;
241
+ padding-top: 0;
242
+ }
@@ -3,7 +3,14 @@ import { afterEventFor } from "../co-overlay/overlayAfterClose";
3
3
  import { slotHasContent } from "../../utils/slotContent";
4
4
  /**
5
5
  * @slot - Modal body content
6
+ * @slot header-leading - Control before the heading (e.g. a back arrow on a
7
+ * second screen of the same modal)
8
+ * @slot header-actions - Controls at the right end of the header (e.g. a settings
9
+ * icon-button), before the close button
6
10
  * @slot footer - Footer with action buttons
11
+ * @part modal | header | header-text | heading | description | body | footer -
12
+ * layout/typography hooks for a consumer that must match a specific spec
13
+ * (paddings, heading weight); colors stay on semantic tokens
7
14
  */
8
15
  export class CoModal {
9
16
  constructor() {
@@ -36,6 +43,9 @@ export class CoModal {
36
43
  this.size = 'md';
37
44
  /** Hide body section and all border dividers (compact confirm dialogs) */
38
45
  this.noDividers = false;
46
+ /** Hairline between header and body. `false` lets the body run straight
47
+ * under the heading (Figma modals whose first row is a segmented control). */
48
+ this.headerDivider = true;
39
49
  /* `:empty` can't see across a <slot>, so slotted presence is tracked in JS */
40
50
  this.hasFooter = false;
41
51
  this.handleFooterSlotChange = (e) => {
@@ -68,7 +78,7 @@ export class CoModal {
68
78
  this.coClose.emit();
69
79
  }
70
80
  render() {
71
- return (h("co-overlay", { key: '40c8e5bd7300ba5b9b9dbe5eed4d3f369f15002d', open: this.open, onCoClose: this.handleOverlayClick }, h("div", { key: '466391dc8b03381f4a00f4e95605c1c22d2eb052', class: "co-modal__frame co-sq-elevation-fallback" }, h("div", { key: 'af09fd79f4c716cfc76eda669ccab0da258d6dde', class: {
81
+ return (h("co-overlay", { key: '9b796364a697af4d4a0ede50e5dd5516ccaa299f', open: this.open, onCoClose: this.handleOverlayClick }, h("div", { key: 'bea863aedb405cdc492277add25e2c08ea7ef258', class: "co-modal__frame co-sq-elevation-fallback" }, h("div", { key: '05f9e86f7a813243913f60c6a042fb93ed65a463', class: {
72
82
  'co-modal': true,
73
83
  'co-sq-clip': true,
74
84
  'co-sq-elevation': true,
@@ -77,7 +87,8 @@ export class CoModal {
77
87
  'co-modal--lg': this.size === 'lg',
78
88
  'co-modal--full': this.size === 'full',
79
89
  'co-modal--no-dividers': this.noDividers,
80
- }, part: "modal", ref: (el) => (this.modalEl = el), role: "dialog", "aria-modal": "true", "aria-labelledby": this.heading ? 'modal-heading' : undefined, onClick: this.stopPropagation, onTransitionEnd: this.handleTransitionEnd }, h("div", { key: '5149098013107e3dab0149131f4110e2f039d6b6', class: "co-modal__header", part: "header" }, h("div", { key: '2c9c7d6378b7bb536f9c4ade2af7643b4d1e8e9f', class: "co-modal__header-text" }, h("h2", { key: '36f1000d5795862fe319dda98c40b68578b794df', class: "co-modal__heading", id: "modal-heading" }, this.heading), this.description && (h("p", { key: 'ac1e07eb244b986b29763eecfbafcddab36626da', class: "co-modal__description" }, this.description))), this.closable && (h("button", { key: '5727e992fef9c2e4ab7e53624734d71de8ef28fe', class: "co-modal__close", type: "button", "aria-label": "Close", onClick: this.handleCloseClick }, h("co-icon", { key: 'ad217f504bccd348576cb2badb63786179d70122', name: "x", size: 20 })))), !this.noDividers && (h("div", { key: '7a1c7801132cb4470914167acddafda8f789ec92', class: "co-modal__body", part: "body" }, h("slot", { key: 'd00f9a7566eb30a73a40539c42f55061e1c27e12' }))), h("div", { key: '461f22cf012d9ea515863ae249ed257337c17bff', class: { 'co-modal__footer': true, 'co-modal__footer--empty': !this.hasFooter }, part: "footer" }, h("slot", { key: '641074e1b09f74d5bb817fe60ea97953fa1f6b99', name: "footer", onSlotchange: this.handleFooterSlotChange }))))));
90
+ 'co-modal--no-header-divider': !this.headerDivider,
91
+ }, part: "modal", ref: (el) => (this.modalEl = el), role: "dialog", "aria-modal": "true", "aria-labelledby": this.heading ? 'modal-heading' : undefined, onClick: this.stopPropagation, onTransitionEnd: this.handleTransitionEnd }, h("div", { key: '8ecd9f7f4413339e484710e2abef1c21fc7f25d0', class: "co-modal__header", part: "header" }, h("slot", { key: '09df61b3aac8a26e0eb85a6a6aa48f9a7f547dbf', name: "header-leading" }), h("div", { key: '8e9a55561a1b5615f77eb3eb96284ddc68eddbc3', class: "co-modal__header-text", part: "header-text" }, h("h2", { key: '65c083247543448d9f527592cd8614a4c713cf4c', class: "co-modal__heading", part: "heading", id: "modal-heading" }, this.heading), this.description && (h("p", { key: 'c871aa6549cf56265a02048ca18f736d92d1a482', class: "co-modal__description", part: "description" }, this.description))), h("slot", { key: '106a5be71c8c03736313c1084c61d3b836ebb495', name: "header-actions" }), this.closable && (h("button", { key: 'a0df67cd09e5f414c58f9f67f6a92c58b9f4773b', class: "co-modal__close", type: "button", "aria-label": "Close", onClick: this.handleCloseClick }, h("co-icon", { key: 'e766981fff30de0c79599756dde74c5981d5c9fd', name: "x", size: 20 })))), !this.noDividers && (h("div", { key: '355e455c19cbc4a0783c0e0c2689265e6f599484', class: "co-modal__body", part: "body" }, h("slot", { key: 'fa6d3310464ff33de17618561182736bc6cef0e5' }))), h("div", { key: '43b89751fac3fd1b707a284d260e91dd7d7ea8a6', class: { 'co-modal__footer': true, 'co-modal__footer--empty': !this.hasFooter }, part: "footer" }, h("slot", { key: 'e9821b0712a6903c923f9bb50393e4b85545c211', name: "footer", onSlotchange: this.handleFooterSlotChange }))))));
81
92
  }
82
93
  static get is() { return "co-modal"; }
83
94
  static get encapsulation() { return "shadow"; }
@@ -251,6 +262,26 @@ export class CoModal {
251
262
  "reflect": true,
252
263
  "attribute": "no-dividers",
253
264
  "defaultValue": "false"
265
+ },
266
+ "headerDivider": {
267
+ "type": "boolean",
268
+ "mutable": false,
269
+ "complexType": {
270
+ "original": "boolean",
271
+ "resolved": "boolean",
272
+ "references": {}
273
+ },
274
+ "required": false,
275
+ "optional": false,
276
+ "docs": {
277
+ "tags": [],
278
+ "text": "Hairline between header and body. `false` lets the body run straight\nunder the heading (Figma modals whose first row is a segmented control)."
279
+ },
280
+ "getter": false,
281
+ "setter": false,
282
+ "reflect": false,
283
+ "attribute": "header-divider",
284
+ "defaultValue": "true"
254
285
  }
255
286
  };
256
287
  }
@@ -14,12 +14,12 @@ export class CoNavbar {
14
14
  this.rounded = false;
15
15
  }
16
16
  render() {
17
- return (h("div", { key: '2bfd8f245fd8e93a2d085c5cecbe729a32f10754', class: {
17
+ return (h("div", { key: '9899b395fdf793bf9b7e47509b81eb559aac0b56', class: {
18
18
  'co-navbar': true,
19
19
  [`co-navbar--${this.variant}`]: true,
20
20
  [`co-navbar--${this.size}`]: true,
21
21
  'co-navbar--rounded': this.rounded,
22
- }, part: "navbar", role: "toolbar" }, h("slot", { key: 'a07380f56382e9b96b335ab9169a16c8ed9e042e' })));
22
+ }, part: "navbar", role: "toolbar" }, h("slot", { key: 'c863bcf8dc9eddab771922a81e11c1966bfe8d2e' })));
23
23
  }
24
24
  static get is() { return "co-navbar"; }
25
25
  static get encapsulation() { return "shadow"; }
@@ -302,18 +302,18 @@ export class CoNumberField {
302
302
  return this.scaled && !this.isEmpty ? '%' : null;
303
303
  }
304
304
  render() {
305
- return (h("div", { key: 'd1b4cf4bbb6f9a01db718079c1e4686653d6cb69', class: {
305
+ return (h("div", { key: '1bcd7e60596bc28f5159f86a026d69d0d053f038', class: {
306
306
  'co-number-field': true,
307
307
  'co-number-field--disabled': this.disabled,
308
308
  'co-number-field--focused': this.focused,
309
309
  [`co-number-field--${this.size}`]: true,
310
310
  [`co-number-field--${this.status}`]: this.status !== 'default',
311
- } }, (this.label || this.secondaryLabel) && (h("div", { key: '972f6a811230bc8e919bb13d82b00b697ef849d3', class: "co-number-field__labels" }, this.label && h("label", { key: 'cca4de1e86a0066464b6dc71289ee174cc29e229', class: "co-number-field__label" }, this.label, h(RequiredMark, { key: '80a8266109c1cede57e32c706fb4c0e47eb33249', required: this.required })), this.secondaryLabel && h("span", { key: '082db322206fedfbcd2f9a6c0fd4c439a0a96fd6', class: "co-number-field__secondary-label" }, this.secondaryLabel))), h("div", { key: '88fba5f119dab3a4feb2ad2380cd5023d760e7e9', class: "co-number-field__row", part: "row" }, !this.hideControls && (h("button", { key: '28a2033ed8997597615edf6c6b591d4da205c888', class: "co-number-field__btn co-number-field__btn--minus", type: "button", tabIndex: -1, disabled: !this.canDecrement, onClick: this.handleDecrement, "aria-label": "Decrease" }, h("co-icon", { key: '4a562d696da337feeb4bb60b018b4a23024163ad', name: "minus", size: 16 }))), h("input", { key: 'f05ebf923249188da23edb73e6688ccd8ecf8233', ref: el => (this.inputEl = el), class: "co-number-field__input", type: "text", inputMode: "decimal",
311
+ } }, (this.label || this.secondaryLabel) && (h("div", { key: 'aca2d9958374940304e05495ae05e74d627154c7', class: "co-number-field__labels" }, this.label && h("label", { key: '8cf05675830ad181005430526785984acc793d0b', class: "co-number-field__label" }, this.label, h(RequiredMark, { key: '36aed2cf48890cf79506416d0c45f272ed329664', required: this.required })), this.secondaryLabel && h("span", { key: '636111436e1e3fff8d74fb4b9412c2192c93495a', class: "co-number-field__secondary-label" }, this.secondaryLabel))), h("div", { key: '6cbbb87a304cd9e415aafda276daede8dbe0b6a7', class: "co-number-field__row", part: "row" }, !this.hideControls && (h("button", { key: 'e11dfc41ee97b3287908877aa74f732a4cbe31fe', class: "co-number-field__btn co-number-field__btn--minus", type: "button", tabIndex: -1, disabled: !this.canDecrement, onClick: this.handleDecrement, "aria-label": "Decrease" }, h("co-icon", { key: '3f369b4d8293e9e987d18ba58fa1f010bd538016', name: "minus", size: 16 }))), h("input", { key: '8144b563cd4ae46774adbf224c45fa59378da4c7', ref: el => (this.inputEl = el), class: "co-number-field__input", type: "text", inputMode: "decimal",
312
312
  // Mismo guard `focused` que el @Watch: mientras el usuario edita, su
313
313
  // texto manda. Sin esto, el re-render que dispara emitValue repinta
314
314
  // el input desde el NÚMERO y se come el texto en construcción
315
315
  // ("34,640.00" pegado quedaba "34,640"; un "12." perdería el punto).
316
- value: this.focused && this.inputEl ? this.inputEl.value : this.displayValue, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onPaste: this.handlePaste, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, part: "input" }), this.affixText && (h("span", { key: 'b10fe23b0e16df1a9abc121923175aef3568d987', class: "co-number-field__affix", "aria-hidden": "true" }, this.affixText)), this.clearable && !this.isEmpty && !this.disabled && (h("button", { key: 'c963c856ea592a259e506ce9cc37948b105e28d3', class: "co-number-field__clear", type: "button", tabIndex: -1, onClick: this.handleClear, "aria-label": "Clear" }, h("co-icon", { key: 'd88127405a552237b103f794f449be98840254d5', name: "x-circle", size: 16, weight: "fill" }))), h("slot", { key: '0809f93bae05abd88549ffc707d3c4e9126f6d96', name: "suffix" }), !this.hideControls && (h("button", { key: 'd10d3900942acb5016448a8b509173a15ca86d43', class: "co-number-field__btn co-number-field__btn--plus", type: "button", tabIndex: -1, disabled: !this.canIncrement, onClick: this.handleIncrement, "aria-label": "Increase" }, h("co-icon", { key: 'f346237b4df54f3182b1702b953a17e07cb0a1ca', name: "plus", size: 16 })))), this.helperText && (h("div", { key: 'b9771e896812e73ba940d49419ec2eee3ba28ba3', class: `co-number-field__helper co-number-field__helper--${this.status}` }, this.statusIcon && h("co-icon", { key: '08fa68bb3f9ad4efab6722d59c5df480a0454f02', name: this.statusIcon, size: 14, weight: "fill", class: "co-number-field__helper-icon" }), h("span", { key: 'f8dd3318d47684c9c5ff0d761155174fa14d98aa', class: "co-number-field__helper-text" }, this.helperText)))));
316
+ value: this.focused && this.inputEl ? this.inputEl.value : this.displayValue, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onPaste: this.handlePaste, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, part: "input" }), this.affixText && (h("span", { key: '56e8b3a225f2332f9c3974ec195b63b3681d5b09', class: "co-number-field__affix", "aria-hidden": "true" }, this.affixText)), this.clearable && !this.isEmpty && !this.disabled && (h("button", { key: 'ea8325f7097c5b0b87bd51554163d44bdfe379ff', class: "co-number-field__clear", type: "button", tabIndex: -1, onClick: this.handleClear, "aria-label": "Clear" }, h("co-icon", { key: 'c72d4e3a039752fbcf7cf4594421d24bc2f0570a', name: "x-circle", size: 16, weight: "fill" }))), h("slot", { key: '2a3dc1b5a3e22ade3db02389178dd4ae3b1d3295', name: "suffix" }), !this.hideControls && (h("button", { key: '3b9bf39d86c7aacb212576dc4cf4af548b56fbed', class: "co-number-field__btn co-number-field__btn--plus", type: "button", tabIndex: -1, disabled: !this.canIncrement, onClick: this.handleIncrement, "aria-label": "Increase" }, h("co-icon", { key: '1655aaca9e66b51c0d97fc128c132326d3c740ad', name: "plus", size: 16 })))), this.helperText && (h("div", { key: '397b37569cabdf68072d870b5e5781f7d39da8fe', class: `co-number-field__helper co-number-field__helper--${this.status}` }, this.statusIcon && h("co-icon", { key: 'b574fddca9813af3e208ea3e9258480a992fd4f2', name: this.statusIcon, size: 14, weight: "fill", class: "co-number-field__helper-icon" }), h("span", { key: 'd17a39a82108f12100dee523d7754b50f147bb63', class: "co-number-field__helper-text" }, this.helperText)))));
317
317
  }
318
318
  static get is() { return "co-number-field"; }
319
319
  static get encapsulation() { return "shadow"; }
@@ -1,7 +1,7 @@
1
1
  import { h } from "@stencil/core";
2
- import { highlightMatch } from "../../utils/normalizeText";
2
+ import { highlightSegments } from "../../utils/normalizeText";
3
3
  import { initOverlayScroll } from "../../utils/overlayScroll";
4
- import { buildRows, deriveMore, listReorderIds, liveSelectedOrder, nextActiveIndex, orderItems, parseItems, parseValue, selectedActiveIndex, virtualSlice, VIRTUAL_ITEM_HEIGHT, VIRTUAL_VIEWPORT_ITEMS, } from "./optionListLogic";
4
+ import { buildRows, deriveMore, listReorderIds, liveSelectedOrder, nextActiveIndex, orderItems, parseItems, parseValue, selectedActiveIndex, shouldResnapshotOnTerm, virtualSlice, VIRTUAL_ITEM_HEIGHT, VIRTUAL_VIEWPORT_ITEMS, } from "./optionListLogic";
5
5
  /**
6
6
  * Núcleo de lista de opciones — la única fuente del look & behavior de los
7
7
  * dropdowns Cobalt (co-ref-field, co-combobox, co-autocomplete,
@@ -106,10 +106,15 @@ export class CoOptionList {
106
106
  };
107
107
  this.onSearchInput = (e) => {
108
108
  const v = e.target.value;
109
+ // Al volver a la lista completa el bloque selected-first se rearma con lo que
110
+ // se seleccionó durante la sesión del panel (ver shouldResnapshotOnTerm).
111
+ const resnapshot = shouldResnapshotOnTerm(this.term, v);
109
112
  this.term = v;
110
113
  this.activeIndex = -1;
111
114
  // Resultset nuevo: re-habilita fillViewport aunque venga del mismo largo.
112
115
  this.lastFillLen = -1;
116
+ if (resnapshot)
117
+ this.takeSnapshot();
113
118
  if (this.debounceTimer)
114
119
  clearTimeout(this.debounceTimer);
115
120
  this.debounceTimer = setTimeout(() => this.coSearch.emit(v), this.searchDebounce);
@@ -280,6 +285,27 @@ export class CoOptionList {
280
285
  this.scrollTop = maxScrollTop;
281
286
  }
282
287
  }
288
+ /**
289
+ * Selected-first VIVO (decisión de producto 2026-09-14, campo Colaboradores):
290
+ * la partición sigue a `value` — marcar un ítem lo sube al bloque de
291
+ * seleccionados al instante y desmarcarlo lo devuelve a su lugar del orden del
292
+ * server. Reemplaza el snapshot congelado al abrir (evitaba saltos, pero se
293
+ * leía como "no pasó nada" al elegir). El reacomodo se anima con el mismo FLIP
294
+ * del reorder: tops capturados ANTES de re-particionar, runFlip corre en
295
+ * componentDidRender. El highlight de teclado se queda sobre el MISMO ítem
296
+ * (Enter sobre una fila la mueve; el índice viejo apuntaría a otra fila).
297
+ * Tras un drop del reorder el host manda el value en el orden del preview:
298
+ * mismo orden → deltas 0 → no-op visual.
299
+ */
300
+ onValueChange() {
301
+ var _a;
302
+ if (!this.selectedFirst)
303
+ return;
304
+ const activeId = this.activeIndex >= 0 ? (_a = this.orderedItems[this.activeIndex]) === null || _a === void 0 ? void 0 : _a._id : undefined;
305
+ this.pendingFlip = { tops: this.captureRowTops(), movedId: '', spring: false };
306
+ this.takeSnapshot();
307
+ this.activeIndex = activeId ? this.orderedItems.findIndex((i) => i._id === activeId) : -1;
308
+ }
283
309
  // ── Métodos públicos ───────────────────────────────────────
284
310
  /** Re-toma el snapshot selected-first. El host la llama al abrir su panel. */
285
311
  async snapshotOrder() {
@@ -670,10 +696,12 @@ export class CoOptionList {
670
696
  }
671
697
  renderLabelText(label) {
672
698
  const term = this.effectiveHighlightTerm;
673
- const seg = term ? highlightMatch(label, term) : null;
674
- if (!seg)
699
+ // TODAS las ocurrencias (substring-anywhere): "PR" en "Producto (U.D) - PR Completa"
700
+ // marca el "Pr" de Producto Y el "PR" — antes solo la primera.
701
+ const segs = term ? highlightSegments(label, term) : null;
702
+ if (!segs)
675
703
  return label;
676
- return [seg.pre, h("span", { class: "co-option-list__match" }, seg.match), seg.post];
704
+ return segs.map((s) => (s.match ? h("span", { class: "co-option-list__match" }, s.text) : s.text));
677
705
  }
678
706
  /** Pill junto al label. Con `tooltip` va envuelto en un `co-tooltip` — el
679
707
  * label del badge se abrevia (3 letras en el de workspace) y sin el texto
@@ -713,11 +741,11 @@ export class CoOptionList {
713
741
  const selectedIds = this.selectedIds;
714
742
  const { hasMore, remaining } = deriveMore(this.parsedItems.length, this.total, this.hasMore);
715
743
  const showClear = !!this.clearOptionLabel && selectedIds.length > 0;
716
- return (h("div", { key: 'fc7f56eb7837405c1c3c1addabb9748f4c955fed', class: "co-option-list", onKeyDown: this.onRootKeyDown }, this.searchable && (h("div", { key: '44a31021a6cd49ec0ddf169c2cf2a0cdd0088f1d', class: "co-option-list__search", part: "search" }, h("co-icon", { key: '4d375787abbc1dd93fda1200a8cfb76928775e6f', name: "magnifying-glass", size: 16 }), h("input", { key: 'ffcad867196edd9f8384eda74d215873f2b2f857', class: "co-option-list__search-input", type: "text", placeholder: this.searchPlaceholder, value: this.term, onInput: this.onSearchInput, ref: (el) => (this.searchInputEl = el), role: "combobox", "aria-expanded": "true", "aria-autocomplete": "list" }))), h("div", { key: 'a1d5b69d184accaf8ee4ff4b0674823cee4da659', class: "co-option-list__options", part: "options", role: "listbox", "aria-multiselectable": this.multiple ? 'true' : 'false', ref: (el) => (this.optionsEl = el), onScroll: this.onNativeScroll }, h("div", { key: '3b6761a9bd95bcdaea14dd13619024841e9b6e22', class: "co-option-list__inner" }, showClear && (h("button", { key: '0b9fce9a2439733e5a3bb0d74542eafcbb3754b9', class: "co-option-list__clear-row", type: "button", onClick: () => this.coClearSelection.emit() }, h("co-icon", { key: '6db442c304c7d36fa9e41befb78a1ee4ebe8a415', name: "x-circle", size: 14 }), h("span", { key: '12d6b290acc9789dea62cfd036f62eae2a28b33d' }, this.clearOptionLabel))), this.loading && items.length === 0 && (h("div", { key: 'cc358dc94a3db4208ef85f16f8dce2d0592d4193', class: "co-option-list__loading" }, h("co-loader", { key: '9373dbe39674b9e5b18d03cf540ffa83309ea3fe', size: "sm" }))), !this.loading && items.length === 0 && (h("div", { key: '732747e33e2ec29968eb7f19b050d89e4b2cca00', class: "co-option-list__empty" }, h("co-icon", { key: '6defcd47ad121509bea43da488382a47a846f728', name: "magnifying-glass", size: 20 }), h("span", { key: '73729f8c52962e522125b6c258b0f1fb04eff533' }, this.emptyMessage))), items.length > 0 && this.virtual
744
+ return (h("div", { key: '30f39e9cfe2472f1083768b6e974aa48672e63d0', class: "co-option-list", onKeyDown: this.onRootKeyDown }, this.searchable && (h("div", { key: 'f1c125c141ca8ceebae5c1ed0c786919c31805b3', class: "co-option-list__search", part: "search" }, h("co-icon", { key: 'd56810ca205984e7b2c56546930ce25ca70fda68', name: "magnifying-glass", size: 16 }), h("input", { key: 'a85b35debe7b14c604a3262c7c04ee3b9ca41a6a', class: "co-option-list__search-input", type: "text", placeholder: this.searchPlaceholder, value: this.term, onInput: this.onSearchInput, ref: (el) => (this.searchInputEl = el), role: "combobox", "aria-expanded": "true", "aria-autocomplete": "list" }))), h("div", { key: 'ea5eecc218a228e07dd05d8f963518b4a8e0039f', class: "co-option-list__options", part: "options", role: "listbox", "aria-multiselectable": this.multiple ? 'true' : 'false', ref: (el) => (this.optionsEl = el), onScroll: this.onNativeScroll }, h("div", { key: 'b27071cb3d629022fa6e926050fdc17b2051ef98', class: "co-option-list__inner" }, showClear && (h("button", { key: '443791f8ee2d1f05a16c4002573264acf0a8de1b', class: "co-option-list__clear-row", type: "button", onClick: () => this.coClearSelection.emit() }, h("co-icon", { key: 'ebe7e65669ff9eb76922ef76e21b9209658a444f', name: "x-circle", size: 14 }), h("span", { key: '82d2bcceb41ec5370e60ea9e25af91a2cbf11e70' }, this.clearOptionLabel))), this.loading && items.length === 0 && (h("div", { key: '9f60fedc78ee66d198623a5e3ac9b0f1569ddef4', class: "co-option-list__loading" }, h("co-loader", { key: 'ab7b1947e03af880cc608bef8639d7dc882a53b7', size: "sm" }))), !this.loading && items.length === 0 && (h("div", { key: '6b0870e6c5b2c25e2854431a28a2d6b56253ecf2', class: "co-option-list__empty" }, h("co-icon", { key: '302d71e23e0d56104dfd04948201630ddbb4b078', name: "magnifying-glass", size: 20 }), h("span", { key: 'fc580f9a50974ab22a7b648dbbe4ca17340094d8' }, this.emptyMessage))), items.length > 0 && this.virtual
717
745
  ? this.renderVirtual(items, selectedIds)
718
746
  : buildRows(items).map((row) => row.kind === 'header'
719
747
  ? h("div", { class: "co-option-list__group", role: "presentation" }, row.label)
720
- : this.renderRow(row.item, row.index, selectedIds)), this.loading && items.length > 0 && (h("div", { key: '915e9c5dd03a7f77a2d680137b962e0f100fa903', class: "co-option-list__loading-more" }, h("co-loader", { key: 'dea515b0c90e0fac1f16fd4140ed38bddcd0cda4', size: "sm" }))), !this.loading && hasMore && remaining > 0 && (h("div", { key: '9f3be3b39ccc00a380c3d88d30ac8695102e22a4', class: "co-option-list__more" }, remaining, " more results")))), h("slot", { key: '6b6a06ef1819241ef5f5ff5870e79ab8b0765ed8', name: "footer" })));
748
+ : this.renderRow(row.item, row.index, selectedIds)), this.loading && items.length > 0 && (h("div", { key: '606a674960e4d16198ef36de4686de91ad742dde', class: "co-option-list__loading-more" }, h("co-loader", { key: '933613b7b606399cd9eea3f877a4b2c77f269785', size: "sm" }))), !this.loading && hasMore && remaining > 0 && (h("div", { key: '6a6220513b6db222b57155c54afa805519e4b1b8', class: "co-option-list__more" }, remaining, " more results")))), h("slot", { key: '4d952742c39335d9f19c2e45f58ae6be3306857d', name: "footer" })));
721
749
  }
722
750
  static get is() { return "co-option-list"; }
723
751
  static get encapsulation() { return "shadow"; }
@@ -1501,6 +1529,9 @@ export class CoOptionList {
1501
1529
  return [{
1502
1530
  "propName": "items",
1503
1531
  "methodName": "onItemsChange"
1532
+ }, {
1533
+ "propName": "value",
1534
+ "methodName": "onValueChange"
1504
1535
  }];
1505
1536
  }
1506
1537
  }
@@ -28,12 +28,13 @@ export function parseValue(raw) {
28
28
  * snapshotDisplay los que la página actual no contiene) + resto en orden de
29
29
  * server; buscando → solo resultados reales, seleccionados primero.
30
30
  *
31
- * Invariante: todo id en `snapshotIds` DEBE tener una entrada correspondiente
32
- * en `snapshotDisplay` (armado por el caller desde selectedItems ∪ items al
33
- * tomar el snapshot). Un id sin display-item asociado se cae silenciosamente
34
- * de la lista en modo idle (el `byId.get(d._id) ?? d` sintetiza desde el
35
- * display-item mismo, pero no hay nada que sintetizar si el id nunca entró a
36
- * snapshotDisplay en primer lugar).
31
+ * El bloque idle se recorre por `snapshotIds` (Set ordenado por selección, igual
32
+ * que `snapshotDisplay`) resolviendo cada id contra la página primero y contra el
33
+ * display después. Así un seleccionado AUSENTE de `snapshotDisplay` pero presente
34
+ * en `items` sigue en la lista: `rest` filtra todo id del snapshot, así que sin
35
+ * esa resolución desaparecía de la lista entera, no sólo del bloque de arriba.
36
+ * Un id que no está en ninguna de las dos fuentes no tiene nada que pintar y se
37
+ * ignora (no hay label que mostrar).
37
38
  */
38
39
  export function orderItems(items, snapshotIds, snapshotDisplay, searching) {
39
40
  var _a;
@@ -42,8 +43,12 @@ export function orderItems(items, snapshotIds, snapshotDisplay, searching) {
42
43
  const byId = new Map(items.map((i) => [i._id, i]));
43
44
  const selectedBlock = [];
44
45
  if (!searching) {
45
- for (const d of snapshotDisplay)
46
- selectedBlock.push((_a = byId.get(d._id)) !== null && _a !== void 0 ? _a : d);
46
+ const displayById = new Map(snapshotDisplay.map((d) => [d._id, d]));
47
+ for (const id of snapshotIds) {
48
+ const resolved = (_a = byId.get(id)) !== null && _a !== void 0 ? _a : displayById.get(id);
49
+ if (resolved)
50
+ selectedBlock.push(resolved);
51
+ }
47
52
  }
48
53
  else {
49
54
  for (const i of items)
@@ -53,6 +58,24 @@ export function orderItems(items, snapshotIds, snapshotDisplay, searching) {
53
58
  const rest = items.filter((i) => !snapshotIds.has(i._id));
54
59
  return [...selectedBlock, ...rest];
55
60
  }
61
+ /**
62
+ * ¿Hay que re-tomar el snapshot selected-first por el cambio del término?
63
+ *
64
+ * Sólo en el flanco "había búsqueda → ya no": volver a la lista completa es un
65
+ * contexto de listado nuevo, y ahí el bloque de arriba tiene que incluir lo que
66
+ * se seleccionó DURANTE la sesión del panel. Sin esto, un panel abierto sin nada
67
+ * seleccionado se quedaba con el snapshot VACÍO para siempre (`orderItems`
68
+ * cortocircuita en `size === 0`): lo elegido mientras se buscaba desaparecía de
69
+ * la lista al limpiar el término, porque el servidor devuelve la página 1 y esos
70
+ * registros casi nunca están ahí. Se leía como "se deselecciona solo".
71
+ *
72
+ * El re-snapshot por SELECCIÓN no pasa por acá: vive en el componente
73
+ * (`@Watch('value')`, selected-first vivo desde 2026-09-14 — marcar sube la fila
74
+ * al instante). Esta función solo decide el flanco del TÉRMINO.
75
+ */
76
+ export function shouldResnapshotOnTerm(prevTerm, nextTerm) {
77
+ return !!prevTerm && !nextTerm;
78
+ }
56
79
  /** Aplana a filas de render insertando un header cuando `group` cambia
57
80
  * (groupItems de co-command-search). `index` cuenta solo items. */
58
81
  export function buildRows(items) {
@@ -189,7 +189,7 @@ export class CoOverlay {
189
189
  focusables[nextIndex].focus();
190
190
  }
191
191
  render() {
192
- return (h("div", { key: '1664f81264046991c4d66285489001c4783138ec', class: { 'co-overlay': true, 'co-overlay--open': this.open }, part: "overlay", popover: "manual", tabindex: this.trapFocus ? -1 : undefined, ref: (el) => (this.overlayEl = el), onClick: this.handleClick, onTransitionEnd: this.handleTransitionEnd }, h("slot", { key: 'fc220441149e20eb8b2ca1dcb7131d77e25dcdb3' })));
192
+ return (h("div", { key: '4fafc87768eca581018ff578875b2362cf5297d2', class: { 'co-overlay': true, 'co-overlay--open': this.open }, part: "overlay", popover: "manual", tabindex: this.trapFocus ? -1 : undefined, ref: (el) => (this.overlayEl = el), onClick: this.handleClick, onTransitionEnd: this.handleTransitionEnd }, h("slot", { key: '2d18410bb6774701806101d38b6d41293b0e7ff9' })));
193
193
  }
194
194
  static get is() { return "co-overlay"; }
195
195
  static get encapsulation() { return "shadow"; }
@@ -6,7 +6,7 @@ import { h } from "@stencil/core";
6
6
  */
7
7
  export class CoPageHeader {
8
8
  render() {
9
- return (h("div", { key: '305f42c88d10f238351f362b72283abe82eaeb20', class: "co-page-header", part: "page-header" }, h("div", { key: '10185fe127049bfece585c59f92824888113861e', class: "co-page-header__left" }, this.icon && (h("span", { key: '017bc4f2aed8d05999c581ce0d7a4797aa84eff6', class: "co-page-header__icon" }, h("co-icon", { key: '7d5863437875aa09ad3bbe9e12c0b5d5c9f5c0c7', name: this.icon, size: 24 }))), h("span", { key: 'e62ead8cb061045d8995689dce3009e9843e3997', class: "co-page-header__title" }, h("slot", { key: '9e1d01a94942daeeb1c56f1d0f05534b45125422' }, this.heading))), h("div", { key: '5a2dd08e5b11ab33e64ddb581196d8535deb0925', class: "co-page-header__actions" }, h("slot", { key: '7fd3a5ea06593c9208a59ba2812bb827f1d39815', name: "actions" }))));
9
+ return (h("div", { key: '0f064f7e659103d8f679f23242492a5e9a869a88', class: "co-page-header", part: "page-header" }, h("div", { key: '4ccd5682d2d6872a5fa771b2779a8f7e0ab8b6f7', class: "co-page-header__left" }, this.icon && (h("span", { key: '10bc9aa126f8b9932b1e4247d7c3c3c04d89c425', class: "co-page-header__icon" }, h("co-icon", { key: '42f2cda7ec8ee4e0e4a51069606492647d13f690', name: this.icon, size: 24 }))), h("span", { key: '368633ff1b213286d5f6bdf5716e3acb1cbe2f71', class: "co-page-header__title" }, h("slot", { key: 'c74f2dcde7cfc0c0384f6a10a9f069a9ff94f78d' }, this.heading))), h("div", { key: '6666c103a2e6e826837091658ce1e4e4b1704215', class: "co-page-header__actions" }, h("slot", { key: '7df47ea333491b960bc1faff7fd0b6431aba56e5', name: "actions" }))));
10
10
  }
11
11
  static get is() { return "co-page-header"; }
12
12
  static get encapsulation() { return "shadow"; }
@@ -1,7 +1,7 @@
1
1
  import { h } from "@stencil/core";
2
2
  import { RequiredMark } from "../../utils/requiredMark";
3
3
  import { DIAL_CODES, DIAL_CODE_MAP } from "./dial-codes";
4
- import { highlightMatch, rankByMatch } from "../../utils/normalizeText";
4
+ import { highlightSegments, rankByMatch } from "../../utils/normalizeText";
5
5
  /**
6
6
  * Phone input with country code indicator. Composes a country selector
7
7
  * (flag + dial code) alongside a free-form phone number input.
@@ -63,10 +63,10 @@ export class CoPhoneField {
63
63
  }
64
64
  /** Country name with the matched substring wrapped for highlighting. */
65
65
  renderName(name) {
66
- const seg = this.searchQuery.trim() ? highlightMatch(name, this.searchQuery) : null;
67
- if (!seg)
66
+ const segs = this.searchQuery.trim() ? highlightSegments(name, this.searchQuery) : null;
67
+ if (!segs)
68
68
  return name;
69
- return [seg.pre, h("span", { class: "co-phone-field__match" }, seg.match), seg.post];
69
+ return segs.map((s) => (s.match ? h("span", { class: "co-phone-field__match" }, s.text) : s.text));
70
70
  }
71
71
  onValueChange(newVal) {
72
72
  if (!newVal) {
@@ -159,7 +159,7 @@ export class CoPhoneField {
159
159
  render() {
160
160
  const entry = this.selectedEntry;
161
161
  const statusClass = this.status !== 'default' ? `co-phone-field--${this.status}` : '';
162
- return (h("div", { key: '44113c6d2a4845b96b185bc1a291335ad099491b', class: `co-phone-field co-phone-field--${this.size} ${statusClass} ${this.disabled ? 'co-phone-field--disabled' : ''}` }, this.label && (h("label", { key: 'aee2eced519f996ebf8941210e5151ebe32429d3', class: "co-phone-field__label" }, this.label, h(RequiredMark, { key: '85b8d50b8062d0041b0f416beb7a140d29d06b1f', required: this.required }))), h("div", { key: '381313d069536477ded093cd236ff740dc534ae4', class: "co-phone-field__container" }, h("button", { key: '4aa81cd26e4824c45b9fd0530a4ff1016acbc877', type: "button", class: "co-phone-field__selector", disabled: this.disabled, onClick: () => this.handleToggleDropdown(), "aria-expanded": String(this.isOpen), "aria-haspopup": "listbox" }, entry ? (h("img", { class: "co-phone-field__flag", src: `https://flagcdn.com/w40/${entry.iso2.toLowerCase()}.png`, alt: entry.iso2 })) : (h("co-icon", { name: "phone", size: 16 })), h("span", { key: 'd8ba9bbaae902853d97c37892ea2094a3a05c2ed', class: "co-phone-field__dial-code" }, entry ? entry.dialCode : ''), h("span", { key: '065c2daf2b277fd870204c989b3eb359aa68dec4', class: "co-phone-field__chevron" }, h("co-icon", { key: '53761d275d9f98010c197e7d8b8f5b20abf753fd', name: "caret-down", size: 14 }))), h("input", { key: '8340a483e8deaf24fd7b03d2239195064d392eb4', class: "co-phone-field__input", type: "tel", placeholder: this.placeholder, value: this.numberPart, disabled: this.disabled, onInput: (e) => this.handleNumberInput(e) })), this.isOpen && (h("div", { key: '6e736fb24707feb8faf373a403b192670698a043', class: "co-phone-field__dropdown", role: "listbox" }, h("div", { key: 'f0750d83d3da8cebc3c1b39d21a35b31bc17bd4a', class: "co-phone-field__search" }, h("input", { key: '546c432e6e11010e2d685780e2f5eddfbf3ad73d', class: "co-phone-field__search-input", type: "text", placeholder: "Search country...", value: this.searchQuery, onInput: (e) => this.handleSearchInput(e), autoFocus: true })), h("div", { key: '5960b2979fbedf66ea197ff7f37093b6240242bc', class: "co-phone-field__options" }, this.filteredCountries.map((d) => (h("button", { type: "button", key: d.iso2, class: `co-phone-field__option ${d.iso2 === this.selectedIso2 ? 'co-phone-field__option--selected' : ''}`, role: "option", "aria-selected": d.iso2 === this.selectedIso2 ? 'true' : 'false', onClick: () => this.handleCountrySelect(d) }, h("img", { class: "co-phone-field__option-flag", src: `https://flagcdn.com/w40/${d.iso2.toLowerCase()}.png`, alt: d.iso2 }), h("span", { class: "co-phone-field__option-name" }, this.renderName(d.name)), h("span", { class: "co-phone-field__option-code" }, d.dialCode))))))), this.helperText && (h("div", { key: 'fa9e15ba4f08abf2caff8b1b196ce25ce2e89bb9', class: "co-phone-field__helper" }, this.statusIcon && (h("co-icon", { key: '122a32febae2d6f86e32d8b3d1f2ec2df9e573c7', name: this.statusIcon, size: 14, weight: "fill", class: "co-phone-field__helper-icon" })), h("span", { key: '6117ecd58a0c2ddefca94237f7c5d815fd5c3c79', class: "co-phone-field__helper-text" }, this.helperText)))));
162
+ return (h("div", { key: '007dbe9a20cd410cb818f512d9f698afba6e821f', class: `co-phone-field co-phone-field--${this.size} ${statusClass} ${this.disabled ? 'co-phone-field--disabled' : ''}` }, this.label && (h("label", { key: 'a4c5c1b7e10de3098f7f50d74a3ca8703d41f465', class: "co-phone-field__label" }, this.label, h(RequiredMark, { key: 'bcd04f54711067258d1270814141b4b81324ee21', required: this.required }))), h("div", { key: 'a04a6996610ccd5007c54f5728a1158c951c50e9', class: "co-phone-field__container" }, h("button", { key: '317348de58e74afb6f545749c83670ed92eb61bb', type: "button", class: "co-phone-field__selector", disabled: this.disabled, onClick: () => this.handleToggleDropdown(), "aria-expanded": String(this.isOpen), "aria-haspopup": "listbox" }, entry ? (h("img", { class: "co-phone-field__flag", src: `https://flagcdn.com/w40/${entry.iso2.toLowerCase()}.png`, alt: entry.iso2 })) : (h("co-icon", { name: "phone", size: 16 })), h("span", { key: '122cd3a7b4f363554410c7a37df3331b91e4bc81', class: "co-phone-field__dial-code" }, entry ? entry.dialCode : ''), h("span", { key: '3d3d8691ba489bbe093f99a6141323f2620fd6a8', class: "co-phone-field__chevron" }, h("co-icon", { key: 'adab28c8fb4f1d6838dd0e400494656d0bc50812', name: "caret-down", size: 14 }))), h("input", { key: '13214ef8043c4984fcab73e7971e836039d8b469', class: "co-phone-field__input", type: "tel", placeholder: this.placeholder, value: this.numberPart, disabled: this.disabled, onInput: (e) => this.handleNumberInput(e) })), this.isOpen && (h("div", { key: 'b993dff8a4ad5ef53b7f50849591310ec3df54f5', class: "co-phone-field__dropdown", role: "listbox" }, h("div", { key: '95db7d412dbb49ebebda43e7dc13b9f763f2e3e1', class: "co-phone-field__search" }, h("input", { key: 'cd97d9422f0b2ee04de398a4ddd38500664d3828', class: "co-phone-field__search-input", type: "text", placeholder: "Search country...", value: this.searchQuery, onInput: (e) => this.handleSearchInput(e), autoFocus: true })), h("div", { key: 'f0a8c53ed8a8a2e212f6bb2da2883c3efa7eab1e', class: "co-phone-field__options" }, this.filteredCountries.map((d) => (h("button", { type: "button", key: d.iso2, class: `co-phone-field__option ${d.iso2 === this.selectedIso2 ? 'co-phone-field__option--selected' : ''}`, role: "option", "aria-selected": d.iso2 === this.selectedIso2 ? 'true' : 'false', onClick: () => this.handleCountrySelect(d) }, h("img", { class: "co-phone-field__option-flag", src: `https://flagcdn.com/w40/${d.iso2.toLowerCase()}.png`, alt: d.iso2 }), h("span", { class: "co-phone-field__option-name" }, this.renderName(d.name)), h("span", { class: "co-phone-field__option-code" }, d.dialCode))))))), this.helperText && (h("div", { key: 'c2b32d573c9c94720a403280a84547ad08c8a686', class: "co-phone-field__helper" }, this.statusIcon && (h("co-icon", { key: '9199cc2660052d07753d3a12b28a3ff60724c3ea', name: this.statusIcon, size: 14, weight: "fill", class: "co-phone-field__helper-icon" })), h("span", { key: '27462c9a1cefa4aa4cf43ab19924c1f59a399b68', class: "co-phone-field__helper-text" }, this.helperText)))));
163
163
  }
164
164
  static get is() { return "co-phone-field"; }
165
165
  static get encapsulation() { return "shadow"; }
@@ -358,7 +358,7 @@ export class CoPopover {
358
358
  "references": {
359
359
  "PopoverPlacement": {
360
360
  "location": "local",
361
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-popover/co-popover.tsx",
361
+ "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-popover/co-popover.tsx",
362
362
  "id": "src/components/co-popover/co-popover.tsx::PopoverPlacement"
363
363
  }
364
364
  }
@@ -18,12 +18,12 @@ export class CoProgressBar {
18
18
  render() {
19
19
  const clamped = Math.max(0, Math.min(100, this.value));
20
20
  const indeterminate = this.indeterminate;
21
- return (h("div", { key: '1d46449d4034da8868004f4204007301126526dd', class: {
21
+ return (h("div", { key: 'bcf5e566cfa6726eac8578288797d1004e4003fb', class: {
22
22
  'co-progress-bar': true,
23
23
  [`co-progress-bar--${this.status}`]: true,
24
24
  [`co-progress-bar--${this.variant}`]: true,
25
25
  'co-progress-bar--indeterminate': indeterminate,
26
- }, role: "progressbar", "aria-valuenow": indeterminate ? undefined : clamped, "aria-valuemin": 0, "aria-valuemax": 100, part: "bar", style: { height: `${this.thickness}px` } }, h("div", { key: '2bbc631c4ee331cc265b1fb779006b72f6cd436e', class: "co-progress-bar__fill", style: indeterminate ? undefined : { width: `${clamped}%` } })));
26
+ }, role: "progressbar", "aria-valuenow": indeterminate ? undefined : clamped, "aria-valuemin": 0, "aria-valuemax": 100, part: "bar", style: { height: `${this.thickness}px` } }, h("div", { key: '932537ab1521b2d7fcd0e1bb57c027a276dacaf3', class: "co-progress-bar__fill", style: indeterminate ? undefined : { width: `${clamped}%` } })));
27
27
  }
28
28
  static get is() { return "co-progress-bar"; }
29
29
  static get encapsulation() { return "shadow"; }
@@ -19,7 +19,7 @@ export class CoProgressCircle {
19
19
  const clamped = Math.max(0, Math.min(100, this.value));
20
20
  const angle = (clamped / 100) * 360;
21
21
  const safeStroke = Math.min(this.strokeWidth, this.size / 2);
22
- return (h("div", { key: '161f80b35c78efff11e7ecbff1c9cb234bb85390', class: {
22
+ return (h("div", { key: 'bc100ca3ef731aab3168a247098102b8e9ab9537', class: {
23
23
  'co-progress-circle': true,
24
24
  [`co-progress-circle--${this.status}`]: true,
25
25
  }, role: "progressbar", "aria-valuenow": clamped, "aria-valuemin": 0, "aria-valuemax": 100, part: "circle", style: {
@@ -27,7 +27,7 @@ export class CoProgressCircle {
27
27
  height: `${this.size}px`,
28
28
  '--co-pc-angle': `${angle}deg`,
29
29
  '--co-pc-stroke': `${safeStroke}px`,
30
- } }, h("div", { key: 'f68892a3b122f6ad97cb3a2415fd7456055fdc3a', class: "co-progress-circle__track" }), this.showLabel && (h("span", { key: '4bac057faa45335a4fba807b7a58eebdabd26489', class: "co-progress-circle__label" }, clamped, "%"))));
30
+ } }, h("div", { key: '48862f1f57c0bb8cd6e03c2f0a84a1ae324d3ec1', class: "co-progress-circle__track" }), this.showLabel && (h("span", { key: '0ff2c6995740504e1df9b11dfa10e0a9f9d368c5', class: "co-progress-circle__label" }, clamped, "%"))));
31
31
  }
32
32
  static get is() { return "co-progress-circle"; }
33
33
  static get encapsulation() { return "shadow"; }