@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,41 @@
1
+ import React from 'react';
2
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
3
+ const sizes = {
4
+ none: 'none',
5
+ small: 'small',
6
+ default: '',
7
+ medium: '',
8
+ large: 'large',
9
+ xlarge: 'xlarge',
10
+ };
11
+ const hasChildren = (children) => (children && !(Array.isArray(children) && !children.length)) || undefined;
12
+ const normalizeProp = (value, exclude) => value && value !== exclude ? sizes[value] : undefined;
13
+ const VSpacer = (props) => {
14
+ const { size, top, bottom, children } = props;
15
+ const isWrapper = hasChildren(children);
16
+ let topVal = normalizeProp(isWrapper && top);
17
+ let bottomVal = normalizeProp(isWrapper && bottom);
18
+ let sizeVal = !(topVal && bottomVal) && normalizeProp(size, 'none');
19
+ // collapse effectively-duplicate class modifiers
20
+ if (!sizeVal && topVal === bottomVal && topVal !== 'none') {
21
+ sizeVal = topVal;
22
+ topVal = bottomVal = undefined;
23
+ }
24
+ else if (sizeVal) {
25
+ if (sizeVal === topVal) {
26
+ sizeVal = topVal;
27
+ topVal = undefined;
28
+ }
29
+ if (sizeVal === bottomVal) {
30
+ sizeVal = bottomVal;
31
+ bottomVal = undefined;
32
+ }
33
+ }
34
+ const className = getBemClass('VSpacer', [
35
+ sizeVal,
36
+ topVal && 'top--' + topVal,
37
+ bottomVal && 'bottom--' + bottomVal,
38
+ ]);
39
+ return isWrapper ? (<div className={className}>{children}</div>) : (<hr className={className}/>);
40
+ };
41
+ export default VSpacer;
@@ -0,0 +1,14 @@
1
+ import { TabItemProps, TabsProps } from './Tabs';
2
+ export declare type VerticalTabsTOCItem = TabItemProps & {
3
+ items?: Array<VerticalTabsTOCSubItem>;
4
+ };
5
+ export declare type VerticalTabsTOCSubItem = TabItemProps & {
6
+ type?: never;
7
+ href: string;
8
+ };
9
+ export declare type VerticalTabsTOCProps = {
10
+ items: Array<VerticalTabsTOCItem>;
11
+ onItemSelect: (itemId: string) => void;
12
+ } & Pick<TabsProps, 'aria-label' | 'ssr' | 'activateOnFocus' | 'id' | 'startSeen'>;
13
+ declare const VerticalTabsTOC: (props: VerticalTabsTOCProps) => JSX.Element;
14
+ export default VerticalTabsTOC;
@@ -0,0 +1,68 @@
1
+ import React, { useEffect, useMemo, useState } from 'react';
2
+ import { setFrag } from '@hugsmidjan/qj/frag';
3
+ import { useDomid } from '@hugsmidjan/react/hooks';
4
+ import Tabs from './Tabs';
5
+ const getId = (url) => (url && decodeURIComponent(url.split('#')[1] || '')) || '';
6
+ const getItemId = (item) => getId(item && item.href);
7
+ const mapToItemsById = (items, domid) => {
8
+ const updatedItems = items.map((item) => {
9
+ return Object.assign(Object.assign({}, item), { 'aria-controls': item['aria-controls'] || domid });
10
+ });
11
+ const itemsById = {};
12
+ updatedItems.forEach((topItem, activeIdx) => {
13
+ const subItems = topItem.items;
14
+ if (!subItems) {
15
+ const itemId = getItemId(topItem);
16
+ itemsById[itemId] = { activeIdx };
17
+ return;
18
+ }
19
+ subItems.forEach((subItem, idx) => {
20
+ itemsById[getItemId(subItem)] = {
21
+ activeIdx,
22
+ subTabs: {
23
+ activeIdx: idx,
24
+ 'aria-label': topItem.longLabel || topItem.label,
25
+ id: topItem['aria-controls'],
26
+ tabs: subItems,
27
+ onSetActive: (_, item) => {
28
+ const newId = getItemId(item);
29
+ setFrag(newId);
30
+ },
31
+ },
32
+ };
33
+ if (idx === 0) {
34
+ topItem.href = topItem.href || '#' + getItemId(subItem);
35
+ }
36
+ });
37
+ });
38
+ return { itemsById, updatedItems };
39
+ };
40
+ const VerticalTabsTOC = (props) => {
41
+ const { onItemSelect, items } = props;
42
+ const _domid = useDomid();
43
+ const domid = props.id || _domid;
44
+ const { itemsById, updatedItems } = useMemo(() => mapToItemsById(items, domid), [items, domid]);
45
+ const [state, setState] = useState(() => {
46
+ const initialId = typeof location !== 'undefined' ? getId(location.hash) : '';
47
+ return itemsById[initialId] || itemsById[getItemId(updatedItems[0])] || {};
48
+ });
49
+ useEffect(() => {
50
+ const handleHash = () => {
51
+ const newId = getId(location.href);
52
+ const newState = itemsById[newId];
53
+ if (newState) {
54
+ setState(newState);
55
+ onItemSelect(newId);
56
+ }
57
+ };
58
+ window.addEventListener('hashchange', handleHash);
59
+ return () => window.removeEventListener('hashchange', handleHash);
60
+ }, [itemsById, onItemSelect]);
61
+ return (<Tabs id={domid} vertical aria-label={props['aria-label']} onSetActive={(_, item) => {
62
+ var _a;
63
+ const itemId = getItemId(item);
64
+ const newId = itemId || getItemId((_a = itemsById[itemId].subTabs) === null || _a === void 0 ? void 0 : _a.tabs[0]);
65
+ setFrag(newId);
66
+ }} tabs={updatedItems} role="tablist" activeIdx={state.activeIdx} subTabs={state.subTabs}/>);
67
+ };
68
+ export default VerticalTabsTOC;
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ import { SSRSupport } from '@hugsmidjan/react/hooks';
3
+ import { HannaColorTheme } from '@reykjavik/hanna-css';
4
+ declare type WizardLayoutProps = {
5
+ wizardStepper?: ReactNode;
6
+ wizardFooter?: ReactNode;
7
+ colorTheme?: HannaColorTheme;
8
+ siteName?: string;
9
+ logoLink?: string;
10
+ globalAlerts?: ReactNode;
11
+ ssr?: SSRSupport;
12
+ children?: ReactNode;
13
+ };
14
+ declare const WizardLayout: (props: WizardLayoutProps) => JSX.Element;
15
+ export default WizardLayout;
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import { useIsBrowserSide } from '@hugsmidjan/react/hooks';
3
+ import { getAssetUrl } from '@reykjavik/hanna-utils/assets';
4
+ import Image from './_abstract/Image';
5
+ import { Link } from './_abstract/Link';
6
+ import { useScrollbarWidthCSSVar } from './utils/useScrollbarWidthCSSVar';
7
+ const WizardLayout = (props) => {
8
+ useScrollbarWidthCSSVar();
9
+ const {
10
+ // ssr,
11
+ wizardStepper, wizardFooter, children, colorTheme, logoLink = '/', siteName = 'Reykjavík', globalAlerts, } = props;
12
+ const isBrowser = useIsBrowserSide( /* ssr */);
13
+ return (<div className="WizardLayout" data-sprinkled={isBrowser} data-color-theme={colorTheme}>
14
+ {globalAlerts && (<div className="WizardLayout__alerts" role="alert">
15
+ {globalAlerts}
16
+ </div>)}
17
+ <div className="WizardLayout__content">
18
+ <div className="WizardLayout__header" role="banner">
19
+ <Link className="WizardLayout__header__logo" href={logoLink}>
20
+ {' '}
21
+ <Image inline={true} src={getAssetUrl('reykjavik-logo.svg')}/> {siteName}{' '}
22
+ </Link>{' '}
23
+ </div>
24
+ <div className="WizardLayout__wrap">
25
+ {wizardStepper && (<div className="WizardLayout__stepper" role="navigation">
26
+ {wizardStepper}
27
+ </div>)}
28
+ <div className="WizardLayout__main" role="main">
29
+ {children}
30
+ </div>
31
+ <div className="WizardLayout__deco WizardLayout__deco--geometry"/>
32
+ </div>
33
+ <div className="WizardLayout__footer" role="complementary">
34
+ {wizardFooter}
35
+ </div>
36
+ </div>
37
+ </div>);
38
+ };
39
+ export default WizardLayout;
@@ -0,0 +1,3 @@
1
+ import { ButtonProps } from './_abstract/Button';
2
+ declare const WizardLayoutClose: (props: ButtonProps) => JSX.Element;
3
+ export default WizardLayoutClose;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import Button from './_abstract/Button';
3
+ const WizardLayoutClose = (props) => (<Button bem="WizardLayoutClose" {...props}/>);
4
+ export default WizardLayoutClose;
@@ -0,0 +1,36 @@
1
+ export declare type WizardStepperStep = {
2
+ label: string;
3
+ /**
4
+ * Should the step be clickable?
5
+ *
6
+ * * `true` = The items becomes clickable as allowed by the `activeStep`,
7
+ * `disableBacktrack` and `allowForwardSkip` props.
8
+ * * `false | undefined` = Never clickable, regardless of `activeStep`.
9
+ * * `"always"` = Always clickable regardless of `activeStep` or other props.
10
+ */
11
+ clickable?: boolean | 'always';
12
+ /**
13
+ * Flags the item as having a non-default done state
14
+ *
15
+ * * `undefined` = automatically set "done" on items before `activeStep`
16
+ * * `true` = Always flag as "done", regardless of `activeStep`
17
+ * * `false` = Never flag as "done", regardless of `activeStep`
18
+ */
19
+ done?: boolean;
20
+ /**
21
+ * Flags the step as not part of the numbering scheme
22
+ */
23
+ neutral?: boolean;
24
+ };
25
+ export declare type WizardStepperProps = {
26
+ steps: ReadonlyArray<WizardStepperStep>;
27
+ /** Zero-based index of the active (current) step */
28
+ activeStep?: number;
29
+ /** By default, clickable "done" steps remain clickable */
30
+ disableBacktrack?: boolean;
31
+ /** By default, clickable steps after the active step are not immediately clickable */
32
+ allowForwardSkip?: boolean;
33
+ onClick: (clickedIndex: number) => void;
34
+ };
35
+ declare const WizardStepper: (props: WizardStepperProps) => JSX.Element;
36
+ export default WizardStepper;
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
3
+ const WizardStepper = (props) => {
4
+ const { steps, activeStep = -1, allowForwardSkip, disableBacktrack, onClick } = props;
5
+ return (<div className={getBemClass('WizardStepper', activeStep === -1 && 'preview')}>
6
+ {steps.map((step, i) => {
7
+ const { label, clickable, done, neutral } = step;
8
+ const stepClass = getBemClass('WizardStepper__step', [
9
+ (done || (done == null && i < activeStep)) && 'done',
10
+ neutral && 'neutral',
11
+ ]);
12
+ const isClickable = clickable === 'always' ||
13
+ (clickable &&
14
+ (activeStep === i ||
15
+ (i > activeStep && allowForwardSkip) ||
16
+ (i < activeStep && !disableBacktrack)));
17
+ const ariaCurrent = activeStep === i ? 'step' : undefined;
18
+ return (<React.Fragment key={i}>
19
+ {isClickable ? (<button type="button" className={stepClass} onClick={() => onClick(i)} aria-current={ariaCurrent}>
20
+ {label}
21
+ </button>) : (<span className={stepClass} aria-current={ariaCurrent}>
22
+ {' '}
23
+ {label}{' '}
24
+ </span>)}{' '}
25
+ </React.Fragment>);
26
+ })}
27
+ </div>);
28
+ };
29
+ export default WizardStepper;
@@ -0,0 +1,40 @@
1
+ import { ReactNode } from 'react';
2
+ import { BemProps, BemPropsModifier } from '@hugsmidjan/react/types';
3
+ declare type ButtonElmProps = {
4
+ href?: never;
5
+ } & BemPropsModifier & Omit<JSX.IntrinsicElements['button'], 'className' | 'style'>;
6
+ declare type AnchorElmProps = {
7
+ href: string;
8
+ type?: never;
9
+ name?: never;
10
+ value?: never;
11
+ } & BemPropsModifier & Omit<JSX.IntrinsicElements['a'], 'className' | 'style'>;
12
+ export declare type ButtonProps = {
13
+ /** Label takes preference over `children` */
14
+ label?: string | JSX.Element;
15
+ } & (ButtonElmProps | AnchorElmProps);
16
+ declare const sizes: {
17
+ readonly normal: "";
18
+ readonly small: "small";
19
+ readonly wide: "wide";
20
+ };
21
+ declare type ButtonSize = keyof typeof sizes;
22
+ declare const variants: {
23
+ readonly normal: "";
24
+ readonly destructive: "destructive";
25
+ };
26
+ declare type ButtonVariant = keyof typeof variants;
27
+ declare type NavigationFlag = 'none' | 'go-back' | 'go-forward';
28
+ declare type ButtonIcon = 'edit';
29
+ export declare type ButtonVariantProps = {
30
+ size?: ButtonSize;
31
+ variant?: ButtonVariant;
32
+ icon?: ButtonIcon | NavigationFlag;
33
+ /** @deprecated (Will be removed in v0.11) */
34
+ small?: boolean;
35
+ };
36
+ declare type _ButtonProps = ButtonProps & ButtonVariantProps & BemProps & {
37
+ children?: ReactNode;
38
+ };
39
+ declare const Button: (props: _ButtonProps) => JSX.Element;
40
+ export default Button;
@@ -0,0 +1,51 @@
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 { Link } from './Link';
15
+ // ---------------------------------------------------------------------------
16
+ const sizes = {
17
+ normal: '',
18
+ small: 'small',
19
+ wide: 'wide',
20
+ };
21
+ // ---------------------------------------------------------------------------
22
+ const variants = {
23
+ normal: '',
24
+ destructive: 'destructive',
25
+ };
26
+ const navigationFlags = {
27
+ none: '',
28
+ 'go-back': 'go--back',
29
+ 'go-forward': 'go--forward',
30
+ };
31
+ const icons = {
32
+ // TODO: insert icons
33
+ edit: 'edit',
34
+ };
35
+ const Button = (props) => {
36
+ const { bem, small, size = 'normal', modifier, children, variant = 'normal', icon = 'none', label = children } = props, buttonProps = __rest(props, ["bem", "small", "size", "modifier", "children", "variant", "icon", "label"]);
37
+ const className = bem &&
38
+ getBemClass(bem, [modifier, variants[variant], sizes[size], navigationFlags[icon]]);
39
+ const iconProp = icons[icon] && { 'data-icon': icons[icon] };
40
+ if (buttonProps.href != null) {
41
+ return (<Link className={className} {...buttonProps} style={undefined} {...iconProp}>
42
+ {label}
43
+ </Link>);
44
+ }
45
+ else {
46
+ return (<button className={className} type="button" {...buttonProps} style={undefined} {...iconProp}>
47
+ {label}
48
+ </button>);
49
+ }
50
+ };
51
+ export default Button;
@@ -0,0 +1,29 @@
1
+ import { ReactElement, ReactNode } from 'react';
2
+ import { ImageProps } from './Image';
3
+ declare type BaseCardProps = {
4
+ title: string;
5
+ href: string;
6
+ imgPlaceholder?: boolean;
7
+ };
8
+ export declare type ImageCardProps = BaseCardProps & {
9
+ meta?: string;
10
+ image?: ImageProps;
11
+ };
12
+ export declare type TextCardProps = BaseCardProps & {
13
+ summary?: string;
14
+ };
15
+ export declare type CardListProps<T> = {
16
+ cards: Array<T>;
17
+ title?: string | undefined;
18
+ summaryElement?: ReactElement;
19
+ titleTag?: 'h1' | 'h2' | 'h3' | 'h4' | 'p';
20
+ imgPlaceholder?: boolean | string;
21
+ };
22
+ export declare type ImageCardListProps = CardListProps<ImageCardProps>;
23
+ export declare type TextCardListProps = CardListProps<TextCardProps>;
24
+ declare type _CardListProps = CardListProps<BaseCardProps> & {
25
+ bemPrefix: string;
26
+ children?: ReactNode;
27
+ };
28
+ export declare const CardList: (props: _CardListProps) => JSX.Element;
29
+ export {};
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import Button from './Button';
3
+ import Image from './Image';
4
+ const Card = (props) => {
5
+ const { bem, href, title, imgPlaceholder } = props;
6
+ const cardClass = `${bem}__card`;
7
+ const image = 'image' in props && props.image;
8
+ const meta = 'meta' in props && props.meta;
9
+ const summary = 'summary' in props && props.summary;
10
+ return (<>
11
+ <Button bem={cardClass} href={href}>
12
+ {' '}
13
+ <Image className={`${bem}__image`} {...image} placeholder={imgPlaceholder}/>
14
+ <span className={`${cardClass}__title`}>{title}</span>{' '}
15
+ {meta && <span className={`${cardClass}__meta`}>{meta}</span>}{' '}
16
+ {summary && <span className={`${cardClass}__summary`}>{summary}</span>}{' '}
17
+ </Button>{' '}
18
+ </>);
19
+ };
20
+ export const CardList = (props) => {
21
+ const { bemPrefix, title, summaryElement, cards, titleTag = 'h2', children, imgPlaceholder, } = props;
22
+ const TitleTag = titleTag;
23
+ const fallbackImage = (imgPlaceholder !== true && imgPlaceholder) || undefined;
24
+ const fallbackImageStyle = fallbackImage
25
+ ? { '--ImageCards--fallback': `url("${fallbackImage}")` }
26
+ : undefined;
27
+ return (<>
28
+ {summaryElement ? (<div className={bemPrefix + '__summary'}>
29
+ {title && <TitleTag className={bemPrefix + '__title'}>{title}</TitleTag>}
30
+ {summaryElement}
31
+ </div>) : (title && <TitleTag className={bemPrefix + '__title'}>{title}</TitleTag>)}
32
+ <ul className={bemPrefix + '__list'} style={fallbackImageStyle}>
33
+ {cards.map((card, i) => (<li key={i} className={bemPrefix + '__item'}>
34
+ <Card {...card} bem={bemPrefix} imgPlaceholder={!!imgPlaceholder}/>
35
+ </li>))}
36
+ </ul>
37
+ {children}
38
+ </>);
39
+ };
@@ -0,0 +1,32 @@
1
+ export declare type Source = {
2
+ srcset: string;
3
+ media: string;
4
+ };
5
+ export declare type ImageProps = {
6
+ altText?: string;
7
+ } & ({
8
+ sources?: Array<Source>;
9
+ /** The default image source to (lazy) load */
10
+ src?: string;
11
+ /** Eagerly-loaded placeholder/thunbnail to use until a `sources` item has been picked. */
12
+ preloadSrc?: string;
13
+ inline?: false;
14
+ } | {
15
+ /** Should the image be fetched and inlined as <svg/> */
16
+ inline: true;
17
+ src: string;
18
+ sources?: undefined;
19
+ preloadSrc?: undefined;
20
+ });
21
+ declare type _ImageProps = {
22
+ /** container className */
23
+ className?: string;
24
+ /** Controls if the container is rendered when image is missing/undefined.
25
+ * (With a `--missing` className modifier added.)
26
+ *
27
+ * Accepts a function that defines a default content for the container.
28
+ */
29
+ placeholder?: boolean | (() => JSX.Element);
30
+ };
31
+ declare const Image: (props: ImageProps & _ImageProps) => JSX.Element | null;
32
+ export default Image;
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
3
+ import { useGetSVGtext } from '../utils/useGetSVGtext';
4
+ // eslint-disable-next-line complexity
5
+ const Image = (props) => {
6
+ const { src, altText = '', sources = [], preloadSrc, className, inline, placeholder, } = props;
7
+ const _src = (sources.length && preloadSrc) || src;
8
+ const imageSrc = _src || (sources[0] != null ? sources[0].srcset.split(' ')[0] : undefined);
9
+ const imgLoading = preloadSrc ? 'eager' : 'lazy';
10
+ const inlineSvg = useGetSVGtext(inline ? imageSrc : undefined);
11
+ if (!imageSrc) {
12
+ return placeholder ? (<span className={className && getBemClass(className, 'missing')}>
13
+ {placeholder !== true && placeholder()}
14
+ </span>) : null;
15
+ }
16
+ if (inline && inlineSvg) {
17
+ const __html = inlineSvg.imageSrc === imageSrc ? inlineSvg.code : '';
18
+ return <span className={className} dangerouslySetInnerHTML={{ __html }}/>;
19
+ }
20
+ return (<picture className={className}>
21
+ {' '}
22
+ {sources.map((source, i) => (<>
23
+ <source key={i} srcSet={source.srcset} media={source.media}/>{' '}
24
+ </>))}{' '}
25
+ <img src={imageSrc} alt={altText} loading={imgLoading}/>
26
+ {' '}
27
+ </picture>);
28
+ };
29
+ export default Image;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Props object ready to be ..spread onto an anchor element
3
+ * */
4
+ export declare type LinkProps = JSX.IntrinsicElements['a'] & {
5
+ href: string;
6
+ };
7
+ export declare type LinkRenderer = (props: LinkProps) => JSX.Element;
8
+ export declare let Link: LinkRenderer;
9
+ /**
10
+ * Allows you to set a callback function to wrapp <a href=""/> links with
11
+ * a custom routing component.
12
+ *
13
+ * Example use:
14
+ *
15
+ * ```js
16
+ * import { Link } from 'remix'; // or whatever :-)
17
+ *
18
+ * setLinkRenderer((linkProps) =>
19
+ * <Link to={linkProps.href}><a {...linkProps} /></Link>);
20
+ * ```
21
+ *
22
+ * The Default linkrenderer defined as:
23
+ * ```js
24
+ * (linkProps) => React.createElement('a', linkProps);
25
+ * ```
26
+ */
27
+ export declare const setLinkRenderer: (linkRenderer: LinkRenderer | undefined) => void;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ const DefaultLinkRenderer = (props) => React.createElement('a', props);
3
+ export let Link = DefaultLinkRenderer;
4
+ /**
5
+ * Allows you to set a callback function to wrapp <a href=""/> links with
6
+ * a custom routing component.
7
+ *
8
+ * Example use:
9
+ *
10
+ * ```js
11
+ * import { Link } from 'remix'; // or whatever :-)
12
+ *
13
+ * setLinkRenderer((linkProps) =>
14
+ * <Link to={linkProps.href}><a {...linkProps} /></Link>);
15
+ * ```
16
+ *
17
+ * The Default linkrenderer defined as:
18
+ * ```js
19
+ * (linkProps) => React.createElement('a', linkProps);
20
+ * ```
21
+ */
22
+ export const setLinkRenderer = (linkRenderer) => {
23
+ Link = linkRenderer || DefaultLinkRenderer;
24
+ };
@@ -0,0 +1,31 @@
1
+ import { FormFieldInputProps } from '../FormField';
2
+ import { TogglerInputProps } from './TogglerInput';
3
+ export declare type TogglerGroupOption = {
4
+ value: string;
5
+ label?: string | JSX.Element;
6
+ disabled?: boolean;
7
+ id?: string;
8
+ };
9
+ export declare type TogglerGroupOptions = Array<TogglerGroupOption>;
10
+ declare type RestrictedInputProps = Omit<JSX.IntrinsicElements['input'], 'type' | 'value' | 'checked' | 'defaultChecked' | 'className' | 'id' | 'name' | 'children'>;
11
+ export declare type TogglerGroupProps = {
12
+ options: TogglerGroupOptions;
13
+ className?: string;
14
+ name: string;
15
+ children?: undefined;
16
+ disabled?: boolean | ReadonlyArray<number>;
17
+ inputProps?: RestrictedInputProps;
18
+ onSelected?: (payload: {
19
+ value: string;
20
+ checked: boolean;
21
+ option: TogglerGroupOption;
22
+ selectedValues: Array<string>;
23
+ }) => void;
24
+ } & Omit<FormFieldInputProps, 'disabled'>;
25
+ declare type _TogglerGroupProps = {
26
+ bem: string;
27
+ Toggler: (props: TogglerInputProps) => JSX.Element;
28
+ value?: ReadonlyArray<string>;
29
+ };
30
+ declare const TogglerGroup: (props: TogglerGroupProps & _TogglerGroupProps) => JSX.Element;
31
+ export default TogglerGroup;
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import getBemClass from '@hugsmidjan/react/utils/getBemClass';
3
+ const TogglerGroup = (props) => {
4
+ const {
5
+ // id,
6
+ className, bem, name, disabled, Toggler, onSelected, options, inputProps = {}, } = props;
7
+ const values = props.value || [];
8
+ return (<ul className={getBemClass(bem, null, className)} role="group" aria-labelledby={props['aria-labelledby']} aria-describedby={props['aria-describedby']} aria-required={props.required}>
9
+ {options.map((option, i) => {
10
+ const isDisabled = option.disabled != null
11
+ ? option.disabled
12
+ : disabled && typeof disabled !== 'boolean'
13
+ ? disabled.includes(i)
14
+ : disabled;
15
+ const isChecked = values.includes(option.value);
16
+ return (<Toggler key={i} {...inputProps} className={bem + '__item'} name={name} Wrapper="li" {...option} label={option.label || option.value} onChange={onSelected
17
+ ? (e) => {
18
+ const { value } = option;
19
+ const checked = e.currentTarget.checked;
20
+ inputProps.onChange && inputProps.onChange(e);
21
+ const selectedValues = values.filter((val) => val !== value);
22
+ if (checked) {
23
+ selectedValues.push(value);
24
+ }
25
+ onSelected({ value, checked, option, selectedValues });
26
+ }
27
+ : inputProps.onChange} disabled={isDisabled} aria-invalid={props['aria-invalid']} checked={isChecked}/>);
28
+ })}
29
+ </ul>);
30
+ };
31
+ export default TogglerGroup;
@@ -0,0 +1,17 @@
1
+ import { ReactElement } from 'react';
2
+ import { BemPropsModifier } from '@hugsmidjan/react/types';
3
+ import { FormFieldGroupWrappingProps } from '../FormField';
4
+ import { TogglerGroupOption, TogglerGroupOptions, TogglerGroupProps } from './TogglerGroup';
5
+ import { TogglerInputProps } from './TogglerInput';
6
+ export declare type TogglerGroupFieldProps = {
7
+ className?: string;
8
+ } & FormFieldGroupWrappingProps & TogglerGroupProps;
9
+ declare type _TogglerGroupFieldProps = {
10
+ Toggler: (props: TogglerInputProps) => ReactElement;
11
+ value?: string | ReadonlyArray<string>;
12
+ bem: string;
13
+ } & BemPropsModifier;
14
+ export declare type TogglerGroupFieldOption = TogglerGroupOption;
15
+ export declare type TogglerGroupFieldOptions = TogglerGroupOptions;
16
+ declare const TogglerGroupField: (props: TogglerGroupFieldProps & _TogglerGroupFieldProps) => JSX.Element;
17
+ export default TogglerGroupField;
@@ -0,0 +1,22 @@
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 FormField from '../FormField';
15
+ import TogglerGroup from './TogglerGroup';
16
+ const TogglerGroupField = (props) => {
17
+ const { bem, Toggler, className, modifier, label, LabelTag, assistText, hideLabel, disabled, readOnly, invalid, errorMessage, required, reqText, id, value } = props, togglerGroupProps = __rest(props, ["bem", "Toggler", "className", "modifier", "label", "LabelTag", "assistText", "hideLabel", "disabled", "readOnly", "invalid", "errorMessage", "required", "reqText", "id", "value"]);
18
+ return (<FormField className={getBemClass(bem, modifier, className)} group label={label} LabelTag={LabelTag} assistText={assistText} hideLabel={hideLabel} disabled={disabled} readOnly={readOnly} invalid={invalid} errorMessage={errorMessage} required={required} reqText={reqText} id={id} renderInput={(className, inputProps) => {
19
+ return (<TogglerGroup bem={className.options} {...inputProps} {...togglerGroupProps} value={Array.isArray(value) ? value : value != null ? [value] : undefined} Toggler={Toggler}/>);
20
+ }}/>);
21
+ };
22
+ export default TogglerGroupField;