@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
@@ -10,12 +10,12 @@ export class CoButtonGroup {
10
10
  this.disabled = false;
11
11
  }
12
12
  render() {
13
- return (h("div", { key: '420d7fa2d9322ef3ec77e87343367f05a0de3d17', class: {
13
+ return (h("div", { key: 'fe4b05941d1bf86586c7e4f2c93fe9644ea027d3', class: {
14
14
  'co-button-group': true,
15
15
  [`co-button-group--${this.direction}`]: true,
16
16
  [`co-button-group--${this.variant}`]: true,
17
17
  'co-button-group--disabled': this.disabled,
18
- }, role: "group" }, h("slot", { key: 'ede5ab0f16e003619e2aa51945c748bbe7414523' })));
18
+ }, role: "group" }, h("slot", { key: 'c583ee5dd23aceea08c3178b93b6f1227101e96e' })));
19
19
  }
20
20
  static get is() { return "co-button-group"; }
21
21
  static get encapsulation() { return "shadow"; }
@@ -363,7 +363,7 @@ export class CoCalendar {
363
363
  render() {
364
364
  var _a, _b;
365
365
  const t = getDateStrings(this.locale);
366
- return (h("div", { key: 'fa986ed0bf6bfa7627832868ed26a2f614d7105c', class: "co-calendar", part: "root" }, h("div", { key: '0c86b865fee2c71fb42bacf7a87ab28f2c1a06d1', class: "co-calendar__header", part: "header" }, h("button", { key: 'de9c951364750e616f03cf83ce06a74ee7b4ba36', type: "button", class: "co-calendar__nav", onClick: this.handlePrev, "aria-label": (_a = this.prevMonthLabel) !== null && _a !== void 0 ? _a : t.prevMonth }, h("co-icon", { key: '44f0feeecf0ad89e39afb1c353bc40a8c1dabc96', name: "caret-left", size: 16 })), h("button", { key: '14350a7ca5aedf29d49ddfcecd6f0c098a3fbf5e', type: "button", class: "co-calendar__title", "aria-live": "polite", onClick: this.toggleView }, this.headerTitle(), h("co-icon", { key: 'af1f42e2efac0338e4d1af9c29c2b233fd0a4fbf', name: "caret-down", size: 12, class: "co-calendar__title-caret" })), h("button", { key: '0d34428c859f99d0689cf405a54effee4d9e91e7', type: "button", class: "co-calendar__nav", onClick: this.handleNext, "aria-label": (_b = this.nextMonthLabel) !== null && _b !== void 0 ? _b : t.nextMonth }, h("co-icon", { key: '52a7ccc6e7081221a9f81b25e8352e7e50ba864b', name: "caret-right", size: 16 }))), this.view === 'days' && this.renderDays(t), this.view === 'months' && this.renderMonths(), this.view === 'years' && this.renderYears()));
366
+ return (h("div", { key: '795529e38ec7b72934d786b9dcaa5046e73fbde8', class: "co-calendar", part: "root" }, h("div", { key: 'f409d1670f4f649d8e91f21915e0008d9ed330ac', class: "co-calendar__header", part: "header" }, h("button", { key: '23a4f12ec30cd86e49661daf755a6d2e23b209ad', type: "button", class: "co-calendar__nav", onClick: this.handlePrev, "aria-label": (_a = this.prevMonthLabel) !== null && _a !== void 0 ? _a : t.prevMonth }, h("co-icon", { key: 'ce6b736011e3ed13781cac180fe4542ec38c75c3', name: "caret-left", size: 16 })), h("button", { key: 'b1fcbb3d09e33b0b462bc278b46e14a348f9f9a9', type: "button", class: "co-calendar__title", "aria-live": "polite", onClick: this.toggleView }, this.headerTitle(), h("co-icon", { key: 'dbe1800ed74e234dc8f334183e504d19d8ab9d74', name: "caret-down", size: 12, class: "co-calendar__title-caret" })), h("button", { key: 'bdbda5999d20cb799aeabe48ebad6e8a4d7d89ff', type: "button", class: "co-calendar__nav", onClick: this.handleNext, "aria-label": (_b = this.nextMonthLabel) !== null && _b !== void 0 ? _b : t.nextMonth }, h("co-icon", { key: 'ec2e268c38d04d1f298cfb12d29647b530b03a94', name: "caret-right", size: 16 }))), this.view === 'days' && this.renderDays(t), this.view === 'months' && this.renderMonths(), this.view === 'years' && this.renderYears()));
367
367
  }
368
368
  static get is() { return "co-calendar"; }
369
369
  static get encapsulation() { return "shadow"; }
@@ -24,6 +24,8 @@
24
24
  --co-cal-today-ring: var(--co-color-primary-azul);
25
25
 
26
26
  /* Event chips */
27
+ --co-cal-event-radius: 6px;
28
+ --co-cal-elevation-hover: var(--co-shadow-lg);
27
29
  --co-cal-event-bg: var(--co-color-primary-azul);
28
30
  --co-cal-event-border: transparent;
29
31
  --co-cal-event-text: var(--co-color-base-blanco, #fff);
@@ -34,7 +36,8 @@
34
36
  .cal-month {
35
37
  display: flex;
36
38
  flex-direction: column;
37
- border: 1px solid var(--co-cal-border);
39
+ height: 100%;
40
+ /* Sin borde exterior (Google-style: la grilla flota en la página del host). */
38
41
  border-radius: var(--co-border-radius-xs);
39
42
  overflow: hidden;
40
43
  background: var(--co-cal-surface);
@@ -60,6 +63,8 @@
60
63
  .cal-month__week {
61
64
  position: relative;
62
65
  min-height: var(--co-cal-min-week-h);
66
+ /* Crecer para llenar el alto del contenedor (min-height queda como piso). */
67
+ flex: 1 0 auto;
63
68
  }
64
69
  .cal-month__week:not(:last-child) {
65
70
  border-bottom: 1px solid var(--co-cal-border);
@@ -100,6 +105,10 @@
100
105
  background: color-mix(in srgb, var(--co-cal-today-ring) 14%, transparent);
101
106
  box-shadow: inset 0 0 0 2px var(--co-cal-today-ring);
102
107
  }
108
+ /* Día seleccionado persistente (referencia mientras el form de crear está abierto). */
109
+ .cal-month__day--selected {
110
+ background: color-mix(in srgb, var(--co-cal-today-ring) 10%, transparent);
111
+ }
103
112
 
104
113
  .cal-month__daynum {
105
114
  display: inline-flex;
@@ -138,7 +147,7 @@
138
147
  margin: 0 3px;
139
148
  padding: 0 var(--co-spacing-xs);
140
149
  border: 1px solid var(--co-cal-event-border);
141
- border-radius: var(--co-border-radius-xxs);
150
+ border-radius: var(--co-cal-event-radius);
142
151
  font-family: inherit;
143
152
  font-size: var(--co-font-size-12, 12px);
144
153
  line-height: 1;
@@ -151,9 +160,28 @@
151
160
  .cal-chip {
152
161
  background: var(--co-cal-event-bg);
153
162
  color: var(--co-cal-event-text);
163
+ /* Ver la nota del timegrid: sustituyen al preventDefault del pointerdown. */
164
+ user-select: none;
165
+ -webkit-user-select: none;
166
+ touch-action: none;
167
+ }
168
+
169
+ /* Chip de carga: ocupa el mismo carril y la misma caja que un chip real, pero
170
+ con su PROPIA regla — NO se cuelga de la lista `.cal-chip, .cal-month__more`
171
+ (sumarse ahí le robaba a los chips reales su borde/padding/tipografía). */
172
+ .cal-month__chip-skeleton {
173
+ position: absolute;
174
+ height: calc(var(--co-cal-lane-h) - 3px);
175
+ box-sizing: border-box;
176
+ margin: 0 3px;
177
+ border-radius: var(--co-cal-event-radius);
178
+ overflow: hidden;
179
+ pointer-events: none;
154
180
  }
155
- .cal-chip:hover {
181
+ .cal-month__chip-skeleton co-skeleton { display: block; block-size: 100%; }
182
+ .cal-chip--all-day:hover {
156
183
  filter: brightness(0.95);
184
+ box-shadow: var(--co-cal-elevation-hover);
157
185
  }
158
186
  .cal-chip:focus-visible {
159
187
  outline: 2px solid var(--co-semantic-border-focus);
@@ -186,12 +214,17 @@
186
214
  color: var(--co-cal-text-muted);
187
215
  font-variant-numeric: tabular-nums;
188
216
  }
217
+ /* Toma el espacio sobrante (con min-width:0 para poder truncar): así el badge
218
+ del provider queda pegado al FINAL del chip y no flotando pegado al texto. */
189
219
  .cal-chip__title {
220
+ flex: 1 1 auto;
221
+ min-width: 0;
190
222
  overflow: hidden;
191
223
  text-overflow: ellipsis;
192
224
  }
193
225
  .cal-chip__ext {
194
226
  flex: 0 0 auto;
227
+ margin-inline-start: auto; /* al final incluso si el título no crece */
195
228
  opacity: 0.8;
196
229
  }
197
230
 
@@ -207,6 +240,22 @@
207
240
  .cal-chip--dragging {
208
241
  opacity: 0.4;
209
242
  }
243
+ /* Tanda 3 FIX D: durante el drag de una celda (dragId !== null) los chips no
244
+ deben responder a hover/hit-testing — el filter:brightness + box-shadow del
245
+ hover de las barras all-day (y su cálculo) se disparaban en cada celda
246
+ cruzada. El pointerenter de drag-over vive en `.cal-month__day`, no en el
247
+ chip, así que esto no rompe el drag-over. Clase puesta imperativamente
248
+ (classList sobre un ref), no @State: no dispara render. */
249
+ .cal-month--interacting .cal-chip {
250
+ pointer-events: none;
251
+ }
252
+ /* Response-state treatments. Hatch only on filled (all-day) bars; timed chips
253
+ are dot+text so a hatch would paint on the light surface — skip. */
254
+ .cal-chip--all-day.cal-chip--tentative {
255
+ background-image: repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.5) 0 4px, transparent 4px 8px);
256
+ }
257
+ .cal-chip--cancelled { opacity: 0.6; }
258
+ .cal-chip--cancelled .cal-chip__title { text-decoration: line-through; }
210
259
  .cal-chip--continues-before {
211
260
  border-top-left-radius: 0;
212
261
  border-bottom-left-radius: 0;
@@ -1,6 +1,7 @@
1
1
  import { h, } from "@stencil/core";
2
2
  import { addDays, compareYMD, getMonthMatrix, getWeekdayLabels, isDisabled, parseISO, todayYMD, } from "@prolibu-suite/cobalt-date-utils";
3
3
  import { layoutMonth, getWallClock, wallClockToEpoch, toUtcISO, zonedDateKey, zonedMinutesOfDay, } from "@prolibu-suite/cobalt-calendar-utils";
4
+ import { readableTextToken } from "../../utils/eventColor";
4
5
  /**
5
6
  * Month grid for the event calendar. Forks the day grid, roving-tabindex and
6
7
  * keyboard model from `co-calendar`, then overlays multi-day event bars laid out
@@ -27,11 +28,20 @@ export class CoCalendarMonth {
27
28
  this.selectable = true;
28
29
  /** Max event lanes per day before "+N more". */
29
30
  this.maxLanes = 3;
31
+ /** Cargando: en vez de los chips pinta bloques skeleton en sus carriles. La
32
+ * grilla del mes (cabecera de días, celdas, números, bordes) no se toca. */
33
+ this.loading = false;
30
34
  /** Day currently hovered while dragging an event. */
31
35
  this.dragOverDate = null;
32
36
  /** Id of the event being dragged. */
33
37
  this.dragId = null;
38
+ /** Epoch ms of "now", refreshed on a 60s timer so `past` styling stays live. */
39
+ this.nowMs = 0;
34
40
  this.onPointerUp = () => this.finishDrag();
41
+ // ── Selection / activation ──────────────────────────────────────────────
42
+ /** Día seleccionado que PERSISTE resaltado mientras el host tiene abierto su
43
+ * form/bubble de creación (referencia visual, paridad Google). */
44
+ this.selectedDate = null;
35
45
  this.handleKeyDown = (e) => {
36
46
  const cur = this.focused;
37
47
  let handled = true;
@@ -63,12 +73,20 @@ export class CoCalendarMonth {
63
73
  }
64
74
  componentWillLoad() {
65
75
  this.focused = this.defaultFocus();
76
+ this.nowMs = Date.now();
77
+ }
78
+ componentDidLoad() {
79
+ // setInterval acá (no en connectedCallback): componentDidLoad corre una sola
80
+ // vez por instancia → sin timer duplicado en reconexión (espeja co-calendar-timegrid).
81
+ this.nowTimer = window.setInterval(() => (this.nowMs = Date.now()), 60000);
66
82
  }
67
83
  connectedCallback() {
68
84
  window.addEventListener('pointerup', this.onPointerUp);
69
85
  }
70
86
  disconnectedCallback() {
71
87
  window.removeEventListener('pointerup', this.onPointerUp);
88
+ if (this.nowTimer)
89
+ window.clearInterval(this.nowTimer);
72
90
  }
73
91
  defaultFocus() {
74
92
  const first = `${pad4(this.year)}-${pad2(this.month)}-01`;
@@ -76,23 +94,29 @@ export class CoCalendarMonth {
76
94
  const t = parseISO(today);
77
95
  return t.year === this.year && t.month === this.month ? today : first;
78
96
  }
79
- get matrix() {
80
- return getMonthMatrix(this.year, this.month, this.firstDayOfWeek).map((row) => row.map((c) => c.value));
81
- }
82
97
  eventById(id) {
83
- return this.events.find((e) => e.id === id);
98
+ var _a, _b;
99
+ return (_b = (_a = this._layoutCache) === null || _a === void 0 ? void 0 : _a.byId.get(id)) !== null && _b !== void 0 ? _b : this.events.find((e) => e.id === id);
84
100
  }
85
101
  isDayInteractable(date) {
86
102
  return !isDisabled(date, { min: this.minDate, max: this.maxDate });
87
103
  }
88
- // ── Selection / activation ──────────────────────────────────────────────
89
- selectDay(date) {
104
+ selectDay(date, rect) {
90
105
  if (!this.selectable || !this.isDayInteractable(date))
91
106
  return;
92
- this.coDaySelect.emit({ date });
107
+ this.selectedDate = date;
108
+ this.coDaySelect.emit({ date, rect });
93
109
  }
94
- activateEvent(id) {
95
- this.coEventClick.emit({ id });
110
+ /** Limpia el resaltado persistente (lo llama el host al cerrar su form). */
111
+ async clearSelection() {
112
+ this.selectedDate = null;
113
+ }
114
+ /** Un refetch (post-save) invalida la referencia visual. */
115
+ onEventsChange() {
116
+ this.selectedDate = null;
117
+ }
118
+ activateEvent(id, rect) {
119
+ this.coEventClick.emit({ id, rect });
96
120
  }
97
121
  // ── Keyboard (WAI-ARIA grid, forked from co-calendar) ───────────────────
98
122
  moveFocus(next) {
@@ -104,20 +128,30 @@ export class CoCalendarMonth {
104
128
  (_b = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`[data-date="${this.focused}"]`)) === null || _b === void 0 ? void 0 : _b.focus();
105
129
  }
106
130
  // ── Drag-move (day granularity) ─────────────────────────────────────────
131
+ /** Marca la interacción en el root (pointer-events:none en los chips durante el
132
+ * drag — mata el hover/hit-testing de las barras all-day barridas en cada
133
+ * celda cruzada). No es @State a propósito: no debe disparar un render. */
134
+ setInteracting(on) {
135
+ var _a;
136
+ (_a = this.rootEl) === null || _a === void 0 ? void 0 : _a.classList.toggle('cal-month--interacting', on);
137
+ }
107
138
  startDrag(e, id) {
108
139
  const ev = this.eventById(id);
109
140
  if (!ev || !this.editable || ev.editable === false || ev.startEditable === false)
110
141
  return;
111
- e.preventDefault();
142
+ // Ver la nota en co-calendar-timegrid#startMove: preventDefault en
143
+ // pointerdown mata el click y el chip arrastrable no podía activarse.
112
144
  e.stopPropagation();
113
145
  this.dragId = id;
114
146
  this.dragOverDate = null;
147
+ this.setInteracting(true);
115
148
  }
116
149
  finishDrag() {
117
150
  const id = this.dragId;
118
151
  const target = this.dragOverDate;
119
152
  this.dragId = null;
120
153
  this.dragOverDate = null;
154
+ this.setInteracting(false);
121
155
  if (!id || !target)
122
156
  return;
123
157
  const ev = this.eventById(id);
@@ -142,6 +176,46 @@ export class CoCalendarMonth {
142
176
  });
143
177
  }
144
178
  // ── Render ──────────────────────────────────────────────────────────────
179
+ getLayouts() {
180
+ var _a;
181
+ const c = this._layoutCache;
182
+ if (c &&
183
+ c.events === this.events &&
184
+ c.year === this.year &&
185
+ c.month === this.month &&
186
+ c.firstDayOfWeek === this.firstDayOfWeek &&
187
+ c.timeZone === this.timeZone &&
188
+ c.maxLanes === this.maxLanes) {
189
+ return c;
190
+ }
191
+ const matrix = getMonthMatrix(this.year, this.month, this.firstDayOfWeek).map((row) => row.map((cell) => cell.value));
192
+ const layout = layoutMonth(this.events, matrix, {
193
+ maxLanes: this.maxLanes,
194
+ timeZone: this.timeZone,
195
+ });
196
+ const segByWeek = new Map();
197
+ for (const seg of layout.segments) {
198
+ if (seg.lane >= this.maxLanes)
199
+ continue;
200
+ const arr = (_a = segByWeek.get(seg.weekIndex)) !== null && _a !== void 0 ? _a : [];
201
+ arr.push(seg);
202
+ segByWeek.set(seg.weekIndex, arr);
203
+ }
204
+ const byId = new Map(this.events.map((e) => [e.id, e]));
205
+ this._layoutCache = {
206
+ events: this.events,
207
+ year: this.year,
208
+ month: this.month,
209
+ firstDayOfWeek: this.firstDayOfWeek,
210
+ timeZone: this.timeZone,
211
+ maxLanes: this.maxLanes,
212
+ matrix,
213
+ layout,
214
+ segByWeek,
215
+ byId,
216
+ };
217
+ return this._layoutCache;
218
+ }
145
219
  renderChip(seg, weekDays) {
146
220
  var _a;
147
221
  const ev = this.eventById(seg.eventId);
@@ -150,7 +224,7 @@ export class CoCalendarMonth {
150
224
  const cols = weekDays.length;
151
225
  const left = (seg.startCol / cols) * 100;
152
226
  const width = ((seg.endCol - seg.startCol + 1) / cols) * 100;
153
- const isPast = ev.endMs <= Date.now();
227
+ const isPast = ev.endMs <= this.nowMs;
154
228
  const isExternal = ((_a = ev.extendedProps) === null || _a === void 0 ? void 0 : _a.isExternal) === true;
155
229
  const locked = !this.editable || ev.editable === false;
156
230
  const timeText = ev.allDay || !seg.isStart
@@ -163,7 +237,9 @@ export class CoCalendarMonth {
163
237
  };
164
238
  if (ev.backgroundColor) {
165
239
  style['--co-cal-event-bg'] = ev.backgroundColor;
166
- style['--co-cal-event-text'] = readableText(ev.backgroundColor);
240
+ const textToken = readableTextToken(this.rootEl, ev.backgroundColor);
241
+ if (textToken)
242
+ style['--co-cal-event-text'] = textToken;
167
243
  }
168
244
  if (ev.borderColor)
169
245
  style['--co-cal-event-border'] = ev.borderColor;
@@ -176,31 +252,24 @@ export class CoCalendarMonth {
176
252
  'cal-chip--dragging': this.dragId === ev.id,
177
253
  'cal-chip--continues-before': seg.continuesBefore,
178
254
  'cal-chip--continues-after': seg.continuesAfter,
255
+ 'cal-chip--tentative': ev.responseState === 'tentative',
256
+ 'cal-chip--cancelled': ev.responseState === 'cancelled' || ev.responseState === 'declined',
179
257
  }, style: style, title: ev.title, "aria-label": ev.title, onClick: (e) => {
180
258
  e.stopPropagation();
181
- this.activateEvent(ev.id);
182
- }, onPointerDown: (e) => this.startDrag(e, ev.id) }, !ev.allDay && h("span", { class: "cal-chip__dot", "aria-hidden": "true" }), timeText && h("span", { class: "cal-chip__time" }, timeText), h("span", { class: "cal-chip__title" }, ev.title || '—'), isExternal && h("co-icon", { name: "link", size: 11, class: "cal-chip__ext" })));
259
+ this.activateEvent(ev.id, e.currentTarget.getBoundingClientRect());
260
+ }, onDblClick: (e) => {
261
+ e.stopPropagation();
262
+ this.coEventDblClick.emit({ id: ev.id, rect: e.currentTarget.getBoundingClientRect() });
263
+ }, onPointerDown: (e) => this.startDrag(e, ev.id) }, !ev.allDay && h("span", { class: "cal-chip__dot", "aria-hidden": "true" }), timeText && h("span", { class: "cal-chip__time" }, timeText), h("span", { class: "cal-chip__title" }, ev.title || '—'), isExternal && (providerBrand(ev)
264
+ ? h("co-provider-logo", { provider: providerBrand(ev), size: 11, plated: true, class: "cal-chip__ext" })
265
+ : h("co-icon", { name: "link", size: 11, class: "cal-chip__ext" }))));
183
266
  }
184
267
  render() {
185
- var _a;
186
- const matrix = this.matrix;
187
- const normalized = this.events;
188
- const layout = layoutMonth(normalized, matrix, {
189
- maxLanes: this.maxLanes,
190
- timeZone: this.timeZone,
191
- });
192
- const segByWeek = new Map();
193
- for (const seg of layout.segments) {
194
- if (seg.lane >= this.maxLanes)
195
- continue;
196
- const arr = (_a = segByWeek.get(seg.weekIndex)) !== null && _a !== void 0 ? _a : [];
197
- arr.push(seg);
198
- segByWeek.set(seg.weekIndex, arr);
199
- }
268
+ const { matrix, layout, segByWeek } = this.getLayouts();
200
269
  const short = getWeekdayLabels(this.locale, this.firstDayOfWeek, 'short');
201
270
  const long = getWeekdayLabels(this.locale, this.firstDayOfWeek, 'long');
202
271
  const today = todayYMD();
203
- return (h("div", { key: '51781013cbfce9f2e8d07de9a46766c3a9326cbe', class: "cal-month", part: "grid", role: "grid", onKeyDown: this.handleKeyDown }, h("div", { key: 'ee3545fbd982390cd233cb54b33060b7cb9b08e1', class: "cal-month__dow", role: "row" }, short.map((lbl, i) => (h("span", { class: "cal-month__dow-cell", role: "columnheader", "aria-label": long[i] }, lbl)))), matrix.map((week, wi) => {
272
+ return (h("div", { key: 'f8bcb53b7ef7c47a1ff59caee0305dfc1a3f1fc2', class: "cal-month", part: "grid", role: "grid", onKeyDown: this.handleKeyDown, ref: (el) => (this.rootEl = el) }, h("div", { key: '11acf9973a13ad661590a04dd934c86ceaa10f5d', class: "cal-month__dow", role: "row" }, short.map((lbl, i) => (h("span", { class: "cal-month__dow-cell", role: "columnheader", "aria-label": long[i] }, lbl)))), matrix.map((week, wi) => {
204
273
  var _a;
205
274
  return (h("div", { class: "cal-month__week", role: "row" }, h("div", { class: "cal-month__days" }, week.map((date) => {
206
275
  const ymd = parseISO(date);
@@ -214,11 +283,16 @@ export class CoCalendarMonth {
214
283
  'cal-month__day--today': isToday,
215
284
  'cal-month__day--disabled': !interactable,
216
285
  'cal-month__day--drag-over': this.dragId !== null && this.dragOverDate === date,
217
- }, onClick: () => this.selectDay(date), onPointerEnter: () => {
286
+ 'cal-month__day--selected': this.selectedDate === date,
287
+ }, onClick: (e) => this.selectDay(date, e.currentTarget.getBoundingClientRect()), onPointerEnter: () => {
218
288
  if (this.dragId)
219
289
  this.dragOverDate = date;
220
290
  } }, h("span", { class: "cal-month__daynum" }, ymd.day)));
221
- })), h("div", { class: "cal-month__events" }, ((_a = segByWeek.get(wi)) !== null && _a !== void 0 ? _a : []).map((seg) => this.renderChip(seg, week)), week.map((date, col) => {
291
+ })), h("div", { class: "cal-month__events" }, this.loading && SKELETON_CHIPS[wi % SKELETON_CHIPS.length].map(([col, span, lane]) => (h("div", { class: "cal-month__chip-skeleton", "aria-hidden": "true", style: {
292
+ left: `${(col / week.length) * 100}%`,
293
+ width: `${(span / week.length) * 100}%`,
294
+ top: `calc(var(--co-cal-daynum-h) + ${lane} * var(--co-cal-lane-h))`,
295
+ } }, h("co-skeleton", { variant: "rect", width: "100%", height: "100%" })))), !this.loading && ((_a = segByWeek.get(wi)) !== null && _a !== void 0 ? _a : []).map((seg) => this.renderChip(seg, week)), !this.loading && week.map((date, col) => {
222
296
  var _a;
223
297
  const more = (_a = layout.overflow[date]) !== null && _a !== void 0 ? _a : 0;
224
298
  if (more <= 0)
@@ -467,6 +541,26 @@ export class CoCalendarMonth {
467
541
  "reflect": false,
468
542
  "attribute": "max-lanes",
469
543
  "defaultValue": "3"
544
+ },
545
+ "loading": {
546
+ "type": "boolean",
547
+ "mutable": false,
548
+ "complexType": {
549
+ "original": "boolean",
550
+ "resolved": "boolean",
551
+ "references": {}
552
+ },
553
+ "required": false,
554
+ "optional": false,
555
+ "docs": {
556
+ "tags": [],
557
+ "text": "Cargando: en vez de los chips pinta bloques skeleton en sus carriles. La\ngrilla del mes (cabecera de d\u00EDas, celdas, n\u00FAmeros, bordes) no se toca."
558
+ },
559
+ "getter": false,
560
+ "setter": false,
561
+ "reflect": false,
562
+ "attribute": "loading",
563
+ "defaultValue": "false"
470
564
  }
471
565
  };
472
566
  }
@@ -474,7 +568,9 @@ export class CoCalendarMonth {
474
568
  return {
475
569
  "focused": {},
476
570
  "dragOverDate": {},
477
- "dragId": {}
571
+ "dragId": {},
572
+ "nowMs": {},
573
+ "selectedDate": {}
478
574
  };
479
575
  }
480
576
  static get events() {
@@ -483,37 +579,47 @@ export class CoCalendarMonth {
483
579
  "name": "coDaySelect",
484
580
  "bubbles": false,
485
581
  "cancelable": true,
486
- "composed": true,
582
+ "composed": false,
487
583
  "docs": {
488
584
  "tags": [],
489
585
  "text": "Emitted when an empty day is selected (create request). Detail = \"YYYY-MM-DD\"."
490
586
  },
491
587
  "complexType": {
492
- "original": "{ date: string }",
493
- "resolved": "{ date: string; }",
494
- "references": {}
588
+ "original": "{ date: string; rect?: DOMRect }",
589
+ "resolved": "{ date: string; rect?: DOMRect | undefined; }",
590
+ "references": {
591
+ "DOMRect": {
592
+ "location": "global",
593
+ "id": "global::DOMRect"
594
+ }
595
+ }
495
596
  }
496
597
  }, {
497
598
  "method": "coEventClick",
498
599
  "name": "coEventClick",
499
600
  "bubbles": false,
500
601
  "cancelable": true,
501
- "composed": true,
602
+ "composed": false,
502
603
  "docs": {
503
604
  "tags": [],
504
605
  "text": "Emitted when an event chip is activated."
505
606
  },
506
607
  "complexType": {
507
- "original": "{ id: string }",
508
- "resolved": "{ id: string; }",
509
- "references": {}
608
+ "original": "{ id: string; rect?: DOMRect }",
609
+ "resolved": "{ id: string; rect?: DOMRect | undefined; }",
610
+ "references": {
611
+ "DOMRect": {
612
+ "location": "global",
613
+ "id": "global::DOMRect"
614
+ }
615
+ }
510
616
  }
511
617
  }, {
512
618
  "method": "coEventDrop",
513
619
  "name": "coEventDrop",
514
620
  "bubbles": false,
515
621
  "cancelable": true,
516
- "composed": true,
622
+ "composed": false,
517
623
  "docs": {
518
624
  "tags": [],
519
625
  "text": "Emitted on a completed drag-move (day granularity)."
@@ -528,7 +634,7 @@ export class CoCalendarMonth {
528
634
  "name": "coMoreClick",
529
635
  "bubbles": false,
530
636
  "cancelable": true,
531
- "composed": true,
637
+ "composed": false,
532
638
  "docs": {
533
639
  "tags": [],
534
640
  "text": "Emitted when the \"+N more\" affordance is activated."
@@ -538,11 +644,68 @@ export class CoCalendarMonth {
538
644
  "resolved": "{ date: string; }",
539
645
  "references": {}
540
646
  }
647
+ }, {
648
+ "method": "coEventDblClick",
649
+ "name": "coEventDblClick",
650
+ "bubbles": false,
651
+ "cancelable": true,
652
+ "composed": false,
653
+ "docs": {
654
+ "tags": [],
655
+ "text": "Doble activaci\u00F3n de un chip (direct-edit request del host)."
656
+ },
657
+ "complexType": {
658
+ "original": "{ id: string; rect?: DOMRect }",
659
+ "resolved": "{ id: string; rect?: DOMRect | undefined; }",
660
+ "references": {
661
+ "DOMRect": {
662
+ "location": "global",
663
+ "id": "global::DOMRect"
664
+ }
665
+ }
666
+ }
541
667
  }];
542
668
  }
669
+ static get methods() {
670
+ return {
671
+ "clearSelection": {
672
+ "complexType": {
673
+ "signature": "() => Promise<void>",
674
+ "parameters": [],
675
+ "references": {
676
+ "Promise": {
677
+ "location": "global",
678
+ "id": "global::Promise"
679
+ }
680
+ },
681
+ "return": "Promise<void>"
682
+ },
683
+ "docs": {
684
+ "text": "Limpia el resaltado persistente (lo llama el host al cerrar su form).",
685
+ "tags": []
686
+ }
687
+ }
688
+ };
689
+ }
543
690
  static get elementRef() { return "el"; }
691
+ static get watchers() {
692
+ return [{
693
+ "propName": "events",
694
+ "methodName": "onEventsChange"
695
+ }];
696
+ }
544
697
  }
545
698
  // ── helpers ─────────────────────────────────────────────────────────────────
699
+ /** Chips del skeleton por semana: `[columna, ancho en días, carril]`. Patrón
700
+ * FIJO (nada de random) y desparejo, como se ve un mes real. */
701
+ const SKELETON_CHIPS = [
702
+ [[0, 2, 0], [3, 1, 0], [5, 1, 1]],
703
+ [[1, 1, 0], [2, 3, 1]],
704
+ [[0, 1, 0], [2, 1, 0], [4, 2, 1], [6, 1, 0]],
705
+ [[1, 2, 0], [4, 1, 1]],
706
+ [[2, 1, 0], [3, 2, 1], [6, 1, 0]],
707
+ [[0, 3, 0], [5, 1, 1]],
708
+ ];
546
709
  function pad2(n) {
547
710
  return String(n).padStart(2, '0');
548
711
  }
@@ -574,21 +737,41 @@ function shiftInstant(ms, deltaDays, timeZone) {
574
737
  const [y, m, d] = newDate.split('-').map(Number);
575
738
  return wallClockToEpoch({ year: y, month: m, day: d, hour: wc.hour, minute: wc.minute, second: wc.second }, timeZone);
576
739
  }
740
+ // Intl.DateTimeFormat es caro de construir y este label se recalcula por chip
741
+ // por render sobre un dominio ACOTADO (≤96 minutos distintos, 1-2 locales):
742
+ // cacheamos el RESULTADO (y el formatter, para el miss). Higiene: clear a las
743
+ // 2000 entradas — inalcanzable en uso normal, solo protege de iteración
744
+ // patológica. Mismo patrón que co-calendar-timegrid.tsx (duplicado a propósito:
745
+ // componentes Stencil separados, consistencia > DRY entre ellos).
746
+ const MINUTE_LABEL_CACHE = new Map();
747
+ const MINUTE_FMT_CACHE = new Map();
577
748
  /** Short localized time label, e.g. "9:00 a. m." / "09:00". */
578
749
  function minutesToLabel(minutes, locale) {
750
+ const key = `${locale}|${minutes}`;
751
+ const hit = MINUTE_LABEL_CACHE.get(key);
752
+ if (hit !== undefined)
753
+ return hit;
754
+ let fmt = MINUTE_FMT_CACHE.get(locale);
755
+ if (!fmt) {
756
+ fmt = new Intl.DateTimeFormat(locale, { hour: 'numeric', minute: '2-digit' });
757
+ MINUTE_FMT_CACHE.set(locale, fmt);
758
+ }
579
759
  const h = Math.floor(minutes / 60);
580
760
  const m = minutes % 60;
581
- return new Intl.DateTimeFormat(locale, { hour: 'numeric', minute: '2-digit' }).format(new Date(2000, 0, 1, h, m));
761
+ const out = fmt.format(new Date(2000, 0, 1, h, m));
762
+ if (MINUTE_LABEL_CACHE.size > 2000)
763
+ MINUTE_LABEL_CACHE.clear();
764
+ MINUTE_LABEL_CACHE.set(key, out);
765
+ return out;
582
766
  }
583
- /** Pick a readable text token for an arbitrary background color (YIQ luminance). */
584
- function readableText(bg) {
585
- const hex = bg.replace('#', '').trim();
586
- if (hex.length !== 3 && hex.length !== 6)
587
- return 'var(--co-cal-event-text)';
588
- const full = hex.length === 3 ? hex.split('').map((c) => c + c).join('') : hex;
589
- const r = parseInt(full.slice(0, 2), 16);
590
- const g = parseInt(full.slice(2, 4), 16);
591
- const b = parseInt(full.slice(4, 6), 16);
592
- const yiq = (r * 299 + g * 587 + b * 114) / 1000;
593
- return yiq >= 150 ? 'var(--co-cal-event-text-dark)' : 'var(--co-cal-event-text-light)';
767
+ /** Marca del evento externo (`co-provider-logo`), o '' si no se reconoce — el
768
+ * llamador cae al ícono genérico de enlace. */
769
+ function providerBrand(ev) {
770
+ var _a, _b;
771
+ const p = String((_b = (_a = ev.extendedProps) === null || _a === void 0 ? void 0 : _a.provider) !== null && _b !== void 0 ? _b : '').toLowerCase();
772
+ if (p.includes('google'))
773
+ return 'google';
774
+ if (p.includes('microsoft') || p.includes('outlook'))
775
+ return 'microsoft';
776
+ return '';
594
777
  }