@prolibu-suite/cobalt-core 0.7.0 → 0.8.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 (515) hide show
  1. package/custom-elements.json +8266 -5138
  2. package/dist/cjs/co-action-bar.cjs.entry.js +89 -0
  3. package/dist/cjs/co-app-shell.cjs.entry.js +2 -2
  4. package/dist/cjs/co-audio-player.cjs.entry.js +279 -0
  5. package/dist/cjs/co-avatar_2.cjs.entry.js +3 -3
  6. package/dist/cjs/co-badge.cjs.entry.js +1 -1
  7. package/dist/cjs/co-bottom-sheet.cjs.entry.js +3 -3
  8. package/dist/cjs/co-breadcrumb-item.cjs.entry.js +2 -2
  9. package/dist/cjs/co-breadcrumb.cjs.entry.js +1 -1
  10. package/dist/cjs/co-button-group.cjs.entry.js +2 -2
  11. package/dist/cjs/co-button.cjs.entry.js +12 -5
  12. package/dist/cjs/co-calendar-month_2.cjs.entry.js +1601 -0
  13. package/dist/cjs/co-calendar_3.cjs.entry.js +9 -9
  14. package/dist/cjs/co-card.cjs.entry.js +2 -2
  15. package/dist/cjs/co-carousel-item.cjs.entry.js +1 -1
  16. package/dist/cjs/co-carousel.cjs.entry.js +3 -3
  17. package/dist/cjs/co-checkbox.cjs.entry.js +4 -4
  18. package/dist/cjs/co-chip_2.cjs.entry.js +95 -6
  19. package/dist/cjs/co-color-picker.cjs.entry.js +2 -2
  20. package/dist/cjs/co-column-picker.cjs.entry.js +2 -2
  21. package/dist/cjs/co-data-table-pagination.cjs.entry.js +4 -4
  22. package/dist/cjs/co-data-table.cjs.entry.js +1 -1
  23. package/dist/cjs/co-date-picker.cjs.entry.js +1 -1
  24. package/dist/cjs/co-date-range-picker.cjs.entry.js +2 -2
  25. package/dist/cjs/co-date-range.cjs.entry.js +1 -1
  26. package/dist/cjs/co-date-time-picker.cjs.entry.js +409 -0
  27. package/dist/cjs/co-drive-card.cjs.entry.js +1 -1
  28. package/dist/cjs/co-drop-zone.cjs.entry.js +1 -1
  29. package/dist/cjs/co-empty-state.cjs.entry.js +2 -2
  30. package/dist/cjs/co-event-calendar.cjs.entry.js +118 -17
  31. package/dist/cjs/co-event-popover.cjs.entry.js +132 -0
  32. package/dist/cjs/co-fab.cjs.entry.js +2 -2
  33. package/dist/cjs/co-file-field.cjs.entry.js +5 -5
  34. package/dist/cjs/co-file-type-tile.cjs.entry.js +2 -2
  35. package/dist/cjs/co-helper-text.cjs.entry.js +2 -2
  36. package/dist/cjs/co-icon-button.cjs.entry.js +1 -1
  37. package/dist/cjs/co-icon.cjs.entry.js +2 -2
  38. package/dist/cjs/co-json-field.cjs.entry.js +3 -3
  39. package/dist/cjs/co-lightbox.cjs.entry.js +5 -5
  40. package/dist/cjs/co-list-footer.cjs.entry.js +1 -1
  41. package/dist/cjs/co-list-item.cjs.entry.js +4 -4
  42. package/dist/cjs/co-media-thumb.cjs.entry.js +2 -2
  43. package/dist/cjs/co-menu-divider.cjs.entry.js +1 -1
  44. package/dist/cjs/co-menu-item.cjs.entry.js +2 -2
  45. package/dist/cjs/co-menu.cjs.entry.js +1 -1
  46. package/dist/cjs/co-modal.cjs.entry.js +2 -2
  47. package/dist/cjs/co-navbar.cjs.entry.js +2 -2
  48. package/dist/cjs/co-number-field.cjs.entry.js +2 -2
  49. package/dist/cjs/co-overlay.cjs.entry.js +1 -1
  50. package/dist/cjs/co-page-header.cjs.entry.js +1 -1
  51. package/dist/cjs/co-phone-field.cjs.entry.js +1 -1
  52. package/dist/cjs/co-popover.cjs.entry.js +1 -1
  53. package/dist/cjs/co-progress-bar.cjs.entry.js +2 -2
  54. package/dist/cjs/co-progress-circle.cjs.entry.js +2 -2
  55. package/dist/cjs/co-provider-logo_2.cjs.entry.js +72 -0
  56. package/dist/cjs/co-radio.cjs.entry.js +3 -3
  57. package/dist/cjs/co-rating.cjs.entry.js +3 -3
  58. package/dist/cjs/co-ref-field.cjs.entry.js +6 -2
  59. package/dist/cjs/co-rich-text-editor.cjs.entry.js +4 -4
  60. package/dist/cjs/co-rich-text-toolbar.cjs.entry.js +1 -1
  61. package/dist/cjs/co-row.cjs.entry.js +2 -2
  62. package/dist/cjs/co-select.cjs.entry.js +1 -1
  63. package/dist/cjs/co-separator.cjs.entry.js +1 -1
  64. package/dist/cjs/co-sidebar-nav.cjs.entry.js +12 -2
  65. package/dist/cjs/co-sidebar.cjs.entry.js +2 -2
  66. package/dist/cjs/co-slider.cjs.entry.js +2 -2
  67. package/dist/cjs/co-switch.cjs.entry.js +3 -3
  68. package/dist/cjs/co-tab-group.cjs.entry.js +19 -3
  69. package/dist/cjs/co-tab.cjs.entry.js +2 -2
  70. package/dist/cjs/co-tags-field.cjs.entry.js +5 -5
  71. package/dist/cjs/co-textarea.cjs.entry.js +4 -4
  72. package/dist/cjs/co-toggle-button-group.cjs.entry.js +2 -2
  73. package/dist/cjs/co-toggle-button.cjs.entry.js +2 -2
  74. package/dist/cjs/co-video.cjs.entry.js +2 -2
  75. package/dist/cjs/cobalt.cjs.js +1 -1
  76. package/dist/cjs/{dateI18n-BdiNAl0_.js → dateI18n-wblvKRq_.js} +21 -0
  77. package/dist/cjs/{dates-D8D-aS5d.js → dates-TQLHlFd2.js} +64 -13
  78. package/dist/cjs/index-kBiXCEE7.js +28 -12
  79. package/dist/cjs/loader.cjs.js +1 -1
  80. package/dist/cjs/{positioning-DwHW399W.js → positioning-DCj_AJ2T.js} +10 -0
  81. package/dist/cjs/time-LBHtzLHe.js +42 -0
  82. package/dist/cobalt/cobalt.esm.js +1 -1
  83. package/dist/cobalt/{p-616e4286.entry.js → p-00830b8c.entry.js} +1 -1
  84. package/dist/cobalt/{p-9994fcd8.entry.js → p-0769eee9.entry.js} +1 -1
  85. package/dist/cobalt/{p-9bf42bf4.entry.js → p-0f18c4d2.entry.js} +1 -1
  86. package/dist/cobalt/{p-cdedaa82.entry.js → p-0fc1edca.entry.js} +1 -1
  87. package/dist/cobalt/p-15852fec.entry.js +1 -0
  88. package/dist/cobalt/{p-eec1c44c.entry.js → p-195c67ee.entry.js} +1 -1
  89. package/dist/cobalt/{p-B6JZk8fL.js → p-1EK-COrb.js} +1 -1
  90. package/dist/cobalt/{p-2da09948.entry.js → p-1e9c9d46.entry.js} +1 -1
  91. package/dist/cobalt/{p-e1b468c1.entry.js → p-20bd3702.entry.js} +1 -1
  92. package/dist/cobalt/p-25f59046.entry.js +1 -0
  93. package/dist/cobalt/{p-b06af5c6.entry.js → p-260196cb.entry.js} +1 -1
  94. package/dist/cobalt/p-2bf44b2b.entry.js +1 -0
  95. package/dist/cobalt/{p-8155d781.entry.js → p-2c100914.entry.js} +1 -1
  96. package/dist/cobalt/p-2e1d930f.entry.js +1 -0
  97. package/dist/cobalt/{p-080f62e4.entry.js → p-35518aee.entry.js} +1 -1
  98. package/dist/cobalt/{p-28ab9cef.entry.js → p-38ae8bff.entry.js} +1 -1
  99. package/dist/cobalt/{p-f0a98453.entry.js → p-38cf47b6.entry.js} +1 -1
  100. package/dist/cobalt/p-39dea0c0.entry.js +1 -0
  101. package/dist/cobalt/{p-3c681e3a.entry.js → p-3a746267.entry.js} +1 -1
  102. package/dist/cobalt/p-3ae69426.entry.js +1 -0
  103. package/dist/cobalt/{p-9211e794.entry.js → p-3d4e697e.entry.js} +1 -1
  104. package/dist/cobalt/{p-264508ae.entry.js → p-445acc4c.entry.js} +1 -1
  105. package/dist/cobalt/p-4de9232a.entry.js +1 -0
  106. package/dist/cobalt/{p-7f78e45c.entry.js → p-50bbfad8.entry.js} +1 -1
  107. package/dist/cobalt/{p-54f8c68c.entry.js → p-51a1ad38.entry.js} +1 -1
  108. package/dist/cobalt/{p-75515a8e.entry.js → p-523aca9f.entry.js} +1 -1
  109. package/dist/cobalt/{p-2f6c7eb5.entry.js → p-52af222b.entry.js} +1 -1
  110. package/dist/cobalt/{p-0b7359bb.entry.js → p-59f7d44b.entry.js} +1 -1
  111. package/dist/cobalt/{p-4f615cbd.entry.js → p-5b984323.entry.js} +1 -1
  112. package/dist/cobalt/{p-8fe5b07e.entry.js → p-5bfaca70.entry.js} +1 -1
  113. package/dist/cobalt/p-5c1328ff.entry.js +1 -0
  114. package/dist/cobalt/p-5e21ca17.entry.js +1 -0
  115. package/dist/cobalt/p-61d5ca3c.entry.js +1 -0
  116. package/dist/cobalt/{p-64115d66.entry.js → p-6357d9dd.entry.js} +1 -1
  117. package/dist/cobalt/{p-0a294205.entry.js → p-6985a964.entry.js} +1 -1
  118. package/dist/cobalt/p-69b8d98e.entry.js +1 -0
  119. package/dist/cobalt/{p-532baca4.entry.js → p-6b089060.entry.js} +1 -1
  120. package/dist/cobalt/{p-ceb85838.entry.js → p-6b256d01.entry.js} +1 -1
  121. package/dist/cobalt/{p-c9528a5f.entry.js → p-7c6b3175.entry.js} +1 -1
  122. package/dist/cobalt/{p-431cec34.entry.js → p-7d077a7c.entry.js} +1 -1
  123. package/dist/cobalt/{p-cbac0a11.entry.js → p-7f4bf341.entry.js} +1 -1
  124. package/dist/cobalt/p-869c338a.entry.js +1 -0
  125. package/dist/cobalt/p-890296f9.entry.js +1 -0
  126. package/dist/cobalt/{p-7178113f.entry.js → p-8fe08257.entry.js} +1 -1
  127. package/dist/cobalt/p-913b2a14.entry.js +1 -0
  128. package/dist/cobalt/{p-5b84cf37.entry.js → p-959556f4.entry.js} +1 -1
  129. package/dist/cobalt/{p-331a0108.entry.js → p-99c1ff0f.entry.js} +1 -1
  130. package/dist/cobalt/p-BMdapAL8.js +1 -0
  131. package/dist/cobalt/p-BU7SQCje.js +1 -0
  132. package/dist/cobalt/p-CF8OB_TM.js +1 -0
  133. package/dist/cobalt/p-CnNpoKwg.js +1 -0
  134. package/dist/cobalt/{p-ba5c6aa7.entry.js → p-a04feb70.entry.js} +1 -1
  135. package/dist/cobalt/p-a4f39ba2.entry.js +1 -0
  136. package/dist/cobalt/{p-d3a1a604.entry.js → p-a7c23027.entry.js} +1 -1
  137. package/dist/cobalt/p-ab8e150e.entry.js +1 -0
  138. package/dist/cobalt/{p-69ce2269.entry.js → p-acdb68a7.entry.js} +1 -1
  139. package/dist/cobalt/{p-3b9be8a8.entry.js → p-afd957c0.entry.js} +1 -1
  140. package/dist/cobalt/{p-c3004e1c.entry.js → p-b45ea918.entry.js} +1 -1
  141. package/dist/cobalt/{p-eeed80ac.entry.js → p-bad7ce84.entry.js} +1 -1
  142. package/dist/cobalt/{p-bcd38114.entry.js → p-bebacee2.entry.js} +1 -1
  143. package/dist/cobalt/{p-ec9dd3a3.entry.js → p-c32949a5.entry.js} +1 -1
  144. package/dist/cobalt/p-cd5555d2.entry.js +1 -0
  145. package/dist/cobalt/p-cd96aabf.entry.js +1 -0
  146. package/dist/cobalt/{p-2661557c.entry.js → p-ce961fba.entry.js} +1 -1
  147. package/dist/cobalt/p-d56b8a1f.entry.js +1 -0
  148. package/dist/cobalt/{p-c7d9ff39.entry.js → p-d6fff135.entry.js} +1 -1
  149. package/dist/cobalt/{p-6b38e8fb.entry.js → p-d71b87d3.entry.js} +1 -1
  150. package/dist/cobalt/{p-ff581807.entry.js → p-d83e5189.entry.js} +1 -1
  151. package/dist/cobalt/{p-741cf623.entry.js → p-dc269096.entry.js} +1 -1
  152. package/dist/cobalt/{p-e4555fda.entry.js → p-dc8e88f4.entry.js} +1 -1
  153. package/dist/cobalt/p-de5a05fc.entry.js +1 -0
  154. package/dist/cobalt/{p-0110108f.entry.js → p-df63f23c.entry.js} +1 -1
  155. package/dist/cobalt/{p-9fab9c1f.entry.js → p-e2188319.entry.js} +1 -1
  156. package/dist/cobalt/p-f0c589ad.entry.js +1 -0
  157. package/dist/cobalt/p-f4370423.entry.js +1 -0
  158. package/dist/cobalt/{p-b87a2e7a.entry.js → p-f4e4bebf.entry.js} +1 -1
  159. package/dist/cobalt/p-f53b9536.entry.js +1 -0
  160. package/dist/cobalt/{p-bb00ae4a.entry.js → p-f7ae0228.entry.js} +1 -1
  161. package/dist/collection/collection-manifest.json +6 -0
  162. package/dist/collection/components/co-action-bar/co-action-bar.css +148 -0
  163. package/dist/collection/components/co-action-bar/co-action-bar.js +247 -0
  164. package/dist/collection/components/co-app-shell/co-app-shell.js +2 -2
  165. package/dist/collection/components/co-audio-player/co-audio-player.css +58 -0
  166. package/dist/collection/components/co-audio-player/co-audio-player.js +453 -0
  167. package/dist/collection/components/co-audio-player/co-audio-player.utils.js +44 -0
  168. package/dist/collection/components/co-badge/co-badge.js +1 -1
  169. package/dist/collection/components/co-bottom-sheet/co-bottom-sheet.js +3 -3
  170. package/dist/collection/components/co-breadcrumb/co-breadcrumb.js +1 -1
  171. package/dist/collection/components/co-breadcrumb-item/co-breadcrumb-item.js +2 -2
  172. package/dist/collection/components/co-button/co-button.css +19 -0
  173. package/dist/collection/components/co-button/co-button.js +31 -5
  174. package/dist/collection/components/co-button-group/co-button-group.js +2 -2
  175. package/dist/collection/components/co-calendar/co-calendar.js +1 -1
  176. package/dist/collection/components/co-calendar-month/co-calendar-month.css +52 -3
  177. package/dist/collection/components/co-calendar-month/co-calendar-month.js +238 -55
  178. package/dist/collection/components/co-calendar-timegrid/co-calendar-timegrid.css +265 -0
  179. package/dist/collection/components/co-calendar-timegrid/co-calendar-timegrid.js +1305 -0
  180. package/dist/collection/components/co-card/co-card.js +2 -2
  181. package/dist/collection/components/co-carousel/co-carousel.js +2 -2
  182. package/dist/collection/components/co-carousel-item/co-carousel-item.js +1 -1
  183. package/dist/collection/components/co-checkbox/co-checkbox.css +1 -1
  184. package/dist/collection/components/co-checkbox/co-checkbox.js +3 -3
  185. package/dist/collection/components/co-chip/co-chip.js +2 -2
  186. package/dist/collection/components/co-color-picker/co-color-picker.js +2 -2
  187. package/dist/collection/components/co-column-picker/co-column-picker.js +2 -2
  188. package/dist/collection/components/co-data-table/co-data-table.css +4 -4
  189. package/dist/collection/components/co-data-table-pagination/co-data-table-pagination.js +4 -4
  190. package/dist/collection/components/co-date-field/co-date-field.js +4 -4
  191. package/dist/collection/components/co-date-range/co-date-range.js +1 -1
  192. package/dist/collection/components/co-date-time-picker/co-date-time-picker.css +325 -0
  193. package/dist/collection/components/co-date-time-picker/co-date-time-picker.js +1079 -0
  194. package/dist/collection/components/co-drawer/co-drawer.css +46 -0
  195. package/dist/collection/components/co-drawer/co-drawer.js +1 -1
  196. package/dist/collection/components/co-drive-card/co-drive-card.js +1 -1
  197. package/dist/collection/components/co-drop-zone/co-drop-zone.js +1 -1
  198. package/dist/collection/components/co-empty-state/co-empty-state.js +2 -2
  199. package/dist/collection/components/co-event-calendar/co-event-calendar.css +19 -7
  200. package/dist/collection/components/co-event-calendar/co-event-calendar.js +342 -39
  201. package/dist/collection/components/co-event-popover/co-event-popover.css +26 -0
  202. package/dist/collection/components/co-event-popover/co-event-popover.js +326 -0
  203. package/dist/collection/components/co-fab/co-fab.js +2 -2
  204. package/dist/collection/components/co-file-field/co-file-field.js +5 -5
  205. package/dist/collection/components/co-file-type-tile/co-file-type-tile.js +2 -2
  206. package/dist/collection/components/co-helper-text/co-helper-text.js +2 -2
  207. package/dist/collection/components/co-icon/co-icon.js +2 -2
  208. package/dist/collection/components/co-icon-button/co-icon-button.js +1 -1
  209. package/dist/collection/components/co-json-field/co-json-field.js +3 -3
  210. package/dist/collection/components/co-lightbox/co-lightbox.js +4 -4
  211. package/dist/collection/components/co-list-footer/co-list-footer.js +1 -1
  212. package/dist/collection/components/co-list-item/co-list-item.js +4 -4
  213. package/dist/collection/components/co-media-thumb/co-media-thumb.js +2 -2
  214. package/dist/collection/components/co-menu/co-menu.js +1 -1
  215. package/dist/collection/components/co-menu-divider/co-menu-divider.js +1 -1
  216. package/dist/collection/components/co-menu-item/co-menu-item.css +21 -0
  217. package/dist/collection/components/co-menu-item/co-menu-item.js +20 -1
  218. package/dist/collection/components/co-modal/co-modal.js +2 -2
  219. package/dist/collection/components/co-navbar/co-navbar.js +2 -2
  220. package/dist/collection/components/co-number-field/co-number-field.js +2 -2
  221. package/dist/collection/components/co-option-list/co-option-list.css +18 -0
  222. package/dist/collection/components/co-option-list/co-option-list.js +127 -5
  223. package/dist/collection/components/co-option-list/optionListLogic.js +13 -0
  224. package/dist/collection/components/co-overlay/co-overlay.js +1 -1
  225. package/dist/collection/components/co-page-header/co-page-header.js +1 -1
  226. package/dist/collection/components/co-phone-field/co-phone-field.js +1 -1
  227. package/dist/collection/components/co-progress-bar/co-progress-bar.js +2 -2
  228. package/dist/collection/components/co-progress-circle/co-progress-circle.js +2 -2
  229. package/dist/collection/components/co-provider-logo/co-provider-logo.css +23 -0
  230. package/dist/collection/components/co-provider-logo/co-provider-logo.js +124 -0
  231. package/dist/collection/components/co-radio/co-radio.js +3 -3
  232. package/dist/collection/components/co-rating/co-rating.js +3 -3
  233. package/dist/collection/components/co-ref-field/co-ref-field.js +6 -2
  234. package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.css +11 -0
  235. package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.js +3 -3
  236. package/dist/collection/components/co-rich-text-toolbar/co-rich-text-toolbar.css +8 -0
  237. package/dist/collection/components/co-row/co-row.js +2 -2
  238. package/dist/collection/components/co-select/co-select.js +1 -1
  239. package/dist/collection/components/co-separator/co-separator.js +1 -1
  240. package/dist/collection/components/co-sidebar/co-sidebar.js +2 -2
  241. package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.js +12 -2
  242. package/dist/collection/components/co-skeleton/co-skeleton.js +1 -1
  243. package/dist/collection/components/co-slider/co-slider.js +2 -2
  244. package/dist/collection/components/co-switch/co-switch.js +3 -3
  245. package/dist/collection/components/co-tab/co-tab.js +2 -2
  246. package/dist/collection/components/co-tab-group/co-tab-group.css +25 -0
  247. package/dist/collection/components/co-tab-group/co-tab-group.js +18 -2
  248. package/dist/collection/components/co-tags-field/co-tags-field.js +5 -5
  249. package/dist/collection/components/co-textarea/co-textarea.js +4 -4
  250. package/dist/collection/components/co-toggle-button/co-toggle-button.js +2 -2
  251. package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.js +2 -2
  252. package/dist/collection/components/co-tooltip/co-tooltip.js +2 -2
  253. package/dist/collection/components/co-video/co-video.js +2 -2
  254. package/dist/collection/utils/dateI18n.js +21 -0
  255. package/dist/collection/utils/eventColor.js +52 -0
  256. package/dist/collection/utils/positioning.js +10 -0
  257. package/dist/components/co-accordion.js +1 -1
  258. package/dist/components/co-action-bar.d.ts +11 -0
  259. package/dist/components/co-action-bar.js +1 -0
  260. package/dist/components/co-app-shell.js +1 -1
  261. package/dist/components/co-audio-player.d.ts +11 -0
  262. package/dist/components/co-audio-player.js +1 -0
  263. package/dist/components/co-autocomplete.js +1 -1
  264. package/dist/components/co-avatar-group.js +1 -1
  265. package/dist/components/co-avatar.js +1 -1
  266. package/dist/components/co-badge.js +1 -1
  267. package/dist/components/co-bottom-sheet.js +1 -1
  268. package/dist/components/co-breadcrumb-item.js +1 -1
  269. package/dist/components/co-breadcrumb.js +1 -1
  270. package/dist/components/co-button-group.js +1 -1
  271. package/dist/components/co-button.js +1 -1
  272. package/dist/components/co-calendar-month.js +1 -1
  273. package/dist/components/co-calendar-timegrid.d.ts +11 -0
  274. package/dist/components/co-calendar-timegrid.js +1 -0
  275. package/dist/components/co-calendar.js +1 -1
  276. package/dist/components/co-card.js +1 -1
  277. package/dist/components/co-carousel-item.js +1 -1
  278. package/dist/components/co-carousel.js +1 -1
  279. package/dist/components/co-checkbox-group.js +1 -1
  280. package/dist/components/co-checkbox.js +1 -1
  281. package/dist/components/co-chip.js +1 -1
  282. package/dist/components/co-color-picker.js +1 -1
  283. package/dist/components/co-column-picker.js +1 -1
  284. package/dist/components/co-combobox.js +1 -1
  285. package/dist/components/co-command-search.js +1 -1
  286. package/dist/components/co-data-table-pagination.js +1 -1
  287. package/dist/components/co-data-table.js +1 -1
  288. package/dist/components/co-date-field.js +1 -1
  289. package/dist/components/co-date-picker.js +1 -1
  290. package/dist/components/co-date-range-picker.js +1 -1
  291. package/dist/components/co-date-range.js +1 -1
  292. package/dist/components/co-date-time-picker.d.ts +11 -0
  293. package/dist/components/co-date-time-picker.js +1 -0
  294. package/dist/components/co-drawer.js +1 -1
  295. package/dist/components/co-drive-card.js +1 -1
  296. package/dist/components/co-drop-zone.js +1 -1
  297. package/dist/components/co-empty-state.js +1 -1
  298. package/dist/components/co-event-calendar.js +1 -1
  299. package/dist/components/co-event-popover.d.ts +11 -0
  300. package/dist/components/co-event-popover.js +1 -0
  301. package/dist/components/co-fab.js +1 -1
  302. package/dist/components/co-file-field.js +1 -1
  303. package/dist/components/co-file-type-tile.js +1 -1
  304. package/dist/components/co-helper-text.js +1 -1
  305. package/dist/components/co-icon-button.js +1 -1
  306. package/dist/components/co-icon.js +1 -1
  307. package/dist/components/co-input.js +1 -1
  308. package/dist/components/co-json-field.js +1 -1
  309. package/dist/components/co-lightbox.js +1 -1
  310. package/dist/components/co-list-footer.js +1 -1
  311. package/dist/components/co-list-item.js +1 -1
  312. package/dist/components/co-media-thumb.js +1 -1
  313. package/dist/components/co-menu-divider.js +1 -1
  314. package/dist/components/co-menu-item.js +1 -1
  315. package/dist/components/co-menu.js +1 -1
  316. package/dist/components/co-modal.js +1 -1
  317. package/dist/components/co-navbar.js +1 -1
  318. package/dist/components/co-number-field.js +1 -1
  319. package/dist/components/co-option-list.js +1 -1
  320. package/dist/components/co-overlay.js +1 -1
  321. package/dist/components/co-page-header.js +1 -1
  322. package/dist/components/co-phone-field.js +1 -1
  323. package/dist/components/co-popover.js +1 -1
  324. package/dist/components/co-progress-bar.js +1 -1
  325. package/dist/components/co-progress-circle.js +1 -1
  326. package/dist/components/co-provider-logo.d.ts +11 -0
  327. package/dist/components/co-provider-logo.js +1 -0
  328. package/dist/components/co-radio-group.js +1 -1
  329. package/dist/components/co-radio.js +1 -1
  330. package/dist/components/co-rating.js +1 -1
  331. package/dist/components/co-ref-field.js +1 -1
  332. package/dist/components/co-rich-text-editor.js +1 -1
  333. package/dist/components/co-rich-text-toolbar.js +1 -1
  334. package/dist/components/co-row.js +1 -1
  335. package/dist/components/co-select.js +1 -1
  336. package/dist/components/co-separator.js +1 -1
  337. package/dist/components/co-sidebar-nav.js +1 -1
  338. package/dist/components/co-sidebar.js +1 -1
  339. package/dist/components/co-skeleton.js +1 -1
  340. package/dist/components/co-slider.js +1 -1
  341. package/dist/components/co-switch.js +1 -1
  342. package/dist/components/co-tab-group.js +1 -1
  343. package/dist/components/co-tab.js +1 -1
  344. package/dist/components/co-tags-field.js +1 -1
  345. package/dist/components/co-textarea.js +1 -1
  346. package/dist/components/co-toast.js +1 -1
  347. package/dist/components/co-toggle-button-group.js +1 -1
  348. package/dist/components/co-toggle-button.js +1 -1
  349. package/dist/components/co-tooltip.js +1 -1
  350. package/dist/components/co-transfer-list.js +1 -1
  351. package/dist/components/co-video.js +1 -1
  352. package/dist/components/p-B21rOC2Y.js +1 -0
  353. package/dist/components/{p-Cd3inFSL.js → p-BC6sxVVr.js} +1 -1
  354. package/dist/components/p-BMdapAL8.js +1 -0
  355. package/dist/components/p-BQFperIX.js +1 -0
  356. package/dist/components/{p-CQ-8domm.js → p-BXtiFFM2.js} +1 -1
  357. package/dist/components/{p-CmCsm4L-.js → p-BdArvV6T.js} +1 -1
  358. package/dist/components/p-BnkGlFYy.js +1 -0
  359. package/dist/components/p-C-5cLeKr.js +1 -0
  360. package/dist/components/p-CDWXNRpo.js +1 -0
  361. package/dist/components/p-CF8OB_TM.js +1 -0
  362. package/dist/components/{p-oV_1MoAN.js → p-CIWoKlGj.js} +1 -1
  363. package/dist/components/{p-Bul6EdDX.js → p-CVCEiwOS.js} +1 -1
  364. package/dist/components/{p-B0b9Etx4.js → p-CfeNhAHW.js} +1 -1
  365. package/dist/components/p-Ch837Ggl.js +1 -0
  366. package/dist/components/p-ChLib-si.js +1 -0
  367. package/dist/components/{p-DfpOEXHC.js → p-ChPooamL.js} +1 -1
  368. package/dist/components/p-CnNpoKwg.js +1 -0
  369. package/dist/components/{p-B7Yv00g9.js → p-D-3BTFRs.js} +1 -1
  370. package/dist/components/p-D0wrmRH8.js +1 -0
  371. package/dist/components/p-DZX7cEqP.js +1 -0
  372. package/dist/components/{p-B3U63yZw.js → p-DbISGXT_.js} +1 -1
  373. package/dist/components/p-Dxa7c4Ap.js +1 -0
  374. package/dist/components/p-T0MdU7sb.js +1 -0
  375. package/dist/components/{p-DwwxS5bY.js → p-W8Y8ZuPs.js} +1 -1
  376. package/dist/components/{p-9aNhJfTT.js → p-cteJszd-.js} +1 -1
  377. package/dist/components/p-e5KibEs8.js +1 -0
  378. package/dist/components/{p-Bzg5FPSA.js → p-mUoTCiYa.js} +1 -1
  379. package/dist/components/p-uZ2D6ESV.js +1 -0
  380. package/dist/components/{p-BtpRnpaF.js → p-ySi6UG0O.js} +1 -1
  381. package/dist/esm/co-action-bar.entry.js +87 -0
  382. package/dist/esm/co-app-shell.entry.js +2 -2
  383. package/dist/esm/co-audio-player.entry.js +277 -0
  384. package/dist/esm/co-avatar_2.entry.js +3 -3
  385. package/dist/esm/co-badge.entry.js +1 -1
  386. package/dist/esm/co-bottom-sheet.entry.js +3 -3
  387. package/dist/esm/co-breadcrumb-item.entry.js +2 -2
  388. package/dist/esm/co-breadcrumb.entry.js +1 -1
  389. package/dist/esm/co-button-group.entry.js +2 -2
  390. package/dist/esm/co-button.entry.js +12 -5
  391. package/dist/esm/co-calendar-month_2.entry.js +1598 -0
  392. package/dist/esm/co-calendar_3.entry.js +9 -9
  393. package/dist/esm/co-card.entry.js +2 -2
  394. package/dist/esm/co-carousel-item.entry.js +1 -1
  395. package/dist/esm/co-carousel.entry.js +3 -3
  396. package/dist/esm/co-checkbox.entry.js +4 -4
  397. package/dist/esm/co-chip_2.entry.js +95 -6
  398. package/dist/esm/co-color-picker.entry.js +2 -2
  399. package/dist/esm/co-column-picker.entry.js +2 -2
  400. package/dist/esm/co-data-table-pagination.entry.js +4 -4
  401. package/dist/esm/co-data-table.entry.js +1 -1
  402. package/dist/esm/co-date-picker.entry.js +1 -1
  403. package/dist/esm/co-date-range-picker.entry.js +2 -2
  404. package/dist/esm/co-date-range.entry.js +1 -1
  405. package/dist/esm/co-date-time-picker.entry.js +407 -0
  406. package/dist/esm/co-drive-card.entry.js +1 -1
  407. package/dist/esm/co-drop-zone.entry.js +1 -1
  408. package/dist/esm/co-empty-state.entry.js +2 -2
  409. package/dist/esm/co-event-calendar.entry.js +120 -19
  410. package/dist/esm/co-event-popover.entry.js +130 -0
  411. package/dist/esm/co-fab.entry.js +2 -2
  412. package/dist/esm/co-file-field.entry.js +5 -5
  413. package/dist/esm/co-file-type-tile.entry.js +2 -2
  414. package/dist/esm/co-helper-text.entry.js +2 -2
  415. package/dist/esm/co-icon-button.entry.js +1 -1
  416. package/dist/esm/co-icon.entry.js +2 -2
  417. package/dist/esm/co-json-field.entry.js +3 -3
  418. package/dist/esm/co-lightbox.entry.js +5 -5
  419. package/dist/esm/co-list-footer.entry.js +1 -1
  420. package/dist/esm/co-list-item.entry.js +4 -4
  421. package/dist/esm/co-media-thumb.entry.js +2 -2
  422. package/dist/esm/co-menu-divider.entry.js +1 -1
  423. package/dist/esm/co-menu-item.entry.js +2 -2
  424. package/dist/esm/co-menu.entry.js +1 -1
  425. package/dist/esm/co-modal.entry.js +2 -2
  426. package/dist/esm/co-navbar.entry.js +2 -2
  427. package/dist/esm/co-number-field.entry.js +2 -2
  428. package/dist/esm/co-overlay.entry.js +1 -1
  429. package/dist/esm/co-page-header.entry.js +1 -1
  430. package/dist/esm/co-phone-field.entry.js +1 -1
  431. package/dist/esm/co-popover.entry.js +1 -1
  432. package/dist/esm/co-progress-bar.entry.js +2 -2
  433. package/dist/esm/co-progress-circle.entry.js +2 -2
  434. package/dist/esm/co-provider-logo_2.entry.js +69 -0
  435. package/dist/esm/co-radio.entry.js +3 -3
  436. package/dist/esm/co-rating.entry.js +3 -3
  437. package/dist/esm/co-ref-field.entry.js +6 -2
  438. package/dist/esm/co-rich-text-editor.entry.js +4 -4
  439. package/dist/esm/co-rich-text-toolbar.entry.js +1 -1
  440. package/dist/esm/co-row.entry.js +2 -2
  441. package/dist/esm/co-select.entry.js +1 -1
  442. package/dist/esm/co-separator.entry.js +1 -1
  443. package/dist/esm/co-sidebar-nav.entry.js +12 -2
  444. package/dist/esm/co-sidebar.entry.js +2 -2
  445. package/dist/esm/co-slider.entry.js +2 -2
  446. package/dist/esm/co-switch.entry.js +3 -3
  447. package/dist/esm/co-tab-group.entry.js +19 -3
  448. package/dist/esm/co-tab.entry.js +2 -2
  449. package/dist/esm/co-tags-field.entry.js +5 -5
  450. package/dist/esm/co-textarea.entry.js +4 -4
  451. package/dist/esm/co-toggle-button-group.entry.js +2 -2
  452. package/dist/esm/co-toggle-button.entry.js +2 -2
  453. package/dist/esm/co-video.entry.js +2 -2
  454. package/dist/esm/cobalt.js +1 -1
  455. package/dist/esm/{dateI18n-C1DCLOEl.js → dateI18n-CnNpoKwg.js} +21 -0
  456. package/dist/esm/{dates-tPYikBRJ.js → dates-BU7SQCje.js} +64 -13
  457. package/dist/esm/index-BCEz3S-z.js +28 -12
  458. package/dist/esm/loader.js +1 -1
  459. package/dist/esm/{positioning-C2mZ7x_Y.js → positioning-BMdapAL8.js} +10 -0
  460. package/dist/esm/time-CF8OB_TM.js +37 -0
  461. package/dist/esm/{tz-B6JZk8fL.js → tz-1EK-COrb.js} +1 -1
  462. package/dist/types/components/co-action-bar/co-action-bar.d.ts +66 -0
  463. package/dist/types/components/co-audio-player/co-audio-player.d.ts +62 -0
  464. package/dist/types/components/co-audio-player/co-audio-player.utils.d.ts +11 -0
  465. package/dist/types/components/co-button/co-button.d.ts +18 -1
  466. package/dist/types/components/co-calendar-month/co-calendar-month.d.ts +33 -1
  467. package/dist/types/components/co-calendar-timegrid/co-calendar-timegrid.d.ts +178 -0
  468. package/dist/types/components/co-date-time-picker/co-date-time-picker.d.ts +131 -0
  469. package/dist/types/components/co-event-calendar/co-event-calendar.d.ts +61 -8
  470. package/dist/types/components/co-event-popover/co-event-popover.d.ts +45 -0
  471. package/dist/types/components/co-menu-item/co-menu-item.d.ts +3 -0
  472. package/dist/types/components/co-option-list/co-option-list.d.ts +23 -0
  473. package/dist/types/components/co-option-list/optionListLogic.d.ts +3 -0
  474. package/dist/types/components/co-provider-logo/co-provider-logo.d.ts +17 -0
  475. package/dist/types/components/co-ref-field/co-ref-field.d.ts +1 -0
  476. package/dist/types/components/co-tab-group/co-tab-group.d.ts +5 -0
  477. package/dist/types/components.d.ts +1245 -76
  478. package/dist/types/utils/dateI18n.d.ts +7 -0
  479. package/dist/types/utils/eventColor.d.ts +20 -0
  480. package/package.json +2 -2
  481. package/dist/cjs/co-calendar-month.cjs.entry.js +0 -381
  482. package/dist/cjs/co-skeleton.cjs.entry.js +0 -26
  483. package/dist/cobalt/p-037cc571.entry.js +0 -1
  484. package/dist/cobalt/p-0b92167a.entry.js +0 -1
  485. package/dist/cobalt/p-0bc5a962.entry.js +0 -1
  486. package/dist/cobalt/p-30c80e3a.entry.js +0 -1
  487. package/dist/cobalt/p-36ad3a96.entry.js +0 -1
  488. package/dist/cobalt/p-3ecbbe93.entry.js +0 -1
  489. package/dist/cobalt/p-3f1030fb.entry.js +0 -1
  490. package/dist/cobalt/p-3f7215e7.entry.js +0 -1
  491. package/dist/cobalt/p-54857f78.entry.js +0 -1
  492. package/dist/cobalt/p-585c132d.entry.js +0 -1
  493. package/dist/cobalt/p-59b114ab.entry.js +0 -1
  494. package/dist/cobalt/p-5d0510a5.entry.js +0 -1
  495. package/dist/cobalt/p-5e246304.entry.js +0 -1
  496. package/dist/cobalt/p-C1DCLOEl.js +0 -1
  497. package/dist/cobalt/p-C2mZ7x_Y.js +0 -1
  498. package/dist/cobalt/p-c589ae25.entry.js +0 -1
  499. package/dist/cobalt/p-c635417b.entry.js +0 -1
  500. package/dist/cobalt/p-cd28aa6d.entry.js +0 -1
  501. package/dist/cobalt/p-d71b800a.entry.js +0 -1
  502. package/dist/cobalt/p-df752f6e.entry.js +0 -1
  503. package/dist/cobalt/p-fffeb610.entry.js +0 -1
  504. package/dist/cobalt/p-tPYikBRJ.js +0 -1
  505. package/dist/components/p-BTa6ss5i.js +0 -1
  506. package/dist/components/p-C1DCLOEl.js +0 -1
  507. package/dist/components/p-C2mZ7x_Y.js +0 -1
  508. package/dist/components/p-CVeEoHr7.js +0 -1
  509. package/dist/components/p-CYi6V_Ss.js +0 -1
  510. package/dist/components/p-CuQjKAf5.js +0 -1
  511. package/dist/components/p-CyYF8IJE.js +0 -1
  512. package/dist/components/p-DKvTqEaf.js +0 -1
  513. package/dist/components/p-T0UfY6rA.js +0 -1
  514. package/dist/esm/co-calendar-month.entry.js +0 -379
  515. package/dist/esm/co-skeleton.entry.js +0 -24
@@ -88,6 +88,27 @@
88
88
  text-overflow: ellipsis;
89
89
  }
90
90
 
91
+ /* Caption: segunda línea bajo el label (fila apilada). La fila crece sola
92
+ (min-height). El icono queda centrado verticalmente — igual que V1. */
93
+ .co-menu-item__label--stacked {
94
+ flex-direction: column;
95
+ align-items: flex-start;
96
+ gap: 1px;
97
+ }
98
+
99
+ .co-menu-item__label-main {
100
+ display: inline-flex;
101
+ align-items: center;
102
+ gap: var(--co-spacing-xs, 4px);
103
+ }
104
+
105
+ .co-menu-item__caption {
106
+ font-size: var(--co-font-size-11, 11px);
107
+ color: var(--co-semantic-text-muted);
108
+ line-height: 1.3;
109
+ white-space: nowrap;
110
+ }
111
+
91
112
  .co-menu-item__suffix {
92
113
  display: inline-flex;
93
114
  align-items: center;
@@ -135,7 +135,7 @@ export class CoMenuItem {
135
135
  'co-menu-item--danger': this.variant === 'danger',
136
136
  'co-menu-item--submenu': this.hasSubmenu,
137
137
  'co-menu-item--submenu-open': this.hasSubmenu && this.submenuOpen,
138
- }, 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.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" }, this.label, h("slot", { name: "label" })), 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 }))));
138
+ }, 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.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 }))));
139
139
  if (!this.hasSubmenu) {
140
140
  // Leaf — the default slot is unused for leaves; ignore it.
141
141
  return h("div", { class: "co-menu-item__wrap" }, row);
@@ -215,6 +215,25 @@ export class CoMenuItem {
215
215
  "reflect": false,
216
216
  "attribute": "label"
217
217
  },
218
+ "caption": {
219
+ "type": "string",
220
+ "mutable": false,
221
+ "complexType": {
222
+ "original": "string",
223
+ "resolved": "string | undefined",
224
+ "references": {}
225
+ },
226
+ "required": false,
227
+ "optional": true,
228
+ "docs": {
229
+ "tags": [],
230
+ "text": "Optional second line under the label (muted, smaller) \u2014 e.g. what an\nexport method means. The row auto-grows (min-height, not height)."
231
+ },
232
+ "getter": false,
233
+ "setter": false,
234
+ "reflect": false,
235
+ "attribute": "caption"
236
+ },
218
237
  "dense": {
219
238
  "type": "boolean",
220
239
  "mutable": false,
@@ -62,14 +62,14 @@ export class CoModal {
62
62
  this.coClose.emit();
63
63
  }
64
64
  render() {
65
- return (h("co-overlay", { key: '05ef9c3f53b155899f4838db0c0fca818f542731', open: this.open, onCoClose: this.handleOverlayClick }, h("div", { key: '46dbcfb7b8073c2ca11114fe049d55842bd9cb94', class: "co-modal__frame" }, h("div", { key: '75a703ddeb451e3afc4392990c10040423f0f7c7', class: {
65
+ return (h("co-overlay", { key: 'aef8eefd5790e210ada8e53f1d904dd7652b75dd', open: this.open, onCoClose: this.handleOverlayClick }, h("div", { key: 'dcf89aa4a6e783e16e99b3c350b917e073c26b76', class: "co-modal__frame" }, h("div", { key: 'c579fe7b0ac3b92c4a413eac9cc4a9da3ec06f69', class: {
66
66
  'co-modal': true,
67
67
  'co-modal--open': this.open,
68
68
  'co-modal--sm': this.size === 'sm',
69
69
  'co-modal--lg': this.size === 'lg',
70
70
  'co-modal--full': this.size === 'full',
71
71
  'co-modal--no-dividers': this.noDividers,
72
- }, part: "modal", ref: (el) => (this.modalEl = el), role: "dialog", "aria-modal": "true", "aria-labelledby": "modal-heading", onClick: this.stopPropagation, onTransitionEnd: this.handleTransitionEnd }, h("div", { key: '3ebedf6549d81d4515abef9cd406688d82d583dd', class: "co-modal__header", part: "header" }, h("div", { key: '8c08be60fe1cac72a2351acbd26f93c4aa2178f4', class: "co-modal__header-text" }, h("h2", { key: '8235568540f5c09941790d203ae43c94393f4c3c', class: "co-modal__heading", id: "modal-heading" }, this.heading), this.description && (h("p", { key: 'bda3dc9a4eea2b60c9728e01b83771ea921dec57', class: "co-modal__description" }, this.description))), this.closable && (h("button", { key: '10bf91d47ce12f40e3d7ede6adc788ac5952e928', class: "co-modal__close", type: "button", "aria-label": "Close", onClick: this.handleCloseClick }, h("co-icon", { key: '3eb98394355c5d60ca633c55f6c26111b046bfa7', name: "x", size: 20 })))), !this.noDividers && (h("div", { key: '1fa27604b8f29d2271b4c4291a52949a1a57dcba', class: "co-modal__body", part: "body" }, h("slot", { key: '1524ac17115286ee90e4ffd251e3407edb1ecb94' }))), h("div", { key: 'f65aae95cdbc156285e3837187b161a65d8772ef', class: "co-modal__footer", part: "footer" }, h("slot", { key: '936d4e2f0b52553abf4edec689ff13e8d0bc1940', name: "footer" }))))));
72
+ }, part: "modal", ref: (el) => (this.modalEl = el), role: "dialog", "aria-modal": "true", "aria-labelledby": "modal-heading", onClick: this.stopPropagation, onTransitionEnd: this.handleTransitionEnd }, h("div", { key: '37bcab4a7d73d99ed199a4dc3ddbcb5d452f7f67', class: "co-modal__header", part: "header" }, h("div", { key: '1761b1fa2761ec89b74da943652533873ffb041d', class: "co-modal__header-text" }, h("h2", { key: 'f8ee41c7c122956431c388222cdde6263089118f', class: "co-modal__heading", id: "modal-heading" }, this.heading), this.description && (h("p", { key: 'f719d9f6b3f974f0f677ac9daba1611e8e90d162', class: "co-modal__description" }, this.description))), this.closable && (h("button", { key: 'c893a1c5f36631743061ad71f5c120ba6d695081', class: "co-modal__close", type: "button", "aria-label": "Close", onClick: this.handleCloseClick }, h("co-icon", { key: 'afcce2e70b4045188ee37897798d8f54add996c2', name: "x", size: 20 })))), !this.noDividers && (h("div", { key: 'ab2890e8f0e3308d9fe989107eebb6ca24161f6d', class: "co-modal__body", part: "body" }, h("slot", { key: '2991f8166a1fc52dbb58350ab5573d67a35ed2ad' }))), h("div", { key: '3d2a5f9aa2ba1eac6d11828e0653be775d9f9152', class: "co-modal__footer", part: "footer" }, h("slot", { key: '62ff2668995d3d9d33719b29a85a8afd31013042', name: "footer" }))))));
73
73
  }
74
74
  static get is() { return "co-modal"; }
75
75
  static get encapsulation() { return "shadow"; }
@@ -14,12 +14,12 @@ export class CoNavbar {
14
14
  this.rounded = false;
15
15
  }
16
16
  render() {
17
- return (h("div", { key: '93279a4c80cd3c050fe5bd5bb10b0c56fa942bdc', class: {
17
+ return (h("div", { key: '9899b395fdf793bf9b7e47509b81eb559aac0b56', class: {
18
18
  'co-navbar': true,
19
19
  [`co-navbar--${this.variant}`]: true,
20
20
  [`co-navbar--${this.size}`]: true,
21
21
  'co-navbar--rounded': this.rounded,
22
- }, part: "navbar", role: "toolbar" }, h("slot", { key: '643f397c092a3ad3961158c641bab0d4edb27e47' })));
22
+ }, part: "navbar", role: "toolbar" }, h("slot", { key: 'c863bcf8dc9eddab771922a81e11c1966bfe8d2e' })));
23
23
  }
24
24
  static get is() { return "co-navbar"; }
25
25
  static get encapsulation() { return "shadow"; }
@@ -124,13 +124,13 @@ export class CoNumberField {
124
124
  this.coChange.emit(clamped);
125
125
  }
126
126
  render() {
127
- return (h("div", { key: '81d578bdeaefc9f6176ab68ca38b5e831ad636cd', class: {
127
+ return (h("div", { key: '851b1d89af98cc8a0ad9c925576b12fac545721d', class: {
128
128
  'co-number-field': true,
129
129
  'co-number-field--disabled': this.disabled,
130
130
  'co-number-field--focused': this.focused,
131
131
  [`co-number-field--${this.size}`]: true,
132
132
  [`co-number-field--${this.status}`]: this.status !== 'default',
133
- } }, (this.label || this.secondaryLabel) && (h("div", { key: '0010a5984faa5c26d3ed18a29c43679422158529', class: "co-number-field__labels" }, this.label && h("label", { key: '1744b37b776c36e6c105f6537e9bc0eff427f3c3', class: "co-number-field__label" }, this.label, h(RequiredMark, { key: '24b51fde19384d3de672b6c1aa1c54c408078b98', required: this.required })), this.secondaryLabel && h("span", { key: '752dca236f11f65a78ab0f2e35bae1a0dcb81ba8', class: "co-number-field__secondary-label" }, this.secondaryLabel))), h("div", { key: 'a88c171a1349972ed78452b0c304cac207921a8f', class: "co-number-field__row" }, h("button", { key: '4a781c675e97937288f641d55e821fa30104a180', class: "co-number-field__btn co-number-field__btn--minus", type: "button", tabIndex: -1, disabled: !this.canDecrement, onClick: this.handleDecrement, "aria-label": "Decrease" }, h("co-icon", { key: '12f82a9f0f8c1b0c9f51264006084d4e80d81715', name: "minus", size: 16 })), h("input", { key: '6f440216843a93d124723b18e0f6f1e7ce98791c', ref: el => (this.inputEl = el), class: "co-number-field__input", type: "text", inputMode: "decimal", value: this.isEmpty ? '' : String(this.toDisplay(this.value)), placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown }), this.scaled && !this.isEmpty && (h("span", { key: '6672a63fc024e9d33661fee37deb04debe2aaa25', class: "co-number-field__affix", "aria-hidden": "true" }, "%")), this.clearable && !this.isEmpty && !this.disabled && (h("button", { key: 'a0ad4682f949dab538db35348282a3cab52fcb75', class: "co-number-field__clear", type: "button", tabIndex: -1, onClick: this.handleClear, "aria-label": "Clear" }, h("co-icon", { key: '2beb8574b79926c54665081e4ed06e191932bed6', name: "x-circle", size: 16, weight: "fill" }))), h("button", { key: 'd6e01ce20f596ff102899680f7234d35042e2d49', class: "co-number-field__btn co-number-field__btn--plus", type: "button", tabIndex: -1, disabled: !this.canIncrement, onClick: this.handleIncrement, "aria-label": "Increase" }, h("co-icon", { key: '27e33390bc7f3baaf9caed056e8e3e6e64b291c9', name: "plus", size: 16 }))), this.helperText && (h("div", { key: '9cc415d2a5f5be410a0677ed7067c7d9bb8368df', class: `co-number-field__helper co-number-field__helper--${this.status}` }, this.statusIcon && h("co-icon", { key: '7cf249285dcd15680f6e21840adcfc81dfd16298', name: this.statusIcon, size: 14, weight: "fill", class: "co-number-field__helper-icon" }), h("span", { key: '6791bb8f9789af7b878d7c5aa27047d905238e48', class: "co-number-field__helper-text" }, this.helperText)))));
133
+ } }, (this.label || this.secondaryLabel) && (h("div", { key: 'ccb5f1b7e75e65b732d31c8f9fe7abb1ca127a21', class: "co-number-field__labels" }, this.label && h("label", { key: 'e5121754db6dff01c1e62a3b27503df9c8dcafa3', class: "co-number-field__label" }, this.label, h(RequiredMark, { key: 'ebaf4bf7d26267bf96e0d99ea1f1b4f448f801ca', required: this.required })), this.secondaryLabel && h("span", { key: '77b800626376802d8e25baa9af81eeb84298d175', class: "co-number-field__secondary-label" }, this.secondaryLabel))), h("div", { key: 'da070461da5fc2be02dfde4a2196c910f406d459', class: "co-number-field__row" }, h("button", { key: '522b084d7582c7e223db943b96009bc75cc77c2d', class: "co-number-field__btn co-number-field__btn--minus", type: "button", tabIndex: -1, disabled: !this.canDecrement, onClick: this.handleDecrement, "aria-label": "Decrease" }, h("co-icon", { key: 'b598a702578fe0b10ea7a7adde0a9ef638d177ff', name: "minus", size: 16 })), h("input", { key: 'f061fc874dfcd886f9e20132f10359476741dbaa', ref: el => (this.inputEl = el), class: "co-number-field__input", type: "text", inputMode: "decimal", value: this.isEmpty ? '' : String(this.toDisplay(this.value)), placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown }), this.scaled && !this.isEmpty && (h("span", { key: 'e007c2d1d46408bc961cbfdf316b49fbf2f6b2c8', class: "co-number-field__affix", "aria-hidden": "true" }, "%")), this.clearable && !this.isEmpty && !this.disabled && (h("button", { key: '73f440263698c26a25495e408529417e0ee80690', class: "co-number-field__clear", type: "button", tabIndex: -1, onClick: this.handleClear, "aria-label": "Clear" }, h("co-icon", { key: '577021788bca76984f2bca56ff6cdec34ef47ac5', name: "x-circle", size: 16, weight: "fill" }))), h("button", { key: '82f1be58f496c76d218c6d5550615ec03691c564', class: "co-number-field__btn co-number-field__btn--plus", type: "button", tabIndex: -1, disabled: !this.canIncrement, onClick: this.handleIncrement, "aria-label": "Increase" }, h("co-icon", { key: '42f83b44defa32ec4efb9af84518fa1a0cbc6caa', name: "plus", size: 16 }))), this.helperText && (h("div", { key: '68c4300d1b5fb9010bc07457cba7d1628c9d5dc7', class: `co-number-field__helper co-number-field__helper--${this.status}` }, this.statusIcon && h("co-icon", { key: 'aef962d0b62920215685af9c4cd06bdc63fff92d', name: this.statusIcon, size: 14, weight: "fill", class: "co-number-field__helper-icon" }), h("span", { key: 'ea5a62af95585e27a791e43a2038036c098069b6', class: "co-number-field__helper-text" }, this.helperText)))));
134
134
  }
135
135
  static get is() { return "co-number-field"; }
136
136
  static get encapsulation() { return "shadow"; }
@@ -897,6 +897,24 @@ html[data-overlayscrollbars-viewport~=scrollbarHidden] > body::-webkit-scrollbar
897
897
  color: var(--co-semantic-text-default, #1f1c1b);
898
898
  }
899
899
 
900
+ /* ── Reorder (drag del bloque selected-first) ────────────── */
901
+ .co-option-list__drag-handle {
902
+ display: inline-flex;
903
+ align-items: center;
904
+ cursor: grab;
905
+ color: var(--co-semantic-text-muted);
906
+ margin-right: var(--co-spacing-xs);
907
+ flex: 0 0 auto;
908
+ }
909
+ .co-option-list__drag-handle:active { cursor: grabbing; }
910
+ .co-option-list__option--dragging { opacity: 0.5; }
911
+ .co-option-list__option--drop-before {
912
+ box-shadow: inset 0 2px 0 0 var(--co-semantic-border-focus);
913
+ }
914
+ .co-option-list__option--drop-after {
915
+ box-shadow: inset 0 -2px 0 0 var(--co-semantic-border-focus);
916
+ }
917
+
900
918
  /* ── Group headers ───────────────────────────────────────── */
901
919
  /* Figma: Geist Mono 10px uppercase, tracking 0.8px, color default. */
902
920
  .co-option-list__group {
@@ -1,7 +1,7 @@
1
1
  import { h } from "@stencil/core";
2
2
  import { highlightMatch } from "../../utils/normalizeText";
3
3
  import { initOverlayScroll } from "../../utils/overlayScroll";
4
- import { buildRows, deriveMore, nextActiveIndex, orderItems, parseItems, parseValue, virtualSlice, VIRTUAL_ITEM_HEIGHT, VIRTUAL_VIEWPORT_ITEMS, } from "./optionListLogic";
4
+ import { buildRows, deriveMore, nextActiveIndex, orderItems, parseItems, parseValue, reorderIds, virtualSlice, VIRTUAL_ITEM_HEIGHT, VIRTUAL_VIEWPORT_ITEMS, } from "./optionListLogic";
5
5
  /**
6
6
  * Núcleo de lista de opciones — la única fuente del look & behavior de los
7
7
  * dropdowns Cobalt (co-ref-field, co-combobox, co-autocomplete,
@@ -28,6 +28,8 @@ export class CoOptionList {
28
28
  this.selectedAffordance = 'check';
29
29
  /** Botón remove por fila seleccionada en multiple (tags de combobox). */
30
30
  this.removableItems = false;
31
+ /** Habilita reorder por drag del bloque de seleccionados (selected-first). */
32
+ this.reorderable = false;
31
33
  // ── Search integrado (opcional) ────────────────────────────
32
34
  this.searchable = false;
33
35
  this.searchPlaceholder = 'Search…';
@@ -59,6 +61,14 @@ export class CoOptionList {
59
61
  this.term = '';
60
62
  this.activeIndex = -1;
61
63
  this.scrollTop = 0;
64
+ /** Fila armada para drag (handle presionado). */
65
+ this.armedKey = '';
66
+ /** Fila que se está arrastrando. */
67
+ this.dragKey = '';
68
+ /** Fila hover como drop-target. */
69
+ this.overKey = '';
70
+ /** Dirección del drop sobre overKey (true = el ítem cae DESPUÉS del target). */
71
+ this.dropAfter = false;
62
72
  /** Snapshot selected-first (ver snapshotOrder). */
63
73
  this.sortSnapshot = new Set();
64
74
  this.displaySnapshot = [];
@@ -88,6 +98,19 @@ export class CoOptionList {
88
98
  clearTimeout(this.debounceTimer);
89
99
  this.debounceTimer = setTimeout(() => this.coSearch.emit(v), this.searchDebounce);
90
100
  };
101
+ this.handleRowDragEnd = () => { this.resetDragState(); };
102
+ this.handleRowDragLeave = (e, id) => {
103
+ // Limpia el highlight al salir de la fila (evita drop-target stale al pasar sobre
104
+ // el bloque no-seleccionado, que no tiene onDragOver). Guard `contains`: dragleave
105
+ // también dispara al entrar a un hijo, no solo al salir de la fila.
106
+ if (this.overKey === id && !e.currentTarget.contains(e.relatedTarget)) {
107
+ this.overKey = '';
108
+ }
109
+ };
110
+ this.disarmDrag = () => {
111
+ if (this.armedKey && !this.dragKey)
112
+ this.armedKey = '';
113
+ };
91
114
  this.onNativeScroll = (e) => {
92
115
  // Fallback pre-OverlayScrollbars (primer frame) — misma lógica.
93
116
  const el = e.target;
@@ -126,12 +149,16 @@ export class CoOptionList {
126
149
  });
127
150
  }
128
151
  }
152
+ connectedCallback() {
153
+ window.addEventListener('mouseup', this.disarmDrag);
154
+ }
129
155
  disconnectedCallback() {
130
156
  var _a;
131
157
  if (this.debounceTimer)
132
158
  clearTimeout(this.debounceTimer);
133
159
  (_a = this.osInstance) === null || _a === void 0 ? void 0 : _a.destroy();
134
160
  this.osInstance = undefined;
161
+ window.removeEventListener('mouseup', this.disarmDrag);
135
162
  }
136
163
  onItemsChange() {
137
164
  // Nueva página / nuevos resultados: si autoHighlight, re-resalta la primera fila
@@ -229,6 +256,50 @@ export class CoOptionList {
229
256
  this.coChange.emit({ value: item._id, item });
230
257
  }
231
258
  }
259
+ // ── Reorder (drag del bloque selected-first) ───────────────
260
+ handleRowDragStart(e, id) {
261
+ if (this.armedKey !== id) {
262
+ e.preventDefault();
263
+ return;
264
+ }
265
+ this.dragKey = id;
266
+ if (e.dataTransfer) {
267
+ e.dataTransfer.effectAllowed = 'move';
268
+ e.dataTransfer.setData('text/plain', id);
269
+ }
270
+ }
271
+ handleRowDragOver(e, id) {
272
+ if (!this.dragKey || this.dragKey === id)
273
+ return;
274
+ e.preventDefault();
275
+ if (e.dataTransfer)
276
+ e.dataTransfer.dropEffect = 'move';
277
+ this.overKey = id;
278
+ // Dirección: al arrastrar hacia abajo (from<to) el ítem cae DESPUÉS del target
279
+ // (semántica de reorderIds) → el indicador va en el borde inferior; hacia arriba, superior.
280
+ const ids = this.displaySnapshot.map((d) => d._id);
281
+ this.dropAfter = ids.indexOf(this.dragKey) < ids.indexOf(id);
282
+ }
283
+ handleRowDrop(e, id) {
284
+ e.preventDefault();
285
+ e.stopPropagation();
286
+ const fromId = this.dragKey;
287
+ const order = this.displaySnapshot.map((d) => d._id);
288
+ this.resetDragState();
289
+ // Solo reordenar dentro del bloque seleccionado
290
+ if (fromId === id || !order.includes(fromId) || !order.includes(id))
291
+ return;
292
+ const next = reorderIds(order, fromId, id);
293
+ const byId = new Map(this.displaySnapshot.map((d) => [d._id, d]));
294
+ this.displaySnapshot = next.map((x) => byId.get(x)); // reflow en vivo del panel
295
+ this.coReorder.emit({ value: next, item: byId.get(fromId) });
296
+ }
297
+ resetDragState() {
298
+ this.armedKey = '';
299
+ this.dragKey = '';
300
+ this.overKey = '';
301
+ this.dropAfter = false;
302
+ }
232
303
  maybeLoadMore(scrollTop, clientHeight, scrollHeight) {
233
304
  if (this.loading)
234
305
  return;
@@ -262,12 +333,16 @@ export class CoOptionList {
262
333
  }
263
334
  renderRow(item, index, selectedIds) {
264
335
  const isSelected = selectedIds.includes(item._id);
336
+ const canDrag = this.reorderable && this.selectedFirst && isSelected && !this.term;
265
337
  return (h("div", { class: {
266
338
  'co-option-list__option': true,
267
339
  'co-option-list__option--selected': isSelected,
268
340
  'co-option-list__option--active': index === this.activeIndex,
269
341
  'co-option-list__option--disabled': !!item.disabled,
270
- }, key: item._id, id: `co-optlist-${index}`, role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-disabled": item.disabled ? 'true' : 'false', onClick: () => !item.disabled && this.pick(item), onMouseEnter: () => { this.activeIndex = index; } }, 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 && h("span", { class: "co-option-list__suffix" }, "- ", item.suffix), item.badge && (h("span", { class: "co-option-list__badge", style: item.badge.color ? { backgroundColor: item.badge.color, color: 'var(--co-color-base-blanco, #fff)' } : undefined }, item.badge.label))), item.description && h("span", { class: "co-option-list__desc" }, item.description)), 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.pick(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" }))));
342
+ 'co-option-list__option--dragging': this.dragKey === item._id,
343
+ 'co-option-list__option--drop-before': this.overKey === item._id && !this.dropAfter,
344
+ 'co-option-list__option--drop-after': this.overKey === item._id && this.dropAfter,
345
+ }, key: item._id, id: `co-optlist-${index}`, role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-disabled": item.disabled ? 'true' : 'false', draggable: canDrag && this.armedKey === item._id, onClick: () => !item.disabled && this.pick(item), onMouseEnter: () => { this.activeIndex = index; }, onDragStart: canDrag ? (e) => this.handleRowDragStart(e, item._id) : undefined, onDragOver: canDrag ? (e) => this.handleRowDragOver(e, item._id) : undefined, onDrop: canDrag ? (e) => this.handleRowDrop(e, item._id) : undefined, onDragEnd: canDrag ? this.handleRowDragEnd : undefined, onDragLeave: canDrag ? (e) => this.handleRowDragLeave(e, item._id) : undefined }, canDrag && (h("span", { class: "co-option-list__drag-handle", part: "drag-handle", title: "Drag to reorder", onMouseDown: () => (this.armedKey = item._id), 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 && h("span", { class: "co-option-list__suffix" }, "- ", item.suffix), item.badge && (h("span", { class: "co-option-list__badge", style: item.badge.color ? { backgroundColor: item.badge.color, color: 'var(--co-color-base-blanco, #fff)' } : undefined }, item.badge.label))), item.description && h("span", { class: "co-option-list__desc" }, item.description)), 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.pick(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" }))));
271
346
  }
272
347
  renderVirtual(items, selectedIds) {
273
348
  const { totalHeight, startIdx, endIdx, offsetY } = virtualSlice(this.scrollTop, items.length);
@@ -278,11 +353,11 @@ export class CoOptionList {
278
353
  const selectedIds = this.selectedIds;
279
354
  const { hasMore, remaining } = deriveMore(this.parsedItems.length, this.total, this.hasMore);
280
355
  const showClear = !!this.clearOptionLabel && selectedIds.length > 0;
281
- return (h("div", { key: '8e4a0e5e6b0831d1413fccc5d58f5548e756ca90', class: "co-option-list", onKeyDown: this.onRootKeyDown }, this.searchable && (h("div", { key: '91658cdefff07570ae339a7e4c785493c200b690', class: "co-option-list__search", part: "search" }, h("co-icon", { key: '28900e1543e8cd50d7e789de2f6d8815eafd1fb7', name: "magnifying-glass", size: 16 }), h("input", { key: '3455b4f3d4e54b81291b997bceb64d95ef1be105', class: "co-option-list__search-input", type: "text", placeholder: this.searchPlaceholder, value: this.term, onInput: this.onSearchInput, ref: (el) => (this.searchInputEl = el), role: "combobox", "aria-expanded": "true", "aria-autocomplete": "list" }))), h("div", { key: '32f315ed929802532c1a050d6e42aaa4150a2d11', 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: '374a2383399a56d90afcb048f5e6343d4f9275d7', class: "co-option-list__inner" }, showClear && (h("button", { key: 'be34ee751a34147660e8bc7846b12d8ab1f937d4', class: "co-option-list__clear-row", type: "button", onClick: () => this.coClearSelection.emit() }, h("co-icon", { key: 'c3c70f93b6d4ce7c0774b4c5ff1ebd7f2549dd93', name: "x-circle", size: 14 }), h("span", { key: 'a9970acd4f67dc84afd4d7f10317d4e35f0feebf' }, this.clearOptionLabel))), this.loading && items.length === 0 && (h("div", { key: '6b1bb04068d2832bd71f0d9b9b9205662a3184f2', class: "co-option-list__loading" }, h("co-loader", { key: '1de716e5fac313dbc10a9aeed2dd8f61e491f020', size: "sm" }))), !this.loading && items.length === 0 && (h("div", { key: '29f51655d034fcd1b5aac08df9537fb176090ce7', class: "co-option-list__empty" }, h("co-icon", { key: 'c7c51260cfe80d82ae75ae0a3510560f5258a3ad', name: "magnifying-glass", size: 20 }), h("span", { key: 'af1c571186f203f2a128b4a7f2d26e5171bf7951' }, this.emptyMessage))), items.length > 0 && this.virtual
356
+ return (h("div", { key: '0c7bd9ada61fbe73efe303e5ea3745bf1390300f', class: "co-option-list", onKeyDown: this.onRootKeyDown }, this.searchable && (h("div", { key: '7125f418aaf46bfc92bf96387d23975f2a97fdc1', class: "co-option-list__search", part: "search" }, h("co-icon", { key: '34ef849033d03bbab79b020b77f31ecef32bb26c', name: "magnifying-glass", size: 16 }), h("input", { key: 'bcb6538309247d776fc12148786e19a5a8cdaf45', class: "co-option-list__search-input", type: "text", placeholder: this.searchPlaceholder, value: this.term, onInput: this.onSearchInput, ref: (el) => (this.searchInputEl = el), role: "combobox", "aria-expanded": "true", "aria-autocomplete": "list" }))), h("div", { key: 'eb0c6c9cede058369f87f8812f1fbdc500687f25', 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: '24528c2e44974d07a0fbd1358c54c5c4504a0815', class: "co-option-list__inner" }, showClear && (h("button", { key: '1ecbdd28f116ae0b94cc3ed9f321550601637fcb', class: "co-option-list__clear-row", type: "button", onClick: () => this.coClearSelection.emit() }, h("co-icon", { key: 'bd2781f8450724065ca73f14cb3574e7183013a9', name: "x-circle", size: 14 }), h("span", { key: '6e3e73b331c42b9b5c479a28c5a20c8836d21549' }, this.clearOptionLabel))), this.loading && items.length === 0 && (h("div", { key: '671980fc29b319aed0065ce61b857ac144e0672c', class: "co-option-list__loading" }, h("co-loader", { key: '0677a97d9e97df7e5d183f0a7e430188887a2ef2', size: "sm" }))), !this.loading && items.length === 0 && (h("div", { key: '5f35f35d2251d2d0944005dd14f68170952ceef0', class: "co-option-list__empty" }, h("co-icon", { key: 'a166f1a172cec7d88ca230c0c3dc20fc1f54b9b3', name: "magnifying-glass", size: 20 }), h("span", { key: 'd913f59862e9e315875e6e37e088c4c92e5efa35' }, this.emptyMessage))), items.length > 0 && this.virtual
282
357
  ? this.renderVirtual(items, selectedIds)
283
358
  : buildRows(items).map((row) => row.kind === 'header'
284
359
  ? h("div", { class: "co-option-list__group", role: "presentation" }, row.label)
285
- : this.renderRow(row.item, row.index, selectedIds)), this.loading && items.length > 0 && (h("div", { key: '0322e0c734d57f0fdc80ace2753276b2bc2a33ad', class: "co-option-list__loading-more" }, h("co-loader", { key: 'e305edb2317d433b27e581a97f35e99083306bff', size: "sm" }))), !this.loading && hasMore && remaining > 0 && (h("div", { key: '31d25badb8cbefa515eaedd1a849b943274a2f9d', class: "co-option-list__more" }, remaining, " more results")))), h("slot", { key: '2df4d5c4c55db9647b378eb9d09c828a76e563f1', name: "footer" })));
360
+ : this.renderRow(row.item, row.index, selectedIds)), this.loading && items.length > 0 && (h("div", { key: 'b01020b03f69750a56d1b19c33773195ba284c8b', class: "co-option-list__loading-more" }, h("co-loader", { key: '7a7c78fb807ac6a4a30e6c36e59c98e491622b5d', size: "sm" }))), !this.loading && hasMore && remaining > 0 && (h("div", { key: '010d69fe8d2a13f142226910d1f0755875dd3594', class: "co-option-list__more" }, remaining, " more results")))), h("slot", { key: 'ef7037e0bd6ba1dac6c76641093200c952a4bcec', name: "footer" })));
286
361
  }
287
362
  static get is() { return "co-option-list"; }
288
363
  static get encapsulation() { return "shadow"; }
@@ -452,6 +527,26 @@ export class CoOptionList {
452
527
  "attribute": "removable-items",
453
528
  "defaultValue": "false"
454
529
  },
530
+ "reorderable": {
531
+ "type": "boolean",
532
+ "mutable": false,
533
+ "complexType": {
534
+ "original": "boolean",
535
+ "resolved": "boolean",
536
+ "references": {}
537
+ },
538
+ "required": false,
539
+ "optional": false,
540
+ "docs": {
541
+ "tags": [],
542
+ "text": "Habilita reorder por drag del bloque de seleccionados (selected-first)."
543
+ },
544
+ "getter": false,
545
+ "setter": false,
546
+ "reflect": false,
547
+ "attribute": "reorderable",
548
+ "defaultValue": "false"
549
+ },
455
550
  "searchable": {
456
551
  "type": "boolean",
457
552
  "mutable": false,
@@ -738,7 +833,12 @@ export class CoOptionList {
738
833
  return {
739
834
  "term": {},
740
835
  "activeIndex": {},
741
- "scrollTop": {}
836
+ "scrollTop": {},
837
+ "armedKey": {},
838
+ "dragKey": {},
839
+ "overKey": {},
840
+ "dropAfter": {},
841
+ "displaySnapshot": {}
742
842
  };
743
843
  }
744
844
  static get events() {
@@ -824,6 +924,28 @@ export class CoOptionList {
824
924
  "resolved": "string",
825
925
  "references": {}
826
926
  }
927
+ }, {
928
+ "method": "coReorder",
929
+ "name": "coReorder",
930
+ "bubbles": false,
931
+ "cancelable": true,
932
+ "composed": true,
933
+ "docs": {
934
+ "tags": [],
935
+ "text": "Emitido tras un drag-reorder: nuevo orden de ids seleccionados + \u00EDtem movido."
936
+ },
937
+ "complexType": {
938
+ "original": "{ value: string[]; item: OptionListItem }",
939
+ "resolved": "{ value: string[]; item: OptionListItem; }",
940
+ "references": {
941
+ "OptionListItem": {
942
+ "location": "import",
943
+ "path": "./optionListLogic",
944
+ "id": "src/components/co-option-list/optionListLogic.ts::OptionListItem",
945
+ "referenceLocation": "OptionListItem"
946
+ }
947
+ }
948
+ }
827
949
  }];
828
950
  }
829
951
  static get methods() {
@@ -68,6 +68,19 @@ export function buildRows(items) {
68
68
  }
69
69
  return rows;
70
70
  }
71
+ /** Mueve `fromId` a la posición de `toId` en `order`. No muta el input;
72
+ * devuelve el mismo array (referencia) si es no-op. */
73
+ export function reorderIds(order, fromId, toId) {
74
+ if (fromId === toId)
75
+ return order;
76
+ const from = order.indexOf(fromId);
77
+ const to = order.indexOf(toId);
78
+ if (from === -1 || to === -1)
79
+ return order;
80
+ const next = [...order];
81
+ next.splice(to, 0, next.splice(from, 1)[0]);
82
+ return next;
83
+ }
71
84
  /** Siguiente highlight: wrap, salta disabled. -1 = sin items navegables. */
72
85
  export function nextActiveIndex(current, delta, items) {
73
86
  const positions = [];
@@ -187,7 +187,7 @@ export class CoOverlay {
187
187
  focusables[nextIndex].focus();
188
188
  }
189
189
  render() {
190
- return (h("div", { key: '41b0ea10b8078a2bf3c46f68fe35869bf2778130', class: { 'co-overlay': true, 'co-overlay--open': this.open }, part: "overlay", popover: "manual", tabindex: this.trapFocus ? -1 : undefined, ref: (el) => (this.overlayEl = el), onClick: this.handleClick, onTransitionEnd: this.handleTransitionEnd }, h("slot", { key: '35e1ec1b7921c1439a177b8f526f128351c5fdec' })));
190
+ return (h("div", { key: 'b801503a338c2fd3ed92a0448c09356970beebee', class: { 'co-overlay': true, 'co-overlay--open': this.open }, part: "overlay", popover: "manual", tabindex: this.trapFocus ? -1 : undefined, ref: (el) => (this.overlayEl = el), onClick: this.handleClick, onTransitionEnd: this.handleTransitionEnd }, h("slot", { key: 'ad290e1dde7d3c5bae0df9d69cd490c607d53bc8' })));
191
191
  }
192
192
  static get is() { return "co-overlay"; }
193
193
  static get encapsulation() { return "shadow"; }
@@ -6,7 +6,7 @@ import { h } from "@stencil/core";
6
6
  */
7
7
  export class CoPageHeader {
8
8
  render() {
9
- return (h("div", { key: '9170d832d0e51cc8e721a4a331f85abb8543b893', class: "co-page-header", part: "page-header" }, h("div", { key: 'ca13df04f2b81a2ce14ab0223a5f651aaa0c921d', class: "co-page-header__left" }, this.icon && (h("span", { key: 'efe024a0388ae60afc2c4e3ce0861b65e0fa9923', class: "co-page-header__icon" }, h("co-icon", { key: '3051bda0f31d1002142e53db09d0aabd7ecf13bf', name: this.icon, size: 24 }))), h("span", { key: '7b714ebec4e82dffaca71d9e8152330b7fe0a38f', class: "co-page-header__title" }, h("slot", { key: '021b7da34753a3946b94bb104f515b1c4781d837' }, this.heading))), h("div", { key: '52d2d1f3510b23c1684aecacb97d341e56fc7619', class: "co-page-header__actions" }, h("slot", { key: 'da455091aa0467df02674fdd38241fd7e70bab13', name: "actions" }))));
9
+ return (h("div", { key: '707564c0b96e4ef99a9cf99a34b19751808bd35a', class: "co-page-header", part: "page-header" }, h("div", { key: '8588626e6de02ba95f32966b40d2519fe3832e0e', class: "co-page-header__left" }, this.icon && (h("span", { key: 'de3903d4763f6db09651155ff1fc339fe347213f', class: "co-page-header__icon" }, h("co-icon", { key: '36b6931df7651c6daa86181280a741d391905516', name: this.icon, size: 24 }))), h("span", { key: '40946efea9e8a7cde96bf5a0de8dcafef4ff4797', class: "co-page-header__title" }, h("slot", { key: '0df50db78b3000f9b784b7e9c1d96cf7d2761861' }, this.heading))), h("div", { key: 'c8f84bd61e76a7d79f32b1985a476384f91ed6b6', class: "co-page-header__actions" }, h("slot", { key: 'a034ba5616842f98c6b4f2847dbfc22afc422aa7', name: "actions" }))));
10
10
  }
11
11
  static get is() { return "co-page-header"; }
12
12
  static get encapsulation() { return "shadow"; }
@@ -159,7 +159,7 @@ export class CoPhoneField {
159
159
  render() {
160
160
  const entry = this.selectedEntry;
161
161
  const statusClass = this.status !== 'default' ? `co-phone-field--${this.status}` : '';
162
- return (h("div", { key: 'e1851152e30c4e1580dd533ba0880eeef8933c0c', class: `co-phone-field co-phone-field--${this.size} ${statusClass} ${this.disabled ? 'co-phone-field--disabled' : ''}` }, this.label && (h("label", { key: 'd6adc2584613b7c2ebe72933275ff3058c9d6eef', class: "co-phone-field__label" }, this.label, h(RequiredMark, { key: 'e02252f85db26cc8ac82a791d86b096630026e9f', required: this.required }))), h("div", { key: 'a1433e7df570481200e39aa366e343d41e85441d', class: "co-phone-field__container" }, h("button", { key: 'da306e01f096755f7da014bbfaf21db41fb99c51', type: "button", class: "co-phone-field__selector", disabled: this.disabled, onClick: () => this.handleToggleDropdown(), "aria-expanded": String(this.isOpen), "aria-haspopup": "listbox" }, entry ? (h("img", { class: "co-phone-field__flag", src: `https://flagcdn.com/w40/${entry.iso2.toLowerCase()}.png`, alt: entry.iso2 })) : (h("co-icon", { name: "phone", size: 16 })), h("span", { key: '920e1cfffbcae7266dcde4bd37e339e550adcae0', class: "co-phone-field__dial-code" }, entry ? entry.dialCode : ''), h("span", { key: '2dec0f362a9a75b718ea4aade2c981fba6777ecb', class: "co-phone-field__chevron" }, h("co-icon", { key: 'ad77c5446f2352cc8fa07230af125500dff3f4b6', name: "caret-down", size: 14 }))), h("input", { key: '926302b2660eb32b8d86a2e421700acebc1b8e11', 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: '4e86eb6353ad92839a68400ebfa9d8b5dff0111b', class: "co-phone-field__dropdown", role: "listbox" }, h("div", { key: 'bdd3d82c8b1e46741f9fca118ffe35b2e8c0690f', class: "co-phone-field__search" }, h("input", { key: '699189bbdd5027436c2757569ddf5945f2c29e78', class: "co-phone-field__search-input", type: "text", placeholder: "Search country...", value: this.searchQuery, onInput: (e) => this.handleSearchInput(e), autoFocus: true })), h("div", { key: '8ec344b5aeb8a80fd0bb72ad1773ac3416a6d1e6', class: "co-phone-field__options" }, this.filteredCountries.map((d) => (h("button", { type: "button", key: d.iso2, class: `co-phone-field__option ${d.iso2 === this.selectedIso2 ? 'co-phone-field__option--selected' : ''}`, role: "option", "aria-selected": d.iso2 === this.selectedIso2 ? 'true' : 'false', onClick: () => this.handleCountrySelect(d) }, h("img", { class: "co-phone-field__option-flag", src: `https://flagcdn.com/w40/${d.iso2.toLowerCase()}.png`, alt: d.iso2 }), h("span", { class: "co-phone-field__option-name" }, this.renderName(d.name)), h("span", { class: "co-phone-field__option-code" }, d.dialCode))))))), this.helperText && (h("div", { key: 'e248da6a7e2c62c9ed01d2ad0a204caea51f55a6', class: "co-phone-field__helper" }, this.statusIcon && (h("co-icon", { key: 'ab6fbf9894d8d71fde4e00e07eb81eece230eafb', name: this.statusIcon, size: 14, weight: "fill", class: "co-phone-field__helper-icon" })), h("span", { key: '0608d49c56d3a20c65cc966c733607440bf73900', class: "co-phone-field__helper-text" }, this.helperText)))));
162
+ return (h("div", { key: '8284bc5388c552450f81718741a496f85fed978a', class: `co-phone-field co-phone-field--${this.size} ${statusClass} ${this.disabled ? 'co-phone-field--disabled' : ''}` }, this.label && (h("label", { key: 'bec896d4bded4e50b7872468842b9ffc54c17d41', class: "co-phone-field__label" }, this.label, h(RequiredMark, { key: 'fd6aa534c7ce1e3a07144b975c767878c74478b0', required: this.required }))), h("div", { key: '2e76fbce6848dc629633f33b6c35240ef8d86ed9', class: "co-phone-field__container" }, h("button", { key: 'd10b160393d1387e5cb4ae5383cb799c7aa83c35', type: "button", class: "co-phone-field__selector", disabled: this.disabled, onClick: () => this.handleToggleDropdown(), "aria-expanded": String(this.isOpen), "aria-haspopup": "listbox" }, entry ? (h("img", { class: "co-phone-field__flag", src: `https://flagcdn.com/w40/${entry.iso2.toLowerCase()}.png`, alt: entry.iso2 })) : (h("co-icon", { name: "phone", size: 16 })), h("span", { key: 'b186df40f9625c1a948d0453b0c1c5552c0edcbc', class: "co-phone-field__dial-code" }, entry ? entry.dialCode : ''), h("span", { key: '18ac1c10191d9858b8f8ec6d2eacd0c5ea0200d4', class: "co-phone-field__chevron" }, h("co-icon", { key: '3ef2c5a5078f50b2142a4113c3dc06dd6ce5d1a1', name: "caret-down", size: 14 }))), h("input", { key: 'd802c344bd3f8b03bc6f4abafc827a116ad69529', 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: '1afbb3ac516442ce7aa31b234510cbfad91cdbea', class: "co-phone-field__dropdown", role: "listbox" }, h("div", { key: 'c8d82c6dc2bac91e63fc6d436fa869c06b9f7127', class: "co-phone-field__search" }, h("input", { key: 'ed79f91223ee797a633c04401573592e30826b36', class: "co-phone-field__search-input", type: "text", placeholder: "Search country...", value: this.searchQuery, onInput: (e) => this.handleSearchInput(e), autoFocus: true })), h("div", { key: 'c17c257306957e24676efbe67dcacbbcb44cf860', class: "co-phone-field__options" }, this.filteredCountries.map((d) => (h("button", { type: "button", key: d.iso2, class: `co-phone-field__option ${d.iso2 === this.selectedIso2 ? 'co-phone-field__option--selected' : ''}`, role: "option", "aria-selected": d.iso2 === this.selectedIso2 ? 'true' : 'false', onClick: () => this.handleCountrySelect(d) }, h("img", { class: "co-phone-field__option-flag", src: `https://flagcdn.com/w40/${d.iso2.toLowerCase()}.png`, alt: d.iso2 }), h("span", { class: "co-phone-field__option-name" }, this.renderName(d.name)), h("span", { class: "co-phone-field__option-code" }, d.dialCode))))))), this.helperText && (h("div", { key: '715b34b6ddf4ffba355eb6adb8e1f1b95f84c427', class: "co-phone-field__helper" }, this.statusIcon && (h("co-icon", { key: 'bae83d720a649a103b5fb96e1d7574e5d7d43a96', name: this.statusIcon, size: 14, weight: "fill", class: "co-phone-field__helper-icon" })), h("span", { key: 'cfff030caaf3479a7959244a8e2f55698aec962f', class: "co-phone-field__helper-text" }, this.helperText)))));
163
163
  }
164
164
  static get is() { return "co-phone-field"; }
165
165
  static get encapsulation() { return "shadow"; }
@@ -18,12 +18,12 @@ export class CoProgressBar {
18
18
  render() {
19
19
  const clamped = Math.max(0, Math.min(100, this.value));
20
20
  const indeterminate = this.indeterminate;
21
- return (h("div", { key: '77313f1edbd0a70e8b783155e71ba39ac6c2b905', class: {
21
+ return (h("div", { key: '88de4aa234fc442abdd438c30e93cf98c1fc3602', class: {
22
22
  'co-progress-bar': true,
23
23
  [`co-progress-bar--${this.status}`]: true,
24
24
  [`co-progress-bar--${this.variant}`]: true,
25
25
  'co-progress-bar--indeterminate': indeterminate,
26
- }, role: "progressbar", "aria-valuenow": indeterminate ? undefined : clamped, "aria-valuemin": 0, "aria-valuemax": 100, part: "bar", style: { height: `${this.thickness}px` } }, h("div", { key: '1c6e1942e8128d49f01bb2fedac113eee2f31ac6', class: "co-progress-bar__fill", style: indeterminate ? undefined : { width: `${clamped}%` } })));
26
+ }, role: "progressbar", "aria-valuenow": indeterminate ? undefined : clamped, "aria-valuemin": 0, "aria-valuemax": 100, part: "bar", style: { height: `${this.thickness}px` } }, h("div", { key: '20302f98f83a18eda4477eeb333aadc6beead8ba', class: "co-progress-bar__fill", style: indeterminate ? undefined : { width: `${clamped}%` } })));
27
27
  }
28
28
  static get is() { return "co-progress-bar"; }
29
29
  static get encapsulation() { return "shadow"; }
@@ -19,7 +19,7 @@ export class CoProgressCircle {
19
19
  const clamped = Math.max(0, Math.min(100, this.value));
20
20
  const angle = (clamped / 100) * 360;
21
21
  const safeStroke = Math.min(this.strokeWidth, this.size / 2);
22
- return (h("div", { key: '879a0c95c7d4aa279eed21447b093bc1461afa4c', class: {
22
+ return (h("div", { key: '43d2823b3f20fb1c604fc0f9dab2cf15ca52db4e', class: {
23
23
  'co-progress-circle': true,
24
24
  [`co-progress-circle--${this.status}`]: true,
25
25
  }, role: "progressbar", "aria-valuenow": clamped, "aria-valuemin": 0, "aria-valuemax": 100, part: "circle", style: {
@@ -27,7 +27,7 @@ export class CoProgressCircle {
27
27
  height: `${this.size}px`,
28
28
  '--co-pc-angle': `${angle}deg`,
29
29
  '--co-pc-stroke': `${safeStroke}px`,
30
- } }, h("div", { key: '7f2ece80cede1b6eda659706fe4a2b8cbfc6f47a', class: "co-progress-circle__track" }), this.showLabel && (h("span", { key: '83cbbe79663dae93962da7d1d9ae1f27a6e46fa4', class: "co-progress-circle__label" }, clamped, "%"))));
30
+ } }, h("div", { key: '23165c28690602eeea2f22ecc66982dee7c2dd62', class: "co-progress-circle__track" }), this.showLabel && (h("span", { key: '47b3c3ef7122c94c7ae216b7a3f5cb81cc9a028c', class: "co-progress-circle__label" }, clamped, "%"))));
31
31
  }
32
32
  static get is() { return "co-progress-circle"; }
33
33
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,23 @@
1
+ /* co-provider-logo */
2
+
3
+ :host {
4
+ display: inline-flex;
5
+ flex: 0 0 auto;
6
+ line-height: 0;
7
+ }
8
+
9
+ .co-provider-logo {
10
+ display: inline-flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+ }
14
+
15
+ /* Disco blanco: la marca a color sobre una superficie teñida (chip de evento
16
+ externo) necesita su propio fondo para leerse. Blanco literal, no un token
17
+ semántico: el plato existe para dar el contraste que la marca asume, y en
18
+ dark mode debe seguir siendo blanco igual. */
19
+ .co-provider-logo--plated {
20
+ background: #fff;
21
+ border-radius: var(--co-border-radius-full);
22
+ box-shadow: 0 0 0 1px rgb(0 0 0 / 8%);
23
+ }