@prolibu-suite/cobalt-core 0.9.5 → 0.10.0

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 (611) hide show
  1. package/custom-elements.json +750 -80
  2. package/dist/cjs/co-accordion.cjs.entry.js +1 -1
  3. package/dist/cjs/co-action-bar.cjs.entry.js +1 -1
  4. package/dist/cjs/co-app-shell.cjs.entry.js +4 -4
  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_2.cjs.entry.js +49 -17
  9. package/dist/cjs/co-badge.cjs.entry.js +11 -3
  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 +2 -2
  15. package/dist/cjs/co-calendar-month_2.cjs.entry.js +55 -20
  16. package/dist/cjs/co-calendar_3.cjs.entry.js +27 -15
  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 +6 -6
  22. package/dist/cjs/co-chip_2.cjs.entry.js +8 -5
  23. package/dist/cjs/co-color-picker.cjs.entry.js +1048 -27
  24. package/dist/cjs/co-column-picker.cjs.entry.js +3 -3
  25. package/dist/cjs/co-combobox.cjs.entry.js +2 -2
  26. package/dist/cjs/co-command-search.cjs.entry.js +1 -1
  27. package/dist/cjs/co-data-table-pagination.cjs.entry.js +5 -5
  28. package/dist/cjs/co-data-table.cjs.entry.js +1 -1
  29. package/dist/cjs/co-date-picker.cjs.entry.js +3 -3
  30. package/dist/cjs/co-date-range-picker.cjs.entry.js +3 -3
  31. package/dist/cjs/co-date-range.cjs.entry.js +2 -2
  32. package/dist/cjs/co-date-time-picker.cjs.entry.js +101 -130
  33. package/dist/cjs/co-drive-card.cjs.entry.js +2 -2
  34. package/dist/cjs/co-drop-zone.cjs.entry.js +2 -2
  35. package/dist/cjs/co-emoji-picker.cjs.entry.js +4 -4
  36. package/dist/cjs/co-empty-state.cjs.entry.js +4 -4
  37. package/dist/cjs/co-event-calendar.cjs.entry.js +4 -4
  38. package/dist/cjs/co-event-popover.cjs.entry.js +3 -3
  39. package/dist/cjs/co-fab.cjs.entry.js +3 -3
  40. package/dist/cjs/co-file-field.cjs.entry.js +102 -106
  41. package/dist/cjs/co-file-type-tile.cjs.entry.js +3 -3
  42. package/dist/cjs/co-helper-text.cjs.entry.js +3 -3
  43. package/dist/cjs/co-icon-button.cjs.entry.js +6 -6
  44. package/dist/cjs/co-icon.cjs.entry.js +3 -3
  45. package/dist/cjs/co-input.cjs.entry.js +26 -4
  46. package/dist/cjs/co-json-field.cjs.entry.js +5 -5
  47. package/dist/cjs/co-lightbox.cjs.entry.js +204 -21
  48. package/dist/cjs/co-list-footer.cjs.entry.js +2 -2
  49. package/dist/cjs/co-list-item.cjs.entry.js +5 -5
  50. package/dist/cjs/co-loader.cjs.entry.js +1 -1
  51. package/dist/cjs/co-media-thumb.cjs.entry.js +3 -3
  52. package/dist/cjs/co-menu-divider.cjs.entry.js +2 -2
  53. package/dist/cjs/co-menu-item.cjs.entry.js +84 -3
  54. package/dist/cjs/co-menu.cjs.entry.js +2 -2
  55. package/dist/cjs/co-modal.cjs.entry.js +6 -4
  56. package/dist/cjs/co-navbar.cjs.entry.js +4 -4
  57. package/dist/cjs/co-number-field.cjs.entry.js +272 -9
  58. package/dist/cjs/co-overlay.cjs.entry.js +6 -4
  59. package/dist/cjs/co-page-header.cjs.entry.js +2 -2
  60. package/dist/cjs/co-phone-field.cjs.entry.js +3 -3
  61. package/dist/cjs/co-popover.cjs.entry.js +58 -21
  62. package/dist/cjs/co-progress-bar.cjs.entry.js +3 -3
  63. package/dist/cjs/co-progress-circle.cjs.entry.js +3 -3
  64. package/dist/cjs/co-provider-logo_2.cjs.entry.js +47 -3
  65. package/dist/cjs/co-radio-group.cjs.entry.js +1 -1
  66. package/dist/cjs/co-radio.cjs.entry.js +4 -4
  67. package/dist/cjs/co-rating.cjs.entry.js +4 -4
  68. package/dist/cjs/co-ref-field.cjs.entry.js +4 -4
  69. package/dist/cjs/co-rich-text-editor.cjs.entry.js +11 -8
  70. package/dist/cjs/co-rich-text-toolbar.cjs.entry.js +7 -3
  71. package/dist/cjs/co-rich-text-viewer.cjs.entry.js +4 -3
  72. package/dist/cjs/co-row.cjs.entry.js +3 -3
  73. package/dist/cjs/co-segmented-bar.cjs.entry.js +1 -1
  74. package/dist/cjs/co-select.cjs.entry.js +2 -2
  75. package/dist/cjs/co-separator.cjs.entry.js +2 -2
  76. package/dist/cjs/co-sidebar-nav.cjs.entry.js +2 -2
  77. package/dist/cjs/co-sidebar.cjs.entry.js +3 -3
  78. package/dist/cjs/co-slider.cjs.entry.js +3 -3
  79. package/dist/cjs/co-switch.cjs.entry.js +6 -6
  80. package/dist/cjs/co-tab-group.cjs.entry.js +3 -3
  81. package/dist/cjs/co-tab.cjs.entry.js +3 -3
  82. package/dist/cjs/co-tags-field.cjs.entry.js +8 -8
  83. package/dist/cjs/co-textarea.cjs.entry.js +6 -6
  84. package/dist/cjs/co-time-field.cjs.entry.js +325 -0
  85. package/dist/cjs/co-toast.cjs.entry.js +2 -2
  86. package/dist/cjs/co-toggle-button-group.cjs.entry.js +4 -4
  87. package/dist/cjs/co-toggle-button.cjs.entry.js +4 -4
  88. package/dist/cjs/co-transfer-list.cjs.entry.js +1 -1
  89. package/dist/cjs/co-video.cjs.entry.js +32 -7
  90. package/dist/cjs/cobalt.cjs.js +2 -2
  91. package/dist/cjs/color-CML2Cfdh.js +142 -0
  92. package/dist/cjs/{dateI18n-wblvKRq_.js → dateI18n-BK2qHqoC.js} +36 -0
  93. package/dist/cjs/{fieldChip-BLzo9MEV.js → fieldChip-B6YIGU1V.js} +1 -1
  94. package/dist/cjs/fileI18n-6sdbKvo6.js +88 -0
  95. package/dist/cjs/{index-DFZ5YhIT.js → index-BYwrR87Z.js} +28 -10
  96. package/dist/cjs/{index-DK-2Lzmf.js → index-MDAnKsze.js} +25 -21
  97. package/dist/cjs/loader.cjs.js +2 -2
  98. package/dist/cjs/{positioning-DCj_AJ2T.js → positioning-CyatXeT_.js} +32 -13
  99. package/dist/cjs/{requiredMark-C1xcrzSZ.js → requiredMark-D-t-IPN0.js} +1 -1
  100. package/dist/cjs/{toolbar-config-BQfWTW6P.js → toolbar-config-BSGas-Wl.js} +10 -0
  101. package/dist/cobalt/cobalt.css +1 -1
  102. package/dist/cobalt/cobalt.esm.js +1 -1
  103. package/dist/cobalt/{p-f83b48fd.entry.js → p-011dc80b.entry.js} +1 -1
  104. package/dist/cobalt/{p-316c62c0.entry.js → p-0678c797.entry.js} +1 -1
  105. package/dist/cobalt/{p-43bd298d.entry.js → p-08e42e00.entry.js} +1 -1
  106. package/dist/cobalt/{p-1c68bc41.entry.js → p-10b82207.entry.js} +1 -1
  107. package/dist/cobalt/{p-a8c64cc3.entry.js → p-15d59169.entry.js} +1 -1
  108. package/dist/cobalt/{p-07d570a6.entry.js → p-16954cea.entry.js} +1 -1
  109. package/dist/cobalt/{p-85a61e28.entry.js → p-17244412.entry.js} +1 -1
  110. package/dist/cobalt/p-1788aab5.entry.js +1 -0
  111. package/dist/cobalt/p-1a589c8e.entry.js +1 -0
  112. package/dist/cobalt/{p-da546d08.entry.js → p-1dc55e43.entry.js} +1 -1
  113. package/dist/cobalt/p-20a39218.entry.js +1 -0
  114. package/dist/cobalt/{p-4c7e3984.entry.js → p-23ab0cc5.entry.js} +1 -1
  115. package/dist/cobalt/{p-fabe5fb2.entry.js → p-2636b7eb.entry.js} +1 -1
  116. package/dist/cobalt/{p-88a0659f.entry.js → p-27a7e549.entry.js} +1 -1
  117. package/dist/cobalt/{p-18d34b01.entry.js → p-290066ef.entry.js} +1 -1
  118. package/dist/cobalt/{p-89e38c5e.entry.js → p-2f9cbbd5.entry.js} +1 -1
  119. package/dist/cobalt/{p-ef5e1167.entry.js → p-325b91b6.entry.js} +1 -1
  120. package/dist/cobalt/{p-60cb66f5.entry.js → p-37f5036b.entry.js} +1 -1
  121. package/dist/cobalt/p-3cc3ff93.entry.js +1 -0
  122. package/dist/cobalt/p-410bee4d.entry.js +1 -0
  123. package/dist/cobalt/{p-6795a258.entry.js → p-44c4e4a3.entry.js} +1 -1
  124. package/dist/cobalt/{p-4b083da4.entry.js → p-44ea675f.entry.js} +1 -1
  125. package/dist/cobalt/{p-2828ecf6.entry.js → p-4592ca00.entry.js} +1 -1
  126. package/dist/cobalt/p-4908f33f.entry.js +1 -0
  127. package/dist/cobalt/{p-342e1da4.entry.js → p-4d65e713.entry.js} +1 -1
  128. package/dist/cobalt/{p-dca4cd5f.entry.js → p-4d897896.entry.js} +1 -1
  129. package/dist/cobalt/{p-33ea4a90.entry.js → p-50bcc76f.entry.js} +1 -1
  130. package/dist/cobalt/{p-ac91259e.entry.js → p-5298c030.entry.js} +1 -1
  131. package/dist/cobalt/p-54c987d7.entry.js +1 -0
  132. package/dist/cobalt/p-56551580.entry.js +1 -0
  133. package/dist/cobalt/p-58137c9e.entry.js +1 -0
  134. package/dist/cobalt/{p-4f754c9a.entry.js → p-58d9b650.entry.js} +1 -1
  135. package/dist/cobalt/p-59963937.entry.js +1 -0
  136. package/dist/cobalt/{p-2d329ac8.entry.js → p-623cc195.entry.js} +1 -1
  137. package/dist/cobalt/p-63825d7f.entry.js +1 -0
  138. package/dist/cobalt/{p-8e667eb6.entry.js → p-66b11b38.entry.js} +1 -1
  139. package/dist/cobalt/{p-fb3a095b.entry.js → p-6bf6bc3e.entry.js} +1 -1
  140. package/dist/cobalt/p-6f700f0d.entry.js +1 -0
  141. package/dist/cobalt/p-73c6d735.entry.js +1 -0
  142. package/dist/cobalt/{p-a6357340.entry.js → p-76249983.entry.js} +1 -1
  143. package/dist/cobalt/{p-bfc2a849.entry.js → p-82266f11.entry.js} +1 -1
  144. package/dist/cobalt/{p-a9b29cc2.entry.js → p-826ee074.entry.js} +1 -1
  145. package/dist/cobalt/{p-23b3ff3f.entry.js → p-83a9a05a.entry.js} +1 -1
  146. package/dist/cobalt/{p-568cfe8d.entry.js → p-83ea631d.entry.js} +1 -1
  147. package/dist/cobalt/p-85501c6a.entry.js +1 -0
  148. package/dist/cobalt/{p-dfd25f1d.entry.js → p-88195a63.entry.js} +1 -1
  149. package/dist/cobalt/p-8fa5dc4a.entry.js +1 -0
  150. package/dist/cobalt/{p-c8dba82f.entry.js → p-91e73a92.entry.js} +1 -1
  151. package/dist/cobalt/{p-ac466658.entry.js → p-92b092db.entry.js} +1 -1
  152. package/dist/cobalt/{p-36197363.entry.js → p-996f4e38.entry.js} +1 -1
  153. package/dist/cobalt/p-BRbgGqLw.js +1 -0
  154. package/dist/cobalt/{p-BL0sCfMH.js → p-Bryf3-Js.js} +1 -1
  155. package/dist/cobalt/p-DFHRS9cJ.js +1 -0
  156. package/dist/cobalt/{p-CrtiywTB.js → p-DH5lfRNj.js} +1 -1
  157. package/dist/{components/p-WeuPA9Rw.js → cobalt/p-DOL2zACE.js} +1 -1
  158. package/dist/cobalt/p-D_zA1Pv4.js +1 -0
  159. package/dist/cobalt/{p-fef5db54.entry.js → p-a32b20eb.entry.js} +1 -1
  160. package/dist/cobalt/p-aa9400bf.entry.js +1 -0
  161. package/dist/cobalt/{p-8eb485c8.entry.js → p-aaca6dab.entry.js} +1 -1
  162. package/dist/cobalt/{p-e5495539.entry.js → p-aae86f96.entry.js} +1 -1
  163. package/dist/cobalt/{p-8f38e24d.entry.js → p-ad33c40e.entry.js} +1 -1
  164. package/dist/cobalt/p-b0c4fc71.entry.js +1 -0
  165. package/dist/cobalt/{p-da18b5f4.entry.js → p-b1e8d69e.entry.js} +1 -1
  166. package/dist/cobalt/p-b48917c9.entry.js +1 -0
  167. package/dist/cobalt/{p-7e53e9c8.entry.js → p-b565104d.entry.js} +1 -1
  168. package/dist/cobalt/{p-b0319a2d.entry.js → p-b90d41e4.entry.js} +1 -1
  169. package/dist/cobalt/{p-c5684c79.entry.js → p-bd683db3.entry.js} +1 -1
  170. package/dist/cobalt/{p-1ddbc48b.entry.js → p-c124e82b.entry.js} +1 -1
  171. package/dist/cobalt/{p-95efe661.entry.js → p-c2ebf0ec.entry.js} +1 -1
  172. package/dist/cobalt/{p-76420ac1.entry.js → p-c32c176a.entry.js} +1 -1
  173. package/dist/cobalt/{p-54ae807d.entry.js → p-c465d619.entry.js} +1 -1
  174. package/dist/cobalt/{p-ab45d9bd.entry.js → p-c91d4fc6.entry.js} +1 -1
  175. package/dist/cobalt/{p-ce35c898.entry.js → p-d29bb0fa.entry.js} +1 -1
  176. package/dist/cobalt/{p-7c5e846a.entry.js → p-db805569.entry.js} +1 -1
  177. package/dist/cobalt/p-e01f9b9a.entry.js +1 -0
  178. package/dist/cobalt/p-e3aae282.entry.js +1 -0
  179. package/dist/cobalt/{p-d15d3a97.entry.js → p-e4264532.entry.js} +1 -1
  180. package/dist/cobalt/{p-93c68029.entry.js → p-e48f4e45.entry.js} +1 -1
  181. package/dist/cobalt/{p-3f0eed59.entry.js → p-e49a564c.entry.js} +1 -1
  182. package/dist/cobalt/p-e8a2f993.entry.js +1 -0
  183. package/dist/cobalt/p-e8a4e6b0.entry.js +1 -0
  184. package/dist/cobalt/p-ea20f048.entry.js +1 -0
  185. package/dist/cobalt/{p-c1e7fb32.entry.js → p-eb063cc0.entry.js} +1 -1
  186. package/dist/cobalt/p-eb82358d.entry.js +1 -0
  187. package/dist/cobalt/{p-2114c036.entry.js → p-eb8691f2.entry.js} +1 -1
  188. package/dist/cobalt/{p-e8878cf9.entry.js → p-ee2023da.entry.js} +1 -1
  189. package/dist/cobalt/p-ee9a623d.entry.js +1 -0
  190. package/dist/cobalt/p-ef5ca521.entry.js +1 -0
  191. package/dist/cobalt/p-f4e1c3c3.entry.js +1 -0
  192. package/dist/cobalt/{p-e364b8a5.entry.js → p-f57dffca.entry.js} +1 -1
  193. package/dist/cobalt/p-f6691108.entry.js +1 -0
  194. package/dist/cobalt/p-f68dd124.entry.js +1 -0
  195. package/dist/cobalt/p-fMqVDypp.js +1 -0
  196. package/dist/cobalt/{p-0c463d9a.entry.js → p-fd150cc6.entry.js} +1 -1
  197. package/dist/cobalt/{p-0e91e5c4.entry.js → p-fe7e8813.entry.js} +1 -1
  198. package/dist/cobalt/p-gKnOhsd2.js +1 -0
  199. package/dist/cobalt/p-jYd9gu_c.js +1 -0
  200. package/dist/collection/collection-manifest.json +1 -0
  201. package/dist/collection/components/co-app-shell/co-app-shell.css +107 -41
  202. package/dist/collection/components/co-app-shell/co-app-shell.js +2 -2
  203. package/dist/collection/components/co-autocomplete/co-autocomplete.js +1 -1
  204. package/dist/collection/components/co-avatar-group/co-avatar-group.js +1 -1
  205. package/dist/collection/components/co-badge/co-badge.css +18 -0
  206. package/dist/collection/components/co-badge/co-badge.js +29 -1
  207. package/dist/collection/components/co-button/co-button.css +4 -4
  208. package/dist/collection/components/co-checkbox/co-checkbox.css +12 -3
  209. package/dist/collection/components/co-checkbox/co-checkbox.js +6 -6
  210. package/dist/collection/components/co-checkbox-group/co-checkbox-group.css +1 -3
  211. package/dist/collection/components/co-checkbox-group/co-checkbox-group.js +1 -1
  212. package/dist/collection/components/co-color-picker/co-color-picker.css +252 -5
  213. package/dist/collection/components/co-color-picker/co-color-picker.js +932 -15
  214. package/dist/collection/components/co-color-picker/presets.js +113 -15
  215. package/dist/collection/components/co-column-picker/co-column-picker.js +2 -2
  216. package/dist/collection/components/co-combobox/co-combobox.js +1 -1
  217. package/dist/collection/components/co-command-search/co-command-search.js +1 -1
  218. package/dist/collection/components/co-data-table/co-data-table.js +1 -1
  219. package/dist/collection/components/co-data-table-pagination/co-data-table-pagination.js +4 -4
  220. package/dist/collection/components/co-date-field/co-date-field.js +4 -4
  221. package/dist/collection/components/co-date-range/co-date-range.js +1 -1
  222. package/dist/collection/components/co-date-range-picker/co-date-range-picker.js +2 -2
  223. package/dist/collection/components/co-date-time-picker/co-date-time-picker.css +128 -32
  224. package/dist/collection/components/co-date-time-picker/co-date-time-picker.js +142 -138
  225. package/dist/collection/components/co-drawer/co-drawer.css +99 -36
  226. package/dist/collection/components/co-drawer/co-drawer.js +19 -7
  227. package/dist/collection/components/co-drive-card/co-drive-card.js +1 -1
  228. package/dist/collection/components/co-drop-zone/co-drop-zone.js +1 -1
  229. package/dist/collection/components/co-emoji-picker/co-emoji-picker.js +2 -2
  230. package/dist/collection/components/co-empty-state/co-empty-state.css +28 -0
  231. package/dist/collection/components/co-empty-state/co-empty-state.js +2 -2
  232. package/dist/collection/components/co-event-calendar/co-event-calendar.js +2 -2
  233. package/dist/collection/components/co-event-popover/co-event-popover.js +1 -1
  234. package/dist/collection/components/co-fab/co-fab.js +2 -2
  235. package/dist/collection/components/co-file-field/co-file-field.css +55 -2
  236. package/dist/collection/components/co-file-field/co-file-field.js +41 -13
  237. package/dist/collection/components/co-file-field/co-file-field.utils.js +51 -4
  238. package/dist/collection/components/co-file-type-tile/co-file-type-tile.js +2 -2
  239. package/dist/collection/components/co-helper-text/co-helper-text.js +2 -2
  240. package/dist/collection/components/co-icon/co-icon.js +2 -2
  241. package/dist/collection/components/co-icon-button/co-icon-button.css +40 -2
  242. package/dist/collection/components/co-icon-button/co-icon-button.js +43 -4
  243. package/dist/collection/components/co-input/co-input.css +33 -0
  244. package/dist/collection/components/co-input/co-input.js +25 -2
  245. package/dist/collection/components/co-json-field/co-json-field.js +3 -3
  246. package/dist/collection/components/co-lightbox/co-lightbox.css +23 -0
  247. package/dist/collection/components/co-lightbox/co-lightbox.js +209 -20
  248. package/dist/collection/components/co-list-footer/co-list-footer.js +1 -1
  249. package/dist/collection/components/co-list-item/co-list-item.js +4 -4
  250. package/dist/collection/components/co-media-thumb/co-media-thumb.js +2 -2
  251. package/dist/collection/components/co-menu/co-menu.js +1 -1
  252. package/dist/collection/components/co-menu-divider/co-menu-divider.js +1 -1
  253. package/dist/collection/components/co-menu-item/co-menu-item.js +67 -3
  254. package/dist/collection/components/co-modal/co-modal.css +106 -37
  255. package/dist/collection/components/co-modal/co-modal.js +4 -2
  256. package/dist/collection/components/co-navbar/co-navbar.css +4 -2
  257. package/dist/collection/components/co-navbar/co-navbar.js +2 -2
  258. package/dist/collection/components/co-number-field/co-number-field.css +22 -0
  259. package/dist/collection/components/co-number-field/co-number-field.js +216 -9
  260. package/dist/collection/components/co-option-list/co-option-list.css +25 -4
  261. package/dist/collection/components/co-option-list/co-option-list.js +26 -3
  262. package/dist/collection/components/co-overlay/co-overlay.js +5 -3
  263. package/dist/collection/components/co-page-header/co-page-header.js +1 -1
  264. package/dist/collection/components/co-phone-field/co-phone-field.js +1 -1
  265. package/dist/collection/components/co-popover/co-popover.css +18 -3
  266. package/dist/collection/components/co-popover/co-popover.js +83 -20
  267. package/dist/collection/components/co-progress-bar/co-progress-bar.js +2 -2
  268. package/dist/collection/components/co-progress-circle/co-progress-circle.js +2 -2
  269. package/dist/collection/components/co-radio/co-radio.js +3 -3
  270. package/dist/collection/components/co-radio-group/co-radio-group.js +1 -1
  271. package/dist/collection/components/co-rating/co-rating.js +3 -3
  272. package/dist/collection/components/co-ref-field/co-ref-field.js +3 -3
  273. package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.css +14 -1
  274. package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.js +9 -6
  275. package/dist/collection/components/co-rich-text-toolbar/co-rich-text-toolbar.js +7 -3
  276. package/dist/collection/components/co-rich-text-viewer/co-rich-text-viewer.js +3 -2
  277. package/dist/collection/components/co-row/co-row.js +2 -2
  278. package/dist/collection/components/co-segmented-bar/co-segmented-bar.js +1 -1
  279. package/dist/collection/components/co-select/co-select.js +1 -1
  280. package/dist/collection/components/co-separator/co-separator.js +1 -1
  281. package/dist/collection/components/co-sidebar/co-sidebar.js +2 -2
  282. package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.css +2 -2
  283. package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.js +1 -1
  284. package/dist/collection/components/co-skeleton/co-skeleton.css +18 -0
  285. package/dist/collection/components/co-skeleton/co-skeleton.js +83 -1
  286. package/dist/collection/components/co-slider/co-slider.js +2 -2
  287. package/dist/collection/components/co-switch/co-switch.css +3 -3
  288. package/dist/collection/components/co-switch/co-switch.js +3 -3
  289. package/dist/collection/components/co-tab/co-tab.js +2 -2
  290. package/dist/collection/components/co-tab-group/co-tab-group.js +2 -2
  291. package/dist/collection/components/co-tags-field/co-tags-field.js +5 -5
  292. package/dist/collection/components/co-textarea/co-textarea.js +4 -4
  293. package/dist/collection/components/co-time-field/co-time-field.css +111 -0
  294. package/dist/collection/components/co-time-field/co-time-field.js +536 -0
  295. package/dist/collection/components/co-toast/co-toast.css +13 -7
  296. package/dist/collection/components/co-toast/co-toast.js +2 -2
  297. package/dist/collection/components/co-toggle-button/co-toggle-button.css +16 -11
  298. package/dist/collection/components/co-toggle-button/co-toggle-button.js +2 -2
  299. package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.css +7 -1
  300. package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.js +2 -2
  301. package/dist/collection/components/co-tooltip/co-tooltip.css +18 -1
  302. package/dist/collection/components/co-tooltip/co-tooltip.js +49 -16
  303. package/dist/collection/components/co-transfer-list/co-transfer-list.js +1 -1
  304. package/dist/collection/components/co-video/co-video.js +34 -9
  305. package/dist/collection/utils/amountText.js +95 -0
  306. package/dist/collection/utils/color.js +109 -3
  307. package/dist/collection/utils/colorPickerI18n.js +55 -0
  308. package/dist/collection/utils/dateI18n.js +36 -0
  309. package/dist/collection/utils/fileI18n.js +3 -0
  310. package/dist/collection/utils/positioning.js +37 -4
  311. package/dist/collection/utils/submenu.js +35 -0
  312. package/dist/components/co-accordion.js +1 -1
  313. package/dist/components/co-action-bar.js +1 -1
  314. package/dist/components/co-app-shell.js +1 -1
  315. package/dist/components/co-audio-player.js +1 -1
  316. package/dist/components/co-autocomplete.js +1 -1
  317. package/dist/components/co-avatar-group.js +1 -1
  318. package/dist/components/co-avatar.js +1 -1
  319. package/dist/components/co-badge.js +1 -1
  320. package/dist/components/co-breadcrumb-item.js +1 -1
  321. package/dist/components/co-breadcrumb.js +1 -1
  322. package/dist/components/co-button.js +1 -1
  323. package/dist/components/co-calendar-month.js +1 -1
  324. package/dist/components/co-calendar-timegrid.js +1 -1
  325. package/dist/components/co-calendar.js +1 -1
  326. package/dist/components/co-carousel.js +1 -1
  327. package/dist/components/co-checkbox-group.js +1 -1
  328. package/dist/components/co-checkbox.js +1 -1
  329. package/dist/components/co-chip.js +1 -1
  330. package/dist/components/co-color-picker.js +1 -1
  331. package/dist/components/co-column-picker.js +1 -1
  332. package/dist/components/co-combobox.js +1 -1
  333. package/dist/components/co-command-search.js +1 -1
  334. package/dist/components/co-data-table-pagination.js +1 -1
  335. package/dist/components/co-data-table.js +1 -1
  336. package/dist/components/co-date-field.js +1 -1
  337. package/dist/components/co-date-picker.js +1 -1
  338. package/dist/components/co-date-range-picker.js +1 -1
  339. package/dist/components/co-date-range.js +1 -1
  340. package/dist/components/co-date-time-picker.js +1 -1
  341. package/dist/components/co-drawer.js +1 -1
  342. package/dist/components/co-drive-card.js +1 -1
  343. package/dist/components/co-drop-zone.js +1 -1
  344. package/dist/components/co-emoji-picker.js +1 -1
  345. package/dist/components/co-empty-state.js +1 -1
  346. package/dist/components/co-event-calendar.js +1 -1
  347. package/dist/components/co-event-popover.js +1 -1
  348. package/dist/components/co-fab.js +1 -1
  349. package/dist/components/co-file-field.js +1 -1
  350. package/dist/components/co-file-type-tile.js +1 -1
  351. package/dist/components/co-helper-text.js +1 -1
  352. package/dist/components/co-icon-button.js +1 -1
  353. package/dist/components/co-icon.js +1 -1
  354. package/dist/components/co-input.js +1 -1
  355. package/dist/components/co-json-field.js +1 -1
  356. package/dist/components/co-lightbox.js +1 -1
  357. package/dist/components/co-list-footer.js +1 -1
  358. package/dist/components/co-list-item.js +1 -1
  359. package/dist/components/co-media-thumb.js +1 -1
  360. package/dist/components/co-menu-divider.js +1 -1
  361. package/dist/components/co-menu-item.js +1 -1
  362. package/dist/components/co-menu.js +1 -1
  363. package/dist/components/co-modal.js +1 -1
  364. package/dist/components/co-navbar.js +1 -1
  365. package/dist/components/co-number-field.js +1 -1
  366. package/dist/components/co-option-list.js +1 -1
  367. package/dist/components/co-overlay.js +1 -1
  368. package/dist/components/co-page-header.js +1 -1
  369. package/dist/components/co-phone-field.js +1 -1
  370. package/dist/components/co-popover.js +1 -1
  371. package/dist/components/co-progress-bar.js +1 -1
  372. package/dist/components/co-progress-circle.js +1 -1
  373. package/dist/components/co-radio-group.js +1 -1
  374. package/dist/components/co-radio.js +1 -1
  375. package/dist/components/co-rating.js +1 -1
  376. package/dist/components/co-ref-field.js +1 -1
  377. package/dist/components/co-rich-text-editor.js +1 -1
  378. package/dist/components/co-rich-text-toolbar.js +1 -1
  379. package/dist/components/co-rich-text-viewer.js +1 -1
  380. package/dist/components/co-row.js +1 -1
  381. package/dist/components/co-select.js +1 -1
  382. package/dist/components/co-separator.js +1 -1
  383. package/dist/components/co-sidebar-nav.js +1 -1
  384. package/dist/components/co-sidebar.js +1 -1
  385. package/dist/components/co-skeleton.js +1 -1
  386. package/dist/components/co-slider.js +1 -1
  387. package/dist/components/co-switch.js +1 -1
  388. package/dist/components/co-tab-group.js +1 -1
  389. package/dist/components/co-tab.js +1 -1
  390. package/dist/components/co-tags-field.js +1 -1
  391. package/dist/components/co-textarea.js +1 -1
  392. package/dist/components/co-time-field.d.ts +11 -0
  393. package/dist/components/co-time-field.js +1 -0
  394. package/dist/components/co-toast.js +1 -1
  395. package/dist/components/co-toggle-button-group.js +1 -1
  396. package/dist/components/co-toggle-button.js +1 -1
  397. package/dist/components/co-tooltip.js +1 -1
  398. package/dist/components/co-transfer-list.js +1 -1
  399. package/dist/components/co-video.js +1 -1
  400. package/dist/components/index.js +1 -1
  401. package/dist/components/p-9ceBPSd1.js +1 -0
  402. package/dist/components/p-B1QFLcY9.js +1 -0
  403. package/dist/components/p-B2IsXte7.js +1 -0
  404. package/dist/components/p-B4NCaKrR.js +1 -0
  405. package/dist/components/p-BBP5__CY.js +1 -0
  406. package/dist/components/{p-Dabi98BI.js → p-BGDqldEg.js} +1 -1
  407. package/dist/components/p-BRbgGqLw.js +1 -0
  408. package/dist/components/p-Be_kyNRE.js +1 -0
  409. package/dist/components/{p-BL0sCfMH.js → p-Bryf3-Js.js} +1 -1
  410. package/dist/components/p-BsTO1uUA.js +1 -0
  411. package/dist/components/{p-CuZXTvDM.js → p-Bv6U5y3d.js} +1 -1
  412. package/dist/components/p-BxP8OBw6.js +1 -0
  413. package/dist/components/{p-P8wvwhM2.js → p-CFFDmGPS.js} +1 -1
  414. package/dist/components/{p-CA_JAK9s.js → p-CT2enQ6h.js} +1 -1
  415. package/dist/components/p-CXPRaTuo.js +1 -0
  416. package/dist/components/{p-D5EdMieb.js → p-Cl3AdEQJ.js} +1 -1
  417. package/dist/components/p-CnX3L8aF.js +1 -0
  418. package/dist/components/p-DFHRS9cJ.js +1 -0
  419. package/dist/components/p-DIo66nBr.js +1 -0
  420. package/dist/components/{p-Dj1EZ5qD.js → p-DNJAIVfI.js} +1 -1
  421. package/dist/{cobalt/p-WeuPA9Rw.js → components/p-DOL2zACE.js} +1 -1
  422. package/dist/components/p-DRP8D9ro.js +1 -0
  423. package/dist/components/p-DkDTmHCg.js +1 -0
  424. package/dist/components/{p-Bxk96Zgc.js → p-Du_CgT5E.js} +1 -1
  425. package/dist/components/{p-BHYtxTzM.js → p-HxVRXXXC.js} +1 -1
  426. package/dist/components/{p-B0Dc-I_C.js → p-NNxjElcX.js} +1 -1
  427. package/dist/components/p-gKnOhsd2.js +1 -0
  428. package/dist/components/p-jYd9gu_c.js +1 -0
  429. package/dist/components/{p-D4qzGifz.js → p-vby0ITbe.js} +1 -1
  430. package/dist/components/{p-D6OUW6oW.js → p-x4grh-eZ.js} +1 -1
  431. package/dist/esm/co-accordion.entry.js +1 -1
  432. package/dist/esm/co-action-bar.entry.js +1 -1
  433. package/dist/esm/co-app-shell.entry.js +4 -4
  434. package/dist/esm/co-audio-player.entry.js +1 -1
  435. package/dist/esm/co-autocomplete.entry.js +2 -2
  436. package/dist/esm/co-avatar-group.entry.js +1 -1
  437. package/dist/esm/co-avatar_2.entry.js +49 -17
  438. package/dist/esm/co-badge.entry.js +11 -3
  439. package/dist/esm/co-bottom-sheet.entry.js +1 -1
  440. package/dist/esm/co-breadcrumb-item.entry.js +1 -1
  441. package/dist/esm/co-breadcrumb.entry.js +1 -1
  442. package/dist/esm/co-button-group.entry.js +1 -1
  443. package/dist/esm/co-button.entry.js +2 -2
  444. package/dist/esm/co-calendar-month_2.entry.js +37 -2
  445. package/dist/esm/co-calendar_3.entry.js +27 -15
  446. package/dist/esm/co-card.entry.js +1 -1
  447. package/dist/esm/co-carousel-item.entry.js +1 -1
  448. package/dist/esm/co-carousel.entry.js +2 -2
  449. package/dist/esm/co-checkbox-group.entry.js +2 -2
  450. package/dist/esm/co-checkbox.entry.js +6 -6
  451. package/dist/esm/co-chip_2.entry.js +8 -5
  452. package/dist/esm/co-color-picker.entry.js +1048 -27
  453. package/dist/esm/co-column-picker.entry.js +3 -3
  454. package/dist/esm/co-combobox.entry.js +2 -2
  455. package/dist/esm/co-command-search.entry.js +1 -1
  456. package/dist/esm/co-data-table-pagination.entry.js +5 -5
  457. package/dist/esm/co-data-table.entry.js +1 -1
  458. package/dist/esm/co-date-picker.entry.js +3 -3
  459. package/dist/esm/co-date-range-picker.entry.js +3 -3
  460. package/dist/esm/co-date-range.entry.js +2 -2
  461. package/dist/esm/co-date-time-picker.entry.js +101 -130
  462. package/dist/esm/co-drive-card.entry.js +2 -2
  463. package/dist/esm/co-drop-zone.entry.js +2 -2
  464. package/dist/esm/co-emoji-picker.entry.js +4 -4
  465. package/dist/esm/co-empty-state.entry.js +4 -4
  466. package/dist/esm/co-event-calendar.entry.js +4 -4
  467. package/dist/esm/co-event-popover.entry.js +3 -3
  468. package/dist/esm/co-fab.entry.js +3 -3
  469. package/dist/esm/co-file-field.entry.js +95 -99
  470. package/dist/esm/co-file-type-tile.entry.js +3 -3
  471. package/dist/esm/co-helper-text.entry.js +3 -3
  472. package/dist/esm/co-icon-button.entry.js +6 -6
  473. package/dist/esm/co-icon.entry.js +3 -3
  474. package/dist/esm/co-input.entry.js +26 -4
  475. package/dist/esm/co-json-field.entry.js +5 -5
  476. package/dist/esm/co-lightbox.entry.js +204 -21
  477. package/dist/esm/co-list-footer.entry.js +2 -2
  478. package/dist/esm/co-list-item.entry.js +5 -5
  479. package/dist/esm/co-loader.entry.js +1 -1
  480. package/dist/esm/co-media-thumb.entry.js +3 -3
  481. package/dist/esm/co-menu-divider.entry.js +2 -2
  482. package/dist/esm/co-menu-item.entry.js +84 -3
  483. package/dist/esm/co-menu.entry.js +2 -2
  484. package/dist/esm/co-modal.entry.js +6 -4
  485. package/dist/esm/co-navbar.entry.js +4 -4
  486. package/dist/esm/co-number-field.entry.js +272 -9
  487. package/dist/esm/co-overlay.entry.js +6 -4
  488. package/dist/esm/co-page-header.entry.js +2 -2
  489. package/dist/esm/co-phone-field.entry.js +3 -3
  490. package/dist/esm/co-popover.entry.js +58 -21
  491. package/dist/esm/co-progress-bar.entry.js +3 -3
  492. package/dist/esm/co-progress-circle.entry.js +3 -3
  493. package/dist/esm/co-provider-logo_2.entry.js +47 -3
  494. package/dist/esm/co-radio-group.entry.js +1 -1
  495. package/dist/esm/co-radio.entry.js +4 -4
  496. package/dist/esm/co-rating.entry.js +4 -4
  497. package/dist/esm/co-ref-field.entry.js +4 -4
  498. package/dist/esm/co-rich-text-editor.entry.js +11 -8
  499. package/dist/esm/co-rich-text-toolbar.entry.js +7 -3
  500. package/dist/esm/co-rich-text-viewer.entry.js +4 -3
  501. package/dist/esm/co-row.entry.js +3 -3
  502. package/dist/esm/co-segmented-bar.entry.js +1 -1
  503. package/dist/esm/co-select.entry.js +2 -2
  504. package/dist/esm/co-separator.entry.js +2 -2
  505. package/dist/esm/co-sidebar-nav.entry.js +2 -2
  506. package/dist/esm/co-sidebar.entry.js +3 -3
  507. package/dist/esm/co-slider.entry.js +3 -3
  508. package/dist/esm/co-switch.entry.js +6 -6
  509. package/dist/esm/co-tab-group.entry.js +3 -3
  510. package/dist/esm/co-tab.entry.js +3 -3
  511. package/dist/esm/co-tags-field.entry.js +8 -8
  512. package/dist/esm/co-textarea.entry.js +6 -6
  513. package/dist/esm/co-time-field.entry.js +323 -0
  514. package/dist/esm/co-toast.entry.js +2 -2
  515. package/dist/esm/co-toggle-button-group.entry.js +4 -4
  516. package/dist/esm/co-toggle-button.entry.js +4 -4
  517. package/dist/esm/co-transfer-list.entry.js +1 -1
  518. package/dist/esm/co-video.entry.js +32 -7
  519. package/dist/esm/cobalt.js +3 -3
  520. package/dist/esm/color-BRbgGqLw.js +136 -0
  521. package/dist/esm/{dateI18n-CnNpoKwg.js → dateI18n-jYd9gu_c.js} +36 -0
  522. package/dist/esm/{fieldChip-DsAfq1e0.js → fieldChip-uyggU8VV.js} +1 -1
  523. package/dist/esm/fileI18n-gKnOhsd2.js +84 -0
  524. package/dist/esm/{index-RuXxdKzC.js → index-68iUQp5j.js} +28 -10
  525. package/dist/esm/{index-CrtiywTB.js → index-DH5lfRNj.js} +25 -21
  526. package/dist/esm/loader.js +3 -3
  527. package/dist/esm/{positioning-BMdapAL8.js → positioning-DFHRS9cJ.js} +32 -13
  528. package/dist/esm/{requiredMark-DCD-ZA51.js → requiredMark-BCJUuZvC.js} +1 -1
  529. package/dist/esm/{toolbar-config-WeuPA9Rw.js → toolbar-config-DOL2zACE.js} +10 -0
  530. package/dist/types/components/co-badge/co-badge.d.ts +7 -0
  531. package/dist/types/components/co-checkbox/co-checkbox.d.ts +1 -1
  532. package/dist/types/components/co-color-picker/co-color-picker.d.ts +358 -4
  533. package/dist/types/components/co-color-picker/presets.d.ts +107 -4
  534. package/dist/types/components/co-date-time-picker/co-date-time-picker.d.ts +43 -21
  535. package/dist/types/components/co-drawer/co-drawer.d.ts +4 -3
  536. package/dist/types/components/co-file-field/co-file-field.d.ts +14 -0
  537. package/dist/types/components/co-file-field/co-file-field.utils.d.ts +18 -1
  538. package/dist/types/components/co-icon-button/co-icon-button.d.ts +9 -0
  539. package/dist/types/components/co-input/co-input.d.ts +4 -0
  540. package/dist/types/components/co-lightbox/co-lightbox.d.ts +60 -4
  541. package/dist/types/components/co-menu-item/co-menu-item.d.ts +16 -0
  542. package/dist/types/components/co-number-field/co-number-field.d.ts +42 -1
  543. package/dist/types/components/co-option-list/co-option-list.d.ts +3 -0
  544. package/dist/types/components/co-overlay/co-overlay.d.ts +4 -2
  545. package/dist/types/components/co-popover/co-popover.d.ts +16 -0
  546. package/dist/types/components/co-rich-text-toolbar/co-rich-text-toolbar.d.ts +1 -1
  547. package/dist/types/components/co-skeleton/co-skeleton.d.ts +13 -0
  548. package/dist/types/components/co-time-field/co-time-field.d.ts +60 -0
  549. package/dist/types/components/co-tooltip/co-tooltip.d.ts +5 -0
  550. package/dist/types/components/co-video/co-video.d.ts +4 -0
  551. package/dist/types/components.d.ts +451 -87
  552. package/dist/types/utils/amountText.d.ts +34 -0
  553. package/dist/types/utils/color.d.ts +44 -1
  554. package/dist/types/utils/colorPickerI18n.d.ts +26 -0
  555. package/dist/types/utils/dateI18n.d.ts +12 -0
  556. package/dist/types/utils/fileI18n.d.ts +1 -0
  557. package/dist/types/utils/positioning.d.ts +10 -0
  558. package/dist/types/utils/submenu.d.ts +44 -0
  559. package/package.json +3 -3
  560. package/dist/cjs/color-YhUkm10t.js +0 -32
  561. package/dist/cjs/time-LBHtzLHe.js +0 -42
  562. package/dist/cobalt/p-07904986.entry.js +0 -1
  563. package/dist/cobalt/p-09799193.entry.js +0 -1
  564. package/dist/cobalt/p-17ae943c.entry.js +0 -1
  565. package/dist/cobalt/p-23a103a0.entry.js +0 -1
  566. package/dist/cobalt/p-2f88d151.entry.js +0 -1
  567. package/dist/cobalt/p-3495fda1.entry.js +0 -1
  568. package/dist/cobalt/p-409f28bb.entry.js +0 -1
  569. package/dist/cobalt/p-682b3313.entry.js +0 -1
  570. package/dist/cobalt/p-6bf814f9.entry.js +0 -1
  571. package/dist/cobalt/p-7c88163e.entry.js +0 -1
  572. package/dist/cobalt/p-7cf4b4ae.entry.js +0 -1
  573. package/dist/cobalt/p-7ea87b75.entry.js +0 -1
  574. package/dist/cobalt/p-8183f56f.entry.js +0 -1
  575. package/dist/cobalt/p-8345b25f.entry.js +0 -1
  576. package/dist/cobalt/p-8b4b3589.entry.js +0 -1
  577. package/dist/cobalt/p-983af614.entry.js +0 -1
  578. package/dist/cobalt/p-BG4WRR22.js +0 -1
  579. package/dist/cobalt/p-BMdapAL8.js +0 -1
  580. package/dist/cobalt/p-CF8OB_TM.js +0 -1
  581. package/dist/cobalt/p-CnNpoKwg.js +0 -1
  582. package/dist/cobalt/p-T4la7ly_.js +0 -1
  583. package/dist/cobalt/p-a2d31248.entry.js +0 -1
  584. package/dist/cobalt/p-a6b5cadd.entry.js +0 -1
  585. package/dist/cobalt/p-b8581787.entry.js +0 -1
  586. package/dist/cobalt/p-bcedbd73.entry.js +0 -1
  587. package/dist/cobalt/p-d40a465f.entry.js +0 -1
  588. package/dist/cobalt/p-dea43204.entry.js +0 -1
  589. package/dist/cobalt/p-dfcf667d.entry.js +0 -1
  590. package/dist/cobalt/p-e6882ddd.entry.js +0 -1
  591. package/dist/cobalt/p-e84eda2e.entry.js +0 -1
  592. package/dist/cobalt/p-f25967fb.entry.js +0 -1
  593. package/dist/cobalt/p-f5f1b463.entry.js +0 -1
  594. package/dist/cobalt/p-fd39f410.entry.js +0 -1
  595. package/dist/cobalt/p-mAGnZXRn.js +0 -1
  596. package/dist/components/p-BMdapAL8.js +0 -1
  597. package/dist/components/p-BTQEg3UO.js +0 -1
  598. package/dist/components/p-BZIB4JDs.js +0 -1
  599. package/dist/components/p-Bbny3WUc.js +0 -1
  600. package/dist/components/p-C1Kv3zYZ.js +0 -1
  601. package/dist/components/p-CF8OB_TM.js +0 -1
  602. package/dist/components/p-CR0izsJC.js +0 -1
  603. package/dist/components/p-CnNpoKwg.js +0 -1
  604. package/dist/components/p-DP0bbhfN.js +0 -1
  605. package/dist/components/p-DbipMAyT.js +0 -1
  606. package/dist/components/p-DgUBcJIS.js +0 -1
  607. package/dist/components/p-DolCkNsL.js +0 -1
  608. package/dist/components/p-gI62K3Be.js +0 -1
  609. package/dist/components/p-hfGFsvaD.js +0 -1
  610. package/dist/esm/color-BG4WRR22.js +0 -30
  611. package/dist/esm/time-CF8OB_TM.js +0 -37
@@ -1,4 +1,5 @@
1
1
  import { h } from "@stencil/core";
2
+ import { afterEventFor } from "../co-overlay/overlayAfterClose";
2
3
  import { slotHasContent } from "../../utils/slotContent";
3
4
  /**
4
5
  * @slot header - Custom header content (overrides `heading` prop). Receives close button next to it.
@@ -58,16 +59,25 @@ export class CoDrawer {
58
59
  e.stopPropagation();
59
60
  };
60
61
  this.handleTransitionEnd = (e) => {
61
- if (e.propertyName !== 'transform')
62
+ // Solo la transición `transform` del PROPIO aside: `transitionend` burbujea y
63
+ // los slots no lo frenan — un hover con transform dentro del body (p. ej. el
64
+ // CTA de propuesta del form de deals) re-emitía coAfterOpen/Close. Guard como
65
+ // co-modal.tsx (e.target !== this.modalEl). Spec: co-drawer.after-events.spec.tsx.
66
+ // La decisión open/close sale del helper compartido con co-modal/co-overlay
67
+ // (co-overlay/overlayAfterClose.ts); el guard de target queda acá porque el
68
+ // elemento observado es propio de cada componente.
69
+ if (e.target !== this.asideEl)
62
70
  return;
63
- if (this.open)
71
+ const ev = afterEventFor(e.propertyName, this.open, 'transform');
72
+ if (ev === 'after-open')
64
73
  this.coAfterOpen.emit();
65
- else
74
+ else if (ev === 'after-close')
66
75
  this.coAfterClose.emit();
67
76
  };
68
- /** Modeless only: keep the aside promoted to the top layer for its whole
69
- * lifetime (mirrors co-overlay's syncPopover; eviction on disconnect is
70
- * automatic). */
77
+ /** Ref del aside — SIEMPRE adjunto (handleTransitionEnd lo necesita como
78
+ * target). Modeless only: además mantiene el aside promovido al top layer
79
+ * para toda su vida (mirrors co-overlay's syncPopover; eviction on
80
+ * disconnect is automatic). */
71
81
  this.promoteModeless = (el) => {
72
82
  if (el)
73
83
  this.asideEl = el;
@@ -124,11 +134,13 @@ export class CoDrawer {
124
134
  render() {
125
135
  const aside = (h("aside", { class: {
126
136
  'co-drawer': true,
137
+ 'co-sq-elevation': true,
138
+ 'co-sq-elevation-fallback': true,
127
139
  'co-drawer--open': this.open,
128
140
  'co-drawer--modeless': this.modeless,
129
141
  [`co-drawer--${this.position}`]: true,
130
142
  [`co-drawer--${this.size}`]: true,
131
- }, popover: this.modeless ? 'manual' : undefined, ref: this.modeless ? this.promoteModeless : undefined, part: "drawer", role: "dialog", "aria-modal": this.modeless ? 'false' : 'true', "aria-labelledby": this.labelledBy, onClick: this.stopPropagation, onTransitionEnd: this.handleTransitionEnd }, h("div", { class: "co-drawer__card", part: "card" }, h("header", { class: "co-drawer__header", part: "header" }, h("div", { class: "co-drawer__header-content", id: "co-drawer-header-content" }, h("slot", { name: "header", onSlotchange: this.handleHeaderSlotChange }, h("div", { class: "co-drawer__heading-row" }, this.icon && h("co-icon", { name: this.icon, size: 20, class: "co-drawer__icon" }), h("h2", { class: "co-drawer__heading", id: "co-drawer-heading" }, this.heading)), this.description && h("p", { class: "co-drawer__description" }, this.description))), this.closable && (h("button", { class: "co-drawer__close", type: "button", "aria-label": "Close", onClick: this.handleCloseClick }, h("co-icon", { name: "x", size: 20 })))), h("div", { class: { 'co-drawer__tabs': true, 'co-drawer__tabs--empty': !this.hasTabs }, part: "tabs" }, h("slot", { name: "tabs", onSlotchange: this.handleTabsSlotChange })), h("div", { class: "co-drawer__body", part: "body" }, h("slot", null), h("co-loader", { overlay: true, visible: this.loading, part: "loader" })), h("footer", { class: { 'co-drawer__footer': true, 'co-drawer__footer--empty': !this.hasFooter }, part: "footer" }, h("slot", { name: "footer", onSlotchange: this.handleFooterSlotChange })))));
143
+ }, popover: this.modeless ? 'manual' : undefined, ref: this.promoteModeless, part: "drawer", role: "dialog", "aria-modal": this.modeless ? 'false' : 'true', "aria-labelledby": this.labelledBy, onClick: this.stopPropagation, onTransitionEnd: this.handleTransitionEnd }, h("div", { class: "co-drawer__card co-sq-clip", part: "card" }, h("header", { class: "co-drawer__header", part: "header" }, h("div", { class: "co-drawer__header-content", id: "co-drawer-header-content" }, h("slot", { name: "header", onSlotchange: this.handleHeaderSlotChange }, h("div", { class: "co-drawer__heading-row" }, this.icon && h("co-icon", { name: this.icon, size: 20, class: "co-drawer__icon" }), h("h2", { class: "co-drawer__heading", id: "co-drawer-heading" }, this.heading)), this.description && h("p", { class: "co-drawer__description" }, this.description))), this.closable && (h("button", { class: "co-drawer__close", type: "button", "aria-label": "Close", onClick: this.handleCloseClick }, h("co-icon", { name: "x", size: 20 })))), h("div", { class: { 'co-drawer__tabs': true, 'co-drawer__tabs--empty': !this.hasTabs }, part: "tabs" }, h("slot", { name: "tabs", onSlotchange: this.handleTabsSlotChange })), h("div", { class: "co-drawer__body", part: "body" }, h("slot", null), h("co-loader", { overlay: true, visible: this.loading, part: "loader" })), h("footer", { class: { 'co-drawer__footer': true, 'co-drawer__footer--empty': !this.hasFooter }, part: "footer" }, h("slot", { name: "footer", onSlotchange: this.handleFooterSlotChange })))));
132
144
  if (this.modeless)
133
145
  return aside;
134
146
  return (h("co-overlay", { open: this.open, onCoClose: this.handleOverlayClose }, aside));
@@ -74,7 +74,7 @@ export class CoDriveCard {
74
74
  }
75
75
  render() {
76
76
  const isFile = this.variant === 'file';
77
- return (h("div", { key: 'fef9abf2a536fe08fa6c65fcc4e37955c5bc5373', class: {
77
+ return (h("div", { key: 'd21cc658d8a825973bf2662166792e2645cb7919', class: {
78
78
  'co-drive-card': true,
79
79
  [`co-drive-card--${this.variant}`]: true,
80
80
  [`co-drive-card--${this.density}`]: true,
@@ -58,7 +58,7 @@ export class CoDropZone {
58
58
  this.coDragStateChange.emit(next);
59
59
  }
60
60
  render() {
61
- return (h(Host, { key: '95256dff45bfd8c003a8c4e81aa221873b850df3', class: { 'co-drop-zone': true, 'co-drop-zone--active': this.active }, part: "host", style: { '--co-drop-zone-accent': this.accent }, onDragEnter: this.handleDragEnter, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, onDrop: this.handleDrop }, h("slot", { key: '4a5841592fdb7cba17a51eb49bf617f1c5c88a03' }), this.active && (h("div", { key: '80d179ef44a5c5fd6294c1252fd17c35ac1e6f28', class: "co-drop-zone__overlay", part: "overlay" }, h("div", { key: '32fcd18641cd0d766273ce2390d83460347cb358', class: "co-drop-zone__badge", part: "badge" }, h("co-icon", { key: 'c193069fd16d3935c037f6ce69606bc9342d9ad8', name: this.icon, size: 34 })), h("span", { key: 'c6827e6f837f3707778c3b6b330b29907840e46c', class: "co-drop-zone__label", part: "label" }, this.label)))));
61
+ return (h(Host, { key: '8c054ca976730d2a6d31026a7da431e38fb61d9d', class: { 'co-drop-zone': true, 'co-drop-zone--active': this.active }, part: "host", style: { '--co-drop-zone-accent': this.accent }, onDragEnter: this.handleDragEnter, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, onDrop: this.handleDrop }, h("slot", { key: '478ff353fc8c88d719a054bdd302ffeeec06a238' }), this.active && (h("div", { key: '64310825f2556838d525541f6dba33af521f1c2f', class: "co-drop-zone__overlay", part: "overlay" }, h("div", { key: '5567646e887cfd23a4c5e987cc0f9b7cbcda247e', class: "co-drop-zone__badge", part: "badge" }, h("co-icon", { key: '8b50b8e1615d13efaad52ef03ede3afdc4dd7869', name: this.icon, size: 34 })), h("span", { key: '10209ab792204eff4ddc86c08aac950cfae50ec1', class: "co-drop-zone__label", part: "label" }, this.label)))));
62
62
  }
63
63
  static get is() { return "co-drop-zone"; }
64
64
  static get encapsulation() { return "shadow"; }
@@ -383,14 +383,14 @@ export class CoEmojiPicker {
383
383
  const stripCategories = hasRecent
384
384
  ? [RECENT_CATEGORY, ...EMOJI_CATEGORIES]
385
385
  : [...EMOJI_CATEGORIES];
386
- return (h("div", { key: '7f3da124283afb57ac05c388746d07a7f63a0eca', class: "co-emoji-picker", part: "panel", role: "group", "aria-label": this.label || s.pickerLabel, style: { '--co-emoji-picker-columns': String(Math.max(1, this.columns)) }, onKeyDown: this.handleKeyDown }, this.searchable && (h("div", { key: 'eb4efeeed738dc094f155bc7bdc907e3075c2dad', class: "co-emoji-picker__search", part: "search" }, h("co-icon", { key: '042c32db076e3628e9459304f12304c7c3d85ae9', name: "magnifying-glass", size: 16 }), h("input", { key: '21c74e3a55e9b332061e73812cff512807afaabc', class: "co-emoji-picker__input", part: "input", type: "text", value: this.term, placeholder: this.searchPlaceholder || s.searchPlaceholder, onInput: this.handleInput, ref: (el) => (this.inputEl = el), role: "combobox", "aria-expanded": "true", "aria-autocomplete": "list", "aria-controls": CoEmojiPicker.GRID_ID, "aria-activedescendant": activeCellId }), this.renderTones())), this.showCategories && (h("div", { key: '7b08cac53699f975e7f331e91700f6182d208cab', class: "co-emoji-picker__categories", part: "categories", "aria-label": s.categoriesLabel }, !this.searchable && this.renderTones(), stripCategories.map((category) => {
386
+ return (h("div", { key: '7c7dfc4be7b8f8ea44df0f6c988cd2462b5fbdab', class: "co-emoji-picker", part: "panel", role: "group", "aria-label": this.label || s.pickerLabel, style: { '--co-emoji-picker-columns': String(Math.max(1, this.columns)) }, onKeyDown: this.handleKeyDown }, this.searchable && (h("div", { key: 'd25a0e16ced7efd0bc92b2dd104e60ea926ae042', class: "co-emoji-picker__search", part: "search" }, h("co-icon", { key: '72d9381c9e5375e2a1f7c8a01ca4d5e9d9c69b5c', name: "magnifying-glass", size: 16 }), h("input", { key: '5dc6d956f35f8497e35915faf1eb6bec424e0978', class: "co-emoji-picker__input", part: "input", type: "text", value: this.term, placeholder: this.searchPlaceholder || s.searchPlaceholder, onInput: this.handleInput, ref: (el) => (this.inputEl = el), role: "combobox", "aria-expanded": "true", "aria-autocomplete": "list", "aria-controls": CoEmojiPicker.GRID_ID, "aria-activedescendant": activeCellId }), this.renderTones())), this.showCategories && (h("div", { key: 'f590a30901ad79dffe872381ac7d19f3bb8e4185', class: "co-emoji-picker__categories", part: "categories", "aria-label": s.categoriesLabel }, !this.searchable && this.renderTones(), stripCategories.map((category) => {
387
387
  var _a, _b;
388
388
  const name = (_a = s.categories[category]) !== null && _a !== void 0 ? _a : category;
389
389
  return (h("button", { type: "button", key: category, class: {
390
390
  'co-emoji-picker__category': true,
391
391
  'co-emoji-picker__category--active': category === activeCategory,
392
392
  }, "aria-label": name, "aria-current": category === activeCategory ? 'true' : undefined, title: name, onClick: () => this.jumpToCategory(category) }, h("co-icon", { name: (_b = EMOJI_CATEGORY_ICONS[category]) !== null && _b !== void 0 ? _b : 'circle', size: 16 })));
393
- }))), h("div", { key: '349078ee46f1833797620c5c97da23807b7db384', class: "co-emoji-picker__scroll", part: "grid", id: CoEmojiPicker.GRID_ID, role: "listbox", "aria-label": s.gridLabel, ref: (el) => (this.scrollEl = el), onScroll: this.handleScroll }, isEmpty ? (h("div", { class: "co-emoji-picker__empty" }, h("co-icon", { name: "magnifying-glass", size: 20 }), h("span", null, this.emptyMessage || s.emptyMessage))) : (this.renderRows(rows)))));
393
+ }))), h("div", { key: 'e2d0322703aef9efdf8b0aeec6b5021fbfaa15f8', class: "co-emoji-picker__scroll", part: "grid", id: CoEmojiPicker.GRID_ID, role: "listbox", "aria-label": s.gridLabel, ref: (el) => (this.scrollEl = el), onScroll: this.handleScroll }, isEmpty ? (h("div", { class: "co-emoji-picker__empty" }, h("co-icon", { name: "magnifying-glass", size: 20 }), h("span", null, this.emptyMessage || s.emptyMessage))) : (this.renderRows(rows)))));
394
394
  }
395
395
  static get is() { return "co-emoji-picker"; }
396
396
  static get encapsulation() { return "shadow"; }
@@ -85,3 +85,31 @@
85
85
  font-weight: 500;
86
86
  line-height: 1.25;
87
87
  }
88
+
89
+ /* ─── REVEAL ESCALONADO (receta tdev texts-reveal) ───────────────
90
+ Corre al montar: el empty-state entra cuando una carga resolvió vacía.
91
+ Delays con el longhand animation-delay (el guard lo permite siempre);
92
+ reduced-motion: zeroing global + fill both = estado final en un frame. */
93
+ .co-empty-state__icon,
94
+ .co-empty-state__heading,
95
+ .co-empty-state__description,
96
+ .co-empty-state__actions {
97
+ animation: co-empty-reveal var(--co-motion-duration-slower) var(--co-motion-ease-out) both;
98
+ }
99
+
100
+ .co-empty-state__heading { animation-delay: var(--co-motion-duration-instant); }
101
+ .co-empty-state__description { animation-delay: calc(var(--co-motion-duration-instant) * 2); }
102
+ .co-empty-state__actions { animation-delay: calc(var(--co-motion-duration-instant) * 3); }
103
+
104
+ @keyframes co-empty-reveal {
105
+ from {
106
+ opacity: 0;
107
+ transform: translateY(12px);
108
+ filter: blur(var(--co-motion-blur-md));
109
+ }
110
+ to {
111
+ opacity: 1;
112
+ transform: translateY(0);
113
+ filter: none;
114
+ }
115
+ }
@@ -13,11 +13,11 @@ export class CoEmptyState {
13
13
  render() {
14
14
  var _a;
15
15
  const iconWeight = (_a = this.iconWeight) !== null && _a !== void 0 ? _a : (this.variant === 'card' ? 'regular' : 'light');
16
- return (h("div", { key: 'e113826d18559a68ffae18ccf6529eea99d1e3e1', class: {
16
+ return (h("div", { key: '4011b99b59671ad38cf5c90b5adc1b42a0353817', class: {
17
17
  'co-empty-state': true,
18
18
  [`co-empty-state--${this.variant}`]: true,
19
19
  [`co-empty-state--${this.size}`]: true,
20
- }, part: "empty-state" }, this.icon && (h("div", { key: 'ada3644ee8b42e431b7d433f2240a3500caa2876', class: "co-empty-state__icon" }, h("co-icon", { key: 'ecfbb6c8ffefa7e919859a960bc56390f0c1403d', name: this.icon, size: 40, weight: iconWeight }))), this.heading && (h("div", { key: '3473ab221979388c12fb4f5c9dd4a0816f0a9eea', class: "co-empty-state__heading" }, this.heading)), this.description && (h("div", { key: '55065da69e04e5ac3d6859b28ecdb452320b9263', class: "co-empty-state__description" }, this.description)), h("div", { key: '2842e7935653e51f42fb389827abf7db433a00a4', class: "co-empty-state__actions" }, h("slot", { key: 'ed90d3aaced375020cfb4af1c1d44077fbba0f17' }))));
20
+ }, part: "empty-state" }, this.icon && (h("div", { key: 'a6899c6690bb8b9fcdd858fb63a30644b7094672', class: "co-empty-state__icon" }, h("co-icon", { key: '312945448815ae5be78074e03840909b04e5f3c4', name: this.icon, size: 40, weight: iconWeight }))), this.heading && (h("div", { key: '7fd7fdb5fc4922bf2c7d6aab5200bc80947c20ba', class: "co-empty-state__heading" }, this.heading)), this.description && (h("div", { key: 'da5cddc1aa7afc32ee30f59293f66f1e30507614', class: "co-empty-state__description" }, this.description)), h("div", { key: '940a1b9ffa4022a3ee2623b7a6892000c63abfd4', class: "co-empty-state__actions" }, h("slot", { key: 'b6b9fbd93e79890193500d5c3bbbe72d32fa1e20' }))));
21
21
  }
22
22
  static get is() { return "co-empty-state"; }
23
23
  static get encapsulation() { return "shadow"; }
@@ -223,10 +223,10 @@ export class CoEventCalendar {
223
223
  const t = getDateStrings(this.locale);
224
224
  const views = this.viewsList;
225
225
  const a = parseISO(this.anchor);
226
- return (h("div", { key: 'd0a147fee3fa5ad01d40dacbbc2a0b1adf8f3808', class: "cal" }, h("div", { key: '35feaa81dc6f139fcced1ee691864b1587b19931', class: "cal__toolbar", part: "toolbar" }, h("button", { key: 'd05cf866772e81bacd7c904ff31d7f5032431672', type: "button", class: "cal__btn", onClick: this.goToday }, (_a = t.today) !== null && _a !== void 0 ? _a : 'Today'), h("div", { key: 'b3c1389ec39de8121d807c8eec944751245b2324', class: "cal__title-group" }, h("button", { key: '17224b09c008cf0d5bae8e585f3ffc7981bf63bb', type: "button", class: "cal__icon-btn", "aria-label": t.prevMonth, onClick: this.goPrev }, h("co-icon", { key: '2bf18c14b972a6a2b0136e67279b743b69074060', name: "caret-left", size: 16 })), h("h2", { key: '7ad21c7a35e45355870f699ecbbe79099de7e7e6', class: "cal__title", "aria-live": "polite" }, this.title()), h("button", { key: '4bb0d0287b41b4f100d09c9627afeb91bc5b57d7', type: "button", class: "cal__icon-btn", "aria-label": t.nextMonth, onClick: this.goNext }, h("co-icon", { key: '9bf5ab51b1d31e4d5c8274be1ca5b71ef96335a1', name: "caret-right", size: 16 }))), views.length > 1 ? (h("div", { class: "cal__views", role: "tablist" }, views.map((v) => {
226
+ return (h("div", { key: 'eb07a859a28ba0d09a3880a77a5b122c1ae063fb', class: "cal" }, h("div", { key: '693683cddfad9a1aed4be0bf3651cfff8b2ba1c7', class: "cal__toolbar", part: "toolbar" }, h("button", { key: '48f8fc44179b2950ea0498205f8f8a5d91d33e04', type: "button", class: "cal__btn", onClick: this.goToday }, (_a = t.today) !== null && _a !== void 0 ? _a : 'Today'), h("div", { key: '387a1cee67da85bf72e791ca2adc67f7482eb629', class: "cal__title-group" }, h("button", { key: '24d316422fb98f7d7c66ed6154a90f54a56cab12', type: "button", class: "cal__icon-btn", "aria-label": t.prevMonth, onClick: this.goPrev }, h("co-icon", { key: 'd0c575fce693943e91de8c578bb3371bfdb6425a', name: "caret-left", size: 16 })), h("h2", { key: '1bc26dd2c49d67854a1fc922cffc519485437f6a', class: "cal__title", "aria-live": "polite" }, this.title()), h("button", { key: '0e152157ed337011d00699b450b6a5cd10016b97', type: "button", class: "cal__icon-btn", "aria-label": t.nextMonth, onClick: this.goNext }, h("co-icon", { key: 'c821a72abc278e325cadfeae54b4d2b05984d3ba', name: "caret-right", size: 16 }))), views.length > 1 ? (h("div", { class: "cal__views", role: "tablist" }, views.map((v) => {
227
227
  var _a;
228
228
  return (h("button", { type: "button", role: "tab", "aria-selected": this.view === v ? 'true' : 'false', class: { 'cal__view-btn': true, 'cal__view-btn--active': this.view === v }, onClick: () => this.switchView(v) }, (_a = t[v]) !== null && _a !== void 0 ? _a : v));
229
- }))) : (h("span", { class: "cal__views-spacer" }))), h("div", { key: '468dd7e859c0f9cbbe7d9e48e0c4cd55fdea2ddf', class: "cal__body", part: "body" }, this.view === 'month' ? (h("co-calendar-month", { loading: this.loading, events: this.normalized, year: a.year, month: a.month, locale: this.locale, firstDayOfWeek: this.firstDayOfWeek, timeZone: this.tz, minDate: this.minDate, maxDate: this.maxDate, editable: this.editable, selectable: this.selectable, maxLanes: this.dayMaxEvents, onCoDaySelect: this.handleDaySelect, onCoEventClick: this.handleEventClick, onCoEventDblClick: this.handleEventDblClick, onCoEventDrop: this.handleEventDrop, onCoMoreClick: this.handleMoreClick })) : this.view === 'week' || this.view === 'day' ? (h("co-calendar-timegrid", { loading: this.loading, events: this.normalized, dates: this.visibleDates, locale: this.locale, timeZone: this.tz, editable: this.editable, selectable: this.selectable, minDate: this.minDate, maxDate: this.maxDate, onCoRangeSelect: this.handleRangeSelect, onCoEventClick: this.handleEventClick, onCoEventDblClick: this.handleEventDblClick, onCoEventDrop: this.handleEventDrop, defaultDurationMinutes: this.defaultDurationMinutes, allDaySlot: this.allDaySlot, minTime: this.minTime, maxTime: this.maxTime, slotMinutes: this.slotMinutes, snapMinutes: this.snapMinutes, scrollTime: this.scrollTime, nowIndicator: this.nowIndicator })) : (h("div", { class: "cal__placeholder" }, h("co-icon", { name: "calendar-dots", size: 32 }), h("p", null, `${this.view} view — coming soon`))))));
229
+ }))) : (h("span", { class: "cal__views-spacer" }))), h("div", { key: '2472ed0d314a489f41f2f46dc7988ce8860a64c2', class: "cal__body", part: "body" }, this.view === 'month' ? (h("co-calendar-month", { loading: this.loading, events: this.normalized, year: a.year, month: a.month, locale: this.locale, firstDayOfWeek: this.firstDayOfWeek, timeZone: this.tz, minDate: this.minDate, maxDate: this.maxDate, editable: this.editable, selectable: this.selectable, maxLanes: this.dayMaxEvents, onCoDaySelect: this.handleDaySelect, onCoEventClick: this.handleEventClick, onCoEventDblClick: this.handleEventDblClick, onCoEventDrop: this.handleEventDrop, onCoMoreClick: this.handleMoreClick })) : this.view === 'week' || this.view === 'day' ? (h("co-calendar-timegrid", { loading: this.loading, events: this.normalized, dates: this.visibleDates, locale: this.locale, timeZone: this.tz, editable: this.editable, selectable: this.selectable, minDate: this.minDate, maxDate: this.maxDate, onCoRangeSelect: this.handleRangeSelect, onCoEventClick: this.handleEventClick, onCoEventDblClick: this.handleEventDblClick, onCoEventDrop: this.handleEventDrop, defaultDurationMinutes: this.defaultDurationMinutes, allDaySlot: this.allDaySlot, minTime: this.minTime, maxTime: this.maxTime, slotMinutes: this.slotMinutes, snapMinutes: this.snapMinutes, scrollTime: this.scrollTime, nowIndicator: this.nowIndicator })) : (h("div", { class: "cal__placeholder" }, h("co-icon", { name: "calendar-dots", size: 32 }), h("p", null, `${this.view} view — coming soon`))))));
230
230
  }
231
231
  static get is() { return "co-event-calendar"; }
232
232
  static get encapsulation() { return "shadow"; }
@@ -118,7 +118,7 @@ export class CoEventPopover {
118
118
  this.coClose.emit();
119
119
  }
120
120
  render() {
121
- return (h(Host, { key: '4a80f76492bda89a6082b4794f0c924ec929dc85' }, h("div", { key: 'e8ede438958439ae0e9f2689da9fcc88419b9837', class: "pop", popover: "manual", role: "dialog", "aria-modal": "false", "aria-label": this.popoverLabel, tabIndex: -1, ref: (el) => (this.panelEl = el) }, h("div", { key: 'f09ced9c1d8e312df3218929b267e976c64207e8', class: "pop__actions", part: "actions" }, h("slot", { key: '6cfe39bfca0783530950a4e9c482b17f2104157d', name: "actions" })), h("div", { key: '1f3938226f5767fd39d1e80c28f01f2daf023540', class: "pop__head" }, this.dot && h("span", { key: '729486152ea2ab84a72270deeef917ae89ddcdba', class: "pop__dot", style: this.color ? { background: this.color } : {} }), h("div", { key: '2b9f20c48495de4327ae9e27cf1fd305a860dc39', class: "pop__body", part: "body" }, h("slot", { key: '675ce278c7de391af91e8c9235a35aa85964726d' }))))));
121
+ return (h(Host, { key: '8febb91e9c26e67bdd8edde9bd95e24b9a6f4b04' }, h("div", { key: '1311c574b0bae76fb85952da3b5e8531d77e1b25', class: "pop", popover: "manual", role: "dialog", "aria-modal": "false", "aria-label": this.popoverLabel, tabIndex: -1, ref: (el) => (this.panelEl = el) }, h("div", { key: '9d275e1b245f0bd4f95ba13743d6a9080b3d581a', class: "pop__actions", part: "actions" }, h("slot", { key: '322fefefddfe8ba575185fa093a980197f267311', name: "actions" })), h("div", { key: '22243bc4a6d4723843c490b9fa41796f31f401f8', class: "pop__head" }, this.dot && h("span", { key: '09d3e746f133432f0946e023e93aa92bcf5f9952', class: "pop__dot", style: this.color ? { background: this.color } : {} }), h("div", { key: '27d6f3ca1896ea02e08515db3fc8a7a58a51daeb', class: "pop__body", part: "body" }, h("slot", { key: 'd098bfca183fe303f6cb85f496f7ed1914b5e26b' }))))));
122
122
  }
123
123
  static get is() { return "co-event-popover"; }
124
124
  static get encapsulation() { return "shadow"; }
@@ -28,7 +28,7 @@ export class CoFab {
28
28
  const iconSize = this.size === 'xl' ? 24 : this.size === 'l' ? 24 : this.size === 's' ? 18 : 20;
29
29
  const hasLabel = !!this.label;
30
30
  const hoverExpand = hasLabel && this.expandOnHover;
31
- return (h("button", { key: '33b456dcff41cacf4783c6aacdd8d99e6b699eff', class: {
31
+ return (h("button", { key: 'f0d1612601922430df403628c5349b322ee8e88d', class: {
32
32
  'co-fab': true,
33
33
  [`co-fab--${this.variant}`]: true,
34
34
  [`co-fab--${this.size}`]: true,
@@ -36,7 +36,7 @@ export class CoFab {
36
36
  'co-fab--hover-expand': hoverExpand,
37
37
  'co-fab--disabled': this.disabled,
38
38
  [`co-fab--${this.position}`]: this.position !== 'none',
39
- }, type: "button", disabled: this.disabled, onClick: this.handleClick, onPointerEnter: this.handleExpandMeasure, onFocusin: this.handleExpandMeasure, "aria-label": this.ariaLabelText || this.label || this.icon }, h("co-icon", { key: '4d7ab37bc111369fc17277ece2e397b4207ec3f4', name: this.icon, size: iconSize }), this.label && (h("span", { key: '7de41d3f16a27dc3ce66c6b1d2731f5774046630', class: "co-fab__label", ref: (el) => (this.labelEl = el) }, this.label))));
39
+ }, type: "button", disabled: this.disabled, onClick: this.handleClick, onPointerEnter: this.handleExpandMeasure, onFocusin: this.handleExpandMeasure, "aria-label": this.ariaLabelText || this.label || this.icon }, h("co-icon", { key: 'fc53d94af9263b20cfce36656608962158d480ab', name: this.icon, size: iconSize }), this.label && (h("span", { key: '5a16cdace79b8fb7b6ead260d14ee4ae018ed02b', class: "co-fab__label", ref: (el) => (this.labelEl = el) }, this.label))));
40
40
  }
41
41
  static get is() { return "co-fab"; }
42
42
  static get encapsulation() { return "shadow"; }
@@ -58,9 +58,8 @@
58
58
  justify-content: center;
59
59
  gap: var(--co-spacing-md);
60
60
  padding: var(--co-spacing-4xl) var(--co-spacing-2xl);
61
+ /* Sin backdrop-filter (D2): el dropzone va sobre la superficie del form → blur inerte. */
61
62
  background: color-mix(in srgb, var(--co-semantic-surface-hover) 55%, transparent);
62
- -webkit-backdrop-filter: blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate));
63
- backdrop-filter: blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate));
64
63
  border: 1px dashed var(--co-semantic-border-field);
65
64
  border-radius: var(--co-border-radius-sm);
66
65
  cursor: pointer;
@@ -179,6 +178,60 @@
179
178
  transform: scale(1.02);
180
179
  }
181
180
 
181
+ /* ---- Video card ----
182
+ Same card as an image, with the poster (or the type tile, when the server
183
+ produced no frame) under a play badge. Without the badge a poster reads as
184
+ a still photo and the file looks unplayable. */
185
+ .co-file-field__preview--video {
186
+ position: relative;
187
+ background: var(--co-color-base-negro);
188
+ }
189
+
190
+ .co-file-field__preview-play {
191
+ position: absolute;
192
+ inset: 0;
193
+ display: flex;
194
+ flex-direction: column;
195
+ align-items: center;
196
+ justify-content: center;
197
+ gap: var(--co-spacing-sm2);
198
+ color: var(--co-color-base-blanco);
199
+ /* The whole card is the button; the badge must never eat the click. */
200
+ pointer-events: none;
201
+ }
202
+
203
+ .co-file-field__preview-play-badge {
204
+ display: flex;
205
+ width: 40px;
206
+ height: 40px;
207
+ align-items: center;
208
+ justify-content: center;
209
+ border-radius: var(--co-border-radius-full);
210
+ /* 80% y no 50%: el badge se apoya sobre CUALQUIER frame, y sobre un póster
211
+ saturado un negro a medias se ensucia con el color de abajo. El aro
212
+ interior lo mantiene legible también sobre la tarjeta negra sin póster. */
213
+ background: var(--co-color-opacity-negro-80);
214
+ box-shadow: inset 0 0 0 1px var(--co-color-opacity-blanco-25);
215
+ transition: transform var(--co-motion-duration-base) var(--co-motion-ease-out);
216
+ }
217
+
218
+ .co-file-field__preview--video:hover .co-file-field__preview-play-badge {
219
+ transform: scale(1.08);
220
+ }
221
+
222
+ .co-file-field__preview-play-badge co-icon {
223
+ /* Optical centering: a play triangle's mass sits left of its bounding box. */
224
+ transform: translateX(1px);
225
+ }
226
+
227
+ .co-file-field__preview-ext {
228
+ font-family: var(--co-font-family-primary);
229
+ font-size: var(--co-font-size-12);
230
+ font-weight: var(--co-font-weight-medium);
231
+ letter-spacing: var(--co-font-letter-spacing-overline);
232
+ color: var(--co-color-opacity-blanco-80);
233
+ }
234
+
182
235
  /* ---- File rows ---- */
183
236
  .co-file-field__list {
184
237
  list-style: none;
@@ -1,7 +1,7 @@
1
1
  import { h } from "@stencil/core";
2
2
  import { RequiredMark } from "../../utils/requiredMark";
3
3
  import { fillTemplate, getFileStrings } from "../../utils/fileI18n";
4
- import { formatBytes, isImage, previewSrc, truncateLeft } from "./co-file-field.utils";
4
+ import { fileExtension, formatBytes, isPreviewable, isVideo, previewSrc, truncateLeft, } from "./co-file-field.utils";
5
5
  /**
6
6
  * Host-driven file selector — renders a drop-zone + previews + a file list with
7
7
  * upload progress, but performs NO upload itself. When the user picks/drops
@@ -101,6 +101,14 @@ export class CoFileField {
101
101
  this.resetDragState();
102
102
  };
103
103
  }
104
+ /** Seeding `@State` here and not on the class field: the @stencil/vitest
105
+ * transform doesn't apply field defaults before the first render, so a
106
+ * `failedPreviews.has(...)` in render() would blow up on a bare Set
107
+ * (precedente co-data-table / co-audio-player). */
108
+ componentWillLoad() {
109
+ if (!this.failedPreviews)
110
+ this.failedPreviews = new Set();
111
+ }
104
112
  connectedCallback() {
105
113
  window.addEventListener('mouseup', this.disarmDrag);
106
114
  }
@@ -241,6 +249,17 @@ export class CoFileField {
241
249
  }
242
250
  }
243
251
  // ── Preview (in-app lightbox) ─────────────────────────────────
252
+ /**
253
+ * The previews grid and the lightbox gallery MUST agree on what they show,
254
+ * or the index the viewer opens on points at the wrong file. One factory,
255
+ * two call sites.
256
+ *
257
+ * A video stays in the grid even when its poster fails to load (the card
258
+ * falls back to the type tile) — dropping it would leave no way to play it.
259
+ */
260
+ previewItems() {
261
+ return this.parsedFiles.filter((it) => isPreviewable(it) && (isVideo(it) || !this.failedPreviews.has(this.keyFor(it))));
262
+ }
244
263
  /**
245
264
  * Opens the clicked image in a co-lightbox with the SAME gallery the
246
265
  * previews grid shows. The lightbox is created imperatively on
@@ -252,12 +271,10 @@ export class CoFileField {
252
271
  if (!url)
253
272
  return;
254
273
  this.coPreviewOpen.emit({ id: this.keyFor(item), url });
255
- const gallery = this.parsedFiles.filter((it) => isImage(it) && !this.failedPreviews.has(this.keyFor(it)));
256
- const images = gallery.map((it) => ({
257
- src: previewSrc(it),
258
- thumbnail: it.thumbnail,
259
- alt: it.name,
260
- }));
274
+ const gallery = this.previewItems();
275
+ const images = gallery.map((it) => isVideo(it)
276
+ ? { src: previewSrc(it), thumbnail: it.thumbnail, alt: it.name, kind: 'video', poster: it.thumbnail }
277
+ : { src: previewSrc(it), thumbnail: it.thumbnail, alt: it.name });
261
278
  const startIndex = Math.max(0, gallery.findIndex((it) => this.keyFor(it) === this.keyFor(item)));
262
279
  this.closeLightbox();
263
280
  const lb = document.createElement('co-lightbox');
@@ -338,15 +355,15 @@ export class CoFileField {
338
355
  const atCapacity = this.multiple && items.length >= this.maxFiles;
339
356
  const showDropzone = !this.readonly && (this.multiple ? !atCapacity : items.length === 0);
340
357
  const statusClass = this.status !== 'default' ? `co-file-field--${this.status}` : '';
341
- const previews = items.filter((it) => isImage(it) && !this.failedPreviews.has(this.keyFor(it)));
358
+ const previews = this.previewItems();
342
359
  const canReorder = this.reorderable && this.multiple && !this.disabled && !this.readonly && items.length > 1;
343
360
  const capacity = this.capacityHint(s);
344
- return (h("div", { key: '615291bd9c075d4f26f264602da03427e13bf35b', class: {
361
+ return (h("div", { key: '47a8258c141901fcb3621a24d638f0849946172e', class: {
345
362
  'co-file-field': true,
346
363
  'co-file-field--disabled': this.disabled,
347
364
  'co-file-field--invalid': this.isInvalid,
348
365
  [statusClass]: !!statusClass,
349
- }, part: "wrapper" }, this.label && (h("div", { key: '0c4fbdb6c5824824bbe39a96c568f06f442955ef', class: "co-file-field__labels" }, h("label", { key: '4f8767b17adcd04d553c2cf6668c60c30a780783', class: "co-file-field__label", part: "label" }, this.label, h(RequiredMark, { key: '82fb4a69b136fcdcdd3b3e81ea8d2deb8ca64e10', required: this.required })))), showDropzone && (h("div", { key: 'bce9efbedf17d917ae4bf00ae839409f63e4cccd', class: {
366
+ }, part: "wrapper" }, this.label && (h("div", { key: '603d04815a5730f45a2462d6c2904de4c7aa83af', class: "co-file-field__labels" }, h("label", { key: 'e280970feef1f6fad7c9ce336a5002746231a7c6', class: "co-file-field__label", part: "label" }, this.label, h(RequiredMark, { key: '075b35392df1a5be556dcc9dcbd2130d0a3c91a1', required: this.required })))), showDropzone && (h("div", { key: 'd9dec9f08bc063239bd7b75acc43813ab3f9aebb', class: {
350
367
  'co-file-field__dropzone': true,
351
368
  'co-file-field__dropzone--drag': this.dragOver,
352
369
  }, part: "dropzone", role: "button", tabIndex: this.disabled ? -1 : 0, onClick: this.handleBrowse, onKeyDown: (e) => {
@@ -354,7 +371,18 @@ export class CoFileField {
354
371
  e.preventDefault();
355
372
  this.handleBrowse();
356
373
  }
357
- }, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, onDrop: this.handleDrop }, h("button", { key: '82c82cf57f9692bc560d4c82e0bc22a539e25e08', class: "co-file-field__upload-btn", part: "upload-button", type: "button", tabIndex: -1 }, h("co-icon", { key: 'e2dc567ce78647717c894c877334e2eecab6b80e', name: "file-arrow-up", size: 18 }), h("span", { key: '9c0082e62f13a53d5d598623e35678db84df52b3' }, this.uploadButtonText || s.uploadButton)), h("span", { key: '3f43f21c3fb54f1d21143aa7cdf9a485ee89cf69', class: "co-file-field__dropzone-text" }, this.dropText || s.dropHint), capacity && h("span", { key: 'd4b2a12ffde1a17c5f1cdded7fb50f035ffb6f0c', class: "co-file-field__dropzone-hint" }, capacity), h("div", { key: '38e36894d82bb094d4dbd37fb10b915607bf3f13', class: "co-file-field__actions", part: "actions" }, h("slot", { key: '993f64d18baed0474f29e50418bd5883ac6bc90c', name: "actions" })), h("input", { key: '33dcec562a9c266ca3920537297ddbff2688a0a3', ref: (el) => (this.inputEl = el), class: "co-file-field__input", type: "file", multiple: this.multiple, accept: this.inputAccept, disabled: this.disabled, onChange: this.handleInputChange, "aria-hidden": "true", tabIndex: -1 }))), items.length > 0 && (h("div", { key: 'a78a747ee890c15d082c99770c0a8487405301ee', class: "co-file-field__uploaded" }, this.multiple && (h("div", { key: '08336c691f85e1c39216779a850e1c4eb4ad92eb', class: "co-file-field__uploaded-title", part: "uploaded-title" }, `${this.uploadedTitle || s.uploadedTitle} (${items.length})`)), previews.length > 0 && (h("div", { key: '374c52cbaf91ab19d1781c6f4faaed809146aea5', class: "co-file-field__previews", part: "previews" }, previews.map((item) => (h("button", { class: "co-file-field__preview", part: "preview", type: "button", key: `prev-${this.keyFor(item)}`, title: item.name, "aria-label": s.openPreview, onClick: () => this.handlePreviewOpen(item) }, h("img", { src: item.thumbnail || item.url, alt: item.name, loading: "lazy", onError: () => this.handlePreviewError(item) })))))), h("ul", { key: '93ab31f0a3567287db8de9b5b00f4e3772988c82', class: "co-file-field__list", part: "list" }, items.map((item) => {
374
+ }, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, onDrop: this.handleDrop }, h("button", { key: '61afb508be3e46257e2ffdb2bdc62d66e37055ed', class: "co-file-field__upload-btn", part: "upload-button", type: "button", tabIndex: -1 }, h("co-icon", { key: '96bb8ef3107abbee44fb5bd7c80ff2cbf39915ec', name: "file-arrow-up", size: 18 }), h("span", { key: '53950664f09064e29d1427530058e0634b287a92' }, this.uploadButtonText || s.uploadButton)), h("span", { key: 'de085f9dac492ea1b7db278a34e25ec2a8baa1d3', class: "co-file-field__dropzone-text" }, this.dropText || s.dropHint), capacity && h("span", { key: '1617a52c9773a31ff8617e7310401a95911ecc2f', class: "co-file-field__dropzone-hint" }, capacity), h("div", { key: 'f6f07691b5ec339f2ae0fa302415dd3dba04fe69', class: "co-file-field__actions", part: "actions" }, h("slot", { key: 'b5332b03438a34a82ffb565b1d2901a69729af61', name: "actions" })), h("input", { key: '5d0089ebcd857f1fa97bedcd743ab0530e75715a', ref: (el) => (this.inputEl = el), class: "co-file-field__input", type: "file", multiple: this.multiple, accept: this.inputAccept, disabled: this.disabled, onChange: this.handleInputChange, "aria-hidden": "true", tabIndex: -1 }))), items.length > 0 && (h("div", { key: 'cec19c438ec510dbae564c33dd3e6b739e156294', class: "co-file-field__uploaded" }, this.multiple && (h("div", { key: 'e97f2fe09fb30521d5b22238d2714d8f1002a2ed', class: "co-file-field__uploaded-title", part: "uploaded-title" }, `${this.uploadedTitle || s.uploadedTitle} (${items.length})`)), previews.length > 0 && (h("div", { key: '569f37799d34182ff00996dd011232daf7f141a8', class: "co-file-field__previews", part: "previews" }, previews.map((item) => {
375
+ const key = this.keyFor(item);
376
+ const video = isVideo(item);
377
+ // A video without a usable poster still gets a card — the
378
+ // type tile stands in for the frame we don't have.
379
+ const poster = this.failedPreviews.has(key) ? '' : item.thumbnail;
380
+ const showImg = !video || !!poster;
381
+ return (h("button", { class: {
382
+ 'co-file-field__preview': true,
383
+ 'co-file-field__preview--video': video,
384
+ }, part: "preview", type: "button", key: `prev-${key}`, title: item.name, "aria-label": `${video ? s.playVideo : s.openPreview}: ${item.name}`, onClick: () => this.handlePreviewOpen(item) }, showImg && (h("img", { src: video ? poster : item.thumbnail || item.url, alt: item.name, loading: "lazy", onError: () => this.handlePreviewError(item) })), video && (h("span", { class: "co-file-field__preview-play", "aria-hidden": "true" }, h("span", { class: "co-file-field__preview-play-badge" }, h("co-icon", { name: "play", size: 20, weight: "fill" })), !poster && (h("span", { class: "co-file-field__preview-ext" }, fileExtension(item).toUpperCase()))))));
385
+ }))), h("ul", { key: '2de5c71b79f82cd50c5aea5818d9848956eeb1eb', class: "co-file-field__list", part: "list" }, items.map((item) => {
358
386
  const key = this.keyFor(item);
359
387
  const draggable = canReorder && item.status === 'done';
360
388
  return (h("li", { class: {
@@ -378,10 +406,10 @@ export class CoFileField {
378
406
  'co-file-field__action': true,
379
407
  'co-file-field__action--copied': this.copiedKey === key,
380
408
  }, type: "button", tabIndex: -1, "aria-label": s.copyUrl, onClick: () => this.handleCopy(item) }, h("co-icon", { name: this.copiedKey === key ? 'check' : 'copy', size: 18 })))), !this.disabled && !this.readonly && (h("co-tooltip", { content: s.removeFile }, h("button", { class: "co-file-field__action", type: "button", tabIndex: -1, "aria-label": s.removeFile, onClick: () => this.coRemove.emit(key) }, h("co-icon", { name: "trash", size: 18 }))))));
381
- })))), helper && (h("div", { key: 'd05514a8115362aa08a872baaf1293a55048ad79', class: {
409
+ })))), helper && (h("div", { key: 'a6a14de91f12490b54717153520e3f59b9c9ef10', class: {
382
410
  'co-file-field__helper': true,
383
411
  'co-file-field__helper--error': this.isInvalid,
384
- }, part: "helper" }, this.isInvalid && (h("co-icon", { key: '0e5f2c0feb7dff2da1d549b498ed1e7ae6051448', name: "warning-circle", size: 14, class: "co-file-field__helper-icon" })), h("span", { key: '716ea5cc929a44f1da1984952da2bb5a9ce0a791', class: "co-file-field__helper-text" }, helper)))));
412
+ }, part: "helper" }, this.isInvalid && (h("co-icon", { key: '500ff53b0e1b4f894891bfc3f442ca170a2da2d0', name: "warning-circle", size: 14, class: "co-file-field__helper-icon" })), h("span", { key: 'c723bcbf23a6bcecb9f781aede09120f78fe9b55', class: "co-file-field__helper-text" }, helper)))));
385
413
  }
386
414
  static get is() { return "co-file-field"; }
387
415
  static get encapsulation() { return "shadow"; }
@@ -21,15 +21,55 @@ export function truncateLeft(name, max = 35) {
21
21
  return `...${name.slice(-max)}`;
22
22
  }
23
23
  const IMAGE_EXTS = new Set(['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'avif', 'bmp']);
24
- function hasImageExtension(item) {
25
- const base = (item.name || item.url || '').split('?')[0];
24
+ /** Containers a `<video>` can at least attempt to play. Kept in sync with the
25
+ * `video` bucket of co-file-type-tile (mp4/mov/webm) plus the two extra
26
+ * containers the browser handles natively. Whether the CODEC inside decodes
27
+ * is a runtime question — co-video reports that through its error state. */
28
+ const VIDEO_EXTS = new Set(['mp4', 'mov', 'webm', 'm4v', 'ogv']);
29
+ function extOf(source) {
30
+ const base = (source || '').split('?')[0];
26
31
  const i = base.lastIndexOf('.');
27
- return i >= 0 && IMAGE_EXTS.has(base.slice(i + 1).toLowerCase());
32
+ return i >= 0 ? base.slice(i + 1).toLowerCase() : '';
33
+ }
34
+ /**
35
+ * Lower-cased extension of an item — from its name, falling back to its url.
36
+ * The fallback is not decoration: hosts derive `name` from whatever the record
37
+ * gives them (form-vue: `fileName || name || originalName || id`), so a File
38
+ * populated without `fileName` arrives named after its id, extensionless, with
39
+ * the only ".mov" in sight sitting in the url.
40
+ */
41
+ export function fileExtension(item) {
42
+ return extOf(item.name) || extOf(item.url);
43
+ }
44
+ function hasImageExtension(item) {
45
+ return IMAGE_EXTS.has(fileExtension(item));
46
+ }
47
+ function hasVideoExtension(item) {
48
+ return VIDEO_EXTS.has(fileExtension(item));
49
+ }
50
+ /**
51
+ * A stored video we can hand to a player. `url` is required on purpose: the
52
+ * thumbnail is a poster frame, not the media — an item with only a poster has
53
+ * nothing to play.
54
+ */
55
+ export function isVideo(item) {
56
+ if (item.status !== 'done')
57
+ return false;
58
+ if (!item.url)
59
+ return false;
60
+ return hasVideoExtension(item);
28
61
  }
29
62
  /** An item renders in the previews grid when it's a stored image we can show. */
30
63
  export function isImage(item) {
31
64
  if (item.status !== 'done')
32
65
  return false;
66
+ // A video ships with a server-generated poster; that thumbnail must NOT
67
+ // promote it to "image", or clicking the card opens a still frame in an
68
+ // <img> and the file looks unplayable. Only a PLAYABLE video is excluded
69
+ // though: one whose url never came through has nothing but its poster, and
70
+ // showing that (as this field always did) beats dropping the card.
71
+ if (isVideo(item))
72
+ return false;
33
73
  const src = item.thumbnail || item.url;
34
74
  if (!src)
35
75
  return false;
@@ -37,11 +77,18 @@ export function isImage(item) {
37
77
  return true;
38
78
  return hasImageExtension(item);
39
79
  }
80
+ /** Items that earn a card in the previews grid: images and videos alike. */
81
+ export function isPreviewable(item) {
82
+ return isImage(item) || isVideo(item);
83
+ }
40
84
  /**
41
85
  * Best lightbox source: the original `url` only when it is itself an image —
42
86
  * a PDF that entered the grid via its server-generated thumbnail must open
43
- * the thumbnail (an `<img>` can't render the PDF).
87
+ * the thumbnail (an `<img>` can't render the PDF). A video always resolves to
88
+ * the media itself; its poster travels separately as the player's `poster`.
44
89
  */
45
90
  export function previewSrc(item) {
91
+ if (hasVideoExtension(item))
92
+ return item.url || item.thumbnail;
46
93
  return hasImageExtension(item) ? item.url || item.thumbnail : item.thumbnail || item.url;
47
94
  }
@@ -54,7 +54,7 @@ export class CoFileTypeTile {
54
54
  const iconSize = Math.round(this.size * 0.5);
55
55
  const background = this.colorTags ? meta.tint : 'var(--co-color-gray-100)';
56
56
  const color = this.colorTags ? meta.accent : 'var(--co-color-gray-600)';
57
- return (h("span", { key: 'adb6141d2b0d587d289d0d1c8f3887963a33261a', class: {
57
+ return (h("span", { key: '1df6dee1c0f729279f36463be6df9137bcbf4af0', class: {
58
58
  'co-file-type-tile': true,
59
59
  [`co-file-type-tile--${type}`]: true,
60
60
  'co-file-type-tile--mono': !this.colorTags,
@@ -64,7 +64,7 @@ export class CoFileTypeTile {
64
64
  borderRadius: `${this.radius}px`,
65
65
  background,
66
66
  color,
67
- } }, h("co-icon", { key: 'e409cbb4d9c2d08f9417058ec843a6466d875f04', name: meta.icon, size: iconSize, weight: "fill" })));
67
+ } }, h("co-icon", { key: '566163b957b853911e3eef15cd38c7573cf749b4', name: meta.icon, size: iconSize, weight: "fill" })));
68
68
  }
69
69
  static get is() { return "co-file-type-tile"; }
70
70
  static get encapsulation() { return "shadow"; }
@@ -15,10 +15,10 @@ export class CoHelperText {
15
15
  };
16
16
  }
17
17
  render() {
18
- return (h("div", { key: '09ca6f7214d2c25432ffb9e9fa90036d81c48200', class: {
18
+ return (h("div", { key: '2c4ae2b671b16dfda50eea3dd33b92c5661812fb', class: {
19
19
  'co-helper-text': true,
20
20
  [`co-helper-text--${this.status}`]: true,
21
- }, part: "helper-text" }, h("co-icon", { key: 'd3757438d31d6a14d4c52157197818846ac3fd11', name: this.STATUS_ICON[this.status], size: 14, weight: "fill", class: "co-helper-text__icon" }), h("span", { key: '7ae8d75fa07b8a6046e02d36c05b73676a68425e', class: "co-helper-text__message" }, h("slot", { key: 'd13a404f19f6b04d0b63aa2a4f68caf84d33e619' }, this.message))));
21
+ }, part: "helper-text" }, h("co-icon", { key: '18a15852e651204d06279be5a685c79ed927c6d0', name: this.STATUS_ICON[this.status], size: 14, weight: "fill", class: "co-helper-text__icon" }), h("span", { key: '62c3d084abd1b62f90b2631953f51306293b23b7', class: "co-helper-text__message" }, h("slot", { key: '06604123763ac0f84fe1bc2ec1dd840d6ee2756d' }, this.message))));
22
22
  }
23
23
  static get is() { return "co-helper-text"; }
24
24
  static get encapsulation() { return "shadow"; }
@@ -31,12 +31,12 @@ export class CoIcon {
31
31
  this.svgContent = await loadSvg(this.name, this.weight);
32
32
  }
33
33
  render() {
34
- return (h(Host, { key: '9fa97e09f5063eaa9b463f1bb7f06d4b277c8bc6', "aria-hidden": "true", style: {
34
+ return (h(Host, { key: 'a1f3cfef2067bd672a17c19666821b6fac0b3027', "aria-hidden": "true", style: {
35
35
  display: 'inline-flex',
36
36
  width: `${this.size}px`,
37
37
  height: `${this.size}px`,
38
38
  flexShrink: '0',
39
- } }, h("span", { key: '092068cc819b5d0cd63e15a5f3e0b7349cdb63cd', part: "svg", innerHTML: this.svgContent })));
39
+ } }, h("span", { key: 'cc92c6ea6d2ab5f59a7e793f166f2ae685f7928c', part: "svg", innerHTML: this.svgContent })));
40
40
  }
41
41
  static get is() { return "co-icon"; }
42
42
  static get encapsulation() { return "shadow"; }
@@ -24,8 +24,15 @@
24
24
  transform var(--co-motion-duration-fast) var(--co-motion-ease-out);
25
25
  box-sizing: border-box;
26
26
  -webkit-font-smoothing: antialiased;
27
- -webkit-backdrop-filter: var(--co-icon-button-backdrop-filter, blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate)));
28
- backdrop-filter: var(--co-icon-button-backdrop-filter, blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate)));
27
+ /* --co-icon-button-backdrop-filter: alias publicado (API), cero consumidores;
28
+ adentro la cadena canónica --co-glass-filter (none = opt-out).
29
+ ⚠️ El alias va POR FUERA de --co-glass-filter (orden prescrito por el spec):
30
+ un host que lo setee ESCAPA al opt-out global — ni --co-glass-filter: none
31
+ en un ancestro ni prefers-reduced-transparency apagan ese valor. No
32
+ introducir consumidores; para tunear usar --co-glass-blur/-saturate y para
33
+ apagar, --co-glass-filter: none en el subárbol. */
34
+ -webkit-backdrop-filter: var(--co-icon-button-backdrop-filter, var(--co-glass-filter, blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate))));
35
+ backdrop-filter: var(--co-icon-button-backdrop-filter, var(--co-glass-filter, blur(var(--co-glass-blur)) saturate(var(--co-glass-saturate))));
29
36
  }
30
37
 
31
38
  /* ─── VARIANTS ─────────────────────────────────────────────── */
@@ -169,3 +176,34 @@
169
176
  .co-icon-button--filled { background: var(--co-semantic-surface-primary); }
170
177
  .co-icon-button--outlined { background: var(--co-icon-button-bg, var(--co-semantic-surface-secondary)); }
171
178
  }
179
+
180
+ /* ─── ICON SWAP (receta tdev): ambos iconos apilados en una celda grid ── */
181
+ .co-icon-button__swap {
182
+ display: inline-grid;
183
+ }
184
+
185
+ .co-icon-button__swap > co-icon {
186
+ grid-area: 1 / 1;
187
+ transition:
188
+ opacity var(--co-motion-duration-base) var(--co-motion-ease-in-out),
189
+ transform var(--co-motion-duration-base) var(--co-motion-ease-in-out),
190
+ filter var(--co-motion-duration-base) var(--co-motion-ease-in-out);
191
+ }
192
+
193
+ .co-icon-button__swap > co-icon:last-child {
194
+ opacity: 0;
195
+ transform: scale(0.25);
196
+ filter: blur(var(--co-motion-blur-sm));
197
+ }
198
+
199
+ .co-icon-button__swap--toggled > co-icon:first-child {
200
+ opacity: 0;
201
+ transform: scale(0.25);
202
+ filter: blur(var(--co-motion-blur-sm));
203
+ }
204
+
205
+ .co-icon-button__swap--toggled > co-icon:last-child {
206
+ opacity: 1;
207
+ transform: scale(1);
208
+ filter: blur(0);
209
+ }