@nanoporetech-digital/components 3.2.0 → 3.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/cjs/dom-d7c33f11.js.map +1 -1
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/{modal-f09e431f.js → modal-e4defcc3.js} +3 -3
  6. package/dist/cjs/{modal-f09e431f.js.map → modal-e4defcc3.js.map} +1 -1
  7. package/dist/cjs/nano-alert.cjs.entry.js +3 -3
  8. package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
  9. package/dist/cjs/nano-algolia.cjs.entry.js +1 -1
  10. package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nano-aspect-ratio.cjs.entry.js +1 -1
  12. package/dist/cjs/nano-aspect-ratio.cjs.entry.js.map +1 -1
  13. package/dist/cjs/nano-checkbox-group.cjs.entry.js +1 -1
  14. package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nano-checkbox.cjs.entry.js +1 -1
  16. package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
  17. package/dist/cjs/nano-components.cjs.js +1 -1
  18. package/dist/cjs/nano-datalist_3.cjs.entry.js +2 -2
  19. package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
  20. package/dist/cjs/nano-date-input.cjs.entry.js +1 -1
  21. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  22. package/dist/cjs/nano-date-picker.cjs.entry.js +1 -1
  23. package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
  24. package/dist/cjs/nano-details.cjs.entry.js +1 -1
  25. package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nano-dialog.cjs.entry.js +3 -3
  27. package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
  28. package/dist/cjs/nano-drawer.cjs.entry.js +3 -3
  29. package/dist/cjs/nano-drawer.cjs.entry.js.map +1 -1
  30. package/dist/cjs/nano-dropdown.cjs.entry.js +2 -2
  31. package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
  32. package/dist/cjs/nano-file-upload.cjs.entry.js +1 -1
  33. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  34. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +13 -8
  35. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
  36. package/dist/cjs/nano-global-nav.cjs.entry.js +35 -15
  37. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  38. package/dist/cjs/nano-global-search-results.cjs.entry.js +6 -3
  39. package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
  40. package/dist/cjs/nano-grid_3.cjs.entry.js +2 -2
  41. package/dist/cjs/nano-grid_3.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nano-hero.cjs.entry.js +1 -1
  43. package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
  44. package/dist/cjs/nano-icon-button.cjs.entry.js +1 -1
  45. package/dist/cjs/nano-icon-button.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nano-icon.cjs.entry.js +1 -1
  47. package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nano-input.cjs.entry.js +1 -1
  49. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nano-menu-drawer.cjs.entry.js +1 -1
  51. package/dist/cjs/nano-menu-drawer.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nano-progress-bar.cjs.entry.js +1 -1
  53. package/dist/cjs/nano-progress-bar.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nano-range.cjs.entry.js +1 -1
  55. package/dist/cjs/nano-range.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nano-rating.cjs.entry.js +1 -1
  57. package/dist/cjs/nano-rating.cjs.entry.js.map +1 -1
  58. package/dist/cjs/nano-resize-observe_2.cjs.entry.js +23 -12
  59. package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nano-slide.cjs.entry.js +1 -1
  61. package/dist/cjs/nano-slide.cjs.entry.js.map +1 -1
  62. package/dist/cjs/nano-slides.cjs.entry.js +1 -1
  63. package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
  64. package/dist/cjs/nano-spinner.cjs.entry.js +1 -1
  65. package/dist/cjs/nano-spinner.cjs.entry.js.map +1 -1
  66. package/dist/cjs/nano-split-pane.cjs.entry.js +1 -1
  67. package/dist/cjs/nano-split-pane.cjs.entry.js.map +1 -1
  68. package/dist/cjs/nano-sticker.cjs.entry.js +1 -1
  69. package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
  70. package/dist/cjs/nano-tab-content.cjs.entry.js +1 -1
  71. package/dist/cjs/nano-tab-content.cjs.entry.js.map +1 -1
  72. package/dist/cjs/nano-tab-group.cjs.entry.js +1 -1
  73. package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
  74. package/dist/cjs/nano-tab.cjs.entry.js +1 -1
  75. package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
  76. package/dist/cjs/{nano-table-7dbe799c.js → nano-table-10d45fe4.js} +36 -33
  77. package/dist/cjs/nano-table-10d45fe4.js.map +1 -0
  78. package/dist/cjs/nano-table.cjs.entry.js +1 -1
  79. package/dist/cjs/nano-tooltip.cjs.entry.js +1 -1
  80. package/dist/cjs/nano-tooltip.cjs.entry.js.map +1 -1
  81. package/dist/cjs/{tabbable-de4c23d8.js → tabbable-bdf10c84.js} +13 -4
  82. package/dist/cjs/tabbable-bdf10c84.js.map +1 -0
  83. package/dist/cjs/{table.worker-fe960deb.js → table.worker-a192a107.js} +2 -2
  84. package/dist/cjs/table.worker-a192a107.js.map +1 -0
  85. package/dist/collection/components/alert/alert.css +16 -56
  86. package/dist/collection/components/algolia/algolia.css +5 -22
  87. package/dist/collection/components/aspect-ratio/aspect-ratio.css +2 -4
  88. package/dist/collection/components/checkbox/checkbox-group.css +8 -19
  89. package/dist/collection/components/checkbox/checkbox.css +24 -61
  90. package/dist/collection/components/date-input/date-input.css +8 -29
  91. package/dist/collection/components/date-picker/date-picker.css +22 -61
  92. package/dist/collection/components/details/details.css +7 -27
  93. package/dist/collection/components/dialog/dialog.css +20 -79
  94. package/dist/collection/components/drawer/drawer.css +13 -42
  95. package/dist/collection/components/dropdown/dropdown.css +5 -13
  96. package/dist/collection/components/file-upload/file-upload.css +45 -127
  97. package/dist/collection/components/global-nav/global-nav.js +38 -17
  98. package/dist/collection/components/global-nav/global-nav.js.map +1 -1
  99. package/dist/collection/components/global-nav/style/global-nav.css +160 -320
  100. package/dist/collection/components/global-search-results/global-search-results.css +81 -248
  101. package/dist/collection/components/global-search-results/global-search-results.js +22 -2
  102. package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
  103. package/dist/collection/components/grid/grid.css +21 -76
  104. package/dist/collection/components/hero/hero.css +22 -63
  105. package/dist/collection/components/icon/icon.css +2 -5
  106. package/dist/collection/components/icon-button/icon-button.css +4 -15
  107. package/dist/collection/components/img/img.css +9 -19
  108. package/dist/collection/components/input/input.css +34 -148
  109. package/dist/collection/components/menu/menu.css +1 -2
  110. package/dist/collection/components/menu-drawer/menu-drawer.css +16 -47
  111. package/dist/collection/components/nav-item/nav-item.css +73 -147
  112. package/dist/collection/components/nav-item/nav-item.js +22 -6
  113. package/dist/collection/components/nav-item/nav-item.js.map +1 -1
  114. package/dist/collection/components/option/option.css +10 -40
  115. package/dist/collection/components/progress-bar/progress-bar.css +5 -26
  116. package/dist/collection/components/range/range.css +20 -56
  117. package/dist/collection/components/rating/rating.css +9 -28
  118. package/dist/collection/components/resize-observe/resize-observe.js +38 -12
  119. package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
  120. package/dist/collection/components/select/select.css +56 -210
  121. package/dist/collection/components/skeleton/skeleton.css +2 -17
  122. package/dist/collection/components/slides/slide.css +4 -13
  123. package/dist/collection/components/slides/slides.css +3 -14
  124. package/dist/collection/components/spinner/spinner.css +34 -122
  125. package/dist/collection/components/split-pane/split-pane.css +4 -18
  126. package/dist/collection/components/sticker/sticker.css +8 -18
  127. package/dist/collection/components/table/table.children.js +11 -11
  128. package/dist/collection/components/table/table.children.js.map +1 -1
  129. package/dist/collection/components/table/table.css +110 -50
  130. package/dist/collection/components/table/table.js +28 -24
  131. package/dist/collection/components/table/table.js.map +1 -1
  132. package/dist/collection/components/table/table.service.js +1 -1
  133. package/dist/collection/components/table/table.service.js.map +1 -1
  134. package/dist/collection/components/table/table.store.js +2 -2
  135. package/dist/collection/components/table/table.store.js.map +1 -1
  136. package/dist/collection/components/tabs/tab-content.css +11 -59
  137. package/dist/collection/components/tabs/tab-group.css +20 -77
  138. package/dist/collection/components/tabs/tab.css +11 -30
  139. package/dist/collection/components/tooltip/tooltip.css +26 -56
  140. package/dist/collection/utils/dom.js.map +1 -1
  141. package/dist/collection/utils/modal.js +1 -1
  142. package/dist/collection/utils/modal.js.map +1 -1
  143. package/dist/collection/utils/tabbable.js +12 -3
  144. package/dist/collection/utils/tabbable.js.map +1 -1
  145. package/dist/components/algolia.js +1 -1
  146. package/dist/components/algolia.js.map +1 -1
  147. package/dist/components/date-picker.js +1 -1
  148. package/dist/components/date-picker.js.map +1 -1
  149. package/dist/components/dom.js.map +1 -1
  150. package/dist/components/dropdown.js +1 -1
  151. package/dist/components/dropdown.js.map +1 -1
  152. package/dist/components/grid.js +1 -1
  153. package/dist/components/grid.js.map +1 -1
  154. package/dist/components/icon-button.js +1 -1
  155. package/dist/components/icon-button.js.map +1 -1
  156. package/dist/components/icon.js +1 -1
  157. package/dist/components/icon.js.map +1 -1
  158. package/dist/components/img.js +1 -1
  159. package/dist/components/img.js.map +1 -1
  160. package/dist/components/input.js +1 -1
  161. package/dist/components/input.js.map +1 -1
  162. package/dist/components/menu.js +1 -1
  163. package/dist/components/menu.js.map +1 -1
  164. package/dist/components/modal.js +1 -1
  165. package/dist/components/modal.js.map +1 -1
  166. package/dist/components/nano-alert.js +1 -1
  167. package/dist/components/nano-alert.js.map +1 -1
  168. package/dist/components/nano-aspect-ratio.js +1 -1
  169. package/dist/components/nano-aspect-ratio.js.map +1 -1
  170. package/dist/components/nano-checkbox-group.js +1 -1
  171. package/dist/components/nano-checkbox-group.js.map +1 -1
  172. package/dist/components/nano-checkbox.js +1 -1
  173. package/dist/components/nano-checkbox.js.map +1 -1
  174. package/dist/components/nano-date-input.js +1 -1
  175. package/dist/components/nano-date-input.js.map +1 -1
  176. package/dist/components/nano-details.js +1 -1
  177. package/dist/components/nano-details.js.map +1 -1
  178. package/dist/components/nano-dialog.js +1 -1
  179. package/dist/components/nano-dialog.js.map +1 -1
  180. package/dist/components/nano-drawer.js +1 -1
  181. package/dist/components/nano-drawer.js.map +1 -1
  182. package/dist/components/nano-file-upload.js +1 -1
  183. package/dist/components/nano-file-upload.js.map +1 -1
  184. package/dist/components/nano-global-nav.js +35 -15
  185. package/dist/components/nano-global-nav.js.map +1 -1
  186. package/dist/components/nano-global-search-results.js +7 -4
  187. package/dist/components/nano-global-search-results.js.map +1 -1
  188. package/dist/components/nano-hero.js +1 -1
  189. package/dist/components/nano-hero.js.map +1 -1
  190. package/dist/components/nano-menu-drawer.js +1 -1
  191. package/dist/components/nano-menu-drawer.js.map +1 -1
  192. package/dist/components/nano-range.js +1 -1
  193. package/dist/components/nano-range.js.map +1 -1
  194. package/dist/components/nano-rating.js +1 -1
  195. package/dist/components/nano-rating.js.map +1 -1
  196. package/dist/components/nano-slide.js +1 -1
  197. package/dist/components/nano-slide.js.map +1 -1
  198. package/dist/components/nano-slides.js +1 -1
  199. package/dist/components/nano-slides.js.map +1 -1
  200. package/dist/components/nano-split-pane.js +1 -1
  201. package/dist/components/nano-split-pane.js.map +1 -1
  202. package/dist/components/nano-tab-content.js +1 -1
  203. package/dist/components/nano-tab-content.js.map +1 -1
  204. package/dist/components/nano-tab-group.js +1 -1
  205. package/dist/components/nano-tab-group.js.map +1 -1
  206. package/dist/components/nano-tab.js +1 -1
  207. package/dist/components/nano-tab.js.map +1 -1
  208. package/dist/components/nano-table.js +34 -31
  209. package/dist/components/nano-table.js.map +1 -1
  210. package/dist/components/nav-item.js +12 -7
  211. package/dist/components/nav-item.js.map +1 -1
  212. package/dist/components/option.js +1 -1
  213. package/dist/components/option.js.map +1 -1
  214. package/dist/components/progress-bar.js +1 -1
  215. package/dist/components/progress-bar.js.map +1 -1
  216. package/dist/components/resize-observe.js +23 -13
  217. package/dist/components/resize-observe.js.map +1 -1
  218. package/dist/components/select.js +1 -1
  219. package/dist/components/select.js.map +1 -1
  220. package/dist/components/skeleton.js +1 -1
  221. package/dist/components/skeleton.js.map +1 -1
  222. package/dist/components/spinner.js +1 -1
  223. package/dist/components/spinner.js.map +1 -1
  224. package/dist/components/sticker.js +1 -1
  225. package/dist/components/sticker.js.map +1 -1
  226. package/dist/components/tabbable.js +12 -3
  227. package/dist/components/tabbable.js.map +1 -1
  228. package/dist/components/tooltip.js +1 -1
  229. package/dist/components/tooltip.js.map +1 -1
  230. package/dist/custom-elements/index.js +157 -107
  231. package/dist/custom-elements/index.js.map +1 -1
  232. package/dist/esm/dom-d3ad49e2.js.map +1 -1
  233. package/dist/esm/index.js +1 -1
  234. package/dist/esm/loader.js +1 -1
  235. package/dist/esm/{modal-215df46b.js → modal-5c9ce466.js} +3 -3
  236. package/dist/esm/{modal-215df46b.js.map → modal-5c9ce466.js.map} +1 -1
  237. package/dist/esm/nano-alert.entry.js +3 -3
  238. package/dist/esm/nano-alert.entry.js.map +1 -1
  239. package/dist/esm/nano-algolia.entry.js +1 -1
  240. package/dist/esm/nano-algolia.entry.js.map +1 -1
  241. package/dist/esm/nano-aspect-ratio.entry.js +1 -1
  242. package/dist/esm/nano-aspect-ratio.entry.js.map +1 -1
  243. package/dist/esm/nano-checkbox-group.entry.js +1 -1
  244. package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
  245. package/dist/esm/nano-checkbox.entry.js +1 -1
  246. package/dist/esm/nano-checkbox.entry.js.map +1 -1
  247. package/dist/esm/nano-components.js +1 -1
  248. package/dist/esm/nano-datalist_3.entry.js +2 -2
  249. package/dist/esm/nano-datalist_3.entry.js.map +1 -1
  250. package/dist/esm/nano-date-input.entry.js +1 -1
  251. package/dist/esm/nano-date-input.entry.js.map +1 -1
  252. package/dist/esm/nano-date-picker.entry.js +1 -1
  253. package/dist/esm/nano-date-picker.entry.js.map +1 -1
  254. package/dist/esm/nano-details.entry.js +1 -1
  255. package/dist/esm/nano-details.entry.js.map +1 -1
  256. package/dist/esm/nano-dialog.entry.js +3 -3
  257. package/dist/esm/nano-dialog.entry.js.map +1 -1
  258. package/dist/esm/nano-drawer.entry.js +3 -3
  259. package/dist/esm/nano-drawer.entry.js.map +1 -1
  260. package/dist/esm/nano-dropdown.entry.js +2 -2
  261. package/dist/esm/nano-dropdown.entry.js.map +1 -1
  262. package/dist/esm/nano-file-upload.entry.js +1 -1
  263. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  264. package/dist/esm/nano-global-nav-user-profile_3.entry.js +13 -8
  265. package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
  266. package/dist/esm/nano-global-nav.entry.js +35 -15
  267. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  268. package/dist/esm/nano-global-search-results.entry.js +7 -4
  269. package/dist/esm/nano-global-search-results.entry.js.map +1 -1
  270. package/dist/esm/nano-grid_3.entry.js +2 -2
  271. package/dist/esm/nano-grid_3.entry.js.map +1 -1
  272. package/dist/esm/nano-hero.entry.js +1 -1
  273. package/dist/esm/nano-hero.entry.js.map +1 -1
  274. package/dist/esm/nano-icon-button.entry.js +1 -1
  275. package/dist/esm/nano-icon-button.entry.js.map +1 -1
  276. package/dist/esm/nano-icon.entry.js +1 -1
  277. package/dist/esm/nano-icon.entry.js.map +1 -1
  278. package/dist/esm/nano-input.entry.js +1 -1
  279. package/dist/esm/nano-input.entry.js.map +1 -1
  280. package/dist/esm/nano-menu-drawer.entry.js +1 -1
  281. package/dist/esm/nano-menu-drawer.entry.js.map +1 -1
  282. package/dist/esm/nano-progress-bar.entry.js +1 -1
  283. package/dist/esm/nano-progress-bar.entry.js.map +1 -1
  284. package/dist/esm/nano-range.entry.js +1 -1
  285. package/dist/esm/nano-range.entry.js.map +1 -1
  286. package/dist/esm/nano-rating.entry.js +1 -1
  287. package/dist/esm/nano-rating.entry.js.map +1 -1
  288. package/dist/esm/nano-resize-observe_2.entry.js +23 -12
  289. package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
  290. package/dist/esm/nano-slide.entry.js +1 -1
  291. package/dist/esm/nano-slide.entry.js.map +1 -1
  292. package/dist/esm/nano-slides.entry.js +1 -1
  293. package/dist/esm/nano-slides.entry.js.map +1 -1
  294. package/dist/esm/nano-spinner.entry.js +1 -1
  295. package/dist/esm/nano-spinner.entry.js.map +1 -1
  296. package/dist/esm/nano-split-pane.entry.js +1 -1
  297. package/dist/esm/nano-split-pane.entry.js.map +1 -1
  298. package/dist/esm/nano-sticker.entry.js +1 -1
  299. package/dist/esm/nano-sticker.entry.js.map +1 -1
  300. package/dist/esm/nano-tab-content.entry.js +1 -1
  301. package/dist/esm/nano-tab-content.entry.js.map +1 -1
  302. package/dist/esm/nano-tab-group.entry.js +1 -1
  303. package/dist/esm/nano-tab-group.entry.js.map +1 -1
  304. package/dist/esm/nano-tab.entry.js +1 -1
  305. package/dist/esm/nano-tab.entry.js.map +1 -1
  306. package/dist/esm/{nano-table-93d25a68.js → nano-table-a7a5a3f8.js} +36 -33
  307. package/dist/esm/nano-table-a7a5a3f8.js.map +1 -0
  308. package/dist/esm/nano-table.entry.js +1 -1
  309. package/dist/esm/nano-tooltip.entry.js +1 -1
  310. package/dist/esm/nano-tooltip.entry.js.map +1 -1
  311. package/dist/esm/{tabbable-614f515e.js → tabbable-31485ff7.js} +13 -4
  312. package/dist/esm/tabbable-31485ff7.js.map +1 -0
  313. package/dist/esm/{table.worker-5d681b97.js → table.worker-d2b4d395.js} +2 -2
  314. package/dist/esm/table.worker-d2b4d395.js.map +1 -0
  315. package/dist/nano-components/index.esm.js +1 -1
  316. package/dist/nano-components/nano-components.css +1 -1
  317. package/dist/nano-components/nano-components.esm.js +1 -1
  318. package/dist/nano-components/p-11d3a90b.js +5 -0
  319. package/dist/nano-components/p-11d3a90b.js.map +1 -0
  320. package/dist/nano-components/p-14329940.entry.js +5 -0
  321. package/dist/nano-components/p-14329940.entry.js.map +1 -0
  322. package/dist/nano-components/{p-35295332.entry.js → p-151aad1e.entry.js} +5 -5
  323. package/dist/nano-components/{p-35295332.entry.js.map → p-151aad1e.entry.js.map} +1 -1
  324. package/dist/nano-components/p-15543295.entry.js +5 -0
  325. package/dist/nano-components/{p-6e3412d2.entry.js.map → p-15543295.entry.js.map} +1 -1
  326. package/dist/nano-components/p-1e709f87.entry.js +5 -0
  327. package/dist/nano-components/p-1e709f87.entry.js.map +1 -0
  328. package/dist/nano-components/p-1f347342.entry.js +5 -0
  329. package/dist/nano-components/{p-02df1f62.entry.js.map → p-1f347342.entry.js.map} +1 -1
  330. package/dist/nano-components/p-23575705.entry.js +5 -0
  331. package/dist/nano-components/{p-6958df8c.entry.js.map → p-23575705.entry.js.map} +1 -1
  332. package/dist/nano-components/p-244223f0.entry.js +5 -0
  333. package/dist/nano-components/{p-6cd59e58.entry.js.map → p-244223f0.entry.js.map} +1 -1
  334. package/dist/nano-components/p-284dd9a2.entry.js +5 -0
  335. package/dist/nano-components/{p-5107646c.entry.js.map → p-284dd9a2.entry.js.map} +1 -1
  336. package/dist/nano-components/p-2cb4615b.entry.js +5 -0
  337. package/dist/nano-components/{p-e3730878.entry.js.map → p-2cb4615b.entry.js.map} +1 -1
  338. package/dist/nano-components/p-36842a50.entry.js +5 -0
  339. package/dist/nano-components/{p-f69f93e9.entry.js.map → p-36842a50.entry.js.map} +1 -1
  340. package/dist/nano-components/p-3a1026d1.entry.js +5 -0
  341. package/dist/nano-components/p-3a1026d1.entry.js.map +1 -0
  342. package/dist/nano-components/p-40e13cd4.entry.js +5 -0
  343. package/dist/nano-components/p-40e13cd4.entry.js.map +1 -0
  344. package/dist/nano-components/p-41addb3a.entry.js +5 -0
  345. package/dist/nano-components/{p-0a5ad0ef.entry.js.map → p-41addb3a.entry.js.map} +1 -1
  346. package/dist/nano-components/{p-9a385481.js → p-45abbbdd.js} +2 -2
  347. package/dist/nano-components/p-45abbbdd.js.map +1 -0
  348. package/dist/nano-components/p-46b348b7.entry.js +5 -0
  349. package/dist/nano-components/{p-28f713fb.entry.js.map → p-46b348b7.entry.js.map} +1 -1
  350. package/dist/nano-components/p-4b69178e.entry.js +5 -0
  351. package/dist/nano-components/{p-5e33798f.entry.js.map → p-4b69178e.entry.js.map} +1 -1
  352. package/dist/nano-components/p-4f0e14b5.entry.js +5 -0
  353. package/dist/nano-components/{p-8f5e0022.entry.js.map → p-4f0e14b5.entry.js.map} +1 -1
  354. package/dist/nano-components/p-559a6492.entry.js +5 -0
  355. package/dist/nano-components/p-559a6492.entry.js.map +1 -0
  356. package/dist/nano-components/p-601e18d5.entry.js +5 -0
  357. package/dist/nano-components/p-601e18d5.entry.js.map +1 -0
  358. package/dist/nano-components/{p-619a1c8e.js → p-64200e25.js} +2 -2
  359. package/dist/nano-components/{p-39124baa.entry.js.map → p-64200e25.js.map} +0 -0
  360. package/dist/nano-components/p-69e5a37d.entry.js +5 -0
  361. package/dist/nano-components/{p-282987e6.entry.js.map → p-69e5a37d.entry.js.map} +1 -1
  362. package/dist/nano-components/p-751927d1.entry.js +5 -0
  363. package/dist/nano-components/{p-5d81773d.entry.js.map → p-751927d1.entry.js.map} +1 -1
  364. package/dist/nano-components/p-845ae77e.js.map +1 -1
  365. package/dist/nano-components/p-9059c8c1.entry.js +5 -0
  366. package/dist/nano-components/{p-d8e8d7e3.entry.js.map → p-9059c8c1.entry.js.map} +1 -1
  367. package/dist/nano-components/p-92504f7f.entry.js +5 -0
  368. package/dist/nano-components/{p-50fcb11c.entry.js.map → p-92504f7f.entry.js.map} +1 -1
  369. package/dist/nano-components/p-99fbae74.entry.js +5 -0
  370. package/dist/nano-components/{p-8a52a411.entry.js.map → p-99fbae74.entry.js.map} +1 -1
  371. package/dist/nano-components/p-9eeed8f5.entry.js +5 -0
  372. package/dist/nano-components/{p-4c97f05f.entry.js.map → p-9eeed8f5.entry.js.map} +1 -1
  373. package/dist/nano-components/p-a183e3c7.entry.js +5 -0
  374. package/dist/nano-components/{p-b290a970.entry.js.map → p-a183e3c7.entry.js.map} +1 -1
  375. package/dist/nano-components/p-a2e38472.entry.js +5 -0
  376. package/dist/nano-components/p-a2e38472.entry.js.map +1 -0
  377. package/dist/nano-components/p-b87539f0.entry.js +5 -0
  378. package/dist/nano-components/{p-efa8c520.entry.js.map → p-b87539f0.entry.js.map} +1 -1
  379. package/dist/nano-components/p-b9c8b99f.entry.js +5 -0
  380. package/dist/nano-components/p-b9c8b99f.entry.js.map +1 -0
  381. package/dist/nano-components/{p-cb79d1ec.js → p-c9a7c7ea.js} +2 -2
  382. package/dist/nano-components/{p-cb79d1ec.js.map → p-c9a7c7ea.js.map} +1 -1
  383. package/dist/nano-components/{p-c45851c3.entry.js → p-d1c8eca4.entry.js} +2 -2
  384. package/dist/nano-components/{p-c45851c3.entry.js.map → p-d1c8eca4.entry.js.map} +1 -1
  385. package/dist/nano-components/{p-39124baa.entry.js → p-d9d2807a.entry.js} +2 -2
  386. package/dist/nano-components/{p-619a1c8e.js.map → p-d9d2807a.entry.js.map} +0 -0
  387. package/dist/nano-components/{p-916e4b6b.entry.js → p-dba8a88d.entry.js} +2 -2
  388. package/dist/nano-components/{p-916e4b6b.entry.js.map → p-dba8a88d.entry.js.map} +1 -1
  389. package/dist/nano-components/p-e5408bc8.entry.js +5 -0
  390. package/dist/nano-components/{p-c5bb5540.entry.js.map → p-e5408bc8.entry.js.map} +1 -1
  391. package/dist/nano-components/p-f43d1d8e.entry.js +5 -0
  392. package/dist/nano-components/{p-66099557.entry.js.map → p-f43d1d8e.entry.js.map} +1 -1
  393. package/dist/nano-components/p-f7471cca.entry.js +5 -0
  394. package/dist/nano-components/{p-66ad1418.entry.js.map → p-f7471cca.entry.js.map} +1 -1
  395. package/dist/nano-components/p-fe94eeff.entry.js +5 -0
  396. package/dist/nano-components/{p-701e8ebf.entry.js.map → p-fe94eeff.entry.js.map} +1 -1
  397. package/dist/nano-components/p-feb9f164.entry.js +5 -0
  398. package/dist/nano-components/{p-81136f24.entry.js.map → p-feb9f164.entry.js.map} +1 -1
  399. package/dist/themes/nanopore.css +1 -1
  400. package/dist/themes/nanopore.css.map +1 -1
  401. package/dist/types/components/global-nav/global-nav.d.ts +11 -6
  402. package/dist/types/components/global-search-results/global-search-results.d.ts +5 -1
  403. package/dist/types/components/nav-item/nav-item.d.ts +11 -0
  404. package/dist/types/components/resize-observe/resize-observe.d.ts +5 -2
  405. package/dist/types/components/table/table.d.ts +9 -8
  406. package/dist/types/components/table/table.store.d.ts +1 -1
  407. package/dist/types/components.d.ts +12 -0
  408. package/dist/types/utils/dom.d.ts +1 -1
  409. package/docs-json.json +313 -52
  410. package/docs-vscode.json +2 -2
  411. package/package.json +2 -2
  412. package/dist/cjs/nano-table-7dbe799c.js.map +0 -1
  413. package/dist/cjs/tabbable-de4c23d8.js.map +0 -1
  414. package/dist/cjs/table.worker-fe960deb.js.map +0 -1
  415. package/dist/collection/components/global-nav/search-widget.js +0 -4
  416. package/dist/collection/components/global-nav/search-widget.js.map +0 -1
  417. package/dist/esm/nano-table-93d25a68.js.map +0 -1
  418. package/dist/esm/tabbable-614f515e.js.map +0 -1
  419. package/dist/esm/table.worker-5d681b97.js.map +0 -1
  420. package/dist/nano-components/p-02df1f62.entry.js +0 -5
  421. package/dist/nano-components/p-0a5ad0ef.entry.js +0 -5
  422. package/dist/nano-components/p-282987e6.entry.js +0 -5
  423. package/dist/nano-components/p-28b43ee9.entry.js +0 -5
  424. package/dist/nano-components/p-28b43ee9.entry.js.map +0 -1
  425. package/dist/nano-components/p-28f713fb.entry.js +0 -5
  426. package/dist/nano-components/p-37553477.entry.js +0 -5
  427. package/dist/nano-components/p-37553477.entry.js.map +0 -1
  428. package/dist/nano-components/p-42fa11c3.entry.js +0 -5
  429. package/dist/nano-components/p-42fa11c3.entry.js.map +0 -1
  430. package/dist/nano-components/p-4c386a43.js +0 -5
  431. package/dist/nano-components/p-4c386a43.js.map +0 -1
  432. package/dist/nano-components/p-4c97f05f.entry.js +0 -5
  433. package/dist/nano-components/p-50fcb11c.entry.js +0 -5
  434. package/dist/nano-components/p-5107646c.entry.js +0 -5
  435. package/dist/nano-components/p-5d81773d.entry.js +0 -5
  436. package/dist/nano-components/p-5e33798f.entry.js +0 -5
  437. package/dist/nano-components/p-653a25f8.entry.js +0 -5
  438. package/dist/nano-components/p-653a25f8.entry.js.map +0 -1
  439. package/dist/nano-components/p-66099557.entry.js +0 -5
  440. package/dist/nano-components/p-66ad1418.entry.js +0 -5
  441. package/dist/nano-components/p-6958df8c.entry.js +0 -5
  442. package/dist/nano-components/p-6cd59e58.entry.js +0 -5
  443. package/dist/nano-components/p-6e3412d2.entry.js +0 -5
  444. package/dist/nano-components/p-701e8ebf.entry.js +0 -5
  445. package/dist/nano-components/p-716064b6.entry.js +0 -5
  446. package/dist/nano-components/p-716064b6.entry.js.map +0 -1
  447. package/dist/nano-components/p-81136f24.entry.js +0 -5
  448. package/dist/nano-components/p-8a52a411.entry.js +0 -5
  449. package/dist/nano-components/p-8f5e0022.entry.js +0 -5
  450. package/dist/nano-components/p-9a385481.js.map +0 -1
  451. package/dist/nano-components/p-a151dea5.entry.js +0 -5
  452. package/dist/nano-components/p-a151dea5.entry.js.map +0 -1
  453. package/dist/nano-components/p-b290a970.entry.js +0 -5
  454. package/dist/nano-components/p-c5bb5540.entry.js +0 -5
  455. package/dist/nano-components/p-d8e8d7e3.entry.js +0 -5
  456. package/dist/nano-components/p-e3730878.entry.js +0 -5
  457. package/dist/nano-components/p-efa8c520.entry.js +0 -5
  458. package/dist/nano-components/p-f69f93e9.entry.js +0 -5
  459. package/dist/nano-components/p-f71f69c9.entry.js +0 -5
  460. package/dist/nano-components/p-f71f69c9.entry.js.map +0 -1
  461. package/dist/nano-components/p-fa2a6733.entry.js +0 -5
  462. package/dist/nano-components/p-fa2a6733.entry.js.map +0 -1
  463. package/dist/types/components/global-nav/search-widget.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["src/components/hero/hero.scss?tag=nano-hero&encapsulation=shadow","src/components/hero/hero.tsx"],"names":["heroCss","Hero","this","handleGridChange","e","gridSizes","detail","HeroContent","hasIconBox","hasCtas","h","class","name","onNanoBpChange","xlCols","xlSize","largeScreenBP","gridStates","hasSecondaryContent","hasQuote","[object Object]","breadCrumbs","filter","crumb","tagName","nextElementSibling","classList","contains","forEach","insertAdjacentHTML","iconBoxItems","item","remove","length","add","mo","disconnect","MutationObserver","processSlottedContent","observe","host","childList","querySelector","Array","from","querySelectorAll","hasScrim","hasBg","imgSrc","hasBackBtn","slotChangeObserver","rtl","dir","ownerDocument","Host","join","hero","hero--light","theme","hero--secondary","hero--iconbox","hero--rtl","hero--scrim","hero--breadcrumb","hero--hasbg","hero--backbtn","hero--sub","level","lazy","background","srcSet","imgSrcSet","src"],"mappings":";;;yDAAA,MAAMA,EAAU,osNC8BHC,EAAI,+BA0FPC,KAAAC,iBAAoBC,IAC1BF,KAAKG,UAAYD,EAAEE,QAiBbJ,KAAAK,YAAc,IACb,EACJL,KAAKM,YAAcN,KAAKO,QACvBC,EAAA,MAAA,CAAKC,MAAM,cACTD,EAAA,OAAA,CAAME,KAAK,oBACP,GAIRF,EAAA,MAAA,CAAKC,MAAM,eACTD,EAAA,OAAA,CAAME,KAAK,WAEbF,EAAA,YAAA,CACEG,eAAgBX,KAAKC,iBACrBQ,MAAM,gBACNG,OAAQ,EACRC,OAAQb,KAAKc,eAEbN,EAAA,iBAAA,CAAgBO,WAAW,iBACzBP,EAAA,MAAA,CAAKC,MAAM,qBACTD,EAAA,OAAA,CAAME,KAAK,iBAGfF,EAAA,iBAAA,CACEO,WACEf,KAAKgB,oBACD,8CACA,+CAGNR,EAAA,MAAA,CAAKC,MAAM,iBACTD,EAAA,MAAA,CAAKC,MAAM,yBACTD,EAAA,OAAA,CAAME,KAAK,aACXF,EAAA,MAAA,KACEA,EAAA,OAAA,CAAME,KAAK,wBAKlBV,KAAKgB,qBACJR,EAAA,iBAAA,CAAgBO,WAAW,+CACzBP,EAAA,MAAA,CAAKC,MAAM,mBACTD,EAAA,OAAA,CAAME,KAAK,sBACVV,KAAKM,YACJE,EAAA,MAAA,CAAKC,MAAM,kBACTD,EAAA,OAAA,CAAME,KAAK,aACXF,EAAA,OAAA,CAAME,KAAK,mBAGdV,KAAKiB,UACJT,EAAA,MAAA,CAAKC,MAAM,uBACTD,EAAA,OAAA,CAAMC,MAAM,eACVD,EAAA,OAAA,CAAME,KAAK,WAEbF,EAAA,MAAA,CAAKC,MAAM,sBACTD,EAAA,OAAA,CAAME,KAAK,sCA9JE,kRAyCF,wBAGG,eAGE,kBAGH,MAxC/BQ,mBAEElB,KAAKmB,YACFC,QACEC,GACCA,EAAMC,UAAY,MACjBD,EAAME,mBAAmBC,UAAUC,SAAS,WAEhDC,SAASL,IACRA,EAAMM,mBACJ,WACA,qDAMRT,oBACElB,KAAK4B,aAAaF,SAASG,GAASA,EAAKL,UAAUM,OAAO,UAC1D,GACE9B,KAAK4B,aAAa5B,KAAK4B,aAAaG,OAAS,IAC7C/B,KAAK4B,aAAa5B,KAAK4B,aAAaG,OAAS,GAAGP,UAEhDxB,KAAK4B,aAAa5B,KAAK4B,aAAaG,OAAS,GAAGP,UAAUQ,IAAI,QAmB1Dd,qBACN,GAAIlB,KAAKiC,GAAIjC,KAAKiC,GAAGC,aACrB,MAAMD,EAAMjC,KAAKiC,GAAK,IAAIE,kBAAiB,IACzCnC,KAAKoC,0BAEPH,EAAGI,QAAQrC,KAAKsC,KAAM,CAAEC,UAAW,OAK7BrB,wBACNlB,KAAKO,UAAYP,KAAKsC,KAAKE,cAAc,2BACzCxC,KAAK4B,aAAea,MAAMC,KACxB1C,KAAKsC,KAAKK,iBAAiB,2BAE7B3C,KAAKM,aACDN,KAAKsC,KAAKE,cAAc,wBACxBxC,KAAK4B,aAAaG,OACtB/B,KAAK4C,WAAa5C,KAAKsC,KAAKE,cAAc,kBAC1CxC,KAAKmB,YAAcsB,MAAMC,KACvB1C,KAAKsC,KAAKK,iBAAiB,wBAE7B3C,KAAKgB,sBACDhB,KAAKsC,KAAKE,cAAc,wBACxBxC,KAAKsC,KAAKE,cAAc,qBACxBxC,KAAKsC,KAAKE,cAAc,6BACxBxC,KAAKsC,KAAKE,cAAc,8BAC5BxC,KAAK6C,QACD7C,KAAKsC,KAAKE,cAAc,0BAA4BxC,KAAK8C,OAC7D9C,KAAK+C,aAAe/C,KAAKsC,KAAKE,cAAc,qBAC5CxC,KAAKiB,WAAajB,KAAKsC,KAAKE,cAAc,kBAS5CtB,uBACE,GAAIlB,KAAKiC,GAAIjC,KAAKiC,GAAGC,aAGvBhB,mBACElB,KAAKgD,qBAGP9B,oBACElB,KAAKoC,wBAqEPlB,SACE,MAAM+B,EACJjD,KAAKsC,KAAKY,MAAQ,OACjBlD,KAAKsC,KAAKa,cAA2BD,MAAQ,MAEhD,OACE1C,EAAC4C,EAAI,CACH3C,MAAO,CACLS,CAAClB,KAAKG,UAAUkD,KAAK,MAAO,OAG9B7C,EAAA,MAAA,CACEC,MAAO,CACL6C,KAAM,KACNC,cAAevD,KAAKwD,QAAU,QAC9BC,kBAAmBzD,KAAKgB,oBACxB0C,gBAAiB1D,KAAKM,WACtBqD,YAAaV,EACbW,cAAe5D,KAAK4C,SACpBiB,qBAAsB7D,KAAKmB,YAAYY,OACvC+B,cAAe9D,KAAK6C,MACpBkB,gBAAiB/D,KAAK+C,WACtBiB,YAAahE,KAAKiE,QAAU,QAG9BzD,EAAA,MAAA,CAAKC,MAAM,mBACNT,KAAK8C,QACNtC,EAAA,WAAA,CACEC,MAAM,YACNyD,KAAM,MACNC,WAAU,KACVC,OAAQpE,KAAKqE,UACbC,IAAKtE,KAAK8C,QAEVtC,EAACR,KAAKK,YAAW,QAGnBL,KAAK8C,QAAU,CACftC,EAAA,MAAA,CAAKC,MAAM,iBACTD,EAAA,OAAA,CAAME,KAAK,gBAEbF,EAACR,KAAKK,YAAW","sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/colours';\n\n:host {\n /**\n * @prop --nano-loader-base: Base colour of nano-skeleton. Default depends on theme;\n * @prop --nano-loader-tint: Tint colour of nano-skeleton. Default depends on theme;\n * @prop --theme-color: Text color. Default depends on theme;\n * @prop --theme-tint-color: Color used for bread crumbs and icons. Defaults to #{map.get($colors, lightblue)};\n * @prop --scrim-color: Color of the gradient covering the background. Default depends on theme;\n * @prop --scrim-direction: Direction of the gradient covering the background. Default what content slots are present;\n * @prop --scrim-opacity-from: Starting opactiy of the gradient covering the background. Default .25;\n * @prop --scrim-opacity-to: Final opactiy of the gradient covering the background. Default depends on `theme`;\n * @prop --quote-size: Font size of the quote. Defaults to 1.3em and grows to 3rem on the xl breakpoint;\n */\n\n display: block;\n\n --nano-loader-base: #{map.get($colors, black)};\n --nano-loader-tint: #{lighten(map.get($colors, black), 20%)};\n --theme-color: #{map.get($colors, white)};\n --theme-tint-color: #{map.get($colors, lightblue)};\n --scrim-color: 0, 0, 0;\n --scrim-direction: 90deg;\n --scrim-opacity-from: 0.25;\n --scrim-opacity-to: 0.7;\n --padding: 0;\n --quote-size: 1.3rem;\n\n color: var(--theme-color);\n}\n\n:host(.is-xl) {\n --quote-size: 3rem;\n}\n\n:host([theme='light']) {\n --nano-loader-base: #{map.get($colors, white)};\n --nano-loader-tint: #{lighten(map.get($colors, white), 20%)};\n --theme-color: #{map.get($colors, black)};\n --scrim-color: 255, 255, 255;\n --scrim-opacity-from: 0.25;\n --scrim-opacity-to: 1;\n --scrim-direction: 270deg;\n\n color: var(--theme-color);\n\n .hero__primary-content {\n --color: #{map.get($colors, black)};\n }\n}\n\n.hero {\n position: relative;\n\n &--rtl {\n --scrim-direction: 270deg;\n }\n\n &--secondary:not(.hero--iconbox) {\n --scrim-direction: 0deg;\n }\n\n &__bg-wrap {\n overflow: hidden;\n }\n\n &__bg-slot {\n position: absolute;\n inset: 0;\n }\n\n &__ctas {\n @media (max-width: 52em) {\n display: none;\n }\n\n @media (max-width: 58em) {\n margin-block-end: -48px;\n }\n\n display: flex;\n justify-content: flex-end;\n padding-block: 32px 0;\n padding-inline: 32px;\n margin-block-end: -64px;\n position: relative;\n z-index: 1;\n\n ::slotted(a.button[slot='secondary-ctas']) {\n padding-block: 0.25rem !important;\n padding-inline: 0.5rem !important;\n font-size: 0.875rem !important;\n margin-block: 0 !important;\n margin-inline: 0.25rem !important;\n }\n }\n\n &__img {\n display: block;\n\n --padding: inherit;\n }\n\n &__breadcrumbs {\n display: none;\n margin-block: 20px 0;\n margin-inline: 14px;\n line-height: 14px;\n\n .hero--breadcrumb & {\n display: block;\n }\n\n .is-xl & {\n margin-block: 0;\n margin-inline: 50px;\n max-inline-size: 50%;\n }\n\n .is-xxl & {\n margin-block: 0;\n margin-inline: 83px;\n }\n\n ::slotted(*[slot='breadcrumb']) {\n font-size: 0.85rem;\n text-transform: uppercase;\n letter-spacing: 1.5px;\n font-weight: 600;\n font-stretch: 125%;\n display: inline-block;\n margin-block-end: 16px;\n position: relative;\n z-index: 2;\n\n .hero--hasbg & {\n text-shadow: 1px 1px rgb(0 0 0 / 15%);\n }\n }\n\n ::slotted(a[slot='breadcrumb']) {\n color: var(--theme-tint-color) !important;\n cursor: pointer;\n }\n\n ::slotted(.slash[slot='breadcrumb']) {\n color: var(--theme-color);\n position: relative;\n margin-block: 0;\n margin-inline: 0.5rem;\n display: inline-block;\n }\n }\n\n &__scrim {\n position: absolute;\n inset: 0;\n z-index: 0;\n background:\n linear-gradient(\n var(--scrim-direction),\n rgba(var(--scrim-color), var(--scrim-opacity-from)) 0%,\n rgba(var(--scrim-color), var(--scrim-opacity-to)) 100%\n );\n\n .hero--scrim & {\n background: none;\n }\n }\n\n &__content {\n max-inline-size: 1440px;\n\n --grid-row-gap: 0;\n\n margin-block: 0;\n margin-inline: auto;\n position: relative;\n\n &.is-xl {\n margin-block-start: 50px;\n max-inline-size: 1540px;\n }\n\n &.is-xxl {\n margin-block-start: 83px;\n max-inline-size: 1606px;\n }\n }\n\n &__primary {\n margin: 16px;\n\n .hero--breadcrumb & {\n margin-block: 0;\n margin-inline: 16px;\n }\n\n .hero--backbtn & {\n margin-inline-start: 0;\n }\n\n ::slotted(nano-icon-button[slot='back-btn']) {\n font-size: 2rem;\n }\n\n .is-xl & {\n margin-block: 0 50px;\n margin-inline: 50px 0;\n\n ::slotted(nano-icon-button[slot='back-btn']) {\n margin-block: 0;\n margin-inline: -3rem 0;\n }\n }\n\n .is-xxl & {\n margin-block: 0 83px;\n margin-inline: 83px 0;\n }\n }\n\n &__primary-content {\n max-inline-size: 45rem;\n\n --color: #fff;\n\n display: flex;\n\n .hero--backbtn & {\n > div {\n padding-block: 10px 0;\n padding-inline: 0;\n }\n }\n\n ::slotted(h1[slot='primary-content']) {\n line-height: 26px !important;\n margin-block: 0 18px !important;\n font-size: 2rem !important;\n }\n\n .is-xl & {\n ::slotted(h1[slot='primary-content']) {\n line-height: 31px !important;\n margin-block-end: 30px !important;\n }\n\n ::slotted(.button[slot='primary-content']) {\n margin-block-start: 20px !important;\n }\n }\n }\n\n &__secondary {\n display: none;\n block-size: 100%;\n padding-block: 0 20px;\n padding-inline: 14px;\n\n .hero--secondary & {\n display: flex;\n align-items: center;\n }\n\n .is-xl & {\n padding-block: 0 50px;\n padding-inline: 50px;\n justify-content: flex-end;\n }\n\n .is-xxl & {\n padding-block: 0 83px;\n padding-inline: 83px;\n }\n }\n\n &__icon-box {\n background: rgba(0, 0, 0, 0.7);\n padding: 24px;\n inline-size: 100%;\n margin-block-end: auto;\n display: flex;\n flex-direction: column;\n color: white;\n\n .is-xl & {\n max-inline-size: 410px;\n flex: 0 1 410px;\n }\n\n ::slotted([slot='icon-box-item']) {\n --nano-color-base: var(--theme-tint-color);\n --nano-icon-size: 32px;\n --nano-icon-margin-end: 20px;\n\n display: flex;\n align-items: center;\n font-size: 0.8125rem;\n margin-block-end: 20px;\n }\n\n ::slotted(.last[slot='icon-box-item']) {\n margin-block-end: 0;\n }\n }\n\n &__quote-content {\n margin-block-start: auto;\n text-align: center;\n inline-size: 100%;\n\n .is-xl & {\n max-inline-size: 500px;\n flex: 0 1 500px;\n text-align: initial;\n }\n }\n\n &__quote {\n &::before,\n &::after {\n content: '\"';\n font-size: var(--quote-size);\n font-weight: 700;\n font-style: italic;\n line-height: 0;\n color: #abb6b8;\n display: inline;\n position: relative;\n }\n\n ::slotted([slot='quote']) {\n font-size: var(--quote-size);\n font-weight: 300;\n font-style: italic;\n display: inline;\n }\n }\n\n &__quote-author {\n text-align: end;\n font-size: 1rem;\n opacity: 0.8;\n }\n\n &--sub {\n .hero__content.is-xl {\n margin-block-start: 40px;\n\n .hero__primary {\n margin-block: 0 40px;\n margin-inline: 50px 0;\n }\n\n .hero__secondary {\n padding-block: 0 50px;\n padding-inline: 40px 50px;\n }\n\n ::slotted(.button[slot='primary-content']) {\n margin-block-start: 8px !important;\n }\n\n ::slotted(h1[slot='primary-content']) {\n margin-block-end: 18px !important;\n }\n }\n\n .hero__content.is-xxl {\n .hero__primary {\n margin-block: 0 40px;\n margin-inline: 83px 0;\n }\n\n .hero__secondary {\n padding-block: 0 83px;\n padding-inline: 40px 83px;\n }\n }\n }\n}\n","import {\n Component,\n Prop,\n h,\n ComponentInterface,\n VNode,\n State,\n Element,\n Watch,\n Host,\n} from '@stencil/core';\n/**\n * Hero components are designed to be used once per content page to add visual impact to the introductory section of a page.\n * @slot primary-content - title, leading paragraph and CTA\n * @slot breadcrumb - each individual bread crumb should be assigned seperately\n * @slot secondary-content - free form secondary content.\n * @slot icon-box - free form icon box container\n * @slot icon-box-item - seperate icon box items. Designed to contain 1 icon and 1 text element.\n * @slot secondary-ctas - CTAs. each individual button should be assigned seperately\n * @slot quote - quote content\n * @slot quote-author - quote author\n * @slot scrim - optional background overlay (e.g. faded colour or gradient)\n * @slot background - custom background. Only active when img-src is empty\n * @slot back-btn - a back button.\n */\n@Component({\n tag: 'nano-hero',\n styleUrl: 'hero.scss',\n shadow: true,\n})\nexport class Hero implements ComponentInterface {\n private mo?: MutationObserver;\n\n @Element() host: HTMLNanoHeroElement;\n\n @State() gridSizes: string[] = [];\n @State() hasIconBox: boolean;\n @State() hasScrim: boolean;\n @State() hasSecondaryContent: boolean;\n @State() hasQuote: boolean;\n @State() hasBg: boolean;\n @State() hasBackBtn: boolean;\n @State() hasCtas: boolean;\n @State() breadCrumbs: Element[];\n @Watch('breadCrumbs')\n breadCrumbChange() {\n // safari doesn't support ::slotted()::after ... so this :/\n this.breadCrumbs\n .filter(\n (crumb) =>\n crumb.tagName === 'A' &&\n !crumb.nextElementSibling.classList.contains('slash')\n )\n .forEach((crumb) => {\n crumb.insertAdjacentHTML(\n 'afterend',\n '<span slot=\"breadcrumb\" class=\"slash\">/</span>'\n );\n });\n }\n @State() iconBoxItems: Element[];\n @Watch('iconBoxItems')\n iconBoxItemChange() {\n this.iconBoxItems.forEach((item) => item.classList.remove('last'));\n if (\n this.iconBoxItems[this.iconBoxItems.length - 1] &&\n this.iconBoxItems[this.iconBoxItems.length - 1].classList\n )\n this.iconBoxItems[this.iconBoxItems.length - 1].classList.add('last');\n }\n\n /** src for backgronund image. For more control use the `background` slot instead. */\n @Prop() imgSrc?: string;\n\n /** Optional list string providing media sizes with corresponding image srcs.\n * i.e. show img-x at 300px wide. Format `srcSet=\"200w src/imgSmall.jpg, 500h src/imgMed.png\"` */\n @Prop() imgSrcSet?: string = null;\n\n /** The Break Point width that the hero component will change to the large view. Defaults to the XL grid size (900px) */\n @Prop() largeScreenBP: number = 900;\n\n /** Base style for the hero. Either 'light' (white bg / dark text), or 'dark' (dark bg / white text) */\n @Prop() theme: 'dark' | 'light' = 'dark';\n\n /** Set the content structure level of the hero. Defaults to 'top' */\n @Prop() level: 'top' | 'sub' = 'top';\n\n private slotChangeObserver() {\n if (this.mo) this.mo.disconnect();\n const mo = (this.mo = new MutationObserver(() =>\n this.processSlottedContent()\n ));\n mo.observe(this.host, { childList: true });\n }\n\n // Event handlers\n\n private processSlottedContent() {\n this.hasCtas = !!this.host.querySelector('[slot=\"secondary-ctas\"]');\n this.iconBoxItems = Array.from(\n this.host.querySelectorAll('[slot=\"icon-box-item\"]')\n );\n this.hasIconBox =\n !!this.host.querySelector('[slot=\"icon-box\"]') ||\n !!this.iconBoxItems.length;\n this.hasScrim = !!this.host.querySelector('[slot=\"scrim\"]');\n this.breadCrumbs = Array.from(\n this.host.querySelectorAll('[slot=\"breadcrumb\"]')\n );\n this.hasSecondaryContent =\n !!this.host.querySelector('[slot=\"icon-box\"]') ||\n !!this.host.querySelector('[slot=\"quote\"]') ||\n !!this.host.querySelector('[slot=\"icon-box-item\"]') ||\n !!this.host.querySelector('[slot=\"secondary-content\"]');\n this.hasBg =\n !!this.host.querySelector('[slot=\"background\"]') || !!this.imgSrc;\n this.hasBackBtn = !!this.host.querySelector('[slot=\"back-btn\"]');\n this.hasQuote = !!this.host.querySelector('[slot=\"quote\"]');\n }\n\n private handleGridChange = (e: CustomEvent & { detail: string[] }) => {\n this.gridSizes = e.detail;\n };\n\n // Component lifecycle\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n }\n\n componentDidLoad() {\n this.slotChangeObserver();\n }\n\n componentWillLoad() {\n this.processSlottedContent();\n }\n\n private HeroContent = (): VNode[] => {\n return [\n !this.hasIconBox && this.hasCtas ? (\n <div class=\"hero__ctas\">\n <slot name=\"secondary-ctas\" />\n </div>\n ) : (\n ''\n ),\n <div class=\"hero__scrim\">\n <slot name=\"scrim\" />\n </div>,\n <nano-grid\n onNanoBpChange={this.handleGridChange}\n class=\"hero__content\"\n xlCols={2}\n xlSize={this.largeScreenBP}\n >\n <nano-grid-item gridStates=\"xl-col-span-2\">\n <div class=\"hero__breadcrumbs\">\n <slot name=\"breadcrumb\" />\n </div>\n </nano-grid-item>\n <nano-grid-item\n gridStates={\n this.hasSecondaryContent\n ? 'xl-col-span-1 xl-col-start-1 xl-row-start-2'\n : 'xl-col-span-2 xl-col-start-1 xl-row-start-2'\n }\n >\n <div class=\"hero__primary\">\n <div class=\"hero__primary-content\">\n <slot name=\"back-btn\" />\n <div>\n <slot name=\"primary-content\" />\n </div>\n </div>\n </div>\n </nano-grid-item>\n {this.hasSecondaryContent && (\n <nano-grid-item gridStates=\"xl-col-span-1 xl-col-start-2 xl-row-start-2\">\n <div class=\"hero__secondary\">\n <slot name=\"secondary-content\" />\n {this.hasIconBox && (\n <div class=\"hero__icon-box\">\n <slot name=\"icon-box\" />\n <slot name=\"icon-box-item\" />\n </div>\n )}\n {this.hasQuote && (\n <div class=\"hero__quote-content\">\n <span class=\"hero__quote\">\n <slot name=\"quote\" />\n </span>\n <div class=\"hero__quote-author\">\n <slot name=\"quote-author\" />\n </div>\n </div>\n )}\n </div>\n </nano-grid-item>\n )}\n </nano-grid>,\n ];\n };\n\n render() {\n const rtl =\n this.host.dir === 'rtl' ||\n (this.host.ownerDocument as Document).dir === 'rtl';\n\n return (\n <Host\n class={{\n [this.gridSizes.join(' ')]: true,\n }}\n >\n <div\n class={{\n hero: true,\n 'hero--light': this.theme === 'light',\n 'hero--secondary': this.hasSecondaryContent,\n 'hero--iconbox': this.hasIconBox,\n 'hero--rtl': rtl,\n 'hero--scrim': this.hasScrim,\n 'hero--breadcrumb': !!this.breadCrumbs.length,\n 'hero--hasbg': this.hasBg,\n 'hero--backbtn': this.hasBackBtn,\n 'hero--sub': this.level === 'sub',\n }}\n >\n <div class=\"hero__bg-wrap\">\n {!!this.imgSrc && (\n <nano-img\n class=\"hero__img\"\n lazy={false}\n background\n srcSet={this.imgSrcSet}\n src={this.imgSrc}\n >\n <this.HeroContent />\n </nano-img>\n )}\n {!this.imgSrc && [\n <div class=\"hero__bg-slot\">\n <slot name=\"background\" />\n </div>,\n <this.HeroContent />,\n ]}\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["src/components/hero/hero.scss?tag=nano-hero&encapsulation=shadow","src/components/hero/hero.tsx"],"names":["heroCss","Hero","this","handleGridChange","e","gridSizes","detail","HeroContent","hasIconBox","hasCtas","h","class","name","onNanoBpChange","xlCols","xlSize","largeScreenBP","gridStates","hasSecondaryContent","hasQuote","[object Object]","breadCrumbs","filter","crumb","tagName","nextElementSibling","classList","contains","forEach","insertAdjacentHTML","iconBoxItems","item","remove","length","add","mo","disconnect","MutationObserver","processSlottedContent","observe","host","childList","querySelector","Array","from","querySelectorAll","hasScrim","hasBg","imgSrc","hasBackBtn","slotChangeObserver","rtl","dir","ownerDocument","Host","join","hero","hero--light","theme","hero--secondary","hero--iconbox","hero--rtl","hero--scrim","hero--breadcrumb","hero--hasbg","hero--backbtn","hero--sub","level","lazy","background","srcSet","imgSrcSet","src"],"mappings":"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","sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/colours';\n\n:host {\n /**\n * @prop --nano-loader-base: Base colour of nano-skeleton. Default depends on theme;\n * @prop --nano-loader-tint: Tint colour of nano-skeleton. Default depends on theme;\n * @prop --theme-color: Text color. Default depends on theme;\n * @prop --theme-tint-color: Color used for bread crumbs and icons. Defaults to #{map.get($colors, lightblue)};\n * @prop --scrim-color: Color of the gradient covering the background. Default depends on theme;\n * @prop --scrim-direction: Direction of the gradient covering the background. Default what content slots are present;\n * @prop --scrim-opacity-from: Starting opactiy of the gradient covering the background. Default .25;\n * @prop --scrim-opacity-to: Final opactiy of the gradient covering the background. Default depends on `theme`;\n * @prop --quote-size: Font size of the quote. Defaults to 1.3em and grows to 3rem on the xl breakpoint;\n */\n\n display: block;\n\n --nano-loader-base: #{map.get($colors, black)};\n --nano-loader-tint: #{lighten(map.get($colors, black), 20%)};\n --theme-color: #{map.get($colors, white)};\n --theme-tint-color: #{map.get($colors, lightblue)};\n --scrim-color: 0, 0, 0;\n --scrim-direction: 90deg;\n --scrim-opacity-from: 0.25;\n --scrim-opacity-to: 0.7;\n --padding: 0;\n --quote-size: 1.3rem;\n\n color: var(--theme-color);\n}\n\n:host(.is-xl) {\n --quote-size: 3rem;\n}\n\n:host([theme='light']) {\n --nano-loader-base: #{map.get($colors, white)};\n --nano-loader-tint: #{lighten(map.get($colors, white), 20%)};\n --theme-color: #{map.get($colors, black)};\n --scrim-color: 255, 255, 255;\n --scrim-opacity-from: 0.25;\n --scrim-opacity-to: 1;\n --scrim-direction: 270deg;\n\n color: var(--theme-color);\n\n .hero__primary-content {\n --color: #{map.get($colors, black)};\n }\n}\n\n.hero {\n position: relative;\n\n &--rtl {\n --scrim-direction: 270deg;\n }\n\n &--secondary:not(.hero--iconbox) {\n --scrim-direction: 0deg;\n }\n\n &__bg-wrap {\n overflow: hidden;\n }\n\n &__bg-slot {\n position: absolute;\n inset: 0;\n }\n\n &__ctas {\n @media (max-width: 52em) {\n display: none;\n }\n\n @media (max-width: 58em) {\n margin-block-end: -48px;\n }\n\n display: flex;\n justify-content: flex-end;\n padding-block: 32px 0;\n padding-inline: 32px;\n margin-block-end: -64px;\n position: relative;\n z-index: 1;\n\n ::slotted(a.button[slot='secondary-ctas']) {\n padding-block: 0.25rem !important;\n padding-inline: 0.5rem !important;\n font-size: 0.875rem !important;\n margin-block: 0 !important;\n margin-inline: 0.25rem !important;\n }\n }\n\n &__img {\n display: block;\n\n --padding: inherit;\n }\n\n &__breadcrumbs {\n display: none;\n margin-block: 20px 0;\n margin-inline: 14px;\n line-height: 14px;\n\n .hero--breadcrumb & {\n display: block;\n }\n\n .is-xl & {\n margin-block: 0;\n margin-inline: 50px;\n max-inline-size: 50%;\n }\n\n .is-xxl & {\n margin-block: 0;\n margin-inline: 83px;\n }\n\n ::slotted(*[slot='breadcrumb']) {\n font-size: 0.85rem;\n text-transform: uppercase;\n letter-spacing: 1.5px;\n font-weight: 600;\n font-stretch: 125%;\n display: inline-block;\n margin-block-end: 16px;\n position: relative;\n z-index: 2;\n\n .hero--hasbg & {\n text-shadow: 1px 1px rgb(0 0 0 / 15%);\n }\n }\n\n ::slotted(a[slot='breadcrumb']) {\n color: var(--theme-tint-color) !important;\n cursor: pointer;\n }\n\n ::slotted(.slash[slot='breadcrumb']) {\n color: var(--theme-color);\n position: relative;\n margin-block: 0;\n margin-inline: 0.5rem;\n display: inline-block;\n }\n }\n\n &__scrim {\n position: absolute;\n inset: 0;\n z-index: 0;\n background:\n linear-gradient(\n var(--scrim-direction),\n rgba(var(--scrim-color), var(--scrim-opacity-from)) 0%,\n rgba(var(--scrim-color), var(--scrim-opacity-to)) 100%\n );\n\n .hero--scrim & {\n background: none;\n }\n }\n\n &__content {\n max-inline-size: 1440px;\n\n --grid-row-gap: 0;\n\n margin-block: 0;\n margin-inline: auto;\n position: relative;\n\n &.is-xl {\n margin-block-start: 50px;\n max-inline-size: 1540px;\n }\n\n &.is-xxl {\n margin-block-start: 83px;\n max-inline-size: 1606px;\n }\n }\n\n &__primary {\n margin: 16px;\n\n .hero--breadcrumb & {\n margin-block: 0;\n margin-inline: 16px;\n }\n\n .hero--backbtn & {\n margin-inline-start: 0;\n }\n\n ::slotted(nano-icon-button[slot='back-btn']) {\n font-size: 2rem;\n }\n\n .is-xl & {\n margin-block: 0 50px;\n margin-inline: 50px 0;\n\n ::slotted(nano-icon-button[slot='back-btn']) {\n margin-block: 0;\n margin-inline: -3rem 0;\n }\n }\n\n .is-xxl & {\n margin-block: 0 83px;\n margin-inline: 83px 0;\n }\n }\n\n &__primary-content {\n max-inline-size: 45rem;\n\n --color: #fff;\n\n display: flex;\n\n .hero--backbtn & {\n > div {\n padding-block: 10px 0;\n padding-inline: 0;\n }\n }\n\n ::slotted(h1[slot='primary-content']) {\n line-height: 26px !important;\n margin-block: 0 18px !important;\n font-size: 2rem !important;\n }\n\n .is-xl & {\n ::slotted(h1[slot='primary-content']) {\n line-height: 31px !important;\n margin-block-end: 30px !important;\n }\n\n ::slotted(.button[slot='primary-content']) {\n margin-block-start: 20px !important;\n }\n }\n }\n\n &__secondary {\n display: none;\n block-size: 100%;\n padding-block: 0 20px;\n padding-inline: 14px;\n\n .hero--secondary & {\n display: flex;\n align-items: center;\n }\n\n .is-xl & {\n padding-block: 0 50px;\n padding-inline: 50px;\n justify-content: flex-end;\n }\n\n .is-xxl & {\n padding-block: 0 83px;\n padding-inline: 83px;\n }\n }\n\n &__icon-box {\n background: rgba(0, 0, 0, 0.7);\n padding: 24px;\n inline-size: 100%;\n margin-block-end: auto;\n display: flex;\n flex-direction: column;\n color: white;\n\n .is-xl & {\n max-inline-size: 410px;\n flex: 0 1 410px;\n }\n\n ::slotted([slot='icon-box-item']) {\n --nano-color-base: var(--theme-tint-color);\n --nano-icon-size: 32px;\n --nano-icon-margin-end: 20px;\n\n display: flex;\n align-items: center;\n font-size: 0.8125rem;\n margin-block-end: 20px;\n }\n\n ::slotted(.last[slot='icon-box-item']) {\n margin-block-end: 0;\n }\n }\n\n &__quote-content {\n margin-block-start: auto;\n text-align: center;\n inline-size: 100%;\n\n .is-xl & {\n max-inline-size: 500px;\n flex: 0 1 500px;\n text-align: initial;\n }\n }\n\n &__quote {\n &::before,\n &::after {\n content: '\"';\n font-size: var(--quote-size);\n font-weight: 700;\n font-style: italic;\n line-height: 0;\n color: #abb6b8;\n display: inline;\n position: relative;\n }\n\n ::slotted([slot='quote']) {\n font-size: var(--quote-size);\n font-weight: 300;\n font-style: italic;\n display: inline;\n }\n }\n\n &__quote-author {\n text-align: end;\n font-size: 1rem;\n opacity: 0.8;\n }\n\n &--sub {\n .hero__content.is-xl {\n margin-block-start: 40px;\n\n .hero__primary {\n margin-block: 0 40px;\n margin-inline: 50px 0;\n }\n\n .hero__secondary {\n padding-block: 0 50px;\n padding-inline: 40px 50px;\n }\n\n ::slotted(.button[slot='primary-content']) {\n margin-block-start: 8px !important;\n }\n\n ::slotted(h1[slot='primary-content']) {\n margin-block-end: 18px !important;\n }\n }\n\n .hero__content.is-xxl {\n .hero__primary {\n margin-block: 0 40px;\n margin-inline: 83px 0;\n }\n\n .hero__secondary {\n padding-block: 0 83px;\n padding-inline: 40px 83px;\n }\n }\n }\n}\n","import {\n Component,\n Prop,\n h,\n ComponentInterface,\n VNode,\n State,\n Element,\n Watch,\n Host,\n} from '@stencil/core';\n/**\n * Hero components are designed to be used once per content page to add visual impact to the introductory section of a page.\n * @slot primary-content - title, leading paragraph and CTA\n * @slot breadcrumb - each individual bread crumb should be assigned seperately\n * @slot secondary-content - free form secondary content.\n * @slot icon-box - free form icon box container\n * @slot icon-box-item - seperate icon box items. Designed to contain 1 icon and 1 text element.\n * @slot secondary-ctas - CTAs. each individual button should be assigned seperately\n * @slot quote - quote content\n * @slot quote-author - quote author\n * @slot scrim - optional background overlay (e.g. faded colour or gradient)\n * @slot background - custom background. Only active when img-src is empty\n * @slot back-btn - a back button.\n */\n@Component({\n tag: 'nano-hero',\n styleUrl: 'hero.scss',\n shadow: true,\n})\nexport class Hero implements ComponentInterface {\n private mo?: MutationObserver;\n\n @Element() host: HTMLNanoHeroElement;\n\n @State() gridSizes: string[] = [];\n @State() hasIconBox: boolean;\n @State() hasScrim: boolean;\n @State() hasSecondaryContent: boolean;\n @State() hasQuote: boolean;\n @State() hasBg: boolean;\n @State() hasBackBtn: boolean;\n @State() hasCtas: boolean;\n @State() breadCrumbs: Element[];\n @Watch('breadCrumbs')\n breadCrumbChange() {\n // safari doesn't support ::slotted()::after ... so this :/\n this.breadCrumbs\n .filter(\n (crumb) =>\n crumb.tagName === 'A' &&\n !crumb.nextElementSibling.classList.contains('slash')\n )\n .forEach((crumb) => {\n crumb.insertAdjacentHTML(\n 'afterend',\n '<span slot=\"breadcrumb\" class=\"slash\">/</span>'\n );\n });\n }\n @State() iconBoxItems: Element[];\n @Watch('iconBoxItems')\n iconBoxItemChange() {\n this.iconBoxItems.forEach((item) => item.classList.remove('last'));\n if (\n this.iconBoxItems[this.iconBoxItems.length - 1] &&\n this.iconBoxItems[this.iconBoxItems.length - 1].classList\n )\n this.iconBoxItems[this.iconBoxItems.length - 1].classList.add('last');\n }\n\n /** src for backgronund image. For more control use the `background` slot instead. */\n @Prop() imgSrc?: string;\n\n /** Optional list string providing media sizes with corresponding image srcs.\n * i.e. show img-x at 300px wide. Format `srcSet=\"200w src/imgSmall.jpg, 500h src/imgMed.png\"` */\n @Prop() imgSrcSet?: string = null;\n\n /** The Break Point width that the hero component will change to the large view. Defaults to the XL grid size (900px) */\n @Prop() largeScreenBP: number = 900;\n\n /** Base style for the hero. Either 'light' (white bg / dark text), or 'dark' (dark bg / white text) */\n @Prop() theme: 'dark' | 'light' = 'dark';\n\n /** Set the content structure level of the hero. Defaults to 'top' */\n @Prop() level: 'top' | 'sub' = 'top';\n\n private slotChangeObserver() {\n if (this.mo) this.mo.disconnect();\n const mo = (this.mo = new MutationObserver(() =>\n this.processSlottedContent()\n ));\n mo.observe(this.host, { childList: true });\n }\n\n // Event handlers\n\n private processSlottedContent() {\n this.hasCtas = !!this.host.querySelector('[slot=\"secondary-ctas\"]');\n this.iconBoxItems = Array.from(\n this.host.querySelectorAll('[slot=\"icon-box-item\"]')\n );\n this.hasIconBox =\n !!this.host.querySelector('[slot=\"icon-box\"]') ||\n !!this.iconBoxItems.length;\n this.hasScrim = !!this.host.querySelector('[slot=\"scrim\"]');\n this.breadCrumbs = Array.from(\n this.host.querySelectorAll('[slot=\"breadcrumb\"]')\n );\n this.hasSecondaryContent =\n !!this.host.querySelector('[slot=\"icon-box\"]') ||\n !!this.host.querySelector('[slot=\"quote\"]') ||\n !!this.host.querySelector('[slot=\"icon-box-item\"]') ||\n !!this.host.querySelector('[slot=\"secondary-content\"]');\n this.hasBg =\n !!this.host.querySelector('[slot=\"background\"]') || !!this.imgSrc;\n this.hasBackBtn = !!this.host.querySelector('[slot=\"back-btn\"]');\n this.hasQuote = !!this.host.querySelector('[slot=\"quote\"]');\n }\n\n private handleGridChange = (e: CustomEvent & { detail: string[] }) => {\n this.gridSizes = e.detail;\n };\n\n // Component lifecycle\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n }\n\n componentDidLoad() {\n this.slotChangeObserver();\n }\n\n componentWillLoad() {\n this.processSlottedContent();\n }\n\n private HeroContent = (): VNode[] => {\n return [\n !this.hasIconBox && this.hasCtas ? (\n <div class=\"hero__ctas\">\n <slot name=\"secondary-ctas\" />\n </div>\n ) : (\n ''\n ),\n <div class=\"hero__scrim\">\n <slot name=\"scrim\" />\n </div>,\n <nano-grid\n onNanoBpChange={this.handleGridChange}\n class=\"hero__content\"\n xlCols={2}\n xlSize={this.largeScreenBP}\n >\n <nano-grid-item gridStates=\"xl-col-span-2\">\n <div class=\"hero__breadcrumbs\">\n <slot name=\"breadcrumb\" />\n </div>\n </nano-grid-item>\n <nano-grid-item\n gridStates={\n this.hasSecondaryContent\n ? 'xl-col-span-1 xl-col-start-1 xl-row-start-2'\n : 'xl-col-span-2 xl-col-start-1 xl-row-start-2'\n }\n >\n <div class=\"hero__primary\">\n <div class=\"hero__primary-content\">\n <slot name=\"back-btn\" />\n <div>\n <slot name=\"primary-content\" />\n </div>\n </div>\n </div>\n </nano-grid-item>\n {this.hasSecondaryContent && (\n <nano-grid-item gridStates=\"xl-col-span-1 xl-col-start-2 xl-row-start-2\">\n <div class=\"hero__secondary\">\n <slot name=\"secondary-content\" />\n {this.hasIconBox && (\n <div class=\"hero__icon-box\">\n <slot name=\"icon-box\" />\n <slot name=\"icon-box-item\" />\n </div>\n )}\n {this.hasQuote && (\n <div class=\"hero__quote-content\">\n <span class=\"hero__quote\">\n <slot name=\"quote\" />\n </span>\n <div class=\"hero__quote-author\">\n <slot name=\"quote-author\" />\n </div>\n </div>\n )}\n </div>\n </nano-grid-item>\n )}\n </nano-grid>,\n ];\n };\n\n render() {\n const rtl =\n this.host.dir === 'rtl' ||\n (this.host.ownerDocument as Document).dir === 'rtl';\n\n return (\n <Host\n class={{\n [this.gridSizes.join(' ')]: true,\n }}\n >\n <div\n class={{\n hero: true,\n 'hero--light': this.theme === 'light',\n 'hero--secondary': this.hasSecondaryContent,\n 'hero--iconbox': this.hasIconBox,\n 'hero--rtl': rtl,\n 'hero--scrim': this.hasScrim,\n 'hero--breadcrumb': !!this.breadCrumbs.length,\n 'hero--hasbg': this.hasBg,\n 'hero--backbtn': this.hasBackBtn,\n 'hero--sub': this.level === 'sub',\n }}\n >\n <div class=\"hero__bg-wrap\">\n {!!this.imgSrc && (\n <nano-img\n class=\"hero__img\"\n lazy={false}\n background\n srcSet={this.imgSrcSet}\n src={this.imgSrc}\n >\n <this.HeroContent />\n </nano-img>\n )}\n {!this.imgSrc && [\n <div class=\"hero__bg-slot\">\n <slot name=\"background\" />\n </div>,\n <this.HeroContent />,\n ]}\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Web Components for Nanopore digital Web Apps
3
+ */
4
+ import{r,h as a,g as e}from"./p-1fe12320.js";const o=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--height:1em;--track-color:rgba(var(--nano-track-rgb, 228, 230, 232), 1);--indicator-color:rgba(var(--nano-indicator-rgb, 84, 140, 175), 1);--label-color:var(--nano-color-white, white);display:block}.progress-bar{position:relative;background-color:var(--track-color);height:var(--height);border-radius:var(--nano-layer-border-radius, var(--nano-border-radius-medium, 4px));overflow:hidden}.progress-bar__indicator{height:100%;font-size:0.75em;background-color:var(--indicator-color);color:var(--label-color);text-align:center;white-space:nowrap;overflow:hidden;transition:0.4s width, 0.4s background-color;transform:translateZ(0);-webkit-user-select:none;user-select:none;transform-origin:left}.progress-bar--indeterminate .progress-bar__indicator{animation:indeterminate 2.5s infinite cubic-bezier(0.37, 0, 0.63, 1)}@keyframes indeterminate{0%{scale:1 1;transform:translateX(-100%) translateZ(0)}75%,100%{scale:1 1;transform:translateX(100%) translateZ(0)}}";const t=class{constructor(a){r(this,a);this.value=0;this.indeterminate=false;this.showPercent=false}render(){return a("div",{part:"base",class:{"progress-bar":true,"progress-bar--indeterminate":this.indeterminate},role:"progressbar",title:this.host.title||undefined,"aria-label":"Progress","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":this.indeterminate?null:this.value},a("div",{part:"indicator",class:"progress-bar__indicator",style:{width:!this.indeterminate?`${this.value}%`:undefined}},a("span",{part:"label",class:"progress-bar__label"},a("slot",null,!this.indeterminate&&this.showPercent?`${this.value}%`:""))))}get host(){return e(this)}};t.style=o;export{t as nano_progress_bar};
5
+ //# sourceMappingURL=p-f43d1d8e.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["src/components/progress-bar/progress-bar.scss?tag=nano-progress-bar&encapsulation=shadow","src/components/progress-bar/progress-bar.tsx"],"names":["progressBarCss","ProgressBar","[object Object]","h","part","class","progress-bar","progress-bar--indeterminate","this","indeterminate","role","title","host","undefined","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","value","style","width","showPercent"],"mappings":";;;6CAAA,MAAMA,EAAiB,2nDCiBVC,EAAW,0CAIN,qBAGQ,uBAGF,MAEtBC,SACE,OACEC,EAAA,MAAA,CACEC,KAAK,OACLC,MAAO,CACLC,eAAgB,KAChBC,8BAA+BC,KAAKC,eAEtCC,KAAK,cACLC,MAAOH,KAAKI,KAAKD,OAASE,UAASC,aACxB,WAAUC,gBACP,IAAGC,gBACH,MAAKC,gBACJT,KAAKC,cAAgB,KAAOD,KAAKU,OAEhDf,EAAA,MAAA,CACEC,KAAK,YACLC,MAAM,0BACNc,MAAO,CACLC,OAAQZ,KAAKC,cAAgB,GAAGD,KAAKU,SAAWL,YAGlDV,EAAA,OAAA,CAAMC,KAAK,QAAQC,MAAM,uBACvBF,EAAA,OAAA,MACIK,KAAKC,eAAiBD,KAAKa,YAAc,GAAGb,KAAKU,SAAW","sourcesContent":["@import '../../global/style/nano-theme/components';\n@import '../../global/style/nano-theme/layers';\n\n/**\n * @prop --height: The progress bar's height. Default 1em\n * @prop --track-color: The track color. Default rgba(#{$progress-track-color-rgb}, 1);\n * @prop --indicator-color: The indicator color. Default rgba(#{$progress-indicator-color-rgb}, 1);\n * @prop --label-color: The label color. Default var(--nano-color-white, white);\n */\n:host {\n --height: 1em;\n --track-color: rgba(#{$progress-track-color-rgb}, 1);\n --indicator-color: rgba(#{$progress-indicator-color-rgb}, 1);\n --label-color: var(--nano-color-white, white);\n\n display: block;\n}\n\n.progress-bar {\n position: relative;\n background-color: var(--track-color);\n height: var(--height);\n border-radius: $layer-border-radius;\n overflow: hidden;\n}\n\n.progress-bar__indicator {\n height: 100%;\n font-size: 0.75em;\n background-color: var(--indicator-color);\n color: var(--label-color);\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n transition: 0.4s width, 0.4s background-color;\n transform: translateZ(0);\n user-select: none;\n transform-origin: left;\n}\n\n// Indeterminate\n.progress-bar--indeterminate .progress-bar__indicator {\n animation: indeterminate 2.5s infinite cubic-bezier(0.37, 0, 0.63, 1);\n}\n\n@keyframes indeterminate {\n 0% {\n scale: 1 1;\n transform: translateX(-100%) translateZ(0);\n }\n\n 75%,\n 100% {\n scale: 1 1;\n transform: translateX(100%) translateZ(0);\n }\n}\n","import { Component, Prop, h, Element } from '@stencil/core';\n\n/**\n * Used to show the status of an ongoing operation.\n *\n * @slot - A label to show inside the indicator.\n *\n * @part base - The component's base wrapper.\n * @part indicator - The progress bar indicator.\n * @part label - The progress bar label.\n */\n\n@Component({\n tag: 'nano-progress-bar',\n styleUrl: 'progress-bar.scss',\n shadow: true,\n})\nexport class ProgressBar {\n @Element() host: HTMLNanoProgressBarElement;\n\n /** The progress bar's percentage, 0 to 100. */\n @Prop() value = 0;\n\n /** When true, percentage is ignored, the label is hidden, and the progress bar is drawn in an indeterminate state. */\n @Prop() indeterminate = false;\n\n /** Whether to show the progress bar's current percent as text. Will be overwritten if you use the default slot. */\n @Prop() showPercent = false;\n\n render() {\n return (\n <div\n part=\"base\"\n class={{\n 'progress-bar': true,\n 'progress-bar--indeterminate': this.indeterminate,\n }}\n role=\"progressbar\"\n title={this.host.title || undefined}\n aria-label=\"Progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-valuenow={this.indeterminate ? null : this.value}\n >\n <div\n part=\"indicator\"\n class=\"progress-bar__indicator\"\n style={{\n width: !this.indeterminate ? `${this.value}%` : undefined,\n }}\n >\n <span part=\"label\" class=\"progress-bar__label\">\n <slot>\n {!this.indeterminate && this.showPercent ? `${this.value}%` : ''}\n </slot>\n </span>\n </div>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["src/components/progress-bar/progress-bar.scss?tag=nano-progress-bar&encapsulation=shadow","src/components/progress-bar/progress-bar.tsx"],"names":["progressBarCss","ProgressBar","[object Object]","h","part","class","progress-bar","progress-bar--indeterminate","this","indeterminate","role","title","host","undefined","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","value","style","width","showPercent"],"mappings":";;;6CAAA,MAAMA,EAAiB,qjCCiBVC,EAAW,0CAIN,qBAGQ,uBAGF,MAEtBC,SACE,OACEC,EAAA,MAAA,CACEC,KAAK,OACLC,MAAO,CACLC,eAAgB,KAChBC,8BAA+BC,KAAKC,eAEtCC,KAAK,cACLC,MAAOH,KAAKI,KAAKD,OAASE,UAASC,aACxB,WAAUC,gBACP,IAAGC,gBACH,MAAKC,gBACJT,KAAKC,cAAgB,KAAOD,KAAKU,OAEhDf,EAAA,MAAA,CACEC,KAAK,YACLC,MAAM,0BACNc,MAAO,CACLC,OAAQZ,KAAKC,cAAgB,GAAGD,KAAKU,SAAWL,YAGlDV,EAAA,OAAA,CAAMC,KAAK,QAAQC,MAAM,uBACvBF,EAAA,OAAA,MACIK,KAAKC,eAAiBD,KAAKa,YAAc,GAAGb,KAAKU,SAAW","sourcesContent":["@import '../../global/style/nano-theme/components';\n@import '../../global/style/nano-theme/layers';\n\n/**\n * @prop --height: The progress bar's height. Default 1em\n * @prop --track-color: The track color. Default rgba(#{$progress-track-color-rgb}, 1);\n * @prop --indicator-color: The indicator color. Default rgba(#{$progress-indicator-color-rgb}, 1);\n * @prop --label-color: The label color. Default var(--nano-color-white, white);\n */\n:host {\n --height: 1em;\n --track-color: rgba(#{$progress-track-color-rgb}, 1);\n --indicator-color: rgba(#{$progress-indicator-color-rgb}, 1);\n --label-color: var(--nano-color-white, white);\n\n display: block;\n}\n\n.progress-bar {\n position: relative;\n background-color: var(--track-color);\n height: var(--height);\n border-radius: $layer-border-radius;\n overflow: hidden;\n}\n\n.progress-bar__indicator {\n height: 100%;\n font-size: 0.75em;\n background-color: var(--indicator-color);\n color: var(--label-color);\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n transition: 0.4s width, 0.4s background-color;\n transform: translateZ(0);\n user-select: none;\n transform-origin: left;\n}\n\n// Indeterminate\n.progress-bar--indeterminate .progress-bar__indicator {\n animation: indeterminate 2.5s infinite cubic-bezier(0.37, 0, 0.63, 1);\n}\n\n@keyframes indeterminate {\n 0% {\n scale: 1 1;\n transform: translateX(-100%) translateZ(0);\n }\n\n 75%,\n 100% {\n scale: 1 1;\n transform: translateX(100%) translateZ(0);\n }\n}\n","import { Component, Prop, h, Element } from '@stencil/core';\n\n/**\n * Used to show the status of an ongoing operation.\n *\n * @slot - A label to show inside the indicator.\n *\n * @part base - The component's base wrapper.\n * @part indicator - The progress bar indicator.\n * @part label - The progress bar label.\n */\n\n@Component({\n tag: 'nano-progress-bar',\n styleUrl: 'progress-bar.scss',\n shadow: true,\n})\nexport class ProgressBar {\n @Element() host: HTMLNanoProgressBarElement;\n\n /** The progress bar's percentage, 0 to 100. */\n @Prop() value = 0;\n\n /** When true, percentage is ignored, the label is hidden, and the progress bar is drawn in an indeterminate state. */\n @Prop() indeterminate = false;\n\n /** Whether to show the progress bar's current percent as text. Will be overwritten if you use the default slot. */\n @Prop() showPercent = false;\n\n render() {\n return (\n <div\n part=\"base\"\n class={{\n 'progress-bar': true,\n 'progress-bar--indeterminate': this.indeterminate,\n }}\n role=\"progressbar\"\n title={this.host.title || undefined}\n aria-label=\"Progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-valuenow={this.indeterminate ? null : this.value}\n >\n <div\n part=\"indicator\"\n class=\"progress-bar__indicator\"\n style={{\n width: !this.indeterminate ? `${this.value}%` : undefined,\n }}\n >\n <span part=\"label\" class=\"progress-bar__label\">\n <slot>\n {!this.indeterminate && this.showPercent ? `${this.value}%` : ''}\n </slot>\n </span>\n </div>\n </div>\n );\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Web Components for Nanopore digital Web Apps
3
+ */
4
+ import{r as t,h as a,a as n,g as e}from"./p-1fe12320.js";const s=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{display:block;transform:translate3d(0, 0, 0);animation:opacity 0.3s ease-in-out forwards;opacity:1}@media only screen and (max-width: 768px){:host([animation-dir=left]){animation:slide-right 0.3s ease-in-out;opacity:1}:host([animation-dir=right]){animation:slide-left 0.3s ease-in-out;opacity:1}}.nano-tab-content{position:relative}@keyframes opacity{0%{opacity:0}100%{opacity:100%}}@keyframes slide-left{0%{transform:translate3d(-100%, 0, 0)}50%{transform:translate3d(0%) translate3d(-0.9em)}100%{transform:translate3d(0, 0, 0)}}@keyframes slide-right{0%{transform:translate3d(100%, 0, 0)}50%{transform:translateX(0%) translate3d(0.9em)}100%{transform:translate3d(0, 0, 0)}}@media (prefers-reduced-motion: reduce){*{animation:none !important}}";let o=0;const r=class{constructor(a){t(this,a);this.tabContentId=`nano-tab-content-${++o}`;this.name="";this.active=false}render(){return a(n,{id:this.host.id||this.tabContentId,style:{display:this.active?"block":"none"},role:"tabpanel","aria-hidden":this.active?"false":"true"},a("div",{part:"base",class:"nano-tab-content"},a("slot",null)))}get host(){return e(this)}};r.style=s;export{r as nano_tab_content};
5
+ //# sourceMappingURL=p-f7471cca.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["src/components/tabs/tab-content.scss?tag=nano-tab-content&encapsulation=shadow","src/components/tabs/tab-content.tsx"],"names":["tabContentCss","id","TabPanel","this","tabContentId","[object Object]","h","Host","host","style","display","active","role","aria-hidden","part","class"],"mappings":";;;yDAAA,MAAMA,EAAgB,47DCStB,IAAIC,EAAK,QAUIC,EAAQ,+BACXC,KAAAC,aAAe,sBAAsBH,cAKb,eAGE,MAElCI,SACE,OACEC,EAACC,EAAI,CACHN,GAAIE,KAAKK,KAAKP,IAAME,KAAKC,aACzBK,MAAO,CAAEC,QAASP,KAAKQ,OAAS,QAAU,QAC1CC,KAAK,WAAUC,cACFV,KAAKQ,OAAS,QAAU,QAErCL,EAAA,MAAA,CAAKQ,KAAK,OAAOC,MAAM,oBACrBT,EAAA,OAAA","sourcesContent":[":host {\n display: block;\n transform: translate3d(0, 0, 0);\n animation: opacity 0.3s ease-in-out forwards;\n opacity: 1;\n}\n\n@media only screen and (max-width: 768px) {\n :host([animation-dir='left']) {\n animation: slide-right 0.3s ease-in-out;\n opacity: 1;\n }\n\n :host([animation-dir='right']) {\n animation: slide-left 0.3s ease-in-out;\n opacity: 1;\n }\n}\n\n.nano-tab-content {\n position: relative;\n}\n\n@keyframes opacity {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 100%;\n }\n}\n\n@keyframes slide-left {\n 0% {\n transform: translate3d(-100%, 0, 0);\n }\n\n 50% {\n transform: translate3d(0%) translate3d(-0.9em);\n }\n\n 100% {\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slide-right {\n 0% {\n transform: translate3d(100%, 0, 0);\n }\n\n 50% {\n transform: translateX(0%) translate3d(0.9em);\n }\n\n 100% {\n transform: translate3d(0, 0, 0);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n * {\n animation: none !important;\n }\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n h,\n ComponentInterface,\n} from '@stencil/core';\n\nlet id = 0;\n\n/**\n * @slot - The tab panel's content.\n */\n@Component({\n tag: 'nano-tab-content',\n styleUrl: 'tab-content.scss',\n shadow: true,\n})\nexport class TabPanel implements ComponentInterface {\n private tabContentId = `nano-tab-content-${++id}`;\n\n @Element() host: HTMLNanoTabContentElement;\n\n /** The tab panel's name. */\n @Prop({ reflect: true }) name = '';\n\n /** When true, the tab content will be shown. */\n @Prop({ reflect: true }) active = false;\n\n render() {\n return (\n <Host\n id={this.host.id || this.tabContentId}\n style={{ display: this.active ? 'block' : 'none' }}\n role=\"tabpanel\"\n aria-hidden={this.active ? 'false' : 'true'}\n >\n <div part=\"base\" class=\"nano-tab-content\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["src/components/tabs/tab-content.scss?tag=nano-tab-content&encapsulation=shadow","src/components/tabs/tab-content.tsx"],"names":["tabContentCss","id","TabPanel","this","tabContentId","[object Object]","h","Host","host","style","display","active","role","aria-hidden","part","class"],"mappings":";;;yDAAA,MAAMA,EAAgB,y1BCStB,IAAIC,EAAK,QAUIC,EAAQ,+BACXC,KAAAC,aAAe,sBAAsBH,cAKb,eAGE,MAElCI,SACE,OACEC,EAACC,EAAI,CACHN,GAAIE,KAAKK,KAAKP,IAAME,KAAKC,aACzBK,MAAO,CAAEC,QAASP,KAAKQ,OAAS,QAAU,QAC1CC,KAAK,WAAUC,cACFV,KAAKQ,OAAS,QAAU,QAErCL,EAAA,MAAA,CAAKQ,KAAK,OAAOC,MAAM,oBACrBT,EAAA,OAAA","sourcesContent":[":host {\n display: block;\n transform: translate3d(0, 0, 0);\n animation: opacity 0.3s ease-in-out forwards;\n opacity: 1;\n}\n\n@media only screen and (max-width: 768px) {\n :host([animation-dir='left']) {\n animation: slide-right 0.3s ease-in-out;\n opacity: 1;\n }\n\n :host([animation-dir='right']) {\n animation: slide-left 0.3s ease-in-out;\n opacity: 1;\n }\n}\n\n.nano-tab-content {\n position: relative;\n}\n\n@keyframes opacity {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 100%;\n }\n}\n\n@keyframes slide-left {\n 0% {\n transform: translate3d(-100%, 0, 0);\n }\n\n 50% {\n transform: translate3d(0%) translate3d(-0.9em);\n }\n\n 100% {\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slide-right {\n 0% {\n transform: translate3d(100%, 0, 0);\n }\n\n 50% {\n transform: translateX(0%) translate3d(0.9em);\n }\n\n 100% {\n transform: translate3d(0, 0, 0);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n * {\n animation: none !important;\n }\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n h,\n ComponentInterface,\n} from '@stencil/core';\n\nlet id = 0;\n\n/**\n * @slot - The tab panel's content.\n */\n@Component({\n tag: 'nano-tab-content',\n styleUrl: 'tab-content.scss',\n shadow: true,\n})\nexport class TabPanel implements ComponentInterface {\n private tabContentId = `nano-tab-content-${++id}`;\n\n @Element() host: HTMLNanoTabContentElement;\n\n /** The tab panel's name. */\n @Prop({ reflect: true }) name = '';\n\n /** When true, the tab content will be shown. */\n @Prop({ reflect: true }) active = false;\n\n render() {\n return (\n <Host\n id={this.host.id || this.tabContentId}\n style={{ display: this.active ? 'block' : 'none' }}\n role=\"tabpanel\"\n aria-hidden={this.active ? 'false' : 'true'}\n >\n <div part=\"base\" class=\"nano-tab-content\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Web Components for Nanopore digital Web Apps
3
+ */
4
+ import{r as o,c as n,f as t,h as i,a as s,g as r}from"./p-1fe12320.js";import{g as e}from"./p-7b3638b7.js";import{d as a}from"./p-9746b0a5.js";const c='.sc-nano-checkbox-group-h{box-sizing:border-box}*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{box-sizing:border-box}[hidden].sc-nano-checkbox-group{display:none !important}.sc-nano-checkbox-group-h{--control-margin-top:0;--control-margin-end:0;--control-margin-bottom:0;--control-margin-start:0;--invalid-msg-color:var(--nano-color-danger, #ef4135);--invalid-msg-font-size:var(--nano-input-help-font-size, 0.75em);--help-msg-color:var(--nano-input-help-color, #616d6e);--label-color:var(--nano-input-label-color, "currentColor");--label-color--invalid:var(--nano-input-label-color-invalid, "currentColor");--label-font-size:var(--nano-input-label-color, 1em);--label-padding:var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));display:block}.sc-nano-checkbox-group-h *.sc-nano-checkbox-group{box-sizing:inherit}[types-tag].sc-nano-checkbox-group-h,[types-segment].sc-nano-checkbox-group-h{--control-margin-top:0;--control-margin-end:8px;--control-margin-bottom:6px;--control-margin-start:0}[types-checkbox].sc-nano-checkbox-group-h,[types-radio].sc-nano-checkbox-group-h{--control-margin-top:0;--control-margin-end:10px;--control-margin-bottom:6px;--control-margin-start:0}.nanogroupcb.sc-nano-checkbox-group{border:none;margin:0;padding:0}.nanogroupcb__error.sc-nano-checkbox-group,.nanogroupcb__help.sc-nano-checkbox-group,.nanogroupcb__more.sc-nano-checkbox-group{display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.nanogroupcb__legend.sc-nano-checkbox-group{font-size:var(--label-font-size);padding:0 0 var(--label-padding);margin:0;line-height:1.5;white-space:normal;display:block;width:100%}[invalid].sc-nano-checkbox-group-h:not([invalid=false]) .nanogroupcb__legend.sc-nano-checkbox-group{color:var(--label-color--invalid)}.nanogroupcb__more.sc-nano-checkbox-group{height:1em;margin-block-start:calc(var(--label-padding) - var(--control-margin-bottom));margin-inline-end:0;margin-block-end:var(--label-padding);margin-inline-start:3px;position:relative}.nanogroupcb__error.sc-nano-checkbox-group,.nanogroupcb__help.sc-nano-checkbox-group{inset-block-start:0;inset-inline-start:0;position:absolute;font-size:var(--invalid-msg-font-size);line-height:1.2;transition:0.3s ease-out opacity}.show-error.sc-nano-checkbox-group .nanogroupcb__error.sc-nano-checkbox-group,.show-error.sc-nano-checkbox-group .nanogroupcb__help.sc-nano-checkbox-group{opacity:1}.nanogroupcb__error.sc-nano-checkbox-group{color:var(--invalid-msg-color);font-stretch:condensed;opacity:0}.show-error.sc-nano-checkbox-group .nanogroupcb__error.sc-nano-checkbox-group{opacity:1}.nanogroupcb__help.sc-nano-checkbox-group{font-style:italic;opacity:1;color:var(--help-msg-color)}.show-error.sc-nano-checkbox-group .nanogroupcb__help.sc-nano-checkbox-group{opacity:0}.nanogroupcb__cbs.sc-nano-checkbox-group{margin:0;padding:0;line-height:1;display:flex;flex-wrap:wrap}.nanogroupcb__cbs.sc-nano-checkbox-group-s>*:not([type=tag]):not([type=segment]):not([type=segment-pill]),.nanogroupcb__cbs .sc-nano-checkbox-group-s>*:not([type=tag]):not([type=segment]):not([type=segment-pill]){--check-base-size:1.2em;font-size:0.85em}.nanogroupcb__cbs.sc-nano-checkbox-group-s>*,.nanogroupcb__cbs .sc-nano-checkbox-group-s>*{margin-inline:var(--control-margin-start) var(--control-margin-end);margin-block:var(--control-margin-top) var(--control-margin-bottom)}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.nanogroupcb__cbs.sc-nano-checkbox-group-s>*,.nanogroupcb__cbs .sc-nano-checkbox-group-s>*{margin-inline-start:var(--control-margin-start);margin-inline-end:var(--control-margin-end)}}';const h=class{constructor(t){o(this,t);this.nanoValidate=n(this,"nanoValidate",7);this.grpId=`nano-checkbox-group-${l++}`;this.handleInvalid=o=>{this._invalid=true;if(this.validateOn==="submit"){this._invalid=this.showErrorMsg=this.customValidate()}if(!!this.showInlineError)o.preventDefault();this.showInlineValidation(o)};this.showInlineValidation=o=>{if(!this.nativeCbs||!this.nativeCbs.length)return;if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this.showErrorMsg=false;this._invalid=false;this.nativeCbs.forEach(((o,n)=>{if(!o.validity.valid){this.errorMessage=o.validationMessage;this.showErrorMsg=true;this._invalid=true}}));this.nanoValidate.emit({isValid:!this.invalid,errorMessage:this.errorMessage,originalEvent:o})};this.checkboxes=undefined;this.nativeCbs=undefined;this.errorMessage="";this.showErrorMsg=false;this.hasHelperSlot=false;this.validateOn="submitThenDirty";this.showInlineError=true;this.min=0;this.max=null;this.disabled=null;this.legend="";this._invalid=false}get invalid(){return this._invalid}get validityMessage(){return this.errorMessage}async reportValidity(o){return new Promise((n=>{if(o){this.customValidate();this.showInlineValidation()}setTimeout((()=>{n({isValid:!this.invalid,errorMessage:this.errorMessage})}),50)}))}async showError(o,n){let t;if(n)t=this.checkboxes.find((o=>o.value===n));if(!t)t=this.checkboxes[0];if(!t)return;this.errorMessage=o;await t.setError(o);if(!!this.showInlineError)this.showInlineValidation()}handleCbChange(){if(this.invalid)this.showErrorMsg=this._invalid=false;this.customValidate();if(this.validateOn!=="dirty")return;this.showInlineValidation()}customValidate(){if(!this.nativeCbs||!this.nativeCbs.length||!this.checkboxes)return;const o=this.nativeCbs.filter((o=>o.type==="radio"));if(o&&o.length&&(this.showErrorMsg||this.validateOn==="dirty")){const n=o.find((o=>o.required));const t=o.filter((o=>o.checked));if(n&&t){this.checkboxes.forEach((o=>o.reportValidity(false)));return false}else if(n&&!t)return true}const n=this.nativeCbs.filter((o=>o.type==="checkbox"));if(!n||!n.length)return;const t=n.filter((o=>o.checked));const i=n.find((o=>o.required));let s=false;if(i&&!t.find((o=>o===i)))return true;this.checkboxes.forEach(((o,n)=>{const i=this.nativeCbs[n];o.setError("");i.setCustomValidity("");if(this.min&&t.length<this.min){this.errorMessage=`You must select a minimum of ${this.min} values.`;s=true}if(this.max&&t.length>this.max){this.errorMessage=`Only up to ${this.max} values are allowed.`;s=true}if(s){o.setError(this.errorMessage,this.showErrorMsg);i.setCustomValidity(this.errorMessage)}}));return s}handleComponentChange(){this.checkboxTypes=e(this.checkboxes.map((o=>"types-"+o.type)))}handleDisabledChange(){if(this.disabled===null)return;this.checkboxes.map((o=>o.disabled=this.disabled))}attachSlotObserver(){if(!!this.mo)return;const o=this.mo=new MutationObserver((()=>this.handleSlotChange()));o.observe(this.host,{childList:true})}async handleSlotChange(){t(this.host);this.checkboxes=Array.from(this.host.querySelectorAll("nano-checkbox"));this.hasHelperSlot=!!this.host.querySelector('[slot="helper"]');this.nativeCbs=await Promise.all(this.checkboxes.reduce(((o,n)=>{o.push(n.getInputElement());return o}),[]));this.nativeCbs.forEach((o=>o.addEventListener("invalid",this.handleInvalid)))}componentWillLoad(){this.showInlineValidation=a(this.showInlineValidation,50);this.customValidate=this.customValidate.bind(this);this.handleDisabledChange()}connectedCallback(){this.attachSlotObserver()}disconnectedCallback(){if(this.mo)this.mo.disconnect()}componentDidLoad(){this.handleComponentChange()}render(){const o=this.grpId+"-lbl";const n=this.showInlineError||this.hasHelperSlot?this.grpId+"-more":"";return i(s,{...this.checkboxTypes},i("fieldset",{disabled:this.disabled,class:{nanogroupcb:true,"show-error":this.showErrorMsg}},i("legend",{class:"nanogroupcb__legend",id:o},this.legend),i("div",{class:"nanogroupcb__cbs",role:"group","aria-labelledby":o+" "+n},i("slot",null)),(this.showInlineError||this.hasHelperSlot)&&i("div",{class:"nanogroupcb__more",id:n},!!this.showInlineError?i("div",{class:"nanogroupcb__error"},this.errorMessage):"",i("div",{class:"nanogroupcb__help"},i("slot",{name:"helper"})))))}get host(){return r(this)}static get watchers(){return{min:["handleCbChange"],max:["handleCbChange"],nativeCbs:["customValidate"],checkboxes:["handleComponentChange","handleDisabledChange"],disabled:["handleDisabledChange"]}}};let l=0;h.style=c;export{h as nano_checkbox_group};
5
+ //# sourceMappingURL=p-fe94eeff.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["src/components/checkbox/checkbox-group.scss?tag=nano-checkbox-group&encapsulation=scoped","src/components/checkbox/checkbox-group.tsx"],"names":["checkboxGroupCss","CheckboxGroup","this","grpId","grpIds","handleInvalid","ev","_invalid","validateOn","showErrorMsg","customValidate","showInlineError","preventDefault","showInlineValidation","nativeCbs","length","forEach","cb","_i","validity","valid","errorMessage","validationMessage","nanoValidate","emit","isValid","invalid","originalEvent","validityMessage","[object Object]","validateFirst","Promise","resolve","setTimeout","message","optVal","checkboxes","find","c","value","setError","onlyRadios","filter","type","required","checked","rd","reportValidity","onlyCbs","i","nativeCb","setCustomValidity","min","max","checkboxTypes","getClassMap","map","disabled","mo","MutationObserver","handleSlotChange","observe","host","childList","forceUpdate","Array","from","querySelectorAll","hasHelperSlot","querySelector","all","reduce","acc","push","getInputElement","addEventListener","debounce","bind","handleDisabledChange","attachSlotObserver","disconnect","handleComponentChange","legendId","moreId","h","Host","class","nanogroupcb","show-error","id","legend","role","aria-labelledby","name"],"mappings":"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","sourcesContent":["@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/base';\n\n:host {\n /**\n * @prop --control-margin-top: Margin between controls. Default depends on control type;\n * @prop --control-margin-end: Margin between controls. Default depends on control type;\n * @prop --control-margin-bottom: Margin between controls. Default depends on control type;\n * @prop --control-margin-start: Margin between controls. Default depends on control type;\n\n * @prop --invalid-msg-color: Default #{nano-color(danger, base)};\n * @prop --invalid-msg-font-size: Default #{$input-help-font-size};\n\n * @prop --help-msg-color: Font color applied to slot=\"helper\". Default #{$input-help-color};\n\n * @prop --label-color: Default #{$label-color};\n * @prop --label-color--invalid: Default #{$label-color-invalid};\n * @prop --label-font-size: Default #{$label-font-size};\n * @prop --label-padding: space between legend and control. Default #{$input-padding-bottom};\n */\n\n --control-margin-top: 0;\n --control-margin-end: 0;\n --control-margin-bottom: 0;\n --control-margin-start: 0;\n --invalid-msg-color: #{nano-color(danger, base)};\n --invalid-msg-font-size: #{$input-help-font-size};\n --help-msg-color: #{$input-help-color};\n --label-color: #{$label-color};\n --label-color--invalid: #{$label-color-invalid};\n --label-font-size: #{$label-font-size};\n --label-padding: #{$input-padding-bottom};\n\n display: block;\n\n * {\n box-sizing: inherit;\n }\n}\n\n:host([types-tag]),\n:host([types-segment]) {\n --control-margin-top: 0;\n --control-margin-end: 8px;\n --control-margin-bottom: 6px;\n --control-margin-start: 0;\n}\n\n:host([types-checkbox]),\n:host([types-radio]) {\n --control-margin-top: 0;\n --control-margin-end: 10px;\n --control-margin-bottom: 6px;\n --control-margin-start: 0;\n}\n\n.nanogroupcb {\n border: none;\n margin: 0;\n padding: 0;\n\n &__error,\n &__help,\n &__more {\n display: block;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n &__legend {\n font-size: var(--label-font-size);\n padding: 0 0 var(--label-padding);\n margin: 0;\n line-height: 1.5;\n white-space: normal;\n display: block;\n width: 100%;\n\n :host([invalid]:not([invalid='false'])) & {\n color: var(--label-color--invalid);\n }\n }\n\n &__more {\n height: 1em;\n margin-block-start: calc(var(--label-padding) - var(--control-margin-bottom));\n margin-inline-end: 0;\n margin-block-end: var(--label-padding);\n margin-inline-start: 3px;\n position: relative;\n }\n\n &__error,\n &__help {\n inset-block-start: 0;\n inset-inline-start: 0;\n position: absolute;\n font-size: var(--invalid-msg-font-size);\n line-height: 1.2;\n transition: 0.3s ease-out opacity;\n\n .show-error & {\n opacity: 1;\n }\n }\n\n &__error {\n color: var(--invalid-msg-color);\n font-stretch: condensed;\n opacity: 0;\n\n .show-error & {\n opacity: 1;\n }\n }\n\n &__help {\n font-style: italic;\n opacity: 1;\n color: var(--help-msg-color);\n\n .show-error & {\n opacity: 0;\n }\n }\n\n &__cbs {\n margin: 0;\n padding: 0;\n line-height: 1;\n display: flex;\n flex-wrap: wrap;\n\n ::slotted(*:not([type='tag']):not([type='segment']):not([type='segment-pill'])) {\n --check-base-size: 1.2em;\n\n font-size: 0.85em;\n }\n\n ::slotted(*) {\n margin-inline: var(--control-margin-start) var(--control-margin-end);\n margin-block: var(--control-margin-top) var(--control-margin-bottom);\n }\n }\n}\n\n/* autoprefixer: ignore next */\n@supports ((margin-inline-start: 0) or (-webkit-margin-start: 0)) {\n .nanogroupcb__cbs {\n &::slotted(*),\n ::slotted(*) {\n margin-inline-start: var(--control-margin-start);\n margin-inline-end: var(--control-margin-end);\n }\n }\n}\n","import {\n Component,\n Prop,\n Element,\n h,\n ComponentInterface,\n State,\n Listen,\n Watch,\n Host,\n Method,\n forceUpdate,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { getClassMap } from '../../utils/theme';\nimport { debounce } from '../../utils/throttle';\nimport type {\n CssClassMap,\n ControlValidityEventDetail,\n ControlValidity,\n} from '../../interface';\n\n/**\n * `nano-checkbox-group` is an optional wrapper for all `nano-checkbox` controls.\n * It provides a convenient place to anchor a collective label and any validation issues.\n *\n * @slot - Used for grouping checkboxes inside the group wrapper\n * @slot helper - helper text to accompany the form field underneath.\n */\n@Component({\n tag: 'nano-checkbox-group',\n styleUrl: 'checkbox-group.scss',\n scoped: true,\n})\nexport class CheckboxGroup implements ComponentInterface {\n private mo?: MutationObserver;\n private checkboxTypes: CssClassMap;\n private grpId = `nano-checkbox-group-${grpIds++}`;\n\n @Element() host: HTMLNanoCheckboxGroupElement;\n\n // internal state\n\n @State() checkboxes: HTMLNanoCheckboxElement[];\n @State() nativeCbs: HTMLInputElement[];\n @State() errorMessage: string = '';\n @State() showErrorMsg = false;\n @State() hasHelperSlot = false;\n\n // public properties\n\n /**\n * When should the field perform validation\n */\n @Prop({ mutable: true }) validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submitThenDirty';\n\n /**\n * Whether to show validation errors underneath input\n */\n @Prop() showInlineError = true;\n\n /**\n * The minimum number of checkboxes required to be valid. Only relevant for checkbox type controls.\n * A validation error will be thrown if not enough controls are checked.\n */\n @Prop() min: number = 0;\n\n /**\n * The maximum number of checkboxes allowed. Only relevant for checkbox type controls.\n * Other controls will automatically be disabled upon reaching this number.\n */\n @Prop() max: number = null;\n\n /**\n * Disable all the nested form controls\n */\n @Prop({ reflect: true }) disabled: boolean | null = null;\n\n /**\n * A common label for children controls\n */\n @Prop() legend: string = '';\n\n /**\n * This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set. @readonly\n */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n @State() _invalid = false;\n\n /**\n * Current validation message - if any. @readonly\n */\n @Prop()\n get validityMessage() {\n return this.errorMessage;\n }\n\n // Public methods\n\n /**\n * Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }`\n */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n return new Promise((resolve) => {\n if (validateFirst) {\n this.customValidate();\n this.showInlineValidation();\n }\n setTimeout(() => {\n resolve({\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\n });\n }, 50);\n });\n }\n\n /**\n * Invalidate the field and show a custom error message.\n * To clear the error you will need to re-call this method with an empty string.\n * @param message - the error message to show\n * @param optVal - optionally supply an option value to target which checkbox to show invalidate against (default is the first)\n */\n @Method()\n async showError(message: string, optVal?: string) {\n let cb: HTMLNanoCheckboxElement;\n if (optVal) cb = this.checkboxes.find((c) => c.value === optVal);\n if (!cb) cb = this.checkboxes[0];\n if (!cb) return;\n\n this.errorMessage = message;\n await cb.setError(message);\n if (!!this.showInlineError) this.showInlineValidation();\n }\n\n // Events\n\n /**\n * Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.\n */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n // listeners & watchers\n\n /**\n * Notes on validation... custom validation messages should be set\n * no matter whether we show inline messages or native html5.\n * this will mean forms cannot submit when there are pending validation issues.\n */\n @Listen('nanoChange')\n @Watch('min')\n @Watch('max')\n handleCbChange() {\n if (this.invalid) this.showErrorMsg = this._invalid = false;\n this.customValidate();\n\n if (this.validateOn !== 'dirty') return;\n this.showInlineValidation();\n }\n\n @Watch('nativeCbs')\n customValidate() {\n if (!this.nativeCbs || !this.nativeCbs.length || !this.checkboxes) return;\n\n const onlyRadios = this.nativeCbs.filter((cb) => cb.type === 'radio');\n\n if (\n onlyRadios &&\n onlyRadios.length &&\n (this.showErrorMsg || this.validateOn === 'dirty')\n ) {\n const required = onlyRadios.find((cb) => cb.required);\n const checked = onlyRadios.filter((cb) => cb.checked);\n\n if (required && checked) {\n this.checkboxes.forEach((rd) => rd.reportValidity(false));\n return false;\n } else if (required && !checked) return true;\n }\n\n // we only care about checkbox controls.\n const onlyCbs = this.nativeCbs.filter((cb) => cb.type === 'checkbox');\n if (!onlyCbs || !onlyCbs.length) return;\n\n const checked = onlyCbs.filter((cb) => cb.checked);\n const required = onlyCbs.find((cb) => cb.required);\n let invalid = false;\n\n if (required && !checked.find((cb) => cb === required)) return true;\n\n this.checkboxes.forEach((cb, i) => {\n const nativeCb = this.nativeCbs[i];\n cb.setError('');\n nativeCb.setCustomValidity('');\n\n if (this.min && checked.length < this.min) {\n this.errorMessage = `You must select a minimum of ${this.min} values.`;\n invalid = true;\n }\n if (this.max && checked.length > this.max) {\n this.errorMessage = `Only up to ${this.max} values are allowed.`;\n invalid = true;\n }\n\n if (invalid) {\n cb.setError(this.errorMessage, this.showErrorMsg);\n // bit fugly. We're just doing this 'cos stencil\n // methods are async and we want the validity message\n // asap to keep things in sync\n nativeCb.setCustomValidity(this.errorMessage);\n }\n });\n return invalid;\n }\n\n @Watch('checkboxes')\n handleComponentChange() {\n this.checkboxTypes = getClassMap(\n this.checkboxes.map((cb) => 'types-' + cb.type)\n );\n }\n\n @Watch('disabled')\n @Watch('checkboxes')\n handleDisabledChange() {\n if (this.disabled === null) return;\n this.checkboxes.map((cb) => (cb.disabled = this.disabled));\n }\n\n // private methods\n\n private attachSlotObserver() {\n if (!!this.mo) return;\n const mo = (this.mo = new MutationObserver(() => this.handleSlotChange()));\n mo.observe(this.host, { childList: true });\n }\n\n private async handleSlotChange() {\n forceUpdate(this.host);\n this.checkboxes = Array.from(this.host.querySelectorAll('nano-checkbox'));\n this.hasHelperSlot = !!this.host.querySelector('[slot=\"helper\"]');\n\n this.nativeCbs = await Promise.all(\n this.checkboxes.reduce((acc: Array<Promise<HTMLInputElement>>, cb) => {\n acc.push(cb.getInputElement());\n return acc;\n }, [])\n );\n\n this.nativeCbs.forEach((cb) =>\n cb.addEventListener('invalid', this.handleInvalid)\n );\n }\n\n private handleInvalid = (ev: Event) => {\n this._invalid = true;\n\n if (this.validateOn === 'submit') {\n this._invalid = this.showErrorMsg = this.customValidate();\n }\n if (!!this.showInlineError) ev.preventDefault();\n\n this.showInlineValidation(ev);\n };\n\n private showInlineValidation = (ev?: Event) => {\n if (!this.nativeCbs || !this.nativeCbs.length) return;\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.showErrorMsg = false;\n this._invalid = false;\n\n this.nativeCbs.forEach((cb, _i) => {\n if (!cb.validity.valid) {\n this.errorMessage = cb.validationMessage;\n this.showErrorMsg = true;\n this._invalid = true;\n }\n });\n\n this.nanoValidate.emit({\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\n originalEvent: ev,\n });\n };\n\n // stencil hooks\n\n componentWillLoad() {\n this.showInlineValidation = debounce(this.showInlineValidation, 50);\n this.customValidate = this.customValidate.bind(this);\n this.handleDisabledChange();\n }\n\n connectedCallback() {\n this.attachSlotObserver();\n }\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n }\n\n componentDidLoad() {\n this.handleComponentChange();\n }\n\n render() {\n const legendId = this.grpId + '-lbl';\n const moreId =\n this.showInlineError || this.hasHelperSlot ? this.grpId + '-more' : '';\n\n return (\n <Host {...this.checkboxTypes}>\n <fieldset\n disabled={this.disabled}\n class={{ nanogroupcb: true, 'show-error': this.showErrorMsg }}\n >\n <legend class=\"nanogroupcb__legend\" id={legendId}>\n {this.legend}\n </legend>\n <div\n class=\"nanogroupcb__cbs\"\n role=\"group\"\n aria-labelledby={legendId + ' ' + moreId}\n >\n <slot />\n </div>\n {(this.showInlineError || this.hasHelperSlot) && (\n <div class=\"nanogroupcb__more\" id={moreId}>\n {!!this.showInlineError ? (\n <div class=\"nanogroupcb__error\">{this.errorMessage}</div>\n ) : (\n ''\n )}\n <div class=\"nanogroupcb__help\">\n <slot name=\"helper\" />\n </div>\n </div>\n )}\n </fieldset>\n </Host>\n );\n }\n}\n\nlet grpIds = 0;\n"]}
1
+ {"version":3,"sources":["src/components/checkbox/checkbox-group.scss?tag=nano-checkbox-group&encapsulation=scoped","src/components/checkbox/checkbox-group.tsx"],"names":["checkboxGroupCss","CheckboxGroup","this","grpId","grpIds","handleInvalid","ev","_invalid","validateOn","showErrorMsg","customValidate","showInlineError","preventDefault","showInlineValidation","nativeCbs","length","forEach","cb","_i","validity","valid","errorMessage","validationMessage","nanoValidate","emit","isValid","invalid","originalEvent","validityMessage","[object Object]","validateFirst","Promise","resolve","setTimeout","message","optVal","checkboxes","find","c","value","setError","onlyRadios","filter","type","required","checked","rd","reportValidity","onlyCbs","i","nativeCb","setCustomValidity","min","max","checkboxTypes","getClassMap","map","disabled","mo","MutationObserver","handleSlotChange","observe","host","childList","forceUpdate","Array","from","querySelectorAll","hasHelperSlot","querySelector","all","reduce","acc","push","getInputElement","addEventListener","debounce","bind","handleDisabledChange","attachSlotObserver","disconnect","handleComponentChange","legendId","moreId","h","Host","class","nanogroupcb","show-error","id","legend","role","aria-labelledby","name"],"mappings":"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","sourcesContent":["@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/base';\n\n:host {\n /**\n * @prop --control-margin-top: Margin between controls. Default depends on control type;\n * @prop --control-margin-end: Margin between controls. Default depends on control type;\n * @prop --control-margin-bottom: Margin between controls. Default depends on control type;\n * @prop --control-margin-start: Margin between controls. Default depends on control type;\n\n * @prop --invalid-msg-color: Default #{nano-color(danger, base)};\n * @prop --invalid-msg-font-size: Default #{$input-help-font-size};\n\n * @prop --help-msg-color: Font color applied to slot=\"helper\". Default #{$input-help-color};\n\n * @prop --label-color: Default #{$label-color};\n * @prop --label-color--invalid: Default #{$label-color-invalid};\n * @prop --label-font-size: Default #{$label-font-size};\n * @prop --label-padding: space between legend and control. Default #{$input-padding-bottom};\n */\n\n --control-margin-top: 0;\n --control-margin-end: 0;\n --control-margin-bottom: 0;\n --control-margin-start: 0;\n --invalid-msg-color: #{nano-color(danger, base)};\n --invalid-msg-font-size: #{$input-help-font-size};\n --help-msg-color: #{$input-help-color};\n --label-color: #{$label-color};\n --label-color--invalid: #{$label-color-invalid};\n --label-font-size: #{$label-font-size};\n --label-padding: #{$input-padding-bottom};\n\n display: block;\n\n * {\n box-sizing: inherit;\n }\n}\n\n:host([types-tag]),\n:host([types-segment]) {\n --control-margin-top: 0;\n --control-margin-end: 8px;\n --control-margin-bottom: 6px;\n --control-margin-start: 0;\n}\n\n:host([types-checkbox]),\n:host([types-radio]) {\n --control-margin-top: 0;\n --control-margin-end: 10px;\n --control-margin-bottom: 6px;\n --control-margin-start: 0;\n}\n\n.nanogroupcb {\n border: none;\n margin: 0;\n padding: 0;\n\n &__error,\n &__help,\n &__more {\n display: block;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n &__legend {\n font-size: var(--label-font-size);\n padding: 0 0 var(--label-padding);\n margin: 0;\n line-height: 1.5;\n white-space: normal;\n display: block;\n width: 100%;\n\n :host([invalid]:not([invalid='false'])) & {\n color: var(--label-color--invalid);\n }\n }\n\n &__more {\n height: 1em;\n margin-block-start: calc(var(--label-padding) - var(--control-margin-bottom));\n margin-inline-end: 0;\n margin-block-end: var(--label-padding);\n margin-inline-start: 3px;\n position: relative;\n }\n\n &__error,\n &__help {\n inset-block-start: 0;\n inset-inline-start: 0;\n position: absolute;\n font-size: var(--invalid-msg-font-size);\n line-height: 1.2;\n transition: 0.3s ease-out opacity;\n\n .show-error & {\n opacity: 1;\n }\n }\n\n &__error {\n color: var(--invalid-msg-color);\n font-stretch: condensed;\n opacity: 0;\n\n .show-error & {\n opacity: 1;\n }\n }\n\n &__help {\n font-style: italic;\n opacity: 1;\n color: var(--help-msg-color);\n\n .show-error & {\n opacity: 0;\n }\n }\n\n &__cbs {\n margin: 0;\n padding: 0;\n line-height: 1;\n display: flex;\n flex-wrap: wrap;\n\n ::slotted(*:not([type='tag']):not([type='segment']):not([type='segment-pill'])) {\n --check-base-size: 1.2em;\n\n font-size: 0.85em;\n }\n\n ::slotted(*) {\n margin-inline: var(--control-margin-start) var(--control-margin-end);\n margin-block: var(--control-margin-top) var(--control-margin-bottom);\n }\n }\n}\n\n/* autoprefixer: ignore next */\n@supports ((margin-inline-start: 0) or (-webkit-margin-start: 0)) {\n .nanogroupcb__cbs {\n &::slotted(*),\n ::slotted(*) {\n margin-inline-start: var(--control-margin-start);\n margin-inline-end: var(--control-margin-end);\n }\n }\n}\n","import {\n Component,\n Prop,\n Element,\n h,\n ComponentInterface,\n State,\n Listen,\n Watch,\n Host,\n Method,\n forceUpdate,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { getClassMap } from '../../utils/theme';\nimport { debounce } from '../../utils/throttle';\nimport type {\n CssClassMap,\n ControlValidityEventDetail,\n ControlValidity,\n} from '../../interface';\n\n/**\n * `nano-checkbox-group` is an optional wrapper for all `nano-checkbox` controls.\n * It provides a convenient place to anchor a collective label and any validation issues.\n *\n * @slot - Used for grouping checkboxes inside the group wrapper\n * @slot helper - helper text to accompany the form field underneath.\n */\n@Component({\n tag: 'nano-checkbox-group',\n styleUrl: 'checkbox-group.scss',\n scoped: true,\n})\nexport class CheckboxGroup implements ComponentInterface {\n private mo?: MutationObserver;\n private checkboxTypes: CssClassMap;\n private grpId = `nano-checkbox-group-${grpIds++}`;\n\n @Element() host: HTMLNanoCheckboxGroupElement;\n\n // internal state\n\n @State() checkboxes: HTMLNanoCheckboxElement[];\n @State() nativeCbs: HTMLInputElement[];\n @State() errorMessage: string = '';\n @State() showErrorMsg = false;\n @State() hasHelperSlot = false;\n\n // public properties\n\n /**\n * When should the field perform validation\n */\n @Prop({ mutable: true }) validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submitThenDirty';\n\n /**\n * Whether to show validation errors underneath input\n */\n @Prop() showInlineError = true;\n\n /**\n * The minimum number of checkboxes required to be valid. Only relevant for checkbox type controls.\n * A validation error will be thrown if not enough controls are checked.\n */\n @Prop() min: number = 0;\n\n /**\n * The maximum number of checkboxes allowed. Only relevant for checkbox type controls.\n * Other controls will automatically be disabled upon reaching this number.\n */\n @Prop() max: number = null;\n\n /**\n * Disable all the nested form controls\n */\n @Prop({ reflect: true }) disabled: boolean | null = null;\n\n /**\n * A common label for children controls\n */\n @Prop() legend: string = '';\n\n /**\n * This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set. @readonly\n */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n @State() _invalid = false;\n\n /**\n * Current validation message - if any. @readonly\n */\n @Prop()\n get validityMessage() {\n return this.errorMessage;\n }\n\n // Public methods\n\n /**\n * Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }`\n */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n return new Promise((resolve) => {\n if (validateFirst) {\n this.customValidate();\n this.showInlineValidation();\n }\n setTimeout(() => {\n resolve({\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\n });\n }, 50);\n });\n }\n\n /**\n * Invalidate the field and show a custom error message.\n * To clear the error you will need to re-call this method with an empty string.\n * @param message - the error message to show\n * @param optVal - optionally supply an option value to target which checkbox to show invalidate against (default is the first)\n */\n @Method()\n async showError(message: string, optVal?: string) {\n let cb: HTMLNanoCheckboxElement;\n if (optVal) cb = this.checkboxes.find((c) => c.value === optVal);\n if (!cb) cb = this.checkboxes[0];\n if (!cb) return;\n\n this.errorMessage = message;\n await cb.setError(message);\n if (!!this.showInlineError) this.showInlineValidation();\n }\n\n // Events\n\n /**\n * Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.\n */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n // listeners & watchers\n\n /**\n * Notes on validation... custom validation messages should be set\n * no matter whether we show inline messages or native html5.\n * this will mean forms cannot submit when there are pending validation issues.\n */\n @Listen('nanoChange')\n @Watch('min')\n @Watch('max')\n handleCbChange() {\n if (this.invalid) this.showErrorMsg = this._invalid = false;\n this.customValidate();\n\n if (this.validateOn !== 'dirty') return;\n this.showInlineValidation();\n }\n\n @Watch('nativeCbs')\n customValidate() {\n if (!this.nativeCbs || !this.nativeCbs.length || !this.checkboxes) return;\n\n const onlyRadios = this.nativeCbs.filter((cb) => cb.type === 'radio');\n\n if (\n onlyRadios &&\n onlyRadios.length &&\n (this.showErrorMsg || this.validateOn === 'dirty')\n ) {\n const required = onlyRadios.find((cb) => cb.required);\n const checked = onlyRadios.filter((cb) => cb.checked);\n\n if (required && checked) {\n this.checkboxes.forEach((rd) => rd.reportValidity(false));\n return false;\n } else if (required && !checked) return true;\n }\n\n // we only care about checkbox controls.\n const onlyCbs = this.nativeCbs.filter((cb) => cb.type === 'checkbox');\n if (!onlyCbs || !onlyCbs.length) return;\n\n const checked = onlyCbs.filter((cb) => cb.checked);\n const required = onlyCbs.find((cb) => cb.required);\n let invalid = false;\n\n if (required && !checked.find((cb) => cb === required)) return true;\n\n this.checkboxes.forEach((cb, i) => {\n const nativeCb = this.nativeCbs[i];\n cb.setError('');\n nativeCb.setCustomValidity('');\n\n if (this.min && checked.length < this.min) {\n this.errorMessage = `You must select a minimum of ${this.min} values.`;\n invalid = true;\n }\n if (this.max && checked.length > this.max) {\n this.errorMessage = `Only up to ${this.max} values are allowed.`;\n invalid = true;\n }\n\n if (invalid) {\n cb.setError(this.errorMessage, this.showErrorMsg);\n // bit fugly. We're just doing this 'cos stencil\n // methods are async and we want the validity message\n // asap to keep things in sync\n nativeCb.setCustomValidity(this.errorMessage);\n }\n });\n return invalid;\n }\n\n @Watch('checkboxes')\n handleComponentChange() {\n this.checkboxTypes = getClassMap(\n this.checkboxes.map((cb) => 'types-' + cb.type)\n );\n }\n\n @Watch('disabled')\n @Watch('checkboxes')\n handleDisabledChange() {\n if (this.disabled === null) return;\n this.checkboxes.map((cb) => (cb.disabled = this.disabled));\n }\n\n // private methods\n\n private attachSlotObserver() {\n if (!!this.mo) return;\n const mo = (this.mo = new MutationObserver(() => this.handleSlotChange()));\n mo.observe(this.host, { childList: true });\n }\n\n private async handleSlotChange() {\n forceUpdate(this.host);\n this.checkboxes = Array.from(this.host.querySelectorAll('nano-checkbox'));\n this.hasHelperSlot = !!this.host.querySelector('[slot=\"helper\"]');\n\n this.nativeCbs = await Promise.all(\n this.checkboxes.reduce((acc: Array<Promise<HTMLInputElement>>, cb) => {\n acc.push(cb.getInputElement());\n return acc;\n }, [])\n );\n\n this.nativeCbs.forEach((cb) =>\n cb.addEventListener('invalid', this.handleInvalid)\n );\n }\n\n private handleInvalid = (ev: Event) => {\n this._invalid = true;\n\n if (this.validateOn === 'submit') {\n this._invalid = this.showErrorMsg = this.customValidate();\n }\n if (!!this.showInlineError) ev.preventDefault();\n\n this.showInlineValidation(ev);\n };\n\n private showInlineValidation = (ev?: Event) => {\n if (!this.nativeCbs || !this.nativeCbs.length) return;\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.showErrorMsg = false;\n this._invalid = false;\n\n this.nativeCbs.forEach((cb, _i) => {\n if (!cb.validity.valid) {\n this.errorMessage = cb.validationMessage;\n this.showErrorMsg = true;\n this._invalid = true;\n }\n });\n\n this.nanoValidate.emit({\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\n originalEvent: ev,\n });\n };\n\n // stencil hooks\n\n componentWillLoad() {\n this.showInlineValidation = debounce(this.showInlineValidation, 50);\n this.customValidate = this.customValidate.bind(this);\n this.handleDisabledChange();\n }\n\n connectedCallback() {\n this.attachSlotObserver();\n }\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n }\n\n componentDidLoad() {\n this.handleComponentChange();\n }\n\n render() {\n const legendId = this.grpId + '-lbl';\n const moreId =\n this.showInlineError || this.hasHelperSlot ? this.grpId + '-more' : '';\n\n return (\n <Host {...this.checkboxTypes}>\n <fieldset\n disabled={this.disabled}\n class={{ nanogroupcb: true, 'show-error': this.showErrorMsg }}\n >\n <legend class=\"nanogroupcb__legend\" id={legendId}>\n {this.legend}\n </legend>\n <div\n class=\"nanogroupcb__cbs\"\n role=\"group\"\n aria-labelledby={legendId + ' ' + moreId}\n >\n <slot />\n </div>\n {(this.showInlineError || this.hasHelperSlot) && (\n <div class=\"nanogroupcb__more\" id={moreId}>\n {!!this.showInlineError ? (\n <div class=\"nanogroupcb__error\">{this.errorMessage}</div>\n ) : (\n ''\n )}\n <div class=\"nanogroupcb__help\">\n <slot name=\"helper\" />\n </div>\n </div>\n )}\n </fieldset>\n </Host>\n );\n }\n}\n\nlet grpIds = 0;\n"]}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Web Components for Nanopore digital Web Apps
3
+ */
4
+ import{r as t,c as i,h as o,a as s,g as n}from"./p-1fe12320.js";import{P as e}from"./p-8d747891.js";const r=':host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--max-width:20rem;--hide-delay:0s;--hide-duration:0.125s;--hide-timing-function:ease;--show-delay:0.125s;--show-duration:0.125s;--show-timing-function:ease;display:contents}.tooltip{max-inline-size:var(--max-width);border-radius:var(--nano-tooltip-border-radius, var(--nano-border-radius-small, 2px));background-color:black;font-size:var(--nano-fontsize-small, 0.875rem);line-height:1.5;color:white;opacity:0;padding:var(--nano-tooltip-padding, var(--nano-spacing-xsmall, 4px) var(--nano-spacing-small, 8px));transform:translateY(10px) translateZ(0);transform-origin:bottom;transition-property:opacity, transform;transition-delay:var(--hide-delay);transition-duration:var(--hide-duration);transition-timing-function:var(--hide-timing-function);white-space:normal}.tooltip-arrow{content:"";position:absolute;inline-size:0;block-size:0;color:black;transition:0.2s ease transform}.tooltip-positioner{position:absolute;z-index:var(--nano-layer-index-tooltip, 1000)}.tooltip-positioner[data-popper-placement^=top] .tooltip{transform-origin:bottom;transform:translateY(-10px) translateZ(0)}.tooltip-positioner[data-popper-placement^=bottom] .tooltip{transform-origin:top}.tooltip-positioner[data-popper-placement^=left] .tooltip{transform-origin:right}.tooltip-positioner[data-popper-placement^=right] .tooltip{transform-origin:left}.tooltip-positioner.popover-visible .tooltip{opacity:1;transform:none;transition-delay:var(--show-delay);transition-duration:var(--show-duration);transition-timing-function:var(--show-timing-function)}.tooltip-positioner[data-popper-placement^=bottom] .tooltip-arrow{inset-block-end:100%;inset-inline-start:calc(50% - 5px);border-block-end:5px solid;border-inline-start:5px solid transparent;border-inline-end:5px solid transparent}.tooltip-positioner[data-popper-placement=bottom-start] .tooltip-arrow{inset-inline-start:5px}.tooltip-positioner[data-popper-placement=bottom-end] .tooltip-arrow{inset-inline:auto 5px}.tooltip-positioner[data-popper-placement^=top] .tooltip-arrow{inset-block-start:100%;inset-inline-start:calc(50% - 5px);border-block-start:5px solid;border-inline-start:5px solid transparent;border-inline-end:5px solid transparent}.tooltip-positioner[data-popper-placement=top-start] .tooltip-arrow{inset-inline-start:5px}.tooltip-positioner[data-popper-placement=top-end] .tooltip-arrow{inset-inline:auto 5px}.tooltip-positioner[data-popper-placement^=left] .tooltip-arrow{inset-block-start:calc(50% - 5px);inset-inline-start:100%;border-inline-start:5px solid;border-block-start:5px solid transparent;border-block-end:5px solid transparent}.tooltip-positioner[data-popper-placement=left-start] .tooltip-arrow{inset-block-start:5px}.tooltip-positioner[data-popper-placement=left-end] .tooltip-arrow{inset-block:auto 5px}.tooltip-positioner[data-popper-placement^=right] .tooltip-arrow{inset-block-start:calc(50% - 5px);inset-inline-end:100%;border-inline-end:5px solid;border-block-start:5px solid transparent;border-block-end:5px solid transparent}.tooltip-positioner[data-popper-placement=right-start] .tooltip-arrow{inset-block-start:5px}.tooltip-positioner[data-popper-placement=right-end] .tooltip-arrow{inset-block:auto 5px}';let a=0;const p=class{constructor(o){t(this,o);this.nanoShow=i(this,"nanoShow",7);this.nanoAfterShow=i(this,"nanoAfterShow",7);this.nanoHide=i(this,"nanoHide",7);this.nanoAfterHide=i(this,"nanoAfterHide",7);this.componentId=`tooltip-${++a}`;this.isVisible=false;this.handleBlur=()=>{if(this.hasTrigger("focus")){this.hide()}};this.handleClick=()=>{if(this.hasTrigger("click")){this.open?this.hide():this.show()}};this.handleFocus=()=>{if(this.hasTrigger("focus")){this.show()}};this.handleKeyDown=t=>{if(this.open&&t.key==="Escape"){t.stopPropagation();this.hide()}};this.handleMouseOver=()=>{if(this.hasTrigger("hover")){this.show()}};this.handleMouseOut=()=>{if(this.hasTrigger("hover")){this.hide()}};this.handleSlotChange=()=>{this.target=this.getTarget()};this.handleTTSlotChange=()=>{const t=this.host.querySelector(`[id="${this.componentId}"]`)||this.host.shadowRoot.getElementById(this.componentId);Array.from(this.host.querySelectorAll('[slot="content"]')).filter((i=>i!==t)).forEach((i=>{t.appendChild(i)}))};this.content="";this.placement="top";this.disabled=false;this.distance=10;this.open=false;this.skidding=0;this.trigger="hover focus"}get target(){return this._target}set target(t){if(t!==this._target&&this._target){this._target.removeAttribute("aria-describedby")}t.setAttribute("aria-describedby",this.componentId);this._target=t}handleOpenChange(){this.open?this.show():this.hide()}async show(){if(this.isVisible){return}const t=this.nanoShow.emit();if(t.defaultPrevented){this.open=false;return}this.isVisible=true;this.open=true;this.popover.show()}async hide(){if(!this.isVisible){return}const t=this.nanoHide.emit();if(t.defaultPrevented){this.open=true;return}this.isVisible=false;this.open=false;this.popover.hide()}getTarget(){const t=[...Array.from(this.host.children)].find((t=>t.tagName.toLowerCase()!=="style"&&t.getAttribute("slot")!=="content"));if(!t){throw new Error("Invalid tooltip target: no child element was found.")}return t}hasTrigger(t){const i=this.trigger.split(" ");return i.includes(t)}syncOptions(){this.popover.setOptions({placement:this.placement,distance:this.distance,skidding:this.skidding,transitionElement:this.tooltip,onAfterHide:()=>this.nanoAfterHide.emit(),onAfterShow:()=>this.nanoAfterShow.emit()})}componentDidLoad(){this.target=this.getTarget();this.popover=new e(this.target,this.tooltipPositioner);this.syncOptions();const t=this.host.shadowRoot.getElementById(this.componentId);t.slot="content";this.host.appendChild(t);this.handleTTSlotChange();this.tooltipPositioner.hidden=!this.open;if(this.open){this.show()}}componentDidUpdate(){this.syncOptions()}disconnectedCallback(){this.popover.destroy()}render(){return o(s,{onKeyDown:this.handleKeyDown,onMouseOver:this.handleMouseOver,onMouseOut:this.handleMouseOut,onBlur:this.handleBlur,onFocus:this.handleFocus,onClick:this.handleClick},o("slot",{onSlotchange:this.handleSlotChange}),!this.disabled&&o("div",{ref:t=>this.tooltipPositioner=t,class:"tooltip-positioner"},o("div",{part:"base",ref:t=>this.tooltip=t,class:{tooltip:true,"tooltip--open":this.open},role:"tooltip","aria-hidden":this.open?"false":"true"},o("slot",{name:"content",onSlotchange:this.handleTTSlotChange},o("div",{id:this.componentId},this.content)),o("div",{class:"tooltip-arrow","data-popper-arrow":true}))))}get host(){return n(this)}static get watchers(){return{open:["handleOpenChange"]}}};p.style=r;export{p as nano_tooltip};
5
+ //# sourceMappingURL=p-feb9f164.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["src/components/tooltip/tooltip.scss?tag=nano-tooltip&encapsulation=shadow","src/components/tooltip/tooltip.tsx"],"names":["tooltipCss","id","Tooltip","this","componentId","isVisible","handleBlur","hasTrigger","hide","handleClick","open","show","handleFocus","handleKeyDown","event","key","stopPropagation","handleMouseOver","handleMouseOut","handleSlotChange","target","getTarget","handleTTSlotChange","contentDiv","host","querySelector","shadowRoot","getElementById","Array","from","querySelectorAll","filter","elm","forEach","appendChild","_target","newTarget","removeAttribute","setAttribute","[object Object]","slShow","nanoShow","emit","defaultPrevented","popover","slHide","nanoHide","children","find","el","tagName","toLowerCase","getAttribute","Error","triggerType","triggers","trigger","split","includes","setOptions","placement","distance","skidding","transitionElement","tooltip","onAfterHide","nanoAfterHide","onAfterShow","nanoAfterShow","Popover","tooltipPositioner","syncOptions","ele","slot","hidden","destroy","h","Host","onKeyDown","onMouseOver","onMouseOut","onBlur","onFocus","onClick","onSlotchange","disabled","ref","class","part","tooltip--open","role","aria-hidden","name","content","data-popper-arrow"],"mappings":"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","sourcesContent":["@import '../../global/style/nano-theme/components';\n@import '../../global/style/nano-theme/layers';\n\n/**\n * @prop --hide-delay: The amount of time to wait before hiding the tooltip.\n * @prop --hide-duration: The amount of time the hide transition takes to complete.\n * @prop --hide-timing-function: The timing function (easing) to use for the hide transition.\n * @prop --max-width: The maximum width of the tooltip.\n * @prop --show-delay: The amount of time to wait before showing the tooltip.\n * @prop --show-duration: The amount of time the show transition takes to complete.\n * @prop --show-timing-function: The timing function (easing) to use for the show transition.\n */\n:host {\n --max-width: 20rem;\n --hide-delay: 0s;\n --hide-duration: 0.125s;\n --hide-timing-function: ease;\n --show-delay: 0.125s;\n --show-duration: 0.125s;\n --show-timing-function: ease;\n\n /* autoprefixer: ignore next */\n display: contents;\n}\n\n.tooltip {\n $self: &;\n\n max-inline-size: var(--max-width);\n border-radius: #{$tooltip-border-radius};\n background-color: black;\n font-size: #{$tooltip-fontsize};\n line-height: 1.5;\n color: white;\n opacity: 0;\n padding: #{$tooltip-padding};\n transform: translateY(10px) translateZ(0);\n transform-origin: bottom;\n transition-property: opacity, transform;\n transition-delay: var(--hide-delay);\n transition-duration: var(--hide-duration);\n transition-timing-function: var(--hide-timing-function);\n white-space: normal;\n\n &-arrow {\n content: '';\n position: absolute;\n inline-size: 0;\n block-size: 0;\n color: black;\n transition: 0.2s ease transform;\n }\n\n &-positioner {\n position: absolute;\n z-index: #{$layer-index-tooltip};\n\n &[data-popper-placement^='top'] #{$self} {\n transform-origin: bottom;\n transform: translateY(-10px) translateZ(0);\n }\n\n &[data-popper-placement^='bottom'] #{$self} {\n transform-origin: top;\n }\n\n &[data-popper-placement^='left'] #{$self} {\n transform-origin: right;\n }\n\n &[data-popper-placement^='right'] #{$self} {\n transform-origin: left;\n }\n\n &.popover-visible #{$self} {\n opacity: 1;\n transform: none;\n transition-delay: var(--show-delay);\n transition-duration: var(--show-duration);\n transition-timing-function: var(--show-timing-function);\n }\n\n // Arrow + bottom\n &[data-popper-placement^='bottom'] #{$self}-arrow {\n inset-block-end: 100%;\n inset-inline-start: calc(50% - #{$tooltip-arrow-size});\n border-block-end: #{$tooltip-arrow-size} solid;\n border-inline-start: #{$tooltip-arrow-size} solid transparent;\n border-inline-end: #{$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='bottom-start'] #{$self}-arrow {\n inset-inline-start: #{$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='bottom-end'] #{$self}-arrow {\n inset-inline: auto #{$tooltip-arrow-offset};\n }\n\n // Arrow + top\n &[data-popper-placement^='top'] #{$self}-arrow {\n inset-block-start: 100%;\n inset-inline-start: calc(50% - #{$tooltip-arrow-size});\n border-block-start: #{$tooltip-arrow-size} solid;\n border-inline-start: #{$tooltip-arrow-size} solid transparent;\n border-inline-end: #{$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='top-start'] #{$self}-arrow {\n inset-inline-start: #{$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='top-end'] #{$self}-arrow {\n inset-inline: auto #{$tooltip-arrow-offset};\n }\n\n // Arrow + left\n &[data-popper-placement^='left'] #{$self}-arrow {\n inset-block-start: calc(50% - #{$tooltip-arrow-size});\n inset-inline-start: 100%;\n border-inline-start: #{$tooltip-arrow-size} solid;\n border-block-start: #{$tooltip-arrow-size} solid transparent;\n border-block-end: #{$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='left-start'] #{$self}-arrow {\n inset-block-start: #{$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='left-end'] #{$self}-arrow {\n inset-block: auto #{$tooltip-arrow-offset};\n }\n\n // Arrow + right\n &[data-popper-placement^='right'] #{$self}-arrow {\n inset-block-start: calc(50% - #{$tooltip-arrow-size});\n inset-inline-end: 100%;\n border-inline-end: #{$tooltip-arrow-size} solid;\n border-block-start: #{$tooltip-arrow-size} solid transparent;\n border-block-end: #{$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='right-start'] #{$self}-arrow {\n inset-block-start: #{$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='right-end'] #{$self}-arrow {\n inset-block: auto #{$tooltip-arrow-offset};\n }\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n Watch,\n h,\n} from '@stencil/core';\nimport Popover from '../../utils/popover';\n\nlet id = 0;\n\n/**\n * Tooltips display additional information based on a specific action.\n * @slot - The tooltip's target element. Only the first element will be used as the target.\n * @slot content - The tooltip's content. Alternatively, you can use the content prop.\n */\n@Component({\n tag: 'nano-tooltip',\n styleUrl: 'tooltip.scss',\n shadow: true,\n})\nexport class Tooltip {\n private componentId = `tooltip-${++id}`;\n private isVisible = false;\n private popover: Popover;\n private tooltipPositioner: HTMLElement;\n private tooltip: any;\n\n private _target: HTMLElement;\n private get target() {\n return this._target;\n }\n private set target(newTarget) {\n if (newTarget !== this._target && this._target) {\n this._target.removeAttribute('aria-describedby');\n }\n newTarget.setAttribute('aria-describedby', this.componentId);\n this._target = newTarget;\n }\n\n @Element() host: HTMLNanoTooltipElement;\n\n /** The tooltip's content. Alternatively, you can use the content slot. */\n @Prop() content = '';\n\n /**\n * The preferred placement of the tooltip. Note that the actual placement may vary as needed to keep the tooltip\n * inside of the viewport.\n */\n @Prop() placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end' = 'top';\n\n /** Set to true to disable the tooltip so it won't show when triggered. */\n @Prop() disabled = false;\n\n /** The distance in pixels from which to offset the tooltip away from its target. */\n @Prop() distance = 10;\n\n /** Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** The distance in pixels from which to offset the tooltip along its target. */\n @Prop() skidding = 0;\n\n /**\n * Controls how the tooltip is activated. Possible options include `click`, `hover`, `focus`, and `manual`. Multiple\n * options can be passed by separating them with a space. When manual is used, the tooltip must be activated\n * programmatically.\n */\n @Prop() trigger: string = 'hover focus';\n\n @Watch('open')\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n }\n\n // Events\n\n /** Emitted when the tooltip begins to show. Calling `event.preventDefault()` will prevent it from being shown. */\n @Event() nanoShow: EventEmitter;\n\n /** Emitted after the tooltip has shown and all transitions are complete. */\n @Event() nanoAfterShow: EventEmitter;\n\n /** Emitted when the tooltip begins to hide. Calling `event.preventDefault()` will prevent it from being hidden. */\n @Event() nanoHide: EventEmitter;\n\n /** Emitted after the tooltip has hidden and all transitions are complete. */\n @Event() nanoAfterHide: EventEmitter;\n\n // Public methods\n\n /** Shows the tooltip. */\n @Method()\n async show() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (this.isVisible) {\n return;\n }\n\n const slShow = this.nanoShow.emit();\n if (slShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n this.isVisible = true;\n this.open = true;\n this.popover.show();\n }\n\n /** Hides the tooltip. */\n @Method()\n async hide() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (!this.isVisible) {\n return;\n }\n\n const slHide = this.nanoHide.emit();\n if (slHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n this.isVisible = false;\n this.open = false;\n this.popover.hide();\n }\n\n // Private methods\n\n private getTarget() {\n // Get the first child that isn't a <style> or content slot\n const target = [...Array.from(this.host.children)].find(\n (el) =>\n el.tagName.toLowerCase() !== 'style' &&\n el.getAttribute('slot') !== 'content'\n ) as HTMLElement;\n\n if (!target) {\n throw new Error('Invalid tooltip target: no child element was found.');\n }\n\n return target;\n }\n\n private hasTrigger(triggerType: string) {\n const triggers = this.trigger.split(' ');\n return triggers.includes(triggerType);\n }\n\n private syncOptions() {\n this.popover.setOptions({\n placement: this.placement,\n distance: this.distance,\n skidding: this.skidding,\n transitionElement: this.tooltip,\n onAfterHide: () => this.nanoAfterHide.emit(),\n onAfterShow: () => this.nanoAfterShow.emit(),\n });\n }\n\n // Event Handlers\n\n private handleBlur = () => {\n if (this.hasTrigger('focus')) {\n this.hide();\n }\n };\n\n private handleClick = () => {\n if (this.hasTrigger('click')) {\n this.open ? this.hide() : this.show();\n }\n };\n\n private handleFocus = () => {\n if (this.hasTrigger('focus')) {\n this.show();\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n // Pressing escape when the target element has focus should dismiss the tooltip\n if (this.open && event.key === 'Escape') {\n event.stopPropagation();\n this.hide();\n }\n };\n\n private handleMouseOver = () => {\n if (this.hasTrigger('hover')) {\n this.show();\n }\n };\n\n private handleMouseOut = () => {\n if (this.hasTrigger('hover')) {\n this.hide();\n }\n };\n\n private handleSlotChange = () => {\n this.target = this.getTarget();\n };\n\n private handleTTSlotChange = () => {\n const contentDiv =\n this.host.querySelector(`[id=\"${this.componentId}\"]`) ||\n this.host.shadowRoot.getElementById(this.componentId);\n Array.from(this.host.querySelectorAll('[slot=\"content\"]'))\n .filter((elm) => elm !== contentDiv)\n .forEach((elm) => {\n contentDiv.appendChild(elm);\n });\n };\n\n // Stencil hooks\n\n componentDidLoad() {\n this.target = this.getTarget();\n this.popover = new Popover(this.target, this.tooltipPositioner);\n this.syncOptions();\n\n const ele = this.host.shadowRoot.getElementById(this.componentId);\n ele.slot = 'content';\n this.host.appendChild(ele);\n this.handleTTSlotChange();\n\n // Show on init if open\n this.tooltipPositioner.hidden = !this.open;\n if (this.open) {\n this.show();\n }\n }\n\n componentDidUpdate() {\n this.syncOptions();\n }\n\n disconnectedCallback() {\n this.popover.destroy();\n }\n\n render() {\n return (\n <Host\n onKeyDown={this.handleKeyDown}\n onMouseOver={this.handleMouseOver}\n onMouseOut={this.handleMouseOut}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.handleClick}\n >\n <slot onSlotchange={this.handleSlotChange} />\n\n {!this.disabled && (\n <div\n ref={(el) => (this.tooltipPositioner = el)}\n class=\"tooltip-positioner\"\n >\n <div\n part=\"base\"\n ref={(el) => (this.tooltip = el)}\n class={{\n tooltip: true,\n 'tooltip--open': this.open,\n }}\n role=\"tooltip\"\n aria-hidden={this.open ? 'false' : 'true'}\n >\n <slot name=\"content\" onSlotchange={this.handleTTSlotChange}>\n <div id={this.componentId}>{this.content}</div>\n </slot>\n <div class=\"tooltip-arrow\" data-popper-arrow></div>\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["src/components/tooltip/tooltip.scss?tag=nano-tooltip&encapsulation=shadow","src/components/tooltip/tooltip.tsx"],"names":["tooltipCss","id","Tooltip","this","componentId","isVisible","handleBlur","hasTrigger","hide","handleClick","open","show","handleFocus","handleKeyDown","event","key","stopPropagation","handleMouseOver","handleMouseOut","handleSlotChange","target","getTarget","handleTTSlotChange","contentDiv","host","querySelector","shadowRoot","getElementById","Array","from","querySelectorAll","filter","elm","forEach","appendChild","_target","newTarget","removeAttribute","setAttribute","[object Object]","slShow","nanoShow","emit","defaultPrevented","popover","slHide","nanoHide","children","find","el","tagName","toLowerCase","getAttribute","Error","triggerType","triggers","trigger","split","includes","setOptions","placement","distance","skidding","transitionElement","tooltip","onAfterHide","nanoAfterHide","onAfterShow","nanoAfterShow","Popover","tooltipPositioner","syncOptions","ele","slot","hidden","destroy","h","Host","onKeyDown","onMouseOver","onMouseOut","onBlur","onFocus","onClick","onSlotchange","disabled","ref","class","part","tooltip--open","role","aria-hidden","name","content","data-popper-arrow"],"mappings":"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","sourcesContent":["@import '../../global/style/nano-theme/components';\n@import '../../global/style/nano-theme/layers';\n\n/**\n * @prop --hide-delay: The amount of time to wait before hiding the tooltip.\n * @prop --hide-duration: The amount of time the hide transition takes to complete.\n * @prop --hide-timing-function: The timing function (easing) to use for the hide transition.\n * @prop --max-width: The maximum width of the tooltip.\n * @prop --show-delay: The amount of time to wait before showing the tooltip.\n * @prop --show-duration: The amount of time the show transition takes to complete.\n * @prop --show-timing-function: The timing function (easing) to use for the show transition.\n */\n:host {\n --max-width: 20rem;\n --hide-delay: 0s;\n --hide-duration: 0.125s;\n --hide-timing-function: ease;\n --show-delay: 0.125s;\n --show-duration: 0.125s;\n --show-timing-function: ease;\n\n /* autoprefixer: ignore next */\n display: contents;\n}\n\n.tooltip {\n $self: &;\n\n max-inline-size: var(--max-width);\n border-radius: #{$tooltip-border-radius};\n background-color: black;\n font-size: #{$tooltip-fontsize};\n line-height: 1.5;\n color: white;\n opacity: 0;\n padding: #{$tooltip-padding};\n transform: translateY(10px) translateZ(0);\n transform-origin: bottom;\n transition-property: opacity, transform;\n transition-delay: var(--hide-delay);\n transition-duration: var(--hide-duration);\n transition-timing-function: var(--hide-timing-function);\n white-space: normal;\n\n &-arrow {\n content: '';\n position: absolute;\n inline-size: 0;\n block-size: 0;\n color: black;\n transition: 0.2s ease transform;\n }\n\n &-positioner {\n position: absolute;\n z-index: #{$layer-index-tooltip};\n\n &[data-popper-placement^='top'] #{$self} {\n transform-origin: bottom;\n transform: translateY(-10px) translateZ(0);\n }\n\n &[data-popper-placement^='bottom'] #{$self} {\n transform-origin: top;\n }\n\n &[data-popper-placement^='left'] #{$self} {\n transform-origin: right;\n }\n\n &[data-popper-placement^='right'] #{$self} {\n transform-origin: left;\n }\n\n &.popover-visible #{$self} {\n opacity: 1;\n transform: none;\n transition-delay: var(--show-delay);\n transition-duration: var(--show-duration);\n transition-timing-function: var(--show-timing-function);\n }\n\n // Arrow + bottom\n &[data-popper-placement^='bottom'] #{$self}-arrow {\n inset-block-end: 100%;\n inset-inline-start: calc(50% - #{$tooltip-arrow-size});\n border-block-end: #{$tooltip-arrow-size} solid;\n border-inline-start: #{$tooltip-arrow-size} solid transparent;\n border-inline-end: #{$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='bottom-start'] #{$self}-arrow {\n inset-inline-start: #{$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='bottom-end'] #{$self}-arrow {\n inset-inline: auto #{$tooltip-arrow-offset};\n }\n\n // Arrow + top\n &[data-popper-placement^='top'] #{$self}-arrow {\n inset-block-start: 100%;\n inset-inline-start: calc(50% - #{$tooltip-arrow-size});\n border-block-start: #{$tooltip-arrow-size} solid;\n border-inline-start: #{$tooltip-arrow-size} solid transparent;\n border-inline-end: #{$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='top-start'] #{$self}-arrow {\n inset-inline-start: #{$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='top-end'] #{$self}-arrow {\n inset-inline: auto #{$tooltip-arrow-offset};\n }\n\n // Arrow + left\n &[data-popper-placement^='left'] #{$self}-arrow {\n inset-block-start: calc(50% - #{$tooltip-arrow-size});\n inset-inline-start: 100%;\n border-inline-start: #{$tooltip-arrow-size} solid;\n border-block-start: #{$tooltip-arrow-size} solid transparent;\n border-block-end: #{$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='left-start'] #{$self}-arrow {\n inset-block-start: #{$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='left-end'] #{$self}-arrow {\n inset-block: auto #{$tooltip-arrow-offset};\n }\n\n // Arrow + right\n &[data-popper-placement^='right'] #{$self}-arrow {\n inset-block-start: calc(50% - #{$tooltip-arrow-size});\n inset-inline-end: 100%;\n border-inline-end: #{$tooltip-arrow-size} solid;\n border-block-start: #{$tooltip-arrow-size} solid transparent;\n border-block-end: #{$tooltip-arrow-size} solid transparent;\n }\n\n &[data-popper-placement='right-start'] #{$self}-arrow {\n inset-block-start: #{$tooltip-arrow-offset};\n }\n\n &[data-popper-placement='right-end'] #{$self}-arrow {\n inset-block: auto #{$tooltip-arrow-offset};\n }\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n Watch,\n h,\n} from '@stencil/core';\nimport Popover from '../../utils/popover';\n\nlet id = 0;\n\n/**\n * Tooltips display additional information based on a specific action.\n * @slot - The tooltip's target element. Only the first element will be used as the target.\n * @slot content - The tooltip's content. Alternatively, you can use the content prop.\n */\n@Component({\n tag: 'nano-tooltip',\n styleUrl: 'tooltip.scss',\n shadow: true,\n})\nexport class Tooltip {\n private componentId = `tooltip-${++id}`;\n private isVisible = false;\n private popover: Popover;\n private tooltipPositioner: HTMLElement;\n private tooltip: any;\n\n private _target: HTMLElement;\n private get target() {\n return this._target;\n }\n private set target(newTarget) {\n if (newTarget !== this._target && this._target) {\n this._target.removeAttribute('aria-describedby');\n }\n newTarget.setAttribute('aria-describedby', this.componentId);\n this._target = newTarget;\n }\n\n @Element() host: HTMLNanoTooltipElement;\n\n /** The tooltip's content. Alternatively, you can use the content slot. */\n @Prop() content = '';\n\n /**\n * The preferred placement of the tooltip. Note that the actual placement may vary as needed to keep the tooltip\n * inside of the viewport.\n */\n @Prop() placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end' = 'top';\n\n /** Set to true to disable the tooltip so it won't show when triggered. */\n @Prop() disabled = false;\n\n /** The distance in pixels from which to offset the tooltip away from its target. */\n @Prop() distance = 10;\n\n /** Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** The distance in pixels from which to offset the tooltip along its target. */\n @Prop() skidding = 0;\n\n /**\n * Controls how the tooltip is activated. Possible options include `click`, `hover`, `focus`, and `manual`. Multiple\n * options can be passed by separating them with a space. When manual is used, the tooltip must be activated\n * programmatically.\n */\n @Prop() trigger: string = 'hover focus';\n\n @Watch('open')\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n }\n\n // Events\n\n /** Emitted when the tooltip begins to show. Calling `event.preventDefault()` will prevent it from being shown. */\n @Event() nanoShow: EventEmitter;\n\n /** Emitted after the tooltip has shown and all transitions are complete. */\n @Event() nanoAfterShow: EventEmitter;\n\n /** Emitted when the tooltip begins to hide. Calling `event.preventDefault()` will prevent it from being hidden. */\n @Event() nanoHide: EventEmitter;\n\n /** Emitted after the tooltip has hidden and all transitions are complete. */\n @Event() nanoAfterHide: EventEmitter;\n\n // Public methods\n\n /** Shows the tooltip. */\n @Method()\n async show() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (this.isVisible) {\n return;\n }\n\n const slShow = this.nanoShow.emit();\n if (slShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n this.isVisible = true;\n this.open = true;\n this.popover.show();\n }\n\n /** Hides the tooltip. */\n @Method()\n async hide() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (!this.isVisible) {\n return;\n }\n\n const slHide = this.nanoHide.emit();\n if (slHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n this.isVisible = false;\n this.open = false;\n this.popover.hide();\n }\n\n // Private methods\n\n private getTarget() {\n // Get the first child that isn't a <style> or content slot\n const target = [...Array.from(this.host.children)].find(\n (el) =>\n el.tagName.toLowerCase() !== 'style' &&\n el.getAttribute('slot') !== 'content'\n ) as HTMLElement;\n\n if (!target) {\n throw new Error('Invalid tooltip target: no child element was found.');\n }\n\n return target;\n }\n\n private hasTrigger(triggerType: string) {\n const triggers = this.trigger.split(' ');\n return triggers.includes(triggerType);\n }\n\n private syncOptions() {\n this.popover.setOptions({\n placement: this.placement,\n distance: this.distance,\n skidding: this.skidding,\n transitionElement: this.tooltip,\n onAfterHide: () => this.nanoAfterHide.emit(),\n onAfterShow: () => this.nanoAfterShow.emit(),\n });\n }\n\n // Event Handlers\n\n private handleBlur = () => {\n if (this.hasTrigger('focus')) {\n this.hide();\n }\n };\n\n private handleClick = () => {\n if (this.hasTrigger('click')) {\n this.open ? this.hide() : this.show();\n }\n };\n\n private handleFocus = () => {\n if (this.hasTrigger('focus')) {\n this.show();\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n // Pressing escape when the target element has focus should dismiss the tooltip\n if (this.open && event.key === 'Escape') {\n event.stopPropagation();\n this.hide();\n }\n };\n\n private handleMouseOver = () => {\n if (this.hasTrigger('hover')) {\n this.show();\n }\n };\n\n private handleMouseOut = () => {\n if (this.hasTrigger('hover')) {\n this.hide();\n }\n };\n\n private handleSlotChange = () => {\n this.target = this.getTarget();\n };\n\n private handleTTSlotChange = () => {\n const contentDiv =\n this.host.querySelector(`[id=\"${this.componentId}\"]`) ||\n this.host.shadowRoot.getElementById(this.componentId);\n Array.from(this.host.querySelectorAll('[slot=\"content\"]'))\n .filter((elm) => elm !== contentDiv)\n .forEach((elm) => {\n contentDiv.appendChild(elm);\n });\n };\n\n // Stencil hooks\n\n componentDidLoad() {\n this.target = this.getTarget();\n this.popover = new Popover(this.target, this.tooltipPositioner);\n this.syncOptions();\n\n const ele = this.host.shadowRoot.getElementById(this.componentId);\n ele.slot = 'content';\n this.host.appendChild(ele);\n this.handleTTSlotChange();\n\n // Show on init if open\n this.tooltipPositioner.hidden = !this.open;\n if (this.open) {\n this.show();\n }\n }\n\n componentDidUpdate() {\n this.syncOptions();\n }\n\n disconnectedCallback() {\n this.popover.destroy();\n }\n\n render() {\n return (\n <Host\n onKeyDown={this.handleKeyDown}\n onMouseOver={this.handleMouseOver}\n onMouseOut={this.handleMouseOut}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.handleClick}\n >\n <slot onSlotchange={this.handleSlotChange} />\n\n {!this.disabled && (\n <div\n ref={(el) => (this.tooltipPositioner = el)}\n class=\"tooltip-positioner\"\n >\n <div\n part=\"base\"\n ref={(el) => (this.tooltip = el)}\n class={{\n tooltip: true,\n 'tooltip--open': this.open,\n }}\n role=\"tooltip\"\n aria-hidden={this.open ? 'false' : 'true'}\n >\n <slot name=\"content\" onSlotchange={this.handleTTSlotChange}>\n <div id={this.componentId}>{this.content}</div>\n </slot>\n <div class=\"tooltip-arrow\" data-popper-arrow></div>\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- .nano-hide{display:none !important}.nano-hide-up{display:none !important}.nano-hide-down{display:none !important}@media(min-width: 576px){.nano-hide-sm-up{display:none !important}}@media(max-width: 576px){.nano-hide-sm-down{display:none !important}}@media(min-width: 768px){.nano-hide-md-up{display:none !important}}@media(max-width: 768px){.nano-hide-md-down{display:none !important}}@media(min-width: 992px){.nano-hide-lg-up{display:none !important}}@media(max-width: 992px){.nano-hide-lg-down{display:none !important}}@media(min-width: 1200px){.nano-hide-xl-up{display:none !important}}@media(max-width: 1200px){.nano-hide-xl-down{display:none !important}}audio,canvas,progress,video{vertical-align:baseline}audio:not([controls]){display:none;block-size:0}b,strong{font-weight:bold}img{max-inline-size:100%;border:0}svg:not(:root){overflow:hidden}figure{margin-block:1em;margin-inline:40px}hr{block-size:1px;border-width:0;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace;font-size:1em}label,input,select,textarea{font-family:inherit;line-height:normal}textarea{overflow:auto;block-size:auto;font:inherit;color:inherit}textarea::placeholder{padding-inline-start:2px}form,input,optgroup,select{margin:0;font:inherit;color:inherit}html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}a,a div,a span,a ion-icon,a ion-label,button,button div,button span,button ion-icon,button ion-label,.ion-tappable,[tappable],[tappable] div,[tappable] span,[tappable] ion-icon,[tappable] ion-label,input,textarea{touch-action:manipulation}a ion-label,button ion-label{pointer-events:none}button{border:0;border-radius:0;font-family:inherit;font-style:inherit;font-variant:inherit;line-height:1;text-transform:none;cursor:pointer;-webkit-appearance:button}[tappable]{cursor:pointer}a[disabled],button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input[type=checkbox],input[type=radio]{padding:0;box-sizing:border-box}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{block-size:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none}button,input,select,textarea{-webkit-tap-highlight-color:rgba(201,224,253,.8)}*,*::before,*::after{box-sizing:border-box;font-family:inherit}html{inline-size:100%;text-size-adjust:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin:0;padding:0;text-rendering:optimizeLegibility}.nano-no-padding{--padding-start: 0;--padding-end: 0;--padding-top: 0;--padding-bottom: 0;padding:0}.nano-padding{--padding-start: var(--nano-spacing-medium, 16px);--padding-end: var(--nano-spacing-medium, 16px);--padding-top: var(--nano-spacing-medium, 16px);--padding-bottom: var(--nano-spacing-medium, 16px);padding:var(--nano-spacing-medium, 16px)}.nano-padding-top{--padding-top: var(--nano-spacing-medium, 16px);padding-block-start:var(--nano-spacing-medium, 16px)}.nano-padding-start{--padding-start: var(--nano-spacing-medium, 16px);padding-inline-start:var(--nano-spacing-medium, 16px)}.nano-padding-end{--padding-end: var(--nano-spacing-medium, 16px);padding-inline-end:var(--nano-spacing-medium, 16px)}.nano-padding-bottom{--padding-bottom: var(--nano-spacing-medium, 16px);padding-block-end:var(--nano-spacing-medium, 16px)}.nano-padding-vertical{--padding-top: var(--nano-spacing-medium, 16px);--padding-bottom: var(--nano-spacing-medium, 16px);padding-block:var(--nano-spacing-medium, 16px)}.nano-padding-horizontal{--padding-start: var(--nano-spacing-medium, 16px);--padding-end: var(--nano-spacing-medium, 16px);padding-inline:var(--nano-spacing-medium, 16px)}.nano-no-margin{--margin-start: 0;--margin-end: 0;--margin-top: 0;--margin-bottom: 0;margin:0}.nano-margin{--margin-start: var(--nano-spacing-medium, 16px);--margin-end: var(--nano-spacing-medium, 16px);--margin-top: var(--nano-spacing-medium, 16px);--margin-bottom: var(--nano-spacing-medium, 16px);margin:var(--nano-spacing-medium, 16px)}.nano-margin-top{--margin-top: var(--nano-spacing-medium, 16px);margin-block-start:var(--nano-spacing-medium, 16px)}.nano-margin-start{--margin-start: var(--nano-spacing-medium, 16px);margin-inline-start:var(--nano-spacing-medium, 16px)}.nano-margin-end{--margin-end: var(--nano-spacing-medium, 16px);margin-inline-end:var(--nano-spacing-medium, 16px)}.nano-margin-bottom{--margin-bottom: var(--nano-spacing-medium, 16px);margin-block-end:var(--nano-spacing-medium, 16px)}.nano-margin-vertical{--margin-top: var(--nano-spacing-medium, 16px);--margin-bottom: var(--nano-spacing-medium, 16px);margin-block:var(--nano-spacing-medium, 16px)}.nano-margin-horizontal{--margin-start: var(--nano-spacing-medium, 16px);--margin-end: var(--nano-spacing-medium, 16px);margin-inline:var(--nano-spacing-medium, 16px)}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_1_0.woff2") format("woff2"),url("../assets/fonts/3AF163_1_0.woff") format("woff");font-weight:400;font-style:normal;font-stretch:condensed;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_8_0.woff2") format("woff2"),url("../assets/fonts/3AF163_8_0.woff") format("woff");font-weight:400;font-style:italic;font-stretch:condensed;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_5_0.woff2") format("woff2"),url("../assets/fonts/3AF163_5_0.woff") format("woff");font-weight:600;font-style:normal;font-stretch:condensed;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_2_0.woff2") format("woff2"),url("../assets/fonts/3AF163_2_0.woff") format("woff");font-weight:600;font-style:italic;font-stretch:condensed;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_9_0.woff2") format("woff2"),url("../assets/fonts/3AF163_9_0.woff") format("woff");font-weight:200;font-style:normal;font-stretch:condensed;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_A_0.woff2") format("woff2"),url("../assets/fonts/3AF163_A_0.woff") format("woff");font-weight:200;font-style:italic;font-stretch:condensed;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_21_0.woff2") format("woff2"),url("../assets/fonts/3AF163_21_0.woff") format("woff");font-weight:400;font-style:normal;font-stretch:normal;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_28_0.woff2") format("woff2"),url("../assets/fonts/3AF163_28_0.woff") format("woff");font-weight:400;font-style:italic;font-stretch:normal;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_25_0.woff2") format("woff2"),url("../assets/fonts/3AF163_25_0.woff") format("woff");font-weight:600;font-style:normal;font-stretch:normal;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_22_0.woff2") format("woff2"),url("../assets/fonts/3AF163_22_0.woff") format("woff");font-weight:600;font-style:italic;font-stretch:normal;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_29_0.woff2") format("woff2"),url("../assets/fonts/3AF163_29_0.woff") format("woff");font-weight:200;font-style:normal;font-stretch:normal;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_2A_0.woff2") format("woff2"),url("../assets/fonts/3AF163_2A_0.woff") format("woff");font-weight:200;font-style:italic;font-stretch:normal;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_15_0.woff2") format("woff2"),url("../assets/fonts/3AF163_15_0.woff") format("woff");font-weight:400;font-style:normal;font-stretch:expanded;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_16_0.woff2") format("woff2"),url("../assets/fonts/3AF163_16_0.woff") format("woff");font-weight:600;font-style:italic;font-stretch:expanded;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_17_0.woff2") format("woff2"),url("../assets/fonts/3AF163_17_0.woff") format("woff");font-weight:600;font-style:normal;font-stretch:expanded;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_1B_0.woff2") format("woff2"),url("../assets/fonts/3AF163_1B_0.woff") format("woff");font-weight:200;font-style:normal;font-stretch:expanded;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_1C_0.woff2") format("woff2"),url("../assets/fonts/3AF163_1C_0.woff") format("woff");font-weight:200;font-style:italic;font-stretch:expanded;font-display:swap}html{font-family:var(--nano-font-family);font-weight:var(--nano-font-weight, 500);color:var(--nano-text-color, #4a4a4a);font-size:var(--nano-base-font-size)}a{color:var(--nano-color-primary, #007495);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{margin-block:16px 10px;font-weight:600;line-height:1.2}h1{margin-block-start:10px;font-size:28px}h2{margin-block-start:18px;font-size:24px}h3{font-size:22px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}small{font-size:75%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{inset-block-start:-0.5em}sub{inset-block-end:-0.25em}p{font-size:1.125rem;line-height:1.4;margin-block:0 1rem}p.supporting{font-size:.875rem}.heading{font-weight:500;line-height:1.3;margin-block:0 1.5rem;margin-inline:0}.heading__highlight{color:#007495}@media print{.heading{color:#4a4a4a}}.heading--one{font-size:2.5rem}@media(min-width: 768px){.heading--one{font-size:3.25rem}}.heading--two{font-size:1.5rem}@media(min-width: 768px){.heading--two{font-size:2rem}}.heading--three{font-size:1.125rem}@media(min-width: 768px){.heading--three{font-size:1.375rem}}.heading--four{font-size:1.125rem}.heading--five{font-size:1rem}.heading--light{font-weight:200}.heading--upper{text-transform:uppercase}.heading--meta{font-size:.875rem;text-transform:uppercase;letter-spacing:1.3px;font-weight:bold;margin-block-end:1rem}.button{padding:0;border:none;background-color:rgba(0,0,0,0);font:inherit;-webkit-box-align:center;text-decoration:none;color:inherit;transition:background-color 100ms ease-in-out,box-shadow 100ms ease-in-out,border-color 100ms ease-in-out,color 100ms ease-in-out;padding-inline:var(--nano-btn-padding-start, 1rem) var(--nano-btn-padding-end, 1rem);padding-block:var(--nano-btn-padding-top, 0.5rem) var(--nano-btn-padding-bottom, 0.5rem);box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));display:inline-block;border-radius:var(--nano-btn-border-radius, 5px);line-height:var(--nano-btn-line-height, 1.5rem);font-weight:500;cursor:pointer;background:rgba(0,0,0,.02)}.button::-moz-focus-inner{border:0;padding:0}.button:hover,.button:focus{text-decoration:none;color:inherit}@media print{.button{display:none}}.button:focus,.button.button--focus{outline:none;box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.button nano-icon{margin-inline-start:.5rem;margin-inline-end:0;font-size:var(--nano-btn-icon-size, 1rem);vertical-align:middle;margin-block-start:-0.188rem;display:inline-block}.button.button--icon-start nano-icon{margin-inline-start:0;margin-inline-end:.5rem}.button:hover:not(.button--disabled){box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2))}.button:active:not(.button--disabled):not(:disabled){box-shadow:none}.button--disabled,.button:disabled{opacity:.6}.button--disabled:hover,.button:disabled:hover{cursor:default}.button--primary{background-color:var(--nano-color-primary, #007495);color:var(--nano-color-primary-contrast, #fff)}.button--primary:hover:not(.button--disabled):not(:disabled),.button--primary.button--active{background-color:var(--nano-color-primary-shade, #00637f);color:var(--nano-color-primary-contrast, #fff)}.button--primary:hover:not(.button--disabled):not(:disabled).button--keyline,.button--primary.button--active.button--keyline{background-color:var(--nano-color-primary, #007495);color:var(--nano-color-primary-contrast, #fff)}.button--primary:focus{color:var(--nano-color-primary-contrast, #fff)}.button--primary.button--keyline{background:rgba(0,0,0,0);border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);color:var(--nano-color-primary, #007495);border-color:var(--nano-color-primary, #007495)}.button--primary.button--keyline:hover:not(.button--disabled):not(:disabled),.button--primary.button--keyline:not(.button--focus),.button--primary.button--keyline.button--active{box-shadow:none}.button--secondary{background-color:#17bb75;color:#fff}.button--secondary:hover:not(.button--disabled):not(:disabled),.button--secondary.button--active{background-color:#0b814f;color:#fff}.button--secondary:hover:not(.button--disabled):not(:disabled).button--keyline,.button--secondary.button--active.button--keyline{background-color:#17bb75;color:#fff}.button--secondary:focus{color:#fff}.button--secondary.button--keyline{background:rgba(0,0,0,0);border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);color:#17bb75;border-color:#17bb75}.button--secondary.button--keyline:hover:not(.button--disabled):not(:disabled),.button--secondary.button--keyline:not(.button--focus),.button--secondary.button--keyline.button--active{box-shadow:none}.button--light{background-color:#fff;color:#007495}.button--light:hover:not(.button--disabled):not(:disabled),.button--light.button--active{background-color:#fff;color:#0c5a71}.button--light:hover:not(.button--disabled):not(:disabled).button--keyline,.button--light.button--active.button--keyline{background-color:#fff;color:#007495}.button--light:focus{color:#007495}.button--light.button--keyline{background:rgba(0,0,0,0);border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);color:#fff;border-color:#fff}.button--light.button--keyline:hover:not(.button--disabled):not(:disabled),.button--light.button--keyline:not(.button--focus),.button--light.button--keyline.button--active{box-shadow:none}.button--danger{background-color:#ef4135;color:#fff}.button--danger:hover:not(.button--disabled):not(:disabled),.button--danger.button--active{background-color:#be2a20;color:#fff}.button--danger:hover:not(.button--disabled):not(:disabled).button--keyline,.button--danger.button--active.button--keyline{background-color:#ef4135;color:#fff}.button--danger:focus{color:#fff}.button--danger.button--keyline{background:rgba(0,0,0,0);border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);color:#ef4135;border-color:#ef4135}.button--danger.button--keyline:hover:not(.button--disabled):not(:disabled),.button--danger.button--keyline:not(.button--focus),.button--danger.button--keyline.button--active{box-shadow:none}.button--warning{background-color:#f57e20;color:#fff}.button--warning:hover:not(.button--disabled):not(:disabled),.button--warning.button--active{background-color:#b95e17;color:#fff}.button--warning:hover:not(.button--disabled):not(:disabled).button--keyline,.button--warning.button--active.button--keyline{background-color:#f57e20;color:#fff}.button--warning:focus{color:#fff}.button--warning.button--keyline{background:rgba(0,0,0,0);border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);color:#f57e20;border-color:#f57e20}.button--warning.button--keyline:hover:not(.button--disabled):not(:disabled),.button--warning.button--keyline:not(.button--focus),.button--warning.button--keyline.button--active{box-shadow:none}.button--tertiary{background:rgba(0,0,0,0);box-shadow:none;text-decoration:underline;font-weight:400}.button--tertiary:hover:not(.button--disabled):not(:disabled),.button--tertiary:hover.button--active,.button--tertiary:focus:not(.button--disabled):not(:disabled),.button--tertiary:focus.button--active{color:#b5aea7;box-shadow:none;text-decoration:underline}.nano-color-primary{--nano-color-base: var(--nano-color-primary, #007495) ;--nano-color-base-rgb: var( --nano-color-primary-rgb, 0, 116, 149 ) ;--nano-color-contrast: var(--nano-color-primary-contrast, #fff) ;--nano-color-contrast-rgb: var( --nano-color-primary-contrast-rgb, 255, 255, 255 ) ;--nano-color-shade: var(--nano-color-primary-shade, #00637f) ;--nano-color-tint: var(--nano-color-primary-tint, #2689a5) ;--nano-color-tint-rgb: var( --nano-color-primary-tint-rgb, 38, 137, 165 ) }.nano-color-secondary{--nano-color-base: var(--nano-color-secondary, #548caf) ;--nano-color-base-rgb: var( --nano-color-secondary-rgb, 84, 140, 175 ) ;--nano-color-contrast: var(--nano-color-secondary-contrast, #fff) ;--nano-color-contrast-rgb: var( --nano-color-secondary-contrast-rgb, 255, 255, 255 ) ;--nano-color-shade: var(--nano-color-secondary-shade, #477795) ;--nano-color-tint: var(--nano-color-secondary-tint, #6e9dbb) ;--nano-color-tint-rgb: var( --nano-color-secondary-tint-rgb, 110, 157, 187 ) }.nano-color-tertiary{--nano-color-base: var(--nano-color-tertiary, #b5aea7) ;--nano-color-base-rgb: var( --nano-color-tertiary-rgb, 181, 174, 167 ) ;--nano-color-contrast: var(--nano-color-tertiary-contrast, #4a4a4a) ;--nano-color-contrast-rgb: var( --nano-color-tertiary-contrast-rgb, 74, 74, 74 ) ;--nano-color-shade: var(--nano-color-tertiary-shade, #9a948e) ;--nano-color-tint: var(--nano-color-tertiary-tint, #c0bab4) ;--nano-color-tint-rgb: var( --nano-color-tertiary-tint-rgb, 192, 186, 180 ) }.nano-color-success{--nano-color-base: var(--nano-color-success, #17bb75) ;--nano-color-base-rgb: var( --nano-color-success-rgb, 23, 187, 117 ) ;--nano-color-contrast: var(--nano-color-success-contrast, #4a4a4a) ;--nano-color-contrast-rgb: var( --nano-color-success-contrast-rgb, 74, 74, 74 ) ;--nano-color-shade: var(--nano-color-success-shade, #149f63) ;--nano-color-tint: var(--nano-color-success-tint, #3ac58a) ;--nano-color-tint-rgb: var( --nano-color-success-tint-rgb, 58, 197, 138 ) }.nano-color-warning{--nano-color-base: var(--nano-color-warning, #f57e20) ;--nano-color-base-rgb: var( --nano-color-warning-rgb, 245, 126, 32 ) ;--nano-color-contrast: var(--nano-color-warning-contrast, #fff) ;--nano-color-contrast-rgb: var( --nano-color-warning-contrast-rgb, 255, 255, 255 ) ;--nano-color-shade: var(--nano-color-warning-shade, #d06b1b) ;--nano-color-tint: var(--nano-color-warning-tint, #f79141) ;--nano-color-tint-rgb: var( --nano-color-warning-tint-rgb, 247, 145, 65 ) }.nano-color-danger{--nano-color-base: var(--nano-color-danger, #ef4135) ;--nano-color-base-rgb: var( --nano-color-danger-rgb, 239, 65, 53 ) ;--nano-color-contrast: var(--nano-color-danger-contrast, #fff) ;--nano-color-contrast-rgb: var( --nano-color-danger-contrast-rgb, 255, 255, 255 ) ;--nano-color-shade: var(--nano-color-danger-shade, #cb372d) ;--nano-color-tint: var(--nano-color-danger-tint, #f15e53) ;--nano-color-tint-rgb: var( --nano-color-danger-tint-rgb, 241, 94, 83 ) }.nano-color-light{--nano-color-base: var(--nano-color-light, #f2f7f9) ;--nano-color-base-rgb: var( --nano-color-light-rgb, 242, 247, 249 ) ;--nano-color-contrast: var(--nano-color-light-contrast, #4a4a4a) ;--nano-color-contrast-rgb: var( --nano-color-light-contrast-rgb, 74, 74, 74 ) ;--nano-color-shade: var(--nano-color-light-shade, #ced2d4) ;--nano-color-tint: var(--nano-color-light-tint, #f4f8fa) ;--nano-color-tint-rgb: var( --nano-color-light-tint-rgb, 244, 248, 250 ) }.nano-color-medium{--nano-color-base: var(--nano-color-medium, #005c75) ;--nano-color-base-rgb: var( --nano-color-medium-rgb, 0, 92, 117 ) ;--nano-color-contrast: var(--nano-color-medium-contrast, #fff) ;--nano-color-contrast-rgb: var( --nano-color-medium-contrast-rgb, 255, 255, 255 ) ;--nano-color-shade: var(--nano-color-medium-shade, #004e63) ;--nano-color-tint: var(--nano-color-medium-tint, #26748a) ;--nano-color-tint-rgb: var( --nano-color-medium-tint-rgb, 38, 116, 138 ) }.nano-color-dark{--nano-color-base: var(--nano-color-dark, #455556) ;--nano-color-base-rgb: var( --nano-color-dark-rgb, 69, 85, 86 ) ;--nano-color-contrast: var(--nano-color-dark-contrast, #fff) ;--nano-color-contrast-rgb: var( --nano-color-dark-contrast-rgb, 255, 255, 255 ) ;--nano-color-shade: var(--nano-color-dark-shade, #3b4849) ;--nano-color-tint: var(--nano-color-dark-tint, #616f6f) ;--nano-color-tint-rgb: var( --nano-color-dark-tint-rgb, 97, 111, 111 ) }:root{--nano-base-font-size: 16px;--nano-padding: 1rem;--nano-font-family: "HelveticaNow", "Helvetica Neue", helvetica, arial, "Lucida Grande", sans-serif;--nano-color-white:#fff;--nano-color-white-rgb:255, 255, 255;--nano-color-lightblue:#90c6e7;--nano-color-lightblue-rgb:144, 198, 231;--nano-color-blue:#007495;--nano-color-blue-rgb:0, 116, 149;--nano-color-darkblue:#0c5a71;--nano-color-darkblue-rgb:12, 90, 113;--nano-color-darkgrey:#455556;--nano-color-darkgrey-rgb:69, 85, 86;--nano-color-palegrey:#b5aea7;--nano-color-palegrey-rgb:181, 174, 167;--nano-color-dimgrey:#918b86;--nano-color-dimgrey-rgb:145, 139, 134;--nano-color-lightgrey:#e4e6e8;--nano-color-lightgrey-rgb:228, 230, 232;--nano-color-mediumgrey:#687576;--nano-color-mediumgrey-rgb:104, 117, 118;--nano-color-green:#17bb75;--nano-color-green-rgb:23, 187, 117;--nano-color-orange:#f57e20;--nano-color-orange-rgb:245, 126, 32;--nano-color-paleyellow:#ede797;--nano-color-paleyellow-rgb:237, 231, 151;--nano-color-purple:#a53f97;--nano-color-purple-rgb:165, 63, 151;--nano-color-red:#ef4135;--nano-color-red-rgb:239, 65, 53;--nano-color-yellow:#f5cc49;--nano-color-yellow-rgb:245, 204, 73;--nano-color-background:#f0efed;--nano-color-background-rgb:240, 239, 237;--nano-color-black:#4a4a4a;--nano-color-black-rgb:74, 74, 74;--nano-color-celsius:#f0efed;--nano-color-celsius-rgb:240, 239, 237;--nano-color-offwhite:#f9f9fb;--nano-color-offwhite-rgb:249, 249, 251;--nano-color-darkblue--faded:#005c75;--nano-color-darkblue--faded-rgb:0, 92, 117;--nano-color-red--faded:#fee8de;--nano-color-red--faded-rgb:254, 232, 222;--nano-color-orange--faded:#feeddb;--nano-color-orange--faded-rgb:254, 237, 219;--nano-color-yellow--faded:#fefcf2;--nano-color-yellow--faded-rgb:254, 252, 242;--nano-color-green--faded:#edf5f2;--nano-color-green--faded-rgb:237, 245, 242;--nano-color-blue--faded:#f2f7f9;--nano-color-blue--faded-rgb:242, 247, 249;--nano-color-blue--darker:#245a6f;--nano-color-blue--darker-rgb:36, 90, 111;--nano-color-green--darker:#0b814f;--nano-color-green--darker-rgb:11, 129, 79;--nano-color-red--darker:#be2a20;--nano-color-red--darker-rgb:190, 42, 32;--nano-color-purple--darker:#772c6d;--nano-color-purple--darker-rgb:119, 44, 109;--nano-color-orange--darker:#b95e17;--nano-color-orange--darker-rgb:185, 94, 23;--nano-color-palegrey--darker:#8c8379;--nano-color-palegrey--darker-rgb:140, 131, 121;--nano-color-lightblue--darker:#548caf;--nano-color-lightblue--darker-rgb:84, 140, 175}@media(max-width: 576px){:root{--nano-base-font-size: 14px}}body{background-color:var(--nano-background-color, #f0efed)}hr,.horizontal-rule,.content-divider{display:block;block-size:1px;border:0;background-color:rgba(181,174,167,.5);margin-block:.5em;margin-inline:0;padding:0}area[href]:not([tabindex="-1"]):focus,iframe:not([tabindex="-1"]):focus,[contentEditable=true]:not([tabindex="-1"]):focus{outline:none;box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));border-radius:3px}/*# sourceMappingURL=nanopore.css.map */
1
+ .nano-hide{display:none !important}.nano-hide-up{display:none !important}.nano-hide-down{display:none !important}@media(min-width: 576px){.nano-hide-sm-up{display:none !important}}@media(max-width: 576px){.nano-hide-sm-down{display:none !important}}@media(min-width: 768px){.nano-hide-md-up{display:none !important}}@media(max-width: 768px){.nano-hide-md-down{display:none !important}}@media(min-width: 992px){.nano-hide-lg-up{display:none !important}}@media(max-width: 992px){.nano-hide-lg-down{display:none !important}}@media(min-width: 1200px){.nano-hide-xl-up{display:none !important}}@media(max-width: 1200px){.nano-hide-xl-down{display:none !important}}audio,canvas,progress,video{vertical-align:baseline}audio:not([controls]){display:none;block-size:0}b,strong{font-weight:bold}img{max-inline-size:100%;border:0}svg:not(:root){overflow:hidden}figure{margin-block:1em;margin-inline:40px}hr{block-size:1px;border-width:0;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace;font-size:1em}label,input,select,textarea{font-family:inherit;line-height:normal}textarea{overflow:auto;block-size:auto;font:inherit;color:inherit}textarea::placeholder{padding-inline-start:2px}form,input,optgroup,select{margin:0;font:inherit;color:inherit}html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}a,a div,a span,a ion-icon,a ion-label,button,button div,button span,button ion-icon,button ion-label,.ion-tappable,[tappable],[tappable] div,[tappable] span,[tappable] ion-icon,[tappable] ion-label,input,textarea{touch-action:manipulation}a ion-label,button ion-label{pointer-events:none}button{border:0;border-radius:0;font-family:inherit;font-style:inherit;font-variant:inherit;line-height:1;text-transform:none;cursor:pointer;-webkit-appearance:button}[tappable]{cursor:pointer}a[disabled],button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input[type=checkbox],input[type=radio]{padding:0;box-sizing:border-box}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{block-size:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none}button,input,select,textarea{-webkit-tap-highlight-color:rgba(201,224,253,.8)}*,*::before,*::after{box-sizing:border-box;font-family:inherit}html{inline-size:100%;text-size-adjust:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin:0;padding:0;text-rendering:optimizeLegibility}.nano-no-padding{--padding-start: 0;--padding-end: 0;--padding-top: 0;--padding-bottom: 0;padding:0}.nano-padding{--padding-start: var(--nano-spacing-medium, 16px);--padding-end: var(--nano-spacing-medium, 16px);--padding-top: var(--nano-spacing-medium, 16px);--padding-bottom: var(--nano-spacing-medium, 16px);padding:var(--nano-spacing-medium, 16px)}.nano-padding-top{--padding-top: var(--nano-spacing-medium, 16px);padding-block-start:var(--nano-spacing-medium, 16px)}.nano-padding-start{--padding-start: var(--nano-spacing-medium, 16px);padding-inline-start:var(--nano-spacing-medium, 16px)}.nano-padding-end{--padding-end: var(--nano-spacing-medium, 16px);padding-inline-end:var(--nano-spacing-medium, 16px)}.nano-padding-bottom{--padding-bottom: var(--nano-spacing-medium, 16px);padding-block-end:var(--nano-spacing-medium, 16px)}.nano-padding-vertical{--padding-top: var(--nano-spacing-medium, 16px);--padding-bottom: var(--nano-spacing-medium, 16px);padding-block:var(--nano-spacing-medium, 16px)}.nano-padding-horizontal{--padding-start: var(--nano-spacing-medium, 16px);--padding-end: var(--nano-spacing-medium, 16px);padding-inline:var(--nano-spacing-medium, 16px)}.nano-no-margin{--margin-start: 0;--margin-end: 0;--margin-top: 0;--margin-bottom: 0;margin:0}.nano-margin{--margin-start: var(--nano-spacing-medium, 16px);--margin-end: var(--nano-spacing-medium, 16px);--margin-top: var(--nano-spacing-medium, 16px);--margin-bottom: var(--nano-spacing-medium, 16px);margin:var(--nano-spacing-medium, 16px)}.nano-margin-top{--margin-top: var(--nano-spacing-medium, 16px);margin-block-start:var(--nano-spacing-medium, 16px)}.nano-margin-start{--margin-start: var(--nano-spacing-medium, 16px);margin-inline-start:var(--nano-spacing-medium, 16px)}.nano-margin-end{--margin-end: var(--nano-spacing-medium, 16px);margin-inline-end:var(--nano-spacing-medium, 16px)}.nano-margin-bottom{--margin-bottom: var(--nano-spacing-medium, 16px);margin-block-end:var(--nano-spacing-medium, 16px)}.nano-margin-vertical{--margin-top: var(--nano-spacing-medium, 16px);--margin-bottom: var(--nano-spacing-medium, 16px);margin-block:var(--nano-spacing-medium, 16px)}.nano-margin-horizontal{--margin-start: var(--nano-spacing-medium, 16px);--margin-end: var(--nano-spacing-medium, 16px);margin-inline:var(--nano-spacing-medium, 16px)}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_1_0.woff2") format("woff2"),url("../assets/fonts/3AF163_1_0.woff") format("woff");font-weight:400;font-style:normal;font-stretch:condensed;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_8_0.woff2") format("woff2"),url("../assets/fonts/3AF163_8_0.woff") format("woff");font-weight:400;font-style:italic;font-stretch:condensed;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_5_0.woff2") format("woff2"),url("../assets/fonts/3AF163_5_0.woff") format("woff");font-weight:600;font-style:normal;font-stretch:condensed;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_2_0.woff2") format("woff2"),url("../assets/fonts/3AF163_2_0.woff") format("woff");font-weight:600;font-style:italic;font-stretch:condensed;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_9_0.woff2") format("woff2"),url("../assets/fonts/3AF163_9_0.woff") format("woff");font-weight:200;font-style:normal;font-stretch:condensed;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_A_0.woff2") format("woff2"),url("../assets/fonts/3AF163_A_0.woff") format("woff");font-weight:200;font-style:italic;font-stretch:condensed;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_21_0.woff2") format("woff2"),url("../assets/fonts/3AF163_21_0.woff") format("woff");font-weight:400;font-style:normal;font-stretch:normal;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_28_0.woff2") format("woff2"),url("../assets/fonts/3AF163_28_0.woff") format("woff");font-weight:400;font-style:italic;font-stretch:normal;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_25_0.woff2") format("woff2"),url("../assets/fonts/3AF163_25_0.woff") format("woff");font-weight:600;font-style:normal;font-stretch:normal;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_22_0.woff2") format("woff2"),url("../assets/fonts/3AF163_22_0.woff") format("woff");font-weight:600;font-style:italic;font-stretch:normal;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_29_0.woff2") format("woff2"),url("../assets/fonts/3AF163_29_0.woff") format("woff");font-weight:200;font-style:normal;font-stretch:normal;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_2A_0.woff2") format("woff2"),url("../assets/fonts/3AF163_2A_0.woff") format("woff");font-weight:200;font-style:italic;font-stretch:normal;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_15_0.woff2") format("woff2"),url("../assets/fonts/3AF163_15_0.woff") format("woff");font-weight:400;font-style:normal;font-stretch:expanded;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_16_0.woff2") format("woff2"),url("../assets/fonts/3AF163_16_0.woff") format("woff");font-weight:600;font-style:italic;font-stretch:expanded;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_17_0.woff2") format("woff2"),url("../assets/fonts/3AF163_17_0.woff") format("woff");font-weight:600;font-style:normal;font-stretch:expanded;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_1B_0.woff2") format("woff2"),url("../assets/fonts/3AF163_1B_0.woff") format("woff");font-weight:200;font-style:normal;font-stretch:expanded;font-display:swap}@font-face{font-family:"HelveticaNow";src:url("../assets/fonts/3AF163_1C_0.woff2") format("woff2"),url("../assets/fonts/3AF163_1C_0.woff") format("woff");font-weight:200;font-style:italic;font-stretch:expanded;font-display:swap}html{font-family:var(--nano-font-family);font-weight:var(--nano-font-weight, 500);color:var(--nano-text-color, #4a4a4a);font-size:var(--nano-base-font-size)}a{color:var(--nano-color-primary, #007495);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{margin-block:16px 10px;font-weight:600;line-height:1.2}h1{margin-block-start:10px;font-size:28px}h2{margin-block-start:18px;font-size:24px}h3{font-size:22px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}small{font-size:75%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{inset-block-start:-0.5em}sub{inset-block-end:-0.25em}p{font-size:1.125rem;line-height:1.4;margin-block:0 1rem}p.supporting{font-size:.875rem}.heading{font-weight:500;line-height:1.3;margin-block:0 1.5rem;margin-inline:0}.heading__highlight{color:#007495}@media print{.heading{color:#4a4a4a}}.heading--one{font-size:2.5rem}@media(min-width: 768px){.heading--one{font-size:3.25rem}}.heading--two{font-size:1.5rem}@media(min-width: 768px){.heading--two{font-size:2rem}}.heading--three{font-size:1.125rem}@media(min-width: 768px){.heading--three{font-size:1.375rem}}.heading--four{font-size:1.125rem}.heading--five{font-size:1rem}.heading--light{font-weight:200}.heading--upper{text-transform:uppercase}.heading--meta{font-size:.875rem;text-transform:uppercase;letter-spacing:1.3px;font-weight:bold;margin-block-end:1rem}.button{padding:0;border:none;background-color:rgba(0,0,0,0);font:inherit;-webkit-box-align:center;text-decoration:none;color:inherit;transition:background-color 100ms ease-in-out,box-shadow 100ms ease-in-out,border-color 100ms ease-in-out,color 100ms ease-in-out;padding-inline:var(--nano-btn-padding-start, 1rem) var(--nano-btn-padding-end, 1rem);padding-block:var(--nano-btn-padding-top, 0.5rem) var(--nano-btn-padding-bottom, 0.5rem);box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));display:inline-block;border-radius:var(--nano-btn-border-radius, 5px);line-height:var(--nano-btn-line-height, 1.5em);font-weight:500;cursor:pointer;background:rgba(0,0,0,.02)}.button::-moz-focus-inner{border:0;padding:0}.button:hover,.button:focus{text-decoration:none;color:inherit}@media print{.button{display:none}}.button:focus,.button.button--focus{outline:none;box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.button nano-icon,.button nano-spinner{--base-color-rgb: 255, 255, 255;margin-inline-start:.5em;margin-inline-end:0;font-size:var(--nano-btn-icon-size, 1em);vertical-align:middle;margin-block-start:-0.188em;display:inline-block}.button.button--icon-start nano-icon,.button.button--icon-start nano-spinner{margin-inline-start:0;margin-inline-end:.5em}.button:hover:not(.button--disabled){box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2))}.button:active:not(.button--disabled):not(:disabled){box-shadow:none}.button--disabled,.button:disabled{opacity:.6}.button--disabled:hover,.button:disabled:hover{cursor:default}.button--primary{background-color:var(--nano-color-primary, #007495);color:var(--nano-color-primary-contrast, #fff)}.button--primary:hover:not(.button--disabled):not(:disabled),.button--primary.button--active{background-color:var(--nano-color-primary-shade, #00637f);color:var(--nano-color-primary-contrast, #fff)}.button--primary:hover:not(.button--disabled):not(:disabled).button--keyline,.button--primary.button--active.button--keyline{background-color:var(--nano-color-primary, #007495);color:var(--nano-color-primary-contrast, #fff)}.button--primary:focus{color:var(--nano-color-primary-contrast, #fff)}.button--primary.button--keyline{background:rgba(0,0,0,0);border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);padding-block:calc(var(--nano-btn-padding-top, 0.5rem) - var(--nano-btn-border-width, 2px)) calc(var(--nano-btn-padding-bottom, 0.5rem) - var(--nano-btn-border-width, 2px));color:var(--nano-color-primary, #007495);border-color:var(--nano-color-primary, #007495)}.button--primary.button--keyline:hover:not(.button--disabled):not(:disabled),.button--primary.button--keyline:not(:focus):not(.button--focus),.button--primary.button--keyline.button--active{box-shadow:none}.button--secondary{background-color:#17bb75;color:#fff}.button--secondary:hover:not(.button--disabled):not(:disabled),.button--secondary.button--active{background-color:#0b814f;color:#fff}.button--secondary:hover:not(.button--disabled):not(:disabled).button--keyline,.button--secondary.button--active.button--keyline{background-color:#17bb75;color:#fff}.button--secondary:focus{color:#fff}.button--secondary.button--keyline{background:rgba(0,0,0,0);border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);padding-block:calc(var(--nano-btn-padding-top, 0.5rem) - var(--nano-btn-border-width, 2px)) calc(var(--nano-btn-padding-bottom, 0.5rem) - var(--nano-btn-border-width, 2px));color:#17bb75;border-color:#17bb75}.button--secondary.button--keyline:hover:not(.button--disabled):not(:disabled),.button--secondary.button--keyline:not(:focus):not(.button--focus),.button--secondary.button--keyline.button--active{box-shadow:none}.button--light{background-color:#fff;color:#007495}.button--light:hover:not(.button--disabled):not(:disabled),.button--light.button--active{background-color:#fff;color:#0c5a71}.button--light:hover:not(.button--disabled):not(:disabled).button--keyline,.button--light.button--active.button--keyline{background-color:#fff;color:#007495}.button--light:focus{color:#007495}.button--light.button--keyline{background:rgba(0,0,0,0);border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);padding-block:calc(var(--nano-btn-padding-top, 0.5rem) - var(--nano-btn-border-width, 2px)) calc(var(--nano-btn-padding-bottom, 0.5rem) - var(--nano-btn-border-width, 2px));color:#fff;border-color:#fff}.button--light.button--keyline:hover:not(.button--disabled):not(:disabled),.button--light.button--keyline:not(:focus):not(.button--focus),.button--light.button--keyline.button--active{box-shadow:none}.button--danger{background-color:#ef4135;color:#fff}.button--danger:hover:not(.button--disabled):not(:disabled),.button--danger.button--active{background-color:#be2a20;color:#fff}.button--danger:hover:not(.button--disabled):not(:disabled).button--keyline,.button--danger.button--active.button--keyline{background-color:#ef4135;color:#fff}.button--danger:focus{color:#fff}.button--danger.button--keyline{background:rgba(0,0,0,0);border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);padding-block:calc(var(--nano-btn-padding-top, 0.5rem) - var(--nano-btn-border-width, 2px)) calc(var(--nano-btn-padding-bottom, 0.5rem) - var(--nano-btn-border-width, 2px));color:#ef4135;border-color:#ef4135}.button--danger.button--keyline:hover:not(.button--disabled):not(:disabled),.button--danger.button--keyline:not(:focus):not(.button--focus),.button--danger.button--keyline.button--active{box-shadow:none}.button--warning{background-color:#f57e20;color:#fff}.button--warning:hover:not(.button--disabled):not(:disabled),.button--warning.button--active{background-color:#b95e17;color:#fff}.button--warning:hover:not(.button--disabled):not(:disabled).button--keyline,.button--warning.button--active.button--keyline{background-color:#f57e20;color:#fff}.button--warning:focus{color:#fff}.button--warning.button--keyline{background:rgba(0,0,0,0);border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);padding-block:calc(var(--nano-btn-padding-top, 0.5rem) - var(--nano-btn-border-width, 2px)) calc(var(--nano-btn-padding-bottom, 0.5rem) - var(--nano-btn-border-width, 2px));color:#f57e20;border-color:#f57e20}.button--warning.button--keyline:hover:not(.button--disabled):not(:disabled),.button--warning.button--keyline:not(:focus):not(.button--focus),.button--warning.button--keyline.button--active{box-shadow:none}.button--tertiary{background:rgba(0,0,0,0);box-shadow:none;text-decoration:underline;font-weight:400}.button--tertiary:hover:not(.button--disabled):not(:disabled),.button--tertiary:hover.button--active,.button--tertiary:focus:not(.button--disabled):not(:disabled),.button--tertiary:focus.button--active{color:#b5aea7;box-shadow:none;text-decoration:underline}.nano-color-primary{--nano-color-base: var(--nano-color-primary, #007495) ;--nano-color-base-rgb: var( --nano-color-primary-rgb, 0, 116, 149 ) ;--nano-color-contrast: var(--nano-color-primary-contrast, #fff) ;--nano-color-contrast-rgb: var( --nano-color-primary-contrast-rgb, 255, 255, 255 ) ;--nano-color-shade: var(--nano-color-primary-shade, #00637f) ;--nano-color-tint: var(--nano-color-primary-tint, #2689a5) ;--nano-color-tint-rgb: var( --nano-color-primary-tint-rgb, 38, 137, 165 ) }.nano-color-secondary{--nano-color-base: var(--nano-color-secondary, #548caf) ;--nano-color-base-rgb: var( --nano-color-secondary-rgb, 84, 140, 175 ) ;--nano-color-contrast: var(--nano-color-secondary-contrast, #fff) ;--nano-color-contrast-rgb: var( --nano-color-secondary-contrast-rgb, 255, 255, 255 ) ;--nano-color-shade: var(--nano-color-secondary-shade, #477795) ;--nano-color-tint: var(--nano-color-secondary-tint, #6e9dbb) ;--nano-color-tint-rgb: var( --nano-color-secondary-tint-rgb, 110, 157, 187 ) }.nano-color-tertiary{--nano-color-base: var(--nano-color-tertiary, #b5aea7) ;--nano-color-base-rgb: var( --nano-color-tertiary-rgb, 181, 174, 167 ) ;--nano-color-contrast: var(--nano-color-tertiary-contrast, #4a4a4a) ;--nano-color-contrast-rgb: var( --nano-color-tertiary-contrast-rgb, 74, 74, 74 ) ;--nano-color-shade: var(--nano-color-tertiary-shade, #9a948e) ;--nano-color-tint: var(--nano-color-tertiary-tint, #c0bab4) ;--nano-color-tint-rgb: var( --nano-color-tertiary-tint-rgb, 192, 186, 180 ) }.nano-color-success{--nano-color-base: var(--nano-color-success, #17bb75) ;--nano-color-base-rgb: var( --nano-color-success-rgb, 23, 187, 117 ) ;--nano-color-contrast: var(--nano-color-success-contrast, #4a4a4a) ;--nano-color-contrast-rgb: var( --nano-color-success-contrast-rgb, 74, 74, 74 ) ;--nano-color-shade: var(--nano-color-success-shade, #149f63) ;--nano-color-tint: var(--nano-color-success-tint, #3ac58a) ;--nano-color-tint-rgb: var( --nano-color-success-tint-rgb, 58, 197, 138 ) }.nano-color-warning{--nano-color-base: var(--nano-color-warning, #f57e20) ;--nano-color-base-rgb: var( --nano-color-warning-rgb, 245, 126, 32 ) ;--nano-color-contrast: var(--nano-color-warning-contrast, #fff) ;--nano-color-contrast-rgb: var( --nano-color-warning-contrast-rgb, 255, 255, 255 ) ;--nano-color-shade: var(--nano-color-warning-shade, #d06b1b) ;--nano-color-tint: var(--nano-color-warning-tint, #f79141) ;--nano-color-tint-rgb: var( --nano-color-warning-tint-rgb, 247, 145, 65 ) }.nano-color-danger{--nano-color-base: var(--nano-color-danger, #ef4135) ;--nano-color-base-rgb: var( --nano-color-danger-rgb, 239, 65, 53 ) ;--nano-color-contrast: var(--nano-color-danger-contrast, #fff) ;--nano-color-contrast-rgb: var( --nano-color-danger-contrast-rgb, 255, 255, 255 ) ;--nano-color-shade: var(--nano-color-danger-shade, #cb372d) ;--nano-color-tint: var(--nano-color-danger-tint, #f15e53) ;--nano-color-tint-rgb: var( --nano-color-danger-tint-rgb, 241, 94, 83 ) }.nano-color-light{--nano-color-base: var(--nano-color-light, #f2f7f9) ;--nano-color-base-rgb: var( --nano-color-light-rgb, 242, 247, 249 ) ;--nano-color-contrast: var(--nano-color-light-contrast, #4a4a4a) ;--nano-color-contrast-rgb: var( --nano-color-light-contrast-rgb, 74, 74, 74 ) ;--nano-color-shade: var(--nano-color-light-shade, #ced2d4) ;--nano-color-tint: var(--nano-color-light-tint, #f4f8fa) ;--nano-color-tint-rgb: var( --nano-color-light-tint-rgb, 244, 248, 250 ) }.nano-color-medium{--nano-color-base: var(--nano-color-medium, #005c75) ;--nano-color-base-rgb: var( --nano-color-medium-rgb, 0, 92, 117 ) ;--nano-color-contrast: var(--nano-color-medium-contrast, #fff) ;--nano-color-contrast-rgb: var( --nano-color-medium-contrast-rgb, 255, 255, 255 ) ;--nano-color-shade: var(--nano-color-medium-shade, #004e63) ;--nano-color-tint: var(--nano-color-medium-tint, #26748a) ;--nano-color-tint-rgb: var( --nano-color-medium-tint-rgb, 38, 116, 138 ) }.nano-color-dark{--nano-color-base: var(--nano-color-dark, #455556) ;--nano-color-base-rgb: var( --nano-color-dark-rgb, 69, 85, 86 ) ;--nano-color-contrast: var(--nano-color-dark-contrast, #fff) ;--nano-color-contrast-rgb: var( --nano-color-dark-contrast-rgb, 255, 255, 255 ) ;--nano-color-shade: var(--nano-color-dark-shade, #3b4849) ;--nano-color-tint: var(--nano-color-dark-tint, #616f6f) ;--nano-color-tint-rgb: var( --nano-color-dark-tint-rgb, 97, 111, 111 ) }:root{--nano-base-font-size: 16px;--nano-padding: 1rem;--nano-font-family: "HelveticaNow", "Helvetica Neue", helvetica, arial, "Lucida Grande", sans-serif;--nano-color-white:#fff;--nano-color-white-rgb:255, 255, 255;--nano-color-lightblue:#90c6e7;--nano-color-lightblue-rgb:144, 198, 231;--nano-color-blue:#007495;--nano-color-blue-rgb:0, 116, 149;--nano-color-darkblue:#0c5a71;--nano-color-darkblue-rgb:12, 90, 113;--nano-color-darkgrey:#455556;--nano-color-darkgrey-rgb:69, 85, 86;--nano-color-palegrey:#b5aea7;--nano-color-palegrey-rgb:181, 174, 167;--nano-color-dimgrey:#918b86;--nano-color-dimgrey-rgb:145, 139, 134;--nano-color-lightgrey:#e4e6e8;--nano-color-lightgrey-rgb:228, 230, 232;--nano-color-mediumgrey:#687576;--nano-color-mediumgrey-rgb:104, 117, 118;--nano-color-green:#17bb75;--nano-color-green-rgb:23, 187, 117;--nano-color-orange:#f57e20;--nano-color-orange-rgb:245, 126, 32;--nano-color-paleyellow:#ede797;--nano-color-paleyellow-rgb:237, 231, 151;--nano-color-purple:#a53f97;--nano-color-purple-rgb:165, 63, 151;--nano-color-red:#ef4135;--nano-color-red-rgb:239, 65, 53;--nano-color-yellow:#f5cc49;--nano-color-yellow-rgb:245, 204, 73;--nano-color-background:#f0efed;--nano-color-background-rgb:240, 239, 237;--nano-color-black:#4a4a4a;--nano-color-black-rgb:74, 74, 74;--nano-color-celsius:#f0efed;--nano-color-celsius-rgb:240, 239, 237;--nano-color-offwhite:#f9f9fb;--nano-color-offwhite-rgb:249, 249, 251;--nano-color-darkblue--faded:#005c75;--nano-color-darkblue--faded-rgb:0, 92, 117;--nano-color-red--faded:#fee8de;--nano-color-red--faded-rgb:254, 232, 222;--nano-color-orange--faded:#feeddb;--nano-color-orange--faded-rgb:254, 237, 219;--nano-color-yellow--faded:#fefcf2;--nano-color-yellow--faded-rgb:254, 252, 242;--nano-color-green--faded:#edf5f2;--nano-color-green--faded-rgb:237, 245, 242;--nano-color-blue--faded:#f2f7f9;--nano-color-blue--faded-rgb:242, 247, 249;--nano-color-blue--darker:#245a6f;--nano-color-blue--darker-rgb:36, 90, 111;--nano-color-green--darker:#0b814f;--nano-color-green--darker-rgb:11, 129, 79;--nano-color-red--darker:#be2a20;--nano-color-red--darker-rgb:190, 42, 32;--nano-color-purple--darker:#772c6d;--nano-color-purple--darker-rgb:119, 44, 109;--nano-color-orange--darker:#b95e17;--nano-color-orange--darker-rgb:185, 94, 23;--nano-color-palegrey--darker:#8c8379;--nano-color-palegrey--darker-rgb:140, 131, 121;--nano-color-lightblue--darker:#548caf;--nano-color-lightblue--darker-rgb:84, 140, 175}@media(max-width: 576px){:root{--nano-base-font-size: 14px}}body{background-color:var(--nano-background-color, #f0efed)}hr,.horizontal-rule,.content-divider{display:block;block-size:1px;border:0;background-color:rgba(181,174,167,.5);margin-block:.5em;margin-inline:0;padding:0}area[href]:not([tabindex="-1"]):focus,iframe:not([tabindex="-1"]):focus,[contentEditable=true]:not([tabindex="-1"]):focus{outline:none;box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));border-radius:3px}/*# sourceMappingURL=nanopore.css.map */