@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,4 @@
1
+ import React from 'react';
2
+ import _CarouselStepper from '@hugsmidjan/react/CarouselStepper';
3
+ const CarouselStepper = (props) => (<_CarouselStepper {...props} bem={undefined} modifier={undefined}/>);
4
+ export default CarouselStepper;
@@ -0,0 +1,7 @@
1
+ import { ReactNode } from 'react';
2
+ import { EffectProp, SeenProp } from './utils/seenEffect';
3
+ export declare type CenterColumnProps = {
4
+ children: ReactNode;
5
+ } & SeenProp & EffectProp;
6
+ declare const CenterColumn: (props: CenterColumnProps) => JSX.Element;
7
+ export default CenterColumn;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import SeenEffect from './SeenEffect';
3
+ const CenterColumn = (props) => {
4
+ const { children, startSeen, effectType } = props;
5
+ return startSeen == null ? (<div className="CenterColumn">{children}</div>) : (<SeenEffect className="CenterColumn" startSeen={startSeen} effectType={effectType}>
6
+ {children}
7
+ </SeenEffect>);
8
+ };
9
+ export default CenterColumn;
@@ -0,0 +1,4 @@
1
+ import { TogglerInputProps } from './_abstract/TogglerInput';
2
+ export declare type CheckboxProps = TogglerInputProps;
3
+ declare const Checkbox: (props: CheckboxProps) => JSX.Element;
4
+ export default Checkbox;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import TogglerInput from './_abstract/TogglerInput';
3
+ const Checkbox = (props) => (<TogglerInput bem="Checkbox" {...props} type="checkbox"/>);
4
+ export default Checkbox;
@@ -0,0 +1,11 @@
1
+ import { TogglerGroupFieldOptions, TogglerGroupFieldProps } from './_abstract/TogglerGroupField';
2
+ export declare type CheckboxButtonsGroupProps = TogglerGroupFieldProps & {
3
+ value?: Array<string>;
4
+ /** @deprecated (Will be removed in v0.9) */
5
+ columns?: '2col' | '3col';
6
+ /** @deprecated (Will be removed in v0.9) */
7
+ layout?: 'slim';
8
+ };
9
+ export declare type CheckboxButtonsGroupOptions = TogglerGroupFieldOptions;
10
+ declare const CheckboxButtonsGroup: (props: CheckboxButtonsGroupProps) => JSX.Element;
11
+ export default CheckboxButtonsGroup;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import TogglerGroupField from './_abstract/TogglerGroupField';
3
+ import TogglerInput from './_abstract/TogglerInput';
4
+ const CheckboxButton = (props) => (<TogglerInput bem="CheckboxButton" {...props} type="checkbox"/>);
5
+ const CheckboxButtonsGroup = (props) => {
6
+ if (props.layout) {
7
+ console.warn('`CheckboxButtonsGroupProps.layout` is deprecated.');
8
+ }
9
+ if (props.columns) {
10
+ console.warn('`CheckboxButtonsGroupProps.columns` is deprecated.');
11
+ }
12
+ return (<TogglerGroupField {...props} bem="CheckboxButtonsGroup" Toggler={CheckboxButton}/>);
13
+ };
14
+ export default CheckboxButtonsGroup;
@@ -0,0 +1,9 @@
1
+ import { TogglerGroupFieldOption, TogglerGroupFieldOptions, TogglerGroupFieldProps } from './_abstract/TogglerGroupField';
2
+ export declare type CheckboxGroupProps = TogglerGroupFieldProps & {
3
+ layout?: 'inline';
4
+ value?: Array<string>;
5
+ };
6
+ export declare type CheckboxGroupOption = TogglerGroupFieldOption;
7
+ export declare type CheckboxGroupOptions = TogglerGroupFieldOptions;
8
+ declare const CheckboxGroup: (props: CheckboxGroupProps) => JSX.Element;
9
+ export default CheckboxGroup;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import TogglerGroupField from './_abstract/TogglerGroupField';
3
+ import Checkbox from './Checkbox';
4
+ const CheckboxGroup = (props) => {
5
+ return (<TogglerGroupField {...props} bem="CheckboxGroup" modifier={props.layout} Toggler={Checkbox}/>);
6
+ };
7
+ export default CheckboxGroup;
@@ -0,0 +1,23 @@
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 types: {
7
+ largebox: boolean;
8
+ largeimage: boolean;
9
+ };
10
+ declare type CityBlockImageProps = {
11
+ illustration: Illustration;
12
+ image?: never;
13
+ } | {
14
+ image: ImageProps;
15
+ illustration?: never;
16
+ };
17
+ export declare type CityBlockProps = {
18
+ align?: Alignment;
19
+ type?: keyof typeof types;
20
+ content: BlockItem;
21
+ } & CityBlockImageProps & SeenProp;
22
+ declare const CityBlock: (props: CityBlockProps) => JSX.Element;
23
+ export default CityBlock;
@@ -0,0 +1,18 @@
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 types = {
6
+ largebox: true,
7
+ largeimage: true,
8
+ };
9
+ const CityBlock = (props) => {
10
+ const align = props.align || 'right';
11
+ const type = !props.illustration && props.type; // The presence of illustration prop suppresses type
12
+ const modifier = [aligns[align] && 'align--' + align, type && types[type] && type];
13
+ const imageProps = props.illustration != null
14
+ ? { src: getIllustrationUrl(props.illustration) }
15
+ : props.image;
16
+ return (<Block bem="CityBlock" modifier={modifier} content={props.content} image={imageProps} startSeen={props.startSeen}/>);
17
+ };
18
+ export default CityBlock;
@@ -0,0 +1,58 @@
1
+ import { SSRSupport } from '@hugsmidjan/react/hooks';
2
+ import { DefaultTexts } from '@reykjavik/hanna-utils/i18n';
3
+ export declare type ContactBubbleI18n = {
4
+ lang?: string;
5
+ openBtn: string;
6
+ openBtnLong?: string;
7
+ closeBtn: string;
8
+ closeBtnLong?: string;
9
+ };
10
+ export declare const defaultTexts: DefaultTexts<ContactBubbleI18n>;
11
+ declare const icons: {
12
+ readonly suggestions: 1;
13
+ readonly phone: 1;
14
+ readonly faq: 1;
15
+ readonly livechat: 1;
16
+ readonly other: 0;
17
+ };
18
+ export declare type ContactBubbleIcon = keyof typeof icons;
19
+ export declare const ensureIcon: (maybeIcon: string | undefined) => ContactBubbleIcon | undefined;
20
+ export declare type ContactBubbleItem = {
21
+ label: string;
22
+ extraLabel?: string;
23
+ icon?: ContactBubbleIcon;
24
+ } & ({
25
+ href: string;
26
+ /** Prevents default link behavior unless the handler function returns `true` */
27
+ onClick?: () => void | boolean;
28
+ target?: string;
29
+ } | {
30
+ onClick: () => void | boolean;
31
+ href?: undefined;
32
+ target?: undefined;
33
+ });
34
+ export declare type ContactBubbleProps = {
35
+ title?: string;
36
+ links: Array<ContactBubbleItem>;
37
+ /** By default the ContactBubble's toggler is hidden if the page
38
+ * is scrolled to near the top or the bottom.
39
+ *
40
+ * This means that on short pages (with hardly any scrolling)
41
+ * the ContactBubble **always** hidden.
42
+ *
43
+ * Set this prop to `true` if you want to disable this
44
+ * magic and always show the bubble toggler
45
+ */
46
+ alwaysShow?: boolean;
47
+ texts?: ContactBubbleI18n;
48
+ lang?: string;
49
+ ssr?: SSRSupport;
50
+ } & ({
51
+ open?: boolean;
52
+ onToggle: (isOpen: boolean) => void;
53
+ } | {
54
+ open?: undefined;
55
+ onToggle?: (isOpen: boolean) => void;
56
+ });
57
+ declare const ContactBubble: (props: ContactBubbleProps) => JSX.Element | null;
58
+ export default ContactBubble;
@@ -0,0 +1,162 @@
1
+ import React, { useEffect, useMemo, useRef, useState } from 'react';
2
+ import focusElm from '@hugsmidjan/qj/focusElm';
3
+ import { useDomid, useIsBrowserSide } from '@hugsmidjan/react/hooks';
4
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
5
+ import { getPageScrollElm } from '@reykjavik/hanna-utils';
6
+ import { getTexts } from '@reykjavik/hanna-utils/i18n';
7
+ import { Link } from './_abstract/Link';
8
+ export const defaultTexts = {
9
+ is: {
10
+ lang: 'is',
11
+ openBtn: 'Hafa samband',
12
+ closeBtn: 'Loka',
13
+ closeBtnLong: 'Loka valmynd',
14
+ },
15
+ en: {
16
+ lang: 'en',
17
+ openBtn: 'Contact us',
18
+ closeBtn: 'Close',
19
+ closeBtnLong: 'Close bubble',
20
+ },
21
+ };
22
+ // ---------------------------------------------------------------------------
23
+ const icons = {
24
+ suggestions: 1,
25
+ phone: 1,
26
+ faq: 1,
27
+ livechat: 1,
28
+ other: 0,
29
+ };
30
+ export const ensureIcon = (maybeIcon) => maybeIcon && icons[maybeIcon]
31
+ ? maybeIcon
32
+ : undefined;
33
+ const ContactBubble = (props) => {
34
+ const { title, links, onToggle, alwaysShow } = props;
35
+ const txt = getTexts(props, defaultTexts);
36
+ const useLocalState = props.open == null;
37
+ const [localOpen, setLocalOpen] = useState(false);
38
+ const open = useLocalState ? localOpen : props.open;
39
+ const isBrowser = useIsBrowserSide(props.ssr);
40
+ const domid = useDomid();
41
+ const wrapperRef = useRef(null);
42
+ const { openBubble, closeBubble } = useMemo(() => ({
43
+ openBubble: () => {
44
+ useLocalState && setLocalOpen(true);
45
+ onToggle && onToggle(true);
46
+ },
47
+ closeBubble: (setFocus) => {
48
+ useLocalState && setLocalOpen(false);
49
+ onToggle && onToggle(false);
50
+ setFocus !== false && focusElm(wrapperRef.current);
51
+ },
52
+ }), [useLocalState, onToggle]);
53
+ useEffect(() => {
54
+ const wrapperElm = wrapperRef.current;
55
+ if (!wrapperElm) {
56
+ return;
57
+ }
58
+ if (alwaysShow) {
59
+ wrapperElm.dataset.show = 'true';
60
+ return;
61
+ }
62
+ const scrollElm = getPageScrollElm();
63
+ let pending = 0;
64
+ const checkScroll = () => {
65
+ if (!pending) {
66
+ pending = requestAnimationFrame(() => {
67
+ const { scrollTop, scrollHeight, clientHeight } = scrollElm;
68
+ const scrollLength = scrollHeight - clientHeight;
69
+ // const f = scrollLength > 600 ? 1 : (scrollLength - 200) / 600;
70
+ const f = 1;
71
+ const show = scrollTop > f * 150 && scrollLength - scrollTop > f * 250;
72
+ wrapperElm.dataset.show = String(show);
73
+ !show && closeBubble(false);
74
+ pending = 0;
75
+ });
76
+ }
77
+ };
78
+ checkScroll();
79
+ // Set scroll-listeners on both the ´document` and the `scrollElm`
80
+ // because mobile browsers seem to handle CSS height and overflow
81
+ // rules on <html> and <body> differently from desktop browsers.
82
+ // Only one of these two handlers seems to trigger though,
83
+ // (as Element scroll events don't bubble)
84
+ // and even if they did, the rAF throttling prevents that from
85
+ // becoming a problem.
86
+ document.addEventListener('scroll', checkScroll);
87
+ scrollElm.addEventListener('scroll', checkScroll);
88
+ return () => {
89
+ document.removeEventListener('scroll', checkScroll);
90
+ scrollElm.removeEventListener('scroll', checkScroll);
91
+ };
92
+ }, [isBrowser, alwaysShow, closeBubble]);
93
+ useEffect(() => {
94
+ const escHandler = (e) => e.key === 'Escape' && closeBubble();
95
+ const outsideClickHandler = (e) => {
96
+ var _a;
97
+ if (open && !((_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target))) {
98
+ closeBubble(false);
99
+ }
100
+ };
101
+ document.addEventListener('keydown', escHandler);
102
+ document.addEventListener('click', outsideClickHandler, true);
103
+ const htmlDataset = document.documentElement.dataset;
104
+ if (open) {
105
+ htmlDataset.contactBubble = 'true';
106
+ }
107
+ else {
108
+ delete htmlDataset.contactBubble;
109
+ }
110
+ return () => {
111
+ delete htmlDataset.contactBubble;
112
+ document.removeEventListener('keydown', escHandler);
113
+ document.removeEventListener('click', outsideClickHandler, true);
114
+ };
115
+ }, [open, closeBubble]);
116
+ if (links.length === 0) {
117
+ return null;
118
+ }
119
+ const menu = (<div className="ContactBubble" id={isBrowser && domid} hidden={isBrowser && !open} data-always-show={alwaysShow || undefined} data-sprinkled={isBrowser}>
120
+ <h2 className="ContactBubble__title">{title || txt.openBtn}</h2>
121
+ <ul className="ContactBubble__list">
122
+ {links.map((linkInfo, i) => {
123
+ const { href, label, extraLabel, target, onClick } = linkInfo;
124
+ const icon = ensureIcon(linkInfo.icon);
125
+ const itemClass = getBemClass('ContactBubble__item', icon && 'type--' + icon);
126
+ const onClickHandler = onClick &&
127
+ ((e) => {
128
+ if (!onClick()) {
129
+ e.preventDefault();
130
+ closeBubble(false);
131
+ }
132
+ });
133
+ const content = [
134
+ ' ',
135
+ label,
136
+ '\n',
137
+ extraLabel && <small key="🤡">{extraLabel}</small>,
138
+ '\n',
139
+ ];
140
+ return (<li key={i} className={itemClass}>
141
+ {href && href !== '#' ? (<Link className="ContactBubble__link" href={href} onClick={onClickHandler} target={target}>
142
+ {content}
143
+ </Link>) : (<button className="ContactBubble__link" onClick={onClickHandler} type="button">
144
+ {content}
145
+ </button>)}
146
+ </li>);
147
+ })}
148
+ </ul>
149
+ {'\n\n'}
150
+ {isBrowser && (<button className="ContactBubble__closebtn" aria-controls={domid} aria-label={txt.closeBtnLong} onClick={() => closeBubble()} type="button">
151
+ {txt.closeBtn}
152
+ </button>)}
153
+ </div>);
154
+ return isBrowser ? (<div className="ContactBubble__wrapper" ref={wrapperRef}>
155
+ <button className="ContactBubble__openbtn" aria-controls={domid} aria-expanded={open} aria-label={txt.openBtnLong} onClick={open ? () => closeBubble() : openBubble} type="button">
156
+ {txt.openBtn}
157
+ </button>
158
+ {'\n\n'}
159
+ {menu}
160
+ </div>) : (menu);
161
+ };
162
+ export default ContactBubble;
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ import { SeenProp } from './utils/seenEffect';
3
+ import { ArticleMetaProps } from './ArticleMeta';
4
+ import { ContentImageProps } from './ContentImage';
5
+ import { RelatedLinksProps } from './RelatedLinks';
6
+ export declare type ContentArticleProps = {
7
+ /** Date, author, etc. */
8
+ meta: ArticleMetaProps['items'];
9
+ headline: string;
10
+ topImage?: ContentImageProps;
11
+ body: ReactNode;
12
+ relatedLinks?: RelatedLinksProps;
13
+ } & SeenProp;
14
+ declare const ContentArticle: (props: ContentArticleProps) => JSX.Element;
15
+ export default ContentArticle;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { useSeenEffect } from './utils/seenEffect';
3
+ import ArticleMeta from './ArticleMeta';
4
+ import ContentImage from './ContentImage';
5
+ import Heading from './Heading';
6
+ import RelatedLinks from './RelatedLinks';
7
+ import TextBlock from './TextBlock';
8
+ import VSpacer from './VSpacer';
9
+ const ContentArticle = (props) => {
10
+ const [ref] = useSeenEffect(props.startSeen);
11
+ return (<div className="ContentArticle" ref={ref}>
12
+ <ArticleMeta items={props.meta}/>
13
+ <Heading>{props.headline}</Heading>
14
+ <TextBlock startSeen>
15
+ {props.topImage && <ContentImage {...props.topImage}/>}
16
+ {props.body}
17
+ </TextBlock>
18
+ <VSpacer size="small">
19
+ <hr />
20
+ </VSpacer>
21
+ {props.relatedLinks && <RelatedLinks {...props.relatedLinks}/>}
22
+ </div>);
23
+ };
24
+ export default ContentArticle;
@@ -0,0 +1,8 @@
1
+ import { ImageProps } from './_abstract/Image';
2
+ export declare type ContentImageProps = {
3
+ image?: ImageProps;
4
+ caption?: string | JSX.Element;
5
+ credit?: string | JSX.Element;
6
+ };
7
+ declare const ContentImage: (props: ContentImageProps) => JSX.Element;
8
+ export default ContentImage;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import Image from './_abstract/Image';
3
+ const ContentImage = (props) => {
4
+ const { image, caption, credit } = props;
5
+ return (<figure className="ContentImage">
6
+ {(caption || credit) && (<figcaption className="ContentImage__caption">
7
+ {caption && <span className="ContentImage__text"> {caption} </span>}{' '}
8
+ {credit && <small className="ContentImage__credit"> {credit} </small>}
9
+ </figcaption>)}
10
+ <Image className="ContentImage__image" {...image}/>
11
+ </figure>);
12
+ };
13
+ export default ContentImage;
@@ -0,0 +1,39 @@
1
+ import { RefObject } from 'react';
2
+ import { FormFieldWrappingProps } from './FormField';
3
+ export declare type DatepickerProps = {
4
+ small?: boolean;
5
+ placeholder?: string;
6
+ value?: Date;
7
+ startDate?: Date;
8
+ endDate?: Date;
9
+ minDate?: Date;
10
+ maxDate?: Date;
11
+ localeCode?: 'is' | 'en';
12
+ dateFormat?: string;
13
+ isStartDate?: boolean;
14
+ isEndDate?: boolean;
15
+ inputRef?: RefObject<HTMLInputElement>;
16
+ onChange: (date?: Date) => void;
17
+ datepickerExtraProps?: Record<string, unknown>;
18
+ /** @deprecated use value instead. (Will be removed in v0.11) */
19
+ initialDate?: Date;
20
+ } & FormFieldWrappingProps;
21
+ export declare const getDateDiff: (date: Date, diff: number) => Date;
22
+ export declare type DatepickerLocaleProps = {
23
+ nextMonthAriaLabel: string;
24
+ nextMonthButtonLabel: string;
25
+ nextYearAriaLabel: string;
26
+ nextYearButtonLabel: string;
27
+ previousMonthAriaLabel: string;
28
+ previousMonthButtonLabel: string;
29
+ previousYearAriaLabel: string;
30
+ previousYearButtonLabel: string;
31
+ timeInputLabel: string;
32
+ weekAriaLabelPrefix: string;
33
+ weekLabel: string;
34
+ ariaLabelPrefix: string;
35
+ chooseDayAriaLabelPrefix: string;
36
+ disabledDayAriaLabelPrefix: string;
37
+ };
38
+ declare const Datepicker: (props: DatepickerProps) => JSX.Element;
39
+ export default Datepicker;
@@ -0,0 +1,64 @@
1
+ import React from 'react';
2
+ // Documentation: https://reactdatepicker.com/
3
+ import ReactDatePicker, { registerLocale,
4
+ // setDefaultLocale,
5
+ } from 'react-datepicker';
6
+ import { useDomid } from '@hugsmidjan/react/hooks';
7
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
8
+ // For more info on localization see: https://stackoverflow.com/questions/54399084/change-locale-in-react-datepicker/58306958#58306958
9
+ import is from 'date-fns/locale/is';
10
+ import FormField from './FormField';
11
+ registerLocale('is', is);
12
+ export const getDateDiff = (date, diff) => {
13
+ const newDate = new Date(date);
14
+ newDate.setDate(newDate.getDate() + diff);
15
+ return newDate;
16
+ };
17
+ const i18n = {
18
+ is: {
19
+ nextMonthAriaLabel: 'Næsti mánuður',
20
+ nextMonthButtonLabel: 'Næsti mánuður',
21
+ nextYearAriaLabel: 'Næsta ár',
22
+ nextYearButtonLabel: 'Næsta ár',
23
+ previousMonthAriaLabel: 'Fyrri mánuður',
24
+ previousMonthButtonLabel: 'Fyrri mánuður',
25
+ previousYearAriaLabel: 'Fyrra ár',
26
+ previousYearButtonLabel: 'Fyrra ár',
27
+ timeInputLabel: 'Tími: ',
28
+ weekAriaLabelPrefix: 'Vika: ',
29
+ weekLabel: 'Vika',
30
+ ariaLabelPrefix: 'Mánuður:',
31
+ chooseDayAriaLabelPrefix: 'Veldu:',
32
+ disabledDayAriaLabelPrefix: 'Dagsetning ekki í boði',
33
+ },
34
+ };
35
+ const Datepicker = (props) => {
36
+ const { className, id, label, hideLabel, assistText, disabled, readOnly, invalid, errorMessage, required, reqText, placeholder, small, localeCode, dateFormat = 'd.M.yyy', initialDate, value = initialDate, startDate, endDate, minDate, maxDate, isStartDate = false, isEndDate = false, onChange, datepickerExtraProps, ssr, inputRef, } = props;
37
+ const domid = useDomid(id);
38
+ const txts = (localeCode && i18n[localeCode]) || {};
39
+ const filled = !!value;
40
+ const empty = !filled && !placeholder;
41
+ return (<FormField className={getBemClass('Datepicker', [], className)} ssr={ssr} label={label} small={small} assistText={assistText} hideLabel={hideLabel} invalid={invalid} required={required} reqText={reqText} disabled={disabled} readOnly={readOnly} filled={filled} empty={empty} errorMessage={errorMessage} renderInput={(className, inputProps, addFocusProps) => {
42
+ return (<div className={className.input} ref={inputRef &&
43
+ ((elm) => {
44
+ inputRef.current =
45
+ (elm === null || elm === void 0 ? void 0 : elm.querySelector('input')) || undefined;
46
+ return elm;
47
+ })}>
48
+ <ReactDatePicker id={domid} required={inputProps.required} disabled={inputProps.disabled} readOnly={inputProps.readOnly} selected={value} locale={localeCode} dateFormat={dateFormat} onChange={(date) => {
49
+ onChange(date || undefined);
50
+ const inputElm = inputRef === null || inputRef === void 0 ? void 0 : inputRef.current;
51
+ if (inputElm) {
52
+ inputElm.dispatchEvent(new Event('change', { bubbles: true }));
53
+ }
54
+ }} placeholderText={placeholder}
55
+ // TODO: Implement this
56
+ // selectsRange
57
+ minDate={minDate} maxDate={maxDate} startDate={startDate} endDate={endDate} selectsStart={isStartDate} selectsEnd={isEndDate} formatWeekDay={(weekday) => {
58
+ // TODO: if we use costom locale we don't need this
59
+ return weekday.charAt(0).toUpperCase();
60
+ }} showYearDropdown scrollableYearDropdown yearDropdownItemNumber={15} showMonthDropdown {...inputProps} {...txts} {...addFocusProps(datepickerExtraProps)}/>
61
+ </div>);
62
+ }}/>);
63
+ };
64
+ export default Datepicker;
@@ -0,0 +1,18 @@
1
+ import { TextCardListProps } from './_abstract/CardList';
2
+ import { SeenProp } from './utils/seenEffect';
3
+ export declare type RelatedLink = {
4
+ href: string;
5
+ label: string;
6
+ blank?: boolean;
7
+ type?: 'link' | 'pdf' | 'text';
8
+ };
9
+ declare type RelatedProps = {
10
+ relatedTitle?: string;
11
+ relatedLinks?: Array<RelatedLink>;
12
+ };
13
+ export declare type ExtraLinksCardProps = TextCardListProps['cards'][number];
14
+ export declare type ExtraLinksProps = TextCardListProps & RelatedProps & {
15
+ className?: string;
16
+ } & SeenProp;
17
+ declare const ExtraLinks: (props: ExtraLinksProps) => JSX.Element;
18
+ export default ExtraLinks;
@@ -0,0 +1,42 @@
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 { Link } from './_abstract/Link';
16
+ import { useSeenEffect } from './utils/seenEffect';
17
+ const ExtraLinks__related = (props) => {
18
+ const { relatedTitle, relatedLinks } = props;
19
+ return (<div className="ExtraLinks__related">
20
+ {relatedTitle && <h3 className="ExtraLinks__related__title">{relatedTitle}</h3>}
21
+ <ul className="ExtraLinks__related__list">
22
+ {relatedLinks &&
23
+ relatedLinks.map(({ href, label, blank = false, type }, i) => (<li className="ExtraLinks__related__item" key={i}>
24
+ <Link className={getBemClass('ExtraLinks__related__link', type)} href={href} target={blank ? '_blank' : ''} rel={blank ? 'noreferrer noopener' : ''}>
25
+ {label}
26
+ </Link>
27
+ </li>))}
28
+ </ul>
29
+ </div>);
30
+ };
31
+ const ExtraLinks = (props) => {
32
+ const { relatedTitle, relatedLinks, className, startSeen } = props, cardListProps = __rest(props, ["relatedTitle", "relatedLinks", "className", "startSeen"]);
33
+ const hasRelated = !!(relatedLinks && relatedLinks.length);
34
+ const [ref] = useSeenEffect(startSeen);
35
+ return (<div className={getBemClass('ExtraLinks', hasRelated && 'related', className)} ref={ref}>
36
+ <div className="ExtraLinks__main">
37
+ <CardList {...cardListProps} bemPrefix="ExtraLinks"/>
38
+ </div>
39
+ {hasRelated && (<ExtraLinks__related relatedTitle={relatedTitle} relatedLinks={relatedLinks}/>)}
40
+ </div>);
41
+ };
42
+ export default ExtraLinks;
@@ -0,0 +1,12 @@
1
+ import { Efnistakn } from '@reykjavik/hanna-utils/assets';
2
+ import { SeenProp } from './utils/seenEffect';
3
+ export declare type FeatureListProps = {
4
+ title: string;
5
+ features: Array<{
6
+ icon?: Efnistakn;
7
+ iconUrl?: string;
8
+ name: string;
9
+ }>;
10
+ } & SeenProp;
11
+ declare const FeatureList: (props: FeatureListProps) => JSX.Element;
12
+ export default FeatureList;
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import { useSeenEffect } from './utils/seenEffect';
3
+ import Bling from './Bling';
4
+ const FeatureList = (props) => {
5
+ const { title, features, startSeen } = props;
6
+ const [ref] = useSeenEffect(startSeen);
7
+ const _features = features.length ? features : [{ name: '...' }];
8
+ return (<>
9
+ <Bling type="snake-large" align="left" vertical="down-ish"/>
10
+
11
+ <div className="FeatureList" ref={ref}>
12
+ <h2 className="FeatureList__title">{title}</h2>
13
+ <ul className="FeatureList__list">
14
+ {_features.map(({ name, icon, iconUrl }, i) => (<li key={i} className="FeatureList__feature" style={iconUrl
15
+ ? { '--efnistakn': `url("${iconUrl}")` }
16
+ : undefined} data-efnistakn={!iconUrl ? icon : undefined}>
17
+ {name}
18
+ </li>))}
19
+ </ul>
20
+ </div>
21
+ </>);
22
+ };
23
+ export default FeatureList;
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+ export declare type FieldGroupProps = {
3
+ legend: string;
4
+ disabled?: boolean;
5
+ className?: string;
6
+ children: ReactNode;
7
+ };
8
+ declare const FieldGroup: (props: FieldGroupProps) => JSX.Element;
9
+ export default FieldGroup;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
3
+ const FieldGroup = (props) => {
4
+ const { legend, children, className, disabled } = props;
5
+ return (<fieldset className={getBemClass('FieldGroup', null, className)} role="group" disabled={disabled}>
6
+ <legend className="FieldGroup__legend">{legend}</legend>
7
+ {children}
8
+ </fieldset>);
9
+ };
10
+ export default FieldGroup;