@ukic/web-components 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (650) hide show
  1. package/dist/cjs/{OpenInNew-f9958725.js → OpenInNew-d5d30e77.js} +1 -1
  2. package/dist/cjs/OpenInNew-d5d30e77.js.map +1 -0
  3. package/dist/cjs/{check-icon-b2f60716.js → check-icon-7225d79b.js} +1 -1
  4. package/dist/cjs/check-icon-7225d79b.js.map +1 -0
  5. package/dist/cjs/{chevron-icon-2bb3a907.js → chevron-icon-3bf07531.js} +1 -1
  6. package/dist/cjs/chevron-icon-3bf07531.js.map +1 -0
  7. package/dist/cjs/{close-icon-04be4880.js → close-icon-7f6ef8e4.js} +1 -1
  8. package/dist/cjs/close-icon-7f6ef8e4.js.map +1 -0
  9. package/dist/cjs/core.cjs.js +3 -6
  10. package/dist/cjs/core.cjs.js.map +1 -1
  11. package/dist/cjs/{helpers-3811d14b.js → helpers-d166f875.js} +27 -10
  12. package/dist/cjs/helpers-d166f875.js.map +1 -0
  13. package/dist/cjs/ic-alert.cjs.entry.js +4 -4
  14. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-back-to-top.cjs.entry.js +3 -3
  16. package/dist/cjs/ic-back-to-top.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +3 -3
  18. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-breadcrumb.cjs.entry.js +4 -4
  20. package/dist/cjs/ic-breadcrumb.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-button_3.cjs.entry.js +4 -4
  22. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-card.cjs.entry.js +4 -4
  24. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-checkbox-group.cjs.entry.js +3 -3
  26. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-checkbox.cjs.entry.js +3 -3
  28. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-chip.cjs.entry.js +3 -3
  30. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-classification-banner.cjs.entry.js +1 -1
  32. package/dist/cjs/ic-classification-banner.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-data-entity.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-data-entity.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-data-row.cjs.entry.js +3 -3
  36. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-dialog.cjs.entry.js +4 -4
  38. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-divider.cjs.entry.js +3 -3
  40. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-empty-state.cjs.entry.js +3 -3
  42. package/dist/cjs/ic-empty-state.cjs.entry.js.map +1 -1
  43. package/dist/cjs/ic-footer-link-group.cjs.entry.js +3 -3
  44. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  45. package/dist/cjs/ic-footer-link.cjs.entry.js +4 -4
  46. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  47. package/dist/cjs/ic-footer.cjs.entry.js +3 -3
  48. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ic-hero.cjs.entry.js +3 -3
  50. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +3 -3
  52. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +43 -37
  54. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-input-label_2.cjs.entry.js +3 -3
  56. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ic-link.cjs.entry.js +4 -4
  58. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  60. package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-menu-item.cjs.entry.js +5 -5
  62. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-navigation-button.cjs.entry.js +3 -3
  64. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-navigation-group.cjs.entry.js +4 -4
  66. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ic-navigation-item.cjs.entry.js +5 -5
  68. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  69. package/dist/cjs/ic-navigation-menu.cjs.entry.js +3 -3
  70. package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
  71. package/dist/cjs/ic-page-header.cjs.entry.js +3 -3
  72. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  73. package/dist/cjs/ic-pagination-item.cjs.entry.js +3 -3
  74. package/dist/cjs/ic-pagination-item.cjs.entry.js.map +1 -1
  75. package/dist/cjs/ic-pagination.cjs.entry.js +3 -3
  76. package/dist/cjs/ic-pagination.cjs.entry.js.map +1 -1
  77. package/dist/cjs/ic-popover-menu.cjs.entry.js +4 -4
  78. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  79. package/dist/cjs/ic-radio-group.cjs.entry.js +3 -3
  80. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  81. package/dist/cjs/ic-radio-option.cjs.entry.js +3 -3
  82. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  83. package/dist/cjs/ic-search-bar.cjs.entry.js +35 -19
  84. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  85. package/dist/cjs/ic-section-container.cjs.entry.js +1 -1
  86. package/dist/cjs/ic-section-container.cjs.entry.js.map +1 -1
  87. package/dist/cjs/ic-select.cjs.entry.js +71 -17
  88. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  89. package/dist/cjs/ic-side-navigation.cjs.entry.js +5 -5
  90. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  91. package/dist/cjs/ic-skeleton.cjs.entry.js +1 -1
  92. package/dist/cjs/ic-skeleton.cjs.entry.js.map +1 -1
  93. package/dist/cjs/ic-status-tag.cjs.entry.js +3 -3
  94. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  95. package/dist/cjs/ic-step.cjs.entry.js +2 -2
  96. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  97. package/dist/cjs/ic-stepper.cjs.entry.js +3 -3
  98. package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
  99. package/dist/cjs/ic-switch.cjs.entry.js +3 -3
  100. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  101. package/dist/cjs/ic-tab-context.cjs.entry.js +2 -2
  102. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  103. package/dist/cjs/ic-tab-group.cjs.entry.js +3 -3
  104. package/dist/cjs/ic-tab-group.cjs.entry.js.map +1 -1
  105. package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
  106. package/dist/cjs/ic-tab-panel.cjs.entry.js.map +1 -1
  107. package/dist/cjs/ic-tab.cjs.entry.js +3 -3
  108. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  109. package/dist/cjs/ic-text-field.cjs.entry.js +3 -3
  110. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  111. package/dist/cjs/ic-theme.cjs.entry.js +3 -3
  112. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  113. package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
  114. package/dist/cjs/ic-toast-region.cjs.entry.js.map +1 -1
  115. package/dist/cjs/ic-toast.cjs.entry.js +4 -4
  116. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  117. package/dist/cjs/ic-top-navigation.cjs.entry.js +3 -3
  118. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  119. package/dist/cjs/ic-typography.cjs.entry.js +3 -3
  120. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  121. package/dist/cjs/{index-2a0c6769.js → index-54d2bed9.js} +98 -26
  122. package/dist/cjs/index-54d2bed9.js.map +1 -0
  123. package/dist/cjs/loader.cjs.js +3 -12
  124. package/dist/cjs/loader.cjs.js.map +1 -1
  125. package/dist/cjs/{popper-d7adcfc6.js → popper-31badbf8.js} +1 -1
  126. package/dist/cjs/popper-31badbf8.js.map +1 -0
  127. package/dist/cjs/{types-3eb02246.js → types-7d67439f.js} +1 -1
  128. package/dist/cjs/types-7d67439f.js.map +1 -0
  129. package/dist/collection/collection-manifest.json +61 -61
  130. package/dist/collection/components/ic-alert/ic-alert.js +2 -1
  131. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  132. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js +5 -1
  133. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js.map +1 -1
  134. package/dist/collection/components/ic-button/ic-button.js +16 -8
  135. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  136. package/dist/collection/components/ic-card/ic-card.js +4 -2
  137. package/dist/collection/components/ic-card/ic-card.js.map +1 -1
  138. package/dist/collection/components/ic-checkbox/ic-checkbox.js +8 -4
  139. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  140. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +6 -3
  141. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  142. package/dist/collection/components/ic-chip/ic-chip.js +6 -3
  143. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  144. package/dist/collection/components/ic-classification-banner/ic-classification-banner.js +2 -1
  145. package/dist/collection/components/ic-classification-banner/ic-classification-banner.js.map +1 -1
  146. package/dist/collection/components/ic-dialog/ic-dialog.js +13 -4
  147. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  148. package/dist/collection/components/ic-empty-state/ic-empty-state.js +4 -2
  149. package/dist/collection/components/ic-empty-state/ic-empty-state.js.map +1 -1
  150. package/dist/collection/components/ic-footer/ic-footer.js +4 -2
  151. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  152. package/dist/collection/components/ic-footer-link/ic-footer-link.js +2 -1
  153. package/dist/collection/components/ic-footer-link/ic-footer-link.js.map +1 -1
  154. package/dist/collection/components/ic-hero/ic-hero.js +4 -2
  155. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  156. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +4 -2
  157. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js.map +1 -1
  158. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +2 -1
  159. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js.map +1 -1
  160. package/dist/collection/components/ic-input-validation/ic-input-validation.js +4 -2
  161. package/dist/collection/components/ic-input-validation/ic-input-validation.js.map +1 -1
  162. package/dist/collection/components/ic-link/ic-link.js +6 -3
  163. package/dist/collection/components/ic-link/ic-link.js.map +1 -1
  164. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +6 -3
  165. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js.map +1 -1
  166. package/dist/collection/components/ic-menu/ic-menu.css +17 -0
  167. package/dist/collection/components/ic-menu/ic-menu.js +107 -48
  168. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  169. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js +13 -2
  170. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js.map +1 -1
  171. package/dist/collection/components/ic-menu-item/ic-menu-item.js +4 -2
  172. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -1
  173. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js +4 -2
  174. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  175. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +2 -1
  176. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  177. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +4 -2
  178. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  179. package/dist/collection/components/ic-page-header/ic-page-header.js +2 -1
  180. package/dist/collection/components/ic-page-header/ic-page-header.js.map +1 -1
  181. package/dist/collection/components/ic-pagination/ic-pagination.js +8 -4
  182. package/dist/collection/components/ic-pagination/ic-pagination.js.map +1 -1
  183. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +4 -2
  184. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js.map +1 -1
  185. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +6 -3
  186. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  187. package/dist/collection/components/ic-radio-group/ic-radio-group.js +6 -3
  188. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  189. package/dist/collection/components/ic-radio-option/ic-radio-option.js +8 -4
  190. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  191. package/dist/collection/components/ic-search-bar/ic-search-bar.js +100 -32
  192. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  193. package/dist/collection/components/ic-section-container/ic-section-container.js +2 -1
  194. package/dist/collection/components/ic-section-container/ic-section-container.js.map +1 -1
  195. package/dist/collection/components/ic-select/ic-select.js +85 -22
  196. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  197. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js +30 -0
  198. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js.map +1 -1
  199. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js +51 -3
  200. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js.map +1 -1
  201. package/dist/collection/components/ic-skeleton/ic-skeleton.js +2 -1
  202. package/dist/collection/components/ic-skeleton/ic-skeleton.js.map +1 -1
  203. package/dist/collection/components/ic-status-tag/ic-status-tag.js +4 -2
  204. package/dist/collection/components/ic-status-tag/ic-status-tag.js.map +1 -1
  205. package/dist/collection/components/ic-step/ic-step.js +8 -4
  206. package/dist/collection/components/ic-step/ic-step.js.map +1 -1
  207. package/dist/collection/components/ic-stepper/ic-stepper.js +4 -2
  208. package/dist/collection/components/ic-stepper/ic-stepper.js.map +1 -1
  209. package/dist/collection/components/ic-switch/ic-switch.js +4 -2
  210. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  211. package/dist/collection/components/ic-tab/ic-tab.js +10 -5
  212. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  213. package/dist/collection/components/ic-tab-context/ic-tab-context.js +10 -5
  214. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  215. package/dist/collection/components/ic-tab-group/ic-tab-group.js +2 -1
  216. package/dist/collection/components/ic-tab-group/ic-tab-group.js.map +1 -1
  217. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +4 -2
  218. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js.map +1 -1
  219. package/dist/collection/components/ic-text-field/ic-text-field.js +26 -13
  220. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  221. package/dist/collection/components/ic-theme/ic-theme.js +2 -1
  222. package/dist/collection/components/ic-theme/ic-theme.js.map +1 -1
  223. package/dist/collection/components/ic-toast/ic-toast.js +8 -4
  224. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  225. package/dist/collection/components/ic-toast-region/ic-toast-region.js +4 -2
  226. package/dist/collection/components/ic-toast-region/ic-toast-region.js.map +1 -1
  227. package/dist/collection/components/ic-tooltip/ic-tooltip.js +4 -2
  228. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  229. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +2 -1
  230. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  231. package/dist/collection/components/ic-typography/ic-typography.js +2 -1
  232. package/dist/collection/components/ic-typography/ic-typography.js.map +1 -1
  233. package/dist/collection/utils/helpers.js +25 -8
  234. package/dist/collection/utils/helpers.js.map +1 -1
  235. package/dist/collection/utils/types.js.map +1 -1
  236. package/dist/components/helpers.js +25 -8
  237. package/dist/components/helpers.js.map +1 -1
  238. package/dist/components/ic-alert2.js.map +1 -1
  239. package/dist/components/ic-back-to-top.js.map +1 -1
  240. package/dist/components/ic-breadcrumb-group.js.map +1 -1
  241. package/dist/components/ic-breadcrumb2.js.map +1 -1
  242. package/dist/components/ic-button2.js.map +1 -1
  243. package/dist/components/ic-card.js.map +1 -1
  244. package/dist/components/ic-checkbox-group.js.map +1 -1
  245. package/dist/components/ic-checkbox.js.map +1 -1
  246. package/dist/components/ic-chip.js.map +1 -1
  247. package/dist/components/ic-classification-banner.js.map +1 -1
  248. package/dist/components/ic-data-entity.js.map +1 -1
  249. package/dist/components/ic-data-row.js.map +1 -1
  250. package/dist/components/ic-dialog.js.map +1 -1
  251. package/dist/components/ic-divider2.js.map +1 -1
  252. package/dist/components/ic-empty-state.js.map +1 -1
  253. package/dist/components/ic-footer-link-group.js.map +1 -1
  254. package/dist/components/ic-footer-link.js.map +1 -1
  255. package/dist/components/ic-footer.js.map +1 -1
  256. package/dist/components/ic-hero.js.map +1 -1
  257. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  258. package/dist/components/ic-input-component-container2.js.map +1 -1
  259. package/dist/components/ic-input-container2.js.map +1 -1
  260. package/dist/components/ic-input-label2.js.map +1 -1
  261. package/dist/components/ic-input-validation2.js.map +1 -1
  262. package/dist/components/ic-link2.js.map +1 -1
  263. package/dist/components/ic-loading-indicator2.js.map +1 -1
  264. package/dist/components/ic-menu-group.js.map +1 -1
  265. package/dist/components/ic-menu-item2.js.map +1 -1
  266. package/dist/components/ic-menu2.js +40 -32
  267. package/dist/components/ic-menu2.js.map +1 -1
  268. package/dist/components/ic-navigation-button.js.map +1 -1
  269. package/dist/components/ic-navigation-group.js.map +1 -1
  270. package/dist/components/ic-navigation-item.js.map +1 -1
  271. package/dist/components/ic-navigation-menu2.js.map +1 -1
  272. package/dist/components/ic-page-header.js.map +1 -1
  273. package/dist/components/ic-pagination-item2.js.map +1 -1
  274. package/dist/components/ic-pagination.js.map +1 -1
  275. package/dist/components/ic-popover-menu.js.map +1 -1
  276. package/dist/components/ic-radio-group.js.map +1 -1
  277. package/dist/components/ic-radio-option.js.map +1 -1
  278. package/dist/components/ic-search-bar.js +34 -16
  279. package/dist/components/ic-search-bar.js.map +1 -1
  280. package/dist/components/ic-section-container2.js.map +1 -1
  281. package/dist/components/ic-select.js +69 -14
  282. package/dist/components/ic-select.js.map +1 -1
  283. package/dist/components/ic-side-navigation.js.map +1 -1
  284. package/dist/components/ic-skeleton.js.map +1 -1
  285. package/dist/components/ic-status-tag.js.map +1 -1
  286. package/dist/components/ic-step.js.map +1 -1
  287. package/dist/components/ic-stepper.js.map +1 -1
  288. package/dist/components/ic-switch.js.map +1 -1
  289. package/dist/components/ic-tab-context.js.map +1 -1
  290. package/dist/components/ic-tab-group.js.map +1 -1
  291. package/dist/components/ic-tab-panel.js.map +1 -1
  292. package/dist/components/ic-tab.js.map +1 -1
  293. package/dist/components/ic-text-field2.js.map +1 -1
  294. package/dist/components/ic-theme.js.map +1 -1
  295. package/dist/components/ic-toast-region.js.map +1 -1
  296. package/dist/components/ic-toast.js.map +1 -1
  297. package/dist/components/ic-tooltip2.js.map +1 -1
  298. package/dist/components/ic-top-navigation.js.map +1 -1
  299. package/dist/components/ic-typography2.js.map +1 -1
  300. package/dist/components/index.d.ts +6 -0
  301. package/dist/components/index.js +1 -1
  302. package/dist/components/types.js.map +1 -1
  303. package/dist/core/core.esm.js +1 -1
  304. package/dist/core/core.esm.js.map +1 -1
  305. package/dist/core/{p-fbd3c432.entry.js → p-0dcc76b1.entry.js} +2 -2
  306. package/dist/core/p-0dcc76b1.entry.js.map +1 -0
  307. package/dist/core/{p-bbdd9770.entry.js → p-101bce17.entry.js} +2 -2
  308. package/dist/core/p-101bce17.entry.js.map +1 -0
  309. package/dist/core/{p-e2fdb944.entry.js → p-16e8bb5a.entry.js} +2 -2
  310. package/dist/core/p-16e8bb5a.entry.js.map +1 -0
  311. package/dist/core/p-18068237.js +3 -0
  312. package/dist/core/p-18068237.js.map +1 -0
  313. package/dist/core/p-1c54269e.entry.js +2 -0
  314. package/dist/core/p-1c54269e.entry.js.map +1 -0
  315. package/dist/core/{p-389c3913.entry.js → p-27897d29.entry.js} +2 -2
  316. package/dist/core/p-27897d29.entry.js.map +1 -0
  317. package/dist/core/{p-e14bc195.entry.js → p-27bf4783.entry.js} +2 -2
  318. package/dist/core/p-27bf4783.entry.js.map +1 -0
  319. package/dist/core/{p-ab4919d6.entry.js → p-3297713b.entry.js} +2 -2
  320. package/dist/core/p-3297713b.entry.js.map +1 -0
  321. package/dist/core/{p-06321d19.js → p-3b185c32.js} +1 -1
  322. package/dist/core/{p-919059e8.entry.js → p-3fc638fc.entry.js} +2 -2
  323. package/dist/core/p-3fc638fc.entry.js.map +1 -0
  324. package/dist/core/{p-103c761f.entry.js → p-414ff132.entry.js} +2 -2
  325. package/dist/core/p-414ff132.entry.js.map +1 -0
  326. package/dist/core/{p-8d4f7027.js → p-426ec638.js} +1 -1
  327. package/dist/core/{p-20fafec4.entry.js → p-433cfd47.entry.js} +2 -2
  328. package/dist/core/p-433cfd47.entry.js.map +1 -0
  329. package/dist/core/{p-da3bd896.entry.js → p-455bfed1.entry.js} +2 -2
  330. package/dist/core/p-455bfed1.entry.js.map +1 -0
  331. package/dist/core/{p-07877eb8.entry.js → p-4c4261e7.entry.js} +2 -2
  332. package/dist/core/p-4c4261e7.entry.js.map +1 -0
  333. package/dist/core/{p-75ac2fbf.entry.js → p-4f7c20b3.entry.js} +2 -2
  334. package/dist/core/p-4f7c20b3.entry.js.map +1 -0
  335. package/dist/core/{p-5e3a09d7.entry.js → p-521c8f40.entry.js} +2 -2
  336. package/dist/core/p-521c8f40.entry.js.map +1 -0
  337. package/dist/core/{p-041604fc.entry.js → p-5b8be53f.entry.js} +2 -2
  338. package/dist/core/p-5b8be53f.entry.js.map +1 -0
  339. package/dist/core/{p-14bea6c0.entry.js → p-5fcbcc3f.entry.js} +2 -2
  340. package/dist/core/p-5fcbcc3f.entry.js.map +1 -0
  341. package/dist/core/{p-3adb1167.entry.js → p-607e7bf2.entry.js} +2 -2
  342. package/dist/core/p-607e7bf2.entry.js.map +1 -0
  343. package/dist/core/{p-6f57b13c.js → p-613aa265.js} +1 -1
  344. package/dist/core/p-613aa265.js.map +1 -0
  345. package/dist/core/{p-c4b81d32.entry.js → p-62499150.entry.js} +2 -2
  346. package/dist/core/p-62499150.entry.js.map +1 -0
  347. package/dist/core/{p-5e685037.entry.js → p-630ae754.entry.js} +2 -2
  348. package/dist/core/p-630ae754.entry.js.map +1 -0
  349. package/dist/core/{p-24b88371.entry.js → p-65df7222.entry.js} +2 -2
  350. package/dist/core/p-65df7222.entry.js.map +1 -0
  351. package/dist/core/{p-8ca80000.entry.js → p-6781620e.entry.js} +2 -2
  352. package/dist/core/p-6781620e.entry.js.map +1 -0
  353. package/dist/core/p-67c18f72.entry.js +2 -0
  354. package/dist/core/p-67c18f72.entry.js.map +1 -0
  355. package/dist/core/{p-7c0dcd00.js → p-68a5aaff.js} +1 -1
  356. package/dist/core/p-68a5aaff.js.map +1 -0
  357. package/dist/core/{p-95992c98.entry.js → p-68fda79a.entry.js} +2 -2
  358. package/dist/core/p-68fda79a.entry.js.map +1 -0
  359. package/dist/core/{p-da5fc036.entry.js → p-7194c255.entry.js} +2 -2
  360. package/dist/core/p-7194c255.entry.js.map +1 -0
  361. package/dist/core/p-77266738.entry.js +2 -0
  362. package/dist/core/p-77266738.entry.js.map +1 -0
  363. package/dist/core/{p-516fd246.entry.js → p-7be2b1fd.entry.js} +2 -2
  364. package/dist/core/p-7be2b1fd.entry.js.map +1 -0
  365. package/dist/core/{p-b5d084c2.entry.js → p-831b0f3f.entry.js} +2 -2
  366. package/dist/core/p-831b0f3f.entry.js.map +1 -0
  367. package/dist/core/{p-2ae7687a.entry.js → p-83e535de.entry.js} +2 -2
  368. package/dist/core/p-83e535de.entry.js.map +1 -0
  369. package/dist/core/{p-441e7d98.entry.js → p-85dd5e5b.entry.js} +2 -2
  370. package/dist/core/p-85dd5e5b.entry.js.map +1 -0
  371. package/dist/core/{p-2f5a9d91.entry.js → p-87149cbd.entry.js} +2 -2
  372. package/dist/core/p-87149cbd.entry.js.map +1 -0
  373. package/dist/core/{p-43b529a5.entry.js → p-8e6169e0.entry.js} +2 -2
  374. package/dist/core/p-8e6169e0.entry.js.map +1 -0
  375. package/dist/core/{p-1b1dbb53.entry.js → p-9248228e.entry.js} +2 -2
  376. package/dist/core/p-9248228e.entry.js.map +1 -0
  377. package/dist/core/{p-8acd7207.entry.js → p-932a67ca.entry.js} +2 -2
  378. package/dist/core/p-932a67ca.entry.js.map +1 -0
  379. package/dist/core/{p-cfb87422.entry.js → p-937ecd5b.entry.js} +2 -2
  380. package/dist/core/p-937ecd5b.entry.js.map +1 -0
  381. package/dist/core/{p-9bde930d.entry.js → p-94903a21.entry.js} +2 -2
  382. package/dist/core/p-94903a21.entry.js.map +1 -0
  383. package/dist/core/{p-4dc6a83d.entry.js → p-96022913.entry.js} +2 -2
  384. package/dist/core/p-96022913.entry.js.map +1 -0
  385. package/dist/core/{p-c3da58eb.entry.js → p-9650e00e.entry.js} +2 -2
  386. package/dist/core/p-9650e00e.entry.js.map +1 -0
  387. package/dist/core/{p-50019c47.entry.js → p-99741b0f.entry.js} +2 -2
  388. package/dist/core/p-99741b0f.entry.js.map +1 -0
  389. package/dist/core/{p-e328bd2d.entry.js → p-a0a02a13.entry.js} +2 -2
  390. package/dist/core/p-a0a02a13.entry.js.map +1 -0
  391. package/dist/core/{p-d2994a71.entry.js → p-a421d3a1.entry.js} +2 -2
  392. package/dist/core/p-a421d3a1.entry.js.map +1 -0
  393. package/dist/core/{p-e9c864ac.entry.js → p-b0b1de0e.entry.js} +2 -2
  394. package/dist/core/p-b0b1de0e.entry.js.map +1 -0
  395. package/dist/core/p-b82776d0.entry.js +2 -0
  396. package/dist/core/p-b82776d0.entry.js.map +1 -0
  397. package/dist/core/{p-fb86da80.entry.js → p-c1859843.entry.js} +2 -2
  398. package/dist/core/p-c1859843.entry.js.map +1 -0
  399. package/dist/core/{p-8c7f4343.js → p-c2e091d7.js} +1 -1
  400. package/dist/core/{p-92868735.entry.js → p-c31e6dbb.entry.js} +2 -2
  401. package/dist/core/p-c31e6dbb.entry.js.map +1 -0
  402. package/dist/core/{p-96bcd466.entry.js → p-c390fbad.entry.js} +2 -2
  403. package/dist/core/p-c390fbad.entry.js.map +1 -0
  404. package/dist/core/{p-c2fc2b77.entry.js → p-cb2c18de.entry.js} +2 -2
  405. package/dist/core/p-cb2c18de.entry.js.map +1 -0
  406. package/dist/core/{p-6bad30aa.entry.js → p-d16100e8.entry.js} +2 -2
  407. package/dist/core/p-d16100e8.entry.js.map +1 -0
  408. package/dist/core/{p-07601b81.entry.js → p-d20917ae.entry.js} +2 -2
  409. package/dist/core/p-d20917ae.entry.js.map +1 -0
  410. package/dist/core/{p-a29fe0c6.entry.js → p-d65ace31.entry.js} +2 -2
  411. package/dist/core/p-d65ace31.entry.js.map +1 -0
  412. package/dist/core/{p-d592006b.entry.js → p-d78c90fe.entry.js} +2 -2
  413. package/dist/core/p-d78c90fe.entry.js.map +1 -0
  414. package/dist/core/{p-4fa9c6eb.entry.js → p-e2d0039d.entry.js} +2 -2
  415. package/dist/core/p-e2d0039d.entry.js.map +1 -0
  416. package/dist/core/{p-98d488aa.entry.js → p-e3923b67.entry.js} +2 -2
  417. package/dist/core/p-e3923b67.entry.js.map +1 -0
  418. package/dist/core/{p-1ac44a4e.entry.js → p-ebd60291.entry.js} +2 -2
  419. package/dist/core/p-ebd60291.entry.js.map +1 -0
  420. package/dist/core/p-ebe76390.js +2 -0
  421. package/dist/core/p-ebe76390.js.map +1 -0
  422. package/dist/core/{p-f2c6a143.js → p-f074ef5b.js} +1 -1
  423. package/dist/core/{p-93ee130d.entry.js → p-fedcfea3.entry.js} +2 -2
  424. package/dist/core/p-fedcfea3.entry.js.map +1 -0
  425. package/dist/esm/{OpenInNew-67a881e0.js → OpenInNew-cdeed5ce.js} +1 -1
  426. package/dist/esm/OpenInNew-cdeed5ce.js.map +1 -0
  427. package/dist/esm/{check-icon-abb210ec.js → check-icon-4a9f8371.js} +1 -1
  428. package/dist/esm/check-icon-4a9f8371.js.map +1 -0
  429. package/dist/esm/{chevron-icon-7927f709.js → chevron-icon-589e3b46.js} +1 -1
  430. package/dist/esm/chevron-icon-589e3b46.js.map +1 -0
  431. package/dist/esm/{close-icon-2ce5d375.js → close-icon-539ec8d1.js} +1 -1
  432. package/dist/esm/close-icon-539ec8d1.js.map +1 -0
  433. package/dist/esm/core.js +4 -7
  434. package/dist/esm/core.js.map +1 -1
  435. package/dist/esm/{helpers-d7d5bd08.js → helpers-b0e80358.js} +27 -10
  436. package/dist/esm/helpers-b0e80358.js.map +1 -0
  437. package/dist/esm/ic-alert.entry.js +4 -4
  438. package/dist/esm/ic-alert.entry.js.map +1 -1
  439. package/dist/esm/ic-back-to-top.entry.js +3 -3
  440. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  441. package/dist/esm/ic-breadcrumb-group.entry.js +3 -3
  442. package/dist/esm/ic-breadcrumb-group.entry.js.map +1 -1
  443. package/dist/esm/ic-breadcrumb.entry.js +4 -4
  444. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  445. package/dist/esm/ic-button_3.entry.js +4 -4
  446. package/dist/esm/ic-button_3.entry.js.map +1 -1
  447. package/dist/esm/ic-card.entry.js +4 -4
  448. package/dist/esm/ic-card.entry.js.map +1 -1
  449. package/dist/esm/ic-checkbox-group.entry.js +3 -3
  450. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  451. package/dist/esm/ic-checkbox.entry.js +3 -3
  452. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  453. package/dist/esm/ic-chip.entry.js +3 -3
  454. package/dist/esm/ic-chip.entry.js.map +1 -1
  455. package/dist/esm/ic-classification-banner.entry.js +1 -1
  456. package/dist/esm/ic-classification-banner.entry.js.map +1 -1
  457. package/dist/esm/ic-data-entity.entry.js +1 -1
  458. package/dist/esm/ic-data-entity.entry.js.map +1 -1
  459. package/dist/esm/ic-data-row.entry.js +3 -3
  460. package/dist/esm/ic-data-row.entry.js.map +1 -1
  461. package/dist/esm/ic-dialog.entry.js +4 -4
  462. package/dist/esm/ic-dialog.entry.js.map +1 -1
  463. package/dist/esm/ic-divider.entry.js +3 -3
  464. package/dist/esm/ic-divider.entry.js.map +1 -1
  465. package/dist/esm/ic-empty-state.entry.js +3 -3
  466. package/dist/esm/ic-empty-state.entry.js.map +1 -1
  467. package/dist/esm/ic-footer-link-group.entry.js +3 -3
  468. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  469. package/dist/esm/ic-footer-link.entry.js +4 -4
  470. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  471. package/dist/esm/ic-footer.entry.js +3 -3
  472. package/dist/esm/ic-footer.entry.js.map +1 -1
  473. package/dist/esm/ic-hero.entry.js +3 -3
  474. package/dist/esm/ic-hero.entry.js.map +1 -1
  475. package/dist/esm/ic-horizontal-scroll.entry.js +3 -3
  476. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  477. package/dist/esm/ic-input-component-container_3.entry.js +43 -37
  478. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  479. package/dist/esm/ic-input-label_2.entry.js +3 -3
  480. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  481. package/dist/esm/ic-link.entry.js +4 -4
  482. package/dist/esm/ic-link.entry.js.map +1 -1
  483. package/dist/esm/ic-menu-group.entry.js +1 -1
  484. package/dist/esm/ic-menu-group.entry.js.map +1 -1
  485. package/dist/esm/ic-menu-item.entry.js +5 -5
  486. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  487. package/dist/esm/ic-navigation-button.entry.js +3 -3
  488. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  489. package/dist/esm/ic-navigation-group.entry.js +4 -4
  490. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  491. package/dist/esm/ic-navigation-item.entry.js +5 -5
  492. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  493. package/dist/esm/ic-navigation-menu.entry.js +3 -3
  494. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  495. package/dist/esm/ic-page-header.entry.js +3 -3
  496. package/dist/esm/ic-page-header.entry.js.map +1 -1
  497. package/dist/esm/ic-pagination-item.entry.js +3 -3
  498. package/dist/esm/ic-pagination-item.entry.js.map +1 -1
  499. package/dist/esm/ic-pagination.entry.js +3 -3
  500. package/dist/esm/ic-pagination.entry.js.map +1 -1
  501. package/dist/esm/ic-popover-menu.entry.js +4 -4
  502. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  503. package/dist/esm/ic-radio-group.entry.js +3 -3
  504. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  505. package/dist/esm/ic-radio-option.entry.js +3 -3
  506. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  507. package/dist/esm/ic-search-bar.entry.js +35 -19
  508. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  509. package/dist/esm/ic-section-container.entry.js +1 -1
  510. package/dist/esm/ic-section-container.entry.js.map +1 -1
  511. package/dist/esm/ic-select.entry.js +71 -17
  512. package/dist/esm/ic-select.entry.js.map +1 -1
  513. package/dist/esm/ic-side-navigation.entry.js +5 -5
  514. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  515. package/dist/esm/ic-skeleton.entry.js +1 -1
  516. package/dist/esm/ic-skeleton.entry.js.map +1 -1
  517. package/dist/esm/ic-status-tag.entry.js +3 -3
  518. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  519. package/dist/esm/ic-step.entry.js +2 -2
  520. package/dist/esm/ic-step.entry.js.map +1 -1
  521. package/dist/esm/ic-stepper.entry.js +3 -3
  522. package/dist/esm/ic-stepper.entry.js.map +1 -1
  523. package/dist/esm/ic-switch.entry.js +3 -3
  524. package/dist/esm/ic-switch.entry.js.map +1 -1
  525. package/dist/esm/ic-tab-context.entry.js +2 -2
  526. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  527. package/dist/esm/ic-tab-group.entry.js +3 -3
  528. package/dist/esm/ic-tab-group.entry.js.map +1 -1
  529. package/dist/esm/ic-tab-panel.entry.js +2 -2
  530. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  531. package/dist/esm/ic-tab.entry.js +3 -3
  532. package/dist/esm/ic-tab.entry.js.map +1 -1
  533. package/dist/esm/ic-text-field.entry.js +3 -3
  534. package/dist/esm/ic-text-field.entry.js.map +1 -1
  535. package/dist/esm/ic-theme.entry.js +3 -3
  536. package/dist/esm/ic-theme.entry.js.map +1 -1
  537. package/dist/esm/ic-toast-region.entry.js +1 -1
  538. package/dist/esm/ic-toast-region.entry.js.map +1 -1
  539. package/dist/esm/ic-toast.entry.js +4 -4
  540. package/dist/esm/ic-toast.entry.js.map +1 -1
  541. package/dist/esm/ic-top-navigation.entry.js +3 -3
  542. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  543. package/dist/esm/ic-typography.entry.js +3 -3
  544. package/dist/esm/ic-typography.entry.js.map +1 -1
  545. package/dist/esm/{index-fd30b77e.js → index-14c9f375.js} +98 -26
  546. package/dist/esm/index-14c9f375.js.map +1 -0
  547. package/dist/esm/loader.js +4 -13
  548. package/dist/esm/loader.js.map +1 -1
  549. package/dist/esm/{popper-15e448b4.js → popper-0fbeff6d.js} +1 -1
  550. package/dist/esm/popper-0fbeff6d.js.map +1 -0
  551. package/dist/esm/{types-dd515332.js → types-b2398b37.js} +1 -1
  552. package/dist/esm/types-b2398b37.js.map +1 -0
  553. package/dist/types/components/ic-breadcrumb/ic-breadcrumb.d.ts +3 -3
  554. package/dist/types/components/ic-dialog/ic-dialog.d.ts +5 -5
  555. package/dist/types/components/ic-menu/ic-menu.d.ts +8 -0
  556. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +8 -0
  557. package/dist/types/components/ic-select/ic-select.d.ts +14 -0
  558. package/dist/types/components.d.ts +32 -0
  559. package/dist/types/stencil-public-runtime.d.ts +17 -5
  560. package/dist/types/utils/helpers.d.ts +2 -2
  561. package/dist/types/utils/types.d.ts +11 -2
  562. package/hydrate/index.d.ts +6 -6
  563. package/hydrate/index.js +280 -164
  564. package/loader/index.d.ts +1 -1
  565. package/package.json +3 -3
  566. package/dist/cjs/OpenInNew-f9958725.js.map +0 -1
  567. package/dist/cjs/check-icon-b2f60716.js.map +0 -1
  568. package/dist/cjs/chevron-icon-2bb3a907.js.map +0 -1
  569. package/dist/cjs/close-icon-04be4880.js.map +0 -1
  570. package/dist/cjs/helpers-3811d14b.js.map +0 -1
  571. package/dist/cjs/index-2a0c6769.js.map +0 -1
  572. package/dist/cjs/popper-d7adcfc6.js.map +0 -1
  573. package/dist/cjs/types-3eb02246.js.map +0 -1
  574. package/dist/core/p-041604fc.entry.js.map +0 -1
  575. package/dist/core/p-07601b81.entry.js.map +0 -1
  576. package/dist/core/p-07877eb8.entry.js.map +0 -1
  577. package/dist/core/p-103c761f.entry.js.map +0 -1
  578. package/dist/core/p-14bea6c0.entry.js.map +0 -1
  579. package/dist/core/p-1ac44a4e.entry.js.map +0 -1
  580. package/dist/core/p-1b1dbb53.entry.js.map +0 -1
  581. package/dist/core/p-20fafec4.entry.js.map +0 -1
  582. package/dist/core/p-24b88371.entry.js.map +0 -1
  583. package/dist/core/p-2ae7687a.entry.js.map +0 -1
  584. package/dist/core/p-2f5a9d91.entry.js.map +0 -1
  585. package/dist/core/p-389c3913.entry.js.map +0 -1
  586. package/dist/core/p-3adb1167.entry.js.map +0 -1
  587. package/dist/core/p-43b529a5.entry.js.map +0 -1
  588. package/dist/core/p-441e7d98.entry.js.map +0 -1
  589. package/dist/core/p-4dc6a83d.entry.js.map +0 -1
  590. package/dist/core/p-4fa9c6eb.entry.js.map +0 -1
  591. package/dist/core/p-50019c47.entry.js.map +0 -1
  592. package/dist/core/p-516fd246.entry.js.map +0 -1
  593. package/dist/core/p-5e3a09d7.entry.js.map +0 -1
  594. package/dist/core/p-5e685037.entry.js.map +0 -1
  595. package/dist/core/p-69920d86.js +0 -3
  596. package/dist/core/p-69920d86.js.map +0 -1
  597. package/dist/core/p-69c1f172.entry.js +0 -2
  598. package/dist/core/p-69c1f172.entry.js.map +0 -1
  599. package/dist/core/p-6bad30aa.entry.js.map +0 -1
  600. package/dist/core/p-6f57b13c.js.map +0 -1
  601. package/dist/core/p-736489c6.entry.js +0 -2
  602. package/dist/core/p-736489c6.entry.js.map +0 -1
  603. package/dist/core/p-75ac2fbf.entry.js.map +0 -1
  604. package/dist/core/p-7c0dcd00.js.map +0 -1
  605. package/dist/core/p-8acd7207.entry.js.map +0 -1
  606. package/dist/core/p-8ca80000.entry.js.map +0 -1
  607. package/dist/core/p-919059e8.entry.js.map +0 -1
  608. package/dist/core/p-92868735.entry.js.map +0 -1
  609. package/dist/core/p-93ee130d.entry.js.map +0 -1
  610. package/dist/core/p-95992c98.entry.js.map +0 -1
  611. package/dist/core/p-96bcd466.entry.js.map +0 -1
  612. package/dist/core/p-98d488aa.entry.js.map +0 -1
  613. package/dist/core/p-9bde930d.entry.js.map +0 -1
  614. package/dist/core/p-9e896463.entry.js +0 -2
  615. package/dist/core/p-9e896463.entry.js.map +0 -1
  616. package/dist/core/p-a29fe0c6.entry.js.map +0 -1
  617. package/dist/core/p-ab4919d6.entry.js.map +0 -1
  618. package/dist/core/p-adf65f4a.entry.js +0 -2
  619. package/dist/core/p-adf65f4a.entry.js.map +0 -1
  620. package/dist/core/p-b5d084c2.entry.js.map +0 -1
  621. package/dist/core/p-bbdd9770.entry.js.map +0 -1
  622. package/dist/core/p-c2fc2b77.entry.js.map +0 -1
  623. package/dist/core/p-c3da58eb.entry.js.map +0 -1
  624. package/dist/core/p-c4b81d32.entry.js.map +0 -1
  625. package/dist/core/p-cfb87422.entry.js.map +0 -1
  626. package/dist/core/p-d2994a71.entry.js.map +0 -1
  627. package/dist/core/p-d592006b.entry.js.map +0 -1
  628. package/dist/core/p-da3bd896.entry.js.map +0 -1
  629. package/dist/core/p-da5fc036.entry.js.map +0 -1
  630. package/dist/core/p-dd980be4.js +0 -2
  631. package/dist/core/p-dd980be4.js.map +0 -1
  632. package/dist/core/p-e14bc195.entry.js.map +0 -1
  633. package/dist/core/p-e2fdb944.entry.js.map +0 -1
  634. package/dist/core/p-e328bd2d.entry.js.map +0 -1
  635. package/dist/core/p-e9c864ac.entry.js.map +0 -1
  636. package/dist/core/p-fb86da80.entry.js.map +0 -1
  637. package/dist/core/p-fbd3c432.entry.js.map +0 -1
  638. package/dist/esm/OpenInNew-67a881e0.js.map +0 -1
  639. package/dist/esm/check-icon-abb210ec.js.map +0 -1
  640. package/dist/esm/chevron-icon-7927f709.js.map +0 -1
  641. package/dist/esm/close-icon-2ce5d375.js.map +0 -1
  642. package/dist/esm/helpers-d7d5bd08.js.map +0 -1
  643. package/dist/esm/index-fd30b77e.js.map +0 -1
  644. package/dist/esm/polyfills/css-shim.js +0 -1
  645. package/dist/esm/popper-15e448b4.js.map +0 -1
  646. package/dist/esm/types-dd515332.js.map +0 -1
  647. /package/dist/core/{p-06321d19.js.map → p-3b185c32.js.map} +0 -0
  648. /package/dist/core/{p-8c7f4343.js.map → p-426ec638.js.map} +0 -0
  649. /package/dist/core/{p-8d4f7027.js.map → p-c2e091d7.js.map} +0 -0
  650. /package/dist/core/{p-f2c6a143.js.map → p-f074ef5b.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["icButtonCss","buttonIds","Button","this","buttonIdNum","hasTooltip","inheritedAttributes","describedByEl","describedById","mutationObserver","handleClick","el","type","closest","handleHiddenFormButtonClick","onFocus","icFocus","emit","onBlur","icBlur","mutationCallback","describedByContent","innerText","disconnectedCallback","undefined","disconnect","componentWillLoad","inheritAttributes","IC_INHERITED_ARIA","removeDisabledFalse","disabled","setAttribute","id","variant","disableTooltip","parentElement","querySelector","componentDidLoad","updateTheme","MutationObserver","observe","characterData","childList","subtree","handleHostClick","event","loading","stopImmediatePropagation","themeChangeHandler","ev","theme","detail","mode","async","buttonEl","focus","newValue","tooltipEl","label","hasIconSlot","iconEl","hasLeftIconSlot","hasRightIconSlot","form","hiddenFormButton","document","createElement","style","display","appendChild","click","remove","newTheme","foregroundColor","getThemeFromContext","IcThemeForegroundEnum","Default","appearance","render","TagType","href","_a","title","ariaLabel","restInheritedAttributes","__rest","buttonAttrs","formaction","formenctype","formmethod","formnovalidate","formtarget","download","rel","target","referrerpolicy","hreflang","newTitle","titleAttr","tooltipText","describedBy","buttonId","ButtonContent","h","Object","assign","class","ref","part","name","Dark","Light","Host","size","fullWidth","isSlotUsed","onClick","placement","tooltipPlacement","icLoadingIndicatorCss","LoadingIndicator","updateCircularProgressMeter","indeterminate","circularMeter","setProperty","String","progress","getLabel","labelIndex","setLabel","Promise","interval","setInterval","labelList","length","labelDuration","getLabelVariant","width","outerElement","offsetWidth","setCircleLineWidth","compactStepCircularLineWidth","host","classList","contains","toastDismissTimerCircularLineWidth","circularLineWidth","circularDiameter","setLinearDeterminateWidth","innerElement","Math","min","max","proportion","showSecond","add","calcOuterClass","cls","updateLabel","split","indicatorLabel","setCircleXY","r","x","y","nextRadius","setDashSteps","radius","dashArray","PI","watchPropHandler","watchProgressHandler","clearInterval","shadowRoot","Number","componentWillUpdate","componentDidUpdate","description","innerLabel","role","viewBox","cx","cy","icTooltipCss","Tooltip","delayedHideEvents","dialogOverflow","instantHideEvents","mouseOverTool","persistTooltip","onDialog","screenReaderOnlyStyles","position","left","top","height","overflow","showEvents","disableHover","getTooltipTranslate","dialogEl","child","children","getBoundingClientRect","tooltipX","tooltipY","bottom","right","includes","toolTip","show","icDialogEl","popperInstance","createPopper","modifiers","options","offset","element","arrow","scroll","resize","hide","removeAttribute","checkCloseTooltip","setTimeout","mouseEnterTooltip","mouseLeaveTooltip","handleKeyDown","key","manageEventListeners","action","method","forEach","ariaDescribedBy","destroy","getAttribute","onComponentRequiredPropUndefined","prop","propName","insertAdjacentElement"],"sources":["./src/components/ic-button/ic-button.css?tag=ic-button&encapsulation=shadow","./src/components/ic-button/ic-button.tsx","./src/components/ic-loading-indicator/ic-loading-indicator.css?tag=ic-loading-indicator&encapsulation=shadow","./src/components/ic-loading-indicator/ic-loading-indicator.tsx","./src/components/ic-tooltip/ic-tooltip.css?tag=ic-tooltip&encapsulation=shadow","./src/components/ic-tooltip/ic-tooltip.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n* @prop --min-width: Minimum width of the button.\n* @prop --height: The height of the button.\n*/\n\n:host {\n display: inline-block;\n\n --button-default: var(--ic-action-default);\n --button-default-hover: var(--ic-action-default-hover);\n --button-default-active: var(--ic-action-default-active);\n --button-default-background-hover: var(--ic-action-default-bg-hover);\n --button-default-background-active: var(--ic-action-default-bg-active);\n --icon-width: 100%;\n --icon-height: 100%;\n}\n\n.button {\n font-family: var(--ic-font-body-family);\n text-decoration: none;\n font-weight: 600;\n font-size: 0.875rem;\n transition: var(--ic-easing-transition-fast);\n border-radius: var(--ic-border-radius);\n min-width: var(--min-width, 6.25rem);\n display: inline-flex;\n gap: var(--ic-space-xxs);\n flex-direction: row;\n justify-content: center;\n align-items: center;\n background: none;\n border: none;\n box-sizing: border-box;\n white-space: nowrap;\n vertical-align: middle;\n}\n\n:host(.with-badge) .button {\n border-radius: 0.2188rem;\n}\n\n.button:hover {\n cursor: pointer;\n}\n\n.button:focus,\n:host .button:focus {\n box-shadow: var(--ic-border-focus);\n}\n\n:host(.light) .button:focus {\n box-shadow: var(--ic-border-focus);\n}\n\n.button:focus-visible {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(.dark) .button {\n --button-default: var(--ic-action-dark);\n --button-default-hover: var(--ic-action-dark);\n --button-default-active: var(--ic-action-dark);\n --button-default-background-hover: var(--ic-action-dark-bg-hover);\n --button-default-background-active: var(--ic-action-dark-bg-active);\n}\n\n:host(.light) .button {\n --button-default: var(--ic-action-light);\n --button-default-hover: var(--ic-action-light);\n --button-default-active: var(--ic-action-light);\n --button-default-background-hover: var(--ic-action-light-bg-hover);\n --button-default-background-active: var(--ic-action-light-bg-active);\n}\n\n:host(.button-variant-primary.light) .button {\n color: var(--ic-color-primary-text);\n\n --button-default-hover: var(--ic-action-light-hover);\n --button-default-active: var(--ic-action-light-active);\n}\n\n:host(.button-variant-primary.dark) .button {\n --button-default-hover: var(--ic-action-dark-hover);\n --button-default-active: var(--ic-action-dark-active);\n}\n\n:host(.disabled),\n:host(.disabled) .button,\n:host(.loading),\n:host(.loading) .button {\n pointer-events: none;\n}\n\n:host(.loading-with-icon) .button {\n min-width: var(--min-width, 8.25rem);\n}\n\n/* Variants */\n\n/* Primary */\n\n:host(.button-variant-primary) .button {\n color: var(--ic-architectural-white);\n background-color: var(--button-default);\n}\n\n:host(.button-variant-primary) .button:hover:not(:focus) {\n background-color: var(--button-default-hover);\n}\n\n:host(.button-variant-primary) .button:active:not(:focus),\n:host(.button-variant-primary.loading) .button {\n background-color: var(--button-default-active);\n}\n\n:host(.button-variant-primary.disabled) .button {\n background: var(--ic-architectural-200);\n color: var(--ic-architectural-300);\n}\n\n:host(.button-variant-primary.light.disabled) .button {\n background: var(--ic-architectural-600);\n color: var(--ic-architectural-500);\n}\n\n/* Secondary */\n\n:host(.button-variant-secondary) .button {\n border: var(--ic-space-1px) solid var(--button-default);\n color: var(--button-default);\n}\n\n:host(.button-variant-secondary) .button:hover:not(:focus) {\n background-color: var(--button-default-background-hover);\n border-color: var(--button-default-hover);\n color: var(--button-default-hover);\n}\n\n:host(.button-variant-secondary) .button:active:not(:focus) {\n border-color: var(--button-default-active);\n background-color: var(--button-default-background-active);\n color: var(--button-default-active);\n}\n\n:host(.button-variant-secondary.loading) .button {\n border-color: var(--button-default-active);\n background-color: var(--button-default-background-active);\n color: var(--button-default-active);\n}\n\n:host(.button-variant-secondary.disabled) .button,\n:host(.button-variant-secondary.disabled) .button:hover,\n:host(.button-variant-secondary.disabled) .button:active {\n border-color: var(--ic-architectural-300);\n color: var(--ic-architectural-300);\n background: none;\n}\n\n:host(.button-variant-secondary.light.disabled) .button,\n:host(.button-variant-secondary.light.disabled) .button:hover,\n:host(.button-variant-secondary.light.disabled) .button:active {\n border-color: var(--ic-architectural-500);\n color: var(--ic-architectural-500);\n background: none;\n}\n\n/* Tertiary */\n\n:host(.button-variant-tertiary) .button {\n color: var(--button-default);\n}\n\n:host(.button-variant-tertiary) .button:hover:not(:focus) {\n background-color: var(--button-default-background-hover);\n color: var(--button-default-hover);\n}\n\n:host(.button-variant-tertiary) .button:active:not(:focus),\n:host(.button-variant-tertiary.loading) .button {\n background-color: var(--button-default-background-active);\n color: var(--button-default-active);\n}\n\n:host(.button-variant-tertiary.disabled) .button,\n:host(.button-variant-tertiary.disabled) .button:hover,\n:host(.button-variant-tertiary.disabled) .button:active {\n border-color: var(--ic-architectural-300);\n color: var(--ic-architectural-300);\n background: none;\n}\n\n:host(.button-variant-tertiary.light.disabled) .button,\n:host(.button-variant-tertiary.light.disabled) .button:hover,\n:host(.button-variant-tertiary.light.disabled) .button:active {\n border-color: var(--ic-architectural-500);\n color: var(--ic-architectural-500);\n background: none;\n}\n\n/* Icon */\n\n:host(.button-variant-icon) .button {\n color: var(--button-default);\n min-width: 0;\n gap: var(--ic-space-xs);\n}\n\n:host(.button-variant-icon) .icon-container {\n width: var(--ic-space-lg) !important;\n height: var(--ic-space-lg) !important;\n}\n\n:host(.button-variant-icon) .button:hover:not(:focus) {\n background-color: var(--button-default-background-hover);\n color: var(--button-default-hover);\n}\n\n:host(.button-variant-icon) .button:active:not(:focus),\n:host(.button-variant-icon.loading) .button {\n background-color: var(--button-default-background-active);\n color: var(--button-default-active);\n}\n\n:host(.button-variant-icon.disabled) .button,\n:host(.button-variant-icon.disabled) .button:hover,\n:host(.button-variant-icon.disabled) .button:active {\n color: var(--ic-architectural-300);\n background: none;\n}\n\n/* Destructive */\n\n:host(.button-variant-destructive) .button {\n color: var(--ic-architectural-white);\n background-color: var(--ic-action-destructive);\n text-transform: uppercase;\n}\n\n:host(.button-variant-destructive) .button:hover:not(:focus) {\n background-color: var(--ic-action-destructive-hover);\n}\n\n:host(.button-variant-destructive) .button:active:not(:focus),\n:host(.button-variant-destructive.loading) .button {\n background-color: var(--ic-action-destructive-active);\n}\n\n:host(.button-variant-destructive.disabled) .button {\n background: var(--ic-architectural-200);\n color: var(--ic-architectural-300);\n}\n\n/* Sizing */\n\n:host(.button-size-default) .button {\n height: var(--height, 2.5rem);\n padding: var(--ic-space-xs) var(--ic-space-md);\n}\n\n:host(.button-size-small) .button {\n height: var(--height, var(--ic-space-xl));\n padding: var(--ic-space-xxs) var(--ic-space-md);\n}\n\n:host(.button-size-large) .button {\n height: var(--height, var(--ic-space-xxl));\n gap: var(--ic-space-xs);\n padding: var(--ic-space-sm) var(--ic-space-md);\n}\n\n:host(.button-size-default.button-variant-icon) .button {\n height: var(--height, var(--ic-space-xl));\n width: var(--ic-space-xl);\n padding: 0.375rem;\n}\n\n:host(.button-size-small.button-variant-icon) .button {\n height: var(--height, var(--ic-space-lg));\n width: var(--ic-space-lg);\n padding: var(--ic-space-xxs);\n}\n\n:host(.button-size-large.button-variant-icon) .button {\n height: var(--height, 2.5rem);\n width: 2.5rem;\n padding: var(--ic-space-xs);\n}\n\n/* Width */\n:host(.full-width),\n:host(.full-width) .button {\n width: 100%;\n}\n\n/* Loading */\n\ndiv.loading-container {\n position: relative;\n align-items: center;\n width: 100%;\n}\n\nic-loading-indicator {\n --outer-color: transparent;\n}\n\n@keyframes loading-animation {\n 0% {\n width: 0%;\n left: 0%;\n }\n\n 25% {\n width: 0%;\n left: 0%;\n opacity: 0;\n }\n\n 50% {\n width: 100%;\n left: 0%;\n opacity: 1;\n }\n\n 75% {\n width: 0%;\n left: 100%;\n }\n\n 100% {\n width: 0%;\n left: 100%;\n opacity: 0;\n }\n}\n\n/* Icons */\n\ndiv.icon-container {\n box-sizing: border-box;\n width: var(--ic-space-md);\n height: var(--ic-space-md);\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n:host(.button-size-large) div.icon-container {\n width: calc(var(--ic-space-md) + var(--ic-space-xxs));\n height: calc(var(--ic-space-md) + var(--ic-space-xxs));\n}\n\n::slotted(*) {\n width: var(--icon-width) !important;\n height: var(--icon-height) !important;\n fill: currentcolor !important;\n pointer-events: none;\n}\n\n:host(.button-variant-icon) .button .icon-container {\n margin: 0;\n pointer-events: none;\n}\n\n/** SEARCH **/\n\n:host(.search-submit-button) ::slotted(svg) {\n --icon-height: 1.25rem;\n --icon-width: 1.25rem;\n}\n\n:host(.search-submit-button-small) ::slotted(svg) {\n --icon-height: 1rem;\n --icon-width: 1rem;\n}\n\n:host(.clear-button) {\n margin: 0 var(--ic-space-xxs);\n}\n\n:host(.clear-button) .button:focus {\n box-shadow: none;\n}\n\n:host(.search-submit-button) .button:focus {\n box-shadow: none;\n}\n\n:host(.search-submit-button) .button:not(:active):focus {\n box-shadow: none;\n background-color: var(--ic-action-default-bg-hover);\n}\n\n:host(.search-submit-button) {\n display: flex;\n align-items: center;\n margin: 0 var(--ic-space-xxs);\n}\n\n:host(.menu-close-button) ::slotted(svg) {\n --icon-height: 0.875rem;\n --icon-width: 0.875rem;\n}\n\n:host(.popout-menu-button) .button {\n justify-content: left;\n border-radius: 0;\n white-space: pre-line;\n text-align: start;\n}\n\n:host(.popout-menu-button) div.icon-container {\n flex: none;\n}\n\n:host(.popout-menu-button) .button:focus {\n box-shadow: var(--ic-border-focus-inset);\n border-radius: var(--ic-border-radius-inset);\n}\n\n.ic-button-describedby {\n display: none;\n}\n\n:host .ic-tooltip {\n display: block;\n}\n\n/** High Contrast **/\n@media (forced-colors: active) {\n .button {\n border: 0.125rem solid transparent;\n }\n}\n\n/** Pagination **/\n\n:host(.flip) ::slotted(svg) {\n transform: scaleX(-1);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Listen,\n Method,\n Prop,\n State,\n h,\n} from \"@stencil/core\";\n\nimport {\n getThemeFromContext,\n inheritAttributes,\n isSlotUsed,\n removeDisabledFalse,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcButtonTypes,\n IcButtonVariants,\n IcButtonTooltipPlacement,\n} from \"./ic-button.types\";\nimport {\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n IcSizes,\n} from \"../../utils/types\";\n\nlet buttonIds = 0;\n\n/**\n * @slot icon - Deprecated. This slot should not be used anymore. Use left-icon or right-icon slot instead.\n * @slot left-icon - Content will be placed to the left of the button label.\n * @slot right-icon - Content will be placed to the right of the button label.\n */\n@Component({\n tag: \"ic-button\",\n styleUrl: \"ic-button.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Button {\n private buttonEl: HTMLElement;\n private buttonIdNum = buttonIds++;\n private hasTooltip: boolean = false;\n private id: string;\n private inheritedAttributes: { [k: string]: unknown } = {};\n private tooltipEl: HTMLIcTooltipElement;\n private describedByEl: HTMLElement = null;\n private describedById: string = null;\n private mutationObserver: MutationObserver = null;\n\n @Element() el: HTMLIcButtonElement;\n\n @State() describedByContent: string = null;\n\n /**\n * The appearance of the button, e.g. dark, light, or the default.\n */\n @Prop({ mutable: true }) appearance?: IcThemeForeground = \"default\";\n\n /**\n * If `true`, the button will be in disabled state.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * If `true`, the ic-tooltip which is shown for icon variant will be disabled. Title or aria-label must be set if this prop is not applied.\n */\n @Prop() disableTooltip?: boolean = false;\n\n /**\n * If `true`, the user can save the linked URL instead of navigating to it.\n */\n @Prop() download?: string | boolean = false;\n\n /**\n * The <form> element to associate the button with.\n */\n @Prop() form?: string;\n\n /**\n * The URL that processes the information submitted by the button. It overrides the action attribute of the button's form owner. Does nothing if there is no form owner.\n */\n @Prop() formaction?: string;\n\n /**\n * The way the submitted form data is encoded.\n */\n @Prop() formenctype?: string;\n\n /**\n * The HTTP method used to submit the form.\n */\n @Prop() formmethod?: string;\n\n /**\n * If `true`, the form will not be validated when submitted.\n */\n @Prop() formnovalidate?: boolean;\n\n /**\n * The place to display the response from submitting the form. It overrides the target attribute of the button's form owner.\n */\n @Prop() formtarget?: string;\n\n /**\n * If `true`, the button will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The URL that the link points to. This will render the button as an \"a\" tag.\n */\n @Prop() href?: string;\n\n /**\n * The human language of the linked URL.\n */\n @Prop() hreflang?: string;\n\n /**\n * If `true`, the button will be in loading state.\n */\n @Prop() loading?: boolean = false;\n\n /**\n * How much of the referrer to send when following the link.\n */\n @Prop() referrerpolicy?: ReferrerPolicy;\n\n /**\n * The relationship of the linked URL as space-separated link types.\n */\n @Prop() rel?: string;\n\n /**\n * The size of the button to be displayed.\n */\n @Prop() size?: IcSizes = \"default\";\n\n /**\n * The place to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\n\n /**\n * The position of the tooltip in relation to the button.\n */\n @Prop() tooltipPlacement?: IcButtonTooltipPlacement = \"bottom\";\n\n /**\n * The type of the button.\n */\n @Prop() type?: IcButtonTypes = \"button\";\n\n /**\n * The variant of the button to be displayed.\n */\n @Prop() variant?: IcButtonVariants = \"primary\";\n\n /**\n * Emitted when button has blur\n */\n @Event() icBlur!: EventEmitter<void>;\n\n /**\n * Emitted when button has focus\n */\n @Event() icFocus!: EventEmitter<void>;\n\n disconnectedCallback(): void {\n if (this.mutationObserver !== null && this.mutationObserver !== undefined) {\n this.mutationObserver.disconnect();\n }\n }\n\n componentWillLoad(): void {\n this.inheritedAttributes = inheritAttributes(this.el, [\n ...IC_INHERITED_ARIA,\n \"aria-expanded\",\n \"title\",\n ]);\n\n removeDisabledFalse(this.disabled, this.el);\n\n this.el.setAttribute(\"exportparts\", \"button\");\n\n const id = this.el.id;\n this.id = id !== undefined ? id : null;\n this.hasTooltip = this.variant === \"icon\" && this.disableTooltip === false;\n\n if (!this.hasTooltip) {\n const describedById = this.inheritedAttributes[\n \"aria-describedby\"\n ] as string;\n if (describedById !== undefined) {\n this.describedById = describedById;\n const el = this.el.parentElement.querySelector(\n `#${describedById}`\n ) as HTMLElement;\n this.describedByContent = el.innerText;\n this.describedByEl = el;\n }\n }\n }\n\n componentDidLoad(): void {\n this.updateTheme();\n\n if (this.describedById) {\n this.mutationObserver = new MutationObserver(this.mutationCallback);\n this.mutationObserver.observe(this.describedByEl, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n }\n }\n\n @Listen(\"click\", { capture: true })\n handleHostClick(event: Event): void {\n if (this.disabled || this.loading) {\n event.stopImmediatePropagation();\n }\n }\n\n @Listen(\"themeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.updateTheme(theme.mode);\n }\n\n /**\n * Sets focus on the native `button`.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.buttonEl) {\n this.buttonEl.focus();\n }\n }\n\n /**\n * @internal Updates tooltip/aria-label text - needed as can't watch an ARIA attribute change.\n */\n @Method()\n async updateAriaLabel(newValue: string): Promise<void> {\n if (this.hasTooltip) {\n this.tooltipEl.label = newValue;\n this.buttonEl.setAttribute(\"aria-label\", null);\n } else {\n this.buttonEl.setAttribute(\"aria-label\", newValue);\n }\n }\n\n private hasIconSlot(): boolean {\n const iconEl = this.el.querySelector(`[slot=\"icon\"]`);\n return iconEl !== null;\n }\n\n private hasLeftIconSlot(): boolean {\n const iconEl = this.el.querySelector(`[slot=\"left-icon\"]`);\n return iconEl !== null;\n }\n\n private hasRightIconSlot(): boolean {\n const iconEl = this.el.querySelector(`[slot=\"right-icon\"]`);\n return iconEl !== null;\n }\n\n private handleHiddenFormButtonClick(form: HTMLFormElement): void {\n const hiddenFormButton = document.createElement(\"button\");\n\n hiddenFormButton.setAttribute(\"type\", this.el.type);\n hiddenFormButton.style.display = \"none\";\n\n form.appendChild(hiddenFormButton);\n\n hiddenFormButton.click();\n hiddenFormButton.remove();\n }\n\n private handleClick = (): void => {\n if (\n (this.el.type === \"submit\" || this.el.type === \"reset\") &&\n !!this.el.closest(\"FORM\")\n ) {\n this.handleHiddenFormButtonClick(this.el.closest(\"FORM\"));\n }\n };\n\n private onFocus = () => {\n this.icFocus.emit();\n };\n\n private onBlur = () => {\n this.icBlur.emit();\n };\n\n private updateTheme(newTheme: IcThemeForeground = null): void {\n const foregroundColor = getThemeFromContext(this.el, newTheme || null);\n\n if (foregroundColor !== IcThemeForegroundEnum.Default) {\n this.appearance = foregroundColor;\n }\n }\n\n // triggered when text content of sibling element in light DOM changes\n private mutationCallback = (): void => {\n this.describedByContent = this.describedByEl.innerText;\n };\n\n render() {\n const TagType = (this.href && \"a\") || \"button\";\n const {\n title,\n \"aria-label\": ariaLabel,\n ...restInheritedAttributes\n } = this.inheritedAttributes;\n const buttonAttrs =\n TagType === \"button\"\n ? {\n type: this.type,\n disabled: this.disabled,\n form: this.form,\n formaction: this.formaction,\n formenctype: this.formenctype,\n formmethod: this.formmethod,\n formnovalidate: this.formnovalidate,\n formtarget: this.formtarget,\n }\n : {\n download: this.download !== false ? this.download : null,\n href: this.href,\n rel: this.rel,\n target: this.target,\n referrerpolicy: this.referrerpolicy,\n hreflang: this.hreflang,\n };\n const newTitle = title && (title as string);\n const titleAttr = this.hasTooltip ? {} : { title: newTitle };\n let tooltipText = \"\";\n if (this.hasTooltip) {\n if (newTitle !== undefined) {\n tooltipText = newTitle;\n } else if (ariaLabel !== null) {\n tooltipText = ariaLabel as string;\n }\n }\n\n let describedBy: string = null;\n let buttonId: string = null;\n if (this.hasTooltip) {\n buttonId =\n this.id !== null\n ? `ic-button-with-tooltip-${this.id}`\n : `ic-button-with-tooltip-${this.buttonIdNum}`;\n describedBy = `ic-tooltip-${buttonId}`;\n } else {\n describedBy = this.describedById;\n }\n\n const ButtonContent = () => {\n return (\n <TagType\n class=\"button\"\n aria-disabled={this.loading || this.disabled ? \"true\" : null}\n aria-label={this.loading ? \"Loading\" : ariaLabel}\n {...buttonAttrs}\n {...restInheritedAttributes}\n {...titleAttr}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n ref={(el) => (this.buttonEl = el)}\n id={buttonId}\n aria-describedby={this.hasTooltip && ariaLabel ? null : describedBy}\n part=\"button\"\n >\n {this.hasIconSlot() && !this.loading && (\n <div class=\"icon-container\">\n <slot name=\"icon\" />\n </div>\n )}\n {this.hasLeftIconSlot() && !this.loading && (\n <div class=\"icon-container\">\n <slot name=\"left-icon\" />\n </div>\n )}\n {this.loading ? (\n <div class=\"loading-container\">\n <ic-loading-indicator\n type=\"linear\"\n appearance={\n this.variant === \"primary\" ||\n this.variant === \"destructive\" ||\n this.appearance === IcThemeForegroundEnum.Dark ||\n this.appearance === IcThemeForegroundEnum.Light\n ? \"light\"\n : \"dark\"\n }\n ></ic-loading-indicator>\n </div>\n ) : (\n <slot />\n )}\n {this.hasRightIconSlot() && !this.loading && (\n <div class=\"icon-container\">\n <slot name=\"right-icon\" />\n </div>\n )}\n </TagType>\n );\n };\n\n return (\n <Host\n class={{\n [\"disabled\"]: this.disabled && !this.loading,\n [`button-variant-${this.variant}`]: true,\n [`button-size-${this.size}`]: true,\n [\"loading\"]: this.loading,\n [\"loading-with-icon\"]:\n this.loading &&\n (this.hasIconSlot() ||\n this.hasLeftIconSlot() ||\n this.hasRightIconSlot()),\n [\"dark\"]: this.appearance === IcThemeForegroundEnum.Dark,\n [\"light\"]: this.appearance === IcThemeForegroundEnum.Light,\n [\"full-width\"]: this.fullWidth,\n [\"with-badge\"]: isSlotUsed(this.el, \"badge\"),\n }}\n onClick={this.handleClick}\n >\n {this.hasTooltip && (\n <ic-tooltip\n class={{ [\"tooltip-disabled\"]: this.disableTooltip }}\n ref={(el) => (this.tooltipEl = el)}\n label={tooltipText}\n target={buttonId}\n placement={this.tooltipPlacement}\n >\n <ButtonContent />\n </ic-tooltip>\n )}\n\n {!this.hasTooltip && <ButtonContent />}\n {this.describedByContent && (\n <span id={describedBy} class=\"ic-button-describedby\">\n {this.describedByContent}\n </span>\n )}\n </Host>\n );\n }\n}\n","@import \"../../global/normalize.css\";\n\n:host {\n /**\n * @prop --circular-diameter: Diameter of the circular-indicator\n */\n\n display: block;\n\n --linear-border-radius: 0.25rem;\n --inner-color: var(--ic-action-default);\n --outer-color: var(--ic-architectural-100);\n --label-color: var(--ic-color-primary-text);\n --margin: none;\n --linear-line-height: var(--ic-space-xs);\n}\n\n:host(.light) {\n --inner-color: var(--ic-architectural-white);\n --outer-color: var(--ic-architectural-800);\n --label-color: var(--ic-architectural-white);\n}\n\n.ic-loading-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n:host([size=\"small\"]) {\n --circular-diameter: 2.5rem;\n --linear-line-height: var(--ic-space-xxs);\n}\n\n:host([size=\"default\"]) {\n --circular-diameter: 5rem;\n}\n\n:host([size=\"large\"]) {\n --circular-diameter: 7.5rem;\n}\n\n:host([size=\"icon\"]) {\n display: inline-block;\n\n --margin: var(--ic-space-xxxs);\n --circular-diameter: 1.25rem;\n}\n\n:host(.label) {\n --margin: 0 0 var(--ic-space-xs) 0;\n}\n\n.ic-loading-label {\n white-space: nowrap;\n color: var(--label-color);\n margin-left: var(--label-margin-left);\n}\n\n.ic-loading-circular-outer {\n height: var(--circular-diameter);\n width: var(--circular-diameter);\n}\n\n.ic-loading-circular-outer.indeterminate {\n animation: circular-animation 1s linear;\n animation-iteration-count: infinite;\n}\n\n@keyframes circular-animation {\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.ic-loading-circular-outer,\n.ic-loading-linear-outer {\n margin: var(--margin);\n}\n\n.ic-loading-linear-outer {\n background-color: var(--outer-color);\n height: var(--linear-line-height);\n width: 100%;\n border-radius: var(--linear-border-radius);\n overflow: hidden;\n}\n\n.ic-loading-linear-inner {\n position: relative;\n height: 100%;\n background-color: var(--inner-color);\n border-radius: var(--linear-border-radius);\n}\n\n.indeterminate > .ic-loading-linear-inner {\n animation: linear-animation 2s infinite;\n}\n\n.determinate > .ic-loading-linear-inner {\n transition: width 0.5s;\n width: var(--linear-width);\n}\n\n:host(.full-width) {\n --linear-border-radius: none;\n}\n\n@keyframes linear-animation {\n 0% {\n width: 0%;\n left: -1%;\n }\n\n 25% {\n width: 0%;\n left: -1%;\n }\n\n 50% {\n width: 101%;\n left: -1%;\n }\n\n 75% {\n width: 0%;\n left: 101%;\n }\n\n 100% {\n width: 0%;\n left: 101%;\n }\n}\n\n.ic-loading-circular-svg {\n position: relative;\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n}\n\n.ic-loading-circular-svg circle {\n width: 100%;\n height: 100%;\n fill: none;\n stroke: var(--outer-color);\n stroke-width: var(--circular-line-width);\n stroke-linecap: round;\n}\n\n/* --stroke-dash-array calculated via dashArray method */\n.ic-loading-circular-svg circle:nth-child(2) {\n --circular-indeterminate: calc(\n (0.25 * var(--stroke-dasharray)) - var(--stroke-dasharray)\n );\n\n stroke-dasharray: var(--stroke-dasharray), var(--stroke-dasharray);\n stroke-dashoffset: var(--stroke-dashoffset, var(--circular-indeterminate));\n stroke: var(--compact-step-inner-color, var(--inner-color));\n}\n\n:host(.inner-label) .ic-loading-circular-inner {\n display: grid;\n}\n\n:host(.inner-label) .ic-loading-circular-svg,\n.inner-text {\n grid-column: 1;\n grid-row: 1;\n}\n\n:host(.not-required.compact-step-progress-indicator)\n .ic-loading-circular-svg\n circle:nth-child(2) {\n stroke: var(--ic-architectural-300);\n}\n\n.inner-text {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--ic-space-lg);\n height: inherit;\n overflow: hidden;\n margin: auto;\n color: var(--ic-status-info);\n}\n\n:host(.not-required.compact-step-progress-indicator) .inner-text {\n color: var(--ic-color-tertiary-text);\n}\n\n/** High Contrast **/\n@media (forced-colors: active) {\n .indeterminate > .ic-loading-circular-inner {\n forced-color-adjust: none;\n }\n\n .ic-loading-linear-outer {\n border: var(--ic-hc-border);\n }\n\n .ic-loading-linear-inner {\n background-color: canvastext;\n }\n\n .ic-loading-circular-svg circle {\n stroke: Background;\n }\n\n .ic-loading-circular-svg circle:nth-child(2) {\n stroke: canvastext;\n }\n\n :host(.not-required.compact-step-progress-indicator)\n .ic-loading-circular-svg\n circle:nth-child(2) {\n stroke: GrayText;\n }\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from \"@stencil/core\";\nimport {\n IcLoadingCircleXYR,\n IcLoadingSizes,\n IcLoadingTypes,\n} from \"./ic-loading-indicator.types\";\nimport {\n IcThemeForegroundEnum,\n IcThemeForegroundNoDefault,\n} from \"../../utils/types\";\n\n@Component({\n tag: \"ic-loading-indicator\",\n styleUrl: \"ic-loading-indicator.css\",\n shadow: true,\n})\nexport class LoadingIndicator {\n private circularMeter: SVGCircleElement;\n private innerElement?: HTMLDivElement;\n private interval: ReturnType<typeof setInterval>;\n private labelList: string[];\n private outerElement?: HTMLDivElement;\n\n @Element() host: HTMLIcLoadingIndicatorElement;\n\n @State() circularDiameter: number;\n @State() circularLineWidth: number;\n @State() indeterminate: boolean;\n @State() indicatorLabel: string;\n @State() showSecond: boolean = false;\n\n /**\n * The appearance of the loading indicator, e.g. dark or light.\n */\n @Prop() appearance?: IcThemeForegroundNoDefault = \"dark\";\n\n /**\n * The description that will be set as the aria-label of the loading indicator when not using a visible label.\n */\n @Prop() description?: string = \"Loading\";\n\n /**\n * If `true`, when linear, the full-width variant (i.e. without a border radius) will be displayed.\n */\n @Prop({ reflect: true }) fullWidth?: boolean = false;\n\n /**\n * @internal The step number of a compact step, managed by ic-step.\n */\n @Prop() innerLabel?: number;\n\n /**\n * The time in milliseconds before the label changes.\n */\n @Prop() labelDuration?: number = 8000;\n\n /**\n * The maximum value that the progress value can take.\n * Used to calculate the proportional width of the progress bar.\n */\n @Prop() max?: number = 100;\n\n /**\n * The minimum value that the progress value can take.\n * Used to calculate the proportional width of the progress bar.\n */\n @Prop() min?: number = 0;\n\n /**\n * The size of the loading indicator.\n */\n @Prop({ reflect: true }) size?: IcLoadingSizes = \"default\";\n\n /**\n * The type of indicator, either linear or circular.\n */\n @Prop({ reflect: true }) type?: IcLoadingTypes = \"circular\";\n\n /**\n * The label to be displayed beneath the loading indicator.\n * Display a changing label by separating multiple messages with forward slashes.\n */\n @Prop() label?: string;\n\n @Watch(\"label\")\n watchPropHandler(): void {\n this.updateLabel();\n }\n\n /**\n * The current amount of progress made.\n * If not provided, component acts as an indeterminate loading indicator.\n */\n @Prop() progress?: number;\n\n @Watch(\"progress\")\n watchProgressHandler(): void {\n if (this.type === \"circular\") {\n this.updateCircularProgressMeter();\n }\n }\n\n disconnectedCallback(): void {\n clearInterval(this.interval);\n }\n\n componentWillLoad(): void {\n this.indeterminate = this.progress === undefined;\n this.updateLabel();\n }\n\n componentDidLoad(): void {\n if (this.type === \"circular\") {\n this.setCircleLineWidth();\n this.circularMeter = this.host.shadowRoot.querySelector(\n \".ic-loading-circular-svg circle:nth-child(2)\"\n );\n this.updateCircularProgressMeter();\n }\n\n if (Number(this.progress) >= 0 && this.type === \"linear\") {\n this.setLinearDeterminateWidth();\n }\n }\n\n componentWillUpdate(): void {\n this.indeterminate = this.progress === undefined;\n }\n\n componentDidUpdate(): void {\n if (Number(this.progress) >= 0 && this.type === \"linear\") {\n this.setLinearDeterminateWidth();\n }\n }\n\n private updateCircularProgressMeter = () => {\n if (!this.indeterminate) {\n this.circularMeter.style.setProperty(\n \"--progress-value\",\n String(this.progress)\n );\n }\n };\n\n private getLabel = (\n labelIndex: number,\n setLabel: (label: string) => void\n ) => {\n return new Promise(() => {\n this.interval = setInterval(() => {\n if (labelIndex < this.labelList.length - 1) {\n labelIndex++;\n } else {\n labelIndex = 0;\n }\n setLabel(this.labelList[labelIndex]);\n }, this.labelDuration);\n });\n };\n\n private getLabelVariant = () => {\n let variant: \"label\" | \"h4\" | \"h2\" = \"h4\";\n const width = this.outerElement?.offsetWidth;\n if (this.size === \"small\" || (this.type === \"circular\" && width < 60)) {\n variant = \"label\";\n } else if (\n this.size === \"large\" ||\n (this.type === \"circular\" && width >= 120)\n ) {\n variant = \"h2\";\n }\n return variant;\n };\n\n // Sets the circular indicator line width - accounting for the circle size being altered using the CSS custom property\n private setCircleLineWidth = () => {\n const { offsetWidth: width } = this.outerElement;\n\n const compactStepCircularLineWidth = this.host.classList.contains(\n \"compact-step-progress-indicator\"\n )\n ? 40\n : 0;\n const toastDismissTimerCircularLineWidth = this.host.classList.contains(\n \"toast-dismiss-timer\"\n )\n ? 20\n : 0;\n\n if (\n width ||\n compactStepCircularLineWidth ||\n toastDismissTimerCircularLineWidth\n ) {\n this.circularLineWidth =\n (compactStepCircularLineWidth ||\n toastDismissTimerCircularLineWidth ||\n width) * 0.1;\n this.circularDiameter =\n compactStepCircularLineWidth ||\n toastDismissTimerCircularLineWidth ||\n width;\n this.outerElement.style.setProperty(\n \"--circular-line-width\",\n `${this.circularLineWidth}px`\n );\n }\n };\n\n private setLinearDeterminateWidth = () => {\n if (!this.innerElement) return;\n // Ensure progress cannot be out of bounds\n\n const progress = Math.min(this.max, Math.max(this.min, this.progress));\n const proportion = (progress - this.min) / (this.max - this.min);\n this.showSecond = proportion > 0.5;\n if (this.showSecond) {\n this.innerElement.classList.remove(\"clip\");\n } else {\n this.innerElement.classList.add(\"clip\");\n }\n this.innerElement.style.setProperty(\n \"--linear-width\",\n `${proportion * 100}%`\n );\n };\n\n private calcOuterClass = (): string => {\n let cls = `ic-loading-${this.type}-outer`;\n cls += this.indeterminate ? \" indeterminate\" : \" determinate\";\n return cls;\n };\n\n private updateLabel = (): void => {\n if (this.label !== undefined) {\n this.labelList = this.label.split(\"/\");\n const labelIndex = 0;\n this.indicatorLabel = this.labelList[labelIndex];\n if (this.labelList.length > 1) {\n this.getLabel(labelIndex, (label) => {\n this.indicatorLabel = label;\n });\n }\n }\n };\n\n private setCircleXY = (): IcLoadingCircleXYR => {\n if (this.circularDiameter > 0) {\n const r = this.circularDiameter / 2;\n const x = r;\n const y = r;\n const nextRadius = r - this.circularLineWidth / 2;\n this.setDashSteps(nextRadius);\n\n return { x, y, r: nextRadius };\n }\n return { x: 0, y: 0, r: 0 };\n };\n\n private setDashSteps = (radius: number) => {\n const dashArray = 2 * Math.PI * radius;\n const progress = Math.min(Math.max(this.progress, this.min), this.max);\n const proportion = -1 - (progress - this.min) / (this.max - this.min);\n\n this.circularMeter.style.setProperty(\n \"--stroke-dasharray\",\n `${dashArray}px`\n );\n\n if (!this.indeterminate) {\n this.circularMeter.style.setProperty(\n \"--circular-steps-max\",\n String(this.max)\n );\n this.circularMeter.style.setProperty(\n \"--stroke-dashoffset\",\n `${proportion * dashArray}px`\n );\n }\n };\n\n render() {\n const { appearance, label, description, size, fullWidth, innerLabel } =\n this;\n const { x, y, r } = this.setCircleXY();\n\n return (\n <Host\n class={{\n [\"light\"]: appearance === IcThemeForegroundEnum.Light,\n [\"label\"]: !!label,\n [\"full-width\"]: fullWidth,\n [\"inner-label\"]: !!innerLabel,\n }}\n >\n <div class=\"ic-loading-container\">\n <div\n ref={(el) => (this.outerElement = el as HTMLDivElement)}\n class={this.calcOuterClass()}\n role=\"progressbar\"\n aria-labelledby={\n this.label && this.size !== \"icon\" && \"ic-loading-label\"\n }\n aria-label={description}\n aria-valuenow={this.progress}\n aria-valuemin={this.min}\n aria-valuemax={this.max}\n >\n <div\n ref={(el) => (this.innerElement = el as HTMLDivElement)}\n class={`ic-loading-${this.type}-inner`}\n >\n {this.innerLabel &&\n this.innerLabel !== undefined &&\n this.size === \"small\" && (\n <ic-typography variant=\"subtitle-small\" class=\"inner-text\">\n {this.innerLabel}\n </ic-typography>\n )}\n {this.type === \"circular\" && (\n <svg\n class=\"ic-loading-circular-svg\"\n viewBox={`0 0 ${this.circularDiameter || 0} ${\n this.circularDiameter || 0\n }`}\n >\n <circle cx={`${x}`} cy={`${y}`} r={`${r}`}></circle>\n <circle cx={`${x}`} cy={`${y}`} r={`${r}`}></circle>\n </svg>\n )}\n </div>\n </div>\n {label && size !== \"icon\" && (\n <ic-typography\n id=\"ic-loading-label\"\n class=\"ic-loading-label\"\n role=\"status\"\n variant={this.getLabelVariant()}\n >\n <p>{this.indicatorLabel}</p>\n </ic-typography>\n )}\n </div>\n </Host>\n );\n }\n}\n","@import \"../../global/normalize.css\";\n\n/**\n * @prop --ic-z-index-tooltip: z-index of tooltip\n */\n\n:host(.ic-tooltip) .ic-tooltip-container {\n background-color: var(--ic-architectural-800);\n color: #ffff;\n text-align: center;\n padding: var(--ic-space-xxxs) 0.625rem;\n border-radius: var(--ic-border-radius);\n border: var(--ic-space-1px) solid var(--ic-architectural-40);\n position: absolute;\n max-width: 20rem;\n display: none;\n z-index: var(--ic-z-index-tooltip);\n box-shadow: var(--ic-elevation-overlay);\n}\n\n:host(.tooltip-navigation-item:not(.tooltip-navigation-item-side-nav-collapsed))\n .ic-tooltip-container,\n:host(.tooltip-disabled) .ic-tooltip-container {\n display: none !important;\n}\n\n:host(.tooltip-long-label-navigation-item-side-nav-expanded)\n .ic-tooltip-container[data-show] {\n display: block !important;\n}\n\n:host(.ic-tooltip) .ic-tooltip-arrow,\n:host(.ic-tooltip) .ic-tooltip-arrow::before {\n position: absolute;\n background: inherit;\n}\n\n:host(.ic-tooltip) .ic-tooltip-arrow {\n visibility: hidden;\n width: var(--ic-space-md);\n height: var(--ic-space-md);\n}\n\n:host(.ic-tooltip) .ic-tooltip-arrow::before {\n visibility: visible;\n content: \"\";\n border: var(--ic-space-1px) solid var(--ic-architectural-40);\n width: 100%;\n height: 100%;\n}\n\n:host(.ic-tooltip) .ic-tooltip-container[data-show] {\n display: block;\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"top\"]\n > .ic-tooltip-arrow {\n height: var(--ic-space-xxxs);\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"top\"]\n > .ic-tooltip-arrow::before {\n border-radius: 0 0 var(--ic-border-radius) var(--ic-border-radius);\n left: 0;\n top: var(--ic-space-xxxs);\n border-top: 0;\n transform: translateX(var(--tooltip-arrow-translate));\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"bottom\"]\n > .ic-tooltip-arrow {\n top: calc(-1 * var(--ic-space-xxs));\n height: var(--ic-space-xxxs);\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"bottom\"]\n > .ic-tooltip-arrow::before {\n border-radius: var(--ic-border-radius) var(--ic-border-radius) 0 0;\n left: 0;\n top: var(--ic-space-1px);\n border-bottom: 0;\n transform: translateX(var(--tooltip-arrow-translate));\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"left\"]\n > .ic-tooltip-arrow {\n width: var(--ic-space-xxxs);\n right: calc(-1 * var(--ic-space-1px));\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"left\"]\n > .ic-tooltip-arrow::before {\n border-radius: 0 var(--ic-border-radius) var(--ic-border-radius) 0;\n border-left: 0;\n top: calc(-1 * var(--ic-space-1px));\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"right\"]\n > .ic-tooltip-arrow {\n width: var(--ic-space-xxxs);\n left: calc(-1 * var(--ic-space-xxs));\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"right\"]\n > .ic-tooltip-arrow::before {\n border-radius: var(--ic-border-radius) 0 0 var(--ic-border-radius);\n border-right: 0;\n top: calc(-1 * var(--ic-space-1px));\n}\n\n:host(.on-dialog) .ic-tooltip-container {\n transform: translate(\n var(--tooltip-translate-x),\n var(--tooltip-translate-y)\n ) !important;\n}\n\n@media (forced-colors: active) {\n :host(.ic-tooltip) .ic-tooltip-container,\n :host(.ic-tooltip) .ic-tooltip-arrow::before {\n border: var(--ic-hc-border);\n }\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n h,\n Watch,\n Method,\n} from \"@stencil/core\";\nimport { Instance, createPopper } from \"@popperjs/core\";\nimport { IcTooltipPlacements } from \"./ic-tooltip.types\";\nimport { onComponentRequiredPropUndefined } from \"../../utils/helpers\";\n\n@Component({\n tag: \"ic-tooltip\",\n styleUrl: \"ic-tooltip.css\",\n shadow: true,\n})\nexport class Tooltip {\n private arrow: HTMLDivElement;\n private ariaDescribedBy: HTMLElement;\n private delayedHideEvents = [\"mouseleave\"];\n private dialogOverflow = false;\n private icDialogEl: HTMLIcDialogElement;\n private instantHideEvents = [\"focusout\"];\n private mouseOverTool: boolean = false;\n private persistTooltip = false;\n private popperInstance: Instance;\n private onDialog: boolean = false;\n private screenReaderOnlyStyles = {\n position: \"absolute\",\n left: \"-10000px\",\n top: \"auto\",\n width: \"1px\",\n height: \"1px\",\n overflow: \"hidden\",\n };\n private showEvents = this.disableHover\n ? [\"click\"]\n : [\"mouseenter\", \"focusin\"];\n private toolTip: HTMLDivElement;\n\n @Element() el: HTMLIcTooltipElement;\n\n /**\n * If `true`, the tooltip will not be displayed on hover, it will require a click.\n */\n @Prop() disableHover?: boolean = false;\n\n /**\n * The position of the tool-tip in relation to the parent element.\n */\n @Prop({ mutable: true }) placement?: IcTooltipPlacements = \"bottom\";\n\n /**\n * The ID of the element the tooltip is describing - for when aria-labelledby or aria-describedby is used.\n */\n @Prop({ reflect: true }) target?: string;\n\n /**\n * The text to display on the tooltip.\n */\n @Prop() label!: string;\n\n @Watch(\"label\")\n updateLabel(newValue: string): void {\n if (this.ariaDescribedBy !== null) {\n this.ariaDescribedBy.innerText = newValue;\n }\n }\n\n disconnectedCallback(): void {\n this.manageEventListeners(\"remove\");\n if (this.popperInstance !== undefined) {\n this.popperInstance.destroy();\n }\n }\n\n componentDidLoad(): void {\n this.manageEventListeners(\"add\");\n\n this.icDialogEl = this.el.closest(\"ic-dialog\");\n this.dialogOverflow =\n this.icDialogEl?.getAttribute(\"data-overflow\") === \"true\";\n\n this.onDialog = this.icDialogEl !== null;\n\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Tooltip\"\n );\n\n if (this.target !== undefined) {\n this.ariaDescribedBy = document.createElement(\"span\");\n this.ariaDescribedBy.id = `ic-tooltip-${this.target}`;\n this.ariaDescribedBy.innerText = this.label;\n this.ariaDescribedBy.classList.add(\"ic-tooltip-label\");\n Object.assign(this.ariaDescribedBy.style, this.screenReaderOnlyStyles);\n\n this.el.insertAdjacentElement(\"beforebegin\", this.ariaDescribedBy);\n }\n }\n\n /**\n * Method to programmatically show/hide the tooltip without needing to interact with an anchor element\n * @param show Whether to show or hide the tooltip\n * @param persistTooltip Whether the tooltip should stay on the screen when actions are performed that would previously dismiss the tooltip, such as on hover\n */\n @Method()\n async displayTooltip(show: boolean, persistTooltip?: boolean): Promise<void> {\n this.persistTooltip = persistTooltip;\n show ? this.show() : this.hide();\n }\n\n private getTooltipTranslate = (dialogEl: DOMRect) => {\n const child = this.el.children[0].getBoundingClientRect();\n let tooltipX;\n let tooltipY;\n switch (this.placement) {\n case \"bottom\":\n tooltipX = child.left - dialogEl.left - 0.5 * child.width;\n tooltipY = child.bottom - dialogEl.top;\n break;\n case \"bottom-start\":\n tooltipX = child.left - dialogEl.left;\n tooltipY = child.bottom - dialogEl.top;\n break;\n case \"bottom-end\":\n tooltipX = child.right - dialogEl.right;\n tooltipY = child.bottom - dialogEl.top;\n break;\n case \"top\":\n tooltipX = child.left - dialogEl.left - 0.5 * child.width;\n tooltipY = child.top - dialogEl.bottom;\n break;\n case \"top-start\":\n tooltipX = child.left - dialogEl.left;\n tooltipY = child.top - dialogEl.bottom;\n break;\n case \"top-end\":\n tooltipX = child.right - dialogEl.right;\n tooltipY = child.top - dialogEl.bottom;\n break;\n case \"left\":\n case \"left-start\":\n tooltipX = child.right - dialogEl.right - child.width;\n tooltipY = child.bottom - dialogEl.top - child.height;\n break;\n case \"left-end\":\n tooltipX = child.right - dialogEl.right - child.width;\n tooltipY = child.top - dialogEl.bottom + child.height;\n break;\n case \"right\":\n case \"right-start\":\n tooltipX = child.left - dialogEl.left + child.width;\n tooltipY = child.bottom - dialogEl.top - child.height;\n break;\n case \"right-end\":\n tooltipX = child.left - dialogEl.left + child.width;\n tooltipY = child.top - dialogEl.bottom + child.height;\n break;\n }\n if (this.dialogOverflow && tooltipX < 0) {\n if (this.placement.includes(\"top\") || this.placement.includes(\"bottom\")) {\n this.toolTip.style.setProperty(\n \"--tooltip-arrow-translate\",\n `${tooltipX}px`\n );\n tooltipX = child.left - dialogEl.left;\n }\n if (this.placement.includes(\"left\")) {\n this.placement = \"right\";\n tooltipX = child.left - dialogEl.left + child.width;\n }\n }\n\n this.toolTip.style.setProperty(\"--tooltip-translate-x\", `${tooltipX}px`);\n this.toolTip.style.setProperty(\"--tooltip-translate-y\", `${tooltipY}px`);\n };\n\n private show = () => {\n this.toolTip.setAttribute(\"data-show\", \"\");\n\n if (this.onDialog) {\n this.el.classList.add(\"on-dialog\");\n const dialogEl = this.icDialogEl.shadowRoot\n .querySelector(\"dialog\")\n .getBoundingClientRect();\n\n this.getTooltipTranslate(dialogEl);\n }\n\n this.popperInstance = createPopper(this.el, this.toolTip, {\n placement: this.placement,\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 10],\n },\n },\n {\n name: \"arrow\",\n options: {\n element: this.arrow,\n },\n },\n {\n name: \"eventListeners\",\n options: { scroll: false, resize: false },\n },\n ],\n });\n };\n\n private hide = () => {\n this.toolTip.removeAttribute(\"data-show\");\n this.persistTooltip = false;\n };\n\n private checkCloseTooltip = () => {\n setTimeout(() => {\n if (!this.mouseOverTool && !this.persistTooltip) {\n this.hide();\n }\n }, 100);\n };\n\n private mouseEnterTooltip = () => {\n this.mouseOverTool = true;\n };\n\n private mouseLeaveTooltip = () => {\n this.mouseOverTool = false;\n this.checkCloseTooltip();\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && !this.persistTooltip) {\n this.hide();\n }\n };\n\n private manageEventListeners = (action: \"add\" | \"remove\") => {\n const method =\n action === \"add\" ? \"addEventListener\" : \"removeEventListener\";\n\n this.showEvents.forEach((event) => {\n this.el[method](event, this.show);\n if (this.toolTip !== undefined) {\n this.toolTip[method](event, this.mouseEnterTooltip);\n }\n });\n\n if (!this.persistTooltip) {\n this.instantHideEvents.forEach((event) => {\n this.el[method](event, this.hide);\n });\n }\n\n this.delayedHideEvents.forEach((event) => {\n this.el[method](event, this.checkCloseTooltip);\n if (this.toolTip !== undefined) {\n this.toolTip[method](event, this.mouseLeaveTooltip);\n }\n });\n\n document[method](\"keydown\", this.handleKeyDown);\n };\n\n render() {\n const { label } = this;\n return (\n <Host class={{ \"ic-tooltip\": true }}>\n <div\n ref={(el) => (this.toolTip = el as HTMLDivElement)}\n role=\"tooltip\"\n class=\"ic-tooltip-container\"\n >\n <ic-typography variant=\"caption\">{label}</ic-typography>\n <div\n ref={(el) => (this.arrow = el as HTMLDivElement)}\n class=\"ic-tooltip-arrow\"\n data-popper-arrow\n ></div>\n </div>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icFooterCss","Footer","this","resizeObserver","resizeObserverCallback","currSize","deviceSize","footerResized","emit","runResizeObserver","ResizeObserver","getCurrentDeviceSize","observe","footerEl","IC_DEVICE_SIZES","XL","getThemeForegroundColor","disconnectedCallback","disconnect","componentWillLoad","componentDidLoad","checkResizeObserver","themeChangeHandler","ev","theme","detail","foregroundColor","mode","isSmall","bp","breakpoint","XS","S","M","L","render","aligned","caption","copyright","description","groupLinks","small","h","Host","class","footer","IcThemeForegroundEnum","Dark","Light","ref","fullHeight","variant","name","isSlotUsed","el","hasClassificationBanner"],"sources":["./src/components/ic-footer/ic-footer.css?tag=ic-footer&encapsulation=shadow","./src/components/ic-footer/ic-footer.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: block;\n\n --footer-compliance-padding: 1rem 0;\n}\n\n:host(.footer-sparse) {\n --footer-links-padding: 1.5rem 0;\n --footer-logo-margin-bottom: var(--ic-space-lg);\n --footer-link-inner-flex-direction: row;\n}\n\n:host(.footer-small) {\n --footer-links-padding: 0 0;\n --footer-logo-margin-bottom: var(--ic-space-md);\n --footer-link-inner-flex-direction: column;\n}\n\n:host(.footer-light) {\n --footer-theme-secondary: var(--ic-theme-secondary);\n --footer-theme-tertiary: var(--ic-theme-tertiary);\n --footer-keyline: var(--ic-keyline-lighten);\n}\n\n:host(.footer-dark) {\n --footer-theme-secondary: var(--ic-theme-secondary-light);\n --footer-theme-tertiary: var(--ic-theme-tertiary-light);\n --footer-keyline: var(--ic-keyline-darken);\n}\n\n:host(.footer-small.footer-ungrouped) {\n --footer-links-padding: var(--ic-space-md) 0 0 0;\n}\n\n/* Main inner footer element */\nfooter {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n/* Description */\n\n.footer-description {\n background-color: var(--footer-theme-secondary);\n color: var(--ic-theme-text);\n border-bottom: var(--footer-keyline);\n}\n\n.footer-description-inner {\n padding: 1rem 0;\n}\n\n/* Links */\n\n.footer-links {\n padding: var(--footer-links-padding);\n background-color: var(--footer-theme-secondary);\n color: var(--ic-theme-text);\n}\n\n.footer-links-inner {\n display: flex;\n flex-direction: var(--footer-link-inner-flex-direction);\n}\n\n/* Compliance */\n\n.footer-compliance {\n background-color: var(--footer-theme-tertiary);\n color: var(--ic-theme-text);\n}\n\n.footer-compliance-inner {\n padding: var(--footer-compliance-padding);\n}\n\n.footer-logo {\n margin-bottom: var(--footer-logo-margin-bottom);\n display: flex;\n gap: var(--ic-space-xxl);\n}\n\n.footer-logo > ::slotted() {\n margin-right: var(--ic-space-md);\n}\n\n.footer-caption {\n margin-bottom: var(--ic-space-md);\n}\n\n.classification-spacing {\n margin-bottom: var(--ic-space-lg);\n}\n\n@media (forced-colors: active) {\n footer {\n border-top: var(--ic-hc-border);\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Prop,\n State,\n h,\n Host,\n Listen,\n} from \"@stencil/core\";\nimport { IC_DEVICE_SIZES } from \"../../utils/constants\";\nimport {\n getCurrentDeviceSize,\n getThemeForegroundColor,\n checkResizeObserver,\n hasClassificationBanner,\n isSlotUsed,\n} from \"../../utils/helpers\";\nimport {\n IcAlignment,\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport { IcFooterBreakpoints } from \"./ic-footer.types\";\n\n/**\n * @slot description - Content will be rendered at the top of the footer.\n * @slot link - Content will be rendered between description and logos.\n * @slot logo - Content will be rendered underneath footer links.\n * @slot caption - Content will be rendered above Crown Copyright.\n */\n\n@Component({\n tag: \"ic-footer\",\n styleUrl: \"ic-footer.css\",\n shadow: true,\n})\nexport class Footer {\n private footerEl: HTMLElement;\n private resizeObserver: ResizeObserver = null;\n\n @Element() el: HTMLIcFooterElement;\n\n @State() deviceSize: number = IC_DEVICE_SIZES.XL;\n @State() foregroundColor: IcThemeForeground = getThemeForegroundColor();\n\n /**\n * The alignment of the section containers used within the footer.\n */\n @Prop() aligned?: IcAlignment = \"left\";\n\n /**\n * The screen size breakpoint at which to switch to the small layout.\n */\n @Prop() breakpoint?: IcFooterBreakpoints = \"medium\";\n\n /**\n * The caption displayed at the bottom of the footer.\n */\n @Prop() caption: string;\n\n /**\n * If `true`, the footer will display the crown copyright at the bottom.\n */\n @Prop() copyright: boolean = true;\n\n /**\n * The description displayed at the top of the footer.\n */\n @Prop() description: string;\n\n /**\n * If `true`, the footer will be set up to handle link groups instead of standalone links.\n */\n @Prop() groupLinks?: boolean = false;\n\n /**\n * @internal Triggers on page resize and triggers style changes in footer links and link groups\n */\n @Event() footerResized: EventEmitter<void>;\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n }\n\n componentWillLoad(): void {\n this.deviceSize = getCurrentDeviceSize();\n }\n\n componentDidLoad(): void {\n checkResizeObserver(this.runResizeObserver);\n }\n\n @Listen(\"themeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.foregroundColor = theme.mode;\n }\n\n private isSmall() {\n const bp = this.breakpoint;\n\n return bp === \"extra small\"\n ? this.deviceSize < IC_DEVICE_SIZES.XS\n : bp === \"small\"\n ? this.deviceSize < IC_DEVICE_SIZES.S\n : bp === \"medium\"\n ? this.deviceSize < IC_DEVICE_SIZES.M\n : bp === \"large\"\n ? this.deviceSize < IC_DEVICE_SIZES.L\n : bp === \"extra large\"\n ? this.deviceSize < IC_DEVICE_SIZES.XL\n : false;\n }\n\n private resizeObserverCallback = (currSize: number) => {\n if (currSize !== this.deviceSize) {\n this.deviceSize = currSize;\n }\n this.footerResized.emit();\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n const currSize = getCurrentDeviceSize();\n this.resizeObserverCallback(currSize);\n });\n\n this.resizeObserver.observe(this.footerEl);\n };\n\n render() {\n const {\n aligned,\n caption,\n copyright,\n description,\n groupLinks,\n foregroundColor,\n } = this;\n const small = this.isSmall();\n\n return (\n <Host\n class={{\n footer: true,\n [`footer-${small ? \"small\" : \"sparse\"}`]: true,\n [`footer-${groupLinks ? \"grouped\" : \"ungrouped\"}`]: true,\n [`footer-${foregroundColor}`]: true,\n // Slots will be able to infer their own color\n [IcThemeForegroundEnum.Dark]:\n foregroundColor === IcThemeForegroundEnum.Dark,\n [IcThemeForegroundEnum.Light]:\n foregroundColor === IcThemeForegroundEnum.Light,\n }}\n >\n <footer ref={(footerEl) => (this.footerEl = footerEl)}>\n {/* Description */}\n <div class=\"footer-description\">\n <ic-section-container aligned={aligned} fullHeight={true}>\n <div class=\"footer-description-inner\">\n <ic-typography variant=\"body\">\n <slot name=\"description\">{description}</slot>\n </ic-typography>\n </div>\n </ic-section-container>\n </div>\n\n {/* Links */}\n {isSlotUsed(this.el, \"link\") && (\n <div class=\"footer-links\">\n {groupLinks && small ? (\n <div class=\"footer-links-inner\">\n <slot name=\"link\" />\n </div>\n ) : (\n <ic-section-container fullHeight aligned={aligned}>\n <div class=\"footer-links-inner\">\n <slot name=\"link\" />\n </div>\n </ic-section-container>\n )}\n </div>\n )}\n\n {/* Compliance (logo, caption, copyright) */}\n <div class=\"footer-compliance\">\n <ic-section-container aligned={aligned} fullHeight={true}>\n <div class=\"footer-compliance-inner\">\n {isSlotUsed(this.el, \"logo\") && (\n <div class=\"footer-logo\">\n {/* Logo */}\n <slot name=\"logo\" />\n </div>\n )}\n {(isSlotUsed(this.el, \"caption\") || caption) && (\n <div class=\"footer-caption\">\n <ic-typography\n variant={\n this.deviceSize <= IC_DEVICE_SIZES.M\n ? \"caption\"\n : \"body\"\n }\n >\n <slot name=\"caption\">{caption}</slot>\n </ic-typography>\n </div>\n )}\n {copyright && (\n <div\n class={{\n [\"footer-copyright\"]: true,\n [\"classification-spacing\"]: hasClassificationBanner(),\n }}\n >\n <ic-typography\n variant={\n this.deviceSize <= IC_DEVICE_SIZES.M\n ? \"caption-uppercase\"\n : \"label-uppercase\"\n }\n >\n &copy; Crown Copyright\n </ic-typography>\n </div>\n )}\n </div>\n </ic-section-container>\n </div>\n </footer>\n </Host>\n );\n }\n}\n"],"mappings":"2KAAA,MAAMA,EAAc,o/H,MCuCPC,EAAM,M,sEAETC,KAAAC,eAAiC,KA8EjCD,KAAAE,uBAA0BC,IAChC,GAAIA,IAAaH,KAAKI,WAAY,CAChCJ,KAAKI,WAAaD,C,CAEpBH,KAAKK,cAAcC,MAAM,EAGnBN,KAAAO,kBAAoB,KAC1BP,KAAKC,eAAiB,IAAIO,gBAAe,KACvC,MAAML,EAAWM,IACjBT,KAAKE,uBAAuBC,EAAS,IAGvCH,KAAKC,eAAeS,QAAQV,KAAKW,SAAS,E,gBAvFdC,EAAgBC,G,qBACAC,I,aAKd,O,gBAKW,S,sCAUd,K,2CAUE,K,CAO/BC,uBACE,GAAIf,KAAKC,iBAAmB,KAAM,CAChCD,KAAKC,eAAee,Y,EAIxBC,oBACEjB,KAAKI,WAAaK,G,CAGpBS,mBACEC,EAAoBnB,KAAKO,kB,CAI3Ba,mBAAmBC,GACjB,MAAMC,EAAiBD,EAAGE,OAC1BvB,KAAKwB,gBAAkBF,EAAMG,I,CAGvBC,UACN,MAAMC,EAAK3B,KAAK4B,WAEhB,OAAOD,IAAO,cACV3B,KAAKI,WAAaQ,EAAgBiB,GAClCF,IAAO,QACP3B,KAAKI,WAAaQ,EAAgBkB,EAClCH,IAAO,SACP3B,KAAKI,WAAaQ,EAAgBmB,EAClCJ,IAAO,QACP3B,KAAKI,WAAaQ,EAAgBoB,EAClCL,IAAO,cACP3B,KAAKI,WAAaQ,EAAgBC,GAClC,K,CAmBNoB,SACE,MAAMC,QACJA,EAAOC,QACPA,EAAOC,UACPA,EAASC,YACTA,EAAWC,WACXA,EAAUd,gBACVA,GACExB,KACJ,MAAMuC,EAAQvC,KAAK0B,UAEnB,OACEc,EAACC,EAAI,CACHC,MAAO,CACLC,OAAQ,KACR,CAAC,UAAUJ,EAAQ,QAAU,YAAa,KAC1C,CAAC,UAAUD,EAAa,UAAY,eAAgB,KACpD,CAAC,UAAUd,KAAoB,KAE/B,CAACoB,EAAsBC,MACrBrB,IAAoBoB,EAAsBC,KAC5C,CAACD,EAAsBE,OACrBtB,IAAoBoB,EAAsBE,QAG9CN,EAAA,UAAQO,IAAMpC,GAAcX,KAAKW,SAAWA,GAE1C6B,EAAA,OAAKE,MAAM,sBACTF,EAAA,wBAAsBN,QAASA,EAASc,WAAY,MAClDR,EAAA,OAAKE,MAAM,4BACTF,EAAA,iBAAeS,QAAQ,QACrBT,EAAA,QAAMU,KAAK,eAAeb,OAOjCc,EAAWnD,KAAKoD,GAAI,SACnBZ,EAAA,OAAKE,MAAM,gBACRJ,GAAcC,EACbC,EAAA,OAAKE,MAAM,sBACTF,EAAA,QAAMU,KAAK,UAGbV,EAAA,wBAAsBQ,WAAU,KAACd,QAASA,GACxCM,EAAA,OAAKE,MAAM,sBACTF,EAAA,QAAMU,KAAK,YAQrBV,EAAA,OAAKE,MAAM,qBACTF,EAAA,wBAAsBN,QAASA,EAASc,WAAY,MAClDR,EAAA,OAAKE,MAAM,2BACRS,EAAWnD,KAAKoD,GAAI,SACnBZ,EAAA,OAAKE,MAAM,eAETF,EAAA,QAAMU,KAAK,WAGbC,EAAWnD,KAAKoD,GAAI,YAAcjB,IAClCK,EAAA,OAAKE,MAAM,kBACTF,EAAA,iBACES,QACEjD,KAAKI,YAAcQ,EAAgBmB,EAC/B,UACA,QAGNS,EAAA,QAAMU,KAAK,WAAWf,KAI3BC,GACCI,EAAA,OACEE,MAAO,CACL,CAAC,oBAAqB,KACtB,CAAC,0BAA2BW,MAG9Bb,EAAA,iBACES,QACEjD,KAAKI,YAAcQ,EAAgBmB,EAC/B,oBACA,mBAAiB,0B"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icLinkCss","Link","this","inheritedAttributes","componentWillLoad","inheritAttributes","el","IC_INHERITED_ARIA","updateTheme","themeChangeHandler","ev","theme","detail","mode","async","shadowRoot","querySelector","focus","newTheme","getThemeFromContext","IcThemeForegroundEnum","Light","appearance","Dark","hasRouterSlot","routerSlot","ariaLabel","textContent","render","download","href","hreflang","referrerpolicy","rel","target","showIcon","h","Host","class","name","Object","assign","hrefLang","referrerPolicy","tabindex","innerHTML","OpenInNew"],"sources":["./src/components/ic-link/ic-link.css?tag=ic-link&encapsulation=shadow","./src/components/ic-link/ic-link.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host(.link) .ic-link,\n:host(.link) ::slotted(a) {\n color: var(--ic-hyperlink);\n text-decoration: underline;\n font-weight: var(--ic-font-weight-bold);\n transition: var(--ic-easing-transition-fast);\n}\n\n:host(.link.dark) .ic-link.dark,\n:host(.link.dark) ::slotted(a) {\n color: var(--ic-color-primary-text);\n}\n\n:host(.link.light) .ic-link.light,\n:host(.link.light) ::slotted(a) {\n color: var(--ic-color-white-text);\n}\n\n:host(.link) .ic-link:visited,\n:host(.link) ::slotted(a:visited) {\n color: var(--ic-hyperlink-visited);\n}\n\n:host(.link) .ic-link:hover,\n:host(.link) .ic-link:focus,\n:host(.link) ::slotted(a:hover),\n:host(.link) ::slotted(a:focus) {\n outline: none;\n border-bottom: 0.25rem solid !important;\n margin-bottom: -0.25rem !important;\n text-decoration: none;\n}\n\n@supports (text-decoration-thickness: 25%) {\n :host(.link) .ic-link:hover,\n :host(.link) .ic-link:focus,\n :host(.link) ::slotted(a:hover),\n :host(.link) ::slotted(a:focus) {\n text-decoration-line: underline;\n text-decoration-thickness: 25%;\n text-underline-offset: 25%;\n border-bottom: 0 !important;\n margin-bottom: 0 !important;\n }\n}\n\n:host(.link) .ic-link:active,\n:host(.link) .ic-link:focus:active,\n:host(.link) .ic-link:visited:active,\n:host(.link) ::slotted(a:active),\n:host(.link) ::slotted(a:focus:active),\n:host(.link) ::slotted(a:visited:active) {\n text-decoration: none;\n}\n\n.ic-link-open-in-new-icon {\n vertical-align: middle;\n margin-left: var(--ic-space-xxs);\n}\n\n.ic-link > .ic-link-open-in-new-icon {\n fill: var(--ic-hyperlink);\n}\n\n.ic-link.dark > .ic-link-open-in-new-icon {\n fill: var(--ic-color-primary-text);\n}\n\n.ic-link.light > .ic-link-open-in-new-icon {\n fill: var(--ic-color-white-text);\n}\n\n.ic-link-open-in-new-icon > svg {\n width: var(--ic-space-md);\n height: var(--ic-space-md);\n fill: currentcolor;\n}\n\n.ic-link:visited > .ic-link-open-in-new-icon {\n fill: var(--ic-hyperlink-visited);\n}\n\n.ic-link.light:visited > .ic-link-open-in-new-icon {\n fill: var(--ic-hyperlink-contrast-visited);\n}\n\n:host(.breadcrumb-link) .ic-link {\n display: var(--breadcrumb-link-display);\n align-items: var(--breadcrumb-link-align-items);\n gap: var(--breadcrumb-link-gap);\n}\n\n:host(.breadcrumb-link) .ic-link ::slotted(.back-icon) {\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n}\n\n:host(.breadcrumb-link.current-page) a,\n:host(.breadcrumb-link.current-page) ::slotted(a) {\n font-weight: normal;\n color: inherit;\n text-decoration: none;\n display: flex;\n align-items: center;\n}\n\n:host(.breadcrumb-link.current-page) .ic-link,\n:host(.breadcrumb-link.current-page) ::slotted(a:focus) {\n outline: var(--ic-hc-focus-outline);\n text-decoration: none;\n}\n\n:host(.breadcrumb-link.current-page) .ic-link:visited {\n color: var(--ic-color-primary-text);\n}\n","import {\n Component,\n Element,\n Prop,\n h,\n Host,\n Listen,\n Method,\n} from \"@stencil/core\";\n\nimport OpenInNew from \"../../assets/OpenInNew.svg\";\nimport { getThemeFromContext, inheritAttributes } from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\n\n/**\n * @slot router-item - Handle routing by nesting your routes in this slot.\n */\n\n@Component({\n tag: \"ic-link\",\n styleUrl: \"ic-link.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Link {\n private inheritedAttributes: { [k: string]: unknown } = {};\n private routerSlot: HTMLElement;\n\n @Element() el: HTMLIcLinkElement;\n\n /**\n * The appearance of the link, e.g. dark, light, or default.\n */\n @Prop({ mutable: true }) appearance?: IcThemeForeground = \"default\";\n\n /**\n * If `true`, the user can save the linked URL instead of navigating to it.\n */\n @Prop() download?: string | boolean = false;\n\n /**\n * The URL that the link points to.\n */\n @Prop() href?: string = null;\n\n /**\n * The human language of the linked URL.\n */\n @Prop() hreflang?: string;\n\n /**\n * How much of the referrer to send when following the link.\n */\n @Prop() referrerpolicy?: ReferrerPolicy;\n\n /**\n * The relationship of the linked URL as space-separated link types.\n */\n @Prop() rel?: string;\n\n /**\n * @deprecated This prop should not be used anymore. The 'open in new tab/window' icon will display automatically if target=\"_blank\".\n */\n @Prop() showIcon?: boolean;\n\n /**\n * The place to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\n\n componentWillLoad(): void {\n this.inheritedAttributes = inheritAttributes(this.el, [\n ...IC_INHERITED_ARIA,\n \"aria-expanded\",\n ]);\n\n this.updateTheme();\n }\n\n @Listen(\"themeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.updateTheme(theme.mode);\n }\n\n /**\n * Sets focus on the link.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.el.shadowRoot.querySelector(\"a\")) {\n this.el.shadowRoot.querySelector(\"a\").focus();\n }\n }\n\n private updateTheme(newTheme: IcThemeForeground = null): void {\n const theme = getThemeFromContext(this.el, newTheme || null);\n\n switch (theme) {\n case IcThemeForegroundEnum.Light:\n this.appearance = IcThemeForegroundEnum.Light;\n break;\n case IcThemeForegroundEnum.Dark:\n this.appearance = IcThemeForegroundEnum.Dark;\n break;\n }\n }\n\n private hasRouterSlot(): boolean {\n this.routerSlot = this.el.querySelector('[slot=\"router-item\"]');\n if (this.routerSlot) {\n this.routerSlot.ariaLabel = this.routerSlot.textContent;\n }\n return !!this.routerSlot;\n }\n\n render() {\n const {\n download,\n href,\n hreflang,\n referrerpolicy,\n rel,\n target,\n showIcon,\n appearance,\n } = this;\n\n return (\n <Host class={{ [\"link\"]: true, [`${appearance}`]: true }}>\n {this.hasRouterSlot() ? (\n <slot name=\"router-item\"></slot>\n ) : (\n <a\n class={{\n [\"ic-link\"]: href !== null,\n [`${appearance}`]: href !== null,\n }}\n download={download !== false ? download : null}\n href={href}\n hrefLang={hreflang}\n referrerPolicy={referrerpolicy}\n rel={rel}\n target={target}\n tabindex={href !== null ? \"0\" : \"-1\"}\n {...this.inheritedAttributes}\n >\n <slot />\n {(showIcon || target === \"_blank\") && (\n <span class=\"ic-link-open-in-new-icon\" innerHTML={OpenInNew} />\n )}\n </a>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"mLAAA,MAAMA,EAAY,gxJ,MC8BLC,EAAI,M,yBACPC,KAAAC,oBAAgD,G,gBAQE,U,cAKpB,M,UAKd,K,uHA2BxBC,oBACEF,KAAKC,oBAAsBE,EAAkBH,KAAKI,GAAI,IACjDC,EACH,kBAGFL,KAAKM,a,CAIPC,mBAAmBC,GACjB,MAAMC,EAAiBD,EAAGE,OAC1BV,KAAKM,YAAYG,EAAME,K,CAOzBC,iBACE,GAAIZ,KAAKI,GAAGS,WAAWC,cAAc,KAAM,CACzCd,KAAKI,GAAGS,WAAWC,cAAc,KAAKC,O,EAIlCT,YAAYU,EAA8B,MAChD,MAAMP,EAAQQ,EAAoBjB,KAAKI,GAAIY,GAAY,MAEvD,OAAQP,GACN,KAAKS,EAAsBC,MACzBnB,KAAKoB,WAAaF,EAAsBC,MACxC,MACF,KAAKD,EAAsBG,KACzBrB,KAAKoB,WAAaF,EAAsBG,KACxC,M,CAIEC,gBACNtB,KAAKuB,WAAavB,KAAKI,GAAGU,cAAc,wBACxC,GAAId,KAAKuB,WAAY,CACnBvB,KAAKuB,WAAWC,UAAYxB,KAAKuB,WAAWE,W,CAE9C,QAASzB,KAAKuB,U,CAGhBG,SACE,MAAMC,SACJA,EAAQC,KACRA,EAAIC,SACJA,EAAQC,eACRA,EAAcC,IACdA,EAAGC,OACHA,EAAMC,SACNA,EAAQb,WACRA,GACEpB,KAEJ,OACEkC,EAACC,EAAI,CAACC,MAAO,CAAE,CAAC,QAAS,KAAM,CAAC,GAAGhB,KAAe,OAC/CpB,KAAKsB,gBACJY,EAAA,QAAMG,KAAK,gBAEXH,EAAA,IAAAI,OAAAC,OAAA,CACEH,MAAO,CACL,CAAC,WAAYR,IAAS,KACtB,CAAC,GAAGR,KAAeQ,IAAS,MAE9BD,SAAUA,IAAa,MAAQA,EAAW,KAC1CC,KAAMA,EACNY,SAAUX,EACVY,eAAgBX,EAChBC,IAAKA,EACLC,OAAQA,EACRU,SAAUd,IAAS,KAAO,IAAM,MAC5B5B,KAAKC,qBAETiC,EAAA,cACED,GAAYD,IAAW,WACvBE,EAAA,QAAME,MAAM,2BAA2BO,UAAWC,K"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icCardCss","Card","this","parentFocussed","isFocussed","parentBlurred","toggleExpanded","areaExpanded","disconnectedCallback","parentIsAnchorTag","parentEl","removeEventListener","componentWillLoad","el","parentElement","tagName","clickable","classList","add","addEventListener","removeDisabledFalse","disabled","componentDidLoad","onComponentRequiredPropUndefined","prop","heading","propName","updateTheme","handleHostClick","event","stopImmediatePropagation","themeChangeHandler","ev","theme","detail","mode","async","shadowRoot","querySelector","focus","newTheme","foregroundColor","getThemeFromContext","IcThemeForegroundEnum","Default","appearance","render","expandable","message","href","hreflang","referrerpolicy","rel","subheading","target","fullWidth","Component","undefined","attrs","hrefLang","referrerPolicy","h","Object","assign","class","Dark","tabindex","isSlotUsed","name","variant","size","disableTooltip","onClick","innerHTML","chevronIcon","id"],"sources":["./src/components/ic-card/ic-card.css?tag=ic-card&encapsulation=shadow","./src/components/ic-card/ic-card.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: flex;\n}\n\na {\n text-decoration: none !important;\n color: var(--ic-architechtural-black) !important;\n}\n\nbutton {\n border: none;\n background-color: transparent;\n outline: var(--ic-hc-focus-outline);\n}\n\n.card,\n.card.clickable {\n display: flex;\n flex-direction: column;\n border: var(--ic-border-default);\n border-radius: var(--ic-border-radius);\n box-sizing: border-box;\n padding: var(--ic-space-md);\n text-align: left;\n color: var(--ic-architechtural-black);\n transition: var(--ic-easing-transition-fast);\n}\n\n.dark.card,\n.dark.card.clickable {\n border: var(--ic-space-1px) solid var(--ic-architectural-700);\n}\n\n.card.clickable:hover {\n background-color: var(--ic-action-default-bg-hover);\n border: var(--ic-border-hover);\n cursor: pointer;\n}\n\n.card.clickable:focus,\n.card.clickable.focussed {\n background-color: var(--ic-action-default-bg-hover);\n box-shadow: var(--ic-border-focus);\n outline: var(--ic-hc-focus-outline);\n border: var(--ic-border-pressed);\n}\n\n.card.clickable:active {\n background-color: var(--ic-action-default-bg-active);\n box-shadow: var(--ic-border-focus);\n}\n\n.card.disabled {\n border: var(--ic-border-disabled);\n}\n\n.card.fullwidth {\n width: 100%;\n}\n\n.card-header {\n display: flex;\n align-items: center;\n}\n\n.icon {\n display: flex;\n align-items: center;\n padding-right: var(--ic-space-xs);\n}\n\n.card.disabled ::slotted(svg) {\n fill: var(--ic-color-tertiary-text);\n}\n\n.card.clickable .card-title {\n color: var(--ic-hyperlink);\n text-decoration: underline;\n text-decoration-thickness: var(--ic-space-1px);\n}\n\n.card.clickable:hover .card-title,\n.card.clickable:focus .card-title,\n.card.clickable.focussed .card-title {\n display: inline-block;\n border-bottom: 0.25rem solid !important;\n margin-bottom: -0.25rem !important;\n text-decoration: none;\n}\n\n@supports (text-decoration-thickness: 25%) {\n .card.clickable:hover .card-title,\n .card.clickable:focus .card-title,\n .card.clickable.focussed .card-title {\n text-decoration-line: underline;\n text-decoration-thickness: 25%;\n text-underline-offset: 25%;\n border-bottom: 0 !important;\n margin-bottom: 0 !important;\n }\n}\n\n.card.clickable:active .card-title {\n text-decoration: none;\n}\n\n.card.disabled .card-title {\n text-decoration: underline;\n text-decoration-thickness: var(--ic-space-1px);\n text-decoration-color: var(--ic-color-tertiary-text);\n color: var(--ic-color-tertiary-text);\n}\n\n.subheading {\n margin-top: var(--ic-space-xxs);\n}\n\n.adornment {\n margin-top: var(--ic-space-xxs);\n}\n\n.card-message {\n margin-top: var(--ic-space-md);\n align-items: left;\n}\n\n.card.disabled .card-message,\n.card.disabled .subheading {\n color: var(--ic-color-tertiary-text);\n}\n\n.interaction-button {\n margin-left: auto;\n}\n\n.image-top {\n margin-bottom: var(--ic-space-md);\n display: flex;\n justify-content: center;\n}\n\n.image-mid {\n margin-top: var(--ic-space-md);\n display: flex;\n justify-content: center;\n}\n\n.interaction-area {\n display: flex;\n flex-grow: 1;\n gap: var(--ic-space-md);\n margin-top: var(--ic-space-md);\n align-items: flex-end;\n}\n\n.interaction-controls {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--ic-space-sm);\n}\n\n.toggle-button {\n margin-left: auto;\n}\n\n.toggle-button-closed svg {\n transform: rotate(90deg);\n}\n\n.toggle-button-expanded svg {\n transform: rotate(-90deg);\n}\n\n.expanded-content {\n margin-top: var(--ic-space-md);\n}\n","import {\n Component,\n Element,\n Listen,\n Prop,\n State,\n h,\n Method,\n} from \"@stencil/core\";\nimport {\n onComponentRequiredPropUndefined,\n isSlotUsed,\n getThemeFromContext,\n removeDisabledFalse,\n} from \"../../utils/helpers\";\nimport {\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport chevronIcon from \"../../assets/chevron-icon.svg\";\n\n/**\n * @slot heading - Content will be placed at the top of the card to the right of the icon.\n * @slot message - Content will be placed in the main body of the card.\n * @slot subheading - Content will be placed below the card heading.\n * @slot adornment - Content will be placed below the card subheading.\n * @slot image-top - Content will be placed at the top of the card above all other content.\n * @slot image-mid - Content will be placed below the card heading section.\n * @slot icon - Content will be placed to the left of the card heading.\n * @slot interaction-button - Content will be placed in the top right corner of the heading section.\n * @slot interaction-controls - Content will be placed below the card message.\n * @slot expanded-content - Content will be placed below the interaction controls but will not initially be rendered.\n */\n@Component({\n tag: \"ic-card\",\n styleUrl: \"ic-card.css\",\n shadow: true,\n})\nexport class Card {\n @Element() el: HTMLIcCardElement;\n\n @State() appearance?: IcThemeForeground = \"default\";\n @State() areaExpanded: boolean = false;\n @State() isFocussed: boolean = false;\n @State() parentEl: HTMLElement | null = null;\n @State() parentIsAnchorTag: boolean = false;\n\n /**\n * If `true`, the card will be a clickable variant, instead of static.\n */\n @Prop({ mutable: true }) clickable?: boolean = false;\n\n /**\n * If `true`, the card will be disabled if it is clickable.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * If `true`, the card will have an expandable area and expansion toggle button.\n */\n @Prop() expandable?: boolean = false;\n\n /**\n * If `true`, the card will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The heading for the card.\n */\n @Prop() heading!: string;\n\n /**\n * The URL that the clickable card link points to. If set, the clickable card will render as an \"a\" tag, otherwise it will render as a button.\n */\n @Prop() href?: string | undefined;\n\n /**\n * The human language of the linked URL.\n */\n @Prop() hreflang?: string = \"\";\n\n /**\n * The main body message of the card.\n */\n @Prop() message?: string = \"\";\n\n /**\n * How much of the referrer to send when following the link.\n */\n @Prop() referrerpolicy?: ReferrerPolicy;\n\n /**\n * The relationship of the linked URL as space-separated link types.\n */\n @Prop() rel?: string;\n\n /**\n * The subheading for the card.\n */\n @Prop() subheading?: string;\n\n /**\n * The place to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\n\n disconnectedCallback(): void {\n if (this.parentIsAnchorTag) {\n this.parentEl.removeEventListener(\"focus\", this.parentFocussed);\n this.parentEl.removeEventListener(\"blur\", this.parentBlurred);\n }\n }\n\n componentWillLoad(): void {\n this.parentEl = this.el.parentElement;\n\n if (this.parentEl.tagName === \"A\") {\n this.clickable = true;\n this.parentIsAnchorTag = true;\n this.parentEl.classList.add(\"ic-card-wrapper-link\");\n this.parentEl.addEventListener(\"focus\", this.parentFocussed);\n this.parentEl.addEventListener(\"blur\", this.parentBlurred);\n }\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.heading, propName: \"heading\" }],\n \"Card\"\n );\n this.updateTheme();\n }\n\n @Listen(\"click\", { capture: true })\n handleHostClick(event: Event): void {\n if (this.disabled) {\n event.stopImmediatePropagation();\n }\n }\n\n @Listen(\"themeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.updateTheme(theme.mode);\n }\n\n /**\n * Sets focus on the card.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.el.shadowRoot.querySelector(\"a\")) {\n this.el.shadowRoot.querySelector(\"a\").focus();\n } else if (this.el.shadowRoot.querySelector(\"button\")) {\n this.el.shadowRoot.querySelector(\"button\").focus();\n }\n }\n\n private parentFocussed = (): void => {\n this.isFocussed = true;\n };\n\n private parentBlurred = (): void => {\n this.isFocussed = false;\n };\n\n private updateTheme(newTheme: IcThemeForeground = null): void {\n const foregroundColor = getThemeFromContext(this.el, newTheme || null);\n\n if (foregroundColor !== IcThemeForegroundEnum.Default) {\n this.appearance = foregroundColor;\n }\n }\n\n private toggleExpanded = (): void => {\n this.areaExpanded = !this.areaExpanded;\n };\n\n render() {\n const {\n clickable,\n disabled,\n expandable,\n heading,\n message,\n href,\n hreflang,\n referrerpolicy,\n rel,\n subheading,\n target,\n fullWidth,\n parentIsAnchorTag,\n isFocussed,\n } = this;\n\n const Component = parentIsAnchorTag\n ? \"div\"\n : clickable\n ? this.href === undefined\n ? \"button\"\n : \"a\"\n : \"div\";\n\n const attrs = Component == \"a\" && {\n href: href,\n hrefLang: hreflang,\n referrerPolicy: referrerpolicy,\n rel: rel,\n target: target,\n };\n\n return (\n <Component\n class={{\n [\"card\"]: true,\n [\"clickable\"]: clickable && !disabled,\n [\"disabled\"]: disabled,\n [\"fullwidth\"]: fullWidth,\n [\"focussed\"]: isFocussed,\n [\"dark\"]: this.appearance === IcThemeForegroundEnum.Dark,\n }}\n tabindex={clickable && !parentIsAnchorTag ? 0 : null}\n aria-disabled={disabled ? \"true\" : null}\n disabled={disabled ? true : null}\n {...attrs}\n >\n {isSlotUsed(this.el, \"image-top\") && (\n <div class=\"image-top\">\n <slot name=\"image-top\"></slot>\n </div>\n )}\n <div class=\"card-header\">\n {isSlotUsed(this.el, \"icon\") && (\n <div class=\"icon\">\n <slot name=\"icon\" />\n </div>\n )}\n <div class=\"card-title\">\n <slot name=\"heading\">\n <ic-typography variant=\"h4\">\n <p>{heading}</p>\n </ic-typography>\n </slot>\n </div>\n {isSlotUsed(this.el, \"interaction-button\") && (\n <div class=\"interaction-button\">\n <slot name=\"interaction-button\"></slot>\n </div>\n )}\n </div>\n {(subheading || isSlotUsed(this.el, \"subheading\")) && (\n <div class=\"subheading\">\n <slot name=\"subheading\">\n <ic-typography variant=\"subtitle-small\">\n {subheading}\n </ic-typography>\n </slot>\n </div>\n )}\n {isSlotUsed(this.el, \"adornment\") && (\n <div class=\"adornment\">\n <slot name=\"adornment\"></slot>\n </div>\n )}\n {isSlotUsed(this.el, \"image-mid\") && (\n <div class=\"image-mid\">\n <slot name=\"image-mid\"></slot>\n </div>\n )}\n {(message || isSlotUsed(this.el, \"message\")) && (\n <div\n class={{\n [\"card-message\"]: true,\n }}\n >\n {message && <ic-typography variant=\"body\">{message}</ic-typography>}\n {isSlotUsed(this.el, \"message\") && <slot name=\"message\"></slot>}\n </div>\n )}\n {(isSlotUsed(this.el, \"interaction-controls\") || expandable) && (\n <div class=\"interaction-area\">\n <div class=\"interaction-controls\">\n <slot name=\"interaction-controls\"></slot>\n </div>\n {expandable && (\n <ic-button\n class={{\n [\"toggle-button\"]: true,\n [\"toggle-button-closed\"]: !this.areaExpanded,\n [\"toggle-button-expanded\"]: this.areaExpanded,\n }}\n variant=\"icon\"\n size=\"large\"\n disableTooltip\n aria-label=\"Toggle expandable area\"\n aria-expanded={this.areaExpanded}\n aria-controls=\"expanded-content-area\"\n onClick={this.toggleExpanded}\n innerHTML={chevronIcon}\n ></ic-button>\n )}\n </div>\n )}\n {isSlotUsed(this.el, \"expanded-content\") && this.areaExpanded && (\n <div class=\"expanded-content\" id=\"expanded-content-area\">\n <slot name=\"expanded-content\"></slot>\n </div>\n )}\n </Component>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icTabCss","Tab","this","focusFromClick","isInitialRender","handleClick","tabClick","emit","tabId","contextId","position","tabPosition","tabFocus","handleFocus","focusTabId","handleMouseDown","disabledWatchHandler","tabEnabled","connectedCallback","tabCreated","host","disconnectedCallback","tabContext","document","querySelector","tabRemovedHandler","componentWillLoad","removeDisabledFalse","disabled","componentDidUpdate","async","focus","render","selected","appearance","h","Host","class","IcThemeForegroundEnum","Light","role","onClick","onFocus","onMouseDown","tabindex","name","variant"],"sources":["./src/components/ic-tab/ic-tab.css?tag=ic-tab&encapsulation=shadow","./src/components/ic-tab/ic-tab.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n --indicator-initial-color: rgba(23 89 188 / 0%);\n --indicator-color: var(--ic-action-default);\n --focus-indicator: var(--ic-border-focus);\n --label-color: var(--ic-color-primary-text);\n --background-color-hover: var(--ic-action-default-bg-hover);\n --background-color-active: var(--ic-action-default-bg-active);\n\n display: flex;\n align-items: center;\n border-radius: 0;\n color: var(--label-color);\n height: 2.5rem;\n padding: 0 var(--ic-space-md);\n cursor: pointer;\n position: relative;\n border-bottom: var(--ic-space-xxs) solid var(--indicator-initial-color);\n gap: var(--ic-space-xs);\n transition: all var(--ic-easing-transition-fast);\n}\n\n:host(:focus) {\n box-shadow: var(--focus-indicator);\n border-radius: var(--ic-border-radius);\n}\n\n:host(:focus-visible) {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(:hover) {\n background-color: var(--background-color-hover);\n}\n\n:host(:active) {\n background-color: var(--background-color-active);\n}\n\n:host(.ic-tab-light) {\n --indicator-initial-color: rgb(255 255 255 / 0%);\n --indicator-color: rgb(255 255 255 / 100%);\n --focus-indicator: var(--ic-border-focus);\n --label-color: white;\n --background-color-hover: var(--ic-action-dark-bg-hover);\n --background-color-active: var(--ic-action-dark-bg-active);\n}\n\n:host(.selected) {\n border-bottom: var(--ic-space-xxs) solid var(--indicator-color);\n}\n\n:host(.disabled) {\n pointer-events: none;\n color: var(--ic-architectural-300);\n}\n\n:host(.selected.with-transition) {\n transition: all var(--ic-easing-transition-slow),\n border-color var(--ic-transition-duration-slow);\n}\n\n.ic-tab-label {\n pointer-events: none;\n}\n\n::slotted(svg) {\n fill: currentcolor;\n}\n\n@media (forced-colors: active) {\n :host {\n border-bottom: var(--ic-space-xxs) solid canvas;\n }\n\n :host(.disabled) {\n color: GrayText;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n Method,\n Watch,\n} from \"@stencil/core\";\n\nimport { IcTabClickEventDetail } from \"./ic-tab.types\";\nimport {\n IcThemeForegroundNoDefault,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport { removeDisabledFalse } from \"../../utils/helpers\";\n\n/**\n * @slot icon - Content will be rendered next to the tab label.\n */\n@Component({\n tag: \"ic-tab\",\n styleUrl: \"ic-tab.css\",\n shadow: true,\n})\nexport class Tab {\n private focusFromClick: boolean = false;\n private focusTabId: string;\n private isInitialRender: boolean = true;\n\n @Element() host: HTMLIcTabElement;\n\n /** @internal Determines whether the light or dark variant of the tabs should be displayed. */\n @Prop() appearance?: IcThemeForegroundNoDefault = \"dark\";\n\n /** @internal The unique context needed if using multiple tabs inside one another i.e. rendering another tabs inside a tab panel. */\n @Prop({ reflect: true }) contextId?: string = \"default\";\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /** @internal If `true`, the tab will display with a selected indicator and tabIndex will be set. */\n @Prop({ reflect: true }) selected?: boolean = false;\n\n /** @internal The shared ID between panel and tab. */\n @Prop({ reflect: true }) tabId?: string;\n\n /** @internal The position of the tab inside the tabs array in context. */\n @Prop() tabPosition?: number;\n\n @Watch(\"disabled\")\n disabledWatchHandler(): void {\n this.tabEnabled.emit();\n }\n\n /**\n * @internal Emitted when a tab is selected.\n */\n @Event() tabClick: EventEmitter<IcTabClickEventDetail>;\n\n /**\n * @internal Emitted when a tab is dynamically created.\n */\n @Event() tabCreated: EventEmitter<HTMLIcTabElement>;\n\n /**\n * @internal Emitted when a tab's disabled prop changes\n */\n @Event() tabEnabled: EventEmitter<void>;\n\n /**\n * @internal Emitted when a tab is focussed.\n */\n @Event() tabFocus: EventEmitter<IcTabClickEventDetail>;\n\n /**\n * @internal Emitted when a tab is unmounted.\n */\n @Event() tabRemoved: EventEmitter<void>;\n\n connectedCallback(): void {\n this.tabCreated.emit(this.host);\n }\n\n disconnectedCallback(): void {\n const tabContext = document.querySelector(\n `ic-tab-context[context-id=${this.contextId}]`\n ) as HTMLIcTabContextElement;\n if (tabContext) {\n tabContext.tabRemovedHandler(!!this.focusTabId);\n }\n }\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.host);\n }\n\n componentDidUpdate(): void {\n this.isInitialRender = false;\n }\n\n /**\n * Sets focus on the tab.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.host) {\n this.host.focus();\n }\n }\n\n private handleClick = () => {\n this.tabClick.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n if (this.focusFromClick) {\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n this.focusFromClick = false;\n }\n };\n\n private handleFocus = () => {\n if (!this.focusFromClick) {\n this.focusTabId = this.tabId;\n\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n }\n };\n\n private handleMouseDown = () => {\n //set flag so that focus gets handled after click\n //there is a timing issue where a long click only causes focus to happen & not the click\n //the focus does need to be a seperate event though to handle focus from keyboard\n this.focusFromClick = true;\n };\n\n render() {\n const { disabled, selected, appearance } = this;\n return (\n <Host\n class={{\n [\"with-transition\"]: !this.isInitialRender,\n [\"ic-tab-light\"]: appearance === IcThemeForegroundEnum.Light,\n [\"selected\"]: selected,\n [\"disabled\"]: disabled,\n }}\n role=\"tab\"\n aria-selected={selected ? \"true\" : \"false\"}\n onClick={this.handleClick}\n onFocus={this.handleFocus}\n onMouseDown={this.handleMouseDown}\n aria-disabled={disabled ? \"true\" : \"false\"}\n tabindex={this.selected ? 0 : -1}\n >\n {this.host.querySelector('[slot=\"icon\"]') && <slot name=\"icon\"></slot>}\n <ic-typography class=\"ic-tab-label\" variant=\"label\">\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n </Host>\n );\n }\n}\n"],"mappings":"mIAAA,MAAMA,EAAW,k7H,MC2BJC,EAAG,M,oNACNC,KAAAC,eAA0B,MAE1BD,KAAAE,gBAA2B,KAqF3BF,KAAAG,YAAc,KACpBH,KAAKI,SAASC,KAAK,CACjBC,MAAON,KAAKM,MACZC,UAAWP,KAAKO,UAChBC,SAAUR,KAAKS,cAEjB,GAAIT,KAAKC,eAAgB,CACvBD,KAAKU,SAASL,KAAK,CACjBC,MAAON,KAAKM,MACZC,UAAWP,KAAKO,UAChBC,SAAUR,KAAKS,cAEjBT,KAAKC,eAAiB,K,GAIlBD,KAAAW,YAAc,KACpB,IAAKX,KAAKC,eAAgB,CACxBD,KAAKY,WAAaZ,KAAKM,MAEvBN,KAAKU,SAASL,KAAK,CACjBC,MAAON,KAAKM,MACZC,UAAWP,KAAKO,UAChBC,SAAUR,KAAKS,a,GAKbT,KAAAa,gBAAkB,KAIxBb,KAAKC,eAAiB,IAAI,E,gBAhHsB,O,eAGJ,U,cAKjB,M,cAGiB,M,gDAS9Ca,uBACEd,KAAKe,WAAWV,M,CA4BlBW,oBACEhB,KAAKiB,WAAWZ,KAAKL,KAAKkB,K,CAG5BC,uBACE,MAAMC,EAAaC,SAASC,cAC1B,6BAA6BtB,KAAKO,cAEpC,GAAIa,EAAY,CACdA,EAAWG,oBAAoBvB,KAAKY,W,EAIxCY,oBACEC,EAAoBzB,KAAK0B,SAAU1B,KAAKkB,K,CAG1CS,qBACE3B,KAAKE,gBAAkB,K,CAOzB0B,iBACE,GAAI5B,KAAKkB,KAAM,CACblB,KAAKkB,KAAKW,O,EAuCdC,SACE,MAAMJ,SAAEA,EAAQK,SAAEA,EAAQC,WAAEA,GAAehC,KAC3C,OACEiC,EAACC,EAAI,CACHC,MAAO,CACL,CAAC,oBAAqBnC,KAAKE,gBAC3B,CAAC,gBAAiB8B,IAAeI,EAAsBC,MACvD,CAAC,YAAaN,EACd,CAAC,YAAaL,GAEhBY,KAAK,MAAK,gBACKP,EAAW,OAAS,QACnCQ,QAASvC,KAAKG,YACdqC,QAASxC,KAAKW,YACd8B,YAAazC,KAAKa,gBAAe,gBAClBa,EAAW,OAAS,QACnCgB,SAAU1C,KAAK+B,SAAW,GAAK,GAE9B/B,KAAKkB,KAAKI,cAAc,kBAAoBW,EAAA,QAAMU,KAAK,SACxDV,EAAA,iBAAeE,MAAM,eAAeS,QAAQ,SAC1CX,EAAA,YACEA,EAAA,e"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icRadioOptionCss","RadioOption","this","defaultRadioValue","hasAdditionalField","skipFocus","handleClick","disabled","radioElement","focus","textfield","host","querySelector","value","icCheck","emit","radioOptionSelect","swallowClick","event","stopPropagation","handleFormReset","selected","initiallySelected","watchSelectedHandler","icSelectedChange","disconnectedCallback","removeFormResetListener","componentWillLoad","additonalFieldContent","getSlotContent","Element","tagName","textField","hiddenInput","addFormResetListener","removeDisabledFalse","componentDidLoad","onComponentRequiredPropUndefined","prop","propName","componentDidRender","additionalFieldDisplay","setAttribute","removeAttribute","textfieldValueHandler","textFieldValue","detail","stopImmediatePropagation","async","shadowRoot","render","id","label","undefined","groupLabel","h","Host","onClick","class","role","tabindex","type","name","checked","ref","el","variant","htmlFor","hidden","dynamicText"],"sources":["./src/components/ic-radio-option/ic-radio-option.css?tag=ic-radio-option&encapsulation=shadow","./src/components/ic-radio-option/ic-radio-option.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: flex;\n flex-direction: column;\n width: fit-content;\n}\n\n:host([additional-field-display=\"static\"]) ::slotted(ic-text-field) {\n margin-top: calc(var(--ic-space-sm) / 2);\n margin-left: var(--ic-space-xl);\n}\n\n/* The label turns grey when disabled */\n:host(.disabled) {\n color: var(--ic-architectural-200);\n}\n\n/* Focus states */\n\n.container input:focus + span.checkmark,\n:host(:focus) .container input:checked + span.checkmark {\n box-shadow: var(--ic-border-focus);\n}\n\n/* The container */\n.container {\n display: grid;\n grid-template-columns: min-content auto;\n position: relative;\n cursor: pointer;\n align-items: center;\n margin: var(--ic-space-xxs) 0 var(--ic-space-xxs) var(--ic-space-xxs);\n}\n\n.container.disabled,\n.container.disabled input:disabled {\n cursor: default;\n}\n\n/* Hide the browser's default radio button */\n.container input {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n display: inline-block;\n position: absolute;\n cursor: pointer;\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n border-radius: 50%;\n border: none;\n}\n\n/* Create a custom radio button */\n.checkmark {\n display: block;\n position: relative;\n top: 0;\n left: 0;\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n background-color: transparent;\n border: var(--ic-border-default);\n border-radius: 50%;\n transition: var(--ic-easing-transition-fast);\n box-sizing: border-box;\n}\n\n/* Show the indicator (dot/circle) when checked */\n.container input:checked ~ .checkmark::after {\n display: inline-block;\n}\n\n/* On mouse-over, add a light blue background color */\n.container:hover input ~ .checkmark {\n background-color: var(--ic-action-default-bg-hover);\n box-shadow: 0 0 0 0.25rem var(--ic-action-default-bg-hover);\n border: var(--ic-space-1px) solid var(--ic-action-default);\n}\n\n/* When pressed, adds the active colours */\n.container:active input ~ .checkmark {\n background-color: var(--ic-action-default-bg-active);\n border: var(--ic-space-1px) solid var(--ic-action-default-active);\n box-shadow: 0 0 0 0.25rem var(--ic-action-default-bg-active);\n}\n\n/* When pressed, adds the active colours */\n.container:active input:checked ~ .checkmark {\n background-color: var(--ic-action-default-bg-active);\n border: 0.125rem solid var(--ic-action-default-active);\n box-shadow: 0 0 0 0.25rem var(--ic-action-default-bg-active);\n}\n\n/* When pressed and selected, adds the active colours */\n.container:active input:checked ~ .checkmark::after {\n background-color: var(--ic-action-default-active);\n}\n\n/* When the radio button is checked */\n.container input:checked ~ .checkmark {\n border: 0.125rem solid var(--ic-action-default);\n}\n\n/* When the radio button is checked and disabled */\n.container input:checked:disabled ~ .checkmark {\n background-color: transparent;\n border: 0.125rem solid var(--ic-architectural-200);\n}\n\n/* When the radio button is disabled */\n.container input:disabled ~ .checkmark {\n border: var(--ic-space-1px) dashed var(--ic-architectural-200);\n}\n\n/* When the radio button is disabled */\n.container input:disabled ~ .checkmark::after {\n background: var(--ic-architectural-200);\n}\n\n/* On mouse-over inactive */\n.container:hover input:disabled ~ .checkmark {\n background-color: transparent;\n box-shadow: none;\n border: 0.125rem solid none;\n}\n\n.container:active input:disabled ~ .checkmark::after {\n background-color: var(--ic-architectural-200);\n}\n\n/* Style the indicator (dot/circle) */\n.container .checkmark::after {\n content: \"\";\n position: absolute;\n display: none;\n top: calc(50% - var(--ic-space-xs));\n left: calc(50% - var(--ic-space-xs));\n width: var(--ic-space-md);\n height: var(--ic-space-md);\n border-radius: 50%;\n background: var(--ic-action-default);\n}\n\n.radio-label {\n margin-left: var(--ic-space-md);\n}\n\n.additional-field-wrapper {\n margin-left: var(--ic-space-xs);\n}\n\n/* The line */\n.branch-corner {\n color: var(--ic-action-default);\n height: var(--ic-space-md);\n width: var(--ic-space-xl);\n border-radius: 0 0 0 0.188rem;\n border-bottom: 0.125rem solid var(--ic-action-default);\n border-left: 0.125rem solid var(--ic-action-default);\n margin-left: calc(-1 * var(--ic-space-1px));\n}\n\n/* The dynamic container */\n.dynamic-container {\n display: flex;\n position: relative;\n margin: var(--ic-space-xxxs) 0 var(--ic-space-xxs) var(--ic-space-md);\n gap: var(--ic-space-xs);\n}\n\n.dynamic-container.hidden {\n display: none;\n}\n\n.dynamic-text {\n color: var(--ic-action-default);\n margin-top: calc(var(--ic-space-sm) / 2);\n margin-bottom: var(--ic-space-xs);\n border-radius: 2%;\n}\n\n@media (max-width: 576px) {\n ::slotted(ic-text-field) {\n --input-width: 100%;\n }\n}\n\n@media (forced-colors: active) {\n /* Styles here only apply to Forced Colors Mode */\n\n .container input:checked ~ .checkmark,\n .container:active input:checked ~ .checkmark {\n border-color: Highlight;\n }\n\n .container input:checked ~ .checkmark::after,\n .container:active input:checked ~ .checkmark::after {\n background-color: Highlight;\n }\n\n .container input:disabled ~ .checkmark,\n .container input:checked:disabled ~ .checkmark {\n border-color: GrayText;\n }\n\n .container input:disabled ~ .checkmark::after,\n .container:active input:disabled ~ .checkmark::after {\n background-color: GrayText;\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n Listen,\n State,\n Method,\n Watch,\n} from \"@stencil/core\";\nimport { IcAdditionalFieldTypes, IcValueEventDetail } from \"../../utils/types\";\nimport {\n getSlotContent,\n onComponentRequiredPropUndefined,\n addFormResetListener,\n removeFormResetListener,\n removeDisabledFalse,\n} from \"../../utils/helpers\";\n@Component({\n tag: \"ic-radio-option\",\n styleUrl: \"ic-radio-option.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class RadioOption {\n private defaultRadioValue: string = \"\";\n private hasAdditionalField: boolean = false;\n private radioElement: HTMLInputElement;\n private skipFocus = false;\n\n @Element() host: HTMLIcRadioOptionElement;\n\n /**\n * The style of additionalField that will be displayed if used.\n */\n @Prop({ reflect: true }) additionalFieldDisplay: IcAdditionalFieldTypes =\n \"static\";\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * The text to be displayed when dynamic.\n */\n @Prop() dynamicText: string = \"This selection requires additional answers\";\n\n /**\n * The group label for the radio option.\n */\n @Prop() groupLabel: string;\n\n /**\n * The label for the radio option.\n */\n @Prop() label?: string;\n\n /**\n * The name for the radio option.\n */\n @Prop() name: string;\n\n /**\n * The value for the radio option.\n */\n @Prop({ mutable: true }) value!: string;\n\n /**\n * If `true`, the radio option will be displayed in a selected state.\n */\n @Prop({ reflect: true, mutable: true }) selected?: boolean = false;\n @State() initiallySelected = this.selected;\n\n @Watch(\"selected\")\n watchSelectedHandler(): void {\n this.icSelectedChange.emit();\n }\n\n /**\n * Emitted when the radio option is selected.\n */\n @Event() icCheck: EventEmitter<IcValueEventDetail>;\n\n /**\n * @deprecated This event should not be used anymore. Use icCheck instead.\n */\n @Event() radioOptionSelect: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when the radio option is selected or deselected.\n */\n @Event() icSelectedChange: EventEmitter<void>;\n\n disconnectedCallback(): void {\n removeFormResetListener(this.host, this.handleFormReset);\n }\n\n componentWillLoad(): void {\n const additonalFieldContent = getSlotContent(this.host, \"additional-field\");\n\n if (additonalFieldContent !== null) {\n this.hasAdditionalField = true;\n const Element = additonalFieldContent[0] as HTMLElement;\n if (Element.tagName === \"IC-TEXT-FIELD\") {\n const textField = Element as HTMLIcTextFieldElement;\n textField.hiddenInput = false;\n }\n }\n\n this.defaultRadioValue = this.value;\n\n addFormResetListener(this.host, this.handleFormReset);\n\n removeDisabledFalse(this.disabled, this.host);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.value, propName: \"value\" }],\n \"Radio Option\"\n );\n }\n\n componentDidRender(): void {\n if (this.additionalFieldDisplay === \"static\") {\n const textfield = this.host.querySelector(\"ic-text-field\");\n if (!this.selected) {\n textfield && textfield.setAttribute(\"disabled\", \"\");\n } else {\n textfield && textfield.removeAttribute(\"disabled\");\n }\n }\n }\n\n @Listen(\"icChange\")\n textfieldValueHandler(event: CustomEvent<{ value: string }>): void {\n const textFieldValue = event.detail.value;\n\n if (this.selected) {\n if (textFieldValue !== \"\") {\n this.value = event.detail.value;\n this.icCheck.emit({\n value: this.value,\n });\n this.radioOptionSelect.emit({\n value: this.value,\n });\n } else {\n this.value = this.defaultRadioValue;\n this.icCheck.emit({\n value: this.defaultRadioValue,\n });\n this.radioOptionSelect.emit({\n value: this.defaultRadioValue,\n });\n }\n }\n\n event.stopImmediatePropagation();\n }\n\n /**\n * Sets focus on the radio option.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.host.shadowRoot.querySelector(\"input\")) {\n this.host.shadowRoot.querySelector(\"input\").focus();\n }\n }\n\n private handleClick = () => {\n if (!this.disabled) {\n if (this.skipFocus === false) {\n this.radioElement.focus();\n }\n this.skipFocus = false;\n\n if (this.hasAdditionalField) {\n const textfield = this.host.querySelector(\"ic-text-field\");\n this.value =\n textfield.value !== \"\" ? textfield.value : this.defaultRadioValue;\n }\n\n this.icCheck.emit({\n value: this.value,\n });\n\n this.radioOptionSelect.emit({\n value: this.value,\n });\n }\n };\n\n private swallowClick = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n private handleFormReset = (): void => {\n this.skipFocus = true;\n this.selected = this.initiallySelected;\n };\n\n render() {\n const id = `ic-radio-option-${\n this.label !== undefined ? this.label : this.value\n }-${this.groupLabel}`;\n\n return (\n <Host onClick={this.handleClick} class={{ disabled: this.disabled }}>\n <div class={{ [\"container\"]: true, [\"disabled\"]: this.disabled }}>\n <div>\n <input\n role=\"radio\"\n tabindex={this.selected ? \"0\" : \"-1\"}\n type=\"radio\"\n name={this.name}\n id={id}\n value={this.value}\n disabled={this.disabled ? true : null}\n checked={this.selected}\n ref={(el) => (this.radioElement = el)}\n ></input>\n <span class=\"checkmark\"></span>\n </div>\n <ic-typography class=\"radio-label\" variant=\"body\">\n <label htmlFor={id}>{this.label}</label>\n </ic-typography>\n </div>\n\n {this.hasAdditionalField && (\n <div\n onClick={this.swallowClick}\n class={{\n \"dynamic-container\": true,\n hidden:\n this.additionalFieldDisplay === \"dynamic\" && !this.selected,\n }}\n >\n {this.additionalFieldDisplay === \"dynamic\" && (\n <div class=\"branch-corner\"></div>\n )}\n <div>\n {this.additionalFieldDisplay === \"dynamic\" && (\n <ic-typography variant=\"caption\">\n <p class=\"dynamic-text\">{this.dynamicText}</p>\n </ic-typography>\n )}\n <div\n class={{\n \"additional-field-wrapper\":\n this.additionalFieldDisplay === \"static\",\n }}\n >\n <slot name=\"additional-field\"></slot>\n </div>\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icTabPanelCss","TabPanel","connectedCallback","this","tabPanelCreated","emit","host","disconnectedCallback","tabContext","document","querySelector","contextId","tabRemovedHandler","render","panelId","selectedTab","appearance","h","Host","class","IcThemeForegroundEnum","Light","role","hidden","undefined"],"sources":["./src/components/ic-tab-panel/ic-tab-panel.css?tag=ic-tab-panel&encapsulation=shadow","./src/components/ic-tab-panel/ic-tab-panel.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n:host(.ic-tab-panel-light) {\n color: white;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n} from \"@stencil/core\";\nimport {\n IcThemeForegroundEnum,\n IcThemeForegroundNoDefault,\n} from \"../../utils/types\";\n\n@Component({\n tag: \"ic-tab-panel\",\n styleUrl: \"ic-tab-panel.css\",\n shadow: true,\n})\nexport class TabPanel {\n @Element() host: HTMLIcTabPanelElement;\n\n /**\n * @internal The appearance of the tabs, e.g dark, or light.\n */\n @Prop() appearance?: IcThemeForegroundNoDefault = \"dark\";\n\n /**\n * @deprecated This is no longer required.\n * The context id is passed down from `ic-tab-context`\n */\n @Prop({ reflect: true }) contextId?: string = \"default\";\n\n /**\n * @internal The shared ID that links the panel and tab.\n */\n @Prop({ reflect: true }) panelId?: string;\n\n /**\n * @internal The shared ID of the currently selected tab.\n */\n @Prop() selectedTab?: string;\n\n /**\n * @internal The position of the tab panel inside the tabs array in context.\n */\n @Prop({ reflect: true }) tabPosition?: number;\n\n /**\n * @internal Emitted when a tab panel is dynamically created.\n */\n @Event() tabPanelCreated: EventEmitter<HTMLIcTabPanelElement>;\n\n /**\n * @internal Emitted when a tab panel is unmounted.\n */\n @Event() tabPanelRemoved: EventEmitter<void>;\n\n connectedCallback(): void {\n this.tabPanelCreated.emit(this.host);\n }\n\n disconnectedCallback(): void {\n const tabContext = document.querySelector(\n `ic-tab-context[context-id=${this.contextId}]`\n ) as HTMLIcTabContextElement;\n if (tabContext) {\n tabContext.tabRemovedHandler();\n }\n }\n\n render() {\n const { panelId, selectedTab, appearance } = this;\n return (\n <Host\n class={{\n [\"ic-tab-panel-light\"]: appearance === IcThemeForegroundEnum.Light,\n }}\n role=\"tabpanel\"\n hidden={\n panelId !== undefined && selectedTab !== undefined\n ? !(panelId === selectedTab)\n : true\n }\n >\n <div>\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"oGAAA,MAAMA,EAAgB,8D,MCmBTC,EAAQ,M,2IAM+B,O,eAMJ,U,6EA2B9CC,oBACEC,KAAKC,gBAAgBC,KAAKF,KAAKG,K,CAGjCC,uBACE,MAAMC,EAAaC,SAASC,cAC1B,6BAA6BP,KAAKQ,cAEpC,GAAIH,EAAY,CACdA,EAAWI,mB,EAIfC,SACE,MAAMC,QAAEA,EAAOC,YAAEA,EAAWC,WAAEA,GAAeb,KAC7C,OACEc,EAACC,EAAI,CACHC,MAAO,CACL,CAAC,sBAAuBH,IAAeI,EAAsBC,OAE/DC,KAAK,WACLC,OACET,IAAYU,WAAaT,IAAgBS,YACnCV,IAAYC,GACd,MAGNE,EAAA,WACEA,EAAA,c"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icTopNavigationCss","TopNavigation","this","hasAppIcon","hasIconButtons","hasNavigation","hasSearchSlotContent","resizeObserver","searchBar","initialiseSearchBar","slot","getSlot","el","tagName","querySelector","hideLabel","emitTopNavResized","size","event","CustomEvent","detail","dispatchEvent","menuButtonClick","showNavMenu","searchButtonMouseDownHandler","searchButtonClick","searchButtonClickHandler","toggleSearchBar","resizeObserverCallback","currSize","deviceSize","DEVICE_SIZES","L","mobileSearchBarVisible","document","activeElement","undefined","setAttribute","removeAttribute","setTimeout","focus","runResizeObserver","ResizeObserver","getCurrentDeviceSize","observe","XL","getThemeForegroundColor","watchPropHandler","newValue","oldValue","onComponentPropUndefinedChange","disconnectedCallback","disconnect","componentWillLoad","isSlotUsed","componentDidLoad","checkResizeObserver","onComponentRequiredPropUndefined","prop","appTitle","propName","componentWillRender","navBarMenuCloseHandler","menuBtn","shadowRoot","searchInputBlurHandler","ev","searchValue","value","searchValueChangeHandler","themeChangeHandler","theme","foregroundColor","mode","mobileSearchButtonEl","updateAriaLabel","hasFullWidthSearchBar","fullWidth","show","navMenuVisible","icNavigationMenuOpened","emit","body","style","height","overflow","icNavigationMenuClosed","render","hasMenuContent","status","version","searchButtonSize","S","appTitleVariant","hasTitle","mobileSearchButtonTitle","menuSize","Component","attrs","href","h","Host","class","IcThemeForegroundEnum","Dark","aligned","contentAligned","role","Object","assign","name","isEmptyString","shortAppTitle","variant","id","ref","onMouseDown","appearance","onClick","xmlns","viewBox","fill","d","menuOpen","width","tabindex","inline"],"sources":["./src/components/ic-top-navigation/ic-top-navigation.css?tag=ic-top-navigation&encapsulation=shadow","./src/components/ic-top-navigation/ic-top-navigation.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: block;\n color: var(--ic-theme-text);\n width: 100%;\n position: relative;\n}\n\n:host .top-navigation {\n background-color: var(--ic-theme-primary);\n height: max-content;\n}\n\n:host(.fullwidth-searchbar) slot[name=\"search\"]::slotted(form) {\n width: 100%;\n}\n\n:host .title-link {\n display: inline-flex;\n align-items: center;\n text-decoration: none;\n padding: var(--ic-space-xxs);\n transition: var(--ic-easing-transition-fast);\n}\n\n:host .title-link,\n:host .title-link:visited,\n:host .title-link:active,\n:host .title-link ::slotted(a),\n:host .title-link:visited ::slotted(a),\n:host .title-link:active ::slotted(a) {\n color: var(--ic-theme-text);\n text-decoration: none;\n outline: none;\n}\n\n:host .title-link:hover:not(:focus) {\n background-color: var(--ic-theme-hover);\n}\n\n:host .title-link:active:not(:focus) {\n background-color: var(--ic-theme-active);\n}\n\n:host .title-link:hover {\n border-radius: var(--ic-border-radius);\n}\n\n:host .title-link:focus,\n:host .title-link:focus-within {\n border-radius: var(--ic-border-radius);\n box-shadow: var(--ic-border-focus);\n outline: var(--ic-hc-focus-outline);\n}\n\n:host .title-link ic-typography {\n font-weight: 600;\n}\n\n:host .nav-panel-container {\n border-top: var(--ic-keyline-lighten);\n padding: 0 var(--ic-space-lg);\n margin-left: calc(-1 * var(--section-container-margin));\n margin-right: calc(-1 * var(--section-container-margin));\n display: flex;\n}\n\n:host(.dark) .nav-panel-container {\n border-top: var(--ic-keyline-darken);\n}\n\n.top-panel-container {\n display: flex;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navigation-tabs {\n margin-top: calc(-1 * var(--ic-space-1px));\n}\n\n.app-details-container {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n margin-right: var(--ic-space-md);\n}\n\n.app-icon-container {\n display: flex;\n padding-right: var(--ic-space-xs);\n}\n\n.icon-buttons-container {\n display: flex;\n margin-left: var(--ic-space-md);\n}\n\n.icon-buttons-container ::slotted(nav) {\n display: flex;\n}\n\n.title-wrap {\n overflow-wrap: break-word;\n word-wrap: break-word;\n -ms-word-break: break-all;\n word-break: break-word;\n hyphens: auto;\n}\n\n:host .app-status {\n border-radius: var(--ic-space-md);\n background-color: var(--ic-architectural-white);\n color: var(--ic-color-primary-text);\n padding: var(--ic-space-xxs) var(--ic-space-lg);\n margin-left: var(--ic-space-md);\n flex: 1 1 0;\n max-width: fit-content;\n}\n\n:host(.dark) .app-status {\n background-color: var(--ic-theme-text);\n color: var(--ic-color-white-text);\n}\n\n:host .app-version {\n border-radius: var(--ic-space-md);\n background-color: var(--ic-theme-active);\n padding: var(--ic-space-xxs) var(--ic-space-sm);\n margin-left: var(--ic-space-xs);\n flex: 1 1 0;\n max-width: fit-content;\n}\n\nslot[name=\"app-icon\"]::slotted(svg) {\n fill: var(--ic-theme-text);\n width: 2em;\n height: 2em;\n}\n\nslot[name=\"toggle-icon\"] svg {\n fill: var(--ic-theme-text);\n}\n\n.search-menu-container {\n justify-content: right;\n display: flex;\n align-items: center;\n}\n\n.menu-button-container {\n margin-left: var(--ic-space-md);\n}\n\n.menu-button-container .navigation-landmark-button-text {\n position: absolute;\n left: -10000px;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n.search-actions-container {\n display: flex;\n}\n\n.menu-buttons-slot {\n display: flex;\n flex-direction: column;\n}\n\n.navigation-landmark-text {\n position: absolute;\n width: var(--ic-space-1px);\n height: var(--ic-space-1px);\n padding: 0;\n margin: calc(-1 * var(--ic-space-1px));\n overflow: hidden;\n}\n\n.navigation-item-list {\n display: flex;\n list-style: none;\n height: 2.75rem;\n}\n\n.navigation-item-list::-webkit-scrollbar {\n display: none;\n}\n\n:host ic-section-container {\n padding-bottom: 0 !important;\n padding-top: 0 !important;\n}\n\n@media screen and (min-width: 993px) {\n .app-details-container {\n margin-right: var(--ic-space-lg);\n }\n}\n\n/* large */\n@media screen and (max-width: 1200px) {\n :host .nav-panel-container {\n padding: 0 var(--ic-space-md);\n }\n}\n\n/* medium */\n@media screen and (max-width: 992px) {\n :host .nav-panel-container,\n :host .app-status,\n :host .app-version {\n display: none;\n }\n\n :host .title-link {\n margin-right: var(--ic-space-xs);\n }\n\n .search-menu-container {\n max-width: 10rem;\n }\n\n .search-bar-container {\n display: flex;\n justify-content: center;\n align-items: center;\n border-top: var(--ic-keyline-darken);\n height: 4rem;\n padding-left: var(--ic-space-md);\n padding-right: var(--ic-space-md);\n margin-left: calc(-1 * var(--section-container-margin));\n margin-right: calc(-1 * var(--section-container-margin));\n }\n}\n\n/* x small */\n@media screen and (max-width: 576px) {\n :host .title-link {\n margin-right: var(--ic-space-xxxs);\n word-break: break-word;\n hyphens: none;\n }\n\n .top-panel-container {\n min-height: 2.5rem;\n }\n\n .searchbox-inline {\n display: none;\n }\n\n .search-bar-container {\n margin-top: 0;\n height: 3.5rem;\n padding-left: var(--ic-space-xs);\n padding-right: var(--ic-space-xs);\n }\n\n .menu-button-container {\n margin-left: var(--ic-space-sm);\n }\n\n slot[name=\"app-icon\"]::slotted(svg) {\n width: 1.5em;\n height: 1.5em;\n }\n\n slot[name=\"toggle-icon\"] svg {\n width: 1.5em;\n height: 1.5em;\n }\n}\n\n@media (forced-colors: active) {\n :host .top-navigation {\n border-bottom: var(--ic-hc-border);\n }\n\n .app-status,\n .app-version {\n border: var(--ic-hc-border);\n }\n\n slot[name=\"app-icon\"]::slotted(svg) {\n fill: currentcolor;\n }\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n h,\n State,\n Listen,\n Event,\n EventEmitter,\n Watch,\n} from \"@stencil/core\";\n\nimport {\n IcTypographyVariants,\n IcAlignment,\n IcThemeForeground,\n IcThemeForegroundEnum,\n IcTheme,\n} from \"../../utils/types\";\nimport {\n checkResizeObserver,\n DEVICE_SIZES,\n getCurrentDeviceSize,\n getThemeForegroundColor,\n getSlot,\n onComponentPropUndefinedChange,\n onComponentRequiredPropUndefined,\n isSlotUsed,\n isEmptyString,\n} from \"../../utils/helpers\";\n\n/**\n * @slot app-icon - Content will be rendered to left of app title.\n * @slot app-title - Handle routing by nesting a route in the app title.\n * @slot search - Content will be rendered in search area to left of buttons.\n * @slot toggle-icon - Icon to be displayed on the button to toggle search slot content on smaller devices\n * @slot navigation - Content will be rendered in navigation panel.\n * @slot buttons - Content will be rendered to right of search bar.\n */\n@Component({\n tag: \"ic-top-navigation\",\n styleUrl: \"ic-top-navigation.css\",\n shadow: true,\n})\nexport class TopNavigation {\n private hasAppIcon: boolean = false;\n private hasIconButtons: boolean = false;\n private hasNavigation: boolean = false;\n private hasSearchSlotContent: boolean = false;\n private mobileSearchButtonEl: HTMLIcButtonElement;\n private resizeObserver: ResizeObserver = null;\n private searchBar: HTMLIcSearchBarElement = null;\n\n @Element() el: HTMLIcTopNavigationElement;\n\n @State() deviceSize: number = DEVICE_SIZES.XL;\n @State() foregroundColor: IcThemeForeground = getThemeForegroundColor();\n @State() hasFullWidthSearchBar: boolean = false;\n @State() menuOpen: boolean = false;\n @State() mobileSearchBarVisible: boolean = false;\n @State() mobileSearchHiddenOnBlur: boolean = false;\n @State() navMenuVisible: boolean = false;\n @State() searchButtonClick: boolean = false;\n @State() searchValue: string = \"\";\n\n /**\n * The alignment of the top navigation content.\n */\n @Prop() contentAligned: IcAlignment = \"full-width\";\n /**\n * The URL to navigate to when the app title is clicked.\n */\n @Prop() href: string = \"/\";\n\n /**\n * If `true`, the flyout navigation menu on small devices will be contained by the parent element.\n */\n @Prop() inline: boolean = false;\n\n /**\n * The short title of the app to be displayed at small screen sizes in place of the app title.\n */\n @Prop() shortAppTitle: string = \"\";\n\n /**\n * The status info to be displayed.\n */\n @Prop() status: string = \"\";\n\n /**\n * The version info to be displayed.\n */\n @Prop() version: string = \"\";\n\n /**\n * The app title to be displayed. This is required, unless a slotted app title link is used.\n */\n @Prop() appTitle: string;\n @Watch(\"appTitle\")\n watchPropHandler(newValue: string, oldValue: string): void {\n //added for gatsby rehydration issue where prop is initially undefined but then changes to actual value\n //this watch can be removed once gatbsy hydration issue is resolved\n onComponentPropUndefinedChange(\n oldValue,\n newValue,\n this.initialiseSearchBar\n );\n }\n\n /**\n * @internal - Emitted when the menu is closed.\n */\n @Event() icNavigationMenuClosed: EventEmitter<void>;\n\n /**\n * @internal - Emitted when the menu is opened.\n */\n @Event() icNavigationMenuOpened: EventEmitter<void>;\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n }\n\n componentWillLoad(): void {\n this.hasAppIcon = isSlotUsed(this.el, \"app-icon\");\n this.hasNavigation = isSlotUsed(this.el, \"navigation\");\n this.hasIconButtons = isSlotUsed(this.el, \"buttons\");\n this.hasSearchSlotContent = isSlotUsed(this.el, \"search\");\n this.deviceSize = getCurrentDeviceSize();\n this.initialiseSearchBar();\n }\n\n componentDidLoad(): void {\n checkResizeObserver(this.runResizeObserver);\n !isSlotUsed(this.el, \"app-title\") &&\n onComponentRequiredPropUndefined(\n [{ prop: this.appTitle, propName: \"app-title\" }],\n \"Top Navigation\"\n );\n }\n\n componentWillRender(): void {\n this.hasNavigation = isSlotUsed(this.el, \"navigation\");\n this.hasSearchSlotContent = isSlotUsed(this.el, \"search\");\n this.hasIconButtons = isSlotUsed(this.el, \"buttons\");\n this.hasAppIcon = isSlotUsed(this.el, \"app-icon\");\n }\n\n @Listen(\"icNavigationMenuClose\", {})\n navBarMenuCloseHandler(): void {\n this.showNavMenu(false);\n const menuBtn = this.el.shadowRoot.querySelector(\n \"#menu-button\"\n ) as HTMLElement;\n menuBtn.focus();\n }\n\n @Listen(\"icSearchBarBlur\", {})\n searchInputBlurHandler(ev: CustomEvent): void {\n if (ev.detail !== null) {\n if (this.mobileSearchBarVisible && !this.searchButtonClick) {\n //don't hide if blur was triggered by click on search button - let the click handler toggle the state\n this.toggleSearchBar();\n }\n this.searchValue = ev.detail.value;\n }\n }\n\n @Listen(\"icChange\", {})\n searchValueChangeHandler(ev: CustomEvent): void {\n this.searchValue = ev.detail.value;\n }\n\n @Listen(\"themeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.foregroundColor = theme.mode;\n }\n\n private initialiseSearchBar = () => {\n if (this.hasSearchSlotContent) {\n const slot = getSlot(this.el, \"search\");\n if (slot && slot.tagName === \"IC-SEARCH-BAR\") {\n this.searchBar = slot as HTMLIcSearchBarElement;\n } else if (slot && slot.tagName === \"FORM\") {\n this.searchBar = slot.querySelector(\n \"ic-search-bar\"\n ) as HTMLIcSearchBarElement;\n }\n\n if (this.searchBar !== null) {\n this.searchBar.hideLabel = true;\n }\n }\n };\n\n private toggleSearchBar(): void {\n this.mobileSearchBarVisible = !this.mobileSearchBarVisible;\n\n if (this.searchBar !== null) {\n if (this.mobileSearchBarVisible) {\n this.mobileSearchButtonEl.updateAriaLabel(\"Hide search\");\n this.hasFullWidthSearchBar = true;\n this.searchBar.fullWidth = true;\n setTimeout(() => {\n this.searchBar.focus();\n }, 100);\n } else {\n this.mobileSearchButtonEl.updateAriaLabel(\"Show search\");\n this.hasFullWidthSearchBar = false;\n this.searchBar.fullWidth = false;\n }\n }\n }\n\n private emitTopNavResized = (size: number): void => {\n const event = new CustomEvent(\"topNavResized\", { detail: { size: size } });\n this.el.dispatchEvent(event);\n };\n\n private menuButtonClick = () => {\n this.showNavMenu(true);\n };\n\n private showNavMenu(show: boolean): void {\n this.navMenuVisible = show;\n if (show) {\n this.icNavigationMenuOpened.emit();\n document.body.style.height = \"100%\";\n document.body.style.overflow = \"hidden\";\n } else {\n this.icNavigationMenuClosed.emit();\n document.body.style.height = \"auto\";\n document.body.style.overflow = \"auto\";\n }\n }\n\n private searchButtonMouseDownHandler = () => {\n this.searchButtonClick = true;\n };\n\n private searchButtonClickHandler = () => {\n this.toggleSearchBar();\n this.searchButtonClick = false;\n };\n\n private resizeObserverCallback = (currSize: number) => {\n if (currSize !== this.deviceSize) {\n this.deviceSize = currSize;\n if (currSize > DEVICE_SIZES.L) {\n this.showNavMenu(false);\n if (this.mobileSearchBarVisible) {\n this.toggleSearchBar();\n }\n }\n this.emitTopNavResized(currSize);\n if (\n document.activeElement !== null &&\n document.activeElement !== undefined &&\n document.activeElement.tagName === \"IC-SEARCH-BAR\"\n ) {\n this.searchBar.setAttribute(\"hidden\", \"true\");\n //remove attribute again as this trigger a redraw & applies css\n this.searchBar.removeAttribute(\"hidden\");\n setTimeout(() => {\n this.searchBar.focus();\n }, 100);\n }\n }\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n const currSize = getCurrentDeviceSize();\n this.resizeObserverCallback(currSize);\n });\n\n this.resizeObserver.observe(this.el);\n };\n\n render() {\n const hasMenuContent =\n this.hasNavigation ||\n this.hasIconButtons ||\n this.status !== \"\" ||\n this.version !== \"\";\n\n const searchButtonSize =\n this.deviceSize <= DEVICE_SIZES.S ? \"default\" : \"large\";\n\n let appTitleVariant: IcTypographyVariants = \"h3\";\n\n const hasTitle = this.appTitle !== \"\" && this.appTitle !== undefined;\n\n if (this.deviceSize <= DEVICE_SIZES.L) {\n appTitleVariant = \"h4\";\n if (this.deviceSize <= DEVICE_SIZES.S) {\n appTitleVariant = \"subtitle-small\";\n }\n }\n\n const mobileSearchButtonTitle = this.mobileSearchBarVisible\n ? \"Hide search\"\n : \"Show search\";\n const menuSize = this.deviceSize <= DEVICE_SIZES.S ? \"small\" : \"default\";\n\n const Component = isSlotUsed(this.el, \"app-title\") ? \"div\" : \"a\";\n\n const attrs = Component == \"a\" && {\n href: this.href,\n };\n\n return (\n <Host\n class={{\n [\"fullwidth-searchbar\"]: this.hasFullWidthSearchBar,\n [IcThemeForegroundEnum.Dark]:\n this.foregroundColor === IcThemeForegroundEnum.Dark,\n }}\n >\n <div class=\"top-navigation\">\n <ic-section-container aligned={this.contentAligned} full-height>\n <header role=\"banner\">\n <div class=\"top-panel-container\">\n <div class=\"app-details-container\">\n {(hasTitle || isSlotUsed(this.el, \"app-title\")) && (\n <Component class=\"title-link\" {...attrs}>\n {this.hasAppIcon && (\n <div class=\"app-icon-container\" aria-hidden=\"true\">\n <slot name=\"app-icon\" />\n </div>\n )}\n {this.deviceSize <= DEVICE_SIZES.S &&\n !isEmptyString(this.shortAppTitle) ? (\n <ic-typography\n variant=\"subtitle-small\"\n aria-label={`${this.appTitle} (${this.shortAppTitle})`}\n >\n <h1>{this.shortAppTitle}</h1>\n </ic-typography>\n ) : (\n <ic-typography variant={appTitleVariant}>\n <h1 class=\"title-wrap\">\n {isSlotUsed(this.el, \"app-title\") ? (\n <slot name=\"app-title\"></slot>\n ) : (\n this.appTitle\n )}\n </h1>\n </ic-typography>\n )}\n </Component>\n )}\n {this.status !== \"\" && (\n <div class=\"app-status\">\n <ic-typography\n aria-label=\"app tag\"\n variant=\"label-uppercase\"\n class=\"app-status-text\"\n >\n {this.status}\n </ic-typography>\n </div>\n )}\n {this.version !== \"\" && (\n <div class=\"app-version\">\n <ic-typography\n variant=\"label\"\n class=\"app-version-text\"\n aria-label=\"app version\"\n >\n {this.version}\n </ic-typography>\n </div>\n )}\n </div>\n\n {(this.hasSearchSlotContent || hasMenuContent) && (\n <div class=\"search-menu-container\">\n <div class=\"search-actions-container\">\n {this.deviceSize > DEVICE_SIZES.L && (\n <slot name=\"search\"></slot>\n )}\n\n {this.hasSearchSlotContent &&\n this.deviceSize <= DEVICE_SIZES.L && (\n <ic-button\n id=\"search-toggle-button\"\n ref={(el) => (this.mobileSearchButtonEl = el)}\n onMouseDown={this.searchButtonMouseDownHandler}\n variant=\"icon\"\n size={searchButtonSize}\n aria-label={mobileSearchButtonTitle}\n appearance={this.foregroundColor}\n onClick={this.searchButtonClickHandler}\n >\n <slot name=\"toggle-icon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"#ffffff\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" />\n </svg>\n </slot>\n </ic-button>\n )}\n\n {this.hasIconButtons && this.deviceSize > DEVICE_SIZES.L && (\n <div class=\"icon-buttons-container\">\n <slot name=\"buttons\"></slot>\n </div>\n )}\n {hasMenuContent && this.deviceSize <= DEVICE_SIZES.L && (\n <div class=\"menu-button-container\">\n <span\n id=\"navigation-landmark-button-text\"\n class=\"navigation-landmark-button-text\"\n aria-hidden=\"true\"\n >\n Main navigation button\n </span>\n <nav\n aria-labelledby=\"navigation-landmark-button-text\"\n aria-hidden={this.navMenuVisible ? \"true\" : \"false\"}\n >\n <ic-button\n id=\"menu-button\"\n appearance={this.foregroundColor}\n variant=\"secondary\"\n aria-expanded={this.menuOpen ? \"true\" : \"false\"}\n aria-haspopup=\"true\"\n aria-label={`Open ${\n this.hasNavigation ? \"navigation\" : \"app\"\n } menu`}\n size={menuSize}\n onClick={this.menuButtonClick}\n >\n Menu\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"#ffffff\"\n slot=\"icon\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\" />\n </svg>\n </ic-button>\n </nav>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n\n {this.mobileSearchBarVisible && (\n <div class=\"search-bar-container\">\n <slot name=\"search\"></slot>\n </div>\n )}\n\n {this.hasNavigation && this.deviceSize > DEVICE_SIZES.L && (\n <div class=\"navigation-tabs\">\n <span\n id=\"navigation-landmark-text\"\n class=\"navigation-landmark-text\"\n aria-hidden=\"true\"\n >\n Main navigation\n </span>\n <nav\n aria-labelledby=\"navigation-landmark-text\"\n class=\"nav-panel-container\"\n >\n <ic-horizontal-scroll appearance={this.foregroundColor}>\n <ul class=\"navigation-item-list\" tabindex=\"-1\">\n <slot name=\"navigation\"></slot>\n </ul>\n </ic-horizontal-scroll>\n </nav>\n </div>\n )}\n </header>\n </ic-section-container>\n </div>\n {this.navMenuVisible && (\n <ic-navigation-menu\n version={this.version}\n status={this.status}\n class={{\n [\"inline\"]: this.inline,\n }}\n >\n <div class=\"menu-buttons-slot\" slot=\"buttons\">\n <slot name=\"buttons\"></slot>\n </div>\n <ul slot=\"navigation\">\n <slot name=\"navigation\"></slot>\n </ul>\n </ic-navigation-menu>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"gMAAA,MAAMA,EAAqB,u/N,MC6CdC,EAAa,M,uJAChBC,KAAAC,WAAsB,MACtBD,KAAAE,eAA0B,MAC1BF,KAAAG,cAAyB,MACzBH,KAAAI,qBAAgC,MAEhCJ,KAAAK,eAAiC,KACjCL,KAAAM,UAAoC,KAkIpCN,KAAAO,oBAAsB,KAC5B,GAAIP,KAAKI,qBAAsB,CAC7B,MAAMI,EAAOC,EAAQT,KAAKU,GAAI,UAC9B,GAAIF,GAAQA,EAAKG,UAAY,gBAAiB,CAC5CX,KAAKM,UAAYE,C,MACZ,GAAIA,GAAQA,EAAKG,UAAY,OAAQ,CAC1CX,KAAKM,UAAYE,EAAKI,cACpB,gB,CAIJ,GAAIZ,KAAKM,YAAc,KAAM,CAC3BN,KAAKM,UAAUO,UAAY,I,IAwBzBb,KAAAc,kBAAqBC,IAC3B,MAAMC,EAAQ,IAAIC,YAAY,gBAAiB,CAAEC,OAAQ,CAAEH,KAAMA,KACjEf,KAAKU,GAAGS,cAAcH,EAAM,EAGtBhB,KAAAoB,gBAAkB,KACxBpB,KAAKqB,YAAY,KAAK,EAgBhBrB,KAAAsB,6BAA+B,KACrCtB,KAAKuB,kBAAoB,IAAI,EAGvBvB,KAAAwB,yBAA2B,KACjCxB,KAAKyB,kBACLzB,KAAKuB,kBAAoB,KAAK,EAGxBvB,KAAA0B,uBAA0BC,IAChC,GAAIA,IAAa3B,KAAK4B,WAAY,CAChC5B,KAAK4B,WAAaD,EAClB,GAAIA,EAAWE,EAAaC,EAAG,CAC7B9B,KAAKqB,YAAY,OACjB,GAAIrB,KAAK+B,uBAAwB,CAC/B/B,KAAKyB,iB,EAGTzB,KAAKc,kBAAkBa,GACvB,GACEK,SAASC,gBAAkB,MAC3BD,SAASC,gBAAkBC,WAC3BF,SAASC,cAActB,UAAY,gBACnC,CACAX,KAAKM,UAAU6B,aAAa,SAAU,QAEtCnC,KAAKM,UAAU8B,gBAAgB,UAC/BC,YAAW,KACTrC,KAAKM,UAAUgC,OAAO,GACrB,I,IAKDtC,KAAAuC,kBAAoB,KAC1BvC,KAAKK,eAAiB,IAAImC,gBAAe,KACvC,MAAMb,EAAWc,IACjBzC,KAAK0B,uBAAuBC,EAAS,IAGvC3B,KAAKK,eAAeqC,QAAQ1C,KAAKU,GAAG,E,gBAhORmB,EAAac,G,qBACGC,I,2BACJ,M,cACb,M,4BACc,M,8BACE,M,oBACV,M,uBACG,M,iBACP,G,oBAKO,a,UAIf,I,YAKG,M,mBAKM,G,YAKP,G,aAKC,G,wBAO1BC,iBAAiBC,EAAkBC,GAGjCC,EACED,EACAD,EACA9C,KAAKO,oB,CAcT0C,uBACE,GAAIjD,KAAKK,iBAAmB,KAAM,CAChCL,KAAKK,eAAe6C,Y,EAIxBC,oBACEnD,KAAKC,WAAamD,EAAWpD,KAAKU,GAAI,YACtCV,KAAKG,cAAgBiD,EAAWpD,KAAKU,GAAI,cACzCV,KAAKE,eAAiBkD,EAAWpD,KAAKU,GAAI,WAC1CV,KAAKI,qBAAuBgD,EAAWpD,KAAKU,GAAI,UAChDV,KAAK4B,WAAaa,IAClBzC,KAAKO,qB,CAGP8C,mBACEC,EAAoBtD,KAAKuC,oBACxBa,EAAWpD,KAAKU,GAAI,cACnB6C,EACE,CAAC,CAAEC,KAAMxD,KAAKyD,SAAUC,SAAU,cAClC,iB,CAINC,sBACE3D,KAAKG,cAAgBiD,EAAWpD,KAAKU,GAAI,cACzCV,KAAKI,qBAAuBgD,EAAWpD,KAAKU,GAAI,UAChDV,KAAKE,eAAiBkD,EAAWpD,KAAKU,GAAI,WAC1CV,KAAKC,WAAamD,EAAWpD,KAAKU,GAAI,W,CAIxCkD,yBACE5D,KAAKqB,YAAY,OACjB,MAAMwC,EAAU7D,KAAKU,GAAGoD,WAAWlD,cACjC,gBAEFiD,EAAQvB,O,CAIVyB,uBAAuBC,GACrB,GAAIA,EAAG9C,SAAW,KAAM,CACtB,GAAIlB,KAAK+B,yBAA2B/B,KAAKuB,kBAAmB,CAE1DvB,KAAKyB,iB,CAEPzB,KAAKiE,YAAcD,EAAG9C,OAAOgD,K,EAKjCC,yBAAyBH,GACvBhE,KAAKiE,YAAcD,EAAG9C,OAAOgD,K,CAI/BE,mBAAmBJ,GACjB,MAAMK,EAAiBL,EAAG9C,OAC1BlB,KAAKsE,gBAAkBD,EAAME,I,CAoBvB9C,kBACNzB,KAAK+B,wBAA0B/B,KAAK+B,uBAEpC,GAAI/B,KAAKM,YAAc,KAAM,CAC3B,GAAIN,KAAK+B,uBAAwB,CAC/B/B,KAAKwE,qBAAqBC,gBAAgB,eAC1CzE,KAAK0E,sBAAwB,KAC7B1E,KAAKM,UAAUqE,UAAY,KAC3BtC,YAAW,KACTrC,KAAKM,UAAUgC,OAAO,GACrB,I,KACE,CACLtC,KAAKwE,qBAAqBC,gBAAgB,eAC1CzE,KAAK0E,sBAAwB,MAC7B1E,KAAKM,UAAUqE,UAAY,K,GAczBtD,YAAYuD,GAClB5E,KAAK6E,eAAiBD,EACtB,GAAIA,EAAM,CACR5E,KAAK8E,uBAAuBC,OAC5B/C,SAASgD,KAAKC,MAAMC,OAAS,OAC7BlD,SAASgD,KAAKC,MAAME,SAAW,Q,KAC1B,CACLnF,KAAKoF,uBAAuBL,OAC5B/C,SAASgD,KAAKC,MAAMC,OAAS,OAC7BlD,SAASgD,KAAKC,MAAME,SAAW,M,EA+CnCE,SACE,MAAMC,EACJtF,KAAKG,eACLH,KAAKE,gBACLF,KAAKuF,SAAW,IAChBvF,KAAKwF,UAAY,GAEnB,MAAMC,EACJzF,KAAK4B,YAAcC,EAAa6D,EAAI,UAAY,QAElD,IAAIC,EAAwC,KAE5C,MAAMC,EAAW5F,KAAKyD,WAAa,IAAMzD,KAAKyD,WAAavB,UAE3D,GAAIlC,KAAK4B,YAAcC,EAAaC,EAAG,CACrC6D,EAAkB,KAClB,GAAI3F,KAAK4B,YAAcC,EAAa6D,EAAG,CACrCC,EAAkB,gB,EAItB,MAAME,EAA0B7F,KAAK+B,uBACjC,cACA,cACJ,MAAM+D,EAAW9F,KAAK4B,YAAcC,EAAa6D,EAAI,QAAU,UAE/D,MAAMK,EAAY3C,EAAWpD,KAAKU,GAAI,aAAe,MAAQ,IAE7D,MAAMsF,EAAQD,GAAa,KAAO,CAChCE,KAAMjG,KAAKiG,MAGb,OACEC,EAACC,EAAI,CACHC,MAAO,CACL,CAAC,uBAAwBpG,KAAK0E,sBAC9B,CAAC2B,EAAsBC,MACrBtG,KAAKsE,kBAAoB+B,EAAsBC,OAGnDJ,EAAA,OAAKE,MAAM,kBACTF,EAAA,wBAAsBK,QAASvG,KAAKwG,eAAc,oBAChDN,EAAA,UAAQO,KAAK,UACXP,EAAA,OAAKE,MAAM,uBACTF,EAAA,OAAKE,MAAM,0BACPR,GAAYxC,EAAWpD,KAAKU,GAAI,eAChCwF,EAACH,EAASW,OAAAC,OAAA,CAACP,MAAM,cAAiBJ,GAC/BhG,KAAKC,YACJiG,EAAA,OAAKE,MAAM,qBAAoB,cAAa,QAC1CF,EAAA,QAAMU,KAAK,cAGd5G,KAAK4B,YAAcC,EAAa6D,IAChCmB,EAAc7G,KAAK8G,eAClBZ,EAAA,iBACEa,QAAQ,iBAAgB,aACZ,GAAG/G,KAAKyD,aAAazD,KAAK8G,kBAEtCZ,EAAA,UAAKlG,KAAK8G,gBAGZZ,EAAA,iBAAea,QAASpB,GACtBO,EAAA,MAAIE,MAAM,cACPhD,EAAWpD,KAAKU,GAAI,aACnBwF,EAAA,QAAMU,KAAK,cAEX5G,KAAa,YAOxBA,KAAKuF,SAAW,IACfW,EAAA,OAAKE,MAAM,cACTF,EAAA,8BACa,UACXa,QAAQ,kBACRX,MAAM,mBAELpG,KAAKuF,SAIXvF,KAAKwF,UAAY,IAChBU,EAAA,OAAKE,MAAM,eACTF,EAAA,iBACEa,QAAQ,QACRX,MAAM,mBAAkB,aACb,eAEVpG,KAAKwF,YAMZxF,KAAKI,sBAAwBkF,IAC7BY,EAAA,OAAKE,MAAM,yBACTF,EAAA,OAAKE,MAAM,4BACRpG,KAAK4B,WAAaC,EAAaC,GAC9BoE,EAAA,QAAMU,KAAK,WAGZ5G,KAAKI,sBACJJ,KAAK4B,YAAcC,EAAaC,GAC9BoE,EAAA,aACEc,GAAG,uBACHC,IAAMvG,GAAQV,KAAKwE,qBAAuB9D,EAC1CwG,YAAalH,KAAKsB,6BAClByF,QAAQ,OACRhG,KAAM0E,EAAgB,aACVI,EACZsB,WAAYnH,KAAKsE,gBACjB8C,QAASpH,KAAKwB,0BAEd0E,EAAA,QAAMU,KAAK,eACTV,EAAA,OACEmB,MAAM,6BACNC,QAAQ,YACRC,KAAK,WAELrB,EAAA,QAAMsB,EAAE,kBAAkBD,KAAK,SAC/BrB,EAAA,QAAMsB,EAAE,kPAMjBxH,KAAKE,gBAAkBF,KAAK4B,WAAaC,EAAaC,GACrDoE,EAAA,OAAKE,MAAM,0BACTF,EAAA,QAAMU,KAAK,aAGdtB,GAAkBtF,KAAK4B,YAAcC,EAAaC,GACjDoE,EAAA,OAAKE,MAAM,yBACTF,EAAA,QACEc,GAAG,kCACHZ,MAAM,kCAAiC,cAC3B,QAAM,0BAIpBF,EAAA,yBACkB,kCAAiC,cACpClG,KAAK6E,eAAiB,OAAS,SAE5CqB,EAAA,aACEc,GAAG,cACHG,WAAYnH,KAAKsE,gBACjByC,QAAQ,YAAW,gBACJ/G,KAAKyH,SAAW,OAAS,QAAO,gBACjC,OAAM,aACR,QACVzH,KAAKG,cAAgB,aAAe,aAEtCY,KAAM+E,EACNsB,QAASpH,KAAKoB,iBAAe,OAG7B8E,EAAA,OACEmB,MAAM,6BACNnC,OAAO,OACPoC,QAAQ,YACRI,MAAM,OACNH,KAAK,UACL/G,KAAK,QAEL0F,EAAA,QAAMsB,EAAE,kBAAkBD,KAAK,SAC/BrB,EAAA,QAAMsB,EAAE,yDAWzBxH,KAAK+B,wBACJmE,EAAA,OAAKE,MAAM,wBACTF,EAAA,QAAMU,KAAK,YAId5G,KAAKG,eAAiBH,KAAK4B,WAAaC,EAAaC,GACpDoE,EAAA,OAAKE,MAAM,mBACTF,EAAA,QACEc,GAAG,2BACHZ,MAAM,2BAA0B,cACpB,QAAM,mBAIpBF,EAAA,yBACkB,2BAChBE,MAAM,uBAENF,EAAA,wBAAsBiB,WAAYnH,KAAKsE,iBACrC4B,EAAA,MAAIE,MAAM,uBAAuBuB,SAAS,MACxCzB,EAAA,QAAMU,KAAK,sBAS1B5G,KAAK6E,gBACJqB,EAAA,sBACEV,QAASxF,KAAKwF,QACdD,OAAQvF,KAAKuF,OACba,MAAO,CACL,CAAC,UAAWpG,KAAK4H,SAGnB1B,EAAA,OAAKE,MAAM,oBAAoB5F,KAAK,WAClC0F,EAAA,QAAMU,KAAK,aAEbV,EAAA,MAAI1F,KAAK,cACP0F,EAAA,QAAMU,KAAK,iB"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icPaginationCss","Pagination","this","handleClickFirst","currentPage","icPageChange","emit","value","handleClickPrevious","handleClickNext","handleClickLast","pages","firstButton","h","id","disableTooltip","appearance","onClick","class","disabled","variant","innerHTML","paginationFirstLast","previousButton","paginationNextPrevious","nextButton","lastButton","renderStartEllipsis","type","renderEndEllipsis","renderStartItems","startItems","map","page","selected","renderEndItems","endItems","renderMiddleItems","midItems","defaultPage","watchNumberPagesHandler","watchPageChangeHandler","startEllipsis","endEllipsis","startItemCount","endStart","midStart","midEnd","boundaryCount","adjacentCount","i","push","numItems","componentWillLoad","removeDisabledFalse","el","componentDidLoad","onComponentRequiredPropUndefined","prop","propName","paginationItemClickHandler","ev","detail","async","console","error","render","hideCurrentPage","hideFirstAndLastPageButton","label","Host","role"],"sources":["./src/components/ic-pagination/ic-pagination.css?tag=ic-pagination&encapsulation=shadow","./src/components/ic-pagination/ic-pagination.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n justify-content: center;\n}\n\nnav {\n width: 100%;\n display: flex;\n flex-flow: row wrap;\n justify-content: flex-start;\n align-items: center;\n}\n\nic-button {\n cursor: pointer;\n}\n\nic-button.next-previous {\n --icon-width: var(--ic-space-xs);\n --icon-height: calc(var(--ic-space-xs) + var(--ic-space-xxxs));\n\n padding: 0 var(--ic-space-xxs) 0 var(--ic-space-xxxs);\n}\n\nic-button.first-last {\n --icon-width: calc(var(--ic-space-sm) + var(--ic-space-xxxs));\n --icon-height: calc(var(--ic-space-xs) + var(--ic-space-xxxs));\n}\n\n.disabled {\n color: var(--ic-architectural-200);\n pointer-events: none;\n cursor: none;\n user-select: none;\n}\n\n.hide-current-page {\n display: none;\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n h,\n Listen,\n State,\n Watch,\n Event,\n EventEmitter,\n Method,\n} from \"@stencil/core\";\nimport paginationNextPrevious from \"../../assets/pagination-next-previous.svg\";\nimport paginationFirstLast from \"../../assets/pagination-first-last.svg\";\nimport { IcThemeForeground } from \"../../utils/types\";\nimport { IcPaginationTypes, IcChangeEventDetail } from \"./ic-pagination.types\";\nimport {\n onComponentRequiredPropUndefined,\n removeDisabledFalse,\n} from \"../../utils/helpers\";\n\n@Component({\n tag: \"ic-pagination\",\n styleUrl: \"ic-pagination.css\",\n shadow: true,\n})\nexport class Pagination {\n @Element() el: HTMLIcPaginationElement;\n\n @State() endEllipsis: boolean = false;\n @State() endItems: number[] = [];\n @State() midItems: number[] = [];\n @State() startEllipsis: boolean = false;\n @State() startItems: number[] = [];\n\n /**\n * The number of pages displayed adjacent to the current page when using 'complex' type pagination. Accepted values are 0, 1 & 2.\n */\n @Prop({ mutable: true }) adjacentCount: number = 1;\n\n /**\n * The appearance of the pagination, e.g. dark, light or the default.\n */\n @Prop() appearance: IcThemeForeground = \"default\";\n\n /**\n * The number of pages displayed as boundary items to the current page when using 'complex' type pagination. Accepted values are 0, 1 & 2.\n */\n @Prop({ mutable: true }) boundaryCount: number = 1;\n\n /**\n * The default page to display.\n */\n @Prop() defaultPage: number = 1;\n\n /**\n * If `true`, the pagination will not allow interaction.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * If `true`, the current page of the simple pagination will not be displayed.\n */\n @Prop() hideCurrentPage: boolean = false;\n\n /**\n * If `true`, the first and last page buttons will not be displayed.\n */\n @Prop() hideFirstAndLastPageButton: boolean = false;\n\n /**\n * The label for the pagination item (applicable when simple pagination is being used).\n */\n @Prop() label: string = \"Page\";\n\n /**\n * The total number of pages.\n */\n @Prop() pages!: number;\n\n @Watch(\"pages\")\n watchNumberPagesHandler(): void {\n this.watchPageChangeHandler();\n }\n\n /**\n * The type of pagination to be used.\n */\n @Prop() type: IcPaginationTypes = \"simple\";\n\n /**\n * The current page displayed by the pagination.\n */\n @Prop({ mutable: true }) currentPage: number = this.defaultPage;\n\n @Watch(\"currentPage\")\n watchPageChangeHandler(): void {\n if (this.type === \"simple\") {\n return;\n }\n\n this.startEllipsis = false;\n this.endEllipsis = false;\n this.startItems = [];\n this.endItems = [];\n this.midItems = [];\n\n const startItems = [];\n let startItemCount = 0;\n const endItems = [];\n let endStart = this.pages;\n const midItems = [];\n let midStart;\n let midEnd;\n let startEllipsis = false;\n let endEllipsis = false;\n\n if (this.pages <= this.boundaryCount * 2 + this.adjacentCount * 2 + 3) {\n this.startEllipsis = false;\n this.endEllipsis = false;\n for (let i = 1; i <= this.pages; i++) {\n startItems.push(i);\n }\n this.startItems = startItems;\n return;\n }\n\n startItemCount = this.boundaryCount === 0 ? 1 : this.boundaryCount;\n endStart =\n this.boundaryCount === 0\n ? this.pages\n : this.pages - this.boundaryCount + 1;\n\n if (this.currentPage <= this.adjacentCount + this.boundaryCount + 2) {\n startEllipsis = false;\n endEllipsis = true;\n\n let numItems = 2 * this.adjacentCount + 1;\n if (this.boundaryCount === 0) {\n numItems--;\n }\n midStart = startItemCount + 1;\n midEnd = midStart + numItems;\n } else {\n startEllipsis = true;\n if (\n this.currentPage >\n this.pages - (this.adjacentCount + this.boundaryCount + 2)\n ) {\n let numItems = 2 * this.adjacentCount + 1;\n if (this.boundaryCount === 0) {\n numItems--;\n }\n midEnd =\n this.boundaryCount === 0\n ? this.pages - 1\n : this.pages - this.boundaryCount;\n midStart = midEnd - numItems;\n } else {\n endEllipsis = true;\n midStart = this.currentPage - this.adjacentCount;\n midEnd = this.currentPage + this.adjacentCount;\n }\n }\n\n //create array of start items\n if (\n this.boundaryCount > 0 ||\n (this.boundaryCount === 0 && startEllipsis === false)\n ) {\n for (let i = 1; i <= startItemCount; i++) {\n startItems.push(i);\n }\n }\n\n //create array of end items\n if (\n this.boundaryCount > 0 ||\n (this.boundaryCount === 0 && endEllipsis === false)\n ) {\n for (let i = endStart; i <= this.pages; i++) {\n endItems.push(i);\n }\n }\n\n //create array of mid items\n for (let i = midStart; i <= midEnd; i++) {\n midItems.push(i);\n }\n\n this.startEllipsis = startEllipsis;\n this.endEllipsis = endEllipsis;\n this.startItems = startItems;\n this.endItems = endItems;\n this.midItems = midItems;\n }\n\n /**\n * Emitted when a page is selected.\n */\n @Event() icPageChange: EventEmitter<IcChangeEventDetail>;\n\n componentWillLoad(): void {\n this.watchPageChangeHandler();\n if (this.boundaryCount > 2) {\n this.boundaryCount = 2;\n }\n if (this.adjacentCount > 2) {\n this.adjacentCount = 2;\n }\n\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.pages, propName: \"pages\" }],\n \"Pagination\"\n );\n }\n\n @Listen(\"paginationItemClick\")\n paginationItemClickHandler(ev: CustomEvent): void {\n const page = ev.detail.page;\n this.currentPage = page;\n this.icPageChange.emit({ value: this.currentPage });\n }\n\n /**\n * Sets the currently displayed page.\n */\n @Method()\n async setCurrentPage(page: number): Promise<void> {\n if (typeof page === \"number\" && page > 0 && page <= this.pages) {\n this.currentPage = page;\n } else {\n console.error(\n \"Current page must be a number greater than zero but less than or equal to the total number of pages\"\n );\n }\n }\n\n private handleClickFirst = () => {\n this.currentPage = 1;\n this.icPageChange.emit({ value: this.currentPage });\n };\n\n private handleClickPrevious = (): void => {\n this.currentPage--;\n this.icPageChange.emit({ value: this.currentPage });\n };\n\n private handleClickNext = (): void => {\n this.currentPage++;\n this.icPageChange.emit({ value: this.currentPage });\n };\n\n private handleClickLast = (): void => {\n this.currentPage = this.pages;\n this.icPageChange.emit({ value: this.currentPage });\n };\n\n // button rendering abstracted from component render methods for clarity\n private firstButton = () => {\n return (\n <ic-button\n id=\"first-page-button\"\n aria-label=\"Go to first page\"\n disableTooltip={true}\n appearance={this.appearance}\n onClick={this.handleClickFirst}\n class=\"page-button first-last\"\n disabled={this.currentPage === 1 || this.disabled}\n variant=\"icon\"\n innerHTML={paginationFirstLast}\n />\n );\n };\n\n private previousButton = () => {\n return (\n <ic-button\n id=\"previous-page-button\"\n aria-label=\"Go to previous page\"\n disableTooltip={true}\n appearance={this.appearance}\n onClick={this.handleClickPrevious}\n class=\"page-button next-previous flip\"\n disabled={this.currentPage === 1 || this.disabled}\n variant=\"icon\"\n innerHTML={paginationNextPrevious}\n />\n );\n };\n\n private nextButton = () => {\n return (\n <ic-button\n id=\"next-page-button\"\n aria-label=\"Go to next page\"\n disableTooltip={true}\n appearance={this.appearance}\n onClick={this.handleClickNext}\n class=\"page-button next-previous\"\n disabled={this.currentPage === this.pages || this.disabled}\n variant=\"icon\"\n innerHTML={paginationNextPrevious}\n />\n );\n };\n\n private lastButton = () => {\n return (\n <ic-button\n id=\"last-page-button\"\n aria-label=\"Go to last page\"\n disableTooltip={true}\n appearance={this.appearance}\n onClick={this.handleClickLast}\n class=\"page-button first-last flip\"\n disabled={this.currentPage === this.pages || this.disabled}\n variant=\"icon\"\n innerHTML={paginationFirstLast}\n />\n );\n };\n\n private renderStartEllipsis = () => {\n return (\n <ic-pagination-item\n appearance={this.appearance}\n type=\"ellipsis\"\n id=\"start-ellipsis\"\n disabled={this.disabled}\n />\n );\n };\n\n private renderEndEllipsis = () => {\n return (\n <ic-pagination-item\n appearance={this.appearance}\n type=\"ellipsis\"\n id=\"end-ellipsis\"\n disabled={this.disabled}\n />\n );\n };\n\n private renderStartItems = () => {\n return this.startItems.map((page: number) => {\n return (\n <ic-pagination-item\n appearance={this.appearance}\n selected={page === this.currentPage}\n id={`pagination-item-${page}`}\n type=\"page\"\n page={page}\n disabled={this.disabled}\n />\n );\n });\n };\n\n private renderEndItems = () => {\n return this.endItems.map((page: number) => {\n return (\n <ic-pagination-item\n appearance={this.appearance}\n selected={page === this.currentPage}\n id={`pagination-item-${page}`}\n type=\"page\"\n page={page}\n disabled={this.disabled}\n />\n );\n });\n };\n\n private renderMiddleItems = () => {\n return this.midItems.map((page: number) => {\n return (\n <ic-pagination-item\n appearance={this.appearance}\n selected={page === this.currentPage}\n id={`pagination-item-${page}`}\n type=\"page\"\n page={page}\n disabled={this.disabled}\n />\n );\n });\n };\n\n render() {\n const {\n type,\n pages,\n currentPage,\n hideCurrentPage,\n disabled,\n hideFirstAndLastPageButton,\n label,\n } = this;\n\n return (\n <Host>\n {type === \"simple\" && (\n <nav\n class={{\n [\"disabled\"]: disabled,\n }}\n role=\"navigation\"\n aria-label=\"Pagination Navigation\"\n >\n {hideFirstAndLastPageButton ? null : this.firstButton()}\n {this.previousButton()}\n <ic-pagination-item\n pages={pages}\n appearance={this.appearance}\n type=\"simple-current\"\n page={currentPage}\n label={label}\n class={{ [\"hide-current-page\"]: hideCurrentPage }}\n />\n {this.nextButton()}\n {hideFirstAndLastPageButton ? null : this.lastButton()}\n </nav>\n )}\n {type === \"complex\" && (\n <nav\n class={{\n [\"disabled\"]: disabled,\n }}\n role=\"navigation\"\n aria-label=\"Pagination Navigation\"\n >\n {hideFirstAndLastPageButton ? null : this.firstButton()}\n {this.previousButton()}\n {this.renderStartItems()}\n {this.startEllipsis && this.renderStartEllipsis()}\n {this.renderMiddleItems()}\n {this.endEllipsis && this.renderEndEllipsis()}\n {this.renderEndItems()}\n {this.nextButton()}\n {hideFirstAndLastPageButton ? null : this.lastButton()}\n </nav>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icSectionContainerCss","SectionContainer","render","aligned","fullHeight","this","h","Host","class"],"sources":["./src/components/ic-section-container/ic-section-container.css?tag=ic-section-container&encapsulation=shadow","./src/components/ic-section-container/ic-section-container.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n@media only screen and (max-width: 576px) {\n :host {\n --section-container-margin: var(--ic-space-xs);\n --section-container-max-width: var(--ic-breakpoint-sm);\n }\n}\n\n@media only screen and (min-width: 577px) {\n :host {\n --section-container-margin: var(--ic-space-md);\n --section-container-max-width: var(--ic-breakpoint-md);\n }\n}\n\n@media only screen and (min-width: 769px) {\n :host {\n --section-container-margin: var(--ic-space-md);\n --section-container-max-width: var(--ic-breakpoint-lg);\n }\n}\n\n@media only screen and (min-width: 993px) {\n :host {\n --section-container-margin: var(--ic-space-md);\n --section-container-max-width: var(--ic-breakpoint-xl);\n }\n}\n\n@media only screen and (min-width: 1201px) {\n :host {\n --section-container-margin: var(--ic-space-lg);\n --section-container-max-width: var(--ic-breakpoint-xl);\n }\n}\n\n:host {\n display: block;\n padding-top: var(--ic-space-md);\n padding-bottom: var(--ic-space-md);\n box-sizing: border-box;\n}\n\n:host(.aligned-center) {\n max-width: var(--section-container-max-width);\n margin-left: auto;\n margin-right: auto;\n padding-left: var(--section-container-margin);\n padding-right: var(--section-container-margin);\n}\n\n:host(.aligned-left) {\n max-width: var(--section-container-max-width);\n margin-left: var(--section-container-margin);\n margin-right: auto;\n padding-right: var(--section-container-margin);\n}\n\n:host(.aligned-full-width) {\n margin-left: var(--section-container-margin);\n margin-right: var(--section-container-margin);\n}\n\n:host(.vertical-padding) {\n padding-top: var(--ic-space-md);\n padding-bottom: var(--ic-space-md);\n}\n\n:host(.no-vertical-padding) {\n padding-top: 0;\n padding-bottom: 0;\n}\n","import { Component, Prop, Host, h } from \"@stencil/core\";\nimport { IcAlignment } from \"../../utils/types\";\n\n@Component({\n tag: \"ic-section-container\",\n styleUrl: \"ic-section-container.css\",\n shadow: true,\n})\nexport class SectionContainer {\n /**\n * The alignment of the container.\n */\n @Prop() aligned?: IcAlignment = \"left\";\n\n /**\n * If `true`, the standard vertical padding from the container will be removed.\n */\n @Prop() fullHeight?: boolean = false;\n\n render() {\n const { aligned, fullHeight } = this;\n return (\n <Host\n class={{\n [\"aligned-left\"]: aligned === \"left\",\n [\"aligned-center\"]: aligned === \"center\",\n [\"aligned-full-width\"]: aligned === \"full-width\",\n [\"no-vertical-padding\"]: fullHeight,\n }}\n >\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAwB,kzH,MCQjBC,EAAgB,M,sCAIK,O,gBAKD,K,CAE/BC,SACE,MAAMC,QAAEA,EAAOC,WAAEA,GAAeC,KAChC,OACEC,EAACC,EAAI,CACHC,MAAO,CACL,CAAC,gBAAiBL,IAAY,OAC9B,CAAC,kBAAmBA,IAAY,SAChC,CAAC,sBAAuBA,IAAY,aACpC,CAAC,uBAAwBC,IAG3BE,EAAA,a"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icInputLabelCss","InputLabel","componentDidLoad","onComponentRequiredPropUndefined","prop","this","label","propName","render","disabled","readonly","required","helperText","error","dark","labelText","labelContent","h","htmlFor","for","id","getInputHelperTextID","Host","class","variant","icInputValidationCss","icon","IcInformationStatus","Warning","warningIcon","Error","errorIcon","Success","successIcon","InputValidation","message","displayIcon","status","getInputValidationTextID","fullWidth","innerHTML","ariaLiveMode","name"],"sources":["./src/components/ic-input-label/ic-input-label.css?tag=ic-input-label","./src/components/ic-input-label/ic-input-label.tsx","./src/components/ic-input-validation/ic-input-validation.css?tag=ic-input-validation","./src/components/ic-input-validation/ic-input-validation.tsx"],"sourcesContent":["ic-input-label {\n margin-bottom: var(--ic-space-xs);\n}\n\nic-input-label.with-helper {\n margin-bottom: var(--ic-space-xxxs);\n}\n\nic-input-label.readonly {\n color: var(--ic-color-tertiary-text);\n}\n\nic-input-label .helpertext {\n margin-top: var(--ic-space-xxxs);\n}\n\nic-input-label .helpertext-normal {\n color: var(--ic-color-secondary-text);\n}\n\nic-input-label .helpertext-readonly {\n color: var(--ic-color-tertiary-text);\n}\n\nic-input-label .readonly-label {\n color: var(--ic-color-secondary-text);\n}\n\nic-input-label .error-label {\n color: var(--ic-status-error);\n}\n\nic-input-label .dark {\n color: var(--ic-architectural-white);\n}\n","import { Component, Host, Prop, h } from \"@stencil/core\";\n\nimport {\n getInputHelperTextID,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\n\n@Component({\n tag: \"ic-input-label\",\n styleUrl: \"./ic-input-label.css\",\n})\nexport class InputLabel {\n /**\n * If `true`, the dark variant of the input label will be displayed.\n */\n @Prop() dark?: boolean = false;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * If `true`, the input label will display with error styling.\n */\n @Prop() error?: boolean = false;\n\n /**\n * The ID of the form element the label is bound to.\n */\n @Prop() for: string;\n\n /**\n * The helper text that will be displayed.\n */\n @Prop() helperText: string = \"\";\n\n /**\n * The text content of the label.\n */\n @Prop() label!: string;\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly: boolean = false;\n\n /**\n * If `true`, the input label will require a value.\n */\n @Prop() required: boolean = false;\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Input Label\"\n );\n }\n\n render() {\n const { disabled, readonly, label, required, helperText, error, dark } =\n this;\n const labelText = required ? label + \" *\" : label;\n const labelContent = readonly ? (\n `${labelText}`\n ) : (\n <label htmlFor={this.for}>{labelText}</label>\n );\n\n const id = getInputHelperTextID(this.for);\n\n return (\n <Host\n class={{\n [\"disabled\"]: disabled,\n [\"readonly\"]: readonly,\n [\"with-helper\"]: helperText !== \"\",\n }}\n >\n <ic-typography\n variant=\"label\"\n class={{\n [\"readonly-label\"]: readonly,\n [\"error-label\"]: error && !(readonly || disabled),\n [\"dark\"]: dark,\n }}\n >\n {labelContent}\n </ic-typography>\n\n {helperText !== \"\" && (\n <ic-typography\n variant=\"caption\"\n class={{\n [\"helpertext\"]: true,\n [\"helpertext-normal\"]: !disabled && !readonly,\n [\"helpertext-readonly\"]: readonly,\n }}\n >\n <span id={id}>{helperText}</span>\n </ic-typography>\n )}\n </Host>\n );\n }\n}\n","ic-input-validation {\n width: var(--input-width, 20rem);\n margin-top: var(--ic-space-xs);\n display: flex;\n}\n\nic-input-validation.fullwidth {\n width: 100%;\n}\n\nic-input-validation span.status-icon {\n padding-right: var(--ic-space-xxs);\n}\n\nic-input-validation span.status-icon > svg {\n height: 1.25rem;\n width: 1.25rem;\n}\n\nic-input-validation span.icon-success > svg {\n fill: var(--ic-status-success);\n}\n\nic-input-validation span.icon-error > svg {\n fill: var(--ic-status-error);\n}\n\nic-input-validation span.icon-warning > svg {\n fill: var(--ic-status-warning);\n}\n\nic-input-validation .statustext {\n flex-grow: 1;\n}\n","import { Element, Component, Host, Prop, h } from \"@stencil/core\";\n\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n} from \"../../utils/types\";\nimport errorIcon from \"../../assets/error-icon.svg\";\nimport successIcon from \"../../assets/success-icon.svg\";\nimport warningIcon from \"../../assets/warning-icon.svg\";\n\nimport {\n getInputValidationTextID,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IcAriaLiveModeVariants } from \"./ic-input-validation.types\";\n\nconst icon = {\n [IcInformationStatus.Warning]: warningIcon,\n [IcInformationStatus.Error]: errorIcon,\n [IcInformationStatus.Success]: successIcon,\n};\n\n/**\n * @slot validation-message-adornment - Content will be placed to the right of the validation message.\n */\n@Component({\n tag: \"ic-input-validation\",\n styleUrl: \"ic-input-validation.css\",\n})\nexport class InputValidation {\n @Element() el: HTMLIcInputValidationElement;\n\n /**\n * The ARIA live mode to apply to the message.\n */\n @Prop() ariaLiveMode: IcAriaLiveModeVariants = \"polite\";\n\n /**\n * The ID of the form element the validation is bound to.\n */\n @Prop() for: string;\n\n /**\n * If `true`, the input validation will fill the width of the container.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * The validation message to display.\n */\n @Prop() message!: string;\n\n /**\n * The status of the validation - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() status: IcInformationStatusOrEmpty = \"\";\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.message, propName: \"message\" }],\n \"Input Validation\"\n );\n }\n\n render() {\n const displayIcon = this.status !== \"\" ? icon[this.status] : \"\";\n const id = getInputValidationTextID(this.for);\n return (\n <Host\n class={{\n [this.status]: this.status !== \"\",\n [\"fullwidth\"]: this.fullWidth,\n }}\n >\n {displayIcon !== \"\" && (\n <span\n class={{\n [\"status-icon\"]: true,\n [`icon-${this.status}`]: true,\n }}\n innerHTML={displayIcon}\n />\n )}\n\n <ic-typography variant=\"caption\" class=\"statustext\">\n <span aria-live={this.ariaLiveMode} id={id}>\n {this.message}\n </span>\n </ic-typography>\n\n <slot name=\"validation-message-adornment\"></slot>\n </Host>\n );\n }\n}\n"],"mappings":"oKAAA,MAAMA,EAAkB,6iB,MCWXC,EAAU,M,mCAII,M,cAKG,M,WAKF,M,mCAUG,G,mCAUD,M,cAKA,K,CAE5BC,mBACEC,EACE,CAAC,CAAEC,KAAMC,KAAKC,MAAOC,SAAU,UAC/B,c,CAIJC,SACE,MAAMC,SAAEA,EAAQC,SAAEA,EAAQJ,MAAEA,EAAKK,SAAEA,EAAQC,WAAEA,EAAUC,MAAEA,EAAKC,KAAEA,GAC9DT,KACF,MAAMU,EAAYJ,EAAWL,EAAQ,KAAOA,EAC5C,MAAMU,EAAeN,EAAQ,GACxBK,IAEHE,EAAA,SAAOC,QAASb,KAAKc,KAAMJ,GAG7B,MAAMK,EAAKC,EAAqBhB,KAAKc,KAErC,OACEF,EAACK,EAAI,CACHC,MAAO,CACL,CAAC,YAAad,EACd,CAAC,YAAaC,EACd,CAAC,eAAgBE,IAAe,KAGlCK,EAAA,iBACEO,QAAQ,QACRD,MAAO,CACL,CAAC,kBAAmBb,EACpB,CAAC,eAAgBG,KAAWH,GAAYD,GACxC,CAAC,QAASK,IAGXE,GAGFJ,IAAe,IACdK,EAAA,iBACEO,QAAQ,UACRD,MAAO,CACL,CAAC,cAAe,KAChB,CAAC,sBAAuBd,IAAaC,EACrC,CAAC,uBAAwBA,IAG3BO,EAAA,QAAMG,GAAIA,GAAKR,I,aCnG3B,MAAMa,EAAuB,whBCgB7B,MAAMC,EAAO,CACX,CAACC,EAAoBC,SAAUC,EAC/B,CAACF,EAAoBG,OAAQC,EAC7B,CAACJ,EAAoBK,SAAUC,G,MAUpBC,EAAe,M,2CAMqB,S,kCAUlB,M,mCAUgB,E,CAE7ChC,mBACEC,EACE,CAAC,CAAEC,KAAMC,KAAK8B,QAAS5B,SAAU,YACjC,mB,CAIJC,SACE,MAAM4B,EAAc/B,KAAKgC,SAAW,GAAKX,EAAKrB,KAAKgC,QAAU,GAC7D,MAAMjB,EAAKkB,EAAyBjC,KAAKc,KACzC,OACEF,EAACK,EAAI,CACHC,MAAO,CACL,CAAClB,KAAKgC,QAAShC,KAAKgC,SAAW,GAC/B,CAAC,aAAchC,KAAKkC,YAGrBH,IAAgB,IACfnB,EAAA,QACEM,MAAO,CACL,CAAC,eAAgB,KACjB,CAAC,QAAQlB,KAAKgC,UAAW,MAE3BG,UAAWJ,IAIfnB,EAAA,iBAAeO,QAAQ,UAAUD,MAAM,cACrCN,EAAA,oBAAiBZ,KAAKoC,aAAcrB,GAAIA,GACrCf,KAAK8B,UAIVlB,EAAA,QAAMyB,KAAK,iC"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icClassificationBannerCss","classificationText","default","official","secret","ClassificationBanner","render","classification","inline","country","upTo","additionalSelectors","this","h","Host","class","variant"],"sources":["./src/components/ic-classification-banner/ic-classification-banner.css?tag=ic-classification-banner&encapsulation=shadow","./src/components/ic-classification-banner/ic-classification-banner.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n * @prop --ic-z-index-classification-banner: z-index of classification banner\n */\n\n:host {\n position: fixed;\n left: 0;\n bottom: 0;\n width: 100%;\n height: var(--ic-space-lg);\n z-index: var(--ic-z-index-classification-banner);\n}\n\n:host(.inline) {\n position: static;\n left: auto;\n bottom: auto;\n}\n\n.classification-banner {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: var(--ic-space-xxxs) var(--ic-space-md);\n}\n\n.default {\n background-color: var(--ic-classification-not-set);\n color: var(--ic-classification-not-set-foreground);\n}\n\n.official,\n.official-sensitive {\n background-color: var(--ic-classification-official);\n color: var(--ic-classification-official-foreground);\n}\n\n.secret {\n background-color: var(--ic-classification-secret);\n color: var(--ic-classification-secret-foreground);\n}\n\n.top-secret {\n background-color: var(--ic-classification-top-secret);\n color: var(--ic-classification-top-secret-foreground);\n}\n\n.offscreen {\n position: absolute;\n left: -9999px;\n background-color: #fff;\n color: #000;\n text-transform: none;\n}\n\n@media (forced-colors: active) {\n .classification-banner {\n border: var(--ic-hc-border);\n }\n}\n","import { Component, Prop, h, Host } from \"@stencil/core\";\nimport { IcProtectiveMarkings } from \"./ic-classification-banner.types\";\n\nconst classificationText = {\n default: \"protective marking not set\",\n official: \"official\",\n \"official-sensitive\": \"official sensitive\",\n secret: \"secret\",\n \"top-secret\": \"top secret\",\n};\n\n@Component({\n tag: \"ic-classification-banner\",\n styleUrl: \"ic-classification-banner.css\",\n shadow: true,\n})\nexport class ClassificationBanner {\n /**\n * The additional information that will be displayed after the classification.\n */\n @Prop() additionalSelectors?: string = \"\";\n /**\n * The classification level to be displayed - also determines the banner and text colour.\n */\n @Prop() classification?: IcProtectiveMarkings = \"default\";\n /**\n * The optional text that will be displayed before classification to specify relevant country/countries.\n */\n @Prop() country?: string = \"uk\";\n /**\n * If `true`, the banner will appear inline with the page, instead of sticking to the bottom of the page.\n */\n @Prop() inline?: boolean = false;\n /**\n * If `true`, \"Up to\" will be displayed before the classification and country.\n */\n @Prop() upTo?: boolean = false;\n\n render() {\n const { classification, inline, country, upTo, additionalSelectors } = this;\n\n return (\n <Host class={{ [\"inline\"]: inline }}>\n <banner\n aria-label=\"Protective marking\"\n class={{\n [\"classification-banner\"]: true,\n [`${classification}`]: classification,\n }}\n >\n {classification !== \"default\" ? (\n <span class=\"offscreen\">\n The protective marking of this page is:{\" \"}\n </span>\n ) : null}\n <ic-typography variant=\"caption-uppercase\">\n {classification === \"default\"\n ? classificationText[classification]\n : `${upTo ? \"up to\" : \"\"} \n ${country !== \"\" ? country : \"\"} \n ${classificationText[classification]} \n ${additionalSelectors !== \"\" ? additionalSelectors : \"\"}`}\n </ic-typography>\n </banner>\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAA4B,syGCGlC,MAAMC,EAAqB,CACzBC,QAAS,6BACTC,SAAU,WACV,qBAAsB,qBACtBC,OAAQ,SACR,aAAc,c,MAQHC,EAAoB,M,kDAIQ,G,oBAIS,U,aAIrB,K,YAIA,M,UAIF,K,CAEzBC,SACE,MAAMC,eAAEA,EAAcC,OAAEA,EAAMC,QAAEA,EAAOC,KAAEA,EAAIC,oBAAEA,GAAwBC,KAEvE,OACEC,EAACC,EAAI,CAACC,MAAO,CAAE,CAAC,UAAWP,IACzBK,EAAA,uBACa,qBACXE,MAAO,CACL,CAAC,yBAA0B,KAC3B,CAAC,GAAGR,KAAmBA,IAGxBA,IAAmB,UAClBM,EAAA,QAAME,MAAM,aAAW,0CACmB,KAExC,KACJF,EAAA,iBAAeG,QAAQ,qBACpBT,IAAmB,UAChBN,EAAmBM,GACnB,GAAGG,EAAO,QAAU,uBACnBD,IAAY,GAAKA,EAAU,uBAC3BR,EAAmBM,uBACnBI,IAAwB,GAAKA,EAAsB,O"}