@reykjavik/hanna-react 0.10.55 → 0.10.56

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 (592) hide show
  1. package/AccordionList.jsx +61 -0
  2. package/ActionCards.jsx +15 -0
  3. package/Alert.jsx +123 -0
  4. package/ArticleCarousel/_ArticleCarouselCard.d.ts +1 -1
  5. package/ArticleCarousel/_ArticleCarouselCard.jsx +32 -0
  6. package/ArticleCarousel.jsx +13 -0
  7. package/ArticleMeta.jsx +42 -0
  8. package/Attention.jsx +9 -0
  9. package/BasicTable.jsx +35 -0
  10. package/Bling.jsx +49 -0
  11. package/BlockBreak.jsx +11 -0
  12. package/BlockQuote.jsx +9 -0
  13. package/BreadCrumbs.jsx +36 -0
  14. package/ButtonBack.jsx +9 -0
  15. package/ButtonBar.jsx +23 -0
  16. package/ButtonPrimary.jsx +9 -0
  17. package/ButtonSecondary.jsx +9 -0
  18. package/ButtonTertiary.jsx +20 -0
  19. package/CHANGELOG.md +13 -5
  20. package/Carousel.jsx +9 -0
  21. package/CarouselStepper.jsx +9 -0
  22. package/CenterColumn.jsx +14 -0
  23. package/Checkbox.jsx +9 -0
  24. package/CheckboxButtonsGroup.jsx +19 -0
  25. package/CheckboxGroup.jsx +12 -0
  26. package/CityBlock.jsx +23 -0
  27. package/ContactBubble.jsx +192 -0
  28. package/ContentArticle.jsx +29 -0
  29. package/ContentImage.jsx +18 -0
  30. package/Datepicker.jsx +92 -0
  31. package/ExtraLinks.jsx +47 -0
  32. package/FeatureList.jsx +28 -0
  33. package/FieldGroup.jsx +15 -0
  34. package/FileInput.jsx +185 -0
  35. package/Foonote.jsx +12 -0
  36. package/FooterBadges.jsx +21 -0
  37. package/FooterInfo.jsx +19 -0
  38. package/Footnote.jsx +8 -0
  39. package/Form.jsx +17 -0
  40. package/FormField.jsx +121 -0
  41. package/Gallery/_GalleryItem.jsx +59 -0
  42. package/Gallery/_GalleryModal.jsx +86 -0
  43. package/Gallery/_GalleryModalContext.js +8 -0
  44. package/Gallery/_GalleryModalItem.jsx +29 -0
  45. package/Gallery.jsx +56 -0
  46. package/GridBlocks.jsx +40 -0
  47. package/Heading.jsx +24 -0
  48. package/HeroBlock.jsx +27 -0
  49. package/IframeBlock.jsx +31 -0
  50. package/Illustration.jsx +13 -0
  51. package/ImageCards.jsx +28 -0
  52. package/InfoBlock.jsx +23 -0
  53. package/InfoHero.jsx +93 -0
  54. package/IslandBlock.jsx +21 -0
  55. package/IslandPageBlock.jsx +21 -0
  56. package/LabeledTextBlock.jsx +21 -0
  57. package/Layout.jsx +69 -0
  58. package/MainMenu/_Auxiliary.jsx +26 -0
  59. package/MainMenu/_PrimaryPanel.jsx +37 -0
  60. package/MainMenu.d.ts +1 -1
  61. package/MainMenu.jsx +178 -0
  62. package/MiniMetrics.jsx +16 -0
  63. package/Modal.jsx +21 -0
  64. package/NameCard.jsx +92 -0
  65. package/NameCards.jsx +14 -0
  66. package/NewsHero.jsx +93 -0
  67. package/PageFilter.jsx +21 -0
  68. package/PageHeading.jsx +19 -0
  69. package/ProcessOverview.jsx +25 -0
  70. package/PullQuote.jsx +9 -0
  71. package/RadioButtonsGroup.jsx +19 -0
  72. package/RadioGroup.jsx +12 -0
  73. package/RelatedLinks.jsx +35 -0
  74. package/RowBlock.jsx +16 -0
  75. package/RowBlockColumn.jsx +18 -0
  76. package/SearchInput.jsx +63 -0
  77. package/SearchResults/_SearchResultsItem.jsx +24 -0
  78. package/SearchResults.jsx +146 -0
  79. package/SeenEffect.jsx +24 -0
  80. package/Selectbox.jsx +74 -0
  81. package/ShareButtons.jsx +82 -0
  82. package/Sharpie.jsx +27 -0
  83. package/SiteSearchAutocomplete.jsx +89 -0
  84. package/SiteSearchCurtain.jsx +65 -0
  85. package/SiteSearchInput.d.ts +1 -1
  86. package/SiteSearchInput.jsx +70 -0
  87. package/Skeleton.jsx +35 -0
  88. package/SubHeading.jsx +20 -0
  89. package/Tabs.jsx +122 -0
  90. package/TagPill.jsx +53 -0
  91. package/TextBlock.jsx +22 -0
  92. package/TextButton.jsx +14 -0
  93. package/TextInput.jsx +63 -0
  94. package/VSpacer.jsx +46 -0
  95. package/VerticalTabsTOC.jsx +96 -0
  96. package/WizardLayout.jsx +44 -0
  97. package/WizardLayoutClose.jsx +9 -0
  98. package/WizardStepper.jsx +34 -0
  99. package/_abstract/Button.jsx +56 -0
  100. package/_abstract/CardList.jsx +46 -0
  101. package/_abstract/Image.jsx +34 -0
  102. package/_abstract/Link.jsx +31 -0
  103. package/_abstract/TogglerGroup.jsx +36 -0
  104. package/_abstract/TogglerGroupField.jsx +27 -0
  105. package/_abstract/TogglerInput.jsx +40 -0
  106. package/_abstract/_AbstractCarousel.jsx +161 -0
  107. package/_abstract/_Blings.jsx +19 -0
  108. package/_abstract/_Block.jsx +32 -0
  109. package/_abstract/_Quote.jsx +18 -0
  110. package/_abstract/breakOnNL.jsx +13 -0
  111. package/assets.js +51 -0
  112. package/constants.js +25 -0
  113. package/esm/AccordionList.d.ts +17 -0
  114. package/esm/AccordionList.jsx +33 -0
  115. package/esm/ActionCards.d.ts +5 -0
  116. package/esm/ActionCards.jsx +10 -0
  117. package/esm/Alert.d.ts +49 -0
  118. package/esm/Alert.jsx +94 -0
  119. package/esm/ArticleCarousel/_ArticleCarouselCard.d.ts +27 -0
  120. package/esm/ArticleCarousel/_ArticleCarouselCard.jsx +25 -0
  121. package/esm/ArticleCarousel.d.ts +12 -0
  122. package/esm/ArticleCarousel.jsx +8 -0
  123. package/esm/ArticleMeta.d.ts +9 -0
  124. package/esm/ArticleMeta.jsx +17 -0
  125. package/esm/Attention.d.ts +7 -0
  126. package/esm/Attention.jsx +4 -0
  127. package/esm/BasicTable.d.ts +12 -0
  128. package/esm/BasicTable.jsx +30 -0
  129. package/esm/Bling.d.ts +81 -0
  130. package/esm/Bling.jsx +44 -0
  131. package/esm/BlockBreak.d.ts +2 -0
  132. package/esm/BlockBreak.jsx +6 -0
  133. package/esm/BlockQuote.d.ts +4 -0
  134. package/esm/BlockQuote.jsx +4 -0
  135. package/esm/BreadCrumbs.d.ts +11 -0
  136. package/esm/BreadCrumbs.jsx +31 -0
  137. package/esm/ButtonBack.d.ts +7 -0
  138. package/esm/ButtonBack.jsx +4 -0
  139. package/esm/ButtonBar.d.ts +16 -0
  140. package/esm/ButtonBar.jsx +16 -0
  141. package/esm/ButtonPrimary.d.ts +7 -0
  142. package/esm/ButtonPrimary.jsx +4 -0
  143. package/esm/ButtonSecondary.d.ts +7 -0
  144. package/esm/ButtonSecondary.jsx +4 -0
  145. package/esm/ButtonTertiary.d.ts +12 -0
  146. package/esm/ButtonTertiary.jsx +15 -0
  147. package/esm/Carousel.d.ts +4 -0
  148. package/esm/Carousel.jsx +4 -0
  149. package/esm/CarouselStepper.d.ts +4 -0
  150. package/esm/CarouselStepper.jsx +4 -0
  151. package/esm/CenterColumn.d.ts +7 -0
  152. package/esm/CenterColumn.jsx +9 -0
  153. package/esm/Checkbox.d.ts +4 -0
  154. package/esm/Checkbox.jsx +4 -0
  155. package/esm/CheckboxButtonsGroup.d.ts +11 -0
  156. package/esm/CheckboxButtonsGroup.jsx +14 -0
  157. package/esm/CheckboxGroup.d.ts +9 -0
  158. package/esm/CheckboxGroup.jsx +7 -0
  159. package/esm/CityBlock.d.ts +23 -0
  160. package/esm/CityBlock.jsx +18 -0
  161. package/esm/ContactBubble.d.ts +58 -0
  162. package/esm/ContactBubble.jsx +162 -0
  163. package/esm/ContentArticle.d.ts +15 -0
  164. package/esm/ContentArticle.jsx +24 -0
  165. package/esm/ContentImage.d.ts +8 -0
  166. package/esm/ContentImage.jsx +13 -0
  167. package/esm/Datepicker.d.ts +39 -0
  168. package/esm/Datepicker.jsx +64 -0
  169. package/esm/ExtraLinks.d.ts +18 -0
  170. package/esm/ExtraLinks.jsx +42 -0
  171. package/esm/FeatureList.d.ts +12 -0
  172. package/esm/FeatureList.jsx +23 -0
  173. package/esm/FieldGroup.d.ts +9 -0
  174. package/esm/FieldGroup.jsx +10 -0
  175. package/esm/FileInput.d.ts +17 -0
  176. package/esm/FileInput.jsx +157 -0
  177. package/esm/Foonote.d.ts +12 -0
  178. package/esm/Foonote.jsx +7 -0
  179. package/esm/FooterBadges.d.ts +9 -0
  180. package/esm/FooterBadges.jsx +16 -0
  181. package/esm/FooterInfo.d.ts +18 -0
  182. package/esm/FooterInfo.jsx +14 -0
  183. package/esm/Footnote.d.ts +6 -0
  184. package/esm/Footnote.jsx +3 -0
  185. package/esm/Form.d.ts +7 -0
  186. package/esm/Form.jsx +12 -0
  187. package/esm/FormField.d.ts +65 -0
  188. package/esm/FormField.jsx +93 -0
  189. package/esm/Gallery/_GalleryItem.d.ts +8 -0
  190. package/esm/Gallery/_GalleryItem.jsx +31 -0
  191. package/esm/Gallery/_GalleryModal.d.ts +6 -0
  192. package/esm/Gallery/_GalleryModal.jsx +58 -0
  193. package/esm/Gallery/_GalleryModalContext.d.ts +9 -0
  194. package/esm/Gallery/_GalleryModalContext.js +3 -0
  195. package/esm/Gallery/_GalleryModalItem.d.ts +3 -0
  196. package/esm/Gallery/_GalleryModalItem.jsx +24 -0
  197. package/esm/Gallery.d.ts +17 -0
  198. package/esm/Gallery.jsx +28 -0
  199. package/esm/GridBlocks.d.ts +26 -0
  200. package/esm/GridBlocks.jsx +35 -0
  201. package/esm/Heading.d.ts +16 -0
  202. package/esm/Heading.jsx +19 -0
  203. package/esm/HeroBlock.d.ts +19 -0
  204. package/esm/HeroBlock.jsx +22 -0
  205. package/esm/IframeBlock.d.ts +23 -0
  206. package/esm/IframeBlock.jsx +26 -0
  207. package/esm/Illustration.d.ts +13 -0
  208. package/esm/Illustration.jsx +8 -0
  209. package/esm/ImageCards.d.ts +8 -0
  210. package/esm/ImageCards.jsx +23 -0
  211. package/esm/InfoBlock.d.ts +17 -0
  212. package/esm/InfoBlock.jsx +18 -0
  213. package/esm/InfoHero.d.ts +17 -0
  214. package/esm/InfoHero.jsx +88 -0
  215. package/esm/IslandBlock.d.ts +25 -0
  216. package/esm/IslandBlock.jsx +16 -0
  217. package/esm/IslandPageBlock.d.ts +24 -0
  218. package/esm/IslandPageBlock.jsx +16 -0
  219. package/esm/LabeledTextBlock.d.ts +11 -0
  220. package/esm/LabeledTextBlock.jsx +16 -0
  221. package/esm/Layout.d.ts +33 -0
  222. package/esm/Layout.jsx +63 -0
  223. package/esm/MainMenu/_Auxiliary.d.ts +6 -0
  224. package/esm/MainMenu/_Auxiliary.jsx +19 -0
  225. package/esm/MainMenu/_PrimaryPanel.d.ts +13 -0
  226. package/esm/MainMenu/_PrimaryPanel.jsx +30 -0
  227. package/esm/MainMenu.d.ts +48 -0
  228. package/esm/MainMenu.jsx +149 -0
  229. package/esm/MiniMetrics.d.ts +8 -0
  230. package/esm/MiniMetrics.jsx +11 -0
  231. package/esm/Modal.d.ts +10 -0
  232. package/esm/Modal.jsx +16 -0
  233. package/esm/NameCard.d.ts +64 -0
  234. package/esm/NameCard.jsx +87 -0
  235. package/esm/NameCards.d.ts +6 -0
  236. package/esm/NameCards.jsx +9 -0
  237. package/esm/NewsHero.d.ts +14 -0
  238. package/esm/NewsHero.jsx +88 -0
  239. package/esm/PageFilter.d.ts +17 -0
  240. package/esm/PageFilter.jsx +16 -0
  241. package/esm/PageHeading.d.ts +10 -0
  242. package/esm/PageHeading.jsx +14 -0
  243. package/esm/ProcessOverview.d.ts +13 -0
  244. package/esm/ProcessOverview.jsx +20 -0
  245. package/esm/PullQuote.d.ts +4 -0
  246. package/esm/PullQuote.jsx +4 -0
  247. package/esm/RadioButtonsGroup.d.ts +11 -0
  248. package/esm/RadioButtonsGroup.jsx +14 -0
  249. package/esm/RadioGroup.d.ts +13 -0
  250. package/esm/RadioGroup.jsx +7 -0
  251. package/esm/RelatedLinks.d.ts +20 -0
  252. package/esm/RelatedLinks.jsx +30 -0
  253. package/esm/RowBlock.d.ts +12 -0
  254. package/esm/RowBlock.jsx +11 -0
  255. package/esm/RowBlockColumn.d.ts +8 -0
  256. package/esm/RowBlockColumn.jsx +13 -0
  257. package/esm/SearchInput.d.ts +18 -0
  258. package/esm/SearchInput.jsx +35 -0
  259. package/esm/SearchResults/_SearchResultsItem.d.ts +18 -0
  260. package/esm/SearchResults/_SearchResultsItem.jsx +19 -0
  261. package/esm/SearchResults.d.ts +33 -0
  262. package/esm/SearchResults.jsx +118 -0
  263. package/esm/SeenEffect.d.ts +4 -0
  264. package/esm/SeenEffect.jsx +19 -0
  265. package/esm/Selectbox.d.ts +8 -0
  266. package/esm/Selectbox.jsx +46 -0
  267. package/esm/ShareButtons.d.ts +9 -0
  268. package/esm/ShareButtons.jsx +57 -0
  269. package/esm/Sharpie.d.ts +23 -0
  270. package/esm/Sharpie.jsx +22 -0
  271. package/esm/SiteSearchAutocomplete.d.ts +40 -0
  272. package/esm/SiteSearchAutocomplete.jsx +60 -0
  273. package/esm/SiteSearchCurtain.d.ts +6 -0
  274. package/esm/SiteSearchCurtain.jsx +37 -0
  275. package/esm/SiteSearchInput.d.ts +24 -0
  276. package/esm/SiteSearchInput.jsx +42 -0
  277. package/esm/Skeleton.d.ts +25 -0
  278. package/esm/Skeleton.jsx +30 -0
  279. package/esm/SubHeading.d.ts +10 -0
  280. package/esm/SubHeading.jsx +15 -0
  281. package/esm/Tabs.d.ts +35 -0
  282. package/esm/Tabs.jsx +94 -0
  283. package/esm/TagPill.d.ts +27 -0
  284. package/esm/TagPill.jsx +48 -0
  285. package/esm/TextBlock.d.ts +15 -0
  286. package/esm/TextBlock.jsx +17 -0
  287. package/esm/TextButton.d.ts +9 -0
  288. package/esm/TextButton.jsx +9 -0
  289. package/esm/TextInput.d.ts +16 -0
  290. package/esm/TextInput.jsx +35 -0
  291. package/esm/VSpacer.d.ts +24 -0
  292. package/esm/VSpacer.jsx +41 -0
  293. package/esm/VerticalTabsTOC.d.ts +14 -0
  294. package/esm/VerticalTabsTOC.jsx +68 -0
  295. package/esm/WizardLayout.d.ts +15 -0
  296. package/esm/WizardLayout.jsx +39 -0
  297. package/esm/WizardLayoutClose.d.ts +3 -0
  298. package/esm/WizardLayoutClose.jsx +4 -0
  299. package/esm/WizardStepper.d.ts +36 -0
  300. package/esm/WizardStepper.jsx +29 -0
  301. package/esm/_abstract/Button.d.ts +40 -0
  302. package/esm/_abstract/Button.jsx +51 -0
  303. package/esm/_abstract/CardList.d.ts +29 -0
  304. package/esm/_abstract/CardList.jsx +39 -0
  305. package/esm/_abstract/Image.d.ts +32 -0
  306. package/esm/_abstract/Image.jsx +29 -0
  307. package/esm/_abstract/Link.d.ts +27 -0
  308. package/esm/_abstract/Link.jsx +24 -0
  309. package/esm/_abstract/TogglerGroup.d.ts +31 -0
  310. package/esm/_abstract/TogglerGroup.jsx +31 -0
  311. package/esm/_abstract/TogglerGroupField.d.ts +17 -0
  312. package/esm/_abstract/TogglerGroupField.jsx +22 -0
  313. package/esm/_abstract/TogglerInput.d.ts +22 -0
  314. package/esm/_abstract/TogglerInput.jsx +35 -0
  315. package/esm/_abstract/_AbstractCarousel.d.ts +25 -0
  316. package/esm/_abstract/_AbstractCarousel.jsx +133 -0
  317. package/esm/_abstract/_Blings.d.ts +11 -0
  318. package/esm/_abstract/_Blings.jsx +14 -0
  319. package/esm/_abstract/_Block.d.ts +22 -0
  320. package/esm/_abstract/_Block.jsx +27 -0
  321. package/esm/_abstract/_Quote.d.ts +9 -0
  322. package/esm/_abstract/_Quote.jsx +11 -0
  323. package/esm/_abstract/breakOnNL.d.ts +2 -0
  324. package/esm/_abstract/breakOnNL.jsx +8 -0
  325. package/esm/assets.d.ts +42 -0
  326. package/esm/assets.js +56 -0
  327. package/esm/constants.d.ts +39 -0
  328. package/esm/constants.js +22 -0
  329. package/esm/focus-visible.d.ts +1 -0
  330. package/esm/focus-visible.js +1 -0
  331. package/esm/package.json +1 -0
  332. package/esm/utils/env.d.ts +1 -0
  333. package/esm/utils/env.js +8 -0
  334. package/esm/utils/seenEffect.d.ts +28 -0
  335. package/esm/utils/seenEffect.js +73 -0
  336. package/esm/utils/useFormatMonitor.d.ts +38 -0
  337. package/esm/utils/useFormatMonitor.js +41 -0
  338. package/esm/utils/useGetSVGtext.d.ts +6 -0
  339. package/esm/utils/useGetSVGtext.js +19 -0
  340. package/esm/utils/useMenuToggling.d.ts +8 -0
  341. package/esm/utils/useMenuToggling.js +62 -0
  342. package/esm/utils/useScrollbarWidthCSSVar.d.ts +1 -0
  343. package/esm/utils/useScrollbarWidthCSSVar.js +3 -0
  344. package/esm/utils.d.ts +2 -0
  345. package/esm/utils.js +2 -0
  346. package/focus-visible.js +3 -0
  347. package/package.json +183 -184
  348. package/utils/env.js +14 -0
  349. package/utils/seenEffect.js +81 -0
  350. package/utils/useFormatMonitor.js +44 -0
  351. package/utils/useGetSVGtext.js +23 -0
  352. package/utils/useMenuToggling.js +66 -0
  353. package/utils/useScrollbarWidthCSSVar.js +10 -0
  354. package/utils.js +18 -0
  355. package/AccordionList.cjs +0 -91
  356. package/AccordionList.mjs +0 -69
  357. package/ActionCards.cjs +0 -57
  358. package/ActionCards.mjs +0 -35
  359. package/Alert.cjs +0 -159
  360. package/Alert.mjs +0 -139
  361. package/ArticleCarousel/_ArticleCarouselCard.cjs +0 -75
  362. package/ArticleCarousel/_ArticleCarouselCard.mjs +0 -51
  363. package/ArticleCarousel.cjs +0 -43
  364. package/ArticleCarousel.mjs +0 -21
  365. package/ArticleMeta.cjs +0 -46
  366. package/ArticleMeta.mjs +0 -22
  367. package/Attention.cjs +0 -33
  368. package/Attention.mjs +0 -9
  369. package/BasicTable.cjs +0 -72
  370. package/BasicTable.mjs +0 -50
  371. package/Bling.cjs +0 -76
  372. package/Bling.mjs +0 -52
  373. package/BlockBreak.cjs +0 -32
  374. package/BlockBreak.mjs +0 -8
  375. package/BlockQuote.cjs +0 -47
  376. package/BlockQuote.mjs +0 -25
  377. package/BreadCrumbs.cjs +0 -67
  378. package/BreadCrumbs.mjs +0 -43
  379. package/ButtonBack.cjs +0 -47
  380. package/ButtonBack.mjs +0 -25
  381. package/ButtonBar.cjs +0 -45
  382. package/ButtonBar.mjs +0 -18
  383. package/ButtonPrimary.cjs +0 -47
  384. package/ButtonPrimary.mjs +0 -25
  385. package/ButtonSecondary.cjs +0 -47
  386. package/ButtonSecondary.mjs +0 -25
  387. package/ButtonTertiary.cjs +0 -64
  388. package/ButtonTertiary.mjs +0 -42
  389. package/Carousel.cjs +0 -52
  390. package/Carousel.mjs +0 -30
  391. package/CarouselStepper.cjs +0 -51
  392. package/CarouselStepper.mjs +0 -29
  393. package/CenterColumn.cjs +0 -40
  394. package/CenterColumn.mjs +0 -16
  395. package/Checkbox.cjs +0 -52
  396. package/Checkbox.mjs +0 -30
  397. package/CheckboxButtonsGroup.cjs +0 -65
  398. package/CheckboxButtonsGroup.mjs +0 -43
  399. package/CheckboxGroup.cjs +0 -55
  400. package/CheckboxGroup.mjs +0 -33
  401. package/CityBlock.cjs +0 -49
  402. package/CityBlock.mjs +0 -25
  403. package/ContactBubble.cjs +0 -200
  404. package/ContactBubble.mjs +0 -173
  405. package/ContentArticle.cjs +0 -63
  406. package/ContentArticle.mjs +0 -41
  407. package/ContentImage.cjs +0 -58
  408. package/ContentImage.mjs +0 -36
  409. package/Datepicker.cjs +0 -164
  410. package/Datepicker.mjs +0 -142
  411. package/ExtraLinks.cjs +0 -96
  412. package/ExtraLinks.mjs +0 -74
  413. package/FeatureList.cjs +0 -53
  414. package/FeatureList.mjs +0 -29
  415. package/FieldGroup.cjs +0 -40
  416. package/FieldGroup.mjs +0 -16
  417. package/FileInput.cjs +0 -256
  418. package/FileInput.mjs +0 -234
  419. package/Foonote.cjs +0 -30
  420. package/Foonote.mjs +0 -6
  421. package/FooterBadges.cjs +0 -49
  422. package/FooterBadges.mjs +0 -25
  423. package/FooterInfo.cjs +0 -47
  424. package/FooterInfo.mjs +0 -23
  425. package/Footnote.cjs +0 -32
  426. package/Footnote.mjs +0 -8
  427. package/Form.cjs +0 -56
  428. package/Form.mjs +0 -34
  429. package/FormField.cjs +0 -153
  430. package/FormField.mjs +0 -131
  431. package/Gallery/_GalleryItem.cjs +0 -83
  432. package/Gallery/_GalleryItem.mjs +0 -61
  433. package/Gallery/_GalleryModal.cjs +0 -104
  434. package/Gallery/_GalleryModal.mjs +0 -82
  435. package/Gallery/_GalleryModalContext.cjs +0 -30
  436. package/Gallery/_GalleryModalContext.mjs +0 -6
  437. package/Gallery/_GalleryModalItem.cjs +0 -59
  438. package/Gallery/_GalleryModalItem.mjs +0 -36
  439. package/Gallery.cjs +0 -79
  440. package/Gallery.mjs +0 -57
  441. package/GridBlocks.cjs +0 -81
  442. package/GridBlocks.mjs +0 -59
  443. package/Heading.cjs +0 -45
  444. package/Heading.mjs +0 -21
  445. package/HeroBlock.cjs +0 -74
  446. package/HeroBlock.mjs +0 -52
  447. package/IframeBlock.cjs +0 -48
  448. package/IframeBlock.mjs +0 -24
  449. package/Illustration.cjs +0 -51
  450. package/Illustration.mjs +0 -31
  451. package/ImageCards.cjs +0 -72
  452. package/ImageCards.mjs +0 -52
  453. package/InfoBlock.cjs +0 -51
  454. package/InfoBlock.mjs +0 -27
  455. package/InfoHero.cjs +0 -150
  456. package/InfoHero.mjs +0 -128
  457. package/IslandBlock.cjs +0 -63
  458. package/IslandBlock.mjs +0 -41
  459. package/IslandPageBlock.cjs +0 -49
  460. package/IslandPageBlock.mjs +0 -25
  461. package/LabeledTextBlock.cjs +0 -60
  462. package/LabeledTextBlock.mjs +0 -38
  463. package/Layout.cjs +0 -113
  464. package/Layout.mjs +0 -87
  465. package/MainMenu/_Auxiliary.cjs +0 -54
  466. package/MainMenu/_Auxiliary.mjs +0 -28
  467. package/MainMenu/_PrimaryPanel.cjs +0 -74
  468. package/MainMenu/_PrimaryPanel.mjs +0 -48
  469. package/MainMenu.cjs +0 -209
  470. package/MainMenu.mjs +0 -187
  471. package/MiniMetrics.cjs +0 -56
  472. package/MiniMetrics.mjs +0 -34
  473. package/Modal.cjs +0 -70
  474. package/Modal.mjs +0 -48
  475. package/NameCard.cjs +0 -115
  476. package/NameCard.mjs +0 -91
  477. package/NameCards.cjs +0 -52
  478. package/NameCards.mjs +0 -30
  479. package/NewsHero.cjs +0 -136
  480. package/NewsHero.mjs +0 -114
  481. package/PageFilter.cjs +0 -48
  482. package/PageFilter.mjs +0 -24
  483. package/PageHeading.cjs +0 -42
  484. package/PageHeading.mjs +0 -18
  485. package/ProcessOverview.cjs +0 -52
  486. package/ProcessOverview.mjs +0 -28
  487. package/PullQuote.cjs +0 -47
  488. package/PullQuote.mjs +0 -25
  489. package/RadioButtonsGroup.cjs +0 -64
  490. package/RadioButtonsGroup.mjs +0 -42
  491. package/RadioGroup.cjs +0 -58
  492. package/RadioGroup.mjs +0 -36
  493. package/RelatedLinks.cjs +0 -61
  494. package/RelatedLinks.mjs +0 -37
  495. package/RowBlock.cjs +0 -39
  496. package/RowBlock.mjs +0 -15
  497. package/RowBlockColumn.cjs +0 -40
  498. package/RowBlockColumn.mjs +0 -16
  499. package/SearchInput.cjs +0 -136
  500. package/SearchInput.mjs +0 -114
  501. package/SearchResults/_SearchResultsItem.cjs +0 -54
  502. package/SearchResults/_SearchResultsItem.mjs +0 -30
  503. package/SearchResults.cjs +0 -172
  504. package/SearchResults.mjs +0 -150
  505. package/SeenEffect.cjs +0 -66
  506. package/SeenEffect.mjs +0 -44
  507. package/Selectbox.cjs +0 -144
  508. package/Selectbox.mjs +0 -122
  509. package/ShareButtons.cjs +0 -101
  510. package/ShareButtons.mjs +0 -83
  511. package/Sharpie.cjs +0 -51
  512. package/Sharpie.mjs +0 -27
  513. package/SiteSearchAutocomplete.cjs +0 -150
  514. package/SiteSearchAutocomplete.mjs +0 -126
  515. package/SiteSearchCurtain.cjs +0 -78
  516. package/SiteSearchCurtain.mjs +0 -56
  517. package/SiteSearchInput.cjs +0 -119
  518. package/SiteSearchInput.mjs +0 -97
  519. package/Skeleton.cjs +0 -63
  520. package/Skeleton.mjs +0 -39
  521. package/SubHeading.cjs +0 -43
  522. package/SubHeading.mjs +0 -19
  523. package/Tabs.cjs +0 -166
  524. package/Tabs.mjs +0 -144
  525. package/TagPill.cjs +0 -113
  526. package/TagPill.mjs +0 -91
  527. package/TextBlock.cjs +0 -45
  528. package/TextBlock.mjs +0 -21
  529. package/TextButton.cjs +0 -55
  530. package/TextButton.mjs +0 -33
  531. package/TextInput.cjs +0 -136
  532. package/TextInput.mjs +0 -114
  533. package/VSpacer.cjs +0 -70
  534. package/VSpacer.mjs +0 -46
  535. package/VerticalTabsTOC.cjs +0 -123
  536. package/VerticalTabsTOC.mjs +0 -101
  537. package/WizardLayout.cjs +0 -79
  538. package/WizardLayout.mjs +0 -55
  539. package/WizardLayoutClose.cjs +0 -47
  540. package/WizardLayoutClose.mjs +0 -25
  541. package/WizardStepper.cjs +0 -55
  542. package/WizardStepper.mjs +0 -31
  543. package/_abstract/Button.cjs +0 -114
  544. package/_abstract/Button.mjs +0 -92
  545. package/_abstract/CardList.cjs +0 -100
  546. package/_abstract/CardList.mjs +0 -76
  547. package/_abstract/Image.cjs +0 -75
  548. package/_abstract/Image.mjs +0 -51
  549. package/_abstract/Link.cjs +0 -37
  550. package/_abstract/Link.mjs +0 -10
  551. package/_abstract/TogglerGroup.cjs +0 -92
  552. package/_abstract/TogglerGroup.mjs +0 -70
  553. package/_abstract/TogglerGroupField.cjs +0 -121
  554. package/_abstract/TogglerGroupField.mjs +0 -99
  555. package/_abstract/TogglerInput.cjs +0 -105
  556. package/_abstract/TogglerInput.mjs +0 -83
  557. package/_abstract/_AbstractCarousel.cjs +0 -170
  558. package/_abstract/_AbstractCarousel.mjs +0 -152
  559. package/_abstract/_Blings.cjs +0 -47
  560. package/_abstract/_Blings.mjs +0 -23
  561. package/_abstract/_Block.cjs +0 -73
  562. package/_abstract/_Block.mjs +0 -51
  563. package/_abstract/_Quote.cjs +0 -43
  564. package/_abstract/_Quote.mjs +0 -17
  565. package/_abstract/breakOnNL.cjs +0 -30
  566. package/_abstract/breakOnNL.mjs +0 -6
  567. package/assets.cjs +0 -77
  568. package/assets.mjs +0 -53
  569. package/constants.cjs +0 -49
  570. package/constants.mjs +0 -24
  571. package/focus-visible.cjs +0 -1
  572. package/focus-visible.mjs +0 -1
  573. package/utils/config.cjs +0 -27
  574. package/utils/config.d.ts +0 -2
  575. package/utils/config.mjs +0 -4
  576. package/utils/detectEdgeScroll.cjs +0 -95
  577. package/utils/detectEdgeScroll.d.ts +0 -52
  578. package/utils/detectEdgeScroll.mjs +0 -71
  579. package/utils/env.cjs +0 -31
  580. package/utils/env.mjs +0 -5
  581. package/utils/seenEffect.cjs +0 -93
  582. package/utils/seenEffect.mjs +0 -65
  583. package/utils/useFormatMonitor.cjs +0 -29
  584. package/utils/useFormatMonitor.mjs +0 -6
  585. package/utils/useGetSVGtext.cjs +0 -44
  586. package/utils/useGetSVGtext.mjs +0 -21
  587. package/utils/useMenuToggling.cjs +0 -83
  588. package/utils/useMenuToggling.mjs +0 -60
  589. package/utils/useScrollbarWidthCSSVar.cjs +0 -32
  590. package/utils/useScrollbarWidthCSSVar.mjs +0 -6
  591. package/utils.cjs +0 -18
  592. package/utils.mjs +0 -2
@@ -0,0 +1,26 @@
1
+ import { Efnistakn } from '@reykjavik/hanna-utils/assets';
2
+ import { ButtonProps } from './_abstract/Button';
3
+ import { ImageProps } from './_abstract/Image';
4
+ import { SeenProp } from './utils/seenEffect';
5
+ export declare type GridBlockItem = {
6
+ title: string;
7
+ summary: string | JSX.Element;
8
+ icon?: Efnistakn;
9
+ image?: ImageProps;
10
+ } & ({
11
+ href?: string;
12
+ links: Array<ButtonProps>;
13
+ } | {
14
+ href: string;
15
+ links?: Array<ButtonProps>;
16
+ });
17
+ export declare type GridBlocksProps = {
18
+ blocks: Array<GridBlockItem>;
19
+ twocol?: boolean;
20
+ } & SeenProp;
21
+ export declare type GridBlocksProp1s = {
22
+ blocks: Array<GridBlockItem>;
23
+ twocol?: boolean;
24
+ };
25
+ declare const GridBlocks: (props: GridBlocksProps) => JSX.Element;
26
+ export default GridBlocks;
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
3
+ import { getEfnistaknUrl } from '@reykjavik/hanna-utils/assets';
4
+ import Image from './_abstract/Image';
5
+ import { Link } from './_abstract/Link';
6
+ import { useSeenEffect } from './utils/seenEffect';
7
+ import ButtonTertiary from './ButtonTertiary';
8
+ const GridBlocks = (props) => {
9
+ const { blocks, twocol, startSeen } = props;
10
+ const [ref] = useSeenEffect(startSeen);
11
+ return (<div className={getBemClass('GridBlocks', [twocol && 'twocol'])} ref={ref}>
12
+ {blocks.map(({ title, summary, href, links = [], icon, image }, i) => {
13
+ const imageProps = icon ? { src: getEfnistaknUrl(icon) } : image;
14
+ return (<div key={i} className="GridBlocks__item">
15
+ {imageProps && <Image className="GridBlocks__illustration" {...imageProps}/>}
16
+ <div className="GridBlocks__textwrap">
17
+ <h3 className="GridBlocks__item__title">
18
+ {href != null ? (<Link className="GridBlocks__item__titlelink" href={href}>
19
+ {title}
20
+ </Link>) : (title)}
21
+ </h3>
22
+ <div className="GridBlocks__item__summary">{summary}</div>
23
+ <ul className="GridBlocks__links">
24
+ {links.map((link, i) => {
25
+ return (<li key={i} className="GridBlocks__link">
26
+ <ButtonTertiary {...link}/>
27
+ </li>);
28
+ })}
29
+ </ul>
30
+ </div>
31
+ </div>);
32
+ })}
33
+ </div>);
34
+ };
35
+ export default GridBlocks;
@@ -0,0 +1,16 @@
1
+ import { ReactNode } from 'react';
2
+ import { ComponentLayoutProps } from './constants';
3
+ declare const sizes: {
4
+ readonly small: "small";
5
+ /** Default value */
6
+ readonly normal: "normal";
7
+ readonly large: "large";
8
+ };
9
+ declare type HeadingSize = keyof typeof sizes;
10
+ export declare type HeadingProps = {
11
+ Tag?: 'h2' | 'h3';
12
+ size?: HeadingSize;
13
+ children: ReactNode;
14
+ } & ComponentLayoutProps;
15
+ declare const Heading: (props: HeadingProps) => JSX.Element;
16
+ export default Heading;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
3
+ const sizes = {
4
+ small: 'small',
5
+ /** Default value */
6
+ normal: 'normal',
7
+ large: 'large',
8
+ };
9
+ const Heading = (props) => {
10
+ const { size = 'normal', Tag = 'h2', align, wide, children } = props;
11
+ return (<Tag className={getBemClass('Heading', [
12
+ sizes[size],
13
+ align === 'right' && 'align--' + align,
14
+ !align && wide && 'wide',
15
+ ])}>
16
+ {children}
17
+ </Tag>);
18
+ };
19
+ export default Heading;
@@ -0,0 +1,19 @@
1
+ import { Illustration } from '@reykjavik/hanna-utils/assets';
2
+ import { ButtonProps } from './_abstract/Button';
3
+ import { ImageProps } from './_abstract/Image';
4
+ import { SeenProp } from './utils/seenEffect';
5
+ declare type HeroBlockImageProps = {
6
+ illustration: Illustration;
7
+ image?: undefined;
8
+ } | {
9
+ image: ImageProps;
10
+ illustration?: undefined;
11
+ };
12
+ export declare type HeroBlockProps = {
13
+ title: string;
14
+ summary: string | JSX.Element;
15
+ primaryButton?: ButtonProps;
16
+ secondaryButton?: ButtonProps;
17
+ } & HeroBlockImageProps & SeenProp;
18
+ declare const HeroBlock: (props: HeroBlockProps) => JSX.Element;
19
+ export default HeroBlock;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { getIllustrationUrl } from '@reykjavik/hanna-utils/assets';
3
+ import Image from './_abstract/Image';
4
+ import { useSeenEffect } from './utils/seenEffect';
5
+ import ButtonPrimary from './ButtonPrimary';
6
+ import ButtonTertiary from './ButtonTertiary';
7
+ const HeroBlock = (props) => {
8
+ const { title, summary, illustration, image, primaryButton, secondaryButton, startSeen, } = props;
9
+ const hasButtons = Boolean(primaryButton || secondaryButton);
10
+ const imgProps = illustration ? { src: getIllustrationUrl(illustration) } : image;
11
+ const [ref] = useSeenEffect(startSeen);
12
+ return (<div className="HeroBlock" ref={ref}>
13
+ <h1 className="HeroBlock__title">{title}</h1>
14
+ <Image className="HeroBlock__image" {...imgProps}/>
15
+ <div className="HeroBlock__summary">{summary}</div>
16
+ {hasButtons && (<div className="HeroBlock__buttons">
17
+ {primaryButton && <ButtonPrimary {...primaryButton}/>}{' '}
18
+ {secondaryButton && <ButtonTertiary {...secondaryButton}/>}
19
+ </div>)}
20
+ </div>);
21
+ };
22
+ export default HeroBlock;
@@ -0,0 +1,23 @@
1
+ export declare type IframeBlockProps = {
2
+ src: string;
3
+ framed?: boolean;
4
+ compact?: boolean;
5
+ align?: 'right';
6
+ } & ({
7
+ /** Default: 'auto' ... which initializes "iframe-resizer" script */
8
+ height?: 'auto';
9
+ scrolling?: never;
10
+ } | {
11
+ height: number;
12
+ scrolling?: boolean | 'no' | 'yes';
13
+ });
14
+ /**
15
+ * When `height` is undefined or "auto", then Add the following code-snipped to the iframed page:
16
+ *
17
+ * ```js
18
+ * <script> window.iFrameResizer = { targetOrigin: '*' }; </script>
19
+ * <script src="https://styles.reykjavik.is/assets/scripts/iframeResizer.contentWindow@4.js"></script>
20
+ * ```
21
+ */
22
+ declare const IframeBlock: (props: IframeBlockProps) => JSX.Element;
23
+ export default IframeBlock;
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
3
+ import IframeResizer from 'iframe-resizer-react';
4
+ /**
5
+ * When `height` is undefined or "auto", then Add the following code-snipped to the iframed page:
6
+ *
7
+ * ```js
8
+ * <script> window.iFrameResizer = { targetOrigin: '*' }; </script>
9
+ * <script src="https://styles.reykjavik.is/assets/scripts/iframeResizer.contentWindow@4.js"></script>
10
+ * ```
11
+ */
12
+ const IframeBlock = (props) => {
13
+ const { src, framed, compact, scrolling, height = 'auto', align } = props;
14
+ const className = getBemClass('IframeBlock', [
15
+ framed && 'framed',
16
+ compact && 'compact',
17
+ align === 'right' && 'align--' + align,
18
+ ]);
19
+ return height === 'auto' ? (<IframeResizer className={className} src={src}/>) : (<iframe className={className} src={src}
20
+ // hidden tiger: pass negative height to disable iframe-resizer but not set height explicitly
21
+ // (Silly hack, don't rely on this)
22
+ height={height < 0 ? undefined : height}
23
+ // allow undefined to suppress scrolling attribute
24
+ scrolling={scrolling === true ? 'yes' : scrolling === false ? 'no' : scrolling}/>);
25
+ };
26
+ export default IframeBlock;
@@ -0,0 +1,13 @@
1
+ import { Illustration as IllustrationName } from '@reykjavik/hanna-utils/assets';
2
+ import { ImageProps } from './_abstract/Image';
3
+ declare type IllustrationProps = {
4
+ children?: undefined;
5
+ } & ({
6
+ type: IllustrationName;
7
+ image?: undefined;
8
+ } | {
9
+ image: ImageProps;
10
+ type?: undefined;
11
+ });
12
+ declare const Illustration: (props: IllustrationProps) => JSX.Element;
13
+ export default Illustration;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { getIllustrationUrl, } from '@reykjavik/hanna-utils/assets';
3
+ import Image from './_abstract/Image';
4
+ const Illustration = (props) => {
5
+ const imgProps = props.type ? { src: getIllustrationUrl(props.type) } : props.image;
6
+ return <Image className="Illustration" {...imgProps}/>;
7
+ };
8
+ export default Illustration;
@@ -0,0 +1,8 @@
1
+ import { ImageCardListProps, ImageCardProps as ICP } from './_abstract/CardList';
2
+ import { SeenProp } from './utils/seenEffect';
3
+ export declare type ImageCardProps = ICP;
4
+ declare type _ImageCardProps = ImageCardListProps & {
5
+ background?: boolean;
6
+ } & SeenProp;
7
+ declare const ImageCards: (props: _ImageCardProps) => JSX.Element;
8
+ export default ImageCards;
@@ -0,0 +1,23 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import React from 'react';
13
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
14
+ import { CardList, } from './_abstract/CardList';
15
+ import { useSeenEffect } from './utils/seenEffect';
16
+ const ImageCards = (props) => {
17
+ const { background, startSeen } = props, cardListProps = __rest(props, ["background", "startSeen"]);
18
+ const [ref] = useSeenEffect(startSeen);
19
+ return (<div className={getBemClass('ImageCards', background && 'background')} ref={ref}>
20
+ <CardList {...cardListProps} bemPrefix="ImageCards" imgPlaceholder={props.imgPlaceholder || true}/>
21
+ </div>);
22
+ };
23
+ export default ImageCards;
@@ -0,0 +1,17 @@
1
+ import { SeenProp } from './utils/seenEffect';
2
+ export declare type InfoBlockProps = {
3
+ title: string;
4
+ subtitle: string | JSX.Element;
5
+ items: Array<string | JSX.Element>;
6
+ } & ({
7
+ attention?: undefined;
8
+ extraInfo?: undefined;
9
+ } | {
10
+ attention: string | JSX.Element;
11
+ extraInfo?: undefined;
12
+ } | {
13
+ extraInfo: string | JSX.Element;
14
+ attention?: undefined;
15
+ }) & SeenProp;
16
+ declare const InfoBlock: (props: InfoBlockProps) => JSX.Element;
17
+ export default InfoBlock;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { useSeenEffect } from './utils/seenEffect';
3
+ const InfoBlock = (props) => {
4
+ const { title, subtitle, items, startSeen } = props;
5
+ const [ref] = useSeenEffect(startSeen);
6
+ return (<div className="InfoBlock" ref={ref}>
7
+ <h2 className="InfoBlock__title">{title}</h2>
8
+ <div className="InfoBlock__subtitle">{subtitle}</div>
9
+ <ul className="InfoBlock__items">
10
+ {items.map((item, i) => (<li key={i} className="InfoBlock__item">
11
+ {item}
12
+ </li>))}
13
+ </ul>
14
+ {'extraInfo' in props && (<div className="InfoBlock__extrainfo">{props.extraInfo}</div>)}
15
+ {'attention' in props && (<div className="InfoBlock__attention">{props.attention}</div>)}
16
+ </div>);
17
+ };
18
+ export default InfoBlock;
@@ -0,0 +1,17 @@
1
+ import { ButtonProps } from './_abstract/Button';
2
+ import { ImageProps } from './_abstract/Image';
3
+ import { Alignment } from './constants';
4
+ declare type BlingOptions = 'waves' | 'sunny-waves' | 'triangles' | 'circles';
5
+ export declare type InfoHeroProps = {
6
+ title: string;
7
+ titleBlurb?: string | JSX.Element;
8
+ /** Inserts `<br/>`s on `\n`. Collapses multiple `\n`s. */
9
+ subTitle?: string;
10
+ blurb?: string | JSX.Element;
11
+ buttons?: Array<ButtonProps>;
12
+ align?: Alignment;
13
+ image?: ImageProps;
14
+ blingType?: BlingOptions;
15
+ };
16
+ declare const InfoHero: (props: InfoHeroProps) => JSX.Element;
17
+ export default InfoHero;
@@ -0,0 +1,88 @@
1
+ import React from 'react';
2
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
3
+ import Blings from './_abstract/_Blings';
4
+ import breakOnNL from './_abstract/breakOnNL';
5
+ import Image from './_abstract/Image';
6
+ import ButtonTertiary from './ButtonTertiary';
7
+ import { aligns } from './constants';
8
+ const blingOptions = {
9
+ waves: [
10
+ {
11
+ type: 'waves-medium',
12
+ color: 'primary',
13
+ align: 'left',
14
+ vertical: 'up',
15
+ parent: 'bottom',
16
+ },
17
+ ],
18
+ 'sunny-waves': [
19
+ {
20
+ type: 'waves-medium',
21
+ align: 'left',
22
+ parent: 'bottom',
23
+ vertical: 'up',
24
+ },
25
+ {
26
+ type: 'circle-medium',
27
+ color: 'secondary',
28
+ align: 'right-center',
29
+ parent: 'top',
30
+ vertical: 'down-ish',
31
+ },
32
+ ],
33
+ triangles: [
34
+ {
35
+ type: 'triangle-large',
36
+ align: 'left-center',
37
+ parent: 'bottom',
38
+ vertical: 'up',
39
+ },
40
+ {
41
+ type: 'triangle-small',
42
+ color: 'secondary',
43
+ align: 'right',
44
+ parent: 'top-ish',
45
+ vertical: 'down-ish',
46
+ overlay: true,
47
+ },
48
+ ],
49
+ circles: [
50
+ {
51
+ type: 'circle-large',
52
+ align: 'left',
53
+ parent: 'top',
54
+ vertical: 'down',
55
+ },
56
+ {
57
+ type: 'circle-small',
58
+ color: 'secondary',
59
+ align: 'right',
60
+ parent: 'bottom-ish',
61
+ vertical: 'up-ish',
62
+ overlay: true,
63
+ },
64
+ ],
65
+ };
66
+ const InfoHero = (props) => {
67
+ const { title, titleBlurb, subTitle, blurb, image, buttons = [], align, blingType, } = props;
68
+ const showButtons = Boolean(buttons.length);
69
+ const alignment = align && aligns[align] ? align : 'right';
70
+ const blings = (blingType && blingOptions[blingType]) ||
71
+ blingOptions.waves; // default to `waves`
72
+ return (<div className={getBemClass('InfoHero', 'align--' + alignment)}>
73
+ <div className="InfoHero__content">
74
+ <h1 className="InfoHero__title">{title}</h1>
75
+ {titleBlurb && <div className="InfoHero__titleblurb">{titleBlurb}</div>}
76
+
77
+ {subTitle && <div className="InfoHero__subtitle">{breakOnNL(subTitle)}</div>}
78
+ {blurb && <div className="InfoHero__blurb">{blurb}</div>}
79
+
80
+ {showButtons && (<div className="InfoHero__buttons">
81
+ {buttons.map((buttonProps, i) => (<ButtonTertiary key={i} {...buttonProps}/>))}
82
+ </div>)}
83
+ </div>
84
+ <Image className="InfoHero__image" altText={title} {...image} placeholder/>
85
+ <Blings blings={blings} mirror={alignment === 'right'}/>
86
+ </div>);
87
+ };
88
+ export default InfoHero;
@@ -0,0 +1,25 @@
1
+ import { Formheimur } from '@reykjavik/hanna-utils/assets';
2
+ import { BlockItem } from './_abstract/_Block';
3
+ import { ImageProps } from './_abstract/Image';
4
+ import { SeenProp } from './utils/seenEffect';
5
+ import { Alignment } from './constants';
6
+ declare type IslandBaseBlockProps = {
7
+ align?: Alignment;
8
+ };
9
+ declare type IslandImageBlock = {
10
+ content: BlockItem;
11
+ } & ({
12
+ shapes: Formheimur;
13
+ image?: undefined;
14
+ } | {
15
+ image: ImageProps;
16
+ shapes?: undefined;
17
+ });
18
+ declare type IslandContentBlocks = {
19
+ content: Array<BlockItem>;
20
+ shapes?: undefined;
21
+ image?: undefined;
22
+ };
23
+ export declare type IslandBlockProps = IslandBaseBlockProps & (IslandContentBlocks | IslandImageBlock) & SeenProp;
24
+ declare const IslandBlock: (props: IslandBlockProps) => JSX.Element;
25
+ export default IslandBlock;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { getFormheimurUrl } from '@reykjavik/hanna-utils/assets';
3
+ import Block from './_abstract/_Block';
4
+ import { aligns } from './constants';
5
+ const IslandBlock = (props) => {
6
+ const { align, content, shapes, image, startSeen } = props;
7
+ const alignment = align && aligns[align] ? align : 'right';
8
+ const blockProps = Array.isArray(content)
9
+ ? { content }
10
+ : {
11
+ content,
12
+ image: shapes ? { src: getFormheimurUrl(shapes), inline: true } : image || {},
13
+ };
14
+ return (<Block bem="IslandBlock" modifier={'align--' + alignment} {...blockProps} startSeen={startSeen}/>);
15
+ };
16
+ export default IslandBlock;
@@ -0,0 +1,24 @@
1
+ import { Illustration } from '@reykjavik/hanna-utils/assets';
2
+ import { BlockItem } from './_abstract/_Block';
3
+ import { ImageProps } from './_abstract/Image';
4
+ import { SeenProp } from './utils/seenEffect';
5
+ import { Alignment } from './constants';
6
+ declare const backgrounds: {
7
+ none: undefined;
8
+ gray: string;
9
+ secondary: string;
10
+ };
11
+ declare type Background = keyof typeof backgrounds;
12
+ declare type IslandPageImageProps = {
13
+ illustration: Illustration;
14
+ image?: undefined;
15
+ } | {
16
+ illustration?: undefined;
17
+ image: ImageProps;
18
+ };
19
+ export declare type IslandPageBlockProps = BlockItem & IslandPageImageProps & {
20
+ align?: Alignment;
21
+ background?: Background;
22
+ } & SeenProp;
23
+ declare const IslandPageBlock: (props: IslandPageBlockProps) => JSX.Element;
24
+ export default IslandPageBlock;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { getIllustrationUrl } from '@reykjavik/hanna-utils/assets';
3
+ import Block from './_abstract/_Block';
4
+ import { aligns } from './constants';
5
+ const backgrounds = {
6
+ none: undefined,
7
+ gray: 'gray',
8
+ secondary: 'secondary',
9
+ };
10
+ const IslandPageBlock = (props) => {
11
+ const { title, summary, buttons, illustration, image, align, background, startSeen } = props;
12
+ const alignment = align && aligns[align] ? align : 'right';
13
+ const bg = backgrounds[background || 'none'];
14
+ return (<Block bem="IslandPageBlock" modifier={['align--' + alignment, bg && 'background--' + bg]} content={{ title, summary, buttons }} image={illustration ? { src: getIllustrationUrl(illustration) } : image || {}} startSeen={startSeen}/>);
15
+ };
16
+ export default IslandPageBlock;
@@ -0,0 +1,11 @@
1
+ import { ReactElement } from 'react';
2
+ import { ButtonProps } from './_abstract/Button';
3
+ import { SeenProp } from './utils/seenEffect';
4
+ export declare type LabeledTextBlockProps = {
5
+ label: string;
6
+ summary: string | ReactElement;
7
+ wide?: boolean;
8
+ buttons?: Array<ButtonProps>;
9
+ } & SeenProp;
10
+ declare const LabeledTextBlock: (props: LabeledTextBlockProps) => JSX.Element;
11
+ export default LabeledTextBlock;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
3
+ import { useSeenEffect } from './utils/seenEffect';
4
+ import ButtonTertiary from './ButtonTertiary';
5
+ const LabeledTextBlock = (props) => {
6
+ const { label, summary, wide, buttons = [], startSeen } = props;
7
+ const [ref] = useSeenEffect(startSeen);
8
+ return (<div className={getBemClass('LabeledTextBlock', wide && 'wide')} ref={ref}>
9
+ <h2 className="LabeledTextBlock__label">{label}</h2>
10
+ <div className="LabeledTextBlock__summary">
11
+ {summary}
12
+ {buttons.map((button, i) => (<ButtonTertiary key={i} {...button}/>))}
13
+ </div>
14
+ </div>);
15
+ };
16
+ export default LabeledTextBlock;
@@ -0,0 +1,33 @@
1
+ import { ReactNode } from 'react';
2
+ import { SSRSupport } from '@hugsmidjan/react/hooks';
3
+ import { BemPropsModifier } from '@hugsmidjan/react/types';
4
+ import { HannaColorTheme } from '@reykjavik/hanna-css';
5
+ import { DefaultTexts } from '@reykjavik/hanna-utils/i18n';
6
+ export declare type LayoutI18n = {
7
+ lang?: string;
8
+ skipLinkLabel: string;
9
+ closeMenuLabel: string;
10
+ closeMenuLabelLong?: string;
11
+ };
12
+ export declare const defaultLayoutTexts: DefaultTexts<LayoutI18n>;
13
+ declare type LayoutProps = {
14
+ globalAlerts?: ReactNode;
15
+ mainChildren?: ReactNode;
16
+ navChildren?: ReactNode;
17
+ footerChildren?: ReactNode;
18
+ colorTheme?: HannaColorTheme;
19
+ logoLink?: string;
20
+ siteName?: string;
21
+ modifier?: BemPropsModifier['modifier'];
22
+ ssr?: SSRSupport;
23
+ texts?: LayoutI18n;
24
+ lang?: string;
25
+ } & ({
26
+ mainChildren: ReactNode;
27
+ children?: never;
28
+ } | {
29
+ mainChildren?: never;
30
+ children: ReactNode;
31
+ });
32
+ declare const Layout: (props: LayoutProps) => JSX.Element;
33
+ export default Layout;
package/esm/Layout.jsx ADDED
@@ -0,0 +1,63 @@
1
+ import React from 'react';
2
+ import { useIsBrowserSide } from '@hugsmidjan/react/hooks';
3
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
4
+ import { getAssetUrl } from '@reykjavik/hanna-utils/assets';
5
+ import { getTexts } from '@reykjavik/hanna-utils/i18n';
6
+ import Image from './_abstract/Image';
7
+ import { Link } from './_abstract/Link';
8
+ import { useMenuToggling } from './utils/useMenuToggling';
9
+ import { useScrollbarWidthCSSVar } from './utils/useScrollbarWidthCSSVar';
10
+ export const defaultLayoutTexts = {
11
+ is: {
12
+ lang: 'is',
13
+ skipLinkLabel: 'Valmynd',
14
+ closeMenuLabel: 'Loka',
15
+ closeMenuLabelLong: 'Loka valmynd',
16
+ },
17
+ en: {
18
+ lang: 'en',
19
+ skipLinkLabel: 'Skip to navigation',
20
+ closeMenuLabel: 'Close',
21
+ closeMenuLabelLong: 'Close menu',
22
+ },
23
+ };
24
+ const Layout = (props) => {
25
+ useScrollbarWidthCSSVar();
26
+ const { ssr, globalAlerts, mainChildren, navChildren, footerChildren, colorTheme, children, siteName = 'Reykjavík', logoLink = '/', } = props;
27
+ const { isMenuActive, closeMenu, toggleMenu } = useMenuToggling(ssr !== 'ssr-only');
28
+ const isBrowser = useIsBrowserSide( /* ssr */);
29
+ const txt = getTexts(props, defaultLayoutTexts);
30
+ return (<div className={getBemClass('Layout', props.modifier)} data-sprinkled={isBrowser} data-color-theme={colorTheme}>
31
+ {globalAlerts && (<div className="Layout__alerts" role="alert">
32
+ {globalAlerts}
33
+ </div>)}
34
+ <div className="Layout__content">
35
+ <div className="Layout__header" role="banner">
36
+ <Link className="Layout__header__logo" href={logoLink}>
37
+ {' '}
38
+ <Image inline={true} src={getAssetUrl('reykjavik-logo.svg')}/> {siteName}{' '}
39
+ </Link>{' '}
40
+ {navChildren && (<Link className="Layout__header__skiplink" href="#pagenav" onClick={isMenuActive &&
41
+ ((e) => {
42
+ e.preventDefault();
43
+ toggleMenu();
44
+ })} aria-label={txt.skipLinkLabel}>
45
+ {txt.skipLinkLabel}
46
+ </Link>)}
47
+ </div>
48
+ <div className="Layout__main" role="main">
49
+ {mainChildren || children}
50
+ </div>
51
+ {navChildren && (<div className="Layout__nav" id="pagenav" role="navigation">
52
+ {navChildren}
53
+ {isMenuActive && (<button className="Layout__nav__closebutton" onClick={closeMenu} aria-label={txt.closeMenuLabelLong} type="button">
54
+ {txt.closeMenuLabel}
55
+ </button>)}
56
+ </div>)}
57
+ <div className="Layout__footer" role="complementary">
58
+ {footerChildren}
59
+ </div>
60
+ </div>
61
+ </div>);
62
+ };
63
+ export default Layout;
@@ -0,0 +1,6 @@
1
+ import type { MegaMenuPanel } from '../MainMenu';
2
+ export declare type AuxilaryPanelIllustration = 'hanna-veitiggi' | 'hanna-vandro' | 'hanna-hugsi' | 'hanna-hissa' | 'hanna-hahaha' | 'hanna-hae' | 'hanna-god_spurning' | 'hanna-gjuggiborg' | 'hanna-benda';
3
+ export declare type AuxiliaryPanelProps = MegaMenuPanel & {
4
+ image?: AuxilaryPanelIllustration;
5
+ };
6
+ export declare const AuxiliaryPanel: (props: AuxiliaryPanelProps) => JSX.Element;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { getIllustrationUrl } from '@reykjavik/hanna-utils/assets';
3
+ import { Link } from '../_abstract/Link';
4
+ export const AuxiliaryPanel = (props) => {
5
+ const { title, id, items, image } = props;
6
+ const imageUrl = image ? getIllustrationUrl(image) : image;
7
+ return (<li className="AuxiliaryPanel" id={id} style={imageUrl
8
+ ? { '--menu-auxiliary-image': `url(${imageUrl})` }
9
+ : undefined}>
10
+ <h3 className="AuxiliaryPanel__title">{title}</h3>
11
+ <ul className="AuxiliaryPanel__items">
12
+ {items.map((item, i) => (<li key={i} className="AuxiliaryPanel__item" aria-current={item.current || undefined}>
13
+ <Link className="AuxiliaryPanel__link" href={item.href} target={item.target} lang={item.lang}>
14
+ {item.label}
15
+ </Link>
16
+ </li>))}
17
+ </ul>
18
+ </li>);
19
+ };
@@ -0,0 +1,13 @@
1
+ import { RefObject } from 'react';
2
+ import { MainMenuI18n, MegaMenuPanel } from '../MainMenu';
3
+ declare type PrimaryPanelProps = {
4
+ setActivePanel: (panel: MegaMenuPanel | undefined, setFocus?: boolean) => void;
5
+ isParent?: boolean;
6
+ isActive?: boolean;
7
+ panel: MegaMenuPanel;
8
+ texts: MainMenuI18n;
9
+ activeRef: RefObject<HTMLLIElement>;
10
+ isBrowser: true | undefined;
11
+ };
12
+ export declare const PrimaryPanel: (props: PrimaryPanelProps) => JSX.Element;
13
+ export {};