@prolibu-suite/cobalt-core 0.11.11 → 0.11.12

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 (435) hide show
  1. package/custom-elements.json +107 -34
  2. package/dist/cjs/co-accordion.cjs.entry.js +5 -5
  3. package/dist/cjs/co-action-bar.cjs.entry.js +1 -1
  4. package/dist/cjs/co-app-shell.cjs.entry.js +1 -1
  5. package/dist/cjs/co-audio-player.cjs.entry.js +1 -1
  6. package/dist/cjs/co-autocomplete.cjs.entry.js +2 -2
  7. package/dist/cjs/co-avatar-group.cjs.entry.js +1 -1
  8. package/dist/cjs/co-avatar.cjs.entry.js +1 -1
  9. package/dist/cjs/co-badge.cjs.entry.js +1 -1
  10. package/dist/cjs/co-bottom-sheet.cjs.entry.js +1 -1
  11. package/dist/cjs/co-breadcrumb-item.cjs.entry.js +1 -1
  12. package/dist/cjs/co-breadcrumb.cjs.entry.js +1 -1
  13. package/dist/cjs/co-button-group.cjs.entry.js +1 -1
  14. package/dist/cjs/co-button.cjs.entry.js +1 -1
  15. package/dist/cjs/co-calendar-month_2.cjs.entry.js +2 -2
  16. package/dist/cjs/co-calendar_3.cjs.entry.js +2 -2
  17. package/dist/cjs/co-card.cjs.entry.js +1 -1
  18. package/dist/cjs/co-carousel-item.cjs.entry.js +1 -1
  19. package/dist/cjs/co-carousel.cjs.entry.js +2 -2
  20. package/dist/cjs/co-checkbox-group.cjs.entry.js +2 -2
  21. package/dist/cjs/co-checkbox.cjs.entry.js +2 -2
  22. package/dist/cjs/co-chip_2.cjs.entry.js +6 -6
  23. package/dist/cjs/co-color-area.cjs.entry.js +1 -1
  24. package/dist/cjs/co-color-picker.cjs.entry.js +3 -3
  25. package/dist/cjs/co-color-slider.cjs.entry.js +1 -1
  26. package/dist/cjs/co-column-picker.cjs.entry.js +2 -2
  27. package/dist/cjs/co-combobox.cjs.entry.js +2 -2
  28. package/dist/cjs/co-command-search.cjs.entry.js +2 -2
  29. package/dist/cjs/co-data-table-pagination.cjs.entry.js +2 -2
  30. package/dist/cjs/co-data-table.cjs.entry.js +2 -2
  31. package/dist/cjs/co-date-picker.cjs.entry.js +2 -2
  32. package/dist/cjs/co-date-range-picker.cjs.entry.js +2 -2
  33. package/dist/cjs/co-date-range.cjs.entry.js +1 -1
  34. package/dist/cjs/co-date-time-picker.cjs.entry.js +2 -2
  35. package/dist/cjs/co-document-editor.cjs.entry.js +2 -2
  36. package/dist/cjs/co-drive-card.cjs.entry.js +1 -1
  37. package/dist/cjs/co-drop-zone.cjs.entry.js +1 -1
  38. package/dist/cjs/co-emoji-picker.cjs.entry.js +2 -2
  39. package/dist/cjs/co-empty-state.cjs.entry.js +2 -2
  40. package/dist/cjs/co-event-calendar.cjs.entry.js +1 -1
  41. package/dist/cjs/co-event-popover.cjs.entry.js +1 -1
  42. package/dist/cjs/co-fab.cjs.entry.js +1 -1
  43. package/dist/cjs/co-file-field.cjs.entry.js +3 -3
  44. package/dist/cjs/co-file-type-tile.cjs.entry.js +1 -1
  45. package/dist/cjs/co-gradient-bar.cjs.entry.js +1 -1
  46. package/dist/cjs/co-helper-text.cjs.entry.js +1 -1
  47. package/dist/cjs/co-icon-button.cjs.entry.js +2 -2
  48. package/dist/cjs/co-icon.cjs.entry.js +1 -1
  49. package/dist/cjs/co-input.cjs.entry.js +2 -2
  50. package/dist/cjs/co-json-field.cjs.entry.js +2 -2
  51. package/dist/cjs/co-kbd_2.cjs.entry.js +1 -1
  52. package/dist/cjs/co-lightbox.cjs.entry.js +1 -1
  53. package/dist/cjs/co-list-footer.cjs.entry.js +1 -1
  54. package/dist/cjs/co-list-item.cjs.entry.js +2 -2
  55. package/dist/cjs/co-loader.cjs.entry.js +1 -1
  56. package/dist/cjs/co-media-thumb.cjs.entry.js +1 -1
  57. package/dist/cjs/co-menu-divider.cjs.entry.js +1 -1
  58. package/dist/cjs/co-menu-item.cjs.entry.js +40 -7
  59. package/dist/cjs/co-menu.cjs.entry.js +2 -2
  60. package/dist/cjs/co-modal.cjs.entry.js +2 -2
  61. package/dist/cjs/co-navbar.cjs.entry.js +1 -1
  62. package/dist/cjs/co-number-field.cjs.entry.js +2 -2
  63. package/dist/cjs/co-overlay.cjs.entry.js +1 -1
  64. package/dist/cjs/co-page-header.cjs.entry.js +1 -1
  65. package/dist/cjs/co-phone-field.cjs.entry.js +4 -4
  66. package/dist/cjs/co-popover.cjs.entry.js +1 -1
  67. package/dist/cjs/co-progress-bar.cjs.entry.js +1 -1
  68. package/dist/cjs/co-progress-circle.cjs.entry.js +2 -2
  69. package/dist/cjs/co-provider-logo_2.cjs.entry.js +2 -2
  70. package/dist/cjs/co-radio-group.cjs.entry.js +1 -1
  71. package/dist/cjs/co-radio.cjs.entry.js +2 -2
  72. package/dist/cjs/co-rating.cjs.entry.js +2 -2
  73. package/dist/cjs/co-ref-field.cjs.entry.js +3 -3
  74. package/dist/cjs/co-rich-text-editor.cjs.entry.js +2 -2
  75. package/dist/cjs/co-rich-text-toolbar.cjs.entry.js +1 -1
  76. package/dist/cjs/co-rich-text-viewer.cjs.entry.js +1 -1
  77. package/dist/cjs/co-row.cjs.entry.js +1 -1
  78. package/dist/cjs/co-segmented-bar.cjs.entry.js +1 -1
  79. package/dist/cjs/co-select.cjs.entry.js +2 -2
  80. package/dist/cjs/co-separator.cjs.entry.js +1 -1
  81. package/dist/cjs/co-sidebar-nav.cjs.entry.js +1 -1
  82. package/dist/cjs/co-sidebar.cjs.entry.js +1 -1
  83. package/dist/cjs/co-slider.cjs.entry.js +2 -2
  84. package/dist/cjs/co-swatch-grid.cjs.entry.js +1 -1
  85. package/dist/cjs/co-switch.cjs.entry.js +3 -3
  86. package/dist/cjs/co-tab-group.cjs.entry.js +2 -2
  87. package/dist/cjs/co-tab.cjs.entry.js +2 -2
  88. package/dist/cjs/co-tags-field.cjs.entry.js +4 -4
  89. package/dist/cjs/co-textarea.cjs.entry.js +2 -2
  90. package/dist/cjs/co-tile.cjs.entry.js +1 -1
  91. package/dist/cjs/co-time-field.cjs.entry.js +1 -1
  92. package/dist/cjs/co-toast.cjs.entry.js +1 -1
  93. package/dist/cjs/co-toggle-button-group.cjs.entry.js +1 -1
  94. package/dist/cjs/co-toggle-button.cjs.entry.js +2 -2
  95. package/dist/cjs/co-transfer-list.cjs.entry.js +2 -2
  96. package/dist/cjs/co-tree-item.cjs.entry.js +2 -2
  97. package/dist/cjs/co-video.cjs.entry.js +2 -2
  98. package/dist/cjs/cobalt.cjs.js +2 -2
  99. package/dist/cjs/{fieldChip-DbYMfylq.js → fieldChip-D-x9bJ-W.js} +1 -1
  100. package/dist/cjs/{index-bHoidDwv.js → index-CuskTAyj.js} +1 -1
  101. package/dist/cjs/loader.cjs.js +2 -2
  102. package/dist/cjs/{requiredMark-21yHvvZS.js → requiredMark-ooEZAZbC.js} +1 -1
  103. package/dist/cobalt/cobalt.css +1 -1
  104. package/dist/cobalt/cobalt.esm.js +1 -1
  105. package/dist/cobalt/{p-d9b4594b.entry.js → p-011fd3ca.entry.js} +1 -1
  106. package/dist/cobalt/{p-33840969.entry.js → p-038cc50a.entry.js} +1 -1
  107. package/dist/cobalt/{p-d375c84e.entry.js → p-052289b3.entry.js} +1 -1
  108. package/dist/cobalt/{p-bbf3d859.entry.js → p-05f0feca.entry.js} +1 -1
  109. package/dist/cobalt/p-05f90173.entry.js +1 -0
  110. package/dist/cobalt/{p-c004fde5.entry.js → p-09ff5302.entry.js} +1 -1
  111. package/dist/cobalt/{p-d26dc681.entry.js → p-0bd8e079.entry.js} +1 -1
  112. package/dist/cobalt/{p-5a32b9a2.entry.js → p-0d163b25.entry.js} +1 -1
  113. package/dist/cobalt/{p-cea21e08.entry.js → p-0d2deeaa.entry.js} +1 -1
  114. package/dist/cobalt/{p-94b871fb.entry.js → p-0ea06cee.entry.js} +1 -1
  115. package/dist/cobalt/{p-a18c01eb.entry.js → p-1288867e.entry.js} +1 -1
  116. package/dist/cobalt/p-1318c5b9.entry.js +1 -0
  117. package/dist/cobalt/{p-15d995b4.entry.js → p-134331e6.entry.js} +1 -1
  118. package/dist/cobalt/p-1361f386.entry.js +1 -0
  119. package/dist/cobalt/{p-3e532a11.entry.js → p-15e29500.entry.js} +1 -1
  120. package/dist/cobalt/{p-feec49a4.entry.js → p-16eb0771.entry.js} +1 -1
  121. package/dist/cobalt/{p-3b5024ce.entry.js → p-19544796.entry.js} +1 -1
  122. package/dist/cobalt/{p-71ee36a8.entry.js → p-1cc15af6.entry.js} +1 -1
  123. package/dist/cobalt/{p-a27013e6.entry.js → p-1ef7bbbc.entry.js} +1 -1
  124. package/dist/cobalt/{p-b402665a.entry.js → p-20651254.entry.js} +1 -1
  125. package/dist/cobalt/{p-353ff9ed.entry.js → p-24456175.entry.js} +1 -1
  126. package/dist/cobalt/{p-d1e83525.entry.js → p-2d76fafb.entry.js} +1 -1
  127. package/dist/cobalt/{p-dabcbba7.entry.js → p-2f44a37b.entry.js} +1 -1
  128. package/dist/cobalt/{p-37f9ec35.entry.js → p-3842ac1a.entry.js} +1 -1
  129. package/dist/cobalt/{p-6b88a52c.entry.js → p-388f5a71.entry.js} +1 -1
  130. package/dist/cobalt/{p-59a71695.entry.js → p-45460f75.entry.js} +1 -1
  131. package/dist/cobalt/{p-4ae6fe0e.entry.js → p-4e1ba090.entry.js} +1 -1
  132. package/dist/cobalt/{p-1c9253a2.entry.js → p-4ee87962.entry.js} +1 -1
  133. package/dist/cobalt/{p-d7775109.entry.js → p-5009ad0a.entry.js} +1 -1
  134. package/dist/cobalt/p-5259c731.entry.js +1 -0
  135. package/dist/cobalt/{p-600d0cab.entry.js → p-5aaaa257.entry.js} +1 -1
  136. package/dist/cobalt/{p-83691cfb.entry.js → p-5b098a4c.entry.js} +1 -1
  137. package/dist/cobalt/{p-f1da1df1.entry.js → p-5d17b6e9.entry.js} +1 -1
  138. package/dist/cobalt/{p-f6f273f7.entry.js → p-5e04cecc.entry.js} +1 -1
  139. package/dist/cobalt/{p-efb3cbb0.entry.js → p-63c588e1.entry.js} +1 -1
  140. package/dist/cobalt/{p-f562bd96.entry.js → p-63e5d7fe.entry.js} +1 -1
  141. package/dist/cobalt/{p-fb6671e0.entry.js → p-65e0176c.entry.js} +1 -1
  142. package/dist/cobalt/{p-e5350eeb.entry.js → p-66375026.entry.js} +1 -1
  143. package/dist/cobalt/{p-74804c79.entry.js → p-669ad1c6.entry.js} +1 -1
  144. package/dist/cobalt/{p-5d41b58b.entry.js → p-66a07095.entry.js} +1 -1
  145. package/dist/cobalt/{p-4e81e580.entry.js → p-67fac886.entry.js} +1 -1
  146. package/dist/cobalt/{p-12fc5119.entry.js → p-6a270d5d.entry.js} +1 -1
  147. package/dist/cobalt/{p-89328cd8.entry.js → p-6bb9964f.entry.js} +1 -1
  148. package/dist/cobalt/{p-9af26af0.entry.js → p-6c35584c.entry.js} +1 -1
  149. package/dist/cobalt/{p-019eed8e.entry.js → p-6d12e825.entry.js} +1 -1
  150. package/dist/cobalt/{p-9125252a.entry.js → p-6fe227e0.entry.js} +1 -1
  151. package/dist/cobalt/p-71a289f9.entry.js +1 -0
  152. package/dist/cobalt/{p-b6463d35.entry.js → p-71f9fa68.entry.js} +1 -1
  153. package/dist/cobalt/{p-3890d22f.entry.js → p-741c14af.entry.js} +1 -1
  154. package/dist/cobalt/{p-76ea3f34.entry.js → p-7550fc02.entry.js} +1 -1
  155. package/dist/cobalt/{p-7737354e.entry.js → p-76244cca.entry.js} +1 -1
  156. package/dist/cobalt/{p-be520bd5.entry.js → p-79b62ce3.entry.js} +1 -1
  157. package/dist/cobalt/{p-6eca1c7c.entry.js → p-7be0f85b.entry.js} +1 -1
  158. package/dist/cobalt/{p-a4154bcf.entry.js → p-811f1dd7.entry.js} +1 -1
  159. package/dist/cobalt/{p-9ce57385.entry.js → p-88edf7d0.entry.js} +1 -1
  160. package/dist/cobalt/{p-c23630ab.entry.js → p-894f59ce.entry.js} +1 -1
  161. package/dist/cobalt/{p-0f3a3232.entry.js → p-8b2432b2.entry.js} +1 -1
  162. package/dist/cobalt/{p-299c2425.entry.js → p-8bf0975d.entry.js} +1 -1
  163. package/dist/cobalt/p-90823b79.entry.js +1 -0
  164. package/dist/cobalt/{p-5e14f676.entry.js → p-9a307b64.entry.js} +1 -1
  165. package/dist/cobalt/p-9a3e631e.entry.js +1 -0
  166. package/dist/cobalt/{p-3878f174.entry.js → p-9c00499b.entry.js} +1 -1
  167. package/dist/cobalt/p-C_xES1w3.js +1 -0
  168. package/dist/cobalt/{p-DJkaRtbb.js → p-YRicbXh3.js} +2 -2
  169. package/dist/cobalt/{p-3b7e90c8.entry.js → p-a6516907.entry.js} +1 -1
  170. package/dist/cobalt/{p-b723aa47.entry.js → p-a671facd.entry.js} +1 -1
  171. package/dist/cobalt/{p-e4646a0e.entry.js → p-a679c368.entry.js} +1 -1
  172. package/dist/cobalt/{p-a33a277a.entry.js → p-a9242183.entry.js} +1 -1
  173. package/dist/cobalt/{p-2ff8f591.entry.js → p-ac1565df.entry.js} +1 -1
  174. package/dist/cobalt/{p-3bff827a.entry.js → p-ac963082.entry.js} +1 -1
  175. package/dist/cobalt/{p-50ab6b9b.entry.js → p-ae66e746.entry.js} +1 -1
  176. package/dist/cobalt/{p-438cc876.entry.js → p-af8cc16e.entry.js} +1 -1
  177. package/dist/cobalt/{p-02133c95.entry.js → p-b3994c94.entry.js} +1 -1
  178. package/dist/cobalt/{p-53a251ca.entry.js → p-be860577.entry.js} +1 -1
  179. package/dist/cobalt/{p-c220362c.entry.js → p-be9f69e4.entry.js} +1 -1
  180. package/dist/cobalt/{p-5e39cf70.entry.js → p-bf8212cf.entry.js} +1 -1
  181. package/dist/cobalt/{p-cb1013e6.entry.js → p-c01454be.entry.js} +1 -1
  182. package/dist/cobalt/{p-eab59be5.entry.js → p-c0f579d9.entry.js} +1 -1
  183. package/dist/cobalt/{p-4a7fd0b4.entry.js → p-c4bbb701.entry.js} +1 -1
  184. package/dist/cobalt/{p-4cdfcd9c.entry.js → p-c5978c46.entry.js} +1 -1
  185. package/dist/cobalt/{p-8a26f3cc.entry.js → p-c71b736c.entry.js} +1 -1
  186. package/dist/cobalt/{p-82bcd062.entry.js → p-ce9a3708.entry.js} +1 -1
  187. package/dist/cobalt/{p-04e3e1f6.entry.js → p-d0129851.entry.js} +1 -1
  188. package/dist/cobalt/p-d127a7c4.entry.js +1 -0
  189. package/dist/cobalt/p-d1293695.entry.js +1 -0
  190. package/dist/cobalt/{p-d1595580.entry.js → p-d525aec4.entry.js} +1 -1
  191. package/dist/cobalt/p-ddf6083f.entry.js +1 -0
  192. package/dist/cobalt/{p-8e7ad2fe.entry.js → p-e0b542ad.entry.js} +1 -1
  193. package/dist/cobalt/{p-63f888a1.entry.js → p-e120435e.entry.js} +1 -1
  194. package/dist/cobalt/{p-a4264bde.entry.js → p-e71f6186.entry.js} +1 -1
  195. package/dist/cobalt/{p-ff218d09.entry.js → p-ea2cc20e.entry.js} +1 -1
  196. package/dist/cobalt/{p-c026968c.entry.js → p-ebcdc0b2.entry.js} +1 -1
  197. package/dist/cobalt/{p-3e864e7d.entry.js → p-ec11b337.entry.js} +1 -1
  198. package/dist/cobalt/{p-a6c9a0c5.entry.js → p-eca12c29.entry.js} +1 -1
  199. package/dist/cobalt/{p-19f0f534.entry.js → p-f3975988.entry.js} +1 -1
  200. package/dist/cobalt/{p-7e678cbd.entry.js → p-f9937237.entry.js} +1 -1
  201. package/dist/cobalt/{p-0bbaaf4f.entry.js → p-fa4a59e8.entry.js} +1 -1
  202. package/dist/cobalt/{p-f23f52ed.entry.js → p-fd15353a.entry.js} +1 -1
  203. package/dist/cobalt/p-pl89alJ1.js +1 -0
  204. package/dist/collection/components/co-accordion/co-accordion.css +1 -1
  205. package/dist/collection/components/co-accordion/co-accordion.js +3 -3
  206. package/dist/collection/components/co-autocomplete/co-autocomplete.js +1 -1
  207. package/dist/collection/components/co-avatar-group/co-avatar-group.js +1 -1
  208. package/dist/collection/components/co-calendar-month/co-calendar-month.css +9 -4
  209. package/dist/collection/components/co-carousel/co-carousel.css +7 -5
  210. package/dist/collection/components/co-checkbox/co-checkbox.css +12 -17
  211. package/dist/collection/components/co-checkbox-group/co-checkbox-group.css +4 -2
  212. package/dist/collection/components/co-checkbox-group/co-checkbox-group.js +1 -1
  213. package/dist/collection/components/co-chip/co-chip.css +14 -1
  214. package/dist/collection/components/co-color-area/co-color-area.js +2 -2
  215. package/dist/collection/components/co-color-picker/co-color-picker.css +4 -4
  216. package/dist/collection/components/co-color-slider/co-color-slider.js +1 -1
  217. package/dist/collection/components/co-column-picker/co-column-picker.css +12 -2
  218. package/dist/collection/components/co-combobox/co-combobox.js +1 -1
  219. package/dist/collection/components/co-command-search/co-command-search.css +1 -1
  220. package/dist/collection/components/co-command-search/co-command-search.js +1 -1
  221. package/dist/collection/components/co-data-table/co-data-table.css +20 -10
  222. package/dist/collection/components/co-data-table/co-data-table.js +1 -1
  223. package/dist/collection/components/co-data-table-pagination/co-data-table-pagination.css +11 -3
  224. package/dist/collection/components/co-date-range-picker/co-date-range-picker.js +2 -2
  225. package/dist/collection/components/co-document-editor/co-document-editor.css +10 -7
  226. package/dist/collection/components/co-document-editor/co-document-editor.js +5 -5
  227. package/dist/collection/components/co-emoji-picker/co-emoji-picker.css +3 -3
  228. package/dist/collection/components/co-empty-state/co-empty-state.css +7 -4
  229. package/dist/collection/components/co-file-field/co-file-field.css +3 -1
  230. package/dist/collection/components/co-icon-button/co-icon-button.css +1 -1
  231. package/dist/collection/components/co-list-item/co-list-item.css +6 -0
  232. package/dist/collection/components/co-menu/co-menu.css +4 -2
  233. package/dist/collection/components/co-menu-item/co-menu-item.css +14 -5
  234. package/dist/collection/components/co-menu-item/co-menu-item.js +80 -7
  235. package/dist/collection/components/co-option-list/co-option-list.css +12 -4
  236. package/dist/collection/components/co-option-list/co-option-list.js +3 -3
  237. package/dist/collection/components/co-phone-field/co-phone-field.css +12 -3
  238. package/dist/collection/components/co-phone-field/co-phone-field.js +1 -1
  239. package/dist/collection/components/co-popover/co-popover.js +1 -1
  240. package/dist/collection/components/co-progress-circle/co-progress-circle.css +3 -1
  241. package/dist/collection/components/co-radio/co-radio.css +10 -1
  242. package/dist/collection/components/co-radio-group/co-radio-group.js +1 -1
  243. package/dist/collection/components/co-rating/co-rating.css +3 -1
  244. package/dist/collection/components/co-ref-field/co-ref-field.js +4 -4
  245. package/dist/collection/components/co-segmented-bar/co-segmented-bar.js +1 -1
  246. package/dist/collection/components/co-select/co-select.js +1 -1
  247. package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.js +1 -1
  248. package/dist/collection/components/co-skeleton/co-skeleton.css +6 -3
  249. package/dist/collection/components/co-slider/co-slider.css +21 -1
  250. package/dist/collection/components/co-switch/co-switch.css +10 -4
  251. package/dist/collection/components/co-tab/co-tab.css +14 -8
  252. package/dist/collection/components/co-tab-group/co-tab-group.css +15 -9
  253. package/dist/collection/components/co-tags-field/co-tags-field.css +3 -2
  254. package/dist/collection/components/co-toast/co-toast.js +2 -2
  255. package/dist/collection/components/co-toggle-button/co-toggle-button.css +10 -4
  256. package/dist/collection/components/co-transfer-list/co-transfer-list.css +4 -2
  257. package/dist/collection/components/co-transfer-list/co-transfer-list.js +1 -1
  258. package/dist/collection/components/co-tree-item/co-tree-item.css +1 -1
  259. package/dist/collection/components/co-tree-item/co-tree-item.js +2 -2
  260. package/dist/collection/components/co-video/co-video.css +5 -3
  261. package/dist/collection/utils/dragMove.js +1 -1
  262. package/dist/components/co-accordion.js +1 -1
  263. package/dist/components/co-action-bar.js +1 -1
  264. package/dist/components/co-autocomplete.js +1 -1
  265. package/dist/components/co-calendar-month.js +1 -1
  266. package/dist/components/co-calendar-timegrid.js +1 -1
  267. package/dist/components/co-carousel.js +1 -1
  268. package/dist/components/co-checkbox-group.js +1 -1
  269. package/dist/components/co-checkbox.js +1 -1
  270. package/dist/components/co-chip.js +1 -1
  271. package/dist/components/co-color-picker.js +1 -1
  272. package/dist/components/co-column-picker.js +1 -1
  273. package/dist/components/co-combobox.js +1 -1
  274. package/dist/components/co-command-search.js +1 -1
  275. package/dist/components/co-data-table-pagination.js +1 -1
  276. package/dist/components/co-data-table.js +1 -1
  277. package/dist/components/co-document-editor.js +1 -1
  278. package/dist/components/co-emoji-picker.js +1 -1
  279. package/dist/components/co-empty-state.js +1 -1
  280. package/dist/components/co-event-calendar.js +1 -1
  281. package/dist/components/co-file-field.js +1 -1
  282. package/dist/components/co-icon-button.js +1 -1
  283. package/dist/components/co-lightbox.js +1 -1
  284. package/dist/components/co-list-item.js +1 -1
  285. package/dist/components/co-menu-item.js +1 -1
  286. package/dist/components/co-menu.js +1 -1
  287. package/dist/components/co-modal.js +1 -1
  288. package/dist/components/co-option-list.js +1 -1
  289. package/dist/components/co-phone-field.js +1 -1
  290. package/dist/components/co-progress-circle.js +1 -1
  291. package/dist/components/co-radio.js +1 -1
  292. package/dist/components/co-rating.js +1 -1
  293. package/dist/components/co-ref-field.js +1 -1
  294. package/dist/components/co-skeleton.js +1 -1
  295. package/dist/components/co-slider.js +1 -1
  296. package/dist/components/co-switch.js +1 -1
  297. package/dist/components/co-tab-group.js +1 -1
  298. package/dist/components/co-tab.js +1 -1
  299. package/dist/components/co-tags-field.js +1 -1
  300. package/dist/components/co-toggle-button.js +1 -1
  301. package/dist/components/co-transfer-list.js +1 -1
  302. package/dist/components/co-tree-item.js +1 -1
  303. package/dist/components/co-video.js +1 -1
  304. package/dist/components/index.js +1 -1
  305. package/dist/components/{p-COCcx0DN.js → p-4nVctQq9.js} +1 -1
  306. package/dist/components/p-BDk4ffI3.js +1 -0
  307. package/dist/components/p-BXDvRVSp.js +1 -0
  308. package/dist/components/{p-rfvTj6cP.js → p-C1WNmtGN.js} +1 -1
  309. package/dist/components/p-CV7I0t8n.js +1 -0
  310. package/dist/components/p-CpwIdVV5.js +1 -0
  311. package/dist/components/{p-DMW9TJ7Z.js → p-Ct4MpUdn.js} +1 -1
  312. package/dist/components/{p-R1W48hzW.js → p-CxXO0llX.js} +1 -1
  313. package/dist/components/p-DpnlSVX3.js +1 -0
  314. package/dist/components/{p-BMyWdiVO.js → p-y-UE-CLu.js} +1 -1
  315. package/dist/esm/co-accordion.entry.js +5 -5
  316. package/dist/esm/co-action-bar.entry.js +1 -1
  317. package/dist/esm/co-app-shell.entry.js +1 -1
  318. package/dist/esm/co-audio-player.entry.js +1 -1
  319. package/dist/esm/co-autocomplete.entry.js +2 -2
  320. package/dist/esm/co-avatar-group.entry.js +1 -1
  321. package/dist/esm/co-avatar.entry.js +1 -1
  322. package/dist/esm/co-badge.entry.js +1 -1
  323. package/dist/esm/co-bottom-sheet.entry.js +1 -1
  324. package/dist/esm/co-breadcrumb-item.entry.js +1 -1
  325. package/dist/esm/co-breadcrumb.entry.js +1 -1
  326. package/dist/esm/co-button-group.entry.js +1 -1
  327. package/dist/esm/co-button.entry.js +1 -1
  328. package/dist/esm/co-calendar-month_2.entry.js +2 -2
  329. package/dist/esm/co-calendar_3.entry.js +2 -2
  330. package/dist/esm/co-card.entry.js +1 -1
  331. package/dist/esm/co-carousel-item.entry.js +1 -1
  332. package/dist/esm/co-carousel.entry.js +2 -2
  333. package/dist/esm/co-checkbox-group.entry.js +2 -2
  334. package/dist/esm/co-checkbox.entry.js +2 -2
  335. package/dist/esm/co-chip_2.entry.js +6 -6
  336. package/dist/esm/co-color-area.entry.js +1 -1
  337. package/dist/esm/co-color-picker.entry.js +3 -3
  338. package/dist/esm/co-color-slider.entry.js +1 -1
  339. package/dist/esm/co-column-picker.entry.js +2 -2
  340. package/dist/esm/co-combobox.entry.js +2 -2
  341. package/dist/esm/co-command-search.entry.js +2 -2
  342. package/dist/esm/co-data-table-pagination.entry.js +2 -2
  343. package/dist/esm/co-data-table.entry.js +2 -2
  344. package/dist/esm/co-date-picker.entry.js +2 -2
  345. package/dist/esm/co-date-range-picker.entry.js +2 -2
  346. package/dist/esm/co-date-range.entry.js +1 -1
  347. package/dist/esm/co-date-time-picker.entry.js +2 -2
  348. package/dist/esm/co-document-editor.entry.js +2 -2
  349. package/dist/esm/co-drive-card.entry.js +1 -1
  350. package/dist/esm/co-drop-zone.entry.js +1 -1
  351. package/dist/esm/co-emoji-picker.entry.js +2 -2
  352. package/dist/esm/co-empty-state.entry.js +2 -2
  353. package/dist/esm/co-event-calendar.entry.js +1 -1
  354. package/dist/esm/co-event-popover.entry.js +1 -1
  355. package/dist/esm/co-fab.entry.js +1 -1
  356. package/dist/esm/co-file-field.entry.js +3 -3
  357. package/dist/esm/co-file-type-tile.entry.js +1 -1
  358. package/dist/esm/co-gradient-bar.entry.js +1 -1
  359. package/dist/esm/co-helper-text.entry.js +1 -1
  360. package/dist/esm/co-icon-button.entry.js +2 -2
  361. package/dist/esm/co-icon.entry.js +1 -1
  362. package/dist/esm/co-input.entry.js +2 -2
  363. package/dist/esm/co-json-field.entry.js +2 -2
  364. package/dist/esm/co-kbd_2.entry.js +1 -1
  365. package/dist/esm/co-lightbox.entry.js +1 -1
  366. package/dist/esm/co-list-footer.entry.js +1 -1
  367. package/dist/esm/co-list-item.entry.js +2 -2
  368. package/dist/esm/co-loader.entry.js +1 -1
  369. package/dist/esm/co-media-thumb.entry.js +1 -1
  370. package/dist/esm/co-menu-divider.entry.js +1 -1
  371. package/dist/esm/co-menu-item.entry.js +40 -7
  372. package/dist/esm/co-menu.entry.js +2 -2
  373. package/dist/esm/co-modal.entry.js +2 -2
  374. package/dist/esm/co-navbar.entry.js +1 -1
  375. package/dist/esm/co-number-field.entry.js +2 -2
  376. package/dist/esm/co-overlay.entry.js +1 -1
  377. package/dist/esm/co-page-header.entry.js +1 -1
  378. package/dist/esm/co-phone-field.entry.js +4 -4
  379. package/dist/esm/co-popover.entry.js +1 -1
  380. package/dist/esm/co-progress-bar.entry.js +1 -1
  381. package/dist/esm/co-progress-circle.entry.js +2 -2
  382. package/dist/esm/co-provider-logo_2.entry.js +2 -2
  383. package/dist/esm/co-radio-group.entry.js +1 -1
  384. package/dist/esm/co-radio.entry.js +2 -2
  385. package/dist/esm/co-rating.entry.js +2 -2
  386. package/dist/esm/co-ref-field.entry.js +3 -3
  387. package/dist/esm/co-rich-text-editor.entry.js +2 -2
  388. package/dist/esm/co-rich-text-toolbar.entry.js +1 -1
  389. package/dist/esm/co-rich-text-viewer.entry.js +1 -1
  390. package/dist/esm/co-row.entry.js +1 -1
  391. package/dist/esm/co-segmented-bar.entry.js +1 -1
  392. package/dist/esm/co-select.entry.js +2 -2
  393. package/dist/esm/co-separator.entry.js +1 -1
  394. package/dist/esm/co-sidebar-nav.entry.js +1 -1
  395. package/dist/esm/co-sidebar.entry.js +1 -1
  396. package/dist/esm/co-slider.entry.js +2 -2
  397. package/dist/esm/co-swatch-grid.entry.js +1 -1
  398. package/dist/esm/co-switch.entry.js +3 -3
  399. package/dist/esm/co-tab-group.entry.js +2 -2
  400. package/dist/esm/co-tab.entry.js +2 -2
  401. package/dist/esm/co-tags-field.entry.js +4 -4
  402. package/dist/esm/co-textarea.entry.js +2 -2
  403. package/dist/esm/co-tile.entry.js +1 -1
  404. package/dist/esm/co-time-field.entry.js +1 -1
  405. package/dist/esm/co-toast.entry.js +1 -1
  406. package/dist/esm/co-toggle-button-group.entry.js +1 -1
  407. package/dist/esm/co-toggle-button.entry.js +2 -2
  408. package/dist/esm/co-transfer-list.entry.js +2 -2
  409. package/dist/esm/co-tree-item.entry.js +2 -2
  410. package/dist/esm/co-video.entry.js +2 -2
  411. package/dist/esm/cobalt.js +3 -3
  412. package/dist/esm/{fieldChip-B0N8z5W-.js → fieldChip-DFpKjAN_.js} +1 -1
  413. package/dist/esm/{index-DJkaRtbb.js → index-YRicbXh3.js} +1 -1
  414. package/dist/esm/loader.js +3 -3
  415. package/dist/esm/{requiredMark-D5C5NzOE.js → requiredMark-BNC0WBDk.js} +1 -1
  416. package/dist/types/components/co-menu-item/co-menu-item.d.ts +30 -4
  417. package/dist/types/components.d.ts +26 -4
  418. package/package.json +4 -4
  419. package/dist/cobalt/p-01b54d81.entry.js +0 -1
  420. package/dist/cobalt/p-21b4a830.entry.js +0 -1
  421. package/dist/cobalt/p-256ca457.entry.js +0 -1
  422. package/dist/cobalt/p-7e444408.entry.js +0 -1
  423. package/dist/cobalt/p-7e72720a.entry.js +0 -1
  424. package/dist/cobalt/p-84ad0227.entry.js +0 -1
  425. package/dist/cobalt/p-947b8e35.entry.js +0 -1
  426. package/dist/cobalt/p-CSLjZ3WO.js +0 -1
  427. package/dist/cobalt/p-CYN5B3IQ.js +0 -1
  428. package/dist/cobalt/p-bee52042.entry.js +0 -1
  429. package/dist/cobalt/p-c93be2d5.entry.js +0 -1
  430. package/dist/cobalt/p-fb731600.entry.js +0 -1
  431. package/dist/components/p-B70R6xWE.js +0 -1
  432. package/dist/components/p-BGNXvnDr.js +0 -1
  433. package/dist/components/p-BSt2t5Fy.js +0 -1
  434. package/dist/components/p-BfDYq7JS.js +0 -1
  435. package/dist/components/p-CwRoHnzq.js +0 -1
@@ -20,9 +20,11 @@
20
20
  width: 72px;
21
21
  height: 72px;
22
22
  border-radius: 50%;
23
- /* Semánticos de MISMO valor en claro (gray-100 = surface-control): la
24
- primitiva no gira y dejaba un disco claro sobre la página oscura. */
25
- background: var(--co-semantic-surface-control);
23
+ /* Disco TRANSPARENTE con contorno de 1px border-default (auditoría de contraste
24
+ #8 B, 2026-10-05): el relleno surface-control (gray-100) quedaba a 1,08:1 de
25
+ la página. El contorno va por box-shadow inset: el disco sigue midiendo 72px. */
26
+ background: transparent;
27
+ box-shadow: inset 0 0 0 1px var(--co-semantic-border-default);
26
28
  color: var(--co-semantic-text-muted);
27
29
  margin-bottom: var(--co-spacing-xl);
28
30
  }
@@ -63,7 +65,8 @@
63
65
 
64
66
  .co-empty-state--card .co-empty-state__icon {
65
67
  margin-bottom: 0;
66
- background: var(--co-semantic-surface-control);
68
+ /* Mismo disco transparente con contorno que la variante base (#8 B). */
69
+ background: transparent;
67
70
  color: var(--co-semantic-text-secondary);
68
71
  }
69
72
 
@@ -69,8 +69,10 @@
69
69
  transition: border-color var(--co-motion-duration-fast) var(--co-motion-ease-out), background var(--co-motion-duration-fast) var(--co-motion-ease-out);
70
70
  }
71
71
 
72
+ /* Hover = border-strong, no border-focus: la tinta sólida queda para el foco y el
73
+ arrastre (--drag); un hover no puede pesar como el foco (auditoría 2026-10-05). */
72
74
  .co-file-field__dropzone:hover {
73
- border-color: var(--co-semantic-border-focus);
75
+ border-color: var(--co-semantic-border-strong);
74
76
  }
75
77
 
76
78
  .co-file-field__dropzone--drag {
@@ -80,7 +80,7 @@
80
80
  backdrop-filter: none;
81
81
  }
82
82
  .co-icon-button--ghost:hover:not(:disabled) {
83
- background: var(--co-color-opacity-negro-8, rgba(31, 28, 27, 0.08));
83
+ background: var(--co-semantic-surface-hover, rgba(31, 28, 27, 0.08));
84
84
  }
85
85
 
86
86
  /* Soft = fondo sólido `--co-semantic-surface-control` (gray-100 en claro /
@@ -39,6 +39,12 @@
39
39
  background: var(--co-semantic-surface-muted);
40
40
  }
41
41
 
42
+ /* Sobre la fila seleccionada (surface-muted) la descripción en text-muted quedaba en
43
+ 4,15:1 claro / 3,65:1 oscuro → text-secondary (5,54 / 4,95). En reposo no cambia. */
44
+ .co-list-item--selected .co-list-item__description {
45
+ color: var(--co-semantic-text-secondary);
46
+ }
47
+
42
48
  .co-list-item--disabled {
43
49
  opacity: 0.4;
44
50
  cursor: not-allowed;
@@ -20,7 +20,9 @@
20
20
  border so it never adds to the panel box). */
21
21
  box-shadow:
22
22
  var(--co-shadow-lg, 0 4px 12px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0, 0, 0, 0.04)),
23
- inset 0 0 0 1px var(--co-color-opacity-negro-8, rgba(31, 28, 27, 0.08));
23
+ /* border-subtle (negro 8 % claro / blanco 8 % oscuro): la primitiva cruda no giraba
24
+ y en oscuro el borde quedaba negro sobre negro (1,01:1). */
25
+ inset 0 0 0 1px var(--co-semantic-border-subtle, rgba(31, 28, 27, 0.08));
24
26
  /* Tunable panel padding — default 4px; design (Header "Nuevo" menu) uses 6px. */
25
27
  padding: var(--co-menu-padding, var(--co-spacing-xs, 4px));
26
28
  min-width: 200px;
@@ -42,7 +44,7 @@
42
44
  min-width: var(--co-menu-min-width, 200px);
43
45
  box-shadow:
44
46
  var(--co-shadow-lg, 0 4px 12px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0, 0, 0, 0.04)),
45
- inset 0 0 0 1px var(--co-menu-border-color, var(--co-color-opacity-negro-8, rgba(31, 28, 27, 0.08)));
47
+ inset 0 0 0 1px var(--co-menu-border-color, var(--co-semantic-border-subtle, rgba(31, 28, 27, 0.08)));
46
48
  }
47
49
 
48
50
  /* Task C1 — tres hooks más, mismo patrón aditivo que los de arriba y mismos
@@ -10,7 +10,8 @@
10
10
  * @prop --co-menu-item-color: Color del texto.
11
11
  * @prop --co-menu-item-icon-color: Color del ícono (default: el del texto).
12
12
  * @prop --co-menu-item-hover-bg: Fondo de la fila en hover o con foco.
13
- * @prop --co-menu-item-selected-bg: Fondo de la fila `selected`.
13
+ * @prop --co-menu-item-selected-bg: Fondo de la fila `selected` (default transparente).
14
+ * @prop --co-menu-item-selected-font-weight: Peso del texto de la fila `selected` (default 600).
14
15
  */
15
16
  :host {
16
17
  display: block;
@@ -71,14 +72,22 @@
71
72
  quedan ACÁ, antes de `--danger:hover` (misma especificidad que
72
73
  `.co-menu-item:hover`): el hover rojo de danger gana por orden (fix C-1). */
73
74
  .co-menu-item--selected {
74
- /* Fallback surface-control (= gray-100 en claro): la primitiva no giraba y en oscuro la
75
- fila seleccionada quedaba casi blanca bajo texto blanco (D6). */
76
- background: var(--co-menu-item-selected-bg, var(--co-semantic-surface-control, #f6f6f6));
75
+ /* Seleccionado = check + peso 600, SIN relleno (auditoría de contraste #5 B, 2026-10-05):
76
+ con el gris de antes (surface-control) el hover se leía igual o "más seleccionado" que
77
+ la selección. El hook --co-menu-item-selected-bg sigue para quien quiera un fondo. */
78
+ background: var(--co-menu-item-selected-bg, transparent);
79
+ }
80
+
81
+ /* El 600 va al rótulo principal, no a la fila: el caption (segunda línea) conserva su peso. */
82
+ .co-menu-item--selected .co-menu-item__label-main {
83
+ font-weight: var(--co-menu-item-selected-font-weight, 600);
77
84
  }
78
85
 
79
86
  .co-menu-item:hover,
80
87
  .co-menu-item--submenu-open {
81
- background: var(--co-menu-item-hover-bg, var(--co-semantic-surface-hover, rgba(31, 28, 27, 0.04)));
88
+ /* Hover = gris liviano (text-default 6 %): gira con el tema y queda por debajo de la
89
+ marca de seleccionado (check + 600). Antes surface-hover (negro 8 %). */
90
+ background: var(--co-menu-item-hover-bg, color-mix(in srgb, var(--co-semantic-text-default) 6%, transparent));
82
91
  }
83
92
 
84
93
  .co-menu-item:focus-visible {
@@ -20,11 +20,31 @@ export class CoMenuItem {
20
20
  constructor() {
21
21
  /** Tighter row metrics (32px instead of 36px). */
22
22
  this.dense = false;
23
- /** Marks the row as selected — paints an at-rest gray-100 background. Used by
24
- * single-select menus (sort/type). */
23
+ /** Marks the row as selected — sin relleno: peso 600 + un check al final (salvo
24
+ * que la fila use `leadingCheck`, que ya lo pinta al inicio). La fila pasa a
25
+ * `role="menuitemradio"` con `aria-checked="true"` (o `menuitemcheckbox` con
26
+ * `selectionMode="multiple"`). Used by selection menus (sort/type, columnas). */
25
27
  this.selected = false;
26
- /** Renders a trailing check (size 15) after the label. Pair with `selected`
27
- * to mark the chosen option in a single-select menu. */
28
+ /** La fila pertenece a un menú de selección única: se expone como
29
+ * `role="menuitemradio"` con `aria-checked` true/false aunque NO esté marcada.
30
+ * `aria-checked` sobre `role="menuitem"` es ARIA inválido, y sin este prop una
31
+ * fila no marcada de un menú de selección quedaría como `menuitem` pelado al lado
32
+ * de su hermana `menuitemradio`. Ponerlo en TODAS las filas del grupo. Implícito
33
+ * con `selected` o `leadingCheck` (que reserva el hueco en todas las filas). */
34
+ this.selectable = false;
35
+ /** Tipo de grupo de selección al que pertenece la fila (solo cuenta con
36
+ * `selectable`, `selected` o `leadingCheck`):
37
+ * - `'single'` (default) → `role="menuitemradio"`: una sola marcada (orden, tipo).
38
+ * - `'multiple'` → `role="menuitemcheckbox"`: varias marcadas a la vez (columnas
39
+ * visibles, filtros). Mismo look (peso 600 + check, sin relleno) y el mismo
40
+ * `aria-checked` true/false. Ponerlo en TODAS las filas del grupo. */
41
+ this.selectionMode = 'single';
42
+ /** Legacy/redundante: `selected` ya pinta el check al final y
43
+ * expone `aria-checked`. Solo, sin `selected`, `trailingCheck` dibuja un check
44
+ * DECORATIVO sobre un `role="menuitem"` sin `aria-checked` (el lector de
45
+ * pantalla no se entera de nada): para marcar la opción elegida usar
46
+ * `selected` (+ `selectable` en las filas no marcadas del grupo). Se conserva
47
+ * por compatibilidad; junto con `selected` no agrega un segundo check. */
28
48
  this.trailingCheck = false;
29
49
  /** Reserva un check de 12px AL INICIO de la fila (antes del ícono/label).
30
50
  * A diferencia de `trailingCheck` (que solo se monta si el prop está en
@@ -195,8 +215,21 @@ export class CoMenuItem {
195
215
  // flipped submenu). The panel's own mouseenter cancels this on arrival.
196
216
  this.closeTimer = window.setTimeout(() => { this.submenuOpen = false; }, 260);
197
217
  }
218
+ /** La fila es marcable (pertenece a un grupo de selección, ver `selectable`).
219
+ * Un disparador de submenú nunca lo es. */
220
+ get isCheckable() {
221
+ return !this.hasSubmenu && (this.selectable || this.leadingCheck || this.selected);
222
+ }
223
+ /** Rol ARIA de la fila: `menuitemcheckbox` en un grupo de selección múltiple,
224
+ * `menuitemradio` en uno de selección única, `menuitem` en el resto. */
225
+ get role() {
226
+ if (!this.isCheckable)
227
+ return 'menuitem';
228
+ return this.selectionMode === 'multiple' ? 'menuitemcheckbox' : 'menuitemradio';
229
+ }
198
230
  render() {
199
231
  var _a;
232
+ const isCheckable = this.isCheckable;
200
233
  const row = (h("button", { ref: (el) => (this.rowEl = el), class: {
201
234
  'co-menu-item': true,
202
235
  'co-menu-item--dense': this.dense,
@@ -205,7 +238,7 @@ export class CoMenuItem {
205
238
  'co-menu-item--danger': this.variant === 'danger',
206
239
  'co-menu-item--submenu': this.hasSubmenu,
207
240
  'co-menu-item--submenu-open': this.hasSubmenu && this.submenuOpen,
208
- }, type: "button", role: "menuitem", "aria-haspopup": this.hasSubmenu ? 'menu' : undefined, "aria-expanded": this.hasSubmenu ? (this.submenuOpen ? 'true' : 'false') : undefined, disabled: this.disabled, onClick: this.handleClick, onKeyDown: this.handleKeydown, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, this.leadingCheck && (h("span", { class: "co-menu-item__check co-menu-item__check--leading" }, this.selected && h("co-icon", { name: "check", size: 12 }))), this.icon && (h("span", { class: "co-menu-item__icon" }, h("co-icon", { name: this.icon, size: (_a = this.iconSize) !== null && _a !== void 0 ? _a : 16 }))), h("span", { class: { 'co-menu-item__label': true, 'co-menu-item__label--stacked': !!this.caption } }, h("span", { class: "co-menu-item__label-main" }, this.label, h("slot", { name: "label" })), this.caption && h("span", { class: "co-menu-item__caption" }, this.caption)), this.trailingCheck && (h("span", { class: "co-menu-item__check" }, h("co-icon", { name: "check", size: 15 }))), h("span", { class: "co-menu-item__suffix" }, h("slot", { name: "suffix" }), this.hasSubmenu && h("co-icon", { name: "caret-right", size: 14 }))));
241
+ }, type: "button", role: this.role, "aria-haspopup": this.hasSubmenu ? 'menu' : undefined, "aria-expanded": this.hasSubmenu ? (this.submenuOpen ? 'true' : 'false') : undefined, "aria-checked": isCheckable ? (this.selected ? 'true' : 'false') : undefined, disabled: this.disabled, onClick: this.handleClick, onKeyDown: this.handleKeydown, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, this.leadingCheck && (h("span", { class: "co-menu-item__check co-menu-item__check--leading", "aria-hidden": "true" }, this.selected && h("co-icon", { name: "check", size: 12 }))), this.icon && (h("span", { class: "co-menu-item__icon" }, h("co-icon", { name: this.icon, size: (_a = this.iconSize) !== null && _a !== void 0 ? _a : 16 }))), h("span", { class: { 'co-menu-item__label': true, 'co-menu-item__label--stacked': !!this.caption } }, h("span", { class: "co-menu-item__label-main" }, this.label, h("slot", { name: "label" })), this.caption && h("span", { class: "co-menu-item__caption" }, this.caption)), (this.trailingCheck || (this.selected && !this.leadingCheck)) && (h("span", { class: "co-menu-item__check", "aria-hidden": "true" }, h("co-icon", { name: "check", size: 15 }))), h("span", { class: "co-menu-item__suffix" }, h("slot", { name: "suffix" }), this.hasSubmenu && h("co-icon", { name: "caret-right", size: 14 }))));
209
242
  if (!this.hasSubmenu) {
210
243
  // Leaf — the default slot is unused for leaves; ignore it.
211
244
  return h("div", { class: "co-menu-item__wrap" }, row);
@@ -342,7 +375,7 @@ export class CoMenuItem {
342
375
  "optional": false,
343
376
  "docs": {
344
377
  "tags": [],
345
- "text": "Marks the row as selected \u2014 paints an at-rest gray-100 background. Used by\nsingle-select menus (sort/type)."
378
+ "text": "Marks the row as selected \u2014 sin relleno: peso 600 + un check al final (salvo\nque la fila use `leadingCheck`, que ya lo pinta al inicio). La fila pasa a\n`role=\"menuitemradio\"` con `aria-checked=\"true\"` (o `menuitemcheckbox` con\n`selectionMode=\"multiple\"`). Used by selection menus (sort/type, columnas)."
346
379
  },
347
380
  "getter": false,
348
381
  "setter": false,
@@ -350,6 +383,46 @@ export class CoMenuItem {
350
383
  "attribute": "selected",
351
384
  "defaultValue": "false"
352
385
  },
386
+ "selectable": {
387
+ "type": "boolean",
388
+ "mutable": false,
389
+ "complexType": {
390
+ "original": "boolean",
391
+ "resolved": "boolean",
392
+ "references": {}
393
+ },
394
+ "required": false,
395
+ "optional": false,
396
+ "docs": {
397
+ "tags": [],
398
+ "text": "La fila pertenece a un men\u00FA de selecci\u00F3n \u00FAnica: se expone como\n`role=\"menuitemradio\"` con `aria-checked` true/false aunque NO est\u00E9 marcada.\n`aria-checked` sobre `role=\"menuitem\"` es ARIA inv\u00E1lido, y sin este prop una\nfila no marcada de un men\u00FA de selecci\u00F3n quedar\u00EDa como `menuitem` pelado al lado\nde su hermana `menuitemradio`. Ponerlo en TODAS las filas del grupo. Impl\u00EDcito\ncon `selected` o `leadingCheck` (que reserva el hueco en todas las filas)."
399
+ },
400
+ "getter": false,
401
+ "setter": false,
402
+ "reflect": false,
403
+ "attribute": "selectable",
404
+ "defaultValue": "false"
405
+ },
406
+ "selectionMode": {
407
+ "type": "string",
408
+ "mutable": false,
409
+ "complexType": {
410
+ "original": "'single' | 'multiple'",
411
+ "resolved": "\"multiple\" | \"single\"",
412
+ "references": {}
413
+ },
414
+ "required": false,
415
+ "optional": false,
416
+ "docs": {
417
+ "tags": [],
418
+ "text": "Tipo de grupo de selecci\u00F3n al que pertenece la fila (solo cuenta con\n`selectable`, `selected` o `leadingCheck`):\n- `'single'` (default) \u2192 `role=\"menuitemradio\"`: una sola marcada (orden, tipo).\n- `'multiple'` \u2192 `role=\"menuitemcheckbox\"`: varias marcadas a la vez (columnas\n visibles, filtros). Mismo look (peso 600 + check, sin relleno) y el mismo\n `aria-checked` true/false. Ponerlo en TODAS las filas del grupo."
419
+ },
420
+ "getter": false,
421
+ "setter": false,
422
+ "reflect": false,
423
+ "attribute": "selection-mode",
424
+ "defaultValue": "'single'"
425
+ },
353
426
  "trailingCheck": {
354
427
  "type": "boolean",
355
428
  "mutable": false,
@@ -362,7 +435,7 @@ export class CoMenuItem {
362
435
  "optional": false,
363
436
  "docs": {
364
437
  "tags": [],
365
- "text": "Renders a trailing check (size 15) after the label. Pair with `selected`\nto mark the chosen option in a single-select menu."
438
+ "text": "Legacy/redundante: `selected` ya pinta el check al final y\nexpone `aria-checked`. Solo, sin `selected`, `trailingCheck` dibuja un check\nDECORATIVO sobre un `role=\"menuitem\"` sin `aria-checked` (el lector de\npantalla no se entera de nada): para marcar la opci\u00F3n elegida usar\n`selected` (+ `selectable` en las filas no marcadas del grupo). Se conserva\npor compatibilidad; junto con `selected` no agrega un segundo check."
366
439
  },
367
440
  "getter": false,
368
441
  "setter": false,
@@ -683,6 +683,7 @@ html[data-overlayscrollbars-viewport~=scrollbarHidden] > body::-webkit-scrollbar
683
683
  * @prop --co-option-list-item-font-size: Tamaño del texto de la fila (default 14px).
684
684
  * @prop --co-option-list-active-bg: Fondo de la fila activa (hover o teclado).
685
685
  * @prop --co-option-list-active-ring: Sombra/anillo de la fila activa.
686
+ * @prop --co-option-list-selected-label-weight: Peso del rótulo de la fila seleccionada (default 600).
686
687
  * @prop --co-option-list-label-weight: Peso del label de la fila.
687
688
  * @prop --co-option-list-text-gap: Separación entre el título y la descripción de la fila.
688
689
  * @prop --co-option-list-icon-tile-size: Lado del recuadro del ícono (default 22px).
@@ -873,14 +874,21 @@ html[data-overlayscrollbars-viewport~=scrollbarHidden] > body::-webkit-scrollbar
873
874
  margin-bottom: var(--co-spacing-xxs, 2px);
874
875
  }
875
876
 
877
+ /* Activa (hover o teclado) = gris liviano text-default 6 %, gira con el tema. Antes
878
+ surface-hover (negro 8 %), el mismo gris que el seleccionado: no se distinguían. */
876
879
  .co-option-list__option--active {
877
- background: var(--co-option-list-active-bg, var(--co-semantic-surface-hover, rgba(31, 28, 27, 0.04)));
880
+ background: var(--co-option-list-active-bg, color-mix(in srgb, var(--co-semantic-text-default) 6%, transparent));
878
881
  box-shadow: var(--co-option-list-active-ring, none);
879
882
  }
880
883
 
881
- /* Seleccionado = mismo gris-100 del Figma; el affordance (X/check) distingue. */
882
- .co-option-list__option--selected {
883
- background: var(--co-semantic-surface-hover, rgba(31, 28, 27, 0.04));
884
+ /* Seleccionado = SIN relleno: la marca es el affordance (check/X) + rótulo en 600
885
+ (auditoría de contraste #5 B, 2026-10-05). Con el gris de antes (surface-hover) el hover
886
+ se leía igual que la selección. No se declara ningún background en --selected: así la
887
+ fila seleccionada que además está activa muestra el gris del hover (--active) y en
888
+ reposo queda en el fondo de la fila (--co-option-list-item-bg).
889
+ Peso: `--co-option-list-selected-label-weight` (default 600). */
890
+ .co-option-list__option--selected .co-option-list__label {
891
+ font-weight: var(--co-option-list-selected-label-weight, 600);
884
892
  }
885
893
 
886
894
  .co-option-list__option--disabled {
@@ -770,7 +770,7 @@ export class CoOptionList {
770
770
  'co-option-list__option--lifted': !this.listDragActive && this.dragKey === item._id,
771
771
  'co-option-list__option--drop-before': this.listDragActive && this.overKey === item._id && !this.dropAfter,
772
772
  'co-option-list__option--drop-after': this.listDragActive && this.overKey === item._id && this.dropAfter,
773
- }, key: item._id, id: `co-optlist-${index}`, "data-id": item._id, role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-disabled": item.disabled ? 'true' : 'false', draggable: listDragRow && this.armedKey === item._id, onClick: () => !item.disabled && this.pick(item), onMouseEnter: () => { this.activeIndex = index; }, onDragStart: listDragRow ? (e) => this.handleRowDragStart(e, item._id) : undefined, onDragOver: listDragRow ? (e) => this.handleRowDragOver(e, item._id) : undefined, onDrop: listDragRow ? (e) => this.handleRowDrop(e, item._id) : undefined, onDragEnd: listDragRow ? this.handleRowDragEnd : undefined, onDragLeave: listDragRow ? (e) => this.handleRowDragLeave(e, item._id) : undefined }, (ptrDragRow || listDragRow) && (h("span", { class: "co-option-list__drag-handle", part: "drag-handle", title: "Drag to reorder", onMouseDown: listDragRow ? () => (this.armedKey = item._id) : undefined, onPointerDown: ptrDragRow ? (e) => this.startPointerDrag(e, item._id) : undefined, onClick: (e) => e.stopPropagation() }, h("co-icon", { name: "dots-six-vertical", size: 16 }))), this.renderLeading(item), h("div", { class: "co-option-list__text" }, h("span", { class: "co-option-list__title" }, h("span", { class: "co-option-list__label", style: item.labelColor ? { color: item.labelColor, fontWeight: '600' } : undefined }, this.renderLabelText(item.label)), item.suffix && this.suffixAlign !== 'end' && h("span", { class: "co-option-list__suffix" }, "- ", item.suffix), item.badge && this.renderBadge(item.badge)), item.description && h("span", { class: "co-option-list__desc" }, item.description)), item.suffix && this.suffixAlign === 'end' && h("span", { class: "co-option-list__suffix co-option-list__suffix--end" }, item.suffix), this.pinnable && (h("button", { class: { 'co-option-list__pin': true, 'co-option-list__pin--active': !!item.pinned }, type: "button", tabIndex: -1, "aria-label": item.pinned ? `Unpin ${item.label}` : `Pin ${item.label}`, "aria-pressed": item.pinned ? 'true' : 'false', onClick: (e) => { e.stopPropagation(); this.coPinToggle.emit({ item }); } }, h("co-icon", { name: "push-pin", size: 16, weight: item.pinned ? 'fill' : 'regular' }))), isSelected && this.removableItems && this.multiple && (h("button", { class: "co-option-list__row-action", type: "button", tabIndex: -1, "aria-label": `Remove ${item.label}`, onClick: (e) => { e.stopPropagation(); this.coRemoveItem.emit(item._id); } }, h("co-icon", { name: "x-circle", size: 16, weight: "fill" }))), isSelected && !this.removableItems && this.selectedAffordance === 'deselect' && (h("button", { class: "co-option-list__row-action", type: "button", tabIndex: -1, "aria-label": `Deselect ${item.label}`, onClick: (e) => { e.stopPropagation(); this.deselectItem(item); } }, h("co-icon", { name: "x-circle", size: 16, weight: "fill" }))), isSelected && !this.removableItems && this.selectedAffordance === 'check' && (h("co-icon", { name: "check", size: 16, class: "co-option-list__check" }))));
773
+ }, key: item._id, id: `co-optlist-${index}`, "data-id": item._id, role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-disabled": item.disabled ? 'true' : 'false', draggable: listDragRow && this.armedKey === item._id, onClick: () => !item.disabled && this.pick(item), onMouseEnter: () => { this.activeIndex = index; }, onDragStart: listDragRow ? (e) => this.handleRowDragStart(e, item._id) : undefined, onDragOver: listDragRow ? (e) => this.handleRowDragOver(e, item._id) : undefined, onDrop: listDragRow ? (e) => this.handleRowDrop(e, item._id) : undefined, onDragEnd: listDragRow ? this.handleRowDragEnd : undefined, onDragLeave: listDragRow ? (e) => this.handleRowDragLeave(e, item._id) : undefined }, (ptrDragRow || listDragRow) && (h("span", { class: "co-option-list__drag-handle", part: "drag-handle", title: "Drag to reorder", onMouseDown: listDragRow ? () => (this.armedKey = item._id) : undefined, onPointerDown: ptrDragRow ? (e) => this.startPointerDrag(e, item._id) : undefined, onClick: (e) => e.stopPropagation() }, h("co-icon", { name: "dots-six-vertical", size: 16 }))), this.renderLeading(item), h("div", { class: "co-option-list__text" }, h("span", { class: "co-option-list__title" }, h("span", { class: "co-option-list__label", style: item.labelColor ? { color: item.labelColor, fontWeight: '600' } : undefined }, this.renderLabelText(item.label)), item.suffix && this.suffixAlign !== 'end' && h("span", { class: "co-option-list__suffix" }, "- ", item.suffix), item.badge && this.renderBadge(item.badge)), item.description && h("span", { class: "co-option-list__desc" }, item.description)), item.suffix && this.suffixAlign === 'end' && h("span", { class: "co-option-list__suffix co-option-list__suffix--end" }, item.suffix), this.pinnable && (h("button", { class: { 'co-option-list__pin': true, 'co-option-list__pin--active': !!item.pinned }, type: "button", tabIndex: -1, "aria-label": item.pinned ? `Unpin ${item.label}` : `Pin ${item.label}`, "aria-pressed": item.pinned ? 'true' : 'false', onClick: (e) => { e.stopPropagation(); this.coPinToggle.emit({ item }); } }, h("co-icon", { name: "push-pin", size: 16, weight: item.pinned ? 'fill' : 'regular' }))), isSelected && this.removableItems && this.multiple && (h("button", { class: "co-option-list__row-action", type: "button", tabIndex: -1, "aria-label": `Remove ${item.label}`, onClick: (e) => { e.stopPropagation(); this.coRemoveItem.emit(item._id); } }, h("co-icon", { name: "x-circle", size: 16, weight: "fill" }))), isSelected && !this.removableItems && this.selectedAffordance === 'deselect' && (h("button", { class: "co-option-list__row-action", type: "button", tabIndex: -1, "aria-label": `Deselect ${item.label}`, onClick: (e) => { e.stopPropagation(); this.deselectItem(item); } }, h("co-icon", { name: "x-circle", size: 16, weight: "fill" }))), isSelected && !((this.removableItems && this.multiple) || (!this.removableItems && this.selectedAffordance === 'deselect')) && (h("co-icon", { name: "check", size: 16, class: "co-option-list__check", "aria-hidden": "true" }))));
774
774
  }
775
775
  renderVirtual(items, selectedIds) {
776
776
  const { totalHeight, startIdx, endIdx, offsetY } = virtualSlice(this.scrollTop, items.length);
@@ -781,11 +781,11 @@ export class CoOptionList {
781
781
  const selectedIds = this.selectedIds;
782
782
  const { hasMore, remaining } = deriveMore(this.parsedItems.length, this.total, this.hasMore);
783
783
  const showClear = !!this.clearOptionLabel && selectedIds.length > 0;
784
- return (h("div", { key: 'c73f8d143c1f655f4d9145ef0a2a4d3219a43e49', class: "co-option-list", onKeyDown: this.onRootKeyDown }, this.searchable && (h("div", { key: 'bd5dfa8848da20fd66293acdd87568ca0e2fbebc', class: "co-option-list__search", part: "search" }, h("co-icon", { key: '0c5aeacb9fbde646862a6359f2c58a75f31a6100', name: "magnifying-glass", size: 16 }), h("input", { key: '0a573789feff4b3cd31610ee720ddfaa2b859ea4', class: "co-option-list__search-input", type: "text", placeholder: this.searchPlaceholder, value: this.term, onInput: this.onSearchInput, ref: (el) => (this.searchInputEl = el), role: "combobox", "aria-expanded": "true", "aria-autocomplete": "list" }))), h("slot", { key: '650e79a9b2ba218f7fcd324335505fda29a87b71', name: "header" }), h("div", { key: '1f2baa6b0b6b728cd0eeab5ae555847d397351ac', class: "co-option-list__options", part: "options", role: "listbox", "aria-multiselectable": this.multiple ? 'true' : 'false', ref: (el) => (this.optionsEl = el), onScroll: this.onNativeScroll }, h("div", { key: '33f7230c30c06ef31ac83fb5febba040f0d88d6e', class: "co-option-list__inner" }, showClear && (h("button", { key: '9934486c64862d94ee8ed6e3af603710edd2a5c6', class: "co-option-list__clear-row", type: "button", onClick: () => this.coClearSelection.emit() }, h("co-icon", { key: 'f0abd016e20d238345c0c2d40436220631a1403a', name: "x-circle", size: 14 }), h("span", { key: '9090f327d77767db03792e13bd4bfcdd4abcffcd' }, this.clearOptionLabel))), this.loading && items.length === 0 && (h("div", { key: '25b13f063b888d6d95b24a2741e1ae3e070d60ab', class: "co-option-list__loading" }, h("co-loader", { key: 'dc56d924da21b4029fc81b454672a2ded44f14ef', size: "sm" }))), !this.loading && items.length === 0 && (h("div", { key: '492e6902e2849a83ac0529fe922aa43814db2c40', class: "co-option-list__empty" }, h("co-icon", { key: '2c9d91ddaad0b52e0dbff654871ce147e0617f59', name: "magnifying-glass", size: 20 }), h("span", { key: '76eacb323225035d650f1ebb6e17507035d02ac4' }, this.emptyMessage))), items.length > 0 && this.virtual
784
+ return (h("div", { key: '56e2db1d58bebbbd37d10e6813be9034ac575323', class: "co-option-list", onKeyDown: this.onRootKeyDown }, this.searchable && (h("div", { key: '0408ef8880e6be71c8a3fc172db6ee65dd6689a0', class: "co-option-list__search", part: "search" }, h("co-icon", { key: '0300cc9e1d430da5b50a5ffa4e9ece94f43b104c', name: "magnifying-glass", size: 16 }), h("input", { key: 'f540c8fcc9eb17167133f8ffffc5e1da5a20d1dc', class: "co-option-list__search-input", type: "text", placeholder: this.searchPlaceholder, value: this.term, onInput: this.onSearchInput, ref: (el) => (this.searchInputEl = el), role: "combobox", "aria-expanded": "true", "aria-autocomplete": "list" }))), h("slot", { key: '4da1c79aab9efa870239dc1ea58d286935d7fda4', name: "header" }), h("div", { key: 'aaed96ccda574661e127abe5deee921468c42a47', class: "co-option-list__options", part: "options", role: "listbox", "aria-multiselectable": this.multiple ? 'true' : 'false', ref: (el) => (this.optionsEl = el), onScroll: this.onNativeScroll }, h("div", { key: 'ea94def9450c37a09c639eea32f8e1ec829dbcaf', class: "co-option-list__inner" }, showClear && (h("button", { key: '32102669f7b70d56d1831c9543c1a50799b1cf6a', class: "co-option-list__clear-row", type: "button", onClick: () => this.coClearSelection.emit() }, h("co-icon", { key: 'c09f3fa1418494971dc1d80207bcd595b4a0fe38', name: "x-circle", size: 14 }), h("span", { key: 'd6f4afa32a32e477a5131039da5eb3f7eb0d7018' }, this.clearOptionLabel))), this.loading && items.length === 0 && (h("div", { key: '1abb47c6560856992103b8fd5962ed2ce57c356a', class: "co-option-list__loading" }, h("co-loader", { key: 'e2a562325238349ad9e493c276f4c099b1e06ec0', size: "sm" }))), !this.loading && items.length === 0 && (h("div", { key: 'fa3cad402047a7ea7d919abca0f6808b2eb2797a', class: "co-option-list__empty" }, h("co-icon", { key: '65d553e95e4b4a7a71c7675447892871692b4e8a', name: "magnifying-glass", size: 20 }), h("span", { key: '591a2bcf9dc6148c5f22a9aa0da1fa3ba647b33b' }, this.emptyMessage))), items.length > 0 && this.virtual
785
785
  ? this.renderVirtual(items, selectedIds)
786
786
  : buildRows(items).map((row) => row.kind === 'header'
787
787
  ? h("div", { class: "co-option-list__group", role: "presentation" }, row.label)
788
- : this.renderRow(row.item, row.index, selectedIds)), this.loading && items.length > 0 && (h("div", { key: 'e86f2a2157e84d9e9a414f6bbf3d20235bc75829', class: "co-option-list__loading-more" }, h("co-loader", { key: 'de4c472413852c7fc3e4c6fb088632c79ce518d6', size: "sm" }))), !this.loading && hasMore && remaining > 0 && (h("div", { key: '12616fbfb51d2c656937e22907d5152f3f7ea210', class: "co-option-list__more" }, remaining, " more results")))), h("slot", { key: 'd73683805a28e15b2a126867fd7947869ee649f6', name: "footer" })));
788
+ : this.renderRow(row.item, row.index, selectedIds)), this.loading && items.length > 0 && (h("div", { key: '8d8b91d2ef9dc1fe9b97873da384080d5721617c', class: "co-option-list__loading-more" }, h("co-loader", { key: '134bb46ec2f27500f8ef6c13613bd3ab3c15c1f2', size: "sm" }))), !this.loading && hasMore && remaining > 0 && (h("div", { key: 'e850a68ccfc2f4033edaa41257728e141f55d556', class: "co-option-list__more" }, remaining, " more results")))), h("slot", { key: '7c838d68ec977e650922c59cd8314ee530e15ad4', name: "footer" })));
789
789
  }
790
790
  static get is() { return "co-option-list"; }
791
791
  static get encapsulation() { return "shadow"; }
@@ -213,13 +213,22 @@
213
213
  text-align: left;
214
214
  }
215
215
 
216
+ /* Opción = patrón #5 B de la auditoría de contraste (2026-10-05), el mismo de co-option-list:
217
+ hover = gris liviano text-default 6 % (gira con el tema); seleccionada = SIN relleno, rótulo
218
+ en 600 + check decorativo al final (aria-hidden; el estado lo expone aria-selected de la
219
+ fila). Antes la seleccionada pintaba un tinte y el hover surface-hover (8 %): el hover pesaba
220
+ más que la selección y no se distinguían. */
216
221
  .co-phone-field__option:hover {
217
- background: var(--co-semantic-surface-hover);
222
+ background: color-mix(in srgb, var(--co-semantic-text-default) 6%, transparent);
218
223
  }
219
224
 
220
225
  .co-phone-field__option--selected {
221
- background: color-mix(in srgb, var(--co-semantic-border-focus) 8%, transparent);
222
- font-weight: 500;
226
+ font-weight: 600;
227
+ }
228
+
229
+ .co-phone-field__option-check {
230
+ flex-shrink: 0;
231
+ color: var(--co-semantic-text-default);
223
232
  }
224
233
 
225
234
  .co-phone-field__option-flag {
@@ -175,7 +175,7 @@ export class CoPhoneField {
175
175
  render() {
176
176
  const entry = this.selectedEntry;
177
177
  const statusClass = this.status !== 'default' ? `co-phone-field--${this.status}` : '';
178
- return (h("div", { key: '8c960a1db186c84921d1062f3a81dac55d36be90', class: `co-phone-field co-phone-field--${this.size} ${statusClass} ${this.disabled ? 'co-phone-field--disabled' : ''}` }, this.label && (h("label", { key: 'c19628c6057b6314a7dca1aeac5c8e201d2c20c0', class: "co-phone-field__label" }, this.label, h(RequiredMark, { key: 'e070c5a69e9064d61ca6fb6fd1d5fca6944f8a36', required: this.required }))), h("div", { key: '69e52a3489ddc693271a2eff7b63e7a3f6ffee9b', class: "co-phone-field__container" }, h("button", { key: '1b0998e28fb0f0aa0ab64443adceea96355483e5', type: "button", class: "co-phone-field__selector", disabled: this.disabled, onClick: () => this.handleToggleDropdown(), "aria-expanded": String(this.isOpen), "aria-haspopup": "listbox", "aria-label": entry ? `${this.strings.selectCountry}: ${entry.name} ${entry.dialCode}` : this.strings.selectCountry }, entry ? (h("img", { class: "co-phone-field__flag", src: `https://flagcdn.com/w40/${entry.iso2.toLowerCase()}.png`, alt: "", decoding: "async", onError: this.hideBrokenFlag })) : (h("co-icon", { name: "phone", size: 16 })), h("span", { key: '5f2f173697b6e659b729547eb44372efbdebf0de', class: "co-phone-field__dial-code" }, entry ? entry.dialCode : ''), h("span", { key: 'd0ad9d09fd06c9ab4385b6b10fd335429d2b2782', class: "co-phone-field__chevron" }, h("co-icon", { key: '6ef136322e4fcada10e924d25beff2ff3699a0d9', name: "caret-down", size: 14 }))), h("input", { key: 'b5d77691bbd9638a3868e82a243c1106e3167384', class: "co-phone-field__input", type: "tel", placeholder: this.placeholder, value: this.numberPart, disabled: this.disabled, onInput: (e) => this.handleNumberInput(e) })), this.isOpen && (h("div", { key: 'c9310ebc76fb76f4ad7b3f460199131e89238129', class: "co-phone-field__dropdown", role: "listbox" }, h("div", { key: '2b103381c88331f86dd0cd941b5d7dc102d60cfa', class: "co-phone-field__search" }, h("input", { key: '3152d3842b4db1f2f75b36c8c16933a115af75b5', class: "co-phone-field__search-input", type: "text", placeholder: this.strings.searchPlaceholder, value: this.searchQuery, onInput: (e) => this.handleSearchInput(e), autoFocus: true })), h("div", { key: '0b5fdd035243c03563e956b7c6e8b189e3fac976', class: "co-phone-field__options" }, this.filteredCountries.map((d) => (h("button", { type: "button", key: d.iso2, class: `co-phone-field__option ${d.iso2 === this.selectedIso2 ? 'co-phone-field__option--selected' : ''}`, role: "option", "aria-selected": d.iso2 === this.selectedIso2 ? 'true' : 'false', onClick: () => this.handleCountrySelect(d) }, h("img", { class: "co-phone-field__option-flag", src: `https://flagcdn.com/w40/${d.iso2.toLowerCase()}.png`, alt: "", loading: "lazy", decoding: "async", onError: this.hideBrokenFlag }), h("span", { class: "co-phone-field__option-name" }, this.renderName(d.name)), h("span", { class: "co-phone-field__option-code" }, d.dialCode))))))), this.helperText && (h("div", { key: '49841fcec083d7d619c699cdc5a236dcdf5cb214', class: "co-phone-field__helper" }, this.statusIcon && (h("co-icon", { key: 'c0e2d6641adcd3bea675e1b78a6d982f75ef56df', name: this.statusIcon, size: 14, weight: "fill", class: "co-phone-field__helper-icon" })), h("span", { key: '305562aeba6e0169b0f1b23f504c5f686413cb79', class: "co-phone-field__helper-text" }, this.helperText)))));
178
+ return (h("div", { key: '8c960a1db186c84921d1062f3a81dac55d36be90', class: `co-phone-field co-phone-field--${this.size} ${statusClass} ${this.disabled ? 'co-phone-field--disabled' : ''}` }, this.label && (h("label", { key: 'c19628c6057b6314a7dca1aeac5c8e201d2c20c0', class: "co-phone-field__label" }, this.label, h(RequiredMark, { key: 'e070c5a69e9064d61ca6fb6fd1d5fca6944f8a36', required: this.required }))), h("div", { key: '69e52a3489ddc693271a2eff7b63e7a3f6ffee9b', class: "co-phone-field__container" }, h("button", { key: '1b0998e28fb0f0aa0ab64443adceea96355483e5', type: "button", class: "co-phone-field__selector", disabled: this.disabled, onClick: () => this.handleToggleDropdown(), "aria-expanded": String(this.isOpen), "aria-haspopup": "listbox", "aria-label": entry ? `${this.strings.selectCountry}: ${entry.name} ${entry.dialCode}` : this.strings.selectCountry }, entry ? (h("img", { class: "co-phone-field__flag", src: `https://flagcdn.com/w40/${entry.iso2.toLowerCase()}.png`, alt: "", decoding: "async", onError: this.hideBrokenFlag })) : (h("co-icon", { name: "phone", size: 16 })), h("span", { key: '5f2f173697b6e659b729547eb44372efbdebf0de', class: "co-phone-field__dial-code" }, entry ? entry.dialCode : ''), h("span", { key: 'd0ad9d09fd06c9ab4385b6b10fd335429d2b2782', class: "co-phone-field__chevron" }, h("co-icon", { key: '6ef136322e4fcada10e924d25beff2ff3699a0d9', name: "caret-down", size: 14 }))), h("input", { key: 'b5d77691bbd9638a3868e82a243c1106e3167384', class: "co-phone-field__input", type: "tel", placeholder: this.placeholder, value: this.numberPart, disabled: this.disabled, onInput: (e) => this.handleNumberInput(e) })), this.isOpen && (h("div", { key: 'c9310ebc76fb76f4ad7b3f460199131e89238129', class: "co-phone-field__dropdown", role: "listbox" }, h("div", { key: '2b103381c88331f86dd0cd941b5d7dc102d60cfa', class: "co-phone-field__search" }, h("input", { key: '3152d3842b4db1f2f75b36c8c16933a115af75b5', class: "co-phone-field__search-input", type: "text", placeholder: this.strings.searchPlaceholder, value: this.searchQuery, onInput: (e) => this.handleSearchInput(e), autoFocus: true })), h("div", { key: '0b5fdd035243c03563e956b7c6e8b189e3fac976', class: "co-phone-field__options" }, this.filteredCountries.map((d) => (h("button", { type: "button", key: d.iso2, class: `co-phone-field__option ${d.iso2 === this.selectedIso2 ? 'co-phone-field__option--selected' : ''}`, role: "option", "aria-selected": d.iso2 === this.selectedIso2 ? 'true' : 'false', onClick: () => this.handleCountrySelect(d) }, h("img", { class: "co-phone-field__option-flag", src: `https://flagcdn.com/w40/${d.iso2.toLowerCase()}.png`, alt: "", loading: "lazy", decoding: "async", onError: this.hideBrokenFlag }), h("span", { class: "co-phone-field__option-name" }, this.renderName(d.name)), h("span", { class: "co-phone-field__option-code" }, d.dialCode), d.iso2 === this.selectedIso2 && (h("co-icon", { name: "check", size: 16, class: "co-phone-field__option-check", "aria-hidden": "true" })))))))), this.helperText && (h("div", { key: '686669982abbcb8f1c2c5d045a3a04546a0a0e46', class: "co-phone-field__helper" }, this.statusIcon && (h("co-icon", { key: '030b2538e516b2a6aaa583e4581638b3772f7a8a', name: this.statusIcon, size: 14, weight: "fill", class: "co-phone-field__helper-icon" })), h("span", { key: '649c30fdf2f2b6a1cd43687b972bd727eba6bcc9', class: "co-phone-field__helper-text" }, this.helperText)))));
179
179
  }
180
180
  static get is() { return "co-phone-field"; }
181
181
  static get encapsulation() { return "shadow"; }
@@ -476,7 +476,7 @@ export class CoPopover {
476
476
  "references": {
477
477
  "PopoverPlacement": {
478
478
  "location": "local",
479
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-popover/co-popover.tsx",
479
+ "path": "/Users/agox/worktrees/cobalt-release-a11y/packages/core/src/components/co-popover/co-popover.tsx",
480
480
  "id": "src/components/co-popover/co-popover.tsx::PopoverPlacement"
481
481
  }
482
482
  }
@@ -4,7 +4,9 @@
4
4
 
5
5
  .co-progress-circle {
6
6
  --_color: var(--co-semantic-status-info, #2563eb);
7
- --_track: var(--co-color-opacity-negro-8, rgba(0, 0, 0, 0.08));
7
+ /* surface-hover gira con el tema: en claro es el mismo negro 8 % (sin cambio visual); la
8
+ primitiva negro-8 se perdía en oscuro (1,01:1 → 1,18:1). */
9
+ --_track: var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.08));
8
10
 
9
11
  position: relative;
10
12
  display: inline-flex;
@@ -52,6 +52,13 @@
52
52
  overflow: hidden;
53
53
  }
54
54
 
55
+ /* Foco por teclado (H1, auditoría a11y 2026-10-05): trazo border-focus (tinta sólida desde
56
+ #2D/#3D), no el halo focus-ring. box-shadow y no outline: el propio overflow:hidden no
57
+ recorta la sombra del elemento. Molde co-checkbox. */
58
+ .co-radio:focus-visible {
59
+ box-shadow: 0 0 0 2px var(--co-semantic-border-focus);
60
+ }
61
+
55
62
  /* ─── SIZES ─────────────────────────────────────────────────── */
56
63
  .co-radio--small {
57
64
  width: 16px;
@@ -64,8 +71,10 @@
64
71
  }
65
72
 
66
73
  /* ─── UNCHECKED ─────────────────────────────────────────────── */
74
+ /* #3D (auditoría de contraste 2026-10-05): contorno border-field, el mismo de los campos
75
+ (≥3:1). border-default (16%) quedaba a ~1,3:1. */
67
76
  .co-radio:not(.co-radio--checked) {
68
- border-color: var(--co-semantic-border-default);
77
+ border-color: var(--co-semantic-border-field);
69
78
  }
70
79
 
71
80
  /* ─── CHECKED ───────────────────────────────────────────────── */
@@ -224,7 +224,7 @@ export class CoRadioGroup {
224
224
  "references": {
225
225
  "RadioOption": {
226
226
  "location": "local",
227
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-radio-group/co-radio-group.tsx",
227
+ "path": "/Users/agox/worktrees/cobalt-release-a11y/packages/core/src/components/co-radio-group/co-radio-group.tsx",
228
228
  "id": "src/components/co-radio-group/co-radio-group.tsx::RadioOption"
229
229
  }
230
230
  }
@@ -39,7 +39,9 @@
39
39
  border: none;
40
40
  background: transparent;
41
41
  cursor: pointer;
42
- color: var(--co-semantic-border-subtle);
42
+ /* Estrella vacía = indicador no textual (WCAG 1.4.11): border-subtle (8 %) daba 1,17:1 contra
43
+ la página. text-muted: 5,33 claro / 5,58 oscuro. */
44
+ color: var(--co-semantic-text-muted);
43
45
  transition: color var(--co-motion-duration-fast) var(--co-motion-ease-out), transform var(--co-motion-duration-fast) var(--co-motion-ease-out);
44
46
  }
45
47
 
@@ -1356,7 +1356,7 @@ export class CoRefField {
1356
1356
  "references": {
1357
1357
  "RefFieldOption": {
1358
1358
  "location": "local",
1359
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1359
+ "path": "/Users/agox/worktrees/cobalt-release-a11y/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1360
1360
  "id": "src/components/co-ref-field/co-ref-field.tsx::RefFieldOption"
1361
1361
  }
1362
1362
  }
@@ -1497,7 +1497,7 @@ export class CoRefField {
1497
1497
  "references": {
1498
1498
  "RefFieldOption": {
1499
1499
  "location": "local",
1500
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1500
+ "path": "/Users/agox/worktrees/cobalt-release-a11y/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1501
1501
  "id": "src/components/co-ref-field/co-ref-field.tsx::RefFieldOption"
1502
1502
  }
1503
1503
  }
@@ -1518,7 +1518,7 @@ export class CoRefField {
1518
1518
  "references": {
1519
1519
  "RefFieldOption": {
1520
1520
  "location": "local",
1521
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1521
+ "path": "/Users/agox/worktrees/cobalt-release-a11y/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1522
1522
  "id": "src/components/co-ref-field/co-ref-field.tsx::RefFieldOption"
1523
1523
  }
1524
1524
  }
@@ -1557,7 +1557,7 @@ export class CoRefField {
1557
1557
  },
1558
1558
  "RefFieldOption": {
1559
1559
  "location": "local",
1560
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1560
+ "path": "/Users/agox/worktrees/cobalt-release-a11y/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1561
1561
  "id": "src/components/co-ref-field/co-ref-field.tsx::RefFieldOption"
1562
1562
  }
1563
1563
  },
@@ -160,7 +160,7 @@ export class CoSegmentedBar {
160
160
  "references": {
161
161
  "CoSegment": {
162
162
  "location": "local",
163
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-segmented-bar/co-segmented-bar.tsx",
163
+ "path": "/Users/agox/worktrees/cobalt-release-a11y/packages/core/src/components/co-segmented-bar/co-segmented-bar.tsx",
164
164
  "id": "src/components/co-segmented-bar/co-segmented-bar.tsx::CoSegment"
165
165
  }
166
166
  }
@@ -848,7 +848,7 @@ export class CoSelect {
848
848
  "references": {
849
849
  "SelectOption": {
850
850
  "location": "local",
851
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-select/co-select.tsx",
851
+ "path": "/Users/agox/worktrees/cobalt-release-a11y/packages/core/src/components/co-select/co-select.tsx",
852
852
  "id": "src/components/co-select/co-select.tsx::SelectOption"
853
853
  }
854
854
  }
@@ -536,7 +536,7 @@ export class CoSidebarNav {
536
536
  "references": {
537
537
  "NavigateDetail": {
538
538
  "location": "local",
539
- "path": "/Users/agox/Documents/Prolibu/prolibu-cobalt/packages/core/src/components/co-sidebar-nav/co-sidebar-nav.tsx",
539
+ "path": "/Users/agox/worktrees/cobalt-release-a11y/packages/core/src/components/co-sidebar-nav/co-sidebar-nav.tsx",
540
540
  "id": "src/components/co-sidebar-nav/co-sidebar-nav.tsx::NavigateDetail"
541
541
  }
542
542
  }
@@ -5,11 +5,14 @@
5
5
  .co-skeleton {
6
6
  height: 1em;
7
7
  border-radius: var(--co-border-radius-xs);
8
+ /* Base surface-muted (gray-200 claro / gray-650 oscuro): la de antes partía de
9
+ surface-secondary (= el fondo de la página) y la barra en reposo era invisible
10
+ (<=1,17:1). El brillo del sweep es la mezcla 50 % con surface-page. */
8
11
  background: linear-gradient(
9
12
  90deg,
10
- var(--co-semantic-surface-secondary) 0%,
11
- var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.04)) 50%,
12
- var(--co-semantic-surface-secondary) 100%
13
+ var(--co-semantic-surface-muted) 0%,
14
+ color-mix(in srgb, var(--co-semantic-surface-muted), var(--co-semantic-surface-page) 50%) 50%,
15
+ var(--co-semantic-surface-muted) 100%
13
16
  );
14
17
  background-size: 200% 100%;
15
18
  animation: co-skeleton-sweep 1.2s ease-in-out infinite;
@@ -96,7 +96,13 @@
96
96
  .co-slider__track {
97
97
  width: 100%;
98
98
  height: var(--co-slider-track-thickness, 4px);
99
- background: var(--co-semantic-border-subtle);
99
+ /* Riel sin llenar = indicador no textual (WCAG 1.4.11): border-subtle (8 %) daba 1,17:1
100
+ contra la página. control-track-off (gray-500, la pista apagada de co-switch): 3,54 claro /
101
+ 5,58 oscuro contra la página; el relleno queda a 4,78 (claro) / 3,54 (oscuro) del riel.
102
+ Compromiso aceptado: los rellenos de ESTADO (error/success/warning) quedan a ~1,6-1,9 del riel
103
+ gris; ahí el valor lo lleva el pulgar (mismo color, contra la página) y el estado, el texto de
104
+ ayuda. En suite-v2 solo se usa `error`, transitorio, en validación (FieldSlider). */
105
+ background: var(--co-semantic-control-track-off);
100
106
  border-radius: var(--co-border-radius-full);
101
107
  overflow: hidden;
102
108
  }
@@ -112,6 +118,11 @@
112
118
  background: var(--co-semantic-text-disabled);
113
119
  }
114
120
 
121
+ /* Deshabilitado conserva el riel tenue de siempre (exento de 1.4.11). */
122
+ .co-slider--disabled .co-slider__track {
123
+ background: var(--co-semantic-border-subtle);
124
+ }
125
+
115
126
  .co-slider--error .co-slider__fill { background: var(--co-semantic-status-error); }
116
127
  .co-slider--success .co-slider__fill { background: var(--co-semantic-status-success); }
117
128
  .co-slider--warning .co-slider__fill { background: var(--co-color-status-review); }
@@ -267,6 +278,15 @@
267
278
  transition: none;
268
279
  }
269
280
 
281
+ /* Foco de teclado (WCAG 2.4.7). El nodo enfocable es el `<input type="range">` oculto, que va
282
+ DESPUÉS del riel en el DOM: un `~` no alcanza al thumb, así que se sube por `:has()` desde la
283
+ raíz. Anillo de la casa: separador surface-page + trazo border-focus (3,29 claro / 5,33
284
+ oscuro). Va DESPUÉS de `--dragging` y pesa (0,3,0): el foco por teclado se ve aunque el
285
+ arrastre siga marcado. `:focus-visible`, nunca `:focus` pelado: el click no lo prende. */
286
+ .co-slider:has(.co-slider__native:focus-visible) .co-slider__thumb {
287
+ box-shadow: 0 0 0 2px var(--co-semantic-surface-page), 0 0 0 4px var(--co-semantic-border-focus);
288
+ }
289
+
270
290
  .co-slider--disabled .co-slider__thumb {
271
291
  background: var(--co-semantic-text-disabled);
272
292
  }