@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,11 @@
1
+ import { TogglerGroupFieldOptions, TogglerGroupFieldProps } from './_abstract/TogglerGroupField';
2
+ export declare type RadioButtonsGroupProps = TogglerGroupFieldProps & {
3
+ value?: 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 RadioButtonsGroupOptions = TogglerGroupFieldOptions;
10
+ declare const RadioButtonsGroup: (props: RadioButtonsGroupProps) => JSX.Element;
11
+ export default RadioButtonsGroup;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import TogglerGroupField from './_abstract/TogglerGroupField';
3
+ import TogglerInput from './_abstract/TogglerInput';
4
+ const RadioButton = (props) => (<TogglerInput {...props} bem="RadioButton" type="radio"/>);
5
+ const RadioButtonsGroup = (props) => {
6
+ if (props.layout) {
7
+ console.warn('`RadioButtonsGroupProps.layout` is deprecated.');
8
+ }
9
+ if (props.columns) {
10
+ console.warn('`RadioButtonsGroupProps.columns` is deprecated.');
11
+ }
12
+ return <TogglerGroupField {...props} bem="RadioButtonsGroup" Toggler={RadioButton}/>;
13
+ };
14
+ export default RadioButtonsGroup;
@@ -0,0 +1,13 @@
1
+ import { TogglerGroupFieldOption, TogglerGroupFieldOptions, TogglerGroupFieldProps } from './_abstract/TogglerGroupField';
2
+ import { TogglerInputProps } from './_abstract/TogglerInput';
3
+ export declare type RadioGroupProps = TogglerGroupFieldProps & {
4
+ layout?: 'inline';
5
+ value?: string;
6
+ };
7
+ export declare type RadioGroupOption = TogglerGroupFieldOption;
8
+ export declare type RadioGroupOptions = TogglerGroupFieldOptions;
9
+ declare const RadioGroup: {
10
+ (props: RadioGroupProps): JSX.Element;
11
+ __Radio: (props: TogglerInputProps) => JSX.Element;
12
+ };
13
+ export default RadioGroup;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import TogglerGroupField from './_abstract/TogglerGroupField';
3
+ import TogglerInput from './_abstract/TogglerInput';
4
+ const Radio = (props) => (<TogglerInput {...props} bem="Radio" type="radio"/>);
5
+ const RadioGroup = (props) => (<TogglerGroupField {...props} bem="RadioGroup" modifier={props.layout} Toggler={Radio}/>);
6
+ RadioGroup.__Radio = Radio;
7
+ export default RadioGroup;
@@ -0,0 +1,20 @@
1
+ declare const types: {
2
+ readonly external: 1;
3
+ readonly document: 1;
4
+ readonly pdf: 1;
5
+ readonly link: 0;
6
+ };
7
+ export declare type RelatedLinkType = keyof typeof types;
8
+ export declare type RelatedLinkItem = {
9
+ href: string;
10
+ label: string;
11
+ target?: string;
12
+ type?: RelatedLinkType;
13
+ };
14
+ export declare type RelatedLinksProps = {
15
+ title?: string;
16
+ titleTag?: 'h2' | 'h3' | 'h4' | 'h5';
17
+ links: Array<RelatedLinkItem>;
18
+ };
19
+ declare const RelatedLinks: (props: RelatedLinksProps) => JSX.Element | null;
20
+ export default RelatedLinks;
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import { Link } from './_abstract/Link';
3
+ const types = {
4
+ external: 1,
5
+ document: 1,
6
+ pdf: 1,
7
+ link: 0,
8
+ };
9
+ const RelatedLinks = (props) => {
10
+ const { title, links } = props;
11
+ if (links.length === 0) {
12
+ return null;
13
+ }
14
+ const TitleTag = props.titleTag || 'h3';
15
+ return (<div className="RelatedLinks">
16
+ {title && <TitleTag className="RelatedLinks__title">{title}</TitleTag>}
17
+ <ul className="RelatedLinks__list">
18
+ {links.map(({ href, label, type, target }, i) => {
19
+ type = type && types[type] ? type : undefined;
20
+ return (<li key={i} className="RelatedLinks__item">
21
+ <Link className="RelatedLinks__link" href={href} data-type={type} target={target}>
22
+ {' '}
23
+ {label}{' '}
24
+ </Link>
25
+ </li>);
26
+ })}
27
+ </ul>
28
+ </div>);
29
+ };
30
+ export default RelatedLinks;
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from 'react';
2
+ import { BemPropsModifier } from '@hugsmidjan/react/types';
3
+ import { SeenProp } from './utils/seenEffect';
4
+ export declare type RowBlockProps = {
5
+ /** Float the first RowBlockColumn to the right on larger screens. */
6
+ right?: boolean;
7
+ /** Custom **additional** class-name */
8
+ className?: string;
9
+ children: ReactNode;
10
+ } & BemPropsModifier & SeenProp;
11
+ declare const RowBlock: (props: RowBlockProps) => JSX.Element;
12
+ export default RowBlock;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
3
+ import { useSeenEffect } from './utils/seenEffect';
4
+ const RowBlock = (props) => {
5
+ const { right, modifier, className, children, startSeen } = props;
6
+ const [ref] = useSeenEffect(startSeen);
7
+ return (<div className={getBemClass('RowBlock', [modifier, right && 'align--right'], className)} ref={ref}>
8
+ {children}
9
+ </div>);
10
+ };
11
+ export default RowBlock;
@@ -0,0 +1,8 @@
1
+ import { ReactNode } from 'react';
2
+ export declare type RowBlockColumnProps = {
3
+ background?: boolean | 'primary';
4
+ narrow?: boolean;
5
+ children: ReactNode;
6
+ };
7
+ declare const RowBlockColumn: (props: RowBlockColumnProps) => JSX.Element;
8
+ export default RowBlockColumn;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
3
+ const RowBlockColumn = (props) => {
4
+ const { background, narrow, children } = props;
5
+ return (<div className={getBemClass('RowBlockColumn', [
6
+ narrow && 'narrow',
7
+ background && 'background',
8
+ background === 'primary' && 'background--primary',
9
+ ])}>
10
+ {children}
11
+ </div>);
12
+ };
13
+ export default RowBlockColumn;
@@ -0,0 +1,18 @@
1
+ import { RefObject } from 'react';
2
+ import { FormFieldWrappingProps } from './FormField';
3
+ declare type InputElmProps = JSX.IntrinsicElements['input'];
4
+ declare type BaseProps<Type extends {
5
+ type?: string;
6
+ }, InputProps extends object> = {
7
+ small?: boolean;
8
+ children?: undefined;
9
+ onButtonClick?: () => void;
10
+ buttonText?: string;
11
+ inputRef?: RefObject<HTMLInputElement>;
12
+ buttonRef?: RefObject<HTMLButtonElement>;
13
+ } & Type & FormFieldWrappingProps & InputProps;
14
+ export declare type SearchInputProps = BaseProps<{
15
+ type?: 'text';
16
+ }, InputElmProps>;
17
+ declare const SearchInput: (props: SearchInputProps) => JSX.Element;
18
+ export default SearchInput;
@@ -0,0 +1,35 @@
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, { useState } from 'react';
13
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
14
+ import FormField from './FormField';
15
+ const SearchInput = (props) => {
16
+ var _a;
17
+ const { className, label, assistText, hideLabel, disabled, readOnly, invalid, errorMessage, required, reqText, id, onChange, small, onButtonClick, buttonText = 'Leita', ssr } = props, inputElementProps = __rest(props, ["className", "label", "assistText", "hideLabel", "disabled", "readOnly", "invalid", "errorMessage", "required", "reqText", "id", "onChange", "small", "onButtonClick", "buttonText", "ssr"]);
18
+ const { value, defaultValue, placeholder } = inputElementProps;
19
+ const [hasValue, setHasValue] = useState(undefined);
20
+ const filled = !!((_a = value !== null && value !== void 0 ? value : hasValue) !== null && _a !== void 0 ? _a : !!defaultValue);
21
+ const empty = !filled && !placeholder;
22
+ const _onChange = value != null
23
+ ? onChange
24
+ : (e) => {
25
+ setHasValue(!!e.target.value);
26
+ onChange && onChange(e);
27
+ };
28
+ return (<FormField className={getBemClass('SearchInput', [], className)} ssr={ssr} small={small} label={label} empty={empty} filled={filled} assistText={assistText} hideLabel={hideLabel} disabled={disabled} readOnly={readOnly} invalid={invalid} errorMessage={errorMessage} required={required} reqText={reqText} id={id} renderInput={(className, inputProps, addFocusProps) => (<div className={className.input} {...addFocusProps()}>
29
+ <input className="SearchInput__input" onChange={_onChange} {...inputProps} {...inputElementProps} ref={props.inputRef}/>{' '}
30
+ {onButtonClick && (<button className="SearchInput__button" type="button" onClick={onButtonClick} title={buttonText} ref={props.buttonRef}>
31
+ {buttonText}
32
+ </button>)}
33
+ </div>)}/>);
34
+ };
35
+ export default SearchInput;
@@ -0,0 +1,18 @@
1
+ declare type MetaValue = string | (() => JSX.Element | string | number);
2
+ export declare type SearchResultsItemProps = {
3
+ /** Plain text title */
4
+ title: string;
5
+ /** Simple HTML-encoded summary (excluding any layout) */
6
+ summary: string;
7
+ href: string;
8
+ meta?: MetaValue | ReadonlyArray<MetaValue>;
9
+ /**
10
+ * URL to the image to display with the result item.
11
+ * Should ideally be approximately 600-700px wide
12
+ */
13
+ image?: string;
14
+ /** Should this search-result item be displayed as a "major"/"main" result at the top */
15
+ highlight?: boolean;
16
+ };
17
+ declare const SearchResultsItem: (props: SearchResultsItemProps) => JSX.Element;
18
+ export default SearchResultsItem;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import Image from '../_abstract/Image';
3
+ import { Link } from '../_abstract/Link';
4
+ const SearchResultsItem = (props) => {
5
+ const { highlight, title, summary, href, meta, image } = props;
6
+ const bem = highlight ? 'SearchResultsHighlightItem' : 'SearchResultsItem';
7
+ const metaArr = (Array.isArray(meta) ? meta : [meta]);
8
+ return (<li className={bem}>
9
+ <Link className={bem + '__link'} href={href}>
10
+ <h3 className={bem + '__title'}>{title}</h3>
11
+ {metaArr.length > 0 && (<span className={bem + '__meta'}>
12
+ {metaArr.map((item, i) => typeof item === 'function' ? item() : item && <span key={i}>{item}</span>)}
13
+ </span>)}
14
+ {highlight && image && <Image className={bem + '__image'} src={image}/>}
15
+ <div className={bem + '__summary'} dangerouslySetInnerHTML={{ __html: summary }}/>
16
+ </Link>
17
+ </li>);
18
+ };
19
+ export default SearchResultsItem;
@@ -0,0 +1,33 @@
1
+ import { ReactNode } from 'react';
2
+ import { SearchResultsItemProps } from './SearchResults/_SearchResultsItem';
3
+ export declare type SearchReesultI18n = {
4
+ lang: string;
5
+ loadQueryTitle: string;
6
+ resultsTitle: string;
7
+ noResultsTitle: string;
8
+ loadMore: string;
9
+ };
10
+ export declare type SearchStatus = 'loadingquery' | 'loadingfilter' | 'error' | 'results' | 'loadingmore';
11
+ export declare type SearchResultsFilter = {
12
+ label: string;
13
+ count?: number;
14
+ };
15
+ export type { SearchResultsItemProps } from './SearchResults/_SearchResultsItem';
16
+ export declare type SearchResultsProps = {
17
+ totalHits?: number;
18
+ hits?: number;
19
+ query?: string;
20
+ items?: Array<SearchResultsItemProps>;
21
+ filters?: Array<SearchResultsFilter>;
22
+ activeFilterIdx?: number;
23
+ setFilter?: (activeTab: number) => void;
24
+ status: SearchStatus;
25
+ errorText?: string | ReactNode;
26
+ pageSize: number;
27
+ pages?: number;
28
+ loadMore?: () => void;
29
+ texts?: SearchReesultI18n;
30
+ lang?: string;
31
+ };
32
+ declare const SearchResults: (props: SearchResultsProps) => JSX.Element;
33
+ export default SearchResults;
@@ -0,0 +1,118 @@
1
+ import React, { useEffect, useMemo, useRef } from 'react';
2
+ import { useInView } from 'react-intersection-observer';
3
+ import { prettyNum } from '@hugsmidjan/qj/prettyNum';
4
+ import range from '@hugsmidjan/qj/range';
5
+ import { useDomid } from '@hugsmidjan/react/hooks';
6
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
7
+ import { DEFAULT_LANG, getTexts } from '@reykjavik/hanna-utils/i18n';
8
+ import SearchResultsItem from './SearchResults/_SearchResultsItem';
9
+ import Alert from './Alert';
10
+ import Tabs from './Tabs';
11
+ const renderDefaultErrorText = () => (<>
12
+ Úps, það hefur komið upp villa. Má bjóða þér að prófa aftur að leita?
13
+ <br />
14
+ Ef ekkert lát er á villunni þá kunnum við að meta að þú látir okkur vita.
15
+ </>);
16
+ const defaultTexts = {
17
+ en: {
18
+ lang: 'en',
19
+ loadQueryTitle: 'Loading results...',
20
+ resultsTitle: 'results found for',
21
+ noResultsTitle: 'No results were found for',
22
+ loadMore: 'Load more',
23
+ // loadingMore: 'Loading...',
24
+ },
25
+ is: {
26
+ lang: 'is',
27
+ loadQueryTitle: 'Sæki niðurstöður...',
28
+ resultsTitle: 'leitarniðurstöður fyrir',
29
+ noResultsTitle: 'Engar leitarniðurstöður fundust fyrir',
30
+ loadMore: 'Sækja fleiri',
31
+ // loadingMore: 'Sæki fleiri...',
32
+ },
33
+ };
34
+ const SearchResults_Tabs = (props) => {
35
+ const { domid, filters, activeIdx, setFilter, lang } = props;
36
+ const tabs = useMemo(() => (filters || []).map(({ label, count }) => ({
37
+ label,
38
+ badge: prettyNum(count, { lang }),
39
+ })), [filters, lang]);
40
+ return tabs.length ? (<Tabs role="tablist" aria-controls={domid} tabs={tabs} activeIdx={activeIdx || 0} onSetActive={(i) => setFilter && setFilter(i)}/>) : null;
41
+ };
42
+ const LoadingScaffold = (props) => props.count ? (<ol className="SearchResults__list SearchResults__list--loading">
43
+ {range(1, props.count).map((item, i) => (<SearchResultsItem key={i} title="..." summary="" href=""/>))}
44
+ </ol>) : null;
45
+ // ===========================================================================
46
+ const NUM_AUTOLOADS = 2;
47
+ const SearchResults__loadmore = (props) => {
48
+ const { status, hits, numItems, loadMore, pageSize, texts } = props;
49
+ const { lang } = texts;
50
+ const moreCount = (hits || 0) - (numItems || 0);
51
+ const autoLoadCount = useRef(0);
52
+ const skip = !loadMore || autoLoadCount.current >= NUM_AUTOLOADS;
53
+ const [refFn, theEndIsNigh] = useInView({
54
+ rootMargin: '150px 0px 0px 0px',
55
+ skip, // disable after two clicks
56
+ });
57
+ useEffect(() => {
58
+ if (theEndIsNigh && loadMore) {
59
+ autoLoadCount.current = autoLoadCount.current + 1;
60
+ loadMore();
61
+ }
62
+ }, [theEndIsNigh, loadMore]);
63
+ const moreAvailable = status === 'results' && moreCount && loadMore;
64
+ return status === 'loadingmore' ? (<LoadingScaffold count={Math.min(pageSize, moreCount)}/>) : moreAvailable ? (<button ref={refFn} className="SearchResults__loadmore" type="button" onClick={loadMore}>
65
+ {texts.loadMore}{' '}
66
+ <span className="SearchResults__loadmore__count">
67
+ ({prettyNum(moreCount, { lang })})
68
+ </span>
69
+ </button>) : null;
70
+ };
71
+ // ===========================================================================
72
+ const renderTitle = (props, texts) => {
73
+ const { status, totalHits, query } = props;
74
+ const lang = texts.lang || props.lang || DEFAULT_LANG;
75
+ return (<h2 className="SearchResults__title">
76
+ {status === 'loadingquery'
77
+ ? texts.loadQueryTitle
78
+ : totalHits
79
+ ? prettyNum(totalHits, { lang: lang }) +
80
+ ' ' +
81
+ texts.resultsTitle
82
+ : texts.noResultsTitle}
83
+ <span className="SearchResults__query">{query}</span>
84
+ </h2>);
85
+ };
86
+ // ---------------------------------------------------------------------------
87
+ const renderResults = (props) => {
88
+ const { status, pageSize, items, hits } = props;
89
+ if (status === 'loadingquery' || status === 'loadingfilter') {
90
+ return <LoadingScaffold count={Math.min(pageSize, hits || 999)}/>;
91
+ }
92
+ return items && items.length ? (<ol className="SearchResults__list">
93
+ {items.map((item, i) => (<SearchResultsItem key={i} {...item}/>))}
94
+ </ol>) : null;
95
+ };
96
+ // ---------------------------------------------------------------------------
97
+ const renderLoadMore = (props, texts) => {
98
+ const { hits, items, status, pageSize, loadMore } = props;
99
+ return (<SearchResults__loadmore hits={hits} numItems={items && items.length} status={status} pageSize={pageSize} loadMore={loadMore} texts={texts}/>);
100
+ };
101
+ // TODO: add plural translation thingy for result string
102
+ const SearchResults = (props) => {
103
+ const { filters, activeFilterIdx, setFilter, status, errorText } = props;
104
+ const texts = getTexts(props, defaultTexts);
105
+ const domid = useDomid();
106
+ return (<div className={getBemClass('SearchResults', status !== 'results' && status)}>
107
+ {renderTitle(props, texts)}
108
+
109
+ <SearchResults_Tabs domid={domid} filters={filters} activeIdx={activeFilterIdx} setFilter={setFilter} lang={texts.lang}/>
110
+
111
+ <div className="SearchResults__results" id={domid}>
112
+ {renderResults(props)}
113
+ {status === 'error' && (<Alert type="error">{errorText || renderDefaultErrorText()}</Alert>)}
114
+ {renderLoadMore(props, texts)}
115
+ </div>
116
+ </div>);
117
+ };
118
+ export default SearchResults;
@@ -0,0 +1,4 @@
1
+ import { EffectProp, SeenProp } from './utils/seenEffect';
2
+ export declare type SeenEffectProps = Omit<JSX.IntrinsicElements['div'], 'ref'> & SeenProp & EffectProp;
3
+ declare const SeenEffect: (props: SeenEffectProps) => JSX.Element;
4
+ export default SeenEffect;
@@ -0,0 +1,19 @@
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 { getEffectAttr, useSeenEffect } from './utils/seenEffect';
14
+ const SeenEffect = (props) => {
15
+ const { effectType, startSeen } = props, divProps = __rest(props, ["effectType", "startSeen"]);
16
+ const [ref] = useSeenEffect(startSeen);
17
+ return <div {...divProps} ref={ref} {...getEffectAttr(effectType)}/>;
18
+ };
19
+ export default SeenEffect;
@@ -0,0 +1,8 @@
1
+ import { SelectboxProps as _SelectboxProps } from '@hugsmidjan/react/Selectbox';
2
+ import { FormFieldWrappingProps } from './FormField';
3
+ export declare type SelectboxProps = FormFieldWrappingProps & Omit<_SelectboxProps, 'bem'> & {
4
+ small?: boolean;
5
+ };
6
+ export type { SelectboxOptions } from '@hugsmidjan/react/Selectbox';
7
+ declare const Selectbox: (props: SelectboxProps) => JSX.Element;
8
+ export default Selectbox;
@@ -0,0 +1,46 @@
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, { useEffect, useRef, useState } from 'react';
13
+ import _Selectbox from '@hugsmidjan/react/Selectbox';
14
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
15
+ import FormField from './FormField';
16
+ const getValue = (opt) => {
17
+ const val = typeof opt === 'object' ? opt.value : opt;
18
+ return typeof val === 'number' ? String(val) : val;
19
+ };
20
+ const Selectbox = (props) => {
21
+ var _a;
22
+ const { className, label, assistText, hideLabel, disabled, readOnly, reqText, invalid, errorMessage, required, id, ssr, onChange, small } = props, selectProps = __rest(props, ["className", "label", "assistText", "hideLabel", "disabled", "readOnly", "reqText", "invalid", "errorMessage", "required", "id", "ssr", "onChange", "small"]);
23
+ const { value, defaultValue, placeholder, options } = selectProps;
24
+ const _selectRef = useRef(null);
25
+ const selectRef = selectProps.selectRef || _selectRef;
26
+ const getInitialValue = () => { var _a; return (_a = value !== null && value !== void 0 ? value : defaultValue) !== null && _a !== void 0 ? _a : getValue(options[0]); };
27
+ const [isFilled, setIsFilled] = useState(() => !!getInitialValue());
28
+ const [isEmpty, setIsEmpty] = useState(() => !getInitialValue() && !placeholder);
29
+ useEffect(() => {
30
+ var _a;
31
+ const selectElm = selectRef.current;
32
+ if (selectElm) {
33
+ setIsFilled(!!selectElm.value);
34
+ setIsEmpty(!((_a = selectElm.selectedOptions[0]) === null || _a === void 0 ? void 0 : _a.text));
35
+ }
36
+ }, [(_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.value]);
37
+ const _onChange = (e) => {
38
+ var _a;
39
+ const selectElm = e.currentTarget;
40
+ setIsFilled(!!selectElm.value);
41
+ setIsEmpty(!((_a = selectElm.selectedOptions[0]) === null || _a === void 0 ? void 0 : _a.text));
42
+ onChange && onChange(e);
43
+ };
44
+ return (<FormField className={getBemClass('Selectbox', null, className)} ssr={ssr} small={small} label={label} empty={isEmpty} filled={isFilled} assistText={assistText} hideLabel={hideLabel} disabled={disabled} readOnly={readOnly} invalid={invalid} errorMessage={errorMessage} required={required} reqText={reqText} id={id} renderInput={(className, inputProps, addFocusProps) => (<_Selectbox bem={className.input} ssr={ssr} onChange={_onChange} {...inputProps} {...addFocusProps(selectProps)} selectRef={selectRef}/>)}/>);
45
+ };
46
+ export default Selectbox;
@@ -0,0 +1,9 @@
1
+ import { SSRSupport } from '@hugsmidjan/react/hooks';
2
+ import { ShareButtonI18n, ShareButtonPlatforms } from '@reykjavik/hanna-utils/shareButtonsUtils';
3
+ export declare type ShareButtonsProps = {
4
+ ssr?: SSRSupport;
5
+ children?: undefined;
6
+ texts?: Readonly<ShareButtonI18n>;
7
+ } & Partial<Record<ShareButtonPlatforms, boolean>>;
8
+ declare const ShareButtons: (props: ShareButtonsProps) => JSX.Element | null;
9
+ export default ShareButtons;
@@ -0,0 +1,57 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { getDocMeta, getShareButtonLabel, i18n, openInPopup, shareButtonTypes, } from '@reykjavik/hanna-utils/shareButtonsUtils';
3
+ import { Link } from './_abstract/Link';
4
+ const generateTypeList = (facebook, twitter, linkedin, email) => {
5
+ const listStr = ((facebook ? 'facebook,' : '') +
6
+ (twitter ? 'twitter,' : '') +
7
+ (linkedin ? 'linkedin,' : '') +
8
+ (email ? 'email,' : '')).slice(0, -1);
9
+ return (listStr !== 'facebook,twitter' && listStr) || undefined;
10
+ };
11
+ // FIXME: see other FIXME below for details
12
+ // TODO: Also figure out if/why the truthyness of document.location would be in doubt here
13
+ const docLoc = typeof document !== 'undefined' ? document.location : { href: undefined };
14
+ const ShareButtons__item = (props) => {
15
+ const { label, type, href } = props;
16
+ const buttonText = getShareButtonLabel(type, label);
17
+ const popup = type !== 'email';
18
+ return (<li className="ShareButtons__item">
19
+ <Link className={'ShareButtons__link ShareButtons__link--' + type} href={href} title={buttonText} rel="noopener noreferrer" target={popup ? '_blank' : undefined} onClick={popup ? openInPopup : undefined}>
20
+ {buttonText}
21
+ </Link>
22
+ </li>);
23
+ };
24
+ const ShareButtons = (props) => {
25
+ const { texts, ssr, facebook = true, twitter = true, linkedin, email, } = props;
26
+ const [docMeta, setDocMeta] = useState();
27
+ const href = docLoc.href; // assign to local variable to silence `react-hooks/exhaustive-deps`
28
+ useEffect(() => {
29
+ // FIXME: Drop dependency on _loc.href and set up proper
30
+ // location/route monitoring event handler, with unsubscribe on unmount
31
+ const { emailSubject } = texts || {};
32
+ setDocMeta(getDocMeta({ emailSubject }));
33
+ }, [texts, href]);
34
+ if (!facebook && !twitter && !linkedin && !email) {
35
+ // no place to share
36
+ return null;
37
+ }
38
+ const txt = texts || (docMeta && i18n[docMeta.lang]) || {};
39
+ const { label, buttonLabel } = txt;
40
+ if (!docMeta || ssr === 'ssr-only') {
41
+ // Generate SSR markup for hanna-sprinkles to pick up on.
42
+ return (<div className="ShareButtons" data-button-types={generateTypeList(facebook, twitter, linkedin, email)} data-label={label} data-buttonlabel={buttonLabel} data-emailsubject={txt.emailSubject || undefined}/>);
43
+ }
44
+ const showTypes = {
45
+ facebook,
46
+ twitter,
47
+ linkedin,
48
+ email,
49
+ };
50
+ return (<div className="ShareButtons" aria-label={label} data-sprinkled="true">
51
+ {label && <strong className="ShareButtons__label">{label}</strong>}
52
+ <ul className="ShareButtons__list">
53
+ {shareButtonTypes.map((type) => showTypes[type] && (<ShareButtons__item key={type} type={type} label={buttonLabel || ''} href={docMeta.hrefs[type]}/>))}
54
+ </ul>
55
+ </div>);
56
+ };
57
+ export default ShareButtons;
@@ -0,0 +1,23 @@
1
+ import { ReactNode } from 'react';
2
+ declare const colors: {
3
+ green: number;
4
+ red: number;
5
+ };
6
+ declare type SharpieColor = keyof typeof colors;
7
+ declare const tags: {
8
+ span: number;
9
+ strong: number;
10
+ em: number;
11
+ b: number;
12
+ i: number;
13
+ u: number;
14
+ s: number;
15
+ };
16
+ declare type SharpieTag = keyof typeof tags;
17
+ export declare type SharpieProps = {
18
+ color: SharpieColor;
19
+ tag?: SharpieTag;
20
+ children: ReactNode;
21
+ };
22
+ declare const Sharpie: (props: SharpieProps) => JSX.Element;
23
+ export default Sharpie;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
3
+ const colors = {
4
+ green: 1,
5
+ red: 1,
6
+ };
7
+ const tags = {
8
+ span: 1,
9
+ strong: 1,
10
+ em: 1,
11
+ b: 1,
12
+ i: 1,
13
+ u: 1,
14
+ s: 1,
15
+ };
16
+ const Sharpie = (props) => {
17
+ const { color, tag, children } = props;
18
+ const colorModifier = colors[color] ? color : 'green';
19
+ const Tag = tag && tags[tag] ? tag : 'span';
20
+ return <Tag className={getBemClass('Sharpie', colorModifier)}>{children}</Tag>;
21
+ };
22
+ export default Sharpie;
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import Autosuggest, { RenderSuggestion } from 'react-autosuggest';
3
+ import { BemProps } from '@hugsmidjan/react/types';
4
+ import { DefaultTexts } from '@reykjavik/hanna-utils/i18n';
5
+ export declare type SiteSearchACI18n = {
6
+ lang?: string;
7
+ /** Label for the autocomplete's combobox container div */
8
+ label: string;
9
+ /** Label for the text input */
10
+ inputLabel: string;
11
+ /** Placeholder text for the text input */
12
+ placeholder?: string;
13
+ /** Label for the suggestions item list container */
14
+ suggestionsLabel: string;
15
+ };
16
+ export declare const defaultSiteSearchACTexts: DefaultTexts<SiteSearchACI18n>;
17
+ export declare type SiteSearchAutocompleteProps<T> = {
18
+ suggestions: Array<T>;
19
+ renderSuggestion: RenderSuggestion<T>;
20
+ setSuggestions: (suggestions: Array<T>) => void;
21
+ getSuggestionValue: (suggestion: T) => string;
22
+ onSuggestionsFetchRequested: (request: Autosuggest.SuggestionsFetchRequestedParams) => void;
23
+ onSuggestionSelected?: (event: React.FormEvent<HTMLElement>, data: Autosuggest.SuggestionSelectedEventData<T>) => void;
24
+ onSuggestionHighlighted?: (params: {
25
+ suggestion: T;
26
+ }) => void;
27
+ /** Triggered when user hits ENTER key with the focus inside the input field */
28
+ onSubmit?: (value: string) => void;
29
+ /** Custom action to perform when the user clicks the search button
30
+ *
31
+ * Defaults to `onSubmit`
32
+ */
33
+ onButtonClick?: (value: string) => void;
34
+ lang?: string;
35
+ texts?: SiteSearchACI18n;
36
+ /** @deprecated Use `text` prop instead (will be removed in v0.11) */
37
+ label?: string;
38
+ } & BemProps;
39
+ declare const SiteSearchAutocomplete: <T>(props: SiteSearchAutocompleteProps<T>) => JSX.Element;
40
+ export default SiteSearchAutocomplete;