@prolibu-suite/cobalt-core 0.10.0 → 0.10.1

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 (284) hide show
  1. package/custom-elements.json +395 -29
  2. package/dist/cjs/co-accordion.cjs.entry.js +4 -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-checkbox.cjs.entry.js +3 -3
  8. package/dist/cjs/co-chip_2.cjs.entry.js +62 -10
  9. package/dist/cjs/co-color-picker.cjs.entry.js +40 -10
  10. package/dist/cjs/co-data-table.cjs.entry.js +82 -4
  11. package/dist/cjs/co-input.cjs.entry.js +6 -2
  12. package/dist/cjs/co-menu-item.cjs.entry.js +1 -1
  13. package/dist/cjs/co-modal.cjs.entry.js +7 -3
  14. package/dist/cjs/co-navbar.cjs.entry.js +2 -2
  15. package/dist/cjs/co-number-field.cjs.entry.js +3 -3
  16. package/dist/cjs/co-overlay.cjs.entry.js +1 -1
  17. package/dist/cjs/co-page-header.cjs.entry.js +1 -1
  18. package/dist/cjs/co-phone-field.cjs.entry.js +1 -1
  19. package/dist/cjs/co-progress-bar.cjs.entry.js +2 -2
  20. package/dist/cjs/co-progress-circle.cjs.entry.js +2 -2
  21. package/dist/cjs/co-provider-logo_2.cjs.entry.js +1 -1
  22. package/dist/cjs/co-radio.cjs.entry.js +3 -3
  23. package/dist/cjs/co-rating.cjs.entry.js +3 -3
  24. package/dist/cjs/co-ref-field.cjs.entry.js +100 -9
  25. package/dist/cjs/co-rich-text-editor.cjs.entry.js +3 -3
  26. package/dist/cjs/co-row.cjs.entry.js +2 -2
  27. package/dist/cjs/co-select.cjs.entry.js +4 -4
  28. package/dist/cjs/co-separator.cjs.entry.js +1 -1
  29. package/dist/cjs/co-sidebar.cjs.entry.js +2 -2
  30. package/dist/cjs/co-slider.cjs.entry.js +2 -2
  31. package/dist/cjs/co-switch.cjs.entry.js +3 -3
  32. package/dist/cjs/co-tab-group.cjs.entry.js +2 -2
  33. package/dist/cjs/co-tab.cjs.entry.js +2 -2
  34. package/dist/cjs/co-tags-field.cjs.entry.js +5 -5
  35. package/dist/cjs/co-textarea.cjs.entry.js +4 -4
  36. package/dist/cjs/co-time-field.cjs.entry.js +1 -1
  37. package/dist/cjs/co-toggle-button-group.cjs.entry.js +3 -3
  38. package/dist/cjs/co-toggle-button.cjs.entry.js +3 -3
  39. package/dist/cjs/{co-avatar_2.cjs.entry.js → co-tooltip.cjs.entry.js} +2 -70
  40. package/dist/cjs/co-video.cjs.entry.js +2 -2
  41. package/dist/cjs/cobalt.cjs.js +1 -1
  42. package/dist/cjs/index-MDAnKsze.js +12 -8
  43. package/dist/cjs/loader.cjs.js +1 -1
  44. package/dist/cobalt/cobalt.esm.js +1 -1
  45. package/dist/cobalt/{p-82266f11.entry.js → p-000a15b8.entry.js} +1 -1
  46. package/dist/cobalt/{p-fe7e8813.entry.js → p-148d4aa6.entry.js} +1 -1
  47. package/dist/cobalt/p-16f8cee6.entry.js +1 -0
  48. package/dist/cobalt/p-239c5c5f.entry.js +1 -0
  49. package/dist/cobalt/{p-4d897896.entry.js → p-28764b8e.entry.js} +1 -1
  50. package/dist/cobalt/{p-73c6d735.entry.js → p-2a30c143.entry.js} +1 -1
  51. package/dist/cobalt/{p-85501c6a.entry.js → p-2f0f3bb1.entry.js} +1 -1
  52. package/dist/cobalt/{p-e01f9b9a.entry.js → p-2fba312b.entry.js} +1 -1
  53. package/dist/cobalt/p-354d5089.entry.js +1 -0
  54. package/dist/cobalt/{p-5298c030.entry.js → p-383a998e.entry.js} +1 -1
  55. package/dist/cobalt/{p-325b91b6.entry.js → p-3c4f7026.entry.js} +1 -1
  56. package/dist/cobalt/p-416795f5.entry.js +1 -0
  57. package/dist/cobalt/{p-54c987d7.entry.js → p-5a3e4c81.entry.js} +1 -1
  58. package/dist/cobalt/p-5adf117c.entry.js +1 -0
  59. package/dist/cobalt/{p-83a9a05a.entry.js → p-5ca394b1.entry.js} +1 -1
  60. package/dist/cobalt/{p-1a589c8e.entry.js → p-5e4973a6.entry.js} +1 -1
  61. package/dist/cobalt/{p-b565104d.entry.js → p-6c82a892.entry.js} +1 -1
  62. package/dist/cobalt/{p-83ea631d.entry.js → p-789c4b3e.entry.js} +1 -1
  63. package/dist/cobalt/{p-ea20f048.entry.js → p-7e8e6907.entry.js} +1 -1
  64. package/dist/cobalt/{p-10b82207.entry.js → p-8471abe2.entry.js} +1 -1
  65. package/dist/cobalt/p-8f2199ff.entry.js +1 -0
  66. package/dist/cobalt/p-9246e09c.entry.js +1 -0
  67. package/dist/cobalt/{p-eb063cc0.entry.js → p-93fe45fd.entry.js} +1 -1
  68. package/dist/cobalt/{p-ad33c40e.entry.js → p-95cfcb34.entry.js} +1 -1
  69. package/dist/cobalt/{p-bd683db3.entry.js → p-9cf738ed.entry.js} +1 -1
  70. package/dist/cobalt/p-a2462d7a.entry.js +1 -0
  71. package/dist/cobalt/p-a325ea0c.entry.js +1 -0
  72. package/dist/cobalt/{p-e8a4e6b0.entry.js → p-b5bba7fe.entry.js} +1 -1
  73. package/dist/cobalt/{p-6bf6bc3e.entry.js → p-b821d9de.entry.js} +1 -1
  74. package/dist/cobalt/{p-92b092db.entry.js → p-be34e447.entry.js} +1 -1
  75. package/dist/cobalt/p-c7d7d7f7.entry.js +1 -0
  76. package/dist/cobalt/{p-aae86f96.entry.js → p-d0b2c418.entry.js} +1 -1
  77. package/dist/cobalt/{p-50bcc76f.entry.js → p-d3344187.entry.js} +1 -1
  78. package/dist/cobalt/p-d375014b.entry.js +1 -0
  79. package/dist/cobalt/p-d9d9e8ae.entry.js +1 -0
  80. package/dist/cobalt/p-e371ec7a.entry.js +1 -0
  81. package/dist/cobalt/p-eadfd661.entry.js +1 -0
  82. package/dist/cobalt/p-ef301976.entry.js +1 -0
  83. package/dist/cobalt/{p-f68dd124.entry.js → p-fb2d1144.entry.js} +1 -1
  84. package/dist/collection/components/co-accordion/co-accordion.css +2 -2
  85. package/dist/collection/components/co-accordion/co-accordion.js +4 -4
  86. package/dist/collection/components/co-action-bar/co-action-bar.css +9 -2
  87. package/dist/collection/components/co-audio-player/co-audio-player.js +138 -12
  88. package/dist/collection/components/co-autocomplete/co-autocomplete.js +1 -1
  89. package/dist/collection/components/co-avatar-group/co-avatar-group.js +1 -1
  90. package/dist/collection/components/co-button/co-button.css +6 -3
  91. package/dist/collection/components/co-checkbox/co-checkbox.js +22 -3
  92. package/dist/collection/components/co-checkbox-group/co-checkbox-group.js +1 -1
  93. package/dist/collection/components/co-color-picker/co-color-picker.js +40 -10
  94. package/dist/collection/components/co-combobox/co-combobox.js +1 -1
  95. package/dist/collection/components/co-command-search/co-command-search.js +1 -1
  96. package/dist/collection/components/co-data-table/co-data-table.css +63 -2
  97. package/dist/collection/components/co-data-table/co-data-table.js +59 -4
  98. package/dist/collection/components/co-data-table/headerTruncationLogic.js +34 -0
  99. package/dist/collection/components/co-date-range-picker/co-date-range-picker.js +2 -2
  100. package/dist/collection/components/co-input/co-input.js +17 -5
  101. package/dist/collection/components/co-menu-item/co-menu-item.css +9 -0
  102. package/dist/collection/components/co-modal/co-modal.css +6 -0
  103. package/dist/collection/components/co-modal/co-modal.js +33 -2
  104. package/dist/collection/components/co-navbar/co-navbar.js +2 -2
  105. package/dist/collection/components/co-number-field/co-number-field.js +3 -3
  106. package/dist/collection/components/co-option-list/co-option-list.js +32 -3
  107. package/dist/collection/components/co-option-list/optionListLogic.js +31 -8
  108. package/dist/collection/components/co-overlay/co-overlay.js +1 -1
  109. package/dist/collection/components/co-page-header/co-page-header.js +1 -1
  110. package/dist/collection/components/co-phone-field/co-phone-field.js +1 -1
  111. package/dist/collection/components/co-popover/co-popover.js +1 -1
  112. package/dist/collection/components/co-progress-bar/co-progress-bar.js +2 -2
  113. package/dist/collection/components/co-progress-circle/co-progress-circle.js +2 -2
  114. package/dist/collection/components/co-radio/co-radio.js +3 -3
  115. package/dist/collection/components/co-radio-group/co-radio-group.js +1 -1
  116. package/dist/collection/components/co-rating/co-rating.js +3 -3
  117. package/dist/collection/components/co-ref-field/co-ref-field.css +40 -0
  118. package/dist/collection/components/co-ref-field/co-ref-field.js +207 -11
  119. package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.js +3 -3
  120. package/dist/collection/components/co-row/co-row.js +2 -2
  121. package/dist/collection/components/co-segmented-bar/co-segmented-bar.js +1 -1
  122. package/dist/collection/components/co-select/co-select.js +24 -5
  123. package/dist/collection/components/co-separator/co-separator.js +1 -1
  124. package/dist/collection/components/co-sidebar/co-sidebar.js +2 -2
  125. package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.js +1 -1
  126. package/dist/collection/components/co-skeleton/co-skeleton.js +1 -1
  127. package/dist/collection/components/co-slider/co-slider.js +2 -2
  128. package/dist/collection/components/co-switch/co-switch.js +3 -3
  129. package/dist/collection/components/co-tab/co-tab.js +2 -2
  130. package/dist/collection/components/co-tab-group/co-tab-group.js +2 -2
  131. package/dist/collection/components/co-tags-field/co-tags-field.js +5 -5
  132. package/dist/collection/components/co-textarea/co-textarea.js +4 -4
  133. package/dist/collection/components/co-time-field/co-time-field.js +1 -1
  134. package/dist/collection/components/co-toast/co-toast.js +2 -2
  135. package/dist/collection/components/co-toggle-button/co-toggle-button.css +6 -5
  136. package/dist/collection/components/co-toggle-button/co-toggle-button.js +2 -2
  137. package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.css +9 -5
  138. package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.js +2 -2
  139. package/dist/collection/components/co-tooltip/co-tooltip.js +2 -2
  140. package/dist/collection/components/co-transfer-list/co-transfer-list.js +1 -1
  141. package/dist/collection/components/co-video/co-video.js +2 -2
  142. package/dist/components/co-accordion.js +1 -1
  143. package/dist/components/co-action-bar.js +1 -1
  144. package/dist/components/co-audio-player.js +1 -1
  145. package/dist/components/co-autocomplete.js +1 -1
  146. package/dist/components/co-avatar-group.js +1 -1
  147. package/dist/components/co-avatar.js +1 -1
  148. package/dist/components/co-button.js +1 -1
  149. package/dist/components/co-calendar-month.js +1 -1
  150. package/dist/components/co-calendar-timegrid.js +1 -1
  151. package/dist/components/co-checkbox.js +1 -1
  152. package/dist/components/co-color-picker.js +1 -1
  153. package/dist/components/co-column-picker.js +1 -1
  154. package/dist/components/co-combobox.js +1 -1
  155. package/dist/components/co-command-search.js +1 -1
  156. package/dist/components/co-data-table.js +1 -1
  157. package/dist/components/co-date-picker.js +1 -1
  158. package/dist/components/co-date-range-picker.js +1 -1
  159. package/dist/components/co-date-range.js +1 -1
  160. package/dist/components/co-date-time-picker.js +1 -1
  161. package/dist/components/co-drawer.js +1 -1
  162. package/dist/components/co-event-calendar.js +1 -1
  163. package/dist/components/co-file-field.js +1 -1
  164. package/dist/components/co-input.js +1 -1
  165. package/dist/components/co-lightbox.js +1 -1
  166. package/dist/components/co-list-item.js +1 -1
  167. package/dist/components/co-menu-item.js +1 -1
  168. package/dist/components/co-modal.js +1 -1
  169. package/dist/components/co-navbar.js +1 -1
  170. package/dist/components/co-number-field.js +1 -1
  171. package/dist/components/co-option-list.js +1 -1
  172. package/dist/components/co-overlay.js +1 -1
  173. package/dist/components/co-page-header.js +1 -1
  174. package/dist/components/co-phone-field.js +1 -1
  175. package/dist/components/co-progress-bar.js +1 -1
  176. package/dist/components/co-progress-circle.js +1 -1
  177. package/dist/components/co-radio.js +1 -1
  178. package/dist/components/co-rating.js +1 -1
  179. package/dist/components/co-ref-field.js +1 -1
  180. package/dist/components/co-rich-text-editor.js +1 -1
  181. package/dist/components/co-row.js +1 -1
  182. package/dist/components/co-select.js +1 -1
  183. package/dist/components/co-separator.js +1 -1
  184. package/dist/components/co-sidebar-nav.js +1 -1
  185. package/dist/components/co-sidebar.js +1 -1
  186. package/dist/components/co-skeleton.js +1 -1
  187. package/dist/components/co-slider.js +1 -1
  188. package/dist/components/co-switch.js +1 -1
  189. package/dist/components/co-tab-group.js +1 -1
  190. package/dist/components/co-tab.js +1 -1
  191. package/dist/components/co-tags-field.js +1 -1
  192. package/dist/components/co-textarea.js +1 -1
  193. package/dist/components/co-time-field.js +1 -1
  194. package/dist/components/co-toggle-button-group.js +1 -1
  195. package/dist/components/co-toggle-button.js +1 -1
  196. package/dist/components/co-tooltip.js +1 -1
  197. package/dist/components/co-video.js +1 -1
  198. package/dist/components/p-7TncUlLN.js +1 -0
  199. package/dist/components/{p-BxP8OBw6.js → p-B9xitpGU.js} +1 -1
  200. package/dist/components/{p-x4grh-eZ.js → p-CBTGN490.js} +1 -1
  201. package/dist/components/{p-CXPRaTuo.js → p-CLsAo0-A.js} +1 -1
  202. package/dist/components/{p-B1QFLcY9.js → p-D2ldYZo1.js} +1 -1
  203. package/dist/components/{p-Bv6U5y3d.js → p-D3mVYO-G.js} +1 -1
  204. package/dist/components/{p-DkDTmHCg.js → p-DDV_bRcU.js} +1 -1
  205. package/dist/components/{p-Be_kyNRE.js → p-DSnJWzQw.js} +1 -1
  206. package/dist/components/{p-BBP5__CY.js → p-DTi2O4O8.js} +1 -1
  207. package/dist/components/p-De7w9k6_.js +1 -0
  208. package/dist/components/{p-Cl3AdEQJ.js → p-DoHLTC0n.js} +1 -1
  209. package/dist/components/{p-CnX3L8aF.js → p-DxtNejr2.js} +1 -1
  210. package/dist/components/p-wjt4IAGZ.js +1 -0
  211. package/dist/components/{p-DIo66nBr.js → p-zuhal3IZ.js} +1 -1
  212. package/dist/esm/co-accordion.entry.js +4 -4
  213. package/dist/esm/co-action-bar.entry.js +1 -1
  214. package/dist/esm/co-audio-player.entry.js +82 -12
  215. package/dist/esm/co-avatar.entry.js +70 -0
  216. package/dist/esm/co-button.entry.js +1 -1
  217. package/dist/esm/co-checkbox.entry.js +3 -3
  218. package/dist/esm/co-chip_2.entry.js +62 -10
  219. package/dist/esm/co-color-picker.entry.js +40 -10
  220. package/dist/esm/co-data-table.entry.js +82 -4
  221. package/dist/esm/co-input.entry.js +6 -2
  222. package/dist/esm/co-menu-item.entry.js +1 -1
  223. package/dist/esm/co-modal.entry.js +7 -3
  224. package/dist/esm/co-navbar.entry.js +2 -2
  225. package/dist/esm/co-number-field.entry.js +3 -3
  226. package/dist/esm/co-overlay.entry.js +1 -1
  227. package/dist/esm/co-page-header.entry.js +1 -1
  228. package/dist/esm/co-phone-field.entry.js +1 -1
  229. package/dist/esm/co-progress-bar.entry.js +2 -2
  230. package/dist/esm/co-progress-circle.entry.js +2 -2
  231. package/dist/esm/co-provider-logo_2.entry.js +1 -1
  232. package/dist/esm/co-radio.entry.js +3 -3
  233. package/dist/esm/co-rating.entry.js +3 -3
  234. package/dist/esm/co-ref-field.entry.js +100 -9
  235. package/dist/esm/co-rich-text-editor.entry.js +3 -3
  236. package/dist/esm/co-row.entry.js +2 -2
  237. package/dist/esm/co-select.entry.js +4 -4
  238. package/dist/esm/co-separator.entry.js +1 -1
  239. package/dist/esm/co-sidebar.entry.js +2 -2
  240. package/dist/esm/co-slider.entry.js +2 -2
  241. package/dist/esm/co-switch.entry.js +3 -3
  242. package/dist/esm/co-tab-group.entry.js +2 -2
  243. package/dist/esm/co-tab.entry.js +2 -2
  244. package/dist/esm/co-tags-field.entry.js +5 -5
  245. package/dist/esm/co-textarea.entry.js +4 -4
  246. package/dist/esm/co-time-field.entry.js +1 -1
  247. package/dist/esm/co-toggle-button-group.entry.js +3 -3
  248. package/dist/esm/co-toggle-button.entry.js +3 -3
  249. package/dist/esm/{co-avatar_2.entry.js → co-tooltip.entry.js} +3 -70
  250. package/dist/esm/co-video.entry.js +2 -2
  251. package/dist/esm/cobalt.js +1 -1
  252. package/dist/esm/index-DH5lfRNj.js +12 -8
  253. package/dist/esm/loader.js +1 -1
  254. package/dist/types/components/co-accordion/co-accordion.d.ts +6 -0
  255. package/dist/types/components/co-audio-player/co-audio-player.d.ts +25 -0
  256. package/dist/types/components/co-checkbox/co-checkbox.d.ts +4 -0
  257. package/dist/types/components/co-color-picker/co-color-picker.d.ts +4 -2
  258. package/dist/types/components/co-data-table/co-data-table.d.ts +15 -0
  259. package/dist/types/components/co-data-table/headerTruncationLogic.d.ts +24 -0
  260. package/dist/types/components/co-input/co-input.d.ts +5 -1
  261. package/dist/types/components/co-modal/co-modal.d.ts +10 -0
  262. package/dist/types/components/co-option-list/co-option-list.d.ts +13 -0
  263. package/dist/types/components/co-option-list/optionListLogic.d.ts +23 -6
  264. package/dist/types/components/co-ref-field/co-ref-field.d.ts +38 -0
  265. package/dist/types/components/co-select/co-select.d.ts +6 -0
  266. package/dist/types/components.d.ts +79 -3
  267. package/package.json +2 -2
  268. package/dist/cobalt/p-15d59169.entry.js +0 -1
  269. package/dist/cobalt/p-1788aab5.entry.js +0 -1
  270. package/dist/cobalt/p-20a39218.entry.js +0 -1
  271. package/dist/cobalt/p-3cc3ff93.entry.js +0 -1
  272. package/dist/cobalt/p-4908f33f.entry.js +0 -1
  273. package/dist/cobalt/p-63825d7f.entry.js +0 -1
  274. package/dist/cobalt/p-6f700f0d.entry.js +0 -1
  275. package/dist/cobalt/p-88195a63.entry.js +0 -1
  276. package/dist/cobalt/p-8fa5dc4a.entry.js +0 -1
  277. package/dist/cobalt/p-b1e8d69e.entry.js +0 -1
  278. package/dist/cobalt/p-b48917c9.entry.js +0 -1
  279. package/dist/cobalt/p-c32c176a.entry.js +0 -1
  280. package/dist/cobalt/p-e48f4e45.entry.js +0 -1
  281. package/dist/cobalt/p-ef5ca521.entry.js +0 -1
  282. package/dist/components/p-9ceBPSd1.js +0 -1
  283. package/dist/components/p-B2IsXte7.js +0 -1
  284. package/dist/components/p-BsTO1uUA.js +0 -1
@@ -2,12 +2,12 @@
2
2
 
3
3
  var index = require('./index-MDAnKsze.js');
4
4
 
5
- const coAccordionCss = () => `:host{display:block}.co-accordion{display:flex;flex-direction:column;width:100%}.co-accordion__header{display:flex;align-items:center;justify-content:space-between;gap:var(--co-spacing-sm, 6px);width:100%;font-family:var(--co-font-family-primary);color:var(--co-semantic-text-default);text-align:left}.co-accordion__heading-group{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--co-spacing-xxs, 2px)}.co-accordion__heading{font-size:var(--co-font-size-24);font-weight:500;line-height:1.25;letter-spacing:-0.03em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.co-accordion__subheading{font-size:var(--co-font-size-14);font-weight:400;line-height:1.3;letter-spacing:normal;color:var(--co-semantic-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.co-accordion__caret{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;background:transparent;border-radius:var(--co-border-radius-full, 9999px);color:var(--co-semantic-text-default);cursor:pointer;transition:transform var(--co-motion-duration-base) var(--co-motion-ease-out), background-color var(--co-motion-duration-fast) var(--co-motion-ease-out);transform:rotate(180deg);}.co-accordion__caret:hover:not(:disabled){background:var(--co-color-opacity-negro-8, rgba(31, 28, 27, 0.08))}.co-accordion--open .co-accordion__caret{transform:rotate(0deg);}.co-accordion__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--co-motion-duration-slow) var(--co-motion-ease-out)}.co-accordion__body-inner{min-height:0;overflow:hidden;padding-top:var(--co-spacing-2xl);transition:padding-top var(--co-motion-duration-slow) var(--co-motion-ease-out)}.co-accordion:not(.co-accordion--open) .co-accordion__body-inner{padding-top:0}.co-accordion--open .co-accordion__body{grid-template-rows:1fr}.co-accordion:not(.co-accordion--open) .co-accordion__body-inner{visibility:hidden;transition:padding-top var(--co-motion-duration-slow) var(--co-motion-ease-out), visibility 0s linear var(--co-motion-duration-slow)}.co-accordion--open .co-accordion__body-inner{visibility:visible;transition:padding-top var(--co-motion-duration-slow) var(--co-motion-ease-out), visibility 0s linear 0s}.co-accordion__caret:focus-visible{outline:2px solid var(--co-color-primary-azul, #2563eb);outline-offset:2px}.co-accordion--disabled .co-accordion__header{opacity:0.5}.co-accordion--disabled .co-accordion__caret{cursor:not-allowed}`;
5
+ const coAccordionCss = () => `:host{display:block}.co-accordion{display:flex;flex-direction:column;width:100%}.co-accordion__header{display:flex;align-items:center;justify-content:space-between;gap:var(--co-spacing-sm, 6px);width:100%;font-family:var(--co-font-family-primary);color:var(--co-semantic-text-default);text-align:left}.co-accordion__heading-group{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--co-spacing-xxs, 2px)}.co-accordion__heading{font-size:var(--co-font-size-24);font-weight:500;line-height:1.25;letter-spacing:-0.03em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.co-accordion__subheading{font-size:var(--co-font-size-14);font-weight:400;line-height:1.3;letter-spacing:normal;color:var(--co-semantic-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.co-accordion__caret{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;background:transparent;border-radius:var(--co-border-radius-full, 9999px);color:var(--co-semantic-text-default);cursor:pointer;transition:transform var(--co-motion-duration-base) var(--co-motion-ease-out), background-color var(--co-motion-duration-fast) var(--co-motion-ease-out);transform:rotate(180deg);}.co-accordion__caret:hover:not(:disabled){background:var(--co-color-opacity-negro-8, rgba(31, 28, 27, 0.08))}.co-accordion--open .co-accordion__caret{transform:rotate(0deg);}.co-accordion__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--co-motion-duration-slow) var(--co-motion-ease-out)}.co-accordion__body-inner{min-height:0;overflow:hidden;padding-top:var(--co-spacing-md);transition:padding-top var(--co-motion-duration-slow) var(--co-motion-ease-out)}.co-accordion:not(.co-accordion--open) .co-accordion__body-inner{padding-top:0}.co-accordion--open .co-accordion__body{grid-template-rows:1fr}.co-accordion:not(.co-accordion--open) .co-accordion__body-inner{visibility:hidden;transition:padding-top var(--co-motion-duration-slow) var(--co-motion-ease-out), visibility 0s linear var(--co-motion-duration-slow)}.co-accordion--open .co-accordion__body-inner{visibility:visible;transition:padding-top var(--co-motion-duration-slow) var(--co-motion-ease-out), visibility 0s linear 0s}.co-accordion__caret:focus-visible{outline:2px solid var(--co-color-primary-azul, #2563eb);outline-offset:2px}.co-accordion--disabled .co-accordion__header{opacity:0.5}.co-accordion--disabled .co-accordion__caret{cursor:not-allowed}`;
6
6
 
7
7
  const CoAccordion = class {
8
8
  constructor(hostRef) {
9
9
  index.registerInstance(this, hostRef);
10
- this.coToggle = index.createEvent(this, "coToggle", 7);
10
+ this.coToggle = index.createEvent(this, "coToggle", 3);
11
11
  /** Whether the section is expanded. */
12
12
  this.open = true;
13
13
  /** Section heading text (used when the `header` slot is empty). */
@@ -36,11 +36,11 @@ const CoAccordion = class {
36
36
  return !!(this.subheading && this.subheading.trim()) || this.hasSubheadingSlot;
37
37
  }
38
38
  render() {
39
- return (index.h("div", { key: '4e2089349432ce39bb797397aacaebd022fcbcee', class: {
39
+ return (index.h("div", { key: '96b5b0f97642972b0505d038125f9e225ee1ab2d', class: {
40
40
  'co-accordion': true,
41
41
  'co-accordion--open': this.open,
42
42
  'co-accordion--disabled': this.disabled,
43
- }, part: "accordion" }, index.h("div", { key: '4337878858bd31822201a925010f3150568fa056', class: "co-accordion__header", part: "header" }, index.h("span", { key: 'cf69c69cc786981ca6bd54bd0f6a6c38a3baa0b6', class: "co-accordion__heading-group" }, index.h("span", { key: '0e7efd52e6d48c35ce0270485e8ce6099c6a3302', class: "co-accordion__heading", part: "heading" }, index.h("slot", { key: 'b575ce7ae5611007490724f430819f083781f84d', name: "header" }, this.heading)), this.showSubheading && (index.h("span", { key: '996a58f3f3b5cd656849b413b0f998675452cc2f', class: "co-accordion__subheading", part: "subheading" }, index.h("slot", { key: 'a9029aa67f51162ad54c010d23bf20545883ef45', name: "subheading" }, this.subheading)))), index.h("button", { key: '757286aaf2914fe7d32fc14ab0f5de57ffeab48c', class: "co-accordion__caret", type: "button", "aria-expanded": this.open ? 'true' : 'false', "aria-label": this.heading || 'Toggle section', disabled: this.disabled, onClick: this.handleToggle, part: "caret" }, index.h("co-icon", { key: 'b4c3c96489a30607727a44955dbff2d504ef2b6e', name: "caret-up", size: 20 }))), index.h("div", { key: 'bd56b12cbd7484f61fec140740312800536d7b18', class: "co-accordion__body", part: "body" }, index.h("div", { key: '1f2ff56e7bd7a49f8484c988ecdf434d108ef4ed', class: "co-accordion__body-inner", part: "body-inner" }, index.h("slot", { key: '25ef25609ccece786a05709d90a32e7e135fec72' })))));
43
+ }, part: "accordion" }, index.h("div", { key: '91f8d47d2f342a48b7d88fd6385fe532f969a636', class: "co-accordion__header", part: "header" }, index.h("span", { key: 'b55915f1078d0b7f46ff08b7f5d78383050a8df1', class: "co-accordion__heading-group" }, index.h("span", { key: '99a08344b195983609dfd5d4054af8f96547ae1f', class: "co-accordion__heading", part: "heading" }, index.h("slot", { key: '330134f4fdbb831253bcec63bfd43968171e7c44', name: "header" }, this.heading)), this.showSubheading && (index.h("span", { key: '5b8fcb450d266843ff722cf9ec97d6e600cff12d', class: "co-accordion__subheading", part: "subheading" }, index.h("slot", { key: '51a98c7f68bd7e4d6d0705c21feb288389af5d4e', name: "subheading" }, this.subheading)))), index.h("button", { key: '8eea6b6fdfc04dfaf5561527dcc8d40be1069da4', class: "co-accordion__caret", type: "button", "aria-expanded": this.open ? 'true' : 'false', "aria-label": this.heading || 'Toggle section', disabled: this.disabled, onClick: this.handleToggle, part: "caret" }, index.h("co-icon", { key: 'a0343d006eafb7cb895584c05427d590e9c820a7', name: "caret-up", size: 20 }))), index.h("div", { key: '24edd828c5e12ebfcf5dce6eb99d0755e04ebe68', class: "co-accordion__body", part: "body" }, index.h("div", { key: '29e4e7514802a8f7269e135d4e4112def33663fa', class: "co-accordion__body-inner", part: "body-inner" }, index.h("slot", { key: '38e1e269578c9e949c8434c839b291e60612e538' })))));
44
44
  }
45
45
  get el() { return index.getElement(this); }
46
46
  };
@@ -2,7 +2,7 @@
2
2
 
3
3
  var index = require('./index-MDAnKsze.js');
4
4
 
5
- const coActionBarCss = () => `:host{display:inline-flex;font-family:var(--co-font-family-primary);pointer-events:none}:host([position='bottom-center']){position:fixed;left:50%;transform:translateX(-50%);bottom:var(--co-action-bar-offset, 24px);z-index:var(--co-action-bar-z, 1000);max-width:calc(100vw - 2 * var(--co-action-bar-inline-margin, 24px))}.co-action-bar{position:relative;display:flex;align-items:center;box-sizing:border-box;max-width:100%;gap:var(--co-spacing-sm2);padding:var(--co-spacing-sm2) var(--co-spacing-md) var(--co-spacing-sm2) var(--co-spacing-lg);border-radius:var(--co-border-radius-lg);background:var(--co-semantic-surface-primary);color:var(--co-semantic-text-inverse);box-shadow:var(--co-shadow-lg);opacity:0;transform:translateY(8px);pointer-events:none;visibility:hidden}.co-action-bar--open{opacity:1;transform:translateY(0);pointer-events:auto;visibility:visible}.co-action-bar--animated{transition:opacity var(--co-motion-duration-base) var(--co-motion-ease-out), transform var(--co-motion-duration-base) var(--co-motion-ease-out), visibility 0s linear var(--co-motion-duration-base)}.co-action-bar--animated.co-action-bar--open{transition:opacity var(--co-motion-duration-base) var(--co-motion-ease-out), transform var(--co-motion-duration-base) var(--co-motion-ease-out), visibility 0s}.co-action-bar__label{font-size:var(--co-font-size-14);font-weight:500;letter-spacing:var(--co-font-letter-spacing-body);line-height:1;white-space:nowrap;flex-shrink:0;padding-right:var(--co-spacing-xs)}.co-action-bar__actions{display:flex;align-items:center;gap:var(--co-spacing-xs);min-width:0}::slotted(hr){width:1px;height:24px;flex-shrink:0;align-self:center;margin:0 var(--co-spacing-xs);border:none;padding:0;background:color-mix(in srgb, var(--co-color-base-blanco, #fff) 28%, transparent)}.co-action-bar__dismiss{flex-shrink:0}.co-action-bar__live{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap}`;
5
+ const coActionBarCss = () => `:host{display:inline-flex;font-family:var(--co-font-family-primary);pointer-events:none}:host([position='bottom-center']){position:fixed;left:50%;transform:translateX(-50%);bottom:var(--co-action-bar-offset, 24px);z-index:var(--co-action-bar-z, 1000);max-width:calc(100% - 2 * var(--co-action-bar-inline-margin, 24px))}.co-action-bar{position:relative;display:flex;align-items:center;box-sizing:border-box;max-width:100%;gap:var(--co-spacing-sm2);padding:var(--co-spacing-sm2) var(--co-spacing-md) var(--co-spacing-sm2) var(--co-spacing-lg);border-radius:var(--co-border-radius-lg);background:var(--co-semantic-surface-primary);color:var(--co-semantic-text-inverse);box-shadow:var(--co-shadow-lg);opacity:0;transform:translateY(8px);pointer-events:none;visibility:hidden}.co-action-bar--open{opacity:1;transform:translateY(0);pointer-events:auto;visibility:visible}.co-action-bar--animated{transition:opacity var(--co-motion-duration-base) var(--co-motion-ease-out), transform var(--co-motion-duration-base) var(--co-motion-ease-out), visibility 0s linear var(--co-motion-duration-base)}.co-action-bar--animated.co-action-bar--open{transition:opacity var(--co-motion-duration-base) var(--co-motion-ease-out), transform var(--co-motion-duration-base) var(--co-motion-ease-out), visibility 0s}.co-action-bar__label{font-size:var(--co-font-size-14);font-weight:500;letter-spacing:var(--co-font-letter-spacing-body);line-height:1;white-space:nowrap;flex-shrink:0;padding-right:var(--co-spacing-xs)}.co-action-bar__actions{display:flex;align-items:center;gap:var(--co-spacing-xs);min-width:0}::slotted(hr){width:1px;height:24px;flex-shrink:0;align-self:center;margin:0 var(--co-spacing-xs);border:none;padding:0;background:color-mix(in srgb, var(--co-color-base-blanco, #fff) 28%, transparent)}.co-action-bar__dismiss{flex-shrink:0}.co-action-bar__live{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap}`;
6
6
 
7
7
  const CoActionBar = class {
8
8
  constructor(hostRef) {
@@ -81,6 +81,7 @@ const CoAudioPlayer = class {
81
81
  this.coPause = index.createEvent(this, "coPause", 7);
82
82
  this.coEnded = index.createEvent(this, "coEnded", 7);
83
83
  this.coError = index.createEvent(this, "coError", 7);
84
+ this.coTimeUpdate = index.createEvent(this, "coTimeUpdate", 3);
84
85
  /** Compact variant: narrower, hides the download button. */
85
86
  this.compact = false;
86
87
  /** Fallback bar count used before the container width is measured. Once
@@ -117,10 +118,22 @@ const CoAudioPlayer = class {
117
118
  // Bumped by every init(); an in-flight extractPeaks whose token no longer matches
118
119
  // belongs to a superseded `src` and must not write peaks/duration.
119
120
  this.loadToken = 0;
120
- this.onMeta = () => { this.syncDuration(); };
121
- this.onCanPlay = () => { this.isLoading = false; };
121
+ this.onMeta = () => { this.syncDuration(); this.applyPendingSeek(); };
122
+ /**
123
+ * A seek asked for before the media had data. `<audio>` DROPS a `currentTime`
124
+ * write while `readyState` is HAVE_NOTHING, silently: with `preload="metadata"`
125
+ * and a clip never played, the very first jump (clicking a transcript line on
126
+ * a recording nobody opened yet) went nowhere. Kept here and applied as soon
127
+ * as the element can take it.
128
+ */
129
+ this.pendingSeek = null;
130
+ this.onCanPlay = () => { this.isLoading = false; this.applyPendingSeek(); };
122
131
  this.onWaiting = () => { this.isLoading = true; };
123
- this.onTime = () => { var _a; this.currentTime = ((_a = this.audio) === null || _a === void 0 ? void 0 : _a.currentTime) || 0; };
132
+ this.onTime = () => {
133
+ var _a;
134
+ this.currentTime = ((_a = this.audio) === null || _a === void 0 ? void 0 : _a.currentTime) || 0;
135
+ this.coTimeUpdate.emit({ currentTime: this.currentTime, duration: this.knownDuration });
136
+ };
124
137
  this.onEnded = () => { this.isPlaying = false; this.currentTime = 0; this.coEnded.emit(); };
125
138
  this.onErr = (e) => { this.isLoading = false; this.hasError = true; this.coError.emit(e); };
126
139
  this.toggle = () => {
@@ -277,12 +290,26 @@ const CoAudioPlayer = class {
277
290
  this.isPlaying = false;
278
291
  }
279
292
  async extractPeaks(url, token) {
293
+ var _a;
280
294
  let ctx;
281
295
  try {
296
+ /**
297
+ * `OfflineAudioContext` FIRST, and a live `AudioContext` only as the
298
+ * fallback: decoding a waveform needs no audio OUTPUT, and a live context
299
+ * created before the user has interacted trips the browser's autoplay
300
+ * policy — "The AudioContext was not allowed to start. It must be resumed
301
+ * (or created) after a user gesture on the page", once per player. A page
302
+ * with 15 recordings logged it 15 times. The offline one has no output
303
+ * device, so the policy does not apply to it.
304
+ *
305
+ * Its arguments are placeholders: nothing is ever rendered through this
306
+ * context, it is only the host for `decodeAudioData`.
307
+ */
308
+ const OfflineCtx = window.OfflineAudioContext || window.webkitOfflineAudioContext;
282
309
  const Ctx = window.AudioContext || window.webkitAudioContext;
283
- if (!Ctx || typeof fetch === 'undefined')
310
+ if ((!OfflineCtx && !Ctx) || typeof fetch === 'undefined')
284
311
  return; // keep fallback
285
- ctx = new Ctx();
312
+ ctx = OfflineCtx ? new OfflineCtx(1, 1, 44100) : new Ctx();
286
313
  const buf = await (await fetch(url)).arrayBuffer();
287
314
  const audioBuf = await ctx.decodeAudioData(buf);
288
315
  if (token !== this.loadToken)
@@ -291,7 +318,7 @@ const CoAudioPlayer = class {
291
318
  this.decodedDuration = audioBuf.duration;
292
319
  this.peaks = resamplePeaks(this.rawChannelData, this.effectiveBars);
293
320
  }
294
- catch (_a) {
321
+ catch (_b) {
295
322
  if (token !== this.loadToken)
296
323
  return;
297
324
  // Undecodable (codec WebAudio can't handle, CORS, network): keep the
@@ -304,11 +331,13 @@ const CoAudioPlayer = class {
304
331
  finally {
305
332
  // Always release the context. Chrome caps concurrent AudioContexts per
306
333
  // document, so leaking one per failed decode would eventually stop every
307
- // later player on the page from decoding at all.
334
+ // later player on the page from decoding at all. `close()` lives on
335
+ // AudioContext, not on every BaseAudioContext (an OfflineAudioContext
336
+ // needs no closing and may not implement it): optional call, not a cast.
308
337
  try {
309
- await (ctx === null || ctx === void 0 ? void 0 : ctx.close());
338
+ await ((_a = ctx === null || ctx === void 0 ? void 0 : ctx.close) === null || _a === void 0 ? void 0 : _a.call(ctx));
310
339
  }
311
- catch ( /* already closed */_b) { /* already closed */ }
340
+ catch ( /* already closed */_c) { /* already closed */ }
312
341
  }
313
342
  if (token === this.loadToken)
314
343
  this.syncDuration();
@@ -323,6 +352,47 @@ const CoAudioPlayer = class {
323
352
  if (!Object.is(next, this.duration))
324
353
  this.duration = next;
325
354
  }
355
+ applyPendingSeek() {
356
+ if (this.pendingSeek == null || !this.audio)
357
+ return;
358
+ const target = this.pendingSeek;
359
+ this.pendingSeek = null;
360
+ this.audio.currentTime = target;
361
+ this.currentTime = this.audio.currentTime;
362
+ this.coTimeUpdate.emit({ currentTime: this.currentTime, duration: this.knownDuration });
363
+ }
364
+ /**
365
+ * Move the playhead. Clamped to `[0, duration]`: `audio.currentTime` takes a
366
+ * restricted double and THROWS on a non-finite value, and a duration that is
367
+ * not known yet reads as 0 (see `knownDuration`).
368
+ */
369
+ async seek(seconds) {
370
+ var _a;
371
+ if (!this.audio || !Number.isFinite(seconds))
372
+ return;
373
+ const total = this.knownDuration;
374
+ const target = total ? Math.max(0, Math.min(total, seconds)) : Math.max(0, seconds);
375
+ this.audio.currentTime = target;
376
+ // The element could not take it yet (no data): keep it for `loadedmetadata`.
377
+ // The readback is the only way to tell — the write throws nothing.
378
+ if (Math.abs(((_a = this.audio.currentTime) !== null && _a !== void 0 ? _a : 0) - target) > 0.05)
379
+ this.pendingSeek = target;
380
+ // Optimistic either way: the UI shows where playback is GOING, and the
381
+ // pending write lands on its own.
382
+ this.currentTime = target;
383
+ this.coTimeUpdate.emit({ currentTime: this.currentTime, duration: total });
384
+ }
385
+ /** Start playback if it is not already running (no-op on a failed load). */
386
+ async play() {
387
+ if (!this.audio || this.isPlaying || this.hasError)
388
+ return;
389
+ try {
390
+ await this.audio.play();
391
+ this.isPlaying = true;
392
+ this.coPlay.emit();
393
+ }
394
+ catch ( /* autoplay blocked or source not ready: the button still works */_a) { /* autoplay blocked or source not ready: the button still works */ }
395
+ }
326
396
  async download() {
327
397
  if (!this.src || typeof fetch === 'undefined')
328
398
  return;
@@ -349,13 +419,13 @@ const CoAudioPlayer = class {
349
419
  // below `aria-valuenow` the moment playback advances. ARIA 1.2 makes valuemax
350
420
  // optional for `slider`, so leaving it off while unknown is well-formed.
351
421
  const ariaMax = total ? Math.floor(total) : undefined;
352
- const bar = (hFrac, i, played = false) => (index.h("rect", { key: '997dcefc32f5188c41afa0a7b5135c70cceeed1d', x: i * UNIT, y: H / 2 - (hFrac * H) / 2, width: W, height: Math.max(hFrac * H, 2), rx: R, class: { 'co-audio-player__bar': true, 'co-audio-player__bar--played': played } }));
353
- return (index.h("div", { key: '8ac91ab3f8eb417df5e7cf4d1e016d6ca7eb45a3', class: {
422
+ const bar = (hFrac, i, played = false) => (index.h("rect", { key: '7cbeb92ef52ffc865077340d72bae11139ced551', x: i * UNIT, y: H / 2 - (hFrac * H) / 2, width: W, height: Math.max(hFrac * H, 2), rx: R, class: { 'co-audio-player__bar': true, 'co-audio-player__bar--played': played } }));
423
+ return (index.h("div", { key: '34078ed0540dc72c87644c3ae830b3a2ff43a99e', class: {
354
424
  'co-audio-player': true,
355
425
  'co-audio-player--compact': this.compact,
356
426
  'co-audio-player--error': this.hasError,
357
427
  'co-audio-player--playing': this.isPlaying,
358
- }, part: "player" }, index.h("button", { key: '0e5897dc64c91ee67432f17d7b0d57a27f44cd0e', type: "button", class: "co-audio-player__play", part: "play", "aria-label": this.hasError ? 'Audio no disponible' : this.isPlaying ? 'Pausar' : 'Reproducir', "aria-busy": this.isLoading ? 'true' : 'false', disabled: this.hasError || !this.src, onClick: this.toggle }, index.h("co-icon", { key: '4843751a2a3709942a49ae03ff9ba0eb08ab7d97', name: this.hasError ? 'warning-circle' : this.isPlaying ? 'pause' : 'play', weight: "fill", size: this.compact ? 12 : 14 })), index.h("div", { key: 'b7aebd0e0c5197b0dec6257bbec7c9dd8dd55d6f', class: "co-audio-player__wave", part: "wave", role: "slider", tabindex: "0", "aria-label": "Progreso de reproducci\u00F3n", "aria-valuemin": 0, "aria-valuemax": ariaMax, "aria-valuenow": Math.floor(this.currentTime), ref: (el) => (this.waveEl = el), onClick: (e) => this.seekAt(e.clientX), onKeyDown: this.onWaveKey }, index.h("svg", { key: 'a504d058a27bb33dd57733ec32db306eb0ed87e9', class: "co-audio-player__svg", viewBox: `0 0 ${vbW} ${H}`, preserveAspectRatio: "none", "aria-hidden": "true" }, this.peaks.map((hFrac, i) => bar(hFrac, i)), index.h("clipPath", { key: '9cfa69ba28801893baf62c8f66b18a31319fdebe', id: "co-ap-clip" }, index.h("rect", { key: '6e5cb34baeb2b7dddd6ef7e94f8585ef912e0315', x: "0", y: "0", width: (pct / 100) * vbW, height: H })), index.h("g", { key: '4b78a29dde762cabc85d7921aacbcd261d8fa6b5', "clip-path": "url(#co-ap-clip)" }, this.peaks.map((hFrac, i) => bar(hFrac, i, true))))), index.h("span", { key: '9067d22b0e2994e46ef49c60356292ec59f61a21', class: "co-audio-player__time", part: "time" }, formatTime(this.currentTime), " / ", formatTime(this.duration)), !this.compact && (index.h("button", { key: 'f6149a9996e6ce15230221c2f6fcec95fec5f485', type: "button", class: "co-audio-player__speed", part: "speed", "aria-label": `Velocidad de reproducción ${this.playbackRate}x`, onClick: this.cycleSpeed }, this.playbackRate, "x")), !this.compact && !this.noDownload && (index.h("button", { key: '73d291d31d92bcb0e18e230fe0ac35d3ab4077b2', type: "button", class: "co-audio-player__dl", part: "download", "aria-label": "Descargar", onClick: () => this.download() }, index.h("co-icon", { key: '9ab09f5d6b975f4f5544019f70bd2ca1ee521068', name: "download-simple", size: 14 })))));
428
+ }, part: "player" }, index.h("button", { key: '7f692d951704a6e101f77512967d4b206f985e18', type: "button", class: "co-audio-player__play", part: "play", "aria-label": this.hasError ? 'Audio no disponible' : this.isPlaying ? 'Pausar' : 'Reproducir', "aria-busy": this.isLoading ? 'true' : 'false', disabled: this.hasError || !this.src, onClick: this.toggle }, index.h("co-icon", { key: 'fdc0a0a0703189efe10bbc1b1182572d1120a347', name: this.hasError ? 'warning-circle' : this.isPlaying ? 'pause' : 'play', weight: "fill", size: this.compact ? 12 : 14 })), index.h("div", { key: '6842ce24993895bf70461a28eb837a0558d277d7', class: "co-audio-player__wave", part: "wave", role: "slider", tabindex: "0", "aria-label": "Progreso de reproducci\u00F3n", "aria-valuemin": 0, "aria-valuemax": ariaMax, "aria-valuenow": Math.floor(this.currentTime), ref: (el) => (this.waveEl = el), onClick: (e) => this.seekAt(e.clientX), onKeyDown: this.onWaveKey }, index.h("svg", { key: 'e75c5e1f78633194608758f43a47987bc28c2081', class: "co-audio-player__svg", viewBox: `0 0 ${vbW} ${H}`, preserveAspectRatio: "none", "aria-hidden": "true" }, this.peaks.map((hFrac, i) => bar(hFrac, i)), index.h("clipPath", { key: 'c4136dddad555e8b5ef09a81c38433cd2bf39d7c', id: "co-ap-clip" }, index.h("rect", { key: 'edb79083fbc7d225bd5668443fb6541fe77c8f9d', x: "0", y: "0", width: (pct / 100) * vbW, height: H })), index.h("g", { key: 'c91b8b285f53b9dc4f6110f9cb73b7f3f892fad6', "clip-path": "url(#co-ap-clip)" }, this.peaks.map((hFrac, i) => bar(hFrac, i, true))))), index.h("span", { key: '26af75ef91f36d432add06bb636c4d3194902b0a', class: "co-audio-player__time", part: "time" }, formatTime(this.currentTime), " / ", formatTime(this.duration)), !this.compact && (index.h("button", { key: 'a2093fc2d9c9a9c120e97e59f5e8b91467e1c20c', type: "button", class: "co-audio-player__speed", part: "speed", "aria-label": `Velocidad de reproducción ${this.playbackRate}x`, onClick: this.cycleSpeed }, this.playbackRate, "x")), !this.compact && !this.noDownload && (index.h("button", { key: '327336de6ad09adac5f8cba6e048b58bbef0008e', type: "button", class: "co-audio-player__dl", part: "download", "aria-label": "Descargar", onClick: () => this.download() }, index.h("co-icon", { key: '787738fea40ab74531c943f876e20acf6ceb54df', name: "download-simple", size: 14 })))));
359
429
  }
360
430
  static get watchers() { return {
361
431
  "src": [{
@@ -0,0 +1,72 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-MDAnKsze.js');
4
+ var color = require('./color-CML2Cfdh.js');
5
+
6
+ const coAvatarCss = () => `:host{display:inline-flex;--co-avatar-squircle:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'><path d='M100 50L99.94 68.06L99.75 73.81L99.44 77.94L99.01 81.26L98.44 84.05L97.74 86.46L96.91 88.57L95.94 90.43L94.81 92.07L93.53 93.53L92.07 94.81L90.43 95.94L88.57 96.91L86.46 97.74L84.05 98.44L81.26 99.01L77.94 99.44L73.81 99.75L68.06 99.94L50 100L31.94 99.94L26.19 99.75L22.06 99.44L18.74 99.01L15.95 98.44L13.54 97.74L11.43 96.91L9.57 95.94L7.93 94.81L6.47 93.53L5.19 92.07L4.06 90.43L3.09 88.57L2.26 86.46L1.56 84.05L0.99 81.26L0.56 77.94L0.25 73.81L0.06 68.06L0 50L0.06 31.94L0.25 26.19L0.56 22.06L0.99 18.74L1.56 15.95L2.26 13.54L3.09 11.43L4.06 9.57L5.19 7.93L6.47 6.47L7.93 5.19L9.57 4.06L11.43 3.09L13.54 2.26L15.95 1.56L18.74 0.99L22.06 0.56L26.19 0.25L31.94 0.06L50 0L68.06 0.06L73.81 0.25L77.94 0.56L81.26 0.99L84.05 1.56L86.46 2.26L88.57 3.09L90.43 4.06L92.07 5.19L93.53 6.47L94.81 7.93L95.94 9.57L96.91 11.43L97.74 13.54L98.44 15.95L99.01 18.74L99.44 22.06L99.75 26.19L99.94 31.94Z' fill='%23fff'/></svg>")}.co-avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--co-border-radius-full);background:var(--co-semantic-surface-primary);color:var(--co-semantic-on-primary);font-family:var(--co-font-family-primary);font-weight:600;line-height:1;letter-spacing:var(--co-font-letter-spacing-body);overflow:hidden;flex-shrink:0;user-select:none;-webkit-font-smoothing:antialiased}.co-avatar::after{content:'';position:absolute;inset:0;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 0 var(--co-avatar-border-width, 1px) var(--co-avatar-border-color, transparent)}.co-avatar__text{text-transform:uppercase}.co-avatar__img{width:100%;height:100%;object-fit:cover;display:block}.co-avatar--square{border-radius:0;-webkit-mask:var(--co-avatar-squircle) center / 100% 100% no-repeat;mask:var(--co-avatar-squircle) center / 100% 100% no-repeat}.co-avatar--square::after{--co-avatar-bw:var(--co-avatar-border-width, 1px);box-shadow:none;background:var(--co-avatar-border-color, transparent);-webkit-mask:var(--co-avatar-squircle) center / 100% 100% no-repeat, var(--co-avatar-squircle) center / calc(100% - 2 * var(--co-avatar-bw)) calc(100% - 2 * var(--co-avatar-bw)) no-repeat;-webkit-mask-composite:xor;mask:var(--co-avatar-squircle) center / 100% 100% no-repeat, var(--co-avatar-squircle) center / calc(100% - 2 * var(--co-avatar-bw)) calc(100% - 2 * var(--co-avatar-bw)) no-repeat;mask-composite:exclude}.co-avatar--light{color:rgba(0, 0, 0, 0.87)}co-tooltip{display:inline-flex;align-items:center;line-height:0}`;
7
+
8
+ const SIZE_MAP = {
9
+ xl: 80, lg: 64, md: 56, sm: 48, xs: 32, xxs: 24,
10
+ };
11
+ const ICON_SIZE_MAP = {
12
+ xl: 32, lg: 28, md: 24, sm: 20, xs: 16, xxs: 12,
13
+ };
14
+ const FONT_SIZE_MAP = {
15
+ xl: 'var(--co-font-size-26)',
16
+ lg: 'var(--co-font-size-22)',
17
+ md: 'var(--co-font-size-18)',
18
+ sm: 'var(--co-font-size-16)',
19
+ xs: 'var(--co-font-size-12)',
20
+ xxs: 'var(--co-font-size-10)',
21
+ };
22
+ const CoAvatar = class {
23
+ constructor(hostRef) {
24
+ index.registerInstance(this, hostRef);
25
+ /** Display type: text shows initials, icon shows a Phosphor icon, image shows a picture */
26
+ this.type = 'text';
27
+ /** Size of the avatar */
28
+ this.size = 'md';
29
+ /** Phosphor icon name (type="icon"), defaults to "user" */
30
+ this.icon = 'user';
31
+ /** Icon weight */
32
+ this.iconWeight = 'regular';
33
+ /** Shape of the avatar */
34
+ this.shape = 'circle';
35
+ this.imgFailed = false;
36
+ this.handleImgError = () => {
37
+ this.imgFailed = true;
38
+ };
39
+ }
40
+ render() {
41
+ var _a, _b, _c, _d, _e, _f, _g;
42
+ const dim = (_a = SIZE_MAP[this.size]) !== null && _a !== void 0 ? _a : 56;
43
+ const iconSize = (_b = ICON_SIZE_MAP[this.size]) !== null && _b !== void 0 ? _b : 24;
44
+ const fontSize = (_c = FONT_SIZE_MAP[this.size]) !== null && _c !== void 0 ? _c : 'var(--co-font-size-18)';
45
+ const showImage = this.type === 'image' && this.src && !this.imgFailed;
46
+ // Broken/missing image without initials falls back to the ICON (default
47
+ // "user") — never an empty disc. With `text` present, initials win (they
48
+ // identify the record better than a generic glyph).
49
+ const showIcon = this.type === 'icon' || (this.type === 'image' && !showImage && !this.text);
50
+ const ariaLabel = this.type === 'text'
51
+ ? this.text
52
+ : this.type === 'image'
53
+ ? (_e = (_d = this.alt) !== null && _d !== void 0 ? _d : this.text) !== null && _e !== void 0 ? _e : this.icon
54
+ : this.icon;
55
+ const disc = (index.h("div", { class: {
56
+ 'co-avatar': true,
57
+ [`co-avatar--${this.size}`]: true,
58
+ [`co-avatar--${this.type}`]: true,
59
+ 'co-avatar--square': this.shape === 'square',
60
+ 'co-avatar--light': !!this.color && color.isLightColor(this.color),
61
+ }, style: Object.assign(Object.assign({ width: `var(--co-avatar-size, ${dim}px)`, height: `var(--co-avatar-size, ${dim}px)`, fontSize }, (this.color ? { background: this.color } : {})), (this.ringColor
62
+ ? { '--co-avatar-border-color': this.ringColor, '--co-avatar-border-width': '2px' }
63
+ : {})), part: "avatar", role: "img", "aria-label": ariaLabel }, showImage ? (index.h("img", { class: "co-avatar__img", src: this.src, alt: (_g = (_f = this.alt) !== null && _f !== void 0 ? _f : this.text) !== null && _g !== void 0 ? _g : '', onError: this.handleImgError })) : showIcon ? (index.h("co-icon", { name: this.icon, weight: this.iconWeight, size: iconSize })) : (index.h("span", { class: "co-avatar__text" }, this.text))));
64
+ // No tooltip when `name` is unset/empty — renders exactly as before, no wrapper.
65
+ if (!this.name)
66
+ return disc;
67
+ return index.h("co-tooltip", { content: this.name }, disc);
68
+ }
69
+ };
70
+ CoAvatar.style = coAvatarCss();
71
+
72
+ exports.co_avatar = CoAvatar;
@@ -2,7 +2,7 @@
2
2
 
3
3
  var index = require('./index-MDAnKsze.js');
4
4
 
5
- const coButtonCss = () => `:host{display:inline-flex}:host([disabled]){pointer-events:none}.co-button{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;border:1px solid transparent;outline:none;font-family:var(--co-font-family-primary);font-weight:400;line-height:1;letter-spacing:var(--co-font-letter-spacing-body);white-space:nowrap;-webkit-font-smoothing:antialiased;transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out), background var(--co-motion-duration-fast) var(--co-motion-ease-out), transform var(--co-motion-duration-fast) var(--co-motion-ease-out);box-sizing:border-box;-webkit-backdrop-filter:var(--co-glass-filter, blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate)));backdrop-filter:var(--co-glass-filter, blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate)))}.co-button--primary{background:var(--co-semantic-surface-primary);color:var(--co-semantic-on-primary);border-color:color-mix(in srgb, var(--co-semantic-on-primary) 28%, transparent)}.co-button--secondary{background:color-mix(in srgb, var(--co-semantic-surface-secondary) 55%, transparent);color:var(--co-semantic-on-secondary);border-color:var(--co-semantic-border-subtle)}.co-button--stroke{background:color-mix(in srgb, var(--co-semantic-surface-secondary) 25%, transparent);color:var(--co-semantic-text-default);border-color:var(--co-semantic-border-default)}.co-button--ghost{background:transparent;color:var(--co-semantic-text-default);border-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.co-button--danger{background:var(--co-semantic-status-error);color:var(--co-color-base-blanco);border-color:transparent}.co-button--success{background:var(--co-semantic-status-success);color:var(--co-color-base-blanco);border-color:transparent}.co-button--rounded.co-button--l{padding:var(--co-spacing-xl) var(--co-spacing-2xl);gap:var(--co-spacing-md);font-size:var(--co-font-size-18);border-radius:var(--co-button-radius, var(--co-border-radius-full))}.co-button--rounded.co-button--m{padding:var(--co-spacing-lg) var(--co-spacing-xl);gap:var(--co-spacing-md);font-size:var(--co-font-size-16);border-radius:var(--co-button-radius, var(--co-border-radius-full))}.co-button--rounded.co-button--s{padding:var(--co-spacing-md) var(--co-spacing-lg);gap:var(--co-spacing-sm2);font-size:var(--co-font-size-14);border-radius:var(--co-button-radius, var(--co-border-radius-full))}.co-button--rounded.co-button--xs{padding:var(--co-spacing-md) var(--co-spacing-lg);gap:var(--co-spacing-sm2);font-size:var(--co-font-size-12);border-radius:var(--co-button-radius, var(--co-border-radius-full))}.co-button--square.co-button--l{padding:var(--co-spacing-lg) var(--co-spacing-xl);gap:var(--co-spacing-md);font-size:var(--co-font-size-18);border-radius:var(--co-border-radius-lg)}.co-button--square.co-button--m{padding:var(--co-spacing-md) var(--co-spacing-lg);gap:var(--co-spacing-sm2);font-size:var(--co-font-size-16);border-radius:var(--co-border-radius-sm)}.co-button--square.co-button--s{padding:var(--co-spacing-sm2) var(--co-spacing-md);gap:var(--co-spacing-sm);font-size:var(--co-font-size-14);border-radius:var(--co-border-radius-xs)}.co-button--square.co-button--xs{padding:var(--co-spacing-sm) var(--co-spacing-sm2);gap:var(--co-spacing-xs);font-size:var(--co-font-size-12);border-radius:var(--co-spacing-sm)}.co-button--disabled,.co-button:disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}.co-button--primary:hover:not(:disabled){opacity:0.88}.co-button--secondary:hover:not(:disabled),.co-button--stroke:hover:not(:disabled){background:var(--co-semantic-surface-hover)}.co-button--ghost:hover:not(:disabled){background:color-mix(in srgb, var(--co-semantic-surface-hover) 60%, transparent);-webkit-backdrop-filter:var(--co-glass-filter, blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate)));backdrop-filter:var(--co-glass-filter, blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate)))}.co-button--danger:hover:not(:disabled),.co-button--success:hover:not(:disabled){opacity:0.88}.co-button:active:not(:disabled){transform:scale(0.97);transition-duration:var(--co-motion-duration-instant)}.co-button--primary{transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out), background var(--co-motion-duration-fast) var(--co-motion-ease-out), transform var(--co-motion-duration-slow) var(--co-motion-ease-spring)}.co-button--secondary.co-button--elevated{box-shadow:var(--co-shadow-sm, 0 1px 2px 0 rgba(26, 26, 26, 0.04)), inset 0 0 0 1px var(--co-color-opacity-negro-8)}.co-button--ghost.co-button--surface-dark,.co-button--stroke.co-button--surface-dark{color:var(--co-color-base-blanco, #fff)}.co-button--ghost.co-button--surface-dark:hover:not(:disabled),.co-button--stroke.co-button--surface-dark:hover:not(:disabled){background:var(--co-color-opacity-blanco-16);-webkit-backdrop-filter:none;backdrop-filter:none}.co-button--danger.co-button--surface-dark:hover:not(:disabled){opacity:1;background:color-mix(in srgb, var(--co-semantic-status-error) 84%, var(--co-color-base-blanco, #fff))}.co-button--danger.co-button--surface-dark:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb, var(--co-color-base-blanco, #fff) 45%, transparent)}::slotted([slot="icon-left"]),::slotted([slot="icon-right"]){display:inline-flex;flex-shrink:0}@supports not (background: color-mix(in srgb, red, transparent)){.co-button--primary{background:var(--co-semantic-surface-primary)}.co-button--secondary{background:var(--co-semantic-surface-secondary)}.co-button--stroke{background:transparent}}`;
5
+ const coButtonCss = () => `:host{display:inline-flex}:host([disabled]){pointer-events:none}.co-button{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;border:1px solid transparent;outline:none;font-family:var(--co-font-family-primary);font-weight:400;line-height:1;letter-spacing:var(--co-font-letter-spacing-body);white-space:nowrap;-webkit-font-smoothing:antialiased;transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out), background var(--co-motion-duration-fast) var(--co-motion-ease-out), transform var(--co-motion-duration-fast) var(--co-motion-ease-out);box-sizing:border-box;-webkit-backdrop-filter:var(--co-glass-filter, blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate)));backdrop-filter:var(--co-glass-filter, blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate)))}.co-button--primary{background:var(--co-semantic-surface-primary);color:var(--co-semantic-on-primary);border-color:color-mix(in srgb, var(--co-semantic-on-primary) 28%, transparent)}.co-button--secondary{background:color-mix(in srgb, var(--co-button-bg, var(--co-semantic-surface-secondary)) 55%, transparent);color:var(--co-button-color, var(--co-semantic-on-secondary));border-color:var(--co-button-border, var(--co-semantic-border-subtle))}.co-button--stroke{background:color-mix(in srgb, var(--co-semantic-surface-secondary) 25%, transparent);color:var(--co-semantic-text-default);border-color:var(--co-semantic-border-default)}.co-button--ghost{background:transparent;color:var(--co-semantic-text-default);border-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.co-button--danger{background:var(--co-semantic-status-error);color:var(--co-color-base-blanco);border-color:transparent}.co-button--success{background:var(--co-semantic-status-success);color:var(--co-color-base-blanco);border-color:transparent}.co-button--rounded.co-button--l{padding:var(--co-spacing-xl) var(--co-spacing-2xl);gap:var(--co-spacing-md);font-size:var(--co-font-size-18);border-radius:var(--co-button-radius, var(--co-border-radius-full))}.co-button--rounded.co-button--m{padding:var(--co-spacing-lg) var(--co-spacing-xl);gap:var(--co-spacing-md);font-size:var(--co-font-size-16);border-radius:var(--co-button-radius, var(--co-border-radius-full))}.co-button--rounded.co-button--s{padding:var(--co-spacing-md) var(--co-spacing-lg);gap:var(--co-spacing-sm2);font-size:var(--co-font-size-14);border-radius:var(--co-button-radius, var(--co-border-radius-full))}.co-button--rounded.co-button--xs{padding:var(--co-spacing-md) var(--co-spacing-lg);gap:var(--co-spacing-sm2);font-size:var(--co-font-size-12);border-radius:var(--co-button-radius, var(--co-border-radius-full))}.co-button--square.co-button--l{padding:var(--co-spacing-lg) var(--co-spacing-xl);gap:var(--co-spacing-md);font-size:var(--co-font-size-18);border-radius:var(--co-border-radius-lg)}.co-button--square.co-button--m{padding:var(--co-spacing-md) var(--co-spacing-lg);gap:var(--co-spacing-sm2);font-size:var(--co-font-size-16);border-radius:var(--co-border-radius-sm)}.co-button--square.co-button--s{padding:var(--co-spacing-sm2) var(--co-spacing-md);gap:var(--co-spacing-sm);font-size:var(--co-font-size-14);border-radius:var(--co-border-radius-xs)}.co-button--square.co-button--xs{padding:var(--co-spacing-sm) var(--co-spacing-sm2);gap:var(--co-spacing-xs);font-size:var(--co-font-size-12);border-radius:var(--co-spacing-sm)}.co-button--disabled,.co-button:disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}.co-button--primary:hover:not(:disabled){opacity:0.88}.co-button--secondary:hover:not(:disabled),.co-button--stroke:hover:not(:disabled){background:var(--co-semantic-surface-hover)}.co-button--ghost:hover:not(:disabled){background:color-mix(in srgb, var(--co-semantic-surface-hover) 60%, transparent);-webkit-backdrop-filter:var(--co-glass-filter, blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate)));backdrop-filter:var(--co-glass-filter, blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate)))}.co-button--danger:hover:not(:disabled),.co-button--success:hover:not(:disabled){opacity:0.88}.co-button:active:not(:disabled){transform:scale(0.97);transition-duration:var(--co-motion-duration-instant)}.co-button--primary{transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out), background var(--co-motion-duration-fast) var(--co-motion-ease-out), transform var(--co-motion-duration-slow) var(--co-motion-ease-spring)}.co-button--secondary.co-button--elevated{box-shadow:var(--co-shadow-sm, 0 1px 2px 0 rgba(26, 26, 26, 0.04)), inset 0 0 0 1px var(--co-color-opacity-negro-8)}.co-button--ghost.co-button--surface-dark,.co-button--stroke.co-button--surface-dark{color:var(--co-color-base-blanco, #fff)}.co-button--ghost.co-button--surface-dark:hover:not(:disabled),.co-button--stroke.co-button--surface-dark:hover:not(:disabled){background:var(--co-color-opacity-blanco-16);-webkit-backdrop-filter:none;backdrop-filter:none}.co-button--danger.co-button--surface-dark:hover:not(:disabled){opacity:1;background:color-mix(in srgb, var(--co-semantic-status-error) 84%, var(--co-color-base-blanco, #fff))}.co-button--danger.co-button--surface-dark:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb, var(--co-color-base-blanco, #fff) 45%, transparent)}::slotted([slot="icon-left"]),::slotted([slot="icon-right"]){display:inline-flex;flex-shrink:0}@supports not (background: color-mix(in srgb, red, transparent)){.co-button--primary{background:var(--co-semantic-surface-primary)}.co-button--secondary{background:var(--co-semantic-surface-secondary)}.co-button--stroke{background:transparent}}`;
6
6
 
7
7
  const ICON_SIZE = { l: 20, m: 18, s: 16, xs: 14 };
8
8
  const CoButton = class {
@@ -50,17 +50,17 @@ const CoCheckbox = class {
50
50
  // Only override the fill when a custom color is provided AND the box is "on".
51
51
  // Leaving this undefined keeps the default appearance byte-identical to before.
52
52
  const boxStyle = this.checkedColor && isOn ? { background: this.checkedColor } : undefined;
53
- return (index.h("div", { key: 'ba8053a262557bdfc35e16d743158b26e1783932', class: {
53
+ return (index.h("div", { key: 'cfcbd567066331d7751064f857407a8f9d56d386', class: {
54
54
  'co-checkbox-row': true,
55
55
  'co-checkbox-row--disabled': this.disabled,
56
- }, onClick: this.handleClick }, index.h("span", { key: 'fa4f7cddb61bce3636c949bba3b3cd0b681d3744', role: "checkbox", "aria-checked": this.indeterminate ? 'mixed' : String(this.checked), "aria-label": this.label || '', "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: this.disabled ? -1 : 0, onKeyDown: this.handleKeyDown, class: {
56
+ }, onClick: this.handleClick }, index.h("span", { key: '21c39833a43324e47718cc83ba74253f00e67e82', role: "checkbox", "aria-checked": this.indeterminate ? 'mixed' : String(this.checked), "aria-label": this.label || this.ariaLabelText || '', "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: this.disabled ? -1 : 0, onKeyDown: this.handleKeyDown, class: {
57
57
  'co-checkbox': true,
58
58
  [`co-checkbox--${this.size}`]: true,
59
59
  'co-checkbox--overlay': isOverlay,
60
60
  'co-checkbox--checked': this.checked && !this.indeterminate,
61
61
  'co-checkbox--indeterminate': this.indeterminate,
62
62
  'co-checkbox--disabled': this.disabled,
63
- }, style: boxStyle, part: "box" }, index.h("svg", { key: '3eb81bcb492a7ef932538542ddb37cb0143596e4', class: "co-checkbox__glyph", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, index.h("path", { key: '1affb22b56c8a907d5c98bd4bba88dc52d19fb76', class: "co-checkbox__check", d: "M3.5 8.5l3 3 6-6.5", pathLength: "1", "stroke-linecap": "round", "stroke-linejoin": "round" }), index.h("path", { key: 'ad29a5205bc73f358333f648847e34ceedcb9800', class: "co-checkbox__dash", d: "M3 8h10", pathLength: "1", "stroke-linecap": "round" }))), this.label && (index.h("span", { key: '09b729390669959e52c78a54b426b56c22267bde', class: "co-checkbox__label", part: "label" }, this.label))));
63
+ }, style: boxStyle, part: "box" }, index.h("svg", { key: '6e49dd81e78da092340b1cbdb5c45ee6e345fb3c', class: "co-checkbox__glyph", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, index.h("path", { key: 'dbcadf848fb8cb64acea875fb03186258210c43f', class: "co-checkbox__check", d: "M3.5 8.5l3 3 6-6.5", pathLength: "1", "stroke-linecap": "round", "stroke-linejoin": "round" }), index.h("path", { key: '0b58a11353c3d8b8249e5852933f290cd63f0705', class: "co-checkbox__dash", d: "M3 8h10", pathLength: "1", "stroke-linecap": "round" }))), this.label && (index.h("span", { key: 'e1a4beabf2b472aeff1fe5ecd5bcb458e949ee11', class: "co-checkbox__label", part: "label" }, this.label))));
64
64
  }
65
65
  };
66
66
  CoCheckbox.style = coCheckboxCss();
@@ -121,12 +121,13 @@ function parseValue(raw) {
121
121
  * snapshotDisplay los que la página actual no contiene) + resto en orden de
122
122
  * server; buscando → solo resultados reales, seleccionados primero.
123
123
  *
124
- * Invariante: todo id en `snapshotIds` DEBE tener una entrada correspondiente
125
- * en `snapshotDisplay` (armado por el caller desde selectedItems ∪ items al
126
- * tomar el snapshot). Un id sin display-item asociado se cae silenciosamente
127
- * de la lista en modo idle (el `byId.get(d._id) ?? d` sintetiza desde el
128
- * display-item mismo, pero no hay nada que sintetizar si el id nunca entró a
129
- * snapshotDisplay en primer lugar).
124
+ * El bloque idle se recorre por `snapshotIds` (Set ordenado por selección, igual
125
+ * que `snapshotDisplay`) resolviendo cada id contra la página primero y contra el
126
+ * display después. Así un seleccionado AUSENTE de `snapshotDisplay` pero presente
127
+ * en `items` sigue en la lista: `rest` filtra todo id del snapshot, así que sin
128
+ * esa resolución desaparecía de la lista entera, no sólo del bloque de arriba.
129
+ * Un id que no está en ninguna de las dos fuentes no tiene nada que pintar y se
130
+ * ignora (no hay label que mostrar).
130
131
  */
131
132
  function orderItems(items, snapshotIds, snapshotDisplay, searching) {
132
133
  var _a;
@@ -135,8 +136,12 @@ function orderItems(items, snapshotIds, snapshotDisplay, searching) {
135
136
  const byId = new Map(items.map((i) => [i._id, i]));
136
137
  const selectedBlock = [];
137
138
  if (!searching) {
138
- for (const d of snapshotDisplay)
139
- selectedBlock.push((_a = byId.get(d._id)) !== null && _a !== void 0 ? _a : d);
139
+ const displayById = new Map(snapshotDisplay.map((d) => [d._id, d]));
140
+ for (const id of snapshotIds) {
141
+ const resolved = (_a = byId.get(id)) !== null && _a !== void 0 ? _a : displayById.get(id);
142
+ if (resolved)
143
+ selectedBlock.push(resolved);
144
+ }
140
145
  }
141
146
  else {
142
147
  for (const i of items)
@@ -146,6 +151,24 @@ function orderItems(items, snapshotIds, snapshotDisplay, searching) {
146
151
  const rest = items.filter((i) => !snapshotIds.has(i._id));
147
152
  return [...selectedBlock, ...rest];
148
153
  }
154
+ /**
155
+ * ¿Hay que re-tomar el snapshot selected-first por el cambio del término?
156
+ *
157
+ * Sólo en el flanco "había búsqueda → ya no": volver a la lista completa es un
158
+ * contexto de listado nuevo, y ahí el bloque de arriba tiene que incluir lo que
159
+ * se seleccionó DURANTE la sesión del panel. Sin esto, un panel abierto sin nada
160
+ * seleccionado se quedaba con el snapshot VACÍO para siempre (`orderItems`
161
+ * cortocircuita en `size === 0`): lo elegido mientras se buscaba desaparecía de
162
+ * la lista al limpiar el término, porque el servidor devuelve la página 1 y esos
163
+ * registros casi nunca están ahí. Se leía como "se deselecciona solo".
164
+ *
165
+ * El re-snapshot por SELECCIÓN no pasa por acá: vive en el componente
166
+ * (`@Watch('value')`, selected-first vivo desde 2026-09-14 — marcar sube la fila
167
+ * al instante). Esta función solo decide el flanco del TÉRMINO.
168
+ */
169
+ function shouldResnapshotOnTerm(prevTerm, nextTerm) {
170
+ return !!prevTerm && !nextTerm;
171
+ }
149
172
  /** Aplana a filas de render insertando un header cuando `group` cambia
150
173
  * (groupItems de co-command-search). `index` cuenta solo items. */
151
174
  function buildRows(items) {
@@ -335,10 +358,15 @@ const CoOptionList = class {
335
358
  };
336
359
  this.onSearchInput = (e) => {
337
360
  const v = e.target.value;
361
+ // Al volver a la lista completa el bloque selected-first se rearma con lo que
362
+ // se seleccionó durante la sesión del panel (ver shouldResnapshotOnTerm).
363
+ const resnapshot = shouldResnapshotOnTerm(this.term, v);
338
364
  this.term = v;
339
365
  this.activeIndex = -1;
340
366
  // Resultset nuevo: re-habilita fillViewport aunque venga del mismo largo.
341
367
  this.lastFillLen = -1;
368
+ if (resnapshot)
369
+ this.takeSnapshot();
342
370
  if (this.debounceTimer)
343
371
  clearTimeout(this.debounceTimer);
344
372
  this.debounceTimer = setTimeout(() => this.coSearch.emit(v), this.searchDebounce);
@@ -509,6 +537,27 @@ const CoOptionList = class {
509
537
  this.scrollTop = maxScrollTop;
510
538
  }
511
539
  }
540
+ /**
541
+ * Selected-first VIVO (decisión de producto 2026-09-14, campo Colaboradores):
542
+ * la partición sigue a `value` — marcar un ítem lo sube al bloque de
543
+ * seleccionados al instante y desmarcarlo lo devuelve a su lugar del orden del
544
+ * server. Reemplaza el snapshot congelado al abrir (evitaba saltos, pero se
545
+ * leía como "no pasó nada" al elegir). El reacomodo se anima con el mismo FLIP
546
+ * del reorder: tops capturados ANTES de re-particionar, runFlip corre en
547
+ * componentDidRender. El highlight de teclado se queda sobre el MISMO ítem
548
+ * (Enter sobre una fila la mueve; el índice viejo apuntaría a otra fila).
549
+ * Tras un drop del reorder el host manda el value en el orden del preview:
550
+ * mismo orden → deltas 0 → no-op visual.
551
+ */
552
+ onValueChange() {
553
+ var _a;
554
+ if (!this.selectedFirst)
555
+ return;
556
+ const activeId = this.activeIndex >= 0 ? (_a = this.orderedItems[this.activeIndex]) === null || _a === void 0 ? void 0 : _a._id : undefined;
557
+ this.pendingFlip = { tops: this.captureRowTops(), movedId: '', spring: false };
558
+ this.takeSnapshot();
559
+ this.activeIndex = activeId ? this.orderedItems.findIndex((i) => i._id === activeId) : -1;
560
+ }
512
561
  // ── Métodos públicos ───────────────────────────────────────
513
562
  /** Re-toma el snapshot selected-first. El host la llama al abrir su panel. */
514
563
  async snapshotOrder() {
@@ -940,16 +989,19 @@ const CoOptionList = class {
940
989
  const selectedIds = this.selectedIds;
941
990
  const { hasMore, remaining } = deriveMore(this.parsedItems.length, this.total, this.hasMore);
942
991
  const showClear = !!this.clearOptionLabel && selectedIds.length > 0;
943
- return (index.h("div", { key: 'fc7f56eb7837405c1c3c1addabb9748f4c955fed', class: "co-option-list", onKeyDown: this.onRootKeyDown }, this.searchable && (index.h("div", { key: '44a31021a6cd49ec0ddf169c2cf2a0cdd0088f1d', class: "co-option-list__search", part: "search" }, index.h("co-icon", { key: '4d375787abbc1dd93fda1200a8cfb76928775e6f', name: "magnifying-glass", size: 16 }), index.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" }))), index.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 }, index.h("div", { key: '3b6761a9bd95bcdaea14dd13619024841e9b6e22', class: "co-option-list__inner" }, showClear && (index.h("button", { key: '0b9fce9a2439733e5a3bb0d74542eafcbb3754b9', class: "co-option-list__clear-row", type: "button", onClick: () => this.coClearSelection.emit() }, index.h("co-icon", { key: '6db442c304c7d36fa9e41befb78a1ee4ebe8a415', name: "x-circle", size: 14 }), index.h("span", { key: '12d6b290acc9789dea62cfd036f62eae2a28b33d' }, this.clearOptionLabel))), this.loading && items.length === 0 && (index.h("div", { key: 'cc358dc94a3db4208ef85f16f8dce2d0592d4193', class: "co-option-list__loading" }, index.h("co-loader", { key: '9373dbe39674b9e5b18d03cf540ffa83309ea3fe', size: "sm" }))), !this.loading && items.length === 0 && (index.h("div", { key: '732747e33e2ec29968eb7f19b050d89e4b2cca00', class: "co-option-list__empty" }, index.h("co-icon", { key: '6defcd47ad121509bea43da488382a47a846f728', name: "magnifying-glass", size: 20 }), index.h("span", { key: '73729f8c52962e522125b6c258b0f1fb04eff533' }, this.emptyMessage))), items.length > 0 && this.virtual
992
+ return (index.h("div", { key: '3d1df259b90836a6a125627e850ff2d2e1556d4c', class: "co-option-list", onKeyDown: this.onRootKeyDown }, this.searchable && (index.h("div", { key: '181a0c89ff38821301c0728f4eb5edb9c4e11b2d', class: "co-option-list__search", part: "search" }, index.h("co-icon", { key: 'cac54346c457d884fbbc1257b00dbe932e5419ca', name: "magnifying-glass", size: 16 }), index.h("input", { key: 'bbc27b7821651189718cf763e689dd08e6fa0050', 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" }))), index.h("div", { key: '993c2308c9d6e1958f8f3ddc73b08e9ebc0bd409', class: "co-option-list__options", part: "options", role: "listbox", "aria-multiselectable": this.multiple ? 'true' : 'false', ref: (el) => (this.optionsEl = el), onScroll: this.onNativeScroll }, index.h("div", { key: '458e04427d5dd6a4e74537483b18d8e4ba9c71a5', class: "co-option-list__inner" }, showClear && (index.h("button", { key: '03d067e6a79dfb51f39aa52ad8b7b6464aa2f37d', class: "co-option-list__clear-row", type: "button", onClick: () => this.coClearSelection.emit() }, index.h("co-icon", { key: '394b7c318f942d74cb7d68859aa54fce5ed2dc58', name: "x-circle", size: 14 }), index.h("span", { key: '3dd47de0ed422bb5dd3a3c63ac7dc3936578fdaa' }, this.clearOptionLabel))), this.loading && items.length === 0 && (index.h("div", { key: '02dae3b4322ce67325617870c090fd3f3946f8c1', class: "co-option-list__loading" }, index.h("co-loader", { key: 'aaa67b4cf0f37be7364cbd00f2b156bed4018c13', size: "sm" }))), !this.loading && items.length === 0 && (index.h("div", { key: 'caa5a5b33817577084b9e82a40f97632972e5068', class: "co-option-list__empty" }, index.h("co-icon", { key: '0cd622efe4ea8bc4483322b4a81c5e3a254f08ab', name: "magnifying-glass", size: 20 }), index.h("span", { key: 'ca1fb6cf98eacba682f308f610befe6f9da9edd2' }, this.emptyMessage))), items.length > 0 && this.virtual
944
993
  ? this.renderVirtual(items, selectedIds)
945
994
  : buildRows(items).map((row) => row.kind === 'header'
946
995
  ? index.h("div", { class: "co-option-list__group", role: "presentation" }, row.label)
947
- : this.renderRow(row.item, row.index, selectedIds)), this.loading && items.length > 0 && (index.h("div", { key: '915e9c5dd03a7f77a2d680137b962e0f100fa903', class: "co-option-list__loading-more" }, index.h("co-loader", { key: 'dea515b0c90e0fac1f16fd4140ed38bddcd0cda4', size: "sm" }))), !this.loading && hasMore && remaining > 0 && (index.h("div", { key: '9f3be3b39ccc00a380c3d88d30ac8695102e22a4', class: "co-option-list__more" }, remaining, " more results")))), index.h("slot", { key: '6b6a06ef1819241ef5f5ff5870e79ab8b0765ed8', name: "footer" })));
996
+ : this.renderRow(row.item, row.index, selectedIds)), this.loading && items.length > 0 && (index.h("div", { key: '7e9ce17adba91610cf8c2b4c7c1d544db4879122', class: "co-option-list__loading-more" }, index.h("co-loader", { key: '974bc5404e175c89f6a1972900f2e3b8e2d95373', size: "sm" }))), !this.loading && hasMore && remaining > 0 && (index.h("div", { key: '34261e4bf8349cd4973a642d7137e72f80c2a867', class: "co-option-list__more" }, remaining, " more results")))), index.h("slot", { key: 'e350a3a8e731f6d2bb609c84cd0e601e93e6b063', name: "footer" })));
948
997
  }
949
998
  get el() { return index.getElement(this); }
950
999
  static get watchers() { return {
951
1000
  "items": [{
952
1001
  "onItemsChange": 0
1002
+ }],
1003
+ "value": [{
1004
+ "onValueChange": 0
953
1005
  }]
954
1006
  }; }
955
1007
  };
@@ -467,6 +467,12 @@ const CoColorPicker = class {
467
467
  };
468
468
  this.handleGridKeyDown = (e) => {
469
469
  var _a;
470
+ // La grilla es el único control del panel que es un `<div>`: no hereda
471
+ // `disabled` del DOM como el range o el input, así que el guard tiene que
472
+ // ser explícito. Sin él, deshabilitar con el panel abierto dejaba la
473
+ // navegación por flechas viva y Enter commiteando sobre un campo apagado.
474
+ if (this.disabled)
475
+ return;
470
476
  // `presetGroups` re-parsea el JSON de `presets` y remapea en CADA lectura, y
471
477
  // todos los consumidores reales pasan presets custom por prop: se resuelve
472
478
  // UNA vez por tecla y se pasa por parámetro, no dos veces por getter.
@@ -692,8 +698,10 @@ const CoColorPicker = class {
692
698
  * que `this.hsv` llega `undefined` al primer render y el destructuring de
693
699
  * `renderArea` tira). Los otros @State del componente lo toleraban porque
694
700
  * `undefined` es falsy justo donde se usan.
695
- * Sin hex válido el estado arranca en negro, que es lo que pinta el área
696
- * mientras no hay color elegido.
701
+ * Sin hex válido el estado arranca en `EMPTY_HSV` —rojo puro, el vértice
702
+ * VIVO—, no en negro: ver su docstring, que explica por qué el vértice negro
703
+ * dejaría dos de los tres controles sin poder producir color. Es un seed de
704
+ * display; `value` sigue vacío y el trigger sigue mostrando el placeholder.
697
705
  */
698
706
  componentWillLoad() {
699
707
  const parsed = color.hexToHsv(this.value || '');
@@ -855,6 +863,11 @@ const CoColorPicker = class {
855
863
  }
856
864
  }
857
865
  handleSwatchClick(hex) {
866
+ // Mismo guard que el resto de los controles del panel: el host puede
867
+ // deshabilitar el campo CON EL PANEL ABIERTO, y un swatch deshabilitado no
868
+ // commitea. El `pointer-events:none` del CSS tapa el mouse, no el teclado.
869
+ if (this.disabled)
870
+ return;
858
871
  // Elegir un preset es un commit como cualquier otro: la asignación y el
859
872
  // emit viven en `commit`, no duplicados acá (si no, el swatch dejaría el
860
873
  // HSV del color anterior y el área abriría en el color equivocado).
@@ -960,7 +973,16 @@ const CoColorPicker = class {
960
973
  index.h("div", { class: "co-color-picker__grid-group", key: g.from, role: g.label ? 'group' : 'presentation', "aria-label": g.label }, g.items.map((preset, j) => {
961
974
  const i = g.from + j;
962
975
  const selected = preset.value.toUpperCase() === (this.value || '').toUpperCase();
963
- return (index.h("div", { key: preset.value, role: "option", "aria-selected": selected ? 'true' : 'false', "aria-label": preset.name, tabIndex: i === this.focusedIndex ? 0 : -1, class: {
976
+ return (index.h("div", { key: preset.value, role: "option", "aria-selected": selected ? 'true' : 'false', "aria-label": preset.name,
977
+ // El `aria-label` cubre al lector de pantalla; al usuario con
978
+ // mouse no le dice nada. Sin el `title`, la paleta por default
979
+ // deja dos grises contiguos ("Humo" y "Hueso") indistinguibles
980
+ // salvo por el pixel de color. El tooltip nativo es la
981
+ // convención de este design system para celdas de grilla
982
+ // —co-emoji-picker:419 hace exactamente esto, y el propio
983
+ // panel ya lo usa en gotero y copiar—; la regla que lo prohíbe
984
+ // es de suite-v2, no de cobalt core.
985
+ title: preset.name, tabIndex: i === this.focusedIndex ? 0 : -1, class: {
964
986
  'co-color-picker__grid-item': true,
965
987
  'co-color-picker__grid-item--selected': selected,
966
988
  // Un swatch claro se pierde contra el panel: se decide por
@@ -1083,12 +1105,20 @@ const CoColorPicker = class {
1083
1105
  this.hsv = EMPTY_HSV;
1084
1106
  if ((this.value || '').toUpperCase() === (target || '').toUpperCase())
1085
1107
  return;
1086
- // SIN sellar: acá el @Watch sí tiene que re-derivar el HSV, para que el área
1087
- // vuelva al color commiteado y no se quede en el que se abandonó.
1108
+ // SIN sellar a mano: el @Watch re-deriva el HSV —que es lo que hace volver
1109
+ // el área al color commiteado en vez de quedarse en el abandonado— y sella
1110
+ // `emitted` él mismo, ANTES del guard de parseo, así que también cubre el
1111
+ // caso en que `target` no es un hex (nunca se commiteó nada y el campo
1112
+ // vuelve a vacío).
1113
+ //
1114
+ // Acá vivía un `this.emitted = target` con un comentario que describía el
1115
+ // orden VIEJO de `syncFromValue` (sellado gateado por el parseo). Desde que
1116
+ // el sellado subió, la línea era muerta por dos vías: o el @Watch ya la
1117
+ // dejó idéntica, o entró por su guard de eco —que compara contra `emitted`—
1118
+ // y entonces `emitted` ya era `target` salvo por mayúsculas, que es el único
1119
+ // lector que tiene. Medido: una sonda en esa línea sobre la suite entera la
1120
+ // alcanza cuatro veces y las cuatro con `emitted === target` estricto.
1088
1121
  this.value = target;
1089
- // El @Watch no sella cuando `target` no es un hex (nunca se commiteó nada y
1090
- // el campo vuelve a vacío), así que se sella acá.
1091
- this.emitted = target;
1092
1122
  // El preview se anunció por `coInput`; retirarlo también. Un host que
1093
1123
  // previsualiza en vivo se quedaría si no con el color que nadie eligió.
1094
1124
  this.coInput.emit(target);
@@ -1126,12 +1156,12 @@ const CoColorPicker = class {
1126
1156
  render() {
1127
1157
  const hasValue = !!this.value;
1128
1158
  const statusClass = this.status !== 'default' ? `co-color-picker--${this.status}` : '';
1129
- return (index.h("div", { key: 'd0069249895cc3cf148c963f149ff7b3a15ab939', class: `co-color-picker co-color-picker--${this.size} ${statusClass} ${this.isOpen ? 'co-color-picker--open' : ''} ${this.disabled ? 'co-color-picker--disabled' : ''}` }, this.label && (index.h("label", { key: 'e28d265aefc19f7e86ed36bfbfe6b6ec537d1ca2', class: "co-color-picker__label" }, this.label, index.h(requiredMark.RequiredMark, { key: '0aff2dde3002e1c9a79f2c3a385b64d33dc3418c', required: this.required }))), index.h("co-popover", { key: 'edac2d09e0d15c2f09dfff2ea0a2b95f5384d8de', open: this.isOpen, placement: "bottom-start",
1159
+ return (index.h("div", { key: '5e4239ff9ef0dc3f15004898d2d891f8d231e95d', class: `co-color-picker co-color-picker--${this.size} ${statusClass} ${this.isOpen ? 'co-color-picker--open' : ''} ${this.disabled ? 'co-color-picker--disabled' : ''}` }, this.label && (index.h("label", { key: '003a893c3c840cd03d87c4291795499ac80b8b73', class: "co-color-picker__label" }, this.label, index.h(requiredMark.RequiredMark, { key: '4c14eaf668b0677b91b23a00f001ffaa4c21f5c5', required: this.required }))), index.h("co-popover", { key: 'f4a489f77c2d629ea1d9b69786cfad0f95d5422b', open: this.isOpen, placement: "bottom-start",
1130
1160
  // Sin `matchWidth`: el panel tiene ancho INTRÍNSECO (grilla de 8
1131
1161
  // swatches fijos de 32px). Copiar el ancho del trigger achica los
1132
1162
  // tracks bajo 32px con un campo angosto (media columna de un modal) y
1133
1163
  // los swatches desbordan el card — guard: panel-width.spec.
1134
- offset: 4, onCoOpen: this.handlePopoverOpen, onCoClose: this.handlePopoverClose }, index.h("div", { key: '98c2e3c5ed50f8cc869c1cf791ddce85e8887b8e', slot: "trigger", class: "co-color-picker__trigger", role: "combobox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "dialog", "aria-controls": this.isOpen ? CoColorPicker.PANEL_ID : undefined, "aria-label": this.label || undefined, "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: this.disabled ? -1 : 0, ref: (el) => (this.triggerEl = el), onKeyDown: this.handleTriggerKeyDown }, index.h("span", { key: '65e49a6246c71b6366f7907c715c64259c30be46', class: "co-color-picker__swatch", style: { background: hasValue ? this.value : 'transparent' } }), index.h("span", { key: 'd8e6e852383ec925c4336f9b49a69e73d88e2234', class: `co-color-picker__value ${!hasValue ? 'co-color-picker__value--empty' : ''}` }, hasValue ? this.value : this.placeholder)), this.isOpen && (index.h("div", { key: '2893b57d82d7ac2edc4e3bd8eac266fdc6cbfba0', class: "co-color-picker__panel", id: CoColorPicker.PANEL_ID, role: "dialog", "aria-label": this.label || this.placeholder }, this.renderArea(), this.renderHue(), this.renderSwatches(), this.renderHexRow()))), this.helperText && (index.h("div", { key: 'ca583c8033afaafa5bdd59ccd63e711eaf02e6df', class: "co-color-picker__helper" }, this.statusIcon && (index.h("co-icon", { key: 'aca2fd8186658e7d4e13ab67dc7a6e93c2fd8b89', name: this.statusIcon, size: 14, weight: "fill", class: "co-color-picker__helper-icon" })), index.h("span", { key: 'e8e3cdf72353a1f5fb8b53fe725389386c7d75ea', class: "co-color-picker__helper-text" }, this.helperText)))));
1164
+ offset: 4, onCoOpen: this.handlePopoverOpen, onCoClose: this.handlePopoverClose }, index.h("div", { key: '229e0095d6b6a723e77cf0d001d780cf51116851', slot: "trigger", class: "co-color-picker__trigger", role: "combobox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "dialog", "aria-controls": this.isOpen ? CoColorPicker.PANEL_ID : undefined, "aria-label": this.label || undefined, "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: this.disabled ? -1 : 0, ref: (el) => (this.triggerEl = el), onKeyDown: this.handleTriggerKeyDown }, index.h("span", { key: '9267f104b7f0542653038ef381fb81a7f7f0188e', class: "co-color-picker__swatch", style: { background: hasValue ? this.value : 'transparent' } }), index.h("span", { key: '64efb900a60576022b3f487db56380973d2934c9', class: `co-color-picker__value ${!hasValue ? 'co-color-picker__value--empty' : ''}` }, hasValue ? this.value : this.placeholder)), this.isOpen && (index.h("div", { key: '22abcb6c79531f41a6655fc48320e4c108a33049', class: "co-color-picker__panel", id: CoColorPicker.PANEL_ID, role: "dialog", "aria-label": this.label || this.placeholder }, this.renderArea(), this.renderHue(), this.renderSwatches(), this.renderHexRow()))), this.helperText && (index.h("div", { key: '901b7094f7da8c09ea25cad568eda8d5fcaf2d6e', class: "co-color-picker__helper" }, this.statusIcon && (index.h("co-icon", { key: 'fb341f791466f133f6a6c4bd04a8dd71c519c7c0', name: this.statusIcon, size: 14, weight: "fill", class: "co-color-picker__helper-icon" })), index.h("span", { key: '0ecfc7d46a07c741d42b59660979559fb78117df', class: "co-color-picker__helper-text" }, this.helperText)))));
1135
1165
  }
1136
1166
  get el() { return index.getElement(this); }
1137
1167
  static get watchers() { return {