@prolibu-suite/cobalt-core 0.8.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/custom-elements.json +188 -19
  2. package/dist/cjs/co-accordion.cjs.entry.js +2 -2
  3. package/dist/cjs/co-action-bar.cjs.entry.js +2 -2
  4. package/dist/cjs/co-app-shell.cjs.entry.js +2 -2
  5. package/dist/cjs/co-audio-player.cjs.entry.js +2 -2
  6. package/dist/cjs/co-autocomplete.cjs.entry.js +15 -6
  7. package/dist/cjs/co-avatar-group.cjs.entry.js +2 -2
  8. package/dist/cjs/co-avatar_2.cjs.entry.js +16 -5
  9. package/dist/cjs/co-badge.cjs.entry.js +1 -1
  10. package/dist/cjs/co-bottom-sheet.cjs.entry.js +2 -2
  11. package/dist/cjs/co-breadcrumb-item.cjs.entry.js +1 -1
  12. package/dist/cjs/co-breadcrumb.cjs.entry.js +1 -1
  13. package/dist/cjs/co-button-group.cjs.entry.js +1 -1
  14. package/dist/cjs/co-button.cjs.entry.js +2 -2
  15. package/dist/cjs/co-calendar-month_2.cjs.entry.js +2 -2
  16. package/dist/cjs/co-calendar_3.cjs.entry.js +9 -9
  17. package/dist/cjs/co-card.cjs.entry.js +2 -2
  18. package/dist/cjs/co-carousel-item.cjs.entry.js +1 -1
  19. package/dist/cjs/co-carousel.cjs.entry.js +1 -1
  20. package/dist/cjs/co-checkbox-group.cjs.entry.js +2 -2
  21. package/dist/cjs/co-checkbox.cjs.entry.js +3 -3
  22. package/dist/cjs/co-chip_2.cjs.entry.js +26 -14
  23. package/dist/cjs/co-color-picker.cjs.entry.js +5 -5
  24. package/dist/cjs/co-column-picker.cjs.entry.js +4 -4
  25. package/dist/cjs/co-combobox.cjs.entry.js +14 -6
  26. package/dist/cjs/co-command-search.cjs.entry.js +20 -6
  27. package/dist/cjs/co-data-table-pagination.cjs.entry.js +6 -6
  28. package/dist/cjs/co-data-table.cjs.entry.js +128 -9
  29. package/dist/cjs/co-date-picker.cjs.entry.js +2 -2
  30. package/dist/cjs/co-date-range-picker.cjs.entry.js +3 -3
  31. package/dist/cjs/co-date-range.cjs.entry.js +2 -2
  32. package/dist/cjs/co-date-time-picker.cjs.entry.js +5 -5
  33. package/dist/cjs/co-drive-card.cjs.entry.js +3 -3
  34. package/dist/cjs/co-drop-zone.cjs.entry.js +2 -2
  35. package/dist/cjs/co-empty-state.cjs.entry.js +3 -3
  36. package/dist/cjs/co-event-calendar.cjs.entry.js +4 -4
  37. package/dist/cjs/co-event-popover.cjs.entry.js +3 -3
  38. package/dist/cjs/co-fab.cjs.entry.js +4 -4
  39. package/dist/cjs/co-file-field.cjs.entry.js +8 -8
  40. package/dist/cjs/co-file-type-tile.cjs.entry.js +3 -3
  41. package/dist/cjs/co-helper-text.cjs.entry.js +3 -3
  42. package/dist/cjs/co-icon-button.cjs.entry.js +3 -3
  43. package/dist/cjs/co-icon.cjs.entry.js +3 -3
  44. package/dist/cjs/co-input.cjs.entry.js +3 -3
  45. package/dist/cjs/co-json-field.cjs.entry.js +6 -6
  46. package/dist/cjs/co-lightbox.cjs.entry.js +6 -6
  47. package/dist/cjs/co-list-footer.cjs.entry.js +3 -3
  48. package/dist/cjs/co-list-item.cjs.entry.js +6 -6
  49. package/dist/cjs/co-loader.cjs.entry.js +1 -1
  50. package/dist/cjs/co-media-thumb.cjs.entry.js +3 -3
  51. package/dist/cjs/co-menu-divider.cjs.entry.js +2 -2
  52. package/dist/cjs/co-menu-item.cjs.entry.js +2 -2
  53. package/dist/cjs/co-menu.cjs.entry.js +2 -2
  54. package/dist/cjs/co-modal.cjs.entry.js +4 -4
  55. package/dist/cjs/co-navbar.cjs.entry.js +3 -3
  56. package/dist/cjs/co-number-field.cjs.entry.js +5 -5
  57. package/dist/cjs/co-overlay.cjs.entry.js +3 -3
  58. package/dist/cjs/co-page-header.cjs.entry.js +2 -2
  59. package/dist/cjs/co-phone-field.cjs.entry.js +4 -4
  60. package/dist/cjs/co-popover.cjs.entry.js +79 -7
  61. package/dist/cjs/co-progress-bar.cjs.entry.js +3 -3
  62. package/dist/cjs/co-progress-circle.cjs.entry.js +4 -4
  63. package/dist/cjs/co-provider-logo_2.cjs.entry.js +2 -2
  64. package/dist/cjs/co-radio-group.cjs.entry.js +2 -2
  65. package/dist/cjs/co-radio.cjs.entry.js +5 -5
  66. package/dist/cjs/co-rating.cjs.entry.js +5 -5
  67. package/dist/cjs/co-ref-field.cjs.entry.js +28 -7
  68. package/dist/cjs/co-rich-text-editor.cjs.entry.js +5 -5
  69. package/dist/cjs/co-rich-text-toolbar.cjs.entry.js +2 -2
  70. package/dist/cjs/co-rich-text-viewer.cjs.entry.js +1 -1
  71. package/dist/cjs/co-row.cjs.entry.js +3 -3
  72. package/dist/cjs/co-segmented-bar.cjs.entry.js +1 -1
  73. package/dist/cjs/co-select.cjs.entry.js +16 -7
  74. package/dist/cjs/co-separator.cjs.entry.js +2 -2
  75. package/dist/cjs/co-sidebar-nav.cjs.entry.js +4 -4
  76. package/dist/cjs/co-sidebar.cjs.entry.js +4 -4
  77. package/dist/cjs/co-slider.cjs.entry.js +4 -4
  78. package/dist/cjs/co-switch.cjs.entry.js +6 -6
  79. package/dist/cjs/co-tab-group.cjs.entry.js +3 -3
  80. package/dist/cjs/co-tab.cjs.entry.js +4 -4
  81. package/dist/cjs/co-tags-field.cjs.entry.js +9 -9
  82. package/dist/cjs/co-textarea.cjs.entry.js +7 -7
  83. package/dist/cjs/co-toast.cjs.entry.js +35 -5
  84. package/dist/cjs/co-toggle-button-group.cjs.entry.js +3 -3
  85. package/dist/cjs/co-toggle-button.cjs.entry.js +4 -4
  86. package/dist/cjs/co-transfer-list.cjs.entry.js +2 -2
  87. package/dist/cjs/co-video.cjs.entry.js +4 -4
  88. package/dist/cjs/cobalt.cjs.js +2 -2
  89. package/dist/cjs/{fieldChip-B_npd9rL.js → fieldChip-xNJPEFcS.js} +1 -1
  90. package/dist/cjs/{index-kBiXCEE7.js → index-DK-2Lzmf.js} +13 -13
  91. package/dist/cjs/loader.cjs.js +2 -2
  92. package/dist/cjs/{requiredMark-DuMIcKtt.js → requiredMark-C1xcrzSZ.js} +1 -1
  93. package/dist/cobalt/cobalt.css +1 -1
  94. package/dist/cobalt/cobalt.esm.js +1 -1
  95. package/dist/cobalt/{p-890296f9.entry.js → p-02ac492f.entry.js} +1 -1
  96. package/dist/cobalt/{p-f0c589ad.entry.js → p-02f4b71a.entry.js} +1 -1
  97. package/dist/cobalt/p-07d570a6.entry.js +1 -0
  98. package/dist/cobalt/p-136440fc.entry.js +1 -0
  99. package/dist/cobalt/{p-3ae69426.entry.js → p-138b8bc1.entry.js} +1 -1
  100. package/dist/cobalt/{p-df63f23c.entry.js → p-17ae943c.entry.js} +1 -1
  101. package/dist/cobalt/p-1ddbc48b.entry.js +1 -0
  102. package/dist/cobalt/{p-38ae8bff.entry.js → p-2637efc5.entry.js} +1 -1
  103. package/dist/cobalt/p-2c0099a4.entry.js +1 -0
  104. package/dist/cobalt/{p-202eadfc.entry.js → p-2d329ac8.entry.js} +1 -1
  105. package/dist/cobalt/p-2d81b292.entry.js +1 -0
  106. package/dist/cobalt/p-2f778a5a.entry.js +1 -0
  107. package/dist/cobalt/p-315586b0.entry.js +1 -0
  108. package/dist/cobalt/{p-0fc1edca.entry.js → p-316c62c0.entry.js} +1 -1
  109. package/dist/cobalt/p-342e1da4.entry.js +1 -0
  110. package/dist/cobalt/{p-acdb68a7.entry.js → p-37c17bd8.entry.js} +1 -1
  111. package/dist/cobalt/p-3a229bba.entry.js +1 -0
  112. package/dist/cobalt/{p-69723cc1.entry.js → p-3ced4269.entry.js} +1 -1
  113. package/dist/cobalt/{p-5c1328ff.entry.js → p-3d338881.entry.js} +1 -1
  114. package/dist/cobalt/{p-6985a964.entry.js → p-3ef0f849.entry.js} +1 -1
  115. package/dist/cobalt/p-40ce8a3d.entry.js +1 -0
  116. package/dist/cobalt/{p-8fe08257.entry.js → p-4299cfa5.entry.js} +1 -1
  117. package/dist/cobalt/{p-959556f4.entry.js → p-43bd298d.entry.js} +1 -1
  118. package/dist/cobalt/{p-dc8e88f4.entry.js → p-43d31055.entry.js} +1 -1
  119. package/dist/cobalt/{p-3a746267.entry.js → p-44fb4a3f.entry.js} +1 -1
  120. package/dist/cobalt/p-4a503187.entry.js +1 -0
  121. package/dist/cobalt/p-4fe9a3ae.entry.js +1 -0
  122. package/dist/cobalt/{p-f53b9536.entry.js → p-5c1767db.entry.js} +1 -1
  123. package/dist/cobalt/p-60cb66f5.entry.js +1 -0
  124. package/dist/cobalt/p-6556465f.entry.js +1 -0
  125. package/dist/cobalt/{p-48fbf051.entry.js → p-6795a258.entry.js} +1 -1
  126. package/dist/cobalt/p-682b3313.entry.js +1 -0
  127. package/dist/cobalt/p-6c35b5cc.entry.js +1 -0
  128. package/dist/cobalt/p-7457aa89.entry.js +1 -0
  129. package/dist/cobalt/{p-0769eee9.entry.js → p-75b7ed13.entry.js} +1 -1
  130. package/dist/cobalt/{p-afd957c0.entry.js → p-7c5e846a.entry.js} +1 -1
  131. package/dist/cobalt/{p-cd96aabf.entry.js → p-7cf4b4ae.entry.js} +1 -1
  132. package/dist/cobalt/p-7fbd3359.entry.js +1 -0
  133. package/dist/cobalt/p-8183f56f.entry.js +1 -0
  134. package/dist/cobalt/p-82c8f07b.entry.js +1 -0
  135. package/dist/cobalt/p-85a61e28.entry.js +1 -0
  136. package/dist/cobalt/p-88a0659f.entry.js +1 -0
  137. package/dist/cobalt/{p-dc269096.entry.js → p-8e667eb6.entry.js} +1 -1
  138. package/dist/cobalt/{p-1e9c9d46.entry.js → p-8eb485c8.entry.js} +1 -1
  139. package/dist/cobalt/p-8f600512.entry.js +1 -0
  140. package/dist/cobalt/{p-25f59046.entry.js → p-905ba0dd.entry.js} +1 -1
  141. package/dist/cobalt/p-909c0113.entry.js +1 -0
  142. package/dist/cobalt/p-90e292de.entry.js +1 -0
  143. package/dist/cobalt/p-929a4f19.entry.js +1 -0
  144. package/dist/cobalt/p-9c89cb01.entry.js +1 -0
  145. package/dist/cobalt/p-9c9f5b26.entry.js +1 -0
  146. package/dist/cobalt/p-CQAYgqA6.js +1 -0
  147. package/dist/cobalt/p-CrtiywTB.js +2 -0
  148. package/dist/cobalt/p-T4la7ly_.js +1 -0
  149. package/dist/cobalt/p-a0a6bfa3.entry.js +1 -0
  150. package/dist/cobalt/p-a3669301.entry.js +1 -0
  151. package/dist/cobalt/p-a3c6b974.entry.js +1 -0
  152. package/dist/cobalt/{p-20bd3702.entry.js → p-a6357340.entry.js} +1 -1
  153. package/dist/cobalt/p-a6b5cadd.entry.js +1 -0
  154. package/dist/cobalt/p-a811464d.entry.js +1 -0
  155. package/dist/cobalt/p-a8c64cc3.entry.js +1 -0
  156. package/dist/cobalt/p-a9b29cc2.entry.js +1 -0
  157. package/dist/cobalt/p-aafb9d11.entry.js +1 -0
  158. package/dist/cobalt/p-ab45d9bd.entry.js +1 -0
  159. package/dist/cobalt/p-b107063c.entry.js +1 -0
  160. package/dist/cobalt/{p-a04feb70.entry.js → p-b22981fd.entry.js} +1 -1
  161. package/dist/cobalt/p-b28dc0fe.entry.js +1 -0
  162. package/dist/cobalt/p-b5b97c9b.entry.js +1 -0
  163. package/dist/cobalt/{p-6b256d01.entry.js → p-b892b312.entry.js} +1 -1
  164. package/dist/cobalt/{p-39dea0c0.entry.js → p-bfc2a849.entry.js} +1 -1
  165. package/dist/cobalt/p-c1880595.entry.js +1 -0
  166. package/dist/cobalt/{p-7c6b3175.entry.js → p-c3bb7e1f.entry.js} +1 -1
  167. package/dist/cobalt/{p-ce961fba.entry.js → p-c3fd7b22.entry.js} +1 -1
  168. package/dist/cobalt/p-c6b9b9d6.entry.js +1 -0
  169. package/dist/cobalt/{p-195c67ee.entry.js → p-c8dba82f.entry.js} +1 -1
  170. package/dist/cobalt/{p-00830b8c.entry.js → p-ce35c898.entry.js} +1 -1
  171. package/dist/cobalt/p-d4debd6f.entry.js +1 -0
  172. package/dist/cobalt/p-da18b5f4.entry.js +1 -0
  173. package/dist/cobalt/{p-3af74ab8.entry.js → p-da546d08.entry.js} +1 -1
  174. package/dist/cobalt/{p-50bbfad8.entry.js → p-e085b4ff.entry.js} +1 -1
  175. package/dist/cobalt/{p-b45ea918.entry.js → p-e4ef25b0.entry.js} +1 -1
  176. package/dist/cobalt/{p-97875bde.entry.js → p-e6882ddd.entry.js} +1 -1
  177. package/dist/cobalt/{p-bebacee2.entry.js → p-e742e978.entry.js} +1 -1
  178. package/dist/cobalt/{p-52af222b.entry.js → p-e8878cf9.entry.js} +1 -1
  179. package/dist/cobalt/{p-a252f8c5.entry.js → p-f83b48fd.entry.js} +1 -1
  180. package/dist/cobalt/{p-3d4e697e.entry.js → p-f945a1bd.entry.js} +1 -1
  181. package/dist/cobalt/p-fabe5fb2.entry.js +1 -0
  182. package/dist/cobalt/{p-15852fec.entry.js → p-fd39f410.entry.js} +1 -1
  183. package/dist/cobalt/{p-51a1ad38.entry.js → p-fdc6ec11.entry.js} +1 -1
  184. package/dist/collection/components/co-accordion/co-accordion.css +12 -4
  185. package/dist/collection/components/co-action-bar/co-action-bar.css +4 -16
  186. package/dist/collection/components/co-app-shell/co-app-shell.css +1 -1
  187. package/dist/collection/components/co-audio-player/co-audio-player.css +1 -2
  188. package/dist/collection/components/co-autocomplete/co-autocomplete.css +3 -3
  189. package/dist/collection/components/co-autocomplete/co-autocomplete.js +14 -5
  190. package/dist/collection/components/co-avatar-group/co-avatar-group.css +1 -1
  191. package/dist/collection/components/co-bottom-sheet/co-bottom-sheet.css +4 -12
  192. package/dist/collection/components/co-button/co-button.css +17 -1
  193. package/dist/collection/components/co-calendar/co-calendar.css +2 -2
  194. package/dist/collection/components/co-calendar-month/co-calendar-month.css +1 -1
  195. package/dist/collection/components/co-card/co-card.css +1 -1
  196. package/dist/collection/components/co-checkbox/co-checkbox.css +84 -58
  197. package/dist/collection/components/co-checkbox/co-checkbox.js +1 -1
  198. package/dist/collection/components/co-checkbox-group/co-checkbox-group.css +1 -1
  199. package/dist/collection/components/co-chip/co-chip.css +2 -2
  200. package/dist/collection/components/co-chip/co-chip.js +2 -2
  201. package/dist/collection/components/co-color-picker/co-color-picker.css +3 -3
  202. package/dist/collection/components/co-color-picker/co-color-picker.js +2 -2
  203. package/dist/collection/components/co-column-picker/co-column-picker.css +8 -8
  204. package/dist/collection/components/co-column-picker/co-column-picker.js +2 -2
  205. package/dist/collection/components/co-combobox/co-combobox.css +5 -3
  206. package/dist/collection/components/co-combobox/co-combobox.js +13 -5
  207. package/dist/collection/components/co-command-search/co-command-search.css +13 -3
  208. package/dist/collection/components/co-command-search/co-command-search.js +18 -4
  209. package/dist/collection/components/co-data-table/co-data-table.css +38 -5
  210. package/dist/collection/components/co-data-table/co-data-table.js +89 -7
  211. package/dist/collection/components/co-data-table-pagination/co-data-table-pagination.css +5 -5
  212. package/dist/collection/components/co-data-table-pagination/co-data-table-pagination.js +4 -4
  213. package/dist/collection/components/co-date-field/co-date-field.css +2 -2
  214. package/dist/collection/components/co-date-field/co-date-field.js +4 -4
  215. package/dist/collection/components/co-date-range/co-date-range.js +1 -1
  216. package/dist/collection/components/co-date-range-picker/co-date-range-picker.css +2 -2
  217. package/dist/collection/components/co-date-time-picker/co-date-time-picker.css +2 -2
  218. package/dist/collection/components/co-date-time-picker/co-date-time-picker.js +2 -2
  219. package/dist/collection/components/co-drawer/co-drawer.css +2 -2
  220. package/dist/collection/components/co-drive-card/co-drive-card.css +5 -5
  221. package/dist/collection/components/co-drive-card/co-drive-card.js +1 -1
  222. package/dist/collection/components/co-drop-zone/co-drop-zone.js +1 -1
  223. package/dist/collection/components/co-empty-state/co-empty-state.js +2 -2
  224. package/dist/collection/components/co-event-calendar/co-event-calendar.css +2 -2
  225. package/dist/collection/components/co-event-calendar/co-event-calendar.js +2 -2
  226. package/dist/collection/components/co-event-popover/co-event-popover.css +1 -2
  227. package/dist/collection/components/co-event-popover/co-event-popover.js +1 -1
  228. package/dist/collection/components/co-fab/co-fab.css +26 -17
  229. package/dist/collection/components/co-fab/co-fab.js +2 -2
  230. package/dist/collection/components/co-file-field/co-file-field.css +5 -5
  231. package/dist/collection/components/co-file-field/co-file-field.js +5 -5
  232. package/dist/collection/components/co-file-type-tile/co-file-type-tile.js +2 -2
  233. package/dist/collection/components/co-helper-text/co-helper-text.js +2 -2
  234. package/dist/collection/components/co-icon/co-icon.js +2 -2
  235. package/dist/collection/components/co-icon-button/co-icon-button.css +10 -1
  236. package/dist/collection/components/co-icon-button/co-icon-button.js +1 -1
  237. package/dist/collection/components/co-input/co-input.css +3 -3
  238. package/dist/collection/components/co-json-field/co-json-field.css +1 -1
  239. package/dist/collection/components/co-json-field/co-json-field.js +3 -3
  240. package/dist/collection/components/co-lightbox/co-lightbox.css +4 -4
  241. package/dist/collection/components/co-lightbox/co-lightbox.js +4 -4
  242. package/dist/collection/components/co-list-footer/co-list-footer.css +1 -1
  243. package/dist/collection/components/co-list-footer/co-list-footer.js +1 -1
  244. package/dist/collection/components/co-list-item/co-list-item.css +1 -1
  245. package/dist/collection/components/co-list-item/co-list-item.js +4 -4
  246. package/dist/collection/components/co-media-thumb/co-media-thumb.js +2 -2
  247. package/dist/collection/components/co-menu/co-menu.js +1 -1
  248. package/dist/collection/components/co-menu-divider/co-menu-divider.js +1 -1
  249. package/dist/collection/components/co-menu-item/co-menu-item.css +1 -1
  250. package/dist/collection/components/co-modal/co-modal.css +2 -2
  251. package/dist/collection/components/co-modal/co-modal.js +2 -2
  252. package/dist/collection/components/co-navbar/co-navbar.js +2 -2
  253. package/dist/collection/components/co-number-field/co-number-field.css +3 -3
  254. package/dist/collection/components/co-number-field/co-number-field.js +2 -2
  255. package/dist/collection/components/co-option-list/co-option-list.css +13 -11
  256. package/dist/collection/components/co-option-list/co-option-list.js +23 -11
  257. package/dist/collection/components/co-overlay/co-overlay.css +2 -2
  258. package/dist/collection/components/co-overlay/co-overlay.js +1 -1
  259. package/dist/collection/components/co-page-header/co-page-header.js +1 -1
  260. package/dist/collection/components/co-phone-field/co-phone-field.css +1 -1
  261. package/dist/collection/components/co-phone-field/co-phone-field.js +1 -1
  262. package/dist/collection/components/co-popover/co-popover.css +27 -0
  263. package/dist/collection/components/co-popover/co-popover.js +54 -6
  264. package/dist/collection/components/co-progress-bar/co-progress-bar.js +2 -2
  265. package/dist/collection/components/co-progress-circle/co-progress-circle.css +1 -1
  266. package/dist/collection/components/co-progress-circle/co-progress-circle.js +2 -2
  267. package/dist/collection/components/co-radio/co-radio.css +1 -1
  268. package/dist/collection/components/co-radio/co-radio.js +3 -3
  269. package/dist/collection/components/co-radio-group/co-radio-group.css +1 -1
  270. package/dist/collection/components/co-rating/co-rating.css +1 -1
  271. package/dist/collection/components/co-rating/co-rating.js +3 -3
  272. package/dist/collection/components/co-ref-field/co-ref-field.css +19 -4
  273. package/dist/collection/components/co-ref-field/co-ref-field.js +83 -3
  274. package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.css +5 -5
  275. package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.js +3 -3
  276. package/dist/collection/components/co-rich-text-toolbar/co-rich-text-toolbar.css +12 -12
  277. package/dist/collection/components/co-row/co-row.js +2 -2
  278. package/dist/collection/components/co-select/co-select.css +4 -4
  279. package/dist/collection/components/co-select/co-select.js +67 -4
  280. package/dist/collection/components/co-separator/co-separator.js +1 -1
  281. package/dist/collection/components/co-sidebar/co-sidebar.css +1 -1
  282. package/dist/collection/components/co-sidebar/co-sidebar.js +2 -2
  283. package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.css +33 -7
  284. package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.js +2 -2
  285. package/dist/collection/components/co-skeleton/co-skeleton.js +1 -1
  286. package/dist/collection/components/co-slider/co-slider.css +9 -2
  287. package/dist/collection/components/co-slider/co-slider.js +2 -2
  288. package/dist/collection/components/co-switch/co-switch.css +5 -4
  289. package/dist/collection/components/co-switch/co-switch.js +3 -3
  290. package/dist/collection/components/co-tab/co-tab.css +2 -2
  291. package/dist/collection/components/co-tab/co-tab.js +2 -2
  292. package/dist/collection/components/co-tab-group/co-tab-group.js +2 -2
  293. package/dist/collection/components/co-tags-field/co-tags-field.css +3 -3
  294. package/dist/collection/components/co-tags-field/co-tags-field.js +5 -5
  295. package/dist/collection/components/co-textarea/co-textarea.css +2 -2
  296. package/dist/collection/components/co-textarea/co-textarea.js +4 -4
  297. package/dist/collection/components/co-toast/co-toast.css +63 -1
  298. package/dist/collection/components/co-toast/co-toast.js +38 -3
  299. package/dist/collection/components/co-toggle-button/co-toggle-button.css +1 -1
  300. package/dist/collection/components/co-toggle-button/co-toggle-button.js +2 -2
  301. package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.js +2 -2
  302. package/dist/collection/components/co-tooltip/co-tooltip.css +1 -1
  303. package/dist/collection/components/co-tooltip/co-tooltip.js +14 -3
  304. package/dist/collection/components/co-transfer-list/co-transfer-list.css +3 -3
  305. package/dist/collection/components/co-video/co-video.css +9 -9
  306. package/dist/collection/components/co-video/co-video.js +2 -2
  307. package/dist/collection/utils/columnResize.js +37 -0
  308. package/dist/collection/utils/popover-stack.js +28 -0
  309. package/dist/components/co-accordion.js +1 -1
  310. package/dist/components/co-action-bar.js +1 -1
  311. package/dist/components/co-app-shell.js +1 -1
  312. package/dist/components/co-audio-player.js +1 -1
  313. package/dist/components/co-autocomplete.js +1 -1
  314. package/dist/components/co-avatar-group.js +1 -1
  315. package/dist/components/co-avatar.js +1 -1
  316. package/dist/components/co-bottom-sheet.js +1 -1
  317. package/dist/components/co-breadcrumb-item.js +1 -1
  318. package/dist/components/co-breadcrumb.js +1 -1
  319. package/dist/components/co-button.js +1 -1
  320. package/dist/components/co-calendar-month.js +1 -1
  321. package/dist/components/co-calendar-timegrid.js +1 -1
  322. package/dist/components/co-calendar.js +1 -1
  323. package/dist/components/co-card.js +1 -1
  324. package/dist/components/co-carousel.js +1 -1
  325. package/dist/components/co-checkbox-group.js +1 -1
  326. package/dist/components/co-checkbox.js +1 -1
  327. package/dist/components/co-chip.js +1 -1
  328. package/dist/components/co-color-picker.js +1 -1
  329. package/dist/components/co-column-picker.js +1 -1
  330. package/dist/components/co-combobox.js +1 -1
  331. package/dist/components/co-command-search.js +1 -1
  332. package/dist/components/co-data-table-pagination.js +1 -1
  333. package/dist/components/co-data-table.js +1 -1
  334. package/dist/components/co-date-field.js +1 -1
  335. package/dist/components/co-date-picker.js +1 -1
  336. package/dist/components/co-date-range-picker.js +1 -1
  337. package/dist/components/co-date-range.js +1 -1
  338. package/dist/components/co-date-time-picker.js +1 -1
  339. package/dist/components/co-drawer.js +1 -1
  340. package/dist/components/co-drive-card.js +1 -1
  341. package/dist/components/co-drop-zone.js +1 -1
  342. package/dist/components/co-empty-state.js +1 -1
  343. package/dist/components/co-event-calendar.js +1 -1
  344. package/dist/components/co-event-popover.js +1 -1
  345. package/dist/components/co-fab.js +1 -1
  346. package/dist/components/co-file-field.js +1 -1
  347. package/dist/components/co-file-type-tile.js +1 -1
  348. package/dist/components/co-helper-text.js +1 -1
  349. package/dist/components/co-icon-button.js +1 -1
  350. package/dist/components/co-icon.js +1 -1
  351. package/dist/components/co-input.js +1 -1
  352. package/dist/components/co-json-field.js +1 -1
  353. package/dist/components/co-lightbox.js +1 -1
  354. package/dist/components/co-list-footer.js +1 -1
  355. package/dist/components/co-list-item.js +1 -1
  356. package/dist/components/co-media-thumb.js +1 -1
  357. package/dist/components/co-menu-divider.js +1 -1
  358. package/dist/components/co-menu-item.js +1 -1
  359. package/dist/components/co-menu.js +1 -1
  360. package/dist/components/co-modal.js +1 -1
  361. package/dist/components/co-navbar.js +1 -1
  362. package/dist/components/co-number-field.js +1 -1
  363. package/dist/components/co-option-list.js +1 -1
  364. package/dist/components/co-overlay.js +1 -1
  365. package/dist/components/co-page-header.js +1 -1
  366. package/dist/components/co-phone-field.js +1 -1
  367. package/dist/components/co-popover.js +1 -1
  368. package/dist/components/co-progress-bar.js +1 -1
  369. package/dist/components/co-progress-circle.js +1 -1
  370. package/dist/components/co-radio-group.js +1 -1
  371. package/dist/components/co-radio.js +1 -1
  372. package/dist/components/co-rating.js +1 -1
  373. package/dist/components/co-ref-field.js +1 -1
  374. package/dist/components/co-rich-text-editor.js +1 -1
  375. package/dist/components/co-rich-text-toolbar.js +1 -1
  376. package/dist/components/co-row.js +1 -1
  377. package/dist/components/co-select.js +1 -1
  378. package/dist/components/co-separator.js +1 -1
  379. package/dist/components/co-sidebar-nav.js +1 -1
  380. package/dist/components/co-sidebar.js +1 -1
  381. package/dist/components/co-skeleton.js +1 -1
  382. package/dist/components/co-slider.js +1 -1
  383. package/dist/components/co-switch.js +1 -1
  384. package/dist/components/co-tab-group.js +1 -1
  385. package/dist/components/co-tab.js +1 -1
  386. package/dist/components/co-tags-field.js +1 -1
  387. package/dist/components/co-textarea.js +1 -1
  388. package/dist/components/co-toast.js +1 -1
  389. package/dist/components/co-toggle-button-group.js +1 -1
  390. package/dist/components/co-toggle-button.js +1 -1
  391. package/dist/components/co-tooltip.js +1 -1
  392. package/dist/components/co-transfer-list.js +1 -1
  393. package/dist/components/co-video.js +1 -1
  394. package/dist/components/index.js +1 -1
  395. package/dist/components/{p-BC6sxVVr.js → p-4t5Fputx.js} +1 -1
  396. package/dist/components/p-8wvfrEY4.js +1 -0
  397. package/dist/components/{p-DbISGXT_.js → p-BCZ-tPBT.js} +1 -1
  398. package/dist/components/p-BEiPCCVl.js +1 -0
  399. package/dist/components/{p-CDWXNRpo.js → p-BOmAHbix.js} +1 -1
  400. package/dist/components/p-BUYgHlPz.js +1 -0
  401. package/dist/components/p-BYnSPxpp.js +1 -0
  402. package/dist/components/{p-CVCEiwOS.js → p-Bhuk55S0.js} +1 -1
  403. package/dist/components/{p-CIWoKlGj.js → p-C4So28aS.js} +1 -1
  404. package/dist/components/p-CRABrJmD.js +1 -0
  405. package/dist/components/p-CXLX8DpD.js +1 -0
  406. package/dist/components/{p-ChPooamL.js → p-CXdIxtbK.js} +1 -1
  407. package/dist/components/p-ClAsHpYv.js +1 -0
  408. package/dist/components/p-CnBjUP_M.js +1 -0
  409. package/dist/components/p-DEYpoVxc.js +1 -0
  410. package/dist/components/p-DP0bbhfN.js +1 -0
  411. package/dist/components/{p-T0MdU7sb.js → p-DUYGgqjB.js} +1 -1
  412. package/dist/components/p-DWt_rL1l.js +1 -0
  413. package/dist/components/p-DmyELlI1.js +1 -0
  414. package/dist/components/{p-uZ2D6ESV.js → p-aiNhl9Xd.js} +1 -1
  415. package/dist/components/p-njonLO8t.js +1 -0
  416. package/dist/components/{p-BQFperIX.js → p-xjzIZcgZ.js} +1 -1
  417. package/dist/esm/co-accordion.entry.js +2 -2
  418. package/dist/esm/co-action-bar.entry.js +2 -2
  419. package/dist/esm/co-app-shell.entry.js +2 -2
  420. package/dist/esm/co-audio-player.entry.js +2 -2
  421. package/dist/esm/co-autocomplete.entry.js +15 -6
  422. package/dist/esm/co-avatar-group.entry.js +2 -2
  423. package/dist/esm/co-avatar_2.entry.js +16 -5
  424. package/dist/esm/co-badge.entry.js +1 -1
  425. package/dist/esm/co-bottom-sheet.entry.js +2 -2
  426. package/dist/esm/co-breadcrumb-item.entry.js +1 -1
  427. package/dist/esm/co-breadcrumb.entry.js +1 -1
  428. package/dist/esm/co-button-group.entry.js +1 -1
  429. package/dist/esm/co-button.entry.js +2 -2
  430. package/dist/esm/co-calendar-month_2.entry.js +2 -2
  431. package/dist/esm/co-calendar_3.entry.js +9 -9
  432. package/dist/esm/co-card.entry.js +2 -2
  433. package/dist/esm/co-carousel-item.entry.js +1 -1
  434. package/dist/esm/co-carousel.entry.js +1 -1
  435. package/dist/esm/co-checkbox-group.entry.js +2 -2
  436. package/dist/esm/co-checkbox.entry.js +3 -3
  437. package/dist/esm/co-chip_2.entry.js +26 -14
  438. package/dist/esm/co-color-picker.entry.js +5 -5
  439. package/dist/esm/co-column-picker.entry.js +4 -4
  440. package/dist/esm/co-combobox.entry.js +14 -6
  441. package/dist/esm/co-command-search.entry.js +20 -6
  442. package/dist/esm/co-data-table-pagination.entry.js +6 -6
  443. package/dist/esm/co-data-table.entry.js +128 -9
  444. package/dist/esm/co-date-picker.entry.js +2 -2
  445. package/dist/esm/co-date-range-picker.entry.js +3 -3
  446. package/dist/esm/co-date-range.entry.js +2 -2
  447. package/dist/esm/co-date-time-picker.entry.js +5 -5
  448. package/dist/esm/co-drive-card.entry.js +3 -3
  449. package/dist/esm/co-drop-zone.entry.js +2 -2
  450. package/dist/esm/co-empty-state.entry.js +3 -3
  451. package/dist/esm/co-event-calendar.entry.js +4 -4
  452. package/dist/esm/co-event-popover.entry.js +3 -3
  453. package/dist/esm/co-fab.entry.js +4 -4
  454. package/dist/esm/co-file-field.entry.js +8 -8
  455. package/dist/esm/co-file-type-tile.entry.js +3 -3
  456. package/dist/esm/co-helper-text.entry.js +3 -3
  457. package/dist/esm/co-icon-button.entry.js +3 -3
  458. package/dist/esm/co-icon.entry.js +3 -3
  459. package/dist/esm/co-input.entry.js +3 -3
  460. package/dist/esm/co-json-field.entry.js +6 -6
  461. package/dist/esm/co-lightbox.entry.js +6 -6
  462. package/dist/esm/co-list-footer.entry.js +3 -3
  463. package/dist/esm/co-list-item.entry.js +6 -6
  464. package/dist/esm/co-loader.entry.js +1 -1
  465. package/dist/esm/co-media-thumb.entry.js +3 -3
  466. package/dist/esm/co-menu-divider.entry.js +2 -2
  467. package/dist/esm/co-menu-item.entry.js +2 -2
  468. package/dist/esm/co-menu.entry.js +2 -2
  469. package/dist/esm/co-modal.entry.js +4 -4
  470. package/dist/esm/co-navbar.entry.js +3 -3
  471. package/dist/esm/co-number-field.entry.js +5 -5
  472. package/dist/esm/co-overlay.entry.js +3 -3
  473. package/dist/esm/co-page-header.entry.js +2 -2
  474. package/dist/esm/co-phone-field.entry.js +4 -4
  475. package/dist/esm/co-popover.entry.js +79 -7
  476. package/dist/esm/co-progress-bar.entry.js +3 -3
  477. package/dist/esm/co-progress-circle.entry.js +4 -4
  478. package/dist/esm/co-provider-logo_2.entry.js +2 -2
  479. package/dist/esm/co-radio-group.entry.js +2 -2
  480. package/dist/esm/co-radio.entry.js +5 -5
  481. package/dist/esm/co-rating.entry.js +5 -5
  482. package/dist/esm/co-ref-field.entry.js +28 -7
  483. package/dist/esm/co-rich-text-editor.entry.js +5 -5
  484. package/dist/esm/co-rich-text-toolbar.entry.js +2 -2
  485. package/dist/esm/co-rich-text-viewer.entry.js +1 -1
  486. package/dist/esm/co-row.entry.js +3 -3
  487. package/dist/esm/co-segmented-bar.entry.js +1 -1
  488. package/dist/esm/co-select.entry.js +16 -7
  489. package/dist/esm/co-separator.entry.js +2 -2
  490. package/dist/esm/co-sidebar-nav.entry.js +4 -4
  491. package/dist/esm/co-sidebar.entry.js +4 -4
  492. package/dist/esm/co-slider.entry.js +4 -4
  493. package/dist/esm/co-switch.entry.js +6 -6
  494. package/dist/esm/co-tab-group.entry.js +3 -3
  495. package/dist/esm/co-tab.entry.js +4 -4
  496. package/dist/esm/co-tags-field.entry.js +9 -9
  497. package/dist/esm/co-textarea.entry.js +7 -7
  498. package/dist/esm/co-toast.entry.js +35 -5
  499. package/dist/esm/co-toggle-button-group.entry.js +3 -3
  500. package/dist/esm/co-toggle-button.entry.js +4 -4
  501. package/dist/esm/co-transfer-list.entry.js +2 -2
  502. package/dist/esm/co-video.entry.js +4 -4
  503. package/dist/esm/cobalt.js +3 -3
  504. package/dist/esm/{fieldChip-Bb8YIN0J.js → fieldChip-BZDUy9Z-.js} +1 -1
  505. package/dist/esm/{index-BCEz3S-z.js → index-CrtiywTB.js} +13 -13
  506. package/dist/esm/loader.js +3 -3
  507. package/dist/esm/{requiredMark-D7kAMXHM.js → requiredMark-DCD-ZA51.js} +1 -1
  508. package/dist/types/components/co-autocomplete/co-autocomplete.d.ts +1 -1
  509. package/dist/types/components/co-combobox/co-combobox.d.ts +1 -1
  510. package/dist/types/components/co-command-search/co-command-search.d.ts +7 -0
  511. package/dist/types/components/co-data-table/co-data-table.d.ts +5 -0
  512. package/dist/types/components/co-option-list/co-option-list.d.ts +5 -1
  513. package/dist/types/components/co-popover/co-popover.d.ts +8 -1
  514. package/dist/types/components/co-ref-field/co-ref-field.d.ts +21 -0
  515. package/dist/types/components/co-select/co-select.d.ts +7 -0
  516. package/dist/types/components/co-toast/co-toast.d.ts +19 -0
  517. package/dist/types/components/co-tooltip/co-tooltip.d.ts +6 -0
  518. package/dist/types/components.d.ts +66 -8
  519. package/dist/types/utils/columnResize.d.ts +42 -0
  520. package/dist/types/utils/popover-stack.d.ts +5 -0
  521. package/package.json +2 -2
  522. package/dist/cobalt/p-0f18c4d2.entry.js +0 -1
  523. package/dist/cobalt/p-260196cb.entry.js +0 -1
  524. package/dist/cobalt/p-27dce0ac.entry.js +0 -1
  525. package/dist/cobalt/p-2bf44b2b.entry.js +0 -1
  526. package/dist/cobalt/p-2c100914.entry.js +0 -1
  527. package/dist/cobalt/p-2e1d930f.entry.js +0 -1
  528. package/dist/cobalt/p-35518aee.entry.js +0 -1
  529. package/dist/cobalt/p-38cf47b6.entry.js +0 -1
  530. package/dist/cobalt/p-445acc4c.entry.js +0 -1
  531. package/dist/cobalt/p-4de9232a.entry.js +0 -1
  532. package/dist/cobalt/p-523aca9f.entry.js +0 -1
  533. package/dist/cobalt/p-5319ac3f.entry.js +0 -1
  534. package/dist/cobalt/p-53a276a8.entry.js +0 -1
  535. package/dist/cobalt/p-543cc00d.entry.js +0 -1
  536. package/dist/cobalt/p-59f7d44b.entry.js +0 -1
  537. package/dist/cobalt/p-5b984323.entry.js +0 -1
  538. package/dist/cobalt/p-5bfaca70.entry.js +0 -1
  539. package/dist/cobalt/p-5c250889.entry.js +0 -1
  540. package/dist/cobalt/p-5e21ca17.entry.js +0 -1
  541. package/dist/cobalt/p-61d5ca3c.entry.js +0 -1
  542. package/dist/cobalt/p-6357d9dd.entry.js +0 -1
  543. package/dist/cobalt/p-69b8d98e.entry.js +0 -1
  544. package/dist/cobalt/p-6b089060.entry.js +0 -1
  545. package/dist/cobalt/p-7d077a7c.entry.js +0 -1
  546. package/dist/cobalt/p-7f4bf341.entry.js +0 -1
  547. package/dist/cobalt/p-869c338a.entry.js +0 -1
  548. package/dist/cobalt/p-913b2a14.entry.js +0 -1
  549. package/dist/cobalt/p-9824c478.entry.js +0 -1
  550. package/dist/cobalt/p-99c1ff0f.entry.js +0 -1
  551. package/dist/cobalt/p-BCEz3S-z.js +0 -2
  552. package/dist/cobalt/p-C-d15gih.js +0 -1
  553. package/dist/cobalt/p-D5gr2ent.js +0 -1
  554. package/dist/cobalt/p-a4f39ba2.entry.js +0 -1
  555. package/dist/cobalt/p-a7c23027.entry.js +0 -1
  556. package/dist/cobalt/p-ab8e150e.entry.js +0 -1
  557. package/dist/cobalt/p-bad7ce84.entry.js +0 -1
  558. package/dist/cobalt/p-c237add6.entry.js +0 -1
  559. package/dist/cobalt/p-c32949a5.entry.js +0 -1
  560. package/dist/cobalt/p-cd5555d2.entry.js +0 -1
  561. package/dist/cobalt/p-d56b8a1f.entry.js +0 -1
  562. package/dist/cobalt/p-d6fff135.entry.js +0 -1
  563. package/dist/cobalt/p-d71b87d3.entry.js +0 -1
  564. package/dist/cobalt/p-d83e5189.entry.js +0 -1
  565. package/dist/cobalt/p-de5a05fc.entry.js +0 -1
  566. package/dist/cobalt/p-e2188319.entry.js +0 -1
  567. package/dist/cobalt/p-f4370423.entry.js +0 -1
  568. package/dist/cobalt/p-f4e4bebf.entry.js +0 -1
  569. package/dist/cobalt/p-f7ae0228.entry.js +0 -1
  570. package/dist/components/p-B21rOC2Y.js +0 -1
  571. package/dist/components/p-BXtiFFM2.js +0 -1
  572. package/dist/components/p-BdArvV6T.js +0 -1
  573. package/dist/components/p-BnkGlFYy.js +0 -1
  574. package/dist/components/p-CfeNhAHW.js +0 -1
  575. package/dist/components/p-ChLib-si.js +0 -1
  576. package/dist/components/p-D-3BTFRs.js +0 -1
  577. package/dist/components/p-D0wrmRH8.js +0 -1
  578. package/dist/components/p-DZX7cEqP.js +0 -1
  579. package/dist/components/p-W8Y8ZuPs.js +0 -1
  580. package/dist/components/p-cteJszd-.js +0 -1
  581. package/dist/components/p-mUoTCiYa.js +0 -1
  582. package/dist/components/p-ySi6UG0O.js +0 -1
@@ -75,7 +75,7 @@
75
75
  /* ─── CLICKABLE ─────────────────────────────────────────────── */
76
76
  .co-card--clickable {
77
77
  cursor: pointer;
78
- transition: box-shadow 0.2s ease, transform 0.2s ease;
78
+ transition: box-shadow var(--co-motion-duration-base) var(--co-motion-ease-out), transform var(--co-motion-duration-base) var(--co-motion-ease-out);
79
79
  }
80
80
 
81
81
  .co-card--clickable:hover {
@@ -33,7 +33,8 @@
33
33
  color: var(--co-semantic-text-disabled);
34
34
  }
35
35
 
36
- /* ---- Checkbox box ---- */.co-checkbox {
36
+ /* ---- Checkbox box ---- */
37
+ .co-checkbox {
37
38
  position: relative;
38
39
  display: inline-flex;
39
40
  align-items: center;
@@ -45,7 +46,8 @@
45
46
  overflow: hidden;
46
47
  flex-shrink: 0;
47
48
  box-sizing: border-box;
48
- transition: background 0.15s ease, border-color 0.15s ease;
49
+ transition: background var(--co-motion-duration-fast) var(--co-motion-ease-out),
50
+ border-color var(--co-motion-duration-fast) var(--co-motion-ease-out);
49
51
  }
50
52
 
51
53
  /* ─── SIZES ─────────────────────────────────────────────────── */
@@ -81,31 +83,7 @@
81
83
  border: none;
82
84
  }
83
85
 
84
- /* Checkmark via CSS ::after */
85
- .co-checkbox--checked::after {
86
- content: '';
87
- display: block;
88
- box-sizing: border-box;
89
- border-style: solid;
90
- border-color: var(--co-semantic-on-primary);
91
- border-width: 0 0 1.5px 1.5px;
92
- transform: rotate(-45deg) translateY(-15%);
93
- }
94
-
95
- .co-checkbox--small.co-checkbox--checked::after {
96
- width: 7px;
97
- height: 4px;
98
- }
99
-
100
- .co-checkbox--medium.co-checkbox--checked::after {
101
- width: 8px;
102
- height: 5px;
103
- }
104
-
105
- .co-checkbox--large.co-checkbox--checked::after {
106
- width: 10px;
107
- height: 6px;
108
- }
86
+ /* Check/dash glyphs: inline SVG for every appearance — see "GLYPH" below. */
109
87
 
110
88
  /* ─── INDETERMINATE ─────────────────────────────────────────── */
111
89
  .co-checkbox--indeterminate {
@@ -113,29 +91,6 @@
113
91
  border: none;
114
92
  }
115
93
 
116
- /* Dash (minus) icon via CSS ::after */
117
- .co-checkbox--indeterminate::after {
118
- content: '';
119
- display: block;
120
- background: var(--co-semantic-on-primary);
121
- border-radius: 1px;
122
- }
123
-
124
- .co-checkbox--small.co-checkbox--indeterminate::after {
125
- width: 8px;
126
- height: 1.5px;
127
- }
128
-
129
- .co-checkbox--medium.co-checkbox--indeterminate::after {
130
- width: 10px;
131
- height: 1.75px;
132
- }
133
-
134
- .co-checkbox--large.co-checkbox--indeterminate::after {
135
- width: 12px;
136
- height: 2px;
137
- }
138
-
139
94
  /* ─── DISABLED ──────────────────────────────────────────────── */
140
95
  .co-checkbox--disabled {
141
96
  opacity: 0.4;
@@ -144,7 +99,7 @@
144
99
  }
145
100
 
146
101
  /* ─── OVERLAY appearance (Drive selection chip) ─────────────── */
147
- /* Standalone frosted rounded square, no label, bespoke inline SVG glyphs. */
102
+ /* Standalone frosted rounded square, no label, bespoke glyph metrics. */
148
103
  .co-checkbox--overlay {
149
104
  border-radius: 6px;
150
105
  }
@@ -177,17 +132,88 @@
177
132
  box-shadow: none;
178
133
  }
179
134
 
180
- /* Overlay uses inline SVG glyphs, so suppress the default ::after check/dash */
181
- .co-checkbox--overlay.co-checkbox--checked::after,
182
- .co-checkbox--overlay.co-checkbox--indeterminate::after {
183
- content: none;
184
- }
185
-
135
+ /* ─── GLYPH (check + dash) ──────────────────────────────────── */
136
+ /* One inline SVG holds both paths, always mounted, centred by the box's flex.
137
+ Off state is double-hidden: the dash pattern is shifted fully out of the path
138
+ AND opacity is 0 (the opacity also guards the theoretical round-cap dot at
139
+ dashoffset 1, and any engine that ignored pathLength). */
186
140
  .co-checkbox__glyph {
187
141
  display: block;
142
+ pointer-events: none;
143
+ }
144
+
145
+ .co-checkbox__glyph path {
146
+ stroke: var(--co-semantic-on-primary);
147
+ /* pathLength="1" on both paths → the whole stroke is exactly 1 unit long,
148
+ so dasharray/dashoffset 1 = "not drawn yet", 0 = "fully drawn". */
149
+ stroke-dasharray: 1;
150
+ stroke-dashoffset: 1;
151
+ opacity: 0;
152
+ }
153
+
154
+ /* Draw on check. The transition is declared ONLY in the on state, so turning the
155
+ checkbox off reverts instantly — no reverse-draw artifact. */
156
+ .co-checkbox--checked .co-checkbox__check,
157
+ .co-checkbox--indeterminate .co-checkbox__dash {
158
+ stroke-dashoffset: 0;
159
+ opacity: 1;
160
+ transition: stroke-dashoffset var(--co-motion-duration-base) var(--co-motion-ease-out);
161
+ }
162
+
163
+ /* Per-size glyph box + stroke, replicating the removed ::after geometry.
164
+ The check path's ink measures 9 × 6.5 of the 16-unit viewBox, so the glyph side
165
+ is 16 × (target check width) / 9, and stroke-width is 1.5px × 16 / glyph side.
166
+ Old check ink (centreline of the rotated 1.5px border L): 6.72 / 8.14 / 10.25px
167
+ wide. Old dash bar: 8 / 10 / 12px × 1.5 / 1.75 / 2px. */
168
+ .co-checkbox--small .co-checkbox__glyph {
169
+ width: 12px;
170
+ height: 12px;
171
+ }
172
+
173
+ .co-checkbox--medium .co-checkbox__glyph {
174
+ width: 14px;
175
+ height: 14px;
176
+ }
177
+
178
+ .co-checkbox--large .co-checkbox__glyph {
179
+ width: 18px;
180
+ height: 18px;
181
+ }
182
+
183
+ .co-checkbox--small .co-checkbox__check {
184
+ stroke-width: 2; /* 1.5px */
185
+ }
186
+
187
+ .co-checkbox--medium .co-checkbox__check {
188
+ stroke-width: 1.714; /* 1.5px */
189
+ }
190
+
191
+ .co-checkbox--large .co-checkbox__check {
192
+ stroke-width: 1.333; /* 1.5px */
193
+ }
194
+
195
+ .co-checkbox--small .co-checkbox__dash {
196
+ stroke-width: 2; /* 1.5px */
197
+ }
198
+
199
+ .co-checkbox--medium .co-checkbox__dash {
200
+ stroke-width: 2; /* 1.75px */
201
+ }
202
+
203
+ .co-checkbox--large .co-checkbox__dash {
204
+ stroke-width: 1.778; /* 2px */
205
+ }
206
+
207
+ /* Overlay keeps its bespoke glyph metrics — full-box SVG, 2.2 stroke, white over
208
+ the accent fill (identical to the pre-unification inline attributes). */
209
+ .co-checkbox--overlay .co-checkbox__glyph {
188
210
  width: 100%;
189
211
  height: 100%;
190
- pointer-events: none;
212
+ }
213
+
214
+ .co-checkbox--overlay .co-checkbox__glyph path {
215
+ stroke: #fff;
216
+ stroke-width: 2.2;
191
217
  }
192
218
 
193
219
  @supports not (background: color-mix(in srgb, red, transparent)) {
@@ -47,7 +47,7 @@ export class CoCheckbox {
47
47
  'co-checkbox--checked': this.checked && !this.indeterminate,
48
48
  'co-checkbox--indeterminate': this.indeterminate,
49
49
  'co-checkbox--disabled': this.disabled,
50
- }, style: boxStyle, part: "box" }, isOverlay && this.indeterminate && (h("svg", { key: '75d235738fadf7408b5eb80c5178349f1ad53874', class: "co-checkbox__glyph", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { key: 'e9a15cacae65f1f66096e10bf1a777a6e9eb0a31', d: "M3 8h10", stroke: "#fff", "stroke-width": "2.2", "stroke-linecap": "round" }))), isOverlay && this.checked && !this.indeterminate && (h("svg", { key: '7e66ec4d016bbbbe050eeb10c57f562952b88209', class: "co-checkbox__glyph", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { key: 'dd9c06e590b0cdccc24f6701ed4f5b80da36d091', d: "M3.5 8.5l3 3 6-6.5", stroke: "#fff", "stroke-width": "2.2", "stroke-linecap": "round", "stroke-linejoin": "round" })))), this.label && (h("span", { key: 'a42bc52f90391be07a70cae1beec265080522b1a', class: "co-checkbox__label", part: "label" }, this.label))));
50
+ }, style: boxStyle, part: "box" }, h("svg", { key: 'a127c176e0233460f14c4261d8d2157e657689a9', class: "co-checkbox__glyph", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { key: 'ad7dc0018cdae31156884cd04326bbcdba132b4f', class: "co-checkbox__check", d: "M3.5 8.5l3 3 6-6.5", pathLength: "1", "stroke-linecap": "round", "stroke-linejoin": "round" }), h("path", { key: 'dd665144b25aa51339cf9f6ce0e0edf65cfbe5a9', class: "co-checkbox__dash", d: "M3 8h10", pathLength: "1", "stroke-linecap": "round" }))), this.label && (h("span", { key: '08d6c695e2cbb8188564dc8bb5aab9b569c24838', class: "co-checkbox__label", part: "label" }, this.label))));
51
51
  }
52
52
  static get is() { return "co-checkbox"; }
53
53
  static get encapsulation() { return "shadow"; }
@@ -96,7 +96,7 @@
96
96
  justify-content: center;
97
97
  flex-shrink: 0;
98
98
  box-sizing: border-box;
99
- transition: background 0.15s ease, border-color 0.15s ease;
99
+ transition: background var(--co-motion-duration-fast) var(--co-motion-ease-out), border-color var(--co-motion-duration-fast) var(--co-motion-ease-out);
100
100
  overflow: hidden;
101
101
  }
102
102
 
@@ -19,7 +19,7 @@
19
19
  max-width: 100%;
20
20
  overflow: hidden;
21
21
  border: 1px solid transparent;
22
- transition: background 0.15s ease, border-color 0.15s ease, opacity 0.15s ease, box-shadow 0.15s ease;
22
+ transition: background var(--co-motion-duration-fast) var(--co-motion-ease-out), border-color var(--co-motion-duration-fast) var(--co-motion-ease-out), opacity var(--co-motion-duration-fast) var(--co-motion-ease-out), box-shadow var(--co-motion-duration-fast) var(--co-motion-ease-out);
23
23
  cursor: default;
24
24
  margin: 0;
25
25
  padding: 0;
@@ -287,7 +287,7 @@ button.co-chip--disabled {
287
287
  align-items: center;
288
288
  cursor: pointer;
289
289
  opacity: 1;
290
- transition: opacity 0.1s ease;
290
+ transition: opacity var(--co-motion-duration-fast) var(--co-motion-ease-out);
291
291
  border: none;
292
292
  background: transparent;
293
293
  padding: 0;
@@ -70,7 +70,7 @@ export class CoChip {
70
70
  else
71
71
  effectiveIconMode = 'none';
72
72
  const Tag = this.clickable ? 'button' : 'div';
73
- return (h(Tag, { key: 'd08adf936ccb8e2b1ef10e82e4173571efc6fb9c', class: {
73
+ return (h(Tag, { key: '385173584372bbad8872565f1fc95e8ae8e14563', class: {
74
74
  'co-chip': true,
75
75
  [`co-chip--${this.shape}`]: true,
76
76
  [`co-chip--${this.size}`]: true,
@@ -80,7 +80,7 @@ export class CoChip {
80
80
  'co-chip--clickable': this.clickable,
81
81
  'co-chip--disabled': this.disabled,
82
82
  'co-chip--selected': this.selected,
83
- }, part: "chip", type: this.clickable ? 'button' : undefined, disabled: this.clickable ? this.disabled : undefined, onClick: this.handleClick }, this.dot && (h("span", { key: 'b5d1841160ef7d72a5e41660a7cf161cca45c052', class: "co-chip__dot", part: "dot", style: this.dotColor ? { color: this.dotColor } : undefined }, h("co-icon", { key: 'fba3454103156c3f0d2ffbed21bff3a0104d4351', name: "circle", size: iconSize, weight: "fill" }))), this.iconLeft && !hasLeftSlot && (h("span", { key: '371f6f6f3af2272892155f4d3e4f714aeea6d6b9', class: "co-chip__icon-left", part: "icon-left" }, h("co-icon", { key: 'acce2aa1a4a8e5452154055912249b1aa1f1da67', name: this.iconLeft, size: iconSize, weight: this.iconWeight }))), hasLeftSlot && (h("span", { key: 'f9f686487e6b31d85fc049d3ccbe9c20b29929c6', class: "co-chip__icon-left", part: "icon-left" }, h("slot", { key: '598a282686a50657283c2ea002e41584cade29e0', name: "icon-left" }))), h("span", { key: 'd5d62912bc89da7f6af34d48065a6ab8a63043ba', class: "co-chip__label" }, h("slot", { key: '67ee2a516d20d97eef9556c9c8e849d464ed6643' }, this.label), this.valueLabel != null && this.valueLabel !== '' && (h("span", { key: '08d64c102684108eed55954881beab9a2078aa6a', class: "co-chip__value", part: "value" }, `: ${this.valueLabel}`))), this.iconRight && !hasRightSlot && !this.removable && (h("span", { key: 'b3439d3170f7ac2a63580e38ab7ca390e6bbf2ab', class: "co-chip__icon-right", part: "icon-right" }, h("co-icon", { key: 'd3e5c2bc56c1e31a16a6e263dda57c19509ea459', name: this.iconRight, size: iconSize, weight: this.iconWeight }))), hasRightSlot && (h("span", { key: '89f2f5e870fbb629dcf56838f0ec394cd68ec5d3', class: "co-chip__icon-right", part: "icon-right" }, h("slot", { key: 'a6d0133f96ef488d8e87d15269cd5d11d6bec2d1', name: "icon-right" }))), this.removable && (h("span", { key: 'c29aa14ff3fadd6c514dcfeffd7e1ed279783585', class: "co-chip__remove", part: "remove", role: "button", tabIndex: this.disabled ? -1 : 0, onClick: this.handleRemove, "aria-label": "Remove" }, h("co-icon", { key: '4ca4dea2ca89aa01187065618e63066c3e2d1631', name: "x-circle", size: removeIconSize, weight: "fill" }))), this.trailingIcon && (h("span", { key: '97f5fc2b8e4f2624c3efe67a249f1b025b6aedb5', class: "co-chip__trailing", part: "trailing" }, h("co-icon", { key: 'e15a293d9957fdbef33f22c1fe2b85423d22847c', name: this.trailingIcon, size: trailingIconSize, weight: this.iconWeight })))));
83
+ }, part: "chip", type: this.clickable ? 'button' : undefined, disabled: this.clickable ? this.disabled : undefined, onClick: this.handleClick }, this.dot && (h("span", { key: 'a680c376ac13140b2c073e01fc901f2cfa54bde8', class: "co-chip__dot", part: "dot", style: this.dotColor ? { color: this.dotColor } : undefined }, h("co-icon", { key: '73e58b8b90234eb883b6a1e49b5e37b267f03d1b', name: "circle", size: iconSize, weight: "fill" }))), this.iconLeft && !hasLeftSlot && (h("span", { key: 'b944fbf0a0161846411d8fc2fe034c48c77d42ea', class: "co-chip__icon-left", part: "icon-left" }, h("co-icon", { key: 'b24a5a3c64d0eda1b9d87c66ac93c0d4703973bc', name: this.iconLeft, size: iconSize, weight: this.iconWeight }))), hasLeftSlot && (h("span", { key: '9f1e7fa47bd86e1d7e4812ec0fe5f61490ab0878', class: "co-chip__icon-left", part: "icon-left" }, h("slot", { key: 'e52df105783ff84c932bc289f6e88304ccc4240a', name: "icon-left" }))), h("span", { key: '269f54eca09a4ff301d9ec4e673bf9c8d19ccd87', class: "co-chip__label" }, h("slot", { key: '31fba7c9c05b830562800cc46c48e667e7dc046c' }, this.label), this.valueLabel != null && this.valueLabel !== '' && (h("span", { key: 'a455314236c688f2bff9185135787899da52ea5f', class: "co-chip__value", part: "value" }, `: ${this.valueLabel}`))), this.iconRight && !hasRightSlot && !this.removable && (h("span", { key: '13e5862e03e2fcf7129230a4d68ce7e2b1b4f11e', class: "co-chip__icon-right", part: "icon-right" }, h("co-icon", { key: '66fc09efbdeea37f1dbce3b5ad4443a760618b66', name: this.iconRight, size: iconSize, weight: this.iconWeight }))), hasRightSlot && (h("span", { key: '7acfa1a23e294cb92b17d5174ec0a78161877624', class: "co-chip__icon-right", part: "icon-right" }, h("slot", { key: '9e8ded0f256a72ab81c587a82d2bb570930288f9', name: "icon-right" }))), this.removable && (h("span", { key: 'e30345ce825c823fbf7da1aaaec4141351e18a02', class: "co-chip__remove", part: "remove", role: "button", tabIndex: this.disabled ? -1 : 0, onClick: this.handleRemove, "aria-label": "Remove" }, h("co-icon", { key: '3d9777c29b706cda71ee64b313961c97e215b900', name: "x-circle", size: removeIconSize, weight: "fill" }))), this.trailingIcon && (h("span", { key: 'd99af23fbbb7a8557b8cefd15a4cebdc7437ff43', class: "co-chip__trailing", part: "trailing" }, h("co-icon", { key: 'aa99f2c0f6ec96f95656c607ca5846c282447e35', name: this.trailingIcon, size: trailingIconSize, weight: this.iconWeight })))));
84
84
  }
85
85
  static get is() { return "co-chip"; }
86
86
  static get encapsulation() { return "shadow"; }
@@ -60,7 +60,7 @@
60
60
  min-height: 40px;
61
61
  box-sizing: border-box;
62
62
  cursor: pointer;
63
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
63
+ transition: border-color var(--co-motion-duration-fast) var(--co-motion-ease-out), box-shadow var(--co-motion-duration-fast) var(--co-motion-ease-out);
64
64
  }
65
65
 
66
66
  /* ── Size variants (mirror co-input: s 28 / sm 32 / md 40 / lg 48).
@@ -151,7 +151,7 @@
151
151
  border-radius: var(--co-border-radius-xxs);
152
152
  border: 2px solid transparent;
153
153
  cursor: pointer;
154
- transition: transform 0.1s ease, border-color 0.1s ease;
154
+ transition: transform var(--co-motion-duration-fast) var(--co-motion-ease-out), border-color var(--co-motion-duration-fast) var(--co-motion-ease-out);
155
155
  box-sizing: border-box;
156
156
  }
157
157
 
@@ -200,7 +200,7 @@
200
200
  cursor: pointer;
201
201
  color: var(--co-semantic-text-muted);
202
202
  border-radius: var(--co-border-radius-xxs);
203
- transition: color 0.15s ease, background 0.15s ease;
203
+ transition: color var(--co-motion-duration-fast) var(--co-motion-ease-out), background var(--co-motion-duration-fast) var(--co-motion-ease-out);
204
204
  }
205
205
 
206
206
  .co-color-picker__copy-btn:hover {
@@ -82,10 +82,10 @@ export class CoColorPicker {
82
82
  const presets = this.parsedPresets;
83
83
  const hasValue = !!this.value;
84
84
  const statusClass = this.status !== 'default' ? `co-color-picker--${this.status}` : '';
85
- return (h("div", { key: '49d28cf02d9f34c887f7e14a062d8fa2a5c59d1a', class: `co-color-picker co-color-picker--${this.size} ${statusClass} ${this.isOpen ? 'co-color-picker--open' : ''} ${this.disabled ? 'co-color-picker--disabled' : ''}` }, this.label && (h("label", { key: 'a4b178f117d73a45a9d2ba0374646ab408b2fd6f', class: "co-color-picker__label" }, this.label, h(RequiredMark, { key: '5be202bbcf4edfd7c565069213f749aaefef9319', required: this.required }))), h("co-popover", { key: '3f4435572ce8597f29d7feba26c9c5fe00c58b28', open: this.isOpen, placement: "bottom-start", matchWidth: true, offset: 4, onCoOpen: this.handlePopoverOpen, onCoClose: this.handlePopoverClose }, h("div", { key: 'f9980b7fa0c89648bc65dbf65017ae4489420fd5', slot: "trigger", class: "co-color-picker__trigger" }, h("span", { key: 'd98f1d31fbede3d4c080e12789e5adf17f158510', class: "co-color-picker__swatch", style: { background: hasValue ? this.value : 'transparent' } }), h("span", { key: '73071f85034a2014e254001b1511dc89cbfdf526', class: `co-color-picker__value ${!hasValue ? 'co-color-picker__value--empty' : ''}` }, hasValue ? this.value : this.placeholder)), this.isOpen && (h("div", { key: '75d0b455d0e74e642e8be472a1a4e436731f307a', class: "co-color-picker__panel" }, h("div", { key: 'f881490c55ce08e145fccfc6a9bd0759826a0542', class: "co-color-picker__grid" }, presets.map((preset) => {
85
+ return (h("div", { key: '41a7a80f81aeaf71e1f8429e66aa5511437882fa', class: `co-color-picker co-color-picker--${this.size} ${statusClass} ${this.isOpen ? 'co-color-picker--open' : ''} ${this.disabled ? 'co-color-picker--disabled' : ''}` }, this.label && (h("label", { key: '96404f15d058b7bc0b2d2c13b6744404cc11769a', class: "co-color-picker__label" }, this.label, h(RequiredMark, { key: '16af407f56b58ad6ea649a19aa8a3c96f2caae04', required: this.required }))), h("co-popover", { key: '8eb3b862b8618b32d76e862ce003e667801c3262', open: this.isOpen, placement: "bottom-start", matchWidth: true, offset: 4, onCoOpen: this.handlePopoverOpen, onCoClose: this.handlePopoverClose }, h("div", { key: '0314b0dbf7404fdb23a0b5cd837b07b5879f85a1', slot: "trigger", class: "co-color-picker__trigger" }, h("span", { key: '0d08254d17a15786834c5de548526b6b359a09be', class: "co-color-picker__swatch", style: { background: hasValue ? this.value : 'transparent' } }), h("span", { key: 'afbfa48cb5bd140767acdf2e1df35d7e8985948d', class: `co-color-picker__value ${!hasValue ? 'co-color-picker__value--empty' : ''}` }, hasValue ? this.value : this.placeholder)), this.isOpen && (h("div", { key: '9e0d22b668546a175c6e6559c2af5dd0de2a1843', class: "co-color-picker__panel" }, h("div", { key: '018fec91282680d660be82b01f340b29f13c73f7', class: "co-color-picker__grid" }, presets.map((preset) => {
86
86
  var _a;
87
87
  return (h("button", { type: "button", key: preset.value, class: `co-color-picker__grid-item ${preset.value.toUpperCase() === ((_a = this.value) === null || _a === void 0 ? void 0 : _a.toUpperCase()) ? 'co-color-picker__grid-item--selected' : ''}`, style: { background: preset.value }, title: preset.name, onClick: () => this.handleSwatchClick(preset.value) }));
88
- })), hasValue && (h("div", { key: 'f909b634288d07472da28289a0baa98cf3fe372b', class: "co-color-picker__hex-row" }, h("span", { key: '566a04e86a1a0efc9f42458a893e7416b95427aa', class: "co-color-picker__hex-prefix" }, "#"), h("span", { key: '18898c82c2aaf7c7b87c39c5d9d70bd31d3d04cc', class: "co-color-picker__hex-value" }, this.value.replace(/^#/, '')), h("button", { key: 'bbdcfe3eb919ce5e09d288c496c445c58d3084ae', type: "button", class: `co-color-picker__copy-btn ${this.copied ? 'co-color-picker__copy-btn--copied' : ''}`, title: "Copy", onClick: () => this.handleCopy() }, h("co-icon", { key: '599526103113f33ba8e96a3700e047730956feb4', name: this.copied ? 'check' : 'copy', size: 16 }))))))), this.helperText && (h("div", { key: '8c1550acdddf738736fcf1ea371a4d97eb3ff6b3', class: "co-color-picker__helper" }, this.statusIcon && (h("co-icon", { key: '5465917158f37b874e7ae91c7b41d21f9953f607', name: this.statusIcon, size: 14, weight: "fill", class: "co-color-picker__helper-icon" })), h("span", { key: 'f530d23a12e501a3574e6b9ecbf04f71c2bba160', class: "co-color-picker__helper-text" }, this.helperText)))));
88
+ })), hasValue && (h("div", { key: '83420abbf343f57fa57804c676fd22e91d2f6816', class: "co-color-picker__hex-row" }, h("span", { key: '1b9ce2cdb091734c9d34003c8ce48a165e8763a8', class: "co-color-picker__hex-prefix" }, "#"), h("span", { key: '5733ec9110227e3ffa45c15c294629cfe420c485', class: "co-color-picker__hex-value" }, this.value.replace(/^#/, '')), h("button", { key: '249b0f7eb80517c89ecaa11c09cf64ae70fd3d52', type: "button", class: `co-color-picker__copy-btn ${this.copied ? 'co-color-picker__copy-btn--copied' : ''}`, title: "Copy", onClick: () => this.handleCopy() }, h("co-icon", { key: 'aed9a2fe68c39047e6027c76c185a1cfc5abb097', name: this.copied ? 'check' : 'copy', size: 16 }))))))), this.helperText && (h("div", { key: '276d4f39ca9f5be6add8bd2ae423a02960f82581', class: "co-color-picker__helper" }, this.statusIcon && (h("co-icon", { key: '4f4323dc9f3d26581fb6ec1f5bd1e668e9a45011', name: this.statusIcon, size: 14, weight: "fill", class: "co-color-picker__helper-icon" })), h("span", { key: 'ee725d0ce3a30985a71bf2d34e5e64124f89891b', class: "co-color-picker__helper-text" }, this.helperText)))));
89
89
  }
90
90
  static get is() { return "co-color-picker"; }
91
91
  static get encapsulation() { return "shadow"; }
@@ -61,7 +61,7 @@
61
61
  min-height: 40px;
62
62
  box-sizing: border-box;
63
63
  cursor: pointer;
64
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
64
+ transition: border-color var(--co-motion-duration-fast) var(--co-motion-ease-out), box-shadow var(--co-motion-duration-fast) var(--co-motion-ease-out);
65
65
  }
66
66
 
67
67
  .co-column-picker__field--focused {
@@ -122,7 +122,7 @@
122
122
  background: transparent;
123
123
  cursor: pointer;
124
124
  color: var(--co-semantic-text-muted);
125
- transition: color 0.15s ease;
125
+ transition: color var(--co-motion-duration-fast) var(--co-motion-ease-out);
126
126
  }
127
127
 
128
128
  .co-column-picker__field-clear:hover {
@@ -133,7 +133,7 @@
133
133
  color: var(--co-semantic-text-muted);
134
134
  display: flex;
135
135
  align-items: center;
136
- transition: color 0.15s ease;
136
+ transition: color var(--co-motion-duration-fast) var(--co-motion-ease-out);
137
137
  }
138
138
 
139
139
  .co-column-picker__field--open .co-column-picker__field-caret {
@@ -163,7 +163,7 @@
163
163
  gap: var(--co-spacing-xs);
164
164
  padding: var(--co-spacing-xs) var(--co-spacing-md);
165
165
  border-bottom: 1px solid var(--co-semantic-border-subtle);
166
- transition: border-color 0.2s ease;
166
+ transition: border-color var(--co-motion-duration-base) var(--co-motion-ease-out);
167
167
  }
168
168
 
169
169
  .co-column-picker__search:focus-within {
@@ -206,7 +206,7 @@
206
206
  color: var(--co-semantic-text-muted);
207
207
  padding: 0;
208
208
  border-radius: var(--co-border-radius-xxs);
209
- transition: all 0.15s ease;
209
+ transition: all var(--co-motion-duration-fast) var(--co-motion-ease-out);
210
210
  }
211
211
 
212
212
  .co-column-picker__search-clear:hover {
@@ -239,7 +239,7 @@
239
239
  cursor: pointer;
240
240
  padding: 3px var(--co-spacing-xs);
241
241
  font-weight: 500;
242
- transition: all 0.15s ease;
242
+ transition: all var(--co-motion-duration-fast) var(--co-motion-ease-out);
243
243
  border-radius: var(--co-border-radius-xxs);
244
244
  line-height: 1.4;
245
245
  }
@@ -291,7 +291,7 @@
291
291
  padding: 0 12px 0 10px;
292
292
  gap: var(--co-spacing-xs);
293
293
  cursor: pointer;
294
- transition: background-color 0.1s ease;
294
+ transition: background-color var(--co-motion-duration-fast) var(--co-motion-ease-out);
295
295
  }
296
296
 
297
297
  .co-column-picker__node-row:hover {
@@ -386,7 +386,7 @@
386
386
  justify-content: center;
387
387
  color: var(--co-semantic-text-muted);
388
388
  margin-left: var(--co-spacing-xs);
389
- transition: transform 0.2s ease, color 0.2s ease;
389
+ transition: transform var(--co-motion-duration-base) var(--co-motion-ease-out), color var(--co-motion-duration-base) var(--co-motion-ease-out);
390
390
  }
391
391
 
392
392
  .co-column-picker__chevron:hover {
@@ -165,13 +165,13 @@ export class CoColumnPicker {
165
165
  return (h("div", { class: "co-column-picker__empty" }, h("co-icon", { name: "magnifying-glass", size: 40, class: "co-column-picker__empty-icon" }), h("span", null, this.emptyText)));
166
166
  }
167
167
  render() {
168
- return (h("div", { key: 'a80fc1d3dcad1747d1d806300b81c3e72a10beb9', class: {
168
+ return (h("div", { key: '6407a41a8e03d70e54cfd378747396a413eb0a11', class: {
169
169
  'co-column-picker': true,
170
170
  'co-column-picker--open': this.isOpen,
171
171
  'co-column-picker--disabled': this.disabled,
172
172
  'co-column-picker--focused': this.focused,
173
173
  [`co-column-picker--${this.status}`]: this.status !== 'default',
174
- } }, (this.label || this.secondaryLabel) && (h("div", { key: 'ca8bc69a870b65f4b16026875a0feb799e8e70d3', class: "co-column-picker__labels" }, this.label && h("label", { key: '173aa03b66e2fec3f9157f92fbda875d1a23a2dd', class: "co-column-picker__label" }, this.label), this.secondaryLabel && h("span", { key: '46f6e14d50567ecc0cf3ef11e1f5b554700aaad3', class: "co-column-picker__secondary-label" }, this.secondaryLabel))), this.renderField(), this.isOpen && (h("div", { key: 'bd9f290112ac732bf1d79762402eb9e487e529ba', class: "co-column-picker__dropdown" }, this.showSearch && (h("div", { key: 'b21d0dafb2c65cb0571e8cf070e757f03a2d668d', class: "co-column-picker__search" }, h("co-icon", { key: '48eac4a99e9badddcada4fe6b927b918c28bd59d', name: "magnifying-glass", size: 14, class: "co-column-picker__search-icon" }), h("input", { key: '8f59474e4d593c9b9a6dceba72f13f57aa0faced', ref: el => (this.searchInputEl = el), class: "co-column-picker__search-input", type: "text", value: this.query, placeholder: this.placeholder, onInput: this.handleSearchInput, onClick: (e) => e.stopPropagation() }), this.query && (h("button", { key: '85db810426d03c4beace3ef5895a467dd2215807', class: "co-column-picker__search-clear", type: "button", onClick: this.handleSearchClear }, h("co-icon", { key: '616eb12fac37df98e30426bb431bf282f35c384c', name: "x", size: 14 }))))), this.showToolbar && this.multiple && (h("div", { key: '7fd12775dd7b756b1e6193a6a6d792ae688bfddb', class: "co-column-picker__toolbar" }, h("button", { key: '50821fab94549af6b92e911bbe8e2cff821e3b45', class: "co-column-picker__toolbar-btn", type: "button", onClick: this.handleSelectAll }, this.selectAllText), h("button", { key: '978f21c455f5651f6f62c35aebda69cda4967676', class: "co-column-picker__toolbar-btn", type: "button", onClick: this.handleDeselectAll }, this.clearText), h("span", { key: '744cc9367dbe98058ddb6a71d3742b0c5867f372', class: "co-column-picker__toolbar-sep" }), h("button", { key: '0369927d132be8feed66e0d4fcd077a937f60c0e', class: "co-column-picker__toolbar-btn", type: "button", onClick: this.handleExpandAll }, this.expandText), h("button", { key: '779a95a5949d2f6e09d593ab8e09b92fc027bd60', class: "co-column-picker__toolbar-btn", type: "button", onClick: this.handleCollapseAll }, this.collapseText), h("span", { key: 'b33b051ee96dfd5b74929644429b11003ade8eb4', style: { flex: '1' } }), this.selectedValues.length > 0 && h("span", { key: '3e1f360328307d2493bbde4867767c36342608b8', class: "co-column-picker__toolbar-counter" }, this.selectedValues.length, " ", this.selectedText))), h("div", { key: '2c36eed809b92c5114a9300ddfbd53347fcb5391', class: "co-column-picker__scroll", style: { maxHeight: `${this.maxHeight}px` } }, this.renderTree()))), this.helperText && (h("div", { key: '66a8cd7433e2f556227187631fec18975319ea3b', class: `co-column-picker__helper co-column-picker__helper--${this.status}` }, this.statusIcon && h("co-icon", { key: '05b34fe973453b6c7ad30ccd426ff2994072b97b', name: this.statusIcon, size: 14, weight: "fill", class: "co-column-picker__helper-icon" }), h("span", { key: 'a7bc18db7dd835f3384279a7bcc8d536db2f2fab', class: "co-column-picker__helper-text" }, this.helperText)))));
174
+ } }, (this.label || this.secondaryLabel) && (h("div", { key: '86850ac9d0162b34369c70424549d101c9b72cc3', class: "co-column-picker__labels" }, this.label && h("label", { key: 'c05eccf88052fdcf8b593282daa1fc0f9a8bab1e', class: "co-column-picker__label" }, this.label), this.secondaryLabel && h("span", { key: 'fe64f07fb1238d51506575c679bb33c7797c2edc', class: "co-column-picker__secondary-label" }, this.secondaryLabel))), this.renderField(), this.isOpen && (h("div", { key: 'cb28e40aaf843c96a2649efef1e3803cde627345', class: "co-column-picker__dropdown" }, this.showSearch && (h("div", { key: '37ab85bf708a3ba34f5ddb1ab416600b0d0be072', class: "co-column-picker__search" }, h("co-icon", { key: '8b10c859742279f5e11d764d6012429259bdec19', name: "magnifying-glass", size: 14, class: "co-column-picker__search-icon" }), h("input", { key: '7f52dbbcc524bf78424cb85396ad62b68b16dac5', ref: el => (this.searchInputEl = el), class: "co-column-picker__search-input", type: "text", value: this.query, placeholder: this.placeholder, onInput: this.handleSearchInput, onClick: (e) => e.stopPropagation() }), this.query && (h("button", { key: 'ddbd0996534dcda27de900019d10b12eeb352d8d', class: "co-column-picker__search-clear", type: "button", onClick: this.handleSearchClear }, h("co-icon", { key: 'f4d997c88423b664f63fcc09acf5366f735f3a57', name: "x", size: 14 }))))), this.showToolbar && this.multiple && (h("div", { key: '0e6ee3c9351c48c10affd4e2146cf9939a06971d', class: "co-column-picker__toolbar" }, h("button", { key: '101167f8a9da5f47dec86a94f9ffa0d4bb2edfbb', class: "co-column-picker__toolbar-btn", type: "button", onClick: this.handleSelectAll }, this.selectAllText), h("button", { key: '6e00fd6f1be5f2bc223dbb1b6800916d0872b7a2', class: "co-column-picker__toolbar-btn", type: "button", onClick: this.handleDeselectAll }, this.clearText), h("span", { key: '9446309b1a737059936a3fecdbbca37677544c49', class: "co-column-picker__toolbar-sep" }), h("button", { key: '7a014ee36386286cee3b97d1a67cafe8eca60ac4', class: "co-column-picker__toolbar-btn", type: "button", onClick: this.handleExpandAll }, this.expandText), h("button", { key: '09a58d24e5fef162b9c8452d905e36c89b5fb0a9', class: "co-column-picker__toolbar-btn", type: "button", onClick: this.handleCollapseAll }, this.collapseText), h("span", { key: '01468f7c6140081183cccb1c7ae063f8bbafad5e', style: { flex: '1' } }), this.selectedValues.length > 0 && h("span", { key: '94d9805ce88fed580da36d122d134c4f445df03f', class: "co-column-picker__toolbar-counter" }, this.selectedValues.length, " ", this.selectedText))), h("div", { key: '95aab5f3408bf840d0e27f6e1de3908b6a9dd3c6', class: "co-column-picker__scroll", style: { maxHeight: `${this.maxHeight}px` } }, this.renderTree()))), this.helperText && (h("div", { key: '27533140acd117f09e981f307f0c39d741b92515', class: `co-column-picker__helper co-column-picker__helper--${this.status}` }, this.statusIcon && h("co-icon", { key: '7992e3f214985653e673f64f5b85e07be5298cc7', name: this.statusIcon, size: 14, weight: "fill", class: "co-column-picker__helper-icon" }), h("span", { key: '01eb7d766027a9c0cff30f91be730f3dbb4b2443', class: "co-column-picker__helper-text" }, this.helperText)))));
175
175
  }
176
176
  static get is() { return "co-column-picker"; }
177
177
  static get encapsulation() { return "shadow"; }
@@ -63,7 +63,7 @@
63
63
  min-height: 40px;
64
64
  box-sizing: border-box;
65
65
  cursor: pointer;
66
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
66
+ transition: border-color var(--co-motion-duration-fast) var(--co-motion-ease-out), box-shadow var(--co-motion-duration-fast) var(--co-motion-ease-out);
67
67
  overflow: hidden;
68
68
  }
69
69
 
@@ -181,7 +181,7 @@
181
181
  background: transparent;
182
182
  cursor: pointer;
183
183
  color: var(--co-semantic-text-muted);
184
- transition: color 0.15s ease;
184
+ transition: color var(--co-motion-duration-fast) var(--co-motion-ease-out);
185
185
  }
186
186
 
187
187
  .co-combobox__clear:hover {
@@ -204,8 +204,10 @@
204
204
  Dropdown panel
205
205
  ============================================================ */
206
206
 
207
+ /* Sin padding propio: co-option-list ES el interior del panel (search margin
208
+ * 12 + options padding 12 — su contrato dice "el chrome es del host; aquí solo
209
+ * el interior"). Un padding acá se SUMA al suyo y deja gutters dobles (24px). */
207
210
  .co-combobox__dropdown {
208
- padding: var(--co-spacing-md);
209
211
  display: flex;
210
212
  flex-direction: column;
211
213
  gap: var(--co-spacing-sm2);
@@ -69,6 +69,14 @@ export class CoCombobox {
69
69
  * normalizado `{ value, item }`.
70
70
  */
71
71
  this.handleListChange = (detail) => {
72
+ // co-option-list emite value:null al DESELECCIONAR → limpiar y PROPAGAR el
73
+ // deselect (value:null) para que el host distinga "vacío" de "sin cambio".
74
+ if (detail.value == null) {
75
+ this.value = '[]';
76
+ this.isOpen = false;
77
+ this.coChange.emit({ value: null, item: null });
78
+ return;
79
+ }
72
80
  if (this.multiple) {
73
81
  const next = detail.value;
74
82
  this.value = JSON.stringify(next);
@@ -224,15 +232,15 @@ export class CoCombobox {
224
232
  }
225
233
  }
226
234
  render() {
227
- return (h("div", { key: '49723329c7a66fc87bac2280c36993aa7488e723', class: {
235
+ return (h("div", { key: '115947444bbca6363647eadfa82af752c5e9c59a', class: {
228
236
  'co-combobox': true,
229
237
  'co-combobox--open': this.isOpen,
230
238
  'co-combobox--disabled': this.disabled,
231
239
  [`co-combobox--${this.size}`]: true,
232
- }, part: "wrapper" }, (this.label || this.secondaryLabel) && (h("div", { key: 'a32ea355689787cf5e4175964284512bd10041f7', class: "co-combobox__labels" }, this.label && h("label", { key: '2ec23463de4b263fbbf3669fe7c6930719b97572', class: "co-combobox__label", part: "label" }, this.label, h(RequiredMark, { key: '0fab4c10366d9f773eeef6912904a43e376685b5', required: this.required })), this.secondaryLabel && (h("span", { key: '3117d08e3d61799b840b6e12fd9bce7ed0eb74e8', class: "co-combobox__secondary-label", part: "secondary-label" }, this.secondaryLabel)))), h("co-popover", { key: '28d93c37ef62f757ae27f25621036aac8bb3e752', open: this.isOpen, placement: "bottom-start", matchWidth: true, offset: 4, onCoOpen: this.handlePopoverOpen, onCoClose: this.handlePopoverClose }, h("div", { key: '6e390e5d89d6e26abf75d3d8619bacb3e479388f', slot: "trigger", class: "co-combobox__trigger", part: "trigger", onClick: this.handleTriggerClick }, this.iconLeft && (h("co-icon", { key: 'f0df056dcd2a6b6990e920efb88daadde3e1fee1', name: this.iconLeft, size: 16, class: "co-combobox__icon" })), h("div", { key: 'b25c9da054983f6d572f7d63ac063a9735871753', class: "co-combobox__input-wrapper", ref: (el) => (this.chipContainerEl = el) }, this.multiple && this.hasValue ? (this.selectedOptions.map(opt => (h("co-chip", { size: "small", "icon-mode": "both", label: opt.label }, h("co-icon", { slot: "icon-left", name: opt.icon || 'circle', size: 10 }), h("co-icon", { slot: "icon-right", name: "x-circle", size: 10, weight: "fill", onClick: (e) => { e.stopPropagation(); this.handleListRemove(opt.value); } }))))) : (h("span", { class: {
240
+ }, part: "wrapper" }, (this.label || this.secondaryLabel) && (h("div", { key: '775183563b76c909d4d566b0f829a3a7cf7927f2', class: "co-combobox__labels" }, this.label && h("label", { key: '38441f5d492f9c0976fb20f299d82ac6129b2ef6', class: "co-combobox__label", part: "label" }, this.label, h(RequiredMark, { key: '921136617ac8082a7f54e21fd4954e2a8a25870f', required: this.required })), this.secondaryLabel && (h("span", { key: 'f93bc3b87b8d16736f2326a54cc63799612fd7b2', class: "co-combobox__secondary-label", part: "secondary-label" }, this.secondaryLabel)))), h("co-popover", { key: '295160e48bacd17ee7ec69b8f1c77da2436acbe5', open: this.isOpen, placement: "bottom-start", matchWidth: true, offset: 4, onCoOpen: this.handlePopoverOpen, onCoClose: this.handlePopoverClose }, h("div", { key: 'e0f2595637c0e2362d6b07e36302c8080b31064a', slot: "trigger", class: "co-combobox__trigger", part: "trigger", onClick: this.handleTriggerClick }, this.iconLeft && (h("co-icon", { key: '560b912264de5ebf0e05c1e67afcd85c7e890d5f', name: this.iconLeft, size: 16, class: "co-combobox__icon" })), h("div", { key: '455830491a53919efc40396c7664576e583f19ab', class: "co-combobox__input-wrapper", ref: (el) => (this.chipContainerEl = el) }, this.multiple && this.hasValue ? (this.selectedOptions.map(opt => (h("co-chip", { size: "small", "icon-mode": "both", label: opt.label }, h("co-icon", { slot: "icon-left", name: opt.icon || 'circle', size: 10 }), h("co-icon", { slot: "icon-right", name: "x-circle", size: 10, weight: "fill", onClick: (e) => { e.stopPropagation(); this.handleListRemove(opt.value); } }))))) : (h("span", { class: {
233
241
  'co-combobox__text': true,
234
242
  'co-combobox__text--placeholder': !this.hasValue,
235
- } }, this.hasValue ? this.displayText : this.placeholder))), this.multiple && this.overflowCount > 0 && (h("span", { key: 'ac7ff27f3d4149260f441b3b81fba8b92d49bedf', class: "co-combobox__overflow-badge" }, this.overflowCount)), this.clearable && this.hasValue && !this.disabled && (h("button", { key: 'ad11ddb7806a2b1cfe044f6d1773ac9e19c5afb9', class: "co-combobox__clear", type: "button", tabIndex: -1, onClick: this.handleClear, "aria-label": "Clear selection", part: "clear" }, h("co-icon", { key: '634a149b26996d648cb88095e80531314d0c13dd', name: "x-circle", size: 16, weight: "fill" }))), h("co-icon", { key: '8ac8d146143869b39c6f3908a3580220dab41642', name: this.isOpen ? 'caret-up' : 'caret-down', size: 16, class: "co-combobox__caret" })), h("div", { key: '82f61579e15806878fa2b0e3797e20b77a8d5465', class: "co-combobox__dropdown", part: "dropdown" }, this.isOpen && (h("co-option-list", { key: 'b697324b29132b95d7c9d593f36452052933f22e', ref: (el) => (this.optionListEl = el), items: this.listItemsJson, value: this.multiple ? JSON.stringify(this.selectedValues) : (this.selectedValues[0] || ''), multiple: this.multiple, selectedAffordance: "check", removableItems: this.multiple, virtual: true, searchable: this.searchable, searchPlaceholder: this.searchPlaceholder, searchDebounce: 0, highlightMatches: true, emptyMessage: this.emptyMessage, onCoSearch: (e) => { this.searchQuery = e.detail; }, onCoChange: (e) => this.handleListChange(e.detail), onCoRemoveItem: (e) => this.handleListRemove(e.detail) }, this.showFooter && (h("co-list-footer", { key: '151517f62b1188dd7ea3a3c53f69be9260e2cbd8', slot: "footer", secondaryLabel: this.footerSecondaryLabel, primaryLabel: this.footerPrimaryLabel, onCoSecondary: this.handleFooterSecondary, onCoPrimary: this.handleFooterPrimary })))))), this.helperText && (h("div", { key: 'd6b65a3aa77340142038818d43cce73c39914897', class: `co-combobox__helper co-combobox__helper--${this.status}`, part: "helper" }, this.statusIcon && h("co-icon", { key: 'e77f399023eab01cb6de4dd356a9dc897da58755', name: this.statusIcon, size: 14, weight: "fill", class: "co-combobox__helper-icon" }), h("span", { key: 'cad08054732494180772c881622362e9d592df26', class: "co-combobox__helper-text" }, this.helperText)))));
243
+ } }, this.hasValue ? this.displayText : this.placeholder))), this.multiple && this.overflowCount > 0 && (h("span", { key: 'cd033364eb722a95343b8fd1229d1bd4e86ac6eb', class: "co-combobox__overflow-badge" }, this.overflowCount)), this.clearable && this.hasValue && !this.disabled && (h("button", { key: '9734b00f8d48310ec7643ecad7c37dc67b8d10a5', class: "co-combobox__clear", type: "button", tabIndex: -1, onClick: this.handleClear, "aria-label": "Clear selection", part: "clear" }, h("co-icon", { key: 'b5b4441482bd896ca54e651dd491ea947a72a163', name: "x-circle", size: 16, weight: "fill" }))), h("co-icon", { key: '2c1e33a3a5e13d77d7c4a646be2f723021608ce1', name: this.isOpen ? 'caret-up' : 'caret-down', size: 16, class: "co-combobox__caret" })), h("div", { key: '2860fe141048ca0e6eb3fd4d0354fec49d1a9234', class: "co-combobox__dropdown", part: "dropdown" }, this.isOpen && (h("co-option-list", { key: '04a725a827b086bcd2942ca96b1e2739a459ac57', ref: (el) => (this.optionListEl = el), items: this.listItemsJson, value: this.multiple ? JSON.stringify(this.selectedValues) : (this.selectedValues[0] || ''), multiple: this.multiple, selectedAffordance: "check", removableItems: this.multiple, virtual: true, searchable: this.searchable, searchPlaceholder: this.searchPlaceholder, searchDebounce: 0, highlightMatches: true, emptyMessage: this.emptyMessage, onCoSearch: (e) => { this.searchQuery = e.detail; }, onCoChange: (e) => this.handleListChange(e.detail), onCoRemoveItem: (e) => this.handleListRemove(e.detail) }, this.showFooter && (h("co-list-footer", { key: '40f9a6ba691c5766bd5d9c0dcf8cb9c467139ba7', slot: "footer", secondaryLabel: this.footerSecondaryLabel, primaryLabel: this.footerPrimaryLabel, onCoSecondary: this.handleFooterSecondary, onCoPrimary: this.handleFooterPrimary })))))), this.helperText && (h("div", { key: 'e518fc76d1e94f2a9cf74e3ea6f934966b24f837', class: `co-combobox__helper co-combobox__helper--${this.status}`, part: "helper" }, this.statusIcon && h("co-icon", { key: '72e7890676a61ff832894bf92530a032c6c5c85d', name: this.statusIcon, size: 14, weight: "fill", class: "co-combobox__helper-icon" }), h("span", { key: 'c5bf6bf198c8380cd787214e68eb2eacadb88f44', class: "co-combobox__helper-text" }, this.helperText)))));
236
244
  }
237
245
  static get is() { return "co-combobox"; }
238
246
  static get encapsulation() { return "shadow"; }
@@ -671,8 +679,8 @@ export class CoCombobox {
671
679
  "text": "Emitted when the selection changes. `item` is the picked option (the\noption-list's native `{ _id, label }` shape); `null` on clear."
672
680
  },
673
681
  "complexType": {
674
- "original": "{ value: string[] | string; item: { _id: string; label: string } | null }",
675
- "resolved": "{ value: string | string[]; item: { _id: string; label: string; } | null; }",
682
+ "original": "{ value: string[] | string | null; item: { _id: string; label: string } | null }",
683
+ "resolved": "{ value: string | string[] | null; item: { _id: string; label: string; } | null; }",
676
684
  "references": {}
677
685
  }
678
686
  }, {
@@ -22,7 +22,7 @@ co-overlay { --co-overlay-bg: rgba(0, 0, 0, 0.16); }
22
22
  font-family: var(--co-font-family-primary);
23
23
  transform: translateY(8px) scale(0.98);
24
24
  opacity: 0;
25
- transition: transform 0.15s ease, opacity 0.15s ease;
25
+ transition: transform var(--co-motion-duration-fast) var(--co-motion-ease-out), opacity var(--co-motion-duration-fast) var(--co-motion-ease-out);
26
26
  margin-top: -15vh;
27
27
  }
28
28
 
@@ -120,7 +120,7 @@ co-overlay { --co-overlay-bg: rgba(0, 0, 0, 0.16); }
120
120
  cursor: pointer;
121
121
  padding: 0;
122
122
  line-height: 1;
123
- transition: background 0.1s ease;
123
+ transition: background var(--co-motion-duration-fast) var(--co-motion-ease-out);
124
124
  }
125
125
 
126
126
  .co-command-search__facet-chip-remove:hover {
@@ -134,10 +134,20 @@ co-overlay { --co-overlay-bg: rgba(0, 0, 0, 0.16); }
134
134
  gap: var(--co-spacing-sm);
135
135
  padding: var(--co-spacing-md); /* even breathing room from the input divider + bottom border */
136
136
  overflow-x: auto;
137
+ /* overflow-x:auto alone promotes overflow-y from `visible` to `auto` (CSS spec):
138
+ the horizontal scrollbar then eats a few px of height and triggers a spurious
139
+ VERTICAL scrollbar. Pin overflow-y:hidden so only the horizontal axis scrolls. */
140
+ overflow-y: hidden;
141
+ /* This row's scroll affordance is the left fade + sticky "Más" chip, not a
142
+ scrollbar — hide the native chrome (robust across OS "always show scrollbars"). */
143
+ scrollbar-width: none; /* Firefox + Chromium ≥121 */
137
144
  border-bottom: 1px solid var(--co-semantic-border-default);
138
145
  /* Keep the active tab clear of the sticky "Más" chip when scrolled into view. */
139
146
  scroll-padding-right: 104px;
140
147
  }
148
+ .co-command-search__tabs::-webkit-scrollbar {
149
+ display: none; /* Safari / older WebKit */
150
+ }
141
151
  /* Tabs are co-chip components. Keep them from shrinking in the scroll row. */
142
152
  .co-command-search__tab {
143
153
  flex: 0 0 auto;
@@ -177,7 +187,7 @@ co-overlay { --co-overlay-bg: rgba(0, 0, 0, 0.16); }
177
187
  font-family: inherit;
178
188
  text-align: center;
179
189
  min-width: 0;
180
- transition: background 0.12s ease;
190
+ transition: background var(--co-motion-duration-fast) var(--co-motion-ease-out);
181
191
  }
182
192
  .co-command-search__fav-card:hover {
183
193
  background: var(--co-semantic-surface-hover);
@@ -70,6 +70,18 @@ export class CoCommandSearch {
70
70
  if (item)
71
71
  this.selectItem(item);
72
72
  };
73
+ /**
74
+ * Escape a nivel PANEL: el `handleKeyDown` del input solo dispara con el input
75
+ * enfocado, así que al hacer click en una tab/chip/"Más" o mover el foco a la
76
+ * lista de resultados el Escape se perdía (el palette quedaba atrapado hasta
77
+ * completar una acción). El keydown burbujea desde cualquier hijo hasta acá.
78
+ */
79
+ this.handlePanelKeyDown = (e) => {
80
+ if (e.key === 'Escape') {
81
+ e.preventDefault();
82
+ this.close();
83
+ }
84
+ };
73
85
  this.handleOverlayClick = () => {
74
86
  this.close();
75
87
  };
@@ -150,20 +162,22 @@ export class CoCommandSearch {
150
162
  this.close();
151
163
  }
152
164
  close() {
165
+ if (!this.open)
166
+ return; // idempotente: overlay-click + Escape + input-handler no deben doble-emitir
153
167
  this.open = false;
154
168
  this.coClose.emit();
155
169
  }
156
170
  render() {
157
171
  const items = this.filteredItems;
158
172
  return [
159
- h("div", { key: '6e45f5a53f39f516cc8a3eb43180b4c6f6c413fd', class: "co-command-search__trigger", onClick: this.handleTriggerClick }, h("slot", { key: '0dbbb33bf84b9a0fcf94d71802b87a2d0d240522', name: "trigger" })),
160
- h("co-overlay", { key: 'b7f46dde81f6f3462b550c3ccde29388604f9404', open: this.open, onCoClose: this.handleOverlayClick }, h("div", { key: '745f5b7e2a31897b88303deb6b49ba3787b7c7b8', class: { 'co-command-search': true, 'co-command-search--open': this.open }, part: "panel", role: "dialog", "aria-modal": "true", "aria-label": "Command palette", onClick: this.handlePanelClick }, h("div", { key: '90f367e679c3e971cbe7823e766152cb02b2a018', class: "co-command-search__input-row", part: "input-row" }, h("co-icon", { key: 'f084dde02745550de0ebe92840f4a3f62e7eb543', name: "magnifying-glass", size: 20 }), this.parsedChips.map((chip, idx) => (h("span", { class: "co-command-search__facet-chip" }, chip.icon && h("co-icon", { name: chip.icon, size: 12 }), h("span", { class: "co-command-search__facet-chip-label" }, chip.label), h("button", { class: "co-command-search__facet-chip-remove", type: "button", "aria-label": `Remove filter ${chip.label}`, onClick: (e) => {
173
+ h("div", { key: '2fa819f611d5e106367baecd8d0d468ef538abb9', class: "co-command-search__trigger", onClick: this.handleTriggerClick }, h("slot", { key: 'ee17e409b1253cc447d9813a458c3b123597caa1', name: "trigger" })),
174
+ h("co-overlay", { key: '57f2be7cc61b9c73d20af7cabe44f27f52da130b', open: this.open, onCoClose: this.handleOverlayClick }, h("div", { key: '8e582bca997ca0b0ed0b77a26a2f5bce17540159', class: { 'co-command-search': true, 'co-command-search--open': this.open }, part: "panel", role: "dialog", "aria-modal": "true", "aria-label": "Command palette", onClick: this.handlePanelClick, onKeyDown: this.handlePanelKeyDown }, h("div", { key: '6252fab9df91285b063186c0814a678c2f91aec9', class: "co-command-search__input-row", part: "input-row" }, h("co-icon", { key: '4ce68141969cd823f3b6d1e286dcd62609244587', name: "magnifying-glass", size: 20 }), this.parsedChips.map((chip, idx) => (h("span", { class: "co-command-search__facet-chip" }, chip.icon && h("co-icon", { name: chip.icon, size: 12 }), h("span", { class: "co-command-search__facet-chip-label" }, chip.label), h("button", { class: "co-command-search__facet-chip-remove", type: "button", "aria-label": `Remove filter ${chip.label}`, onClick: (e) => {
161
175
  e.stopPropagation();
162
176
  this.coChipRemove.emit(idx);
163
- } }, h("co-icon", { name: "x", size: 10, weight: "bold" }))))), h("input", { key: 'd00091dd6ba08d3924a00965b769eec12bade9da', class: "co-command-search__input", type: "text", placeholder: this.placeholder, value: this.query, onInput: this.handleInput, onKeyDown: this.handleKeyDown, ref: el => (this.inputEl = el), part: "input", role: "combobox", "aria-expanded": this.open ? 'true' : 'false', "aria-autocomplete": "list" }), this.loading && (h("co-loader", { key: 'b7c60019d203f7575535a0d12525c55441ba9f69', class: "co-command-search__loading", part: "loading", size: "sm" })), h("span", { key: '6bb4a4c2745b060f5fc118ce42eeb233709e6cde', class: "co-command-search__shortcut" }, "ESC")), (this.parsedTabs.length > 0 || this.hasMore) && (h("div", { key: 'bc77af8a7d44a3156af87c1e0fb16392acca7aa8', class: "co-command-search__tabs", part: "tabs", role: "tablist" }, this.parsedTabs.map(tab => {
177
+ } }, h("co-icon", { name: "x", size: 10, weight: "bold" }))))), h("input", { key: '565abed1c59c32ce3336e110cd9da6afadb693b5', class: "co-command-search__input", type: "text", placeholder: this.placeholder, value: this.query, onInput: this.handleInput, onKeyDown: this.handleKeyDown, ref: el => (this.inputEl = el), part: "input", role: "combobox", "aria-expanded": this.open ? 'true' : 'false', "aria-autocomplete": "list" }), this.loading && (h("co-loader", { key: 'f84db9e0b3f9c53d8eae6ab6edb790f189b3e49d', class: "co-command-search__loading", part: "loading", size: "sm" })), h("span", { key: '7f9e3b653c9d52d0438fafbb645506f3a7aa7f2c', class: "co-command-search__shortcut" }, "ESC")), (this.parsedTabs.length > 0 || this.hasMore) && (h("div", { key: 'fd734ad98b004d5e08f601631d6e2c547ef70dca', class: "co-command-search__tabs", part: "tabs", role: "tablist" }, this.parsedTabs.map(tab => {
164
178
  const active = tab.value === this.activeTab;
165
179
  return (h("co-chip", { class: "co-command-search__tab", role: "tab", "aria-selected": active ? 'true' : 'false', clickable: true, selected: active, variant: active ? 'filled' : 'outlined', color: active ? 'primary' : 'default', iconLeft: tab.icon, label: tab.label, onCoClick: () => this.coTabSelect.emit(active ? '' : tab.value) }));
166
- }), this.hasMore && (h("co-chip", { key: 'ac6931618eacc84c32006f53c8e0c5bbfec3d929', class: "co-command-search__tab co-command-search__tab--more", clickable: true, variant: "outlined", label: this.moreLabel, iconRight: "caret-down", onCoClick: () => this.coMoreTabs.emit() })))), h("div", { key: 'cd70456639c4e41268ddfff11f921c7a1dbede7e', class: "co-command-search__results", part: "results" }, this.parsedFavorites.length > 0 && !this.query && (h("div", { key: '024125d66406fb564e972f207f10972e7bbd944f', class: "co-command-search__fav", part: "favorites" }, h("div", { key: '9b165c53215a7818efe9ca3ee7d601df25f03e7e', class: "co-command-search__fav-grid" }, this.parsedFavorites.map(fav => (h("button", { class: "co-command-search__fav-card", type: "button", onClick: () => this.coSelect.emit(fav.value) }, h("span", { class: "co-command-search__fav-icon", style: { background: fav.color || 'var(--co-semantic-surface-muted)' } }, h("co-icon", { name: fav.icon || 'circle', size: 26, weight: "fill" })), h("span", { class: "co-command-search__fav-label" }, fav.label))))))), h("co-option-list", { key: 'f1f97b1606aaafab94cc8f9d2ab66ce4948cae0b', ref: (el) => (this.optionListEl = el), items: JSON.stringify(items.map((it) => ({
180
+ }), this.hasMore && (h("co-chip", { key: 'f5812a94f9f24df93b34abd9588e43b354d6c5e8', class: "co-command-search__tab co-command-search__tab--more", clickable: true, variant: "outlined", label: this.moreLabel, iconRight: "caret-down", onCoClick: () => this.coMoreTabs.emit() })))), h("div", { key: 'b21f950593d51ecb05ffa7f752cd3b8eebf0ef08', class: "co-command-search__results", part: "results" }, this.parsedFavorites.length > 0 && !this.query && (h("div", { key: '054210475307154dbd369a6468e5bd38a88534a2', class: "co-command-search__fav", part: "favorites" }, h("div", { key: '4cc849cf107af9b94cb9715a7d054f6567e75345', class: "co-command-search__fav-grid" }, this.parsedFavorites.map(fav => (h("button", { class: "co-command-search__fav-card", type: "button", onClick: () => this.coSelect.emit(fav.value) }, h("span", { class: "co-command-search__fav-icon", style: { background: fav.color || 'var(--co-semantic-surface-muted)' } }, h("co-icon", { name: fav.icon || 'circle', size: 26, weight: "fill" })), h("span", { class: "co-command-search__fav-label" }, fav.label))))))), h("co-option-list", { key: 'b48e7eb20f3591e8539211343908fa84ca1ebd1f', ref: (el) => (this.optionListEl = el), items: JSON.stringify(items.map((it) => ({
167
181
  _id: it.value, label: it.label, icon: it.icon, description: it.subtitle, group: it.section,
168
182
  disabled: it.disabled,
169
183
  }))), autoHighlight: true, highlightMatches: true, highlightTerm: this.query, loading: this.loading, emptyMessage: this.emptyMessage, onCoChange: (e) => this.handleListPick(e.detail.item._id) })))),