@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
@@ -38,11 +38,11 @@ export class CoAccordion {
38
38
  return !!(this.subheading && this.subheading.trim()) || this.hasSubheadingSlot;
39
39
  }
40
40
  render() {
41
- return (h("div", { key: '4e2089349432ce39bb797397aacaebd022fcbcee', class: {
41
+ return (h("div", { key: '96b5b0f97642972b0505d038125f9e225ee1ab2d', class: {
42
42
  'co-accordion': true,
43
43
  'co-accordion--open': this.open,
44
44
  'co-accordion--disabled': this.disabled,
45
- }, part: "accordion" }, h("div", { key: '4337878858bd31822201a925010f3150568fa056', class: "co-accordion__header", part: "header" }, h("span", { key: 'cf69c69cc786981ca6bd54bd0f6a6c38a3baa0b6', class: "co-accordion__heading-group" }, h("span", { key: '0e7efd52e6d48c35ce0270485e8ce6099c6a3302', class: "co-accordion__heading", part: "heading" }, h("slot", { key: 'b575ce7ae5611007490724f430819f083781f84d', name: "header" }, this.heading)), this.showSubheading && (h("span", { key: '996a58f3f3b5cd656849b413b0f998675452cc2f', class: "co-accordion__subheading", part: "subheading" }, h("slot", { key: 'a9029aa67f51162ad54c010d23bf20545883ef45', name: "subheading" }, this.subheading)))), 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" }, h("co-icon", { key: 'b4c3c96489a30607727a44955dbff2d504ef2b6e', name: "caret-up", size: 20 }))), h("div", { key: 'bd56b12cbd7484f61fec140740312800536d7b18', class: "co-accordion__body", part: "body" }, h("div", { key: '1f2ff56e7bd7a49f8484c988ecdf434d108ef4ed', class: "co-accordion__body-inner", part: "body-inner" }, h("slot", { key: '25ef25609ccece786a05709d90a32e7e135fec72' })))));
45
+ }, part: "accordion" }, h("div", { key: '91f8d47d2f342a48b7d88fd6385fe532f969a636', class: "co-accordion__header", part: "header" }, h("span", { key: 'b55915f1078d0b7f46ff08b7f5d78383050a8df1', class: "co-accordion__heading-group" }, h("span", { key: '99a08344b195983609dfd5d4054af8f96547ae1f', class: "co-accordion__heading", part: "heading" }, h("slot", { key: '330134f4fdbb831253bcec63bfd43968171e7c44', name: "header" }, this.heading)), this.showSubheading && (h("span", { key: '5b8fcb450d266843ff722cf9ec97d6e600cff12d', class: "co-accordion__subheading", part: "subheading" }, h("slot", { key: '51a98c7f68bd7e4d6d0705c21feb288389af5d4e', name: "subheading" }, this.subheading)))), 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" }, h("co-icon", { key: 'a0343d006eafb7cb895584c05427d590e9c820a7', name: "caret-up", size: 20 }))), h("div", { key: '24edd828c5e12ebfcf5dce6eb99d0755e04ebe68', class: "co-accordion__body", part: "body" }, h("div", { key: '29e4e7514802a8f7269e135d4e4112def33663fa', class: "co-accordion__body-inner", part: "body-inner" }, h("slot", { key: '38e1e269578c9e949c8434c839b291e60612e538' })))));
46
46
  }
47
47
  static get is() { return "co-accordion"; }
48
48
  static get encapsulation() { return "shadow"; }
@@ -149,12 +149,12 @@ export class CoAccordion {
149
149
  return [{
150
150
  "method": "coToggle",
151
151
  "name": "coToggle",
152
- "bubbles": true,
152
+ "bubbles": false,
153
153
  "cancelable": true,
154
154
  "composed": true,
155
155
  "docs": {
156
156
  "tags": [],
157
- "text": "Emitted when the user toggles the section."
157
+ "text": "Nuevo estado tras el click en el caret. `bubbles: false`: es un evento de\nESTADO del propio acorde\u00F3n y todo consumidor lo escucha en su host \u2014 si\nburbujeara, colapsar un fieldset anidado (FieldObject dentro de otra\nsecci\u00F3n) colapsaba tambi\u00E9n al padre, cuyo handler hace `open = e.detail`."
158
158
  },
159
159
  "complexType": {
160
160
  "original": "boolean",
@@ -28,14 +28,21 @@
28
28
  perdía 2×92px=184px de ancho disponible sin querer, y la barra desbordaba
29
29
  con varias acciones. Ahora el offset vertical solo mueve `bottom`; el
30
30
  margen horizontal se configura aparte (mismo default 24px si el consumidor
31
- no lo toca). */
31
+ no lo toca).
32
+
33
+ `100%` y NO `100vw`: un fixed se ancla al ancestro más cercano con
34
+ contain/transform/filter (el `div.main` del co-app-shell lleva
35
+ `contain: layout`), y ahí el viewport miente — con `100vw` el pill
36
+ desbordaba el card y la última acción quedaba recortada. Un porcentaje en
37
+ un fixed resuelve contra SU bloque contenedor: viewport si nadie lo ancla,
38
+ el card si el shell lo ancla. */
32
39
  :host([position='bottom-center']) {
33
40
  position: fixed;
34
41
  left: 50%;
35
42
  transform: translateX(-50%);
36
43
  bottom: var(--co-action-bar-offset, 24px);
37
44
  z-index: var(--co-action-bar-z, 1000);
38
- max-width: calc(100vw - 2 * var(--co-action-bar-inline-margin, 24px));
45
+ max-width: calc(100% - 2 * var(--co-action-bar-inline-margin, 24px));
39
46
  }
40
47
 
41
48
  /* ── Pill ───────────────────────────────────────────────────── */
@@ -38,10 +38,22 @@ export class CoAudioPlayer {
38
38
  // Bumped by every init(); an in-flight extractPeaks whose token no longer matches
39
39
  // belongs to a superseded `src` and must not write peaks/duration.
40
40
  this.loadToken = 0;
41
- this.onMeta = () => { this.syncDuration(); };
42
- this.onCanPlay = () => { this.isLoading = false; };
41
+ this.onMeta = () => { this.syncDuration(); this.applyPendingSeek(); };
42
+ /**
43
+ * A seek asked for before the media had data. `<audio>` DROPS a `currentTime`
44
+ * write while `readyState` is HAVE_NOTHING, silently: with `preload="metadata"`
45
+ * and a clip never played, the very first jump (clicking a transcript line on
46
+ * a recording nobody opened yet) went nowhere. Kept here and applied as soon
47
+ * as the element can take it.
48
+ */
49
+ this.pendingSeek = null;
50
+ this.onCanPlay = () => { this.isLoading = false; this.applyPendingSeek(); };
43
51
  this.onWaiting = () => { this.isLoading = true; };
44
- this.onTime = () => { var _a; this.currentTime = ((_a = this.audio) === null || _a === void 0 ? void 0 : _a.currentTime) || 0; };
52
+ this.onTime = () => {
53
+ var _a;
54
+ this.currentTime = ((_a = this.audio) === null || _a === void 0 ? void 0 : _a.currentTime) || 0;
55
+ this.coTimeUpdate.emit({ currentTime: this.currentTime, duration: this.knownDuration });
56
+ };
45
57
  this.onEnded = () => { this.isPlaying = false; this.currentTime = 0; this.coEnded.emit(); };
46
58
  this.onErr = (e) => { this.isLoading = false; this.hasError = true; this.coError.emit(e); };
47
59
  this.toggle = () => {
@@ -198,12 +210,26 @@ export class CoAudioPlayer {
198
210
  this.isPlaying = false;
199
211
  }
200
212
  async extractPeaks(url, token) {
213
+ var _a;
201
214
  let ctx;
202
215
  try {
216
+ /**
217
+ * `OfflineAudioContext` FIRST, and a live `AudioContext` only as the
218
+ * fallback: decoding a waveform needs no audio OUTPUT, and a live context
219
+ * created before the user has interacted trips the browser's autoplay
220
+ * policy — "The AudioContext was not allowed to start. It must be resumed
221
+ * (or created) after a user gesture on the page", once per player. A page
222
+ * with 15 recordings logged it 15 times. The offline one has no output
223
+ * device, so the policy does not apply to it.
224
+ *
225
+ * Its arguments are placeholders: nothing is ever rendered through this
226
+ * context, it is only the host for `decodeAudioData`.
227
+ */
228
+ const OfflineCtx = window.OfflineAudioContext || window.webkitOfflineAudioContext;
203
229
  const Ctx = window.AudioContext || window.webkitAudioContext;
204
- if (!Ctx || typeof fetch === 'undefined')
230
+ if ((!OfflineCtx && !Ctx) || typeof fetch === 'undefined')
205
231
  return; // keep fallback
206
- ctx = new Ctx();
232
+ ctx = OfflineCtx ? new OfflineCtx(1, 1, 44100) : new Ctx();
207
233
  const buf = await (await fetch(url)).arrayBuffer();
208
234
  const audioBuf = await ctx.decodeAudioData(buf);
209
235
  if (token !== this.loadToken)
@@ -212,7 +238,7 @@ export class CoAudioPlayer {
212
238
  this.decodedDuration = audioBuf.duration;
213
239
  this.peaks = resamplePeaks(this.rawChannelData, this.effectiveBars);
214
240
  }
215
- catch (_a) {
241
+ catch (_b) {
216
242
  if (token !== this.loadToken)
217
243
  return;
218
244
  // Undecodable (codec WebAudio can't handle, CORS, network): keep the
@@ -225,11 +251,13 @@ export class CoAudioPlayer {
225
251
  finally {
226
252
  // Always release the context. Chrome caps concurrent AudioContexts per
227
253
  // document, so leaking one per failed decode would eventually stop every
228
- // later player on the page from decoding at all.
254
+ // later player on the page from decoding at all. `close()` lives on
255
+ // AudioContext, not on every BaseAudioContext (an OfflineAudioContext
256
+ // needs no closing and may not implement it): optional call, not a cast.
229
257
  try {
230
- await (ctx === null || ctx === void 0 ? void 0 : ctx.close());
258
+ await ((_a = ctx === null || ctx === void 0 ? void 0 : ctx.close) === null || _a === void 0 ? void 0 : _a.call(ctx));
231
259
  }
232
- catch ( /* already closed */_b) { /* already closed */ }
260
+ catch ( /* already closed */_c) { /* already closed */ }
233
261
  }
234
262
  if (token === this.loadToken)
235
263
  this.syncDuration();
@@ -244,6 +272,47 @@ export class CoAudioPlayer {
244
272
  if (!Object.is(next, this.duration))
245
273
  this.duration = next;
246
274
  }
275
+ applyPendingSeek() {
276
+ if (this.pendingSeek == null || !this.audio)
277
+ return;
278
+ const target = this.pendingSeek;
279
+ this.pendingSeek = null;
280
+ this.audio.currentTime = target;
281
+ this.currentTime = this.audio.currentTime;
282
+ this.coTimeUpdate.emit({ currentTime: this.currentTime, duration: this.knownDuration });
283
+ }
284
+ /**
285
+ * Move the playhead. Clamped to `[0, duration]`: `audio.currentTime` takes a
286
+ * restricted double and THROWS on a non-finite value, and a duration that is
287
+ * not known yet reads as 0 (see `knownDuration`).
288
+ */
289
+ async seek(seconds) {
290
+ var _a;
291
+ if (!this.audio || !Number.isFinite(seconds))
292
+ return;
293
+ const total = this.knownDuration;
294
+ const target = total ? Math.max(0, Math.min(total, seconds)) : Math.max(0, seconds);
295
+ this.audio.currentTime = target;
296
+ // The element could not take it yet (no data): keep it for `loadedmetadata`.
297
+ // The readback is the only way to tell — the write throws nothing.
298
+ if (Math.abs(((_a = this.audio.currentTime) !== null && _a !== void 0 ? _a : 0) - target) > 0.05)
299
+ this.pendingSeek = target;
300
+ // Optimistic either way: the UI shows where playback is GOING, and the
301
+ // pending write lands on its own.
302
+ this.currentTime = target;
303
+ this.coTimeUpdate.emit({ currentTime: this.currentTime, duration: total });
304
+ }
305
+ /** Start playback if it is not already running (no-op on a failed load). */
306
+ async play() {
307
+ if (!this.audio || this.isPlaying || this.hasError)
308
+ return;
309
+ try {
310
+ await this.audio.play();
311
+ this.isPlaying = true;
312
+ this.coPlay.emit();
313
+ }
314
+ catch ( /* autoplay blocked or source not ready: the button still works */_a) { /* autoplay blocked or source not ready: the button still works */ }
315
+ }
247
316
  async download() {
248
317
  if (!this.src || typeof fetch === 'undefined')
249
318
  return;
@@ -270,13 +339,13 @@ export class CoAudioPlayer {
270
339
  // below `aria-valuenow` the moment playback advances. ARIA 1.2 makes valuemax
271
340
  // optional for `slider`, so leaving it off while unknown is well-formed.
272
341
  const ariaMax = total ? Math.floor(total) : undefined;
273
- const bar = (hFrac, i, played = false) => (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 } }));
274
- return (h("div", { key: '8ac91ab3f8eb417df5e7cf4d1e016d6ca7eb45a3', class: {
342
+ const bar = (hFrac, i, played = false) => (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 } }));
343
+ return (h("div", { key: '34078ed0540dc72c87644c3ae830b3a2ff43a99e', class: {
275
344
  'co-audio-player': true,
276
345
  'co-audio-player--compact': this.compact,
277
346
  'co-audio-player--error': this.hasError,
278
347
  'co-audio-player--playing': this.isPlaying,
279
- }, part: "player" }, 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 }, h("co-icon", { key: '4843751a2a3709942a49ae03ff9ba0eb08ab7d97', name: this.hasError ? 'warning-circle' : this.isPlaying ? 'pause' : 'play', weight: "fill", size: this.compact ? 12 : 14 })), 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 }, 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)), h("clipPath", { key: '9cfa69ba28801893baf62c8f66b18a31319fdebe', id: "co-ap-clip" }, h("rect", { key: '6e5cb34baeb2b7dddd6ef7e94f8585ef912e0315', x: "0", y: "0", width: (pct / 100) * vbW, height: H })), h("g", { key: '4b78a29dde762cabc85d7921aacbcd261d8fa6b5', "clip-path": "url(#co-ap-clip)" }, this.peaks.map((hFrac, i) => bar(hFrac, i, true))))), h("span", { key: '9067d22b0e2994e46ef49c60356292ec59f61a21', class: "co-audio-player__time", part: "time" }, formatTime(this.currentTime), " / ", formatTime(this.duration)), !this.compact && (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 && (h("button", { key: '73d291d31d92bcb0e18e230fe0ac35d3ab4077b2', type: "button", class: "co-audio-player__dl", part: "download", "aria-label": "Descargar", onClick: () => this.download() }, h("co-icon", { key: '9ab09f5d6b975f4f5544019f70bd2ca1ee521068', name: "download-simple", size: 14 })))));
348
+ }, part: "player" }, 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 }, h("co-icon", { key: 'fdc0a0a0703189efe10bbc1b1182572d1120a347', name: this.hasError ? 'warning-circle' : this.isPlaying ? 'pause' : 'play', weight: "fill", size: this.compact ? 12 : 14 })), 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 }, 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)), h("clipPath", { key: 'c4136dddad555e8b5ef09a81c38433cd2bf39d7c', id: "co-ap-clip" }, h("rect", { key: 'edb79083fbc7d225bd5668443fb6541fe77c8f9d', x: "0", y: "0", width: (pct / 100) * vbW, height: H })), h("g", { key: 'c91b8b285f53b9dc4f6110f9cb73b7f3f892fad6', "clip-path": "url(#co-ap-clip)" }, this.peaks.map((hFrac, i) => bar(hFrac, i, true))))), h("span", { key: '26af75ef91f36d432add06bb636c4d3194902b0a', class: "co-audio-player__time", part: "time" }, formatTime(this.currentTime), " / ", formatTime(this.duration)), !this.compact && (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 && (h("button", { key: '327336de6ad09adac5f8cba6e048b58bbef0008e', type: "button", class: "co-audio-player__dl", part: "download", "aria-label": "Descargar", onClick: () => this.download() }, h("co-icon", { key: '787738fea40ab74531c943f876e20acf6ceb54df', name: "download-simple", size: 14 })))));
280
349
  }
281
350
  static get is() { return "co-audio-player"; }
282
351
  static get encapsulation() { return "shadow"; }
@@ -506,8 +575,65 @@ export class CoAudioPlayer {
506
575
  "resolved": "unknown",
507
576
  "references": {}
508
577
  }
578
+ }, {
579
+ "method": "coTimeUpdate",
580
+ "name": "coTimeUpdate",
581
+ "bubbles": false,
582
+ "cancelable": true,
583
+ "composed": true,
584
+ "docs": {
585
+ "tags": [],
586
+ "text": "Playback position, on the `<audio>` element's own `timeupdate` cadence\n(~4\u00D7/s while playing, plus every seek). Exists so a host can follow the\nplayhead \u2014 a transcript highlighting the line being spoken, for one \u2014\nwithout reaching into this component's shadow DOM for its `<audio>`."
587
+ },
588
+ "complexType": {
589
+ "original": "{ currentTime: number; duration: number }",
590
+ "resolved": "{ currentTime: number; duration: number; }",
591
+ "references": {}
592
+ }
509
593
  }];
510
594
  }
595
+ static get methods() {
596
+ return {
597
+ "seek": {
598
+ "complexType": {
599
+ "signature": "(seconds: number) => Promise<void>",
600
+ "parameters": [{
601
+ "name": "seconds",
602
+ "type": "number",
603
+ "docs": ""
604
+ }],
605
+ "references": {
606
+ "Promise": {
607
+ "location": "global",
608
+ "id": "global::Promise"
609
+ }
610
+ },
611
+ "return": "Promise<void>"
612
+ },
613
+ "docs": {
614
+ "text": "Move the playhead. Clamped to `[0, duration]`: `audio.currentTime` takes a\nrestricted double and THROWS on a non-finite value, and a duration that is\nnot known yet reads as 0 (see `knownDuration`).",
615
+ "tags": []
616
+ }
617
+ },
618
+ "play": {
619
+ "complexType": {
620
+ "signature": "() => Promise<void>",
621
+ "parameters": [],
622
+ "references": {
623
+ "Promise": {
624
+ "location": "global",
625
+ "id": "global::Promise"
626
+ }
627
+ },
628
+ "return": "Promise<void>"
629
+ },
630
+ "docs": {
631
+ "text": "Start playback if it is not already running (no-op on a failed load).",
632
+ "tags": []
633
+ }
634
+ }
635
+ };
636
+ }
511
637
  static get watchers() {
512
638
  return [{
513
639
  "propName": "src",
@@ -418,7 +418,7 @@ export class CoAutocomplete {
418
418
  "references": {
419
419
  "AutocompleteOption": {
420
420
  "location": "local",
421
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-autocomplete/co-autocomplete.tsx",
421
+ "path": "/Users/agox/worktrees/cobalt-release/packages/core/src/components/co-autocomplete/co-autocomplete.tsx",
422
422
  "id": "src/components/co-autocomplete/co-autocomplete.tsx::AutocompleteOption"
423
423
  }
424
424
  }
@@ -87,7 +87,7 @@ export class CoAvatarGroup {
87
87
  "references": {
88
88
  "CoAvatarGroupItem": {
89
89
  "location": "local",
90
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-avatar-group/co-avatar-group.tsx",
90
+ "path": "/Users/agox/worktrees/cobalt-release/packages/core/src/components/co-avatar-group/co-avatar-group.tsx",
91
91
  "id": "src/components/co-avatar-group/co-avatar-group.tsx::CoAvatarGroupItem"
92
92
  }
93
93
  }
@@ -41,10 +41,13 @@
41
41
  color: var(--co-semantic-on-primary);
42
42
  border-color: color-mix(in srgb, var(--co-semantic-on-primary) 28%, transparent);
43
43
  }
44
+ /* Knobs (heredan a través del shadow, mismo mecanismo y nombres que
45
+ --co-icon-button-bg/-color/-border): un consumidor con spec propia cambia la
46
+ superficie de la variante clara SIN un ::part de color. Defaults = look del DS. */
44
47
  .co-button--secondary {
45
- background: color-mix(in srgb, var(--co-semantic-surface-secondary) 55%, transparent);
46
- color: var(--co-semantic-on-secondary);
47
- border-color: var(--co-semantic-border-subtle);
48
+ background: color-mix(in srgb, var(--co-button-bg, var(--co-semantic-surface-secondary)) 55%, transparent);
49
+ color: var(--co-button-color, var(--co-semantic-on-secondary));
50
+ border-color: var(--co-button-border, var(--co-semantic-border-subtle));
48
51
  }
49
52
  .co-button--stroke {
50
53
  background: color-mix(in srgb, var(--co-semantic-surface-secondary) 25%, transparent);
@@ -43,17 +43,17 @@ export class CoCheckbox {
43
43
  // Only override the fill when a custom color is provided AND the box is "on".
44
44
  // Leaving this undefined keeps the default appearance byte-identical to before.
45
45
  const boxStyle = this.checkedColor && isOn ? { background: this.checkedColor } : undefined;
46
- return (h("div", { key: 'ba8053a262557bdfc35e16d743158b26e1783932', class: {
46
+ return (h("div", { key: 'cfcbd567066331d7751064f857407a8f9d56d386', class: {
47
47
  'co-checkbox-row': true,
48
48
  'co-checkbox-row--disabled': this.disabled,
49
- }, onClick: this.handleClick }, 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: {
49
+ }, onClick: this.handleClick }, 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: {
50
50
  'co-checkbox': true,
51
51
  [`co-checkbox--${this.size}`]: true,
52
52
  'co-checkbox--overlay': isOverlay,
53
53
  'co-checkbox--checked': this.checked && !this.indeterminate,
54
54
  'co-checkbox--indeterminate': this.indeterminate,
55
55
  'co-checkbox--disabled': this.disabled,
56
- }, style: boxStyle, part: "box" }, h("svg", { key: '3eb81bcb492a7ef932538542ddb37cb0143596e4', class: "co-checkbox__glyph", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, 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" }), h("path", { key: 'ad29a5205bc73f358333f648847e34ceedcb9800', class: "co-checkbox__dash", d: "M3 8h10", pathLength: "1", "stroke-linecap": "round" }))), this.label && (h("span", { key: '09b729390669959e52c78a54b426b56c22267bde', class: "co-checkbox__label", part: "label" }, this.label))));
56
+ }, style: boxStyle, part: "box" }, h("svg", { key: '6e49dd81e78da092340b1cbdb5c45ee6e345fb3c', class: "co-checkbox__glyph", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, 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" }), h("path", { key: '0b58a11353c3d8b8249e5852933f290cd63f0705', class: "co-checkbox__dash", d: "M3 8h10", pathLength: "1", "stroke-linecap": "round" }))), this.label && (h("span", { key: 'e1a4beabf2b472aeff1fe5ecd5bcb458e949ee11', class: "co-checkbox__label", part: "label" }, this.label))));
57
57
  }
58
58
  static get is() { return "co-checkbox"; }
59
59
  static get encapsulation() { return "shadow"; }
@@ -168,6 +168,25 @@ export class CoCheckbox {
168
168
  "reflect": false,
169
169
  "attribute": "label"
170
170
  },
171
+ "ariaLabelText": {
172
+ "type": "string",
173
+ "mutable": false,
174
+ "complexType": {
175
+ "original": "string",
176
+ "resolved": "string | undefined",
177
+ "references": {}
178
+ },
179
+ "required": false,
180
+ "optional": true,
181
+ "docs": {
182
+ "tags": [],
183
+ "text": "Accessible name when there is NO visible `label` (icon-less row toggles).\nSame `ariaLabelText` precedent as co-button; `label` wins when present.\nAn `aria-label` on the host never reaches the inner role=\"checkbox\"."
184
+ },
185
+ "getter": false,
186
+ "setter": false,
187
+ "reflect": false,
188
+ "attribute": "aria-label-text"
189
+ },
171
190
  "value": {
172
191
  "type": "string",
173
192
  "mutable": false,
@@ -231,7 +231,7 @@ export class CoCheckboxGroup {
231
231
  "references": {
232
232
  "CheckboxOption": {
233
233
  "location": "local",
234
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-checkbox-group/co-checkbox-group.tsx",
234
+ "path": "/Users/agox/worktrees/cobalt-release/packages/core/src/components/co-checkbox-group/co-checkbox-group.tsx",
235
235
  "id": "src/components/co-checkbox-group/co-checkbox-group.tsx::CheckboxOption"
236
236
  }
237
237
  }
@@ -306,6 +306,12 @@ export class CoColorPicker {
306
306
  };
307
307
  this.handleGridKeyDown = (e) => {
308
308
  var _a;
309
+ // La grilla es el único control del panel que es un `<div>`: no hereda
310
+ // `disabled` del DOM como el range o el input, así que el guard tiene que
311
+ // ser explícito. Sin él, deshabilitar con el panel abierto dejaba la
312
+ // navegación por flechas viva y Enter commiteando sobre un campo apagado.
313
+ if (this.disabled)
314
+ return;
309
315
  // `presetGroups` re-parsea el JSON de `presets` y remapea en CADA lectura, y
310
316
  // todos los consumidores reales pasan presets custom por prop: se resuelve
311
317
  // UNA vez por tecla y se pasa por parámetro, no dos veces por getter.
@@ -531,8 +537,10 @@ export class CoColorPicker {
531
537
  * que `this.hsv` llega `undefined` al primer render y el destructuring de
532
538
  * `renderArea` tira). Los otros @State del componente lo toleraban porque
533
539
  * `undefined` es falsy justo donde se usan.
534
- * Sin hex válido el estado arranca en negro, que es lo que pinta el área
535
- * mientras no hay color elegido.
540
+ * Sin hex válido el estado arranca en `EMPTY_HSV` —rojo puro, el vértice
541
+ * VIVO—, no en negro: ver su docstring, que explica por qué el vértice negro
542
+ * dejaría dos de los tres controles sin poder producir color. Es un seed de
543
+ * display; `value` sigue vacío y el trigger sigue mostrando el placeholder.
536
544
  */
537
545
  componentWillLoad() {
538
546
  const parsed = hexToHsv(this.value || '');
@@ -694,6 +702,11 @@ export class CoColorPicker {
694
702
  }
695
703
  }
696
704
  handleSwatchClick(hex) {
705
+ // Mismo guard que el resto de los controles del panel: el host puede
706
+ // deshabilitar el campo CON EL PANEL ABIERTO, y un swatch deshabilitado no
707
+ // commitea. El `pointer-events:none` del CSS tapa el mouse, no el teclado.
708
+ if (this.disabled)
709
+ return;
697
710
  // Elegir un preset es un commit como cualquier otro: la asignación y el
698
711
  // emit viven en `commit`, no duplicados acá (si no, el swatch dejaría el
699
712
  // HSV del color anterior y el área abriría en el color equivocado).
@@ -799,7 +812,16 @@ export class CoColorPicker {
799
812
  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) => {
800
813
  const i = g.from + j;
801
814
  const selected = preset.value.toUpperCase() === (this.value || '').toUpperCase();
802
- return (h("div", { key: preset.value, role: "option", "aria-selected": selected ? 'true' : 'false', "aria-label": preset.name, tabIndex: i === this.focusedIndex ? 0 : -1, class: {
815
+ return (h("div", { key: preset.value, role: "option", "aria-selected": selected ? 'true' : 'false', "aria-label": preset.name,
816
+ // El `aria-label` cubre al lector de pantalla; al usuario con
817
+ // mouse no le dice nada. Sin el `title`, la paleta por default
818
+ // deja dos grises contiguos ("Humo" y "Hueso") indistinguibles
819
+ // salvo por el pixel de color. El tooltip nativo es la
820
+ // convención de este design system para celdas de grilla
821
+ // —co-emoji-picker:419 hace exactamente esto, y el propio
822
+ // panel ya lo usa en gotero y copiar—; la regla que lo prohíbe
823
+ // es de suite-v2, no de cobalt core.
824
+ title: preset.name, tabIndex: i === this.focusedIndex ? 0 : -1, class: {
803
825
  'co-color-picker__grid-item': true,
804
826
  'co-color-picker__grid-item--selected': selected,
805
827
  // Un swatch claro se pierde contra el panel: se decide por
@@ -922,12 +944,20 @@ export class CoColorPicker {
922
944
  this.hsv = EMPTY_HSV;
923
945
  if ((this.value || '').toUpperCase() === (target || '').toUpperCase())
924
946
  return;
925
- // SIN sellar: acá el @Watch sí tiene que re-derivar el HSV, para que el área
926
- // vuelva al color commiteado y no se quede en el que se abandonó.
947
+ // SIN sellar a mano: el @Watch re-deriva el HSV —que es lo que hace volver
948
+ // el área al color commiteado en vez de quedarse en el abandonado— y sella
949
+ // `emitted` él mismo, ANTES del guard de parseo, así que también cubre el
950
+ // caso en que `target` no es un hex (nunca se commiteó nada y el campo
951
+ // vuelve a vacío).
952
+ //
953
+ // Acá vivía un `this.emitted = target` con un comentario que describía el
954
+ // orden VIEJO de `syncFromValue` (sellado gateado por el parseo). Desde que
955
+ // el sellado subió, la línea era muerta por dos vías: o el @Watch ya la
956
+ // dejó idéntica, o entró por su guard de eco —que compara contra `emitted`—
957
+ // y entonces `emitted` ya era `target` salvo por mayúsculas, que es el único
958
+ // lector que tiene. Medido: una sonda en esa línea sobre la suite entera la
959
+ // alcanza cuatro veces y las cuatro con `emitted === target` estricto.
927
960
  this.value = target;
928
- // El @Watch no sella cuando `target` no es un hex (nunca se commiteó nada y
929
- // el campo vuelve a vacío), así que se sella acá.
930
- this.emitted = target;
931
961
  // El preview se anunció por `coInput`; retirarlo también. Un host que
932
962
  // previsualiza en vivo se quedaría si no con el color que nadie eligió.
933
963
  this.coInput.emit(target);
@@ -965,12 +995,12 @@ export class CoColorPicker {
965
995
  render() {
966
996
  const hasValue = !!this.value;
967
997
  const statusClass = this.status !== 'default' ? `co-color-picker--${this.status}` : '';
968
- return (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 && (h("label", { key: 'e28d265aefc19f7e86ed36bfbfe6b6ec537d1ca2', class: "co-color-picker__label" }, this.label, h(RequiredMark, { key: '0aff2dde3002e1c9a79f2c3a385b64d33dc3418c', required: this.required }))), h("co-popover", { key: 'edac2d09e0d15c2f09dfff2ea0a2b95f5384d8de', open: this.isOpen, placement: "bottom-start",
998
+ return (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 && (h("label", { key: '003a893c3c840cd03d87c4291795499ac80b8b73', class: "co-color-picker__label" }, this.label, h(RequiredMark, { key: '4c14eaf668b0677b91b23a00f001ffaa4c21f5c5', required: this.required }))), h("co-popover", { key: 'f4a489f77c2d629ea1d9b69786cfad0f95d5422b', open: this.isOpen, placement: "bottom-start",
969
999
  // Sin `matchWidth`: el panel tiene ancho INTRÍNSECO (grilla de 8
970
1000
  // swatches fijos de 32px). Copiar el ancho del trigger achica los
971
1001
  // tracks bajo 32px con un campo angosto (media columna de un modal) y
972
1002
  // los swatches desbordan el card — guard: panel-width.spec.
973
- offset: 4, onCoOpen: this.handlePopoverOpen, onCoClose: this.handlePopoverClose }, 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 }, h("span", { key: '65e49a6246c71b6366f7907c715c64259c30be46', class: "co-color-picker__swatch", style: { background: hasValue ? this.value : 'transparent' } }), h("span", { key: 'd8e6e852383ec925c4336f9b49a69e73d88e2234', class: `co-color-picker__value ${!hasValue ? 'co-color-picker__value--empty' : ''}` }, hasValue ? this.value : this.placeholder)), this.isOpen && (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 && (h("div", { key: 'ca583c8033afaafa5bdd59ccd63e711eaf02e6df', class: "co-color-picker__helper" }, this.statusIcon && (h("co-icon", { key: 'aca2fd8186658e7d4e13ab67dc7a6e93c2fd8b89', name: this.statusIcon, size: 14, weight: "fill", class: "co-color-picker__helper-icon" })), h("span", { key: 'e8e3cdf72353a1f5fb8b53fe725389386c7d75ea', class: "co-color-picker__helper-text" }, this.helperText)))));
1003
+ offset: 4, onCoOpen: this.handlePopoverOpen, onCoClose: this.handlePopoverClose }, 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 }, h("span", { key: '9267f104b7f0542653038ef381fb81a7f7f0188e', class: "co-color-picker__swatch", style: { background: hasValue ? this.value : 'transparent' } }), h("span", { key: '64efb900a60576022b3f487db56380973d2934c9', class: `co-color-picker__value ${!hasValue ? 'co-color-picker__value--empty' : ''}` }, hasValue ? this.value : this.placeholder)), this.isOpen && (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 && (h("div", { key: '901b7094f7da8c09ea25cad568eda8d5fcaf2d6e', class: "co-color-picker__helper" }, this.statusIcon && (h("co-icon", { key: 'fb341f791466f133f6a6c4bd04a8dd71c519c7c0', name: this.statusIcon, size: 14, weight: "fill", class: "co-color-picker__helper-icon" })), h("span", { key: '0ecfc7d46a07c741d42b59660979559fb78117df', class: "co-color-picker__helper-text" }, this.helperText)))));
974
1004
  }
975
1005
  static get is() { return "co-color-picker"; }
976
1006
  static get encapsulation() { return "shadow"; }
@@ -531,7 +531,7 @@ export class CoCombobox {
531
531
  "references": {
532
532
  "ComboboxOption": {
533
533
  "location": "local",
534
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-combobox/co-combobox.tsx",
534
+ "path": "/Users/agox/worktrees/cobalt-release/packages/core/src/components/co-combobox/co-combobox.tsx",
535
535
  "id": "src/components/co-combobox/co-combobox.tsx::ComboboxOption"
536
536
  }
537
537
  }
@@ -246,7 +246,7 @@ export class CoCommandSearch {
246
246
  "references": {
247
247
  "CommandItem": {
248
248
  "location": "local",
249
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-command-search/co-command-search.tsx",
249
+ "path": "/Users/agox/worktrees/cobalt-release/packages/core/src/components/co-command-search/co-command-search.tsx",
250
250
  "id": "src/components/co-command-search/co-command-search.tsx::CommandItem"
251
251
  }
252
252
  }
@@ -153,8 +153,18 @@ co-data-table {
153
153
  color: var(--co-semantic-text-muted);
154
154
  }
155
155
 
156
- .co-data-table__th-label {
156
+ /* Wrapper co-tooltip[block] del label: toma el track flex que antes ocupaba el
157
+ label (min-width:0 = deja truncar; sus hermanos pin/sort/funnel llevan
158
+ flex-shrink:0). El tooltip sale del host (tsx), gateado por truncado. */
159
+ .co-data-table__th-tip {
157
160
  flex: 1;
161
+ min-width: 0;
162
+ }
163
+
164
+ /* Dentro del trigger del tooltip el label ya no es flex item: block explícito
165
+ o el ellipsis (overflow/text-overflow solo aplican a cajas block) no engancha. */
166
+ .co-data-table__th-label {
167
+ display: block;
158
168
  overflow: hidden;
159
169
  text-overflow: ellipsis;
160
170
  }
@@ -208,6 +218,16 @@ co-data-table {
208
218
  line-height: 0; /* el co-checkbox inline mete baseline-gap y estira el header a 43 */
209
219
  }
210
220
 
221
+ /* Sin separador entre la casilla y la primera columna: la selección no es una
222
+ columna de datos y su borde derecho dibujaba un recuadro alrededor del check
223
+ (pedido de diseño 2026-09-16). Doble clase para ganarle al `border-right` de
224
+ las reglas base .co-data-table__th / .co-data-table__td, que van DESPUÉS en
225
+ este archivo. */
226
+ .co-data-table__th.co-data-table__th--checkbox,
227
+ .co-data-table__td.co-data-table__td--checkbox {
228
+ border-right: none;
229
+ }
230
+
211
231
  /* ─── STICKY COLUMNS ───────────────────────────────────────── */
212
232
  .co-data-table__th--sticky,
213
233
  .co-data-table__td--sticky {
@@ -268,6 +288,42 @@ co-data-table {
268
288
  transition: opacity var(--co-motion-duration-fast) var(--co-motion-ease-out);
269
289
  }
270
290
 
291
+ /* Tinte de hover/selected de las celdas sticky: un overlay ANIMABLE.
292
+ La fila pinta su tinte translúcido en el <tr> y lo transiciona
293
+ (background-color, duration-fast). Una celda sticky lleva base opaca —no
294
+ puede dejar ver lo que scrollea debajo—, así que el tinte va compuesto
295
+ ENCIMA de esa base. Componerlo con `background-image` (gradiente) no es
296
+ animable: la columna fijada prendía y apagaba de golpe mientras el resto de
297
+ la fila se desvanecía (2026-09-07). `::before` con opacity/background-color
298
+ y la MISMA transición que la fila. z-index -1 dentro del stacking context
299
+ de la celda (position:sticky + z-index) = encima de su base opaca, debajo
300
+ de su contenido. Los tokens espejan los de .co-data-table__row de abajo. */
301
+ .co-data-table__td--sticky::before {
302
+ content: '';
303
+ position: absolute;
304
+ inset: 0;
305
+ z-index: -1;
306
+ pointer-events: none;
307
+ background-color: var(--co-semantic-surface-hover);
308
+ opacity: 0;
309
+ transition:
310
+ opacity var(--co-motion-duration-fast) var(--co-motion-ease-out),
311
+ background-color var(--co-motion-duration-fast) var(--co-motion-ease-out);
312
+ }
313
+
314
+ .co-data-table__row:hover .co-data-table__td--sticky::before {
315
+ opacity: 1;
316
+ }
317
+
318
+ .co-data-table__row--selected .co-data-table__td--sticky::before {
319
+ opacity: 1;
320
+ background-color: var(--co-color-opacity-negro-4);
321
+ }
322
+
323
+ .co-data-table__row--selected:hover .co-data-table__td--sticky::before {
324
+ background-color: var(--co-color-opacity-negro-8);
325
+ }
326
+
271
327
  /* ─── RESIZE HANDLE ─────────────────────────────────────────── */
272
328
  .co-data-table__resize-handle {
273
329
  position: absolute;
@@ -319,7 +375,12 @@ co-data-table {
319
375
  wrapper, never on the cell itself. */
320
376
  height: 48px;
321
377
  padding: 0 var(--co-spacing-md);
322
- background: inherit;
378
+ /* Transparente, NUNCA `inherit`: el hover/selected es un tinte translúcido
379
+ pintado en el <tr>. Con `inherit` cada celda normal lo repintaba encima
380
+ (doble tinte, ~15%) mientras las sticky —base opaca + un gradiente del
381
+ mismo tinte— quedaban al 8%: la columna fijada se veía más clara que el
382
+ resto de la fila en hover. Guard: co-data-table-cell-background-guard.test.ts */
383
+ background: transparent;
323
384
  border-bottom: 1px solid color-mix(in srgb, var(--co-semantic-border-default) 75%, transparent);
324
385
  border-right: 1px solid color-mix(in srgb, var(--co-semantic-border-default) 75%, transparent);
325
386
  vertical-align: middle;