@reykjavik/hanna-react 0.10.53

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 (357) hide show
  1. package/CHANGELOG.md +795 -0
  2. package/README.md +69 -0
  3. package/lib/AccordionList.cjs +91 -0
  4. package/lib/AccordionList.mjs +69 -0
  5. package/lib/ActionCards.cjs +57 -0
  6. package/lib/ActionCards.mjs +35 -0
  7. package/lib/Alert.cjs +159 -0
  8. package/lib/Alert.mjs +139 -0
  9. package/lib/ArticleCarousel/_ArticleCarouselCard.cjs +75 -0
  10. package/lib/ArticleCarousel/_ArticleCarouselCard.mjs +51 -0
  11. package/lib/ArticleCarousel.cjs +43 -0
  12. package/lib/ArticleCarousel.mjs +21 -0
  13. package/lib/ArticleMeta.cjs +46 -0
  14. package/lib/ArticleMeta.mjs +22 -0
  15. package/lib/Attention.cjs +33 -0
  16. package/lib/Attention.mjs +9 -0
  17. package/lib/BasicTable.cjs +72 -0
  18. package/lib/BasicTable.mjs +50 -0
  19. package/lib/Bling.cjs +76 -0
  20. package/lib/Bling.mjs +52 -0
  21. package/lib/BlockBreak.cjs +32 -0
  22. package/lib/BlockBreak.mjs +8 -0
  23. package/lib/BlockQuote.cjs +47 -0
  24. package/lib/BlockQuote.mjs +25 -0
  25. package/lib/BreadCrumbs.cjs +67 -0
  26. package/lib/BreadCrumbs.mjs +43 -0
  27. package/lib/ButtonBack.cjs +47 -0
  28. package/lib/ButtonBack.mjs +25 -0
  29. package/lib/ButtonBar.cjs +45 -0
  30. package/lib/ButtonBar.mjs +18 -0
  31. package/lib/ButtonPrimary.cjs +47 -0
  32. package/lib/ButtonPrimary.mjs +25 -0
  33. package/lib/ButtonSecondary.cjs +47 -0
  34. package/lib/ButtonSecondary.mjs +25 -0
  35. package/lib/ButtonTertiary.cjs +64 -0
  36. package/lib/ButtonTertiary.mjs +42 -0
  37. package/lib/Carousel.cjs +52 -0
  38. package/lib/Carousel.mjs +30 -0
  39. package/lib/CarouselStepper.cjs +51 -0
  40. package/lib/CarouselStepper.mjs +29 -0
  41. package/lib/CenterColumn.cjs +40 -0
  42. package/lib/CenterColumn.mjs +16 -0
  43. package/lib/Checkbox.cjs +52 -0
  44. package/lib/Checkbox.mjs +30 -0
  45. package/lib/CheckboxButtonsGroup.cjs +65 -0
  46. package/lib/CheckboxButtonsGroup.mjs +43 -0
  47. package/lib/CheckboxGroup.cjs +55 -0
  48. package/lib/CheckboxGroup.mjs +33 -0
  49. package/lib/CityBlock.cjs +49 -0
  50. package/lib/CityBlock.mjs +25 -0
  51. package/lib/ContactBubble.cjs +200 -0
  52. package/lib/ContactBubble.mjs +173 -0
  53. package/lib/ContentArticle.cjs +63 -0
  54. package/lib/ContentArticle.mjs +41 -0
  55. package/lib/ContentImage.cjs +58 -0
  56. package/lib/ContentImage.mjs +36 -0
  57. package/lib/Datepicker.cjs +164 -0
  58. package/lib/Datepicker.mjs +142 -0
  59. package/lib/ExtraLinks.cjs +96 -0
  60. package/lib/ExtraLinks.mjs +74 -0
  61. package/lib/FeatureList.cjs +53 -0
  62. package/lib/FeatureList.mjs +29 -0
  63. package/lib/FieldGroup.cjs +40 -0
  64. package/lib/FieldGroup.mjs +16 -0
  65. package/lib/FileInput.cjs +256 -0
  66. package/lib/FileInput.mjs +234 -0
  67. package/lib/Foonote.cjs +30 -0
  68. package/lib/Foonote.mjs +6 -0
  69. package/lib/FooterBadges.cjs +49 -0
  70. package/lib/FooterBadges.mjs +25 -0
  71. package/lib/FooterInfo.cjs +47 -0
  72. package/lib/FooterInfo.mjs +23 -0
  73. package/lib/Footnote.cjs +32 -0
  74. package/lib/Footnote.mjs +8 -0
  75. package/lib/Form.cjs +56 -0
  76. package/lib/Form.mjs +34 -0
  77. package/lib/FormField.cjs +153 -0
  78. package/lib/FormField.mjs +131 -0
  79. package/lib/Gallery/_GalleryItem.cjs +83 -0
  80. package/lib/Gallery/_GalleryItem.mjs +61 -0
  81. package/lib/Gallery/_GalleryModal.cjs +104 -0
  82. package/lib/Gallery/_GalleryModal.mjs +82 -0
  83. package/lib/Gallery/_GalleryModalContext.cjs +30 -0
  84. package/lib/Gallery/_GalleryModalContext.mjs +6 -0
  85. package/lib/Gallery/_GalleryModalItem.cjs +59 -0
  86. package/lib/Gallery/_GalleryModalItem.mjs +36 -0
  87. package/lib/Gallery.cjs +79 -0
  88. package/lib/Gallery.mjs +57 -0
  89. package/lib/GridBlocks.cjs +81 -0
  90. package/lib/GridBlocks.mjs +59 -0
  91. package/lib/Heading.cjs +45 -0
  92. package/lib/Heading.mjs +21 -0
  93. package/lib/HeroBlock.cjs +74 -0
  94. package/lib/HeroBlock.mjs +52 -0
  95. package/lib/IframeBlock.cjs +48 -0
  96. package/lib/IframeBlock.mjs +24 -0
  97. package/lib/Illustration.cjs +51 -0
  98. package/lib/Illustration.mjs +31 -0
  99. package/lib/ImageCards.cjs +72 -0
  100. package/lib/ImageCards.mjs +52 -0
  101. package/lib/InfoBlock.cjs +51 -0
  102. package/lib/InfoBlock.mjs +27 -0
  103. package/lib/InfoHero.cjs +150 -0
  104. package/lib/InfoHero.mjs +128 -0
  105. package/lib/IslandBlock.cjs +63 -0
  106. package/lib/IslandBlock.mjs +41 -0
  107. package/lib/IslandPageBlock.cjs +49 -0
  108. package/lib/IslandPageBlock.mjs +25 -0
  109. package/lib/LabeledTextBlock.cjs +60 -0
  110. package/lib/LabeledTextBlock.mjs +38 -0
  111. package/lib/Layout.cjs +113 -0
  112. package/lib/Layout.mjs +87 -0
  113. package/lib/MainMenu/_Auxiliary.cjs +54 -0
  114. package/lib/MainMenu/_Auxiliary.mjs +28 -0
  115. package/lib/MainMenu/_PrimaryPanel.cjs +74 -0
  116. package/lib/MainMenu/_PrimaryPanel.mjs +48 -0
  117. package/lib/MainMenu.cjs +209 -0
  118. package/lib/MainMenu.mjs +187 -0
  119. package/lib/MiniMetrics.cjs +56 -0
  120. package/lib/MiniMetrics.mjs +34 -0
  121. package/lib/Modal.cjs +70 -0
  122. package/lib/Modal.mjs +48 -0
  123. package/lib/NameCard.cjs +115 -0
  124. package/lib/NameCard.mjs +91 -0
  125. package/lib/NameCards.cjs +52 -0
  126. package/lib/NameCards.mjs +30 -0
  127. package/lib/NewsHero.cjs +136 -0
  128. package/lib/NewsHero.mjs +114 -0
  129. package/lib/PageFilter.cjs +48 -0
  130. package/lib/PageFilter.mjs +24 -0
  131. package/lib/PageHeading.cjs +42 -0
  132. package/lib/PageHeading.mjs +18 -0
  133. package/lib/ProcessOverview.cjs +52 -0
  134. package/lib/ProcessOverview.mjs +28 -0
  135. package/lib/PullQuote.cjs +47 -0
  136. package/lib/PullQuote.mjs +25 -0
  137. package/lib/RadioButtonsGroup.cjs +64 -0
  138. package/lib/RadioButtonsGroup.mjs +42 -0
  139. package/lib/RadioGroup.cjs +58 -0
  140. package/lib/RadioGroup.mjs +36 -0
  141. package/lib/RelatedLinks.cjs +61 -0
  142. package/lib/RelatedLinks.mjs +37 -0
  143. package/lib/RowBlock.cjs +39 -0
  144. package/lib/RowBlock.mjs +15 -0
  145. package/lib/RowBlockColumn.cjs +40 -0
  146. package/lib/RowBlockColumn.mjs +16 -0
  147. package/lib/SearchInput.cjs +136 -0
  148. package/lib/SearchInput.mjs +114 -0
  149. package/lib/SearchResults/_SearchResultsItem.cjs +54 -0
  150. package/lib/SearchResults/_SearchResultsItem.mjs +30 -0
  151. package/lib/SearchResults.cjs +172 -0
  152. package/lib/SearchResults.mjs +150 -0
  153. package/lib/SeenEffect.cjs +66 -0
  154. package/lib/SeenEffect.mjs +44 -0
  155. package/lib/Selectbox.cjs +144 -0
  156. package/lib/Selectbox.mjs +122 -0
  157. package/lib/ShareButtons.cjs +101 -0
  158. package/lib/ShareButtons.mjs +83 -0
  159. package/lib/Sharpie.cjs +51 -0
  160. package/lib/Sharpie.mjs +27 -0
  161. package/lib/SiteSearchAutocomplete.cjs +150 -0
  162. package/lib/SiteSearchAutocomplete.mjs +126 -0
  163. package/lib/SiteSearchCurtain.cjs +78 -0
  164. package/lib/SiteSearchCurtain.mjs +56 -0
  165. package/lib/SiteSearchInput.cjs +119 -0
  166. package/lib/SiteSearchInput.mjs +97 -0
  167. package/lib/Skeleton.cjs +63 -0
  168. package/lib/Skeleton.mjs +39 -0
  169. package/lib/SubHeading.cjs +43 -0
  170. package/lib/SubHeading.mjs +19 -0
  171. package/lib/Tabs.cjs +166 -0
  172. package/lib/Tabs.mjs +144 -0
  173. package/lib/TagPill.cjs +113 -0
  174. package/lib/TagPill.mjs +91 -0
  175. package/lib/TextBlock.cjs +45 -0
  176. package/lib/TextBlock.mjs +21 -0
  177. package/lib/TextButton.cjs +55 -0
  178. package/lib/TextButton.mjs +33 -0
  179. package/lib/TextInput.cjs +136 -0
  180. package/lib/TextInput.mjs +114 -0
  181. package/lib/VSpacer.cjs +70 -0
  182. package/lib/VSpacer.mjs +46 -0
  183. package/lib/VerticalTabsTOC.cjs +123 -0
  184. package/lib/VerticalTabsTOC.mjs +101 -0
  185. package/lib/WizardLayout.cjs +79 -0
  186. package/lib/WizardLayout.mjs +55 -0
  187. package/lib/WizardLayoutClose.cjs +47 -0
  188. package/lib/WizardLayoutClose.mjs +25 -0
  189. package/lib/WizardStepper.cjs +55 -0
  190. package/lib/WizardStepper.mjs +31 -0
  191. package/lib/_abstract/Button.cjs +114 -0
  192. package/lib/_abstract/Button.mjs +92 -0
  193. package/lib/_abstract/CardList.cjs +100 -0
  194. package/lib/_abstract/CardList.mjs +76 -0
  195. package/lib/_abstract/Image.cjs +75 -0
  196. package/lib/_abstract/Image.mjs +51 -0
  197. package/lib/_abstract/Link.cjs +37 -0
  198. package/lib/_abstract/Link.mjs +10 -0
  199. package/lib/_abstract/TogglerGroup.cjs +92 -0
  200. package/lib/_abstract/TogglerGroup.mjs +70 -0
  201. package/lib/_abstract/TogglerGroupField.cjs +121 -0
  202. package/lib/_abstract/TogglerGroupField.mjs +99 -0
  203. package/lib/_abstract/TogglerInput.cjs +105 -0
  204. package/lib/_abstract/TogglerInput.mjs +83 -0
  205. package/lib/_abstract/_AbstractCarousel.cjs +170 -0
  206. package/lib/_abstract/_AbstractCarousel.mjs +152 -0
  207. package/lib/_abstract/_Blings.cjs +47 -0
  208. package/lib/_abstract/_Blings.mjs +23 -0
  209. package/lib/_abstract/_Block.cjs +73 -0
  210. package/lib/_abstract/_Block.mjs +51 -0
  211. package/lib/_abstract/_Quote.cjs +43 -0
  212. package/lib/_abstract/_Quote.mjs +17 -0
  213. package/lib/_abstract/breakOnNL.cjs +30 -0
  214. package/lib/_abstract/breakOnNL.mjs +6 -0
  215. package/lib/assets.cjs +77 -0
  216. package/lib/assets.mjs +53 -0
  217. package/lib/constants.cjs +49 -0
  218. package/lib/constants.mjs +24 -0
  219. package/lib/focus-visible.cjs +1 -0
  220. package/lib/focus-visible.mjs +1 -0
  221. package/lib/utils/config.cjs +27 -0
  222. package/lib/utils/config.mjs +4 -0
  223. package/lib/utils/detectEdgeScroll.cjs +95 -0
  224. package/lib/utils/detectEdgeScroll.mjs +71 -0
  225. package/lib/utils/env.cjs +31 -0
  226. package/lib/utils/env.mjs +5 -0
  227. package/lib/utils/seenEffect.cjs +93 -0
  228. package/lib/utils/seenEffect.mjs +65 -0
  229. package/lib/utils/useFormatMonitor.cjs +29 -0
  230. package/lib/utils/useFormatMonitor.mjs +6 -0
  231. package/lib/utils/useGetSVGtext.cjs +44 -0
  232. package/lib/utils/useGetSVGtext.mjs +21 -0
  233. package/lib/utils/useMenuToggling.cjs +83 -0
  234. package/lib/utils/useMenuToggling.mjs +60 -0
  235. package/lib/utils/useScrollbarWidthCSSVar.cjs +32 -0
  236. package/lib/utils/useScrollbarWidthCSSVar.mjs +6 -0
  237. package/lib/utils.cjs +18 -0
  238. package/lib/utils.mjs +2 -0
  239. package/package.json +491 -0
  240. package/types/AccordionList.d.ts +17 -0
  241. package/types/ActionCards.d.ts +5 -0
  242. package/types/Alert.d.ts +49 -0
  243. package/types/ArticleCarousel/_ArticleCarouselCard.d.ts +27 -0
  244. package/types/ArticleCarousel.d.ts +12 -0
  245. package/types/ArticleMeta.d.ts +9 -0
  246. package/types/Attention.d.ts +7 -0
  247. package/types/BasicTable.d.ts +12 -0
  248. package/types/Bling.d.ts +81 -0
  249. package/types/BlockBreak.d.ts +2 -0
  250. package/types/BlockQuote.d.ts +4 -0
  251. package/types/BreadCrumbs.d.ts +11 -0
  252. package/types/ButtonBack.d.ts +7 -0
  253. package/types/ButtonBar.d.ts +16 -0
  254. package/types/ButtonPrimary.d.ts +7 -0
  255. package/types/ButtonSecondary.d.ts +7 -0
  256. package/types/ButtonTertiary.d.ts +12 -0
  257. package/types/Carousel.d.ts +4 -0
  258. package/types/CarouselStepper.d.ts +4 -0
  259. package/types/CenterColumn.d.ts +7 -0
  260. package/types/Checkbox.d.ts +4 -0
  261. package/types/CheckboxButtonsGroup.d.ts +11 -0
  262. package/types/CheckboxGroup.d.ts +9 -0
  263. package/types/CityBlock.d.ts +23 -0
  264. package/types/ContactBubble.d.ts +58 -0
  265. package/types/ContentArticle.d.ts +15 -0
  266. package/types/ContentImage.d.ts +8 -0
  267. package/types/Datepicker.d.ts +39 -0
  268. package/types/ExtraLinks.d.ts +18 -0
  269. package/types/FeatureList.d.ts +12 -0
  270. package/types/FieldGroup.d.ts +9 -0
  271. package/types/FileInput.d.ts +17 -0
  272. package/types/Foonote.d.ts +12 -0
  273. package/types/FooterBadges.d.ts +9 -0
  274. package/types/FooterInfo.d.ts +18 -0
  275. package/types/Footnote.d.ts +6 -0
  276. package/types/Form.d.ts +7 -0
  277. package/types/FormField.d.ts +65 -0
  278. package/types/Gallery/_GalleryItem.d.ts +8 -0
  279. package/types/Gallery/_GalleryModal.d.ts +6 -0
  280. package/types/Gallery/_GalleryModalContext.d.ts +9 -0
  281. package/types/Gallery/_GalleryModalItem.d.ts +3 -0
  282. package/types/Gallery.d.ts +17 -0
  283. package/types/GridBlocks.d.ts +26 -0
  284. package/types/Heading.d.ts +16 -0
  285. package/types/HeroBlock.d.ts +19 -0
  286. package/types/IframeBlock.d.ts +23 -0
  287. package/types/Illustration.d.ts +13 -0
  288. package/types/ImageCards.d.ts +8 -0
  289. package/types/InfoBlock.d.ts +17 -0
  290. package/types/InfoHero.d.ts +17 -0
  291. package/types/IslandBlock.d.ts +25 -0
  292. package/types/IslandPageBlock.d.ts +24 -0
  293. package/types/LabeledTextBlock.d.ts +11 -0
  294. package/types/Layout.d.ts +33 -0
  295. package/types/MainMenu/_Auxiliary.d.ts +6 -0
  296. package/types/MainMenu/_PrimaryPanel.d.ts +13 -0
  297. package/types/MainMenu.d.ts +48 -0
  298. package/types/MiniMetrics.d.ts +8 -0
  299. package/types/Modal.d.ts +10 -0
  300. package/types/NameCard.d.ts +64 -0
  301. package/types/NameCards.d.ts +6 -0
  302. package/types/NewsHero.d.ts +14 -0
  303. package/types/PageFilter.d.ts +17 -0
  304. package/types/PageHeading.d.ts +10 -0
  305. package/types/ProcessOverview.d.ts +13 -0
  306. package/types/PullQuote.d.ts +4 -0
  307. package/types/RadioButtonsGroup.d.ts +11 -0
  308. package/types/RadioGroup.d.ts +13 -0
  309. package/types/RelatedLinks.d.ts +20 -0
  310. package/types/RowBlock.d.ts +12 -0
  311. package/types/RowBlockColumn.d.ts +8 -0
  312. package/types/SearchInput.d.ts +18 -0
  313. package/types/SearchResults/_SearchResultsItem.d.ts +18 -0
  314. package/types/SearchResults.d.ts +33 -0
  315. package/types/SeenEffect.d.ts +4 -0
  316. package/types/Selectbox.d.ts +8 -0
  317. package/types/ShareButtons.d.ts +9 -0
  318. package/types/Sharpie.d.ts +23 -0
  319. package/types/SiteSearchAutocomplete.d.ts +40 -0
  320. package/types/SiteSearchCurtain.d.ts +6 -0
  321. package/types/SiteSearchInput.d.ts +24 -0
  322. package/types/Skeleton.d.ts +25 -0
  323. package/types/SubHeading.d.ts +10 -0
  324. package/types/Tabs.d.ts +35 -0
  325. package/types/TagPill.d.ts +27 -0
  326. package/types/TextBlock.d.ts +15 -0
  327. package/types/TextButton.d.ts +9 -0
  328. package/types/TextInput.d.ts +16 -0
  329. package/types/VSpacer.d.ts +24 -0
  330. package/types/VerticalTabsTOC.d.ts +14 -0
  331. package/types/WizardLayout.d.ts +15 -0
  332. package/types/WizardLayoutClose.d.ts +3 -0
  333. package/types/WizardStepper.d.ts +36 -0
  334. package/types/_abstract/Button.d.ts +40 -0
  335. package/types/_abstract/CardList.d.ts +29 -0
  336. package/types/_abstract/Image.d.ts +32 -0
  337. package/types/_abstract/Link.d.ts +27 -0
  338. package/types/_abstract/TogglerGroup.d.ts +31 -0
  339. package/types/_abstract/TogglerGroupField.d.ts +17 -0
  340. package/types/_abstract/TogglerInput.d.ts +22 -0
  341. package/types/_abstract/_AbstractCarousel.d.ts +25 -0
  342. package/types/_abstract/_Blings.d.ts +11 -0
  343. package/types/_abstract/_Block.d.ts +22 -0
  344. package/types/_abstract/_Quote.d.ts +9 -0
  345. package/types/_abstract/breakOnNL.d.ts +2 -0
  346. package/types/assets.d.ts +42 -0
  347. package/types/constants.d.ts +39 -0
  348. package/types/focus-visible.d.ts +1 -0
  349. package/types/utils/config.d.ts +2 -0
  350. package/types/utils/detectEdgeScroll.d.ts +52 -0
  351. package/types/utils/env.d.ts +1 -0
  352. package/types/utils/seenEffect.d.ts +28 -0
  353. package/types/utils/useFormatMonitor.d.ts +38 -0
  354. package/types/utils/useGetSVGtext.d.ts +6 -0
  355. package/types/utils/useMenuToggling.d.ts +8 -0
  356. package/types/utils/useScrollbarWidthCSSVar.d.ts +1 -0
  357. package/types/utils.d.ts +2 -0
@@ -0,0 +1,136 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __spreadValues = (a, b) => {
13
+ for (var prop in b || (b = {}))
14
+ if (__hasOwnProp.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ if (__getOwnPropSymbols)
17
+ for (var prop of __getOwnPropSymbols(b)) {
18
+ if (__propIsEnum.call(b, prop))
19
+ __defNormalProp(a, prop, b[prop]);
20
+ }
21
+ return a;
22
+ };
23
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
+ var __objRest = (source, exclude) => {
25
+ var target = {};
26
+ for (var prop in source)
27
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
28
+ target[prop] = source[prop];
29
+ if (source != null && __getOwnPropSymbols)
30
+ for (var prop of __getOwnPropSymbols(source)) {
31
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
32
+ target[prop] = source[prop];
33
+ }
34
+ return target;
35
+ };
36
+ var __export = (target, all) => {
37
+ for (var name in all)
38
+ __defProp(target, name, { get: all[name], enumerable: true });
39
+ };
40
+ var __copyProps = (to, from, except, desc) => {
41
+ if (from && typeof from === "object" || typeof from === "function") {
42
+ for (let key of __getOwnPropNames(from))
43
+ if (!__hasOwnProp.call(to, key) && key !== except)
44
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
45
+ }
46
+ return to;
47
+ };
48
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
49
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
50
+ var SearchInput_exports = {};
51
+ __export(SearchInput_exports, {
52
+ default: () => SearchInput_default
53
+ });
54
+ module.exports = __toCommonJS(SearchInput_exports);
55
+ var import_react = __toESM(require("react"));
56
+ var import_getBemClass = __toESM(require("@hugsmidjan/react/utils/getBemClass"));
57
+ var import_FormField = __toESM(require("./FormField"));
58
+ const SearchInput = (props) => {
59
+ const _a = props, {
60
+ className,
61
+ label,
62
+ assistText,
63
+ hideLabel,
64
+ disabled,
65
+ readOnly,
66
+ invalid,
67
+ errorMessage,
68
+ required,
69
+ reqText,
70
+ id,
71
+ onChange,
72
+ small,
73
+ onButtonClick,
74
+ buttonText = "Leita",
75
+ ssr
76
+ } = _a, inputElementProps = __objRest(_a, [
77
+ "className",
78
+ "label",
79
+ "assistText",
80
+ "hideLabel",
81
+ "disabled",
82
+ "readOnly",
83
+ "invalid",
84
+ "errorMessage",
85
+ "required",
86
+ "reqText",
87
+ "id",
88
+ "onChange",
89
+ "small",
90
+ "onButtonClick",
91
+ "buttonText",
92
+ "ssr"
93
+ ]);
94
+ const { value, defaultValue, placeholder } = inputElementProps;
95
+ const [hasValue, setHasValue] = (0, import_react.useState)(void 0);
96
+ const filled = !!(value ?? hasValue ?? !!defaultValue);
97
+ const empty = !filled && !placeholder;
98
+ const _onChange = value != null ? onChange : (e) => {
99
+ setHasValue(!!e.target.value);
100
+ onChange && onChange(e);
101
+ };
102
+ return /* @__PURE__ */ import_react.default.createElement(import_FormField.default, {
103
+ className: (0, import_getBemClass.default)("SearchInput", [], className),
104
+ ssr,
105
+ small,
106
+ label,
107
+ empty,
108
+ filled,
109
+ assistText,
110
+ hideLabel,
111
+ disabled,
112
+ readOnly,
113
+ invalid,
114
+ errorMessage,
115
+ required,
116
+ reqText,
117
+ id,
118
+ renderInput: (className2, inputProps, addFocusProps) => /* @__PURE__ */ import_react.default.createElement("div", __spreadValues({
119
+ className: className2.input
120
+ }, addFocusProps()), /* @__PURE__ */ import_react.default.createElement("input", __spreadProps(__spreadValues(__spreadValues({
121
+ className: "SearchInput__input",
122
+ onChange: _onChange
123
+ }, inputProps), inputElementProps), {
124
+ ref: props.inputRef
125
+ })), " ", onButtonClick && /* @__PURE__ */ import_react.default.createElement("button", {
126
+ className: "SearchInput__button",
127
+ type: "button",
128
+ onClick: onButtonClick,
129
+ title: buttonText,
130
+ ref: props.buttonRef
131
+ }, buttonText))
132
+ });
133
+ };
134
+ var SearchInput_default = SearchInput;
135
+ // Annotate the CommonJS export names for ESM import in node:
136
+ 0 && (module.exports = {});
@@ -0,0 +1,114 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+ import React, { useState } from "react";
33
+ import getBemClass from "@hugsmidjan/react/utils/getBemClass";
34
+ import FormField from "./FormField";
35
+ const SearchInput = (props) => {
36
+ const _a = props, {
37
+ className,
38
+ label,
39
+ assistText,
40
+ hideLabel,
41
+ disabled,
42
+ readOnly,
43
+ invalid,
44
+ errorMessage,
45
+ required,
46
+ reqText,
47
+ id,
48
+ onChange,
49
+ small,
50
+ onButtonClick,
51
+ buttonText = "Leita",
52
+ ssr
53
+ } = _a, inputElementProps = __objRest(_a, [
54
+ "className",
55
+ "label",
56
+ "assistText",
57
+ "hideLabel",
58
+ "disabled",
59
+ "readOnly",
60
+ "invalid",
61
+ "errorMessage",
62
+ "required",
63
+ "reqText",
64
+ "id",
65
+ "onChange",
66
+ "small",
67
+ "onButtonClick",
68
+ "buttonText",
69
+ "ssr"
70
+ ]);
71
+ const { value, defaultValue, placeholder } = inputElementProps;
72
+ const [hasValue, setHasValue] = useState(void 0);
73
+ const filled = !!(value ?? hasValue ?? !!defaultValue);
74
+ const empty = !filled && !placeholder;
75
+ const _onChange = value != null ? onChange : (e) => {
76
+ setHasValue(!!e.target.value);
77
+ onChange && onChange(e);
78
+ };
79
+ return /* @__PURE__ */ React.createElement(FormField, {
80
+ className: getBemClass("SearchInput", [], className),
81
+ ssr,
82
+ small,
83
+ label,
84
+ empty,
85
+ filled,
86
+ assistText,
87
+ hideLabel,
88
+ disabled,
89
+ readOnly,
90
+ invalid,
91
+ errorMessage,
92
+ required,
93
+ reqText,
94
+ id,
95
+ renderInput: (className2, inputProps, addFocusProps) => /* @__PURE__ */ React.createElement("div", __spreadValues({
96
+ className: className2.input
97
+ }, addFocusProps()), /* @__PURE__ */ React.createElement("input", __spreadProps(__spreadValues(__spreadValues({
98
+ className: "SearchInput__input",
99
+ onChange: _onChange
100
+ }, inputProps), inputElementProps), {
101
+ ref: props.inputRef
102
+ })), " ", onButtonClick && /* @__PURE__ */ React.createElement("button", {
103
+ className: "SearchInput__button",
104
+ type: "button",
105
+ onClick: onButtonClick,
106
+ title: buttonText,
107
+ ref: props.buttonRef
108
+ }, buttonText))
109
+ });
110
+ };
111
+ var SearchInput_default = SearchInput;
112
+ export {
113
+ SearchInput_default as default
114
+ };
@@ -0,0 +1,54 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+ var SearchResultsItem_exports = {};
22
+ __export(SearchResultsItem_exports, {
23
+ default: () => SearchResultsItem_default
24
+ });
25
+ module.exports = __toCommonJS(SearchResultsItem_exports);
26
+ var import_react = __toESM(require("react"));
27
+ var import_Image = __toESM(require("../_abstract/Image"));
28
+ var import_Link = require("../_abstract/Link");
29
+ const SearchResultsItem = (props) => {
30
+ const { highlight, title, summary, href, meta, image } = props;
31
+ const bem = highlight ? "SearchResultsHighlightItem" : "SearchResultsItem";
32
+ const metaArr = Array.isArray(meta) ? meta : [meta];
33
+ return /* @__PURE__ */ import_react.default.createElement("li", {
34
+ className: bem
35
+ }, /* @__PURE__ */ import_react.default.createElement(import_Link.Link, {
36
+ className: bem + "__link",
37
+ href
38
+ }, /* @__PURE__ */ import_react.default.createElement("h3", {
39
+ className: bem + "__title"
40
+ }, title), metaArr.length > 0 && /* @__PURE__ */ import_react.default.createElement("span", {
41
+ className: bem + "__meta"
42
+ }, metaArr.map((item, i) => typeof item === "function" ? item() : item && /* @__PURE__ */ import_react.default.createElement("span", {
43
+ key: i
44
+ }, item))), highlight && image && /* @__PURE__ */ import_react.default.createElement(import_Image.default, {
45
+ className: bem + "__image",
46
+ src: image
47
+ }), /* @__PURE__ */ import_react.default.createElement("div", {
48
+ className: bem + "__summary",
49
+ dangerouslySetInnerHTML: { __html: summary }
50
+ })));
51
+ };
52
+ var SearchResultsItem_default = SearchResultsItem;
53
+ // Annotate the CommonJS export names for ESM import in node:
54
+ 0 && (module.exports = {});
@@ -0,0 +1,30 @@
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 /* @__PURE__ */ React.createElement("li", {
9
+ className: bem
10
+ }, /* @__PURE__ */ React.createElement(Link, {
11
+ className: bem + "__link",
12
+ href
13
+ }, /* @__PURE__ */ React.createElement("h3", {
14
+ className: bem + "__title"
15
+ }, title), metaArr.length > 0 && /* @__PURE__ */ React.createElement("span", {
16
+ className: bem + "__meta"
17
+ }, metaArr.map((item, i) => typeof item === "function" ? item() : item && /* @__PURE__ */ React.createElement("span", {
18
+ key: i
19
+ }, item))), highlight && image && /* @__PURE__ */ React.createElement(Image, {
20
+ className: bem + "__image",
21
+ src: image
22
+ }), /* @__PURE__ */ React.createElement("div", {
23
+ className: bem + "__summary",
24
+ dangerouslySetInnerHTML: { __html: summary }
25
+ })));
26
+ };
27
+ var SearchResultsItem_default = SearchResultsItem;
28
+ export {
29
+ SearchResultsItem_default as default
30
+ };
@@ -0,0 +1,172 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __export = (target, all) => {
22
+ for (var name in all)
23
+ __defProp(target, name, { get: all[name], enumerable: true });
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (let key of __getOwnPropNames(from))
28
+ if (!__hasOwnProp.call(to, key) && key !== except)
29
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
+ }
31
+ return to;
32
+ };
33
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
34
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
35
+ var SearchResults_exports = {};
36
+ __export(SearchResults_exports, {
37
+ default: () => SearchResults_default
38
+ });
39
+ module.exports = __toCommonJS(SearchResults_exports);
40
+ var import_react = __toESM(require("react"));
41
+ var import_react_intersection_observer = require("react-intersection-observer");
42
+ var import_prettyNum = require("@hugsmidjan/qj/prettyNum");
43
+ var import_range = __toESM(require("@hugsmidjan/qj/range"));
44
+ var import_hooks = require("@hugsmidjan/react/hooks");
45
+ var import_getBemClass = __toESM(require("@hugsmidjan/react/utils/getBemClass"));
46
+ var import_i18n = require("@reykjavik/hanna-utils/i18n");
47
+ var import_SearchResultsItem = __toESM(require("./SearchResults/_SearchResultsItem"));
48
+ var import_Alert = __toESM(require("./Alert"));
49
+ var import_Tabs = __toESM(require("./Tabs"));
50
+ const renderDefaultErrorText = () => /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, "\xDAps, \xFEa\xF0 hefur komi\xF0 upp villa. M\xE1 bj\xF3\xF0a \xFE\xE9r a\xF0 pr\xF3fa aftur a\xF0 leita?", /* @__PURE__ */ import_react.default.createElement("br", null), "Ef ekkert l\xE1t er \xE1 villunni \xFE\xE1 kunnum vi\xF0 a\xF0 meta a\xF0 \xFE\xFA l\xE1tir okkur vita.");
51
+ const defaultTexts = {
52
+ en: {
53
+ lang: "en",
54
+ loadQueryTitle: "Loading results...",
55
+ resultsTitle: "results found for",
56
+ noResultsTitle: "No results were found for",
57
+ loadMore: "Load more"
58
+ },
59
+ is: {
60
+ lang: "is",
61
+ loadQueryTitle: "S\xE6ki ni\xF0urst\xF6\xF0ur...",
62
+ resultsTitle: "leitarni\xF0urst\xF6\xF0ur fyrir",
63
+ noResultsTitle: "Engar leitarni\xF0urst\xF6\xF0ur fundust fyrir",
64
+ loadMore: "S\xE6kja fleiri"
65
+ }
66
+ };
67
+ const SearchResults_Tabs = (props) => {
68
+ const { domid, filters, activeIdx, setFilter, lang } = props;
69
+ const tabs = (0, import_react.useMemo)(() => (filters || []).map(({ label, count }) => ({
70
+ label,
71
+ badge: (0, import_prettyNum.prettyNum)(count, { lang })
72
+ })), [filters, lang]);
73
+ return tabs.length ? /* @__PURE__ */ import_react.default.createElement(import_Tabs.default, {
74
+ role: "tablist",
75
+ "aria-controls": domid,
76
+ tabs,
77
+ activeIdx: activeIdx || 0,
78
+ onSetActive: (i) => setFilter && setFilter(i)
79
+ }) : null;
80
+ };
81
+ const LoadingScaffold = (props) => props.count ? /* @__PURE__ */ import_react.default.createElement("ol", {
82
+ className: "SearchResults__list SearchResults__list--loading"
83
+ }, (0, import_range.default)(1, props.count).map((item, i) => /* @__PURE__ */ import_react.default.createElement(import_SearchResultsItem.default, {
84
+ key: i,
85
+ title: "...",
86
+ summary: "",
87
+ href: ""
88
+ }))) : null;
89
+ const NUM_AUTOLOADS = 2;
90
+ const SearchResults__loadmore = (props) => {
91
+ const { status, hits, numItems, loadMore, pageSize, texts } = props;
92
+ const { lang } = texts;
93
+ const moreCount = (hits || 0) - (numItems || 0);
94
+ const autoLoadCount = (0, import_react.useRef)(0);
95
+ const skip = !loadMore || autoLoadCount.current >= NUM_AUTOLOADS;
96
+ const [refFn, theEndIsNigh] = (0, import_react_intersection_observer.useInView)({
97
+ rootMargin: "150px 0px 0px 0px",
98
+ skip
99
+ });
100
+ (0, import_react.useEffect)(() => {
101
+ if (theEndIsNigh && loadMore) {
102
+ autoLoadCount.current = autoLoadCount.current + 1;
103
+ loadMore();
104
+ }
105
+ }, [theEndIsNigh, loadMore]);
106
+ const moreAvailable = status === "results" && moreCount && loadMore;
107
+ return status === "loadingmore" ? /* @__PURE__ */ import_react.default.createElement(LoadingScaffold, {
108
+ count: Math.min(pageSize, moreCount)
109
+ }) : moreAvailable ? /* @__PURE__ */ import_react.default.createElement("button", {
110
+ ref: refFn,
111
+ className: "SearchResults__loadmore",
112
+ type: "button",
113
+ onClick: loadMore
114
+ }, texts.loadMore, " ", /* @__PURE__ */ import_react.default.createElement("span", {
115
+ className: "SearchResults__loadmore__count"
116
+ }, "(", (0, import_prettyNum.prettyNum)(moreCount, { lang }), ")")) : null;
117
+ };
118
+ const renderTitle = (props, texts) => {
119
+ const { status, totalHits, query } = props;
120
+ const lang = texts.lang || props.lang || import_i18n.DEFAULT_LANG;
121
+ return /* @__PURE__ */ import_react.default.createElement("h2", {
122
+ className: "SearchResults__title"
123
+ }, status === "loadingquery" ? texts.loadQueryTitle : totalHits ? (0, import_prettyNum.prettyNum)(totalHits, { lang }) + " " + texts.resultsTitle : texts.noResultsTitle, /* @__PURE__ */ import_react.default.createElement("span", {
124
+ className: "SearchResults__query"
125
+ }, query));
126
+ };
127
+ const renderResults = (props) => {
128
+ const { status, pageSize, items, hits } = props;
129
+ if (status === "loadingquery" || status === "loadingfilter") {
130
+ return /* @__PURE__ */ import_react.default.createElement(LoadingScaffold, {
131
+ count: Math.min(pageSize, hits || 999)
132
+ });
133
+ }
134
+ return items && items.length ? /* @__PURE__ */ import_react.default.createElement("ol", {
135
+ className: "SearchResults__list"
136
+ }, items.map((item, i) => /* @__PURE__ */ import_react.default.createElement(import_SearchResultsItem.default, __spreadValues({
137
+ key: i
138
+ }, item)))) : null;
139
+ };
140
+ const renderLoadMore = (props, texts) => {
141
+ const { hits, items, status, pageSize, loadMore } = props;
142
+ return /* @__PURE__ */ import_react.default.createElement(SearchResults__loadmore, {
143
+ hits,
144
+ numItems: items && items.length,
145
+ status,
146
+ pageSize,
147
+ loadMore,
148
+ texts
149
+ });
150
+ };
151
+ const SearchResults = (props) => {
152
+ const { filters, activeFilterIdx, setFilter, status, errorText } = props;
153
+ const texts = (0, import_i18n.getTexts)(props, defaultTexts);
154
+ const domid = (0, import_hooks.useDomid)();
155
+ return /* @__PURE__ */ import_react.default.createElement("div", {
156
+ className: (0, import_getBemClass.default)("SearchResults", status !== "results" && status)
157
+ }, renderTitle(props, texts), /* @__PURE__ */ import_react.default.createElement(SearchResults_Tabs, {
158
+ domid,
159
+ filters,
160
+ activeIdx: activeFilterIdx,
161
+ setFilter,
162
+ lang: texts.lang
163
+ }), /* @__PURE__ */ import_react.default.createElement("div", {
164
+ className: "SearchResults__results",
165
+ id: domid
166
+ }, renderResults(props), status === "error" && /* @__PURE__ */ import_react.default.createElement(import_Alert.default, {
167
+ type: "error"
168
+ }, errorText || renderDefaultErrorText()), renderLoadMore(props, texts)));
169
+ };
170
+ var SearchResults_default = SearchResults;
171
+ // Annotate the CommonJS export names for ESM import in node:
172
+ 0 && (module.exports = {});
@@ -0,0 +1,150 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ import React, { useEffect, useMemo, useRef } from "react";
18
+ import { useInView } from "react-intersection-observer";
19
+ import { prettyNum } from "@hugsmidjan/qj/prettyNum";
20
+ import range from "@hugsmidjan/qj/range";
21
+ import { useDomid } from "@hugsmidjan/react/hooks";
22
+ import getBemClass from "@hugsmidjan/react/utils/getBemClass";
23
+ import { DEFAULT_LANG, getTexts } from "@reykjavik/hanna-utils/i18n";
24
+ import SearchResultsItem from "./SearchResults/_SearchResultsItem";
25
+ import Alert from "./Alert";
26
+ import Tabs from "./Tabs";
27
+ const renderDefaultErrorText = () => /* @__PURE__ */ React.createElement(React.Fragment, null, "\xDAps, \xFEa\xF0 hefur komi\xF0 upp villa. M\xE1 bj\xF3\xF0a \xFE\xE9r a\xF0 pr\xF3fa aftur a\xF0 leita?", /* @__PURE__ */ React.createElement("br", null), "Ef ekkert l\xE1t er \xE1 villunni \xFE\xE1 kunnum vi\xF0 a\xF0 meta a\xF0 \xFE\xFA l\xE1tir okkur vita.");
28
+ const defaultTexts = {
29
+ en: {
30
+ lang: "en",
31
+ loadQueryTitle: "Loading results...",
32
+ resultsTitle: "results found for",
33
+ noResultsTitle: "No results were found for",
34
+ loadMore: "Load more"
35
+ },
36
+ is: {
37
+ lang: "is",
38
+ loadQueryTitle: "S\xE6ki ni\xF0urst\xF6\xF0ur...",
39
+ resultsTitle: "leitarni\xF0urst\xF6\xF0ur fyrir",
40
+ noResultsTitle: "Engar leitarni\xF0urst\xF6\xF0ur fundust fyrir",
41
+ loadMore: "S\xE6kja fleiri"
42
+ }
43
+ };
44
+ const SearchResults_Tabs = (props) => {
45
+ const { domid, filters, activeIdx, setFilter, lang } = props;
46
+ const tabs = useMemo(() => (filters || []).map(({ label, count }) => ({
47
+ label,
48
+ badge: prettyNum(count, { lang })
49
+ })), [filters, lang]);
50
+ return tabs.length ? /* @__PURE__ */ React.createElement(Tabs, {
51
+ role: "tablist",
52
+ "aria-controls": domid,
53
+ tabs,
54
+ activeIdx: activeIdx || 0,
55
+ onSetActive: (i) => setFilter && setFilter(i)
56
+ }) : null;
57
+ };
58
+ const LoadingScaffold = (props) => props.count ? /* @__PURE__ */ React.createElement("ol", {
59
+ className: "SearchResults__list SearchResults__list--loading"
60
+ }, range(1, props.count).map((item, i) => /* @__PURE__ */ React.createElement(SearchResultsItem, {
61
+ key: i,
62
+ title: "...",
63
+ summary: "",
64
+ href: ""
65
+ }))) : null;
66
+ const NUM_AUTOLOADS = 2;
67
+ const SearchResults__loadmore = (props) => {
68
+ const { status, hits, numItems, loadMore, pageSize, texts } = props;
69
+ const { lang } = texts;
70
+ const moreCount = (hits || 0) - (numItems || 0);
71
+ const autoLoadCount = useRef(0);
72
+ const skip = !loadMore || autoLoadCount.current >= NUM_AUTOLOADS;
73
+ const [refFn, theEndIsNigh] = useInView({
74
+ rootMargin: "150px 0px 0px 0px",
75
+ skip
76
+ });
77
+ useEffect(() => {
78
+ if (theEndIsNigh && loadMore) {
79
+ autoLoadCount.current = autoLoadCount.current + 1;
80
+ loadMore();
81
+ }
82
+ }, [theEndIsNigh, loadMore]);
83
+ const moreAvailable = status === "results" && moreCount && loadMore;
84
+ return status === "loadingmore" ? /* @__PURE__ */ React.createElement(LoadingScaffold, {
85
+ count: Math.min(pageSize, moreCount)
86
+ }) : moreAvailable ? /* @__PURE__ */ React.createElement("button", {
87
+ ref: refFn,
88
+ className: "SearchResults__loadmore",
89
+ type: "button",
90
+ onClick: loadMore
91
+ }, texts.loadMore, " ", /* @__PURE__ */ React.createElement("span", {
92
+ className: "SearchResults__loadmore__count"
93
+ }, "(", prettyNum(moreCount, { lang }), ")")) : null;
94
+ };
95
+ const renderTitle = (props, texts) => {
96
+ const { status, totalHits, query } = props;
97
+ const lang = texts.lang || props.lang || DEFAULT_LANG;
98
+ return /* @__PURE__ */ React.createElement("h2", {
99
+ className: "SearchResults__title"
100
+ }, status === "loadingquery" ? texts.loadQueryTitle : totalHits ? prettyNum(totalHits, { lang }) + " " + texts.resultsTitle : texts.noResultsTitle, /* @__PURE__ */ React.createElement("span", {
101
+ className: "SearchResults__query"
102
+ }, query));
103
+ };
104
+ const renderResults = (props) => {
105
+ const { status, pageSize, items, hits } = props;
106
+ if (status === "loadingquery" || status === "loadingfilter") {
107
+ return /* @__PURE__ */ React.createElement(LoadingScaffold, {
108
+ count: Math.min(pageSize, hits || 999)
109
+ });
110
+ }
111
+ return items && items.length ? /* @__PURE__ */ React.createElement("ol", {
112
+ className: "SearchResults__list"
113
+ }, items.map((item, i) => /* @__PURE__ */ React.createElement(SearchResultsItem, __spreadValues({
114
+ key: i
115
+ }, item)))) : null;
116
+ };
117
+ const renderLoadMore = (props, texts) => {
118
+ const { hits, items, status, pageSize, loadMore } = props;
119
+ return /* @__PURE__ */ React.createElement(SearchResults__loadmore, {
120
+ hits,
121
+ numItems: items && items.length,
122
+ status,
123
+ pageSize,
124
+ loadMore,
125
+ texts
126
+ });
127
+ };
128
+ const SearchResults = (props) => {
129
+ const { filters, activeFilterIdx, setFilter, status, errorText } = props;
130
+ const texts = getTexts(props, defaultTexts);
131
+ const domid = useDomid();
132
+ return /* @__PURE__ */ React.createElement("div", {
133
+ className: getBemClass("SearchResults", status !== "results" && status)
134
+ }, renderTitle(props, texts), /* @__PURE__ */ React.createElement(SearchResults_Tabs, {
135
+ domid,
136
+ filters,
137
+ activeIdx: activeFilterIdx,
138
+ setFilter,
139
+ lang: texts.lang
140
+ }), /* @__PURE__ */ React.createElement("div", {
141
+ className: "SearchResults__results",
142
+ id: domid
143
+ }, renderResults(props), status === "error" && /* @__PURE__ */ React.createElement(Alert, {
144
+ type: "error"
145
+ }, errorText || renderDefaultErrorText()), renderLoadMore(props, texts)));
146
+ };
147
+ var SearchResults_default = SearchResults;
148
+ export {
149
+ SearchResults_default as default
150
+ };