@reykjavik/hanna-react 0.10.56 → 0.10.57

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 (275) hide show
  1. package/{AccordionList.jsx → AccordionList.js} +5 -14
  2. package/{ActionCards.jsx → ActionCards.js} +2 -3
  3. package/{Alert.jsx → Alert.js} +6 -8
  4. package/ArticleCarousel/_ArticleCarouselCard.js +31 -0
  5. package/{ArticleCarousel.jsx → ArticleCarousel.js} +1 -1
  6. package/{ArticleMeta.jsx → ArticleMeta.js} +9 -8
  7. package/{Attention.jsx → Attention.js} +1 -1
  8. package/{BasicTable.jsx → BasicTable.js} +11 -12
  9. package/{Bling.jsx → Bling.js} +2 -2
  10. package/{BlockBreak.jsx → BlockBreak.js} +1 -1
  11. package/{BlockQuote.jsx → BlockQuote.js} +1 -1
  12. package/BreadCrumbs.js +33 -0
  13. package/{ButtonBack.jsx → ButtonBack.js} +1 -1
  14. package/{ButtonBar.jsx → ButtonBar.js} +2 -4
  15. package/{ButtonPrimary.jsx → ButtonPrimary.js} +1 -1
  16. package/{ButtonSecondary.jsx → ButtonSecondary.js} +1 -1
  17. package/{ButtonTertiary.jsx → ButtonTertiary.js} +1 -1
  18. package/CHANGELOG.md +1 -1
  19. package/{Carousel.jsx → Carousel.js} +1 -1
  20. package/{CarouselStepper.jsx → CarouselStepper.js} +1 -1
  21. package/{CenterColumn.jsx → CenterColumn.js} +1 -3
  22. package/{Checkbox.jsx → Checkbox.js} +1 -1
  23. package/{CheckboxButtonsGroup.jsx → CheckboxButtonsGroup.js} +2 -2
  24. package/{CheckboxGroup.jsx → CheckboxGroup.js} +1 -1
  25. package/{CityBlock.jsx → CityBlock.js} +1 -1
  26. package/{ContactBubble.jsx → ContactBubble.js} +12 -26
  27. package/{ContentArticle.jsx → ContentArticle.js} +9 -12
  28. package/ContentImage.js +23 -0
  29. package/{Datepicker.jsx → Datepicker.js} +17 -18
  30. package/{ExtraLinks.jsx → ExtraLinks.js} +9 -17
  31. package/FeatureList.js +21 -0
  32. package/{FieldGroup.jsx → FieldGroup.js} +3 -4
  33. package/{FileInput.jsx → FileInput.js} +22 -25
  34. package/{Foonote.jsx → Foonote.js} +0 -0
  35. package/FooterBadges.js +17 -0
  36. package/FooterInfo.js +14 -0
  37. package/{Footnote.jsx → Footnote.js} +1 -1
  38. package/{Form.jsx → Form.js} +2 -4
  39. package/{FormField.jsx → FormField.js} +20 -22
  40. package/Gallery/{_GalleryItem.jsx → _GalleryItem.js} +8 -9
  41. package/Gallery/{_GalleryModal.jsx → _GalleryModal.js} +11 -15
  42. package/Gallery/{_GalleryModalItem.jsx → _GalleryModalItem.js} +5 -7
  43. package/{Gallery.jsx → Gallery.js} +3 -4
  44. package/GridBlocks.js +29 -0
  45. package/{Heading.jsx → Heading.js} +2 -4
  46. package/{HeroBlock.jsx → HeroBlock.js} +8 -9
  47. package/{IframeBlock.jsx → IframeBlock.js} +6 -6
  48. package/{Illustration.jsx → Illustration.js} +1 -1
  49. package/{ImageCards.jsx → ImageCards.js} +2 -3
  50. package/InfoBlock.js +18 -0
  51. package/{InfoHero.jsx → InfoHero.js} +9 -15
  52. package/{IslandBlock.jsx → IslandBlock.js} +1 -1
  53. package/{IslandPageBlock.jsx → IslandPageBlock.js} +1 -1
  54. package/{LabeledTextBlock.jsx → LabeledTextBlock.js} +5 -7
  55. package/Layout.js +58 -0
  56. package/MainMenu/{_Auxiliary.jsx → _Auxiliary.js} +5 -11
  57. package/MainMenu/_PrimaryPanel.js +29 -0
  58. package/{MainMenu.jsx → MainMenu.js} +27 -40
  59. package/{MiniMetrics.jsx → MiniMetrics.js} +5 -4
  60. package/Modal.js +19 -0
  61. package/{NameCard.jsx → NameCard.js} +18 -23
  62. package/{NameCards.jsx → NameCards.js} +1 -3
  63. package/{NewsHero.jsx → NewsHero.js} +7 -9
  64. package/{PageFilter.jsx → PageFilter.js} +6 -7
  65. package/{PageHeading.jsx → PageHeading.js} +2 -4
  66. package/ProcessOverview.js +22 -0
  67. package/{PullQuote.jsx → PullQuote.js} +1 -1
  68. package/{RadioButtonsGroup.jsx → RadioButtonsGroup.js} +2 -2
  69. package/{RadioGroup.jsx → RadioGroup.js} +2 -2
  70. package/{RelatedLinks.jsx → RelatedLinks.js} +9 -13
  71. package/{RowBlock.jsx → RowBlock.js} +1 -3
  72. package/{RowBlockColumn.jsx → RowBlockColumn.js} +2 -4
  73. package/{SearchInput.jsx → SearchInput.js} +4 -6
  74. package/SearchResults/_SearchResultsItem.js +20 -0
  75. package/{SearchResults.jsx → SearchResults.js} +27 -36
  76. package/{SeenEffect.jsx → SeenEffect.js} +1 -1
  77. package/{Selectbox.jsx → Selectbox.js} +1 -1
  78. package/{ShareButtons.jsx → ShareButtons.js} +6 -12
  79. package/{Sharpie.jsx → Sharpie.js} +1 -1
  80. package/{SiteSearchAutocomplete.jsx → SiteSearchAutocomplete.js} +5 -7
  81. package/{SiteSearchCurtain.jsx → SiteSearchCurtain.js} +1 -5
  82. package/{SiteSearchInput.jsx → SiteSearchInput.js} +10 -12
  83. package/{Skeleton.jsx → Skeleton.js} +5 -5
  84. package/{SubHeading.jsx → SubHeading.js} +2 -4
  85. package/{Tabs.jsx → Tabs.js} +12 -12
  86. package/{TagPill.jsx → TagPill.js} +11 -16
  87. package/{TextBlock.jsx → TextBlock.js} +2 -4
  88. package/{TextButton.jsx → TextButton.js} +1 -1
  89. package/{TextInput.jsx → TextInput.js} +1 -1
  90. package/{VSpacer.jsx → VSpacer.js} +1 -1
  91. package/{VerticalTabsTOC.jsx → VerticalTabsTOC.js} +2 -2
  92. package/WizardLayout.js +35 -0
  93. package/{WizardLayoutClose.jsx → WizardLayoutClose.js} +1 -1
  94. package/WizardStepper.js +30 -0
  95. package/_abstract/{Button.jsx → Button.js} +2 -6
  96. package/_abstract/CardList.js +43 -0
  97. package/_abstract/{Image.jsx → Image.js} +10 -12
  98. package/_abstract/{Link.jsx → Link.js} +0 -0
  99. package/_abstract/TogglerGroup.js +34 -0
  100. package/_abstract/{TogglerGroupField.jsx → TogglerGroupField.js} +3 -3
  101. package/_abstract/{TogglerInput.jsx → TogglerInput.js} +13 -15
  102. package/_abstract/{_AbstractCarousel.jsx → _AbstractCarousel.js} +7 -10
  103. package/_abstract/{_Blings.jsx → _Blings.js} +1 -3
  104. package/_abstract/_Block.js +29 -0
  105. package/_abstract/{_Quote.jsx → _Quote.js} +3 -6
  106. package/_abstract/{breakOnNL.jsx → breakOnNL.js} +1 -1
  107. package/esm/AccordionList.js +24 -0
  108. package/esm/{ActionCards.jsx → ActionCards.js} +2 -3
  109. package/esm/{Alert.jsx → Alert.js} +6 -8
  110. package/esm/ArticleCarousel/_ArticleCarouselCard.js +24 -0
  111. package/esm/{ArticleCarousel.jsx → ArticleCarousel.js} +1 -1
  112. package/esm/ArticleMeta.js +18 -0
  113. package/esm/Attention.js +4 -0
  114. package/esm/{BasicTable.jsx → BasicTable.js} +11 -12
  115. package/esm/{Bling.jsx → Bling.js} +2 -2
  116. package/esm/BlockBreak.js +6 -0
  117. package/esm/BlockQuote.js +4 -0
  118. package/esm/BreadCrumbs.js +28 -0
  119. package/esm/ButtonBack.js +4 -0
  120. package/esm/{ButtonBar.jsx → ButtonBar.js} +2 -4
  121. package/esm/ButtonPrimary.js +4 -0
  122. package/esm/ButtonSecondary.js +4 -0
  123. package/esm/{ButtonTertiary.jsx → ButtonTertiary.js} +1 -1
  124. package/esm/Carousel.js +4 -0
  125. package/esm/CarouselStepper.js +4 -0
  126. package/esm/CenterColumn.js +7 -0
  127. package/esm/Checkbox.js +4 -0
  128. package/esm/{CheckboxButtonsGroup.jsx → CheckboxButtonsGroup.js} +2 -2
  129. package/esm/{CheckboxGroup.jsx → CheckboxGroup.js} +1 -1
  130. package/esm/{CityBlock.jsx → CityBlock.js} +1 -1
  131. package/esm/{ContactBubble.jsx → ContactBubble.js} +12 -26
  132. package/esm/ContentArticle.js +21 -0
  133. package/esm/ContentImage.js +18 -0
  134. package/esm/{Datepicker.jsx → Datepicker.js} +17 -18
  135. package/esm/{ExtraLinks.jsx → ExtraLinks.js} +9 -17
  136. package/esm/FeatureList.js +16 -0
  137. package/esm/FieldGroup.js +9 -0
  138. package/esm/{FileInput.jsx → FileInput.js} +22 -25
  139. package/esm/{Foonote.jsx → Foonote.js} +0 -0
  140. package/esm/FooterBadges.js +12 -0
  141. package/esm/FooterInfo.js +9 -0
  142. package/esm/Footnote.js +3 -0
  143. package/esm/{Form.jsx → Form.js} +2 -4
  144. package/esm/{FormField.jsx → FormField.js} +20 -22
  145. package/esm/Gallery/{_GalleryItem.jsx → _GalleryItem.js} +8 -9
  146. package/esm/Gallery/{_GalleryModal.jsx → _GalleryModal.js} +11 -15
  147. package/esm/Gallery/{_GalleryModalItem.jsx → _GalleryModalItem.js} +5 -7
  148. package/esm/{Gallery.jsx → Gallery.js} +3 -4
  149. package/esm/GridBlocks.js +24 -0
  150. package/esm/{Heading.jsx → Heading.js} +2 -4
  151. package/esm/HeroBlock.js +21 -0
  152. package/esm/{IframeBlock.jsx → IframeBlock.js} +6 -6
  153. package/esm/{Illustration.jsx → Illustration.js} +1 -1
  154. package/esm/{ImageCards.jsx → ImageCards.js} +2 -3
  155. package/esm/InfoBlock.js +13 -0
  156. package/esm/{InfoHero.jsx → InfoHero.js} +9 -15
  157. package/esm/{IslandBlock.jsx → IslandBlock.js} +1 -1
  158. package/esm/{IslandPageBlock.jsx → IslandPageBlock.js} +1 -1
  159. package/esm/LabeledTextBlock.js +14 -0
  160. package/esm/Layout.js +52 -0
  161. package/esm/MainMenu/_Auxiliary.js +13 -0
  162. package/esm/MainMenu/_PrimaryPanel.js +22 -0
  163. package/esm/{MainMenu.jsx → MainMenu.js} +27 -40
  164. package/esm/MiniMetrics.js +12 -0
  165. package/esm/Modal.js +14 -0
  166. package/esm/{NameCard.jsx → NameCard.js} +18 -23
  167. package/esm/NameCards.js +7 -0
  168. package/esm/{NewsHero.jsx → NewsHero.js} +7 -9
  169. package/esm/PageFilter.js +15 -0
  170. package/esm/{PageHeading.jsx → PageHeading.js} +2 -4
  171. package/esm/ProcessOverview.js +17 -0
  172. package/esm/PullQuote.js +4 -0
  173. package/esm/{RadioButtonsGroup.jsx → RadioButtonsGroup.js} +2 -2
  174. package/esm/RadioGroup.js +7 -0
  175. package/esm/RelatedLinks.js +26 -0
  176. package/esm/{RowBlock.jsx → RowBlock.js} +1 -3
  177. package/esm/{RowBlockColumn.jsx → RowBlockColumn.js} +2 -4
  178. package/esm/{SearchInput.jsx → SearchInput.js} +4 -6
  179. package/esm/SearchResults/_SearchResultsItem.js +15 -0
  180. package/esm/{SearchResults.jsx → SearchResults.js} +27 -36
  181. package/esm/{SeenEffect.jsx → SeenEffect.js} +1 -1
  182. package/esm/{Selectbox.jsx → Selectbox.js} +1 -1
  183. package/esm/{ShareButtons.jsx → ShareButtons.js} +6 -12
  184. package/esm/{Sharpie.jsx → Sharpie.js} +1 -1
  185. package/esm/{SiteSearchAutocomplete.jsx → SiteSearchAutocomplete.js} +5 -7
  186. package/esm/{SiteSearchCurtain.jsx → SiteSearchCurtain.js} +1 -5
  187. package/esm/{SiteSearchInput.jsx → SiteSearchInput.js} +10 -12
  188. package/esm/{Skeleton.jsx → Skeleton.js} +5 -5
  189. package/esm/{SubHeading.jsx → SubHeading.js} +2 -4
  190. package/esm/{Tabs.jsx → Tabs.js} +12 -12
  191. package/esm/{TagPill.jsx → TagPill.js} +11 -16
  192. package/esm/{TextBlock.jsx → TextBlock.js} +2 -4
  193. package/esm/{TextButton.jsx → TextButton.js} +1 -1
  194. package/esm/{TextInput.jsx → TextInput.js} +1 -1
  195. package/esm/{VSpacer.jsx → VSpacer.js} +1 -1
  196. package/esm/{VerticalTabsTOC.jsx → VerticalTabsTOC.js} +2 -2
  197. package/esm/WizardLayout.js +30 -0
  198. package/esm/WizardLayoutClose.js +4 -0
  199. package/esm/WizardStepper.js +25 -0
  200. package/esm/_abstract/{Button.jsx → Button.js} +2 -6
  201. package/esm/_abstract/CardList.js +36 -0
  202. package/esm/_abstract/{Image.jsx → Image.js} +10 -12
  203. package/esm/_abstract/{Link.jsx → Link.js} +0 -0
  204. package/esm/_abstract/TogglerGroup.js +29 -0
  205. package/esm/_abstract/{TogglerGroupField.jsx → TogglerGroupField.js} +3 -3
  206. package/esm/_abstract/{TogglerInput.jsx → TogglerInput.js} +13 -15
  207. package/esm/_abstract/{_AbstractCarousel.jsx → _AbstractCarousel.js} +7 -10
  208. package/esm/_abstract/_Blings.js +12 -0
  209. package/esm/_abstract/_Block.js +24 -0
  210. package/esm/_abstract/_Quote.js +8 -0
  211. package/esm/_abstract/{breakOnNL.jsx → breakOnNL.js} +1 -1
  212. package/package.json +91 -91
  213. package/ArticleCarousel/_ArticleCarouselCard.jsx +0 -32
  214. package/BreadCrumbs.jsx +0 -36
  215. package/ContentImage.jsx +0 -18
  216. package/FeatureList.jsx +0 -28
  217. package/FooterBadges.jsx +0 -21
  218. package/FooterInfo.jsx +0 -19
  219. package/GridBlocks.jsx +0 -40
  220. package/InfoBlock.jsx +0 -23
  221. package/Layout.jsx +0 -69
  222. package/MainMenu/_PrimaryPanel.jsx +0 -37
  223. package/Modal.jsx +0 -21
  224. package/ProcessOverview.jsx +0 -25
  225. package/SearchResults/_SearchResultsItem.jsx +0 -24
  226. package/WizardLayout.jsx +0 -44
  227. package/WizardStepper.jsx +0 -34
  228. package/_abstract/CardList.jsx +0 -46
  229. package/_abstract/TogglerGroup.jsx +0 -36
  230. package/_abstract/_Block.jsx +0 -32
  231. package/esm/AccordionList.jsx +0 -33
  232. package/esm/ArticleCarousel/_ArticleCarouselCard.jsx +0 -25
  233. package/esm/ArticleMeta.jsx +0 -17
  234. package/esm/Attention.jsx +0 -4
  235. package/esm/BlockBreak.jsx +0 -6
  236. package/esm/BlockQuote.jsx +0 -4
  237. package/esm/BreadCrumbs.jsx +0 -31
  238. package/esm/ButtonBack.jsx +0 -4
  239. package/esm/ButtonPrimary.jsx +0 -4
  240. package/esm/ButtonSecondary.jsx +0 -4
  241. package/esm/Carousel.jsx +0 -4
  242. package/esm/CarouselStepper.jsx +0 -4
  243. package/esm/CenterColumn.jsx +0 -9
  244. package/esm/Checkbox.jsx +0 -4
  245. package/esm/ContentArticle.jsx +0 -24
  246. package/esm/ContentImage.jsx +0 -13
  247. package/esm/FeatureList.jsx +0 -23
  248. package/esm/FieldGroup.jsx +0 -10
  249. package/esm/FooterBadges.jsx +0 -16
  250. package/esm/FooterInfo.jsx +0 -14
  251. package/esm/Footnote.jsx +0 -3
  252. package/esm/GridBlocks.jsx +0 -35
  253. package/esm/HeroBlock.jsx +0 -22
  254. package/esm/InfoBlock.jsx +0 -18
  255. package/esm/LabeledTextBlock.jsx +0 -16
  256. package/esm/Layout.jsx +0 -63
  257. package/esm/MainMenu/_Auxiliary.jsx +0 -19
  258. package/esm/MainMenu/_PrimaryPanel.jsx +0 -30
  259. package/esm/MiniMetrics.jsx +0 -11
  260. package/esm/Modal.jsx +0 -16
  261. package/esm/NameCards.jsx +0 -9
  262. package/esm/PageFilter.jsx +0 -16
  263. package/esm/ProcessOverview.jsx +0 -20
  264. package/esm/PullQuote.jsx +0 -4
  265. package/esm/RadioGroup.jsx +0 -7
  266. package/esm/RelatedLinks.jsx +0 -30
  267. package/esm/SearchResults/_SearchResultsItem.jsx +0 -19
  268. package/esm/WizardLayout.jsx +0 -39
  269. package/esm/WizardLayoutClose.jsx +0 -4
  270. package/esm/WizardStepper.jsx +0 -29
  271. package/esm/_abstract/CardList.jsx +0 -39
  272. package/esm/_abstract/TogglerGroup.jsx +0 -31
  273. package/esm/_abstract/_Blings.jsx +0 -14
  274. package/esm/_abstract/_Block.jsx +0 -27
  275. package/esm/_abstract/_Quote.jsx +0 -11
package/FeatureList.js ADDED
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const seenEffect_1 = require("./utils/seenEffect");
8
+ const Bling_1 = __importDefault(require("./Bling"));
9
+ const FeatureList = (props) => {
10
+ const { title, features, startSeen } = props;
11
+ const [ref] = (0, seenEffect_1.useSeenEffect)(startSeen);
12
+ const _features = features.length ? features : [{ name: '...' }];
13
+ return (react_1.default.createElement(react_1.default.Fragment, null,
14
+ react_1.default.createElement(Bling_1.default, { type: "snake-large", align: "left", vertical: "down-ish" }),
15
+ react_1.default.createElement("div", { className: "FeatureList", ref: ref },
16
+ react_1.default.createElement("h2", { className: "FeatureList__title" }, title),
17
+ react_1.default.createElement("ul", { className: "FeatureList__list" }, _features.map(({ name, icon, iconUrl }, i) => (react_1.default.createElement("li", { key: i, className: "FeatureList__feature", style: iconUrl
18
+ ? { '--efnistakn': `url("${iconUrl}")` }
19
+ : undefined, "data-efnistakn": !iconUrl ? icon : undefined }, name)))))));
20
+ };
21
+ exports.default = FeatureList;
@@ -7,9 +7,8 @@ const react_1 = __importDefault(require("react"));
7
7
  const getBemClass_1 = __importDefault(require("@hugsmidjan/react/utils/getBemClass"));
8
8
  const FieldGroup = (props) => {
9
9
  const { legend, children, className, disabled } = props;
10
- return (<fieldset className={(0, getBemClass_1.default)('FieldGroup', null, className)} role="group" disabled={disabled}>
11
- <legend className="FieldGroup__legend">{legend}</legend>
12
- {children}
13
- </fieldset>);
10
+ return (react_1.default.createElement("fieldset", { className: (0, getBemClass_1.default)('FieldGroup', null, className), role: "group", disabled: disabled },
11
+ react_1.default.createElement("legend", { className: "FieldGroup__legend" }, legend),
12
+ children));
14
13
  };
15
14
  exports.default = FieldGroup;
@@ -156,30 +156,27 @@ const FileInput = (props) => {
156
156
  inputRef.current.files = arrayToFileList([]);
157
157
  }
158
158
  };
159
- const filesList = files.map((file) => (<li key={file.name} className="FileInput__file">
160
- <button className="FileInput__file-remove" type="button" onClick={() => removeFile(file.name)} aria-label={removeFileText}>
161
- {removeFileText}
162
- </button>
163
- <span className="FileInput__fileinfo">
164
- {showImagePreviews && file.preview && (<>
165
- <span className="FileInput__preview">
166
- <img src={file.preview}/>
167
- </span>{' '}
168
- </>)}
169
- <span className="FileInput__filename">{file.name}</span>
170
- {showFileSize && (<small className="FileInput__filesize"> - ({formatBytes(file.size)})</small>)}
171
- </span>
172
- </li>));
173
- return (<FormField_1.default className={(0, getBemClass_1.default)('FileInput', [dropzoneProps.multiple && 'multi'], className)} label={label} id={domid + '-fake'} LabelTag="h4" assistText={assistText} hideLabel={hideLabel} disabled={disabled} invalid={invalid} errorMessage={errorMessage} required={required} reqText={reqText} renderInput={(className, inputProps /* , addFocusProps */) => {
174
- return (<div className={className.control} ref={fileInputWrapper}>
175
- <input className="FileInput__input" name={inputElementProps.name} id={domid} ref={fileInput} type="file" style={{ display: 'none' }} multiple={dropzoneProps.multiple || undefined} required={inputProps.required} // ??? Bad idea ?? Scream test!!
176
- />{' '}
177
- <input className="FileInput__input--fake" {...getInputProps()} tabIndex={undefined} style={undefined} multiple={dropzoneProps.multiple || undefined} {...inputProps} required={undefined}/>{' '}
178
- <div className={(0, getBemClass_1.default)('FileInput__dropzone', [isHover && 'highlight'])} {...getRootProps({ isDragReject })} tabIndex={undefined}>
179
- <p className="FileInput__droptext">{dropzoneText}</p>
180
- </div>
181
- {filesList.length ? <ul className="FileInput__filelist">{filesList}</ul> : ''}
182
- </div>);
183
- }}/>);
159
+ const filesList = files.map((file) => (react_1.default.createElement("li", { key: file.name, className: "FileInput__file" },
160
+ react_1.default.createElement("button", { className: "FileInput__file-remove", type: "button", onClick: () => removeFile(file.name), "aria-label": removeFileText }, removeFileText),
161
+ react_1.default.createElement("span", { className: "FileInput__fileinfo" },
162
+ showImagePreviews && file.preview && (react_1.default.createElement(react_1.default.Fragment, null,
163
+ react_1.default.createElement("span", { className: "FileInput__preview" },
164
+ react_1.default.createElement("img", { src: file.preview })),
165
+ ' ')),
166
+ react_1.default.createElement("span", { className: "FileInput__filename" }, file.name),
167
+ showFileSize && (react_1.default.createElement("small", { className: "FileInput__filesize" },
168
+ " - (",
169
+ formatBytes(file.size),
170
+ ")"))))));
171
+ return (react_1.default.createElement(FormField_1.default, { className: (0, getBemClass_1.default)('FileInput', [dropzoneProps.multiple && 'multi'], className), label: label, id: domid + '-fake', LabelTag: "h4", assistText: assistText, hideLabel: hideLabel, disabled: disabled, invalid: invalid, errorMessage: errorMessage, required: required, reqText: reqText, renderInput: (className, inputProps /* , addFocusProps */) => {
172
+ return (react_1.default.createElement("div", { className: className.control, ref: fileInputWrapper },
173
+ react_1.default.createElement("input", { className: "FileInput__input", name: inputElementProps.name, id: domid, ref: fileInput, type: "file", style: { display: 'none' }, multiple: dropzoneProps.multiple || undefined, required: inputProps.required }),
174
+ ' ',
175
+ react_1.default.createElement("input", Object.assign({ className: "FileInput__input--fake" }, getInputProps(), { tabIndex: undefined, style: undefined, multiple: dropzoneProps.multiple || undefined }, inputProps, { required: undefined })),
176
+ ' ',
177
+ react_1.default.createElement("div", Object.assign({ className: (0, getBemClass_1.default)('FileInput__dropzone', [isHover && 'highlight']) }, getRootProps({ isDragReject }), { tabIndex: undefined }),
178
+ react_1.default.createElement("p", { className: "FileInput__droptext" }, dropzoneText)),
179
+ filesList.length ? react_1.default.createElement("ul", { className: "FileInput__filelist" }, filesList) : ''));
180
+ } }));
184
181
  };
185
182
  exports.default = FileInput;
File without changes
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const Link_1 = require("./_abstract/Link");
8
+ const FooterBadges = (props) => {
9
+ if (!props.badges.length) {
10
+ return null;
11
+ }
12
+ return (react_1.default.createElement("ul", { className: "FooterBadges" }, props.badges.map(({ altText, src, href }, i) => (react_1.default.createElement("li", { key: i, className: "FooterBadges__badge" }, href ? (react_1.default.createElement(Link_1.Link, { href: href },
13
+ ' ',
14
+ react_1.default.createElement("img", { src: src, alt: altText }),
15
+ ' ')) : (react_1.default.createElement("img", { src: src, alt: altText })))))));
16
+ };
17
+ exports.default = FooterBadges;
package/FooterInfo.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const getBemClass_1 = __importDefault(require("@hugsmidjan/react/utils/getBemClass"));
8
+ const FooterInfo = (props) => {
9
+ const { boxes } = props;
10
+ return (react_1.default.createElement("div", { className: "FooterInfo" }, boxes.map((group, i) => (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('FooterInfo__group', group.modifier), role: group.role, key: i },
11
+ react_1.default.createElement("h3", { className: "FooterInfo__grouptitle" }, group.title),
12
+ group.content ? (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('FooterInfo__groupcontent', group.modifier) }, group.content)) : (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('FooterInfo__groupcontent', group.modifier), dangerouslySetInnerHTML: { __html: group.html } })))))));
13
+ };
14
+ exports.default = FooterInfo;
@@ -4,5 +4,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
- const Footnote = (props) => (<div className="Footnote">{props.children}</div>);
7
+ const Footnote = (props) => (react_1.default.createElement("div", { className: "Footnote" }, props.children));
8
8
  exports.default = Footnote;
@@ -7,11 +7,9 @@ const react_1 = __importDefault(require("react"));
7
7
  const getBemClass_1 = __importDefault(require("@hugsmidjan/react/utils/getBemClass"));
8
8
  const Form = (props) => {
9
9
  const { children, align, wide } = props;
10
- return (<form {...props} className={(0, getBemClass_1.default)('Form', [
10
+ return (react_1.default.createElement("form", Object.assign({}, props, { className: (0, getBemClass_1.default)('Form', [
11
11
  align === 'right' && 'align--' + align,
12
12
  !align && wide && 'wide',
13
- ])}>
14
- {children}
15
- </form>);
13
+ ]) }), children));
16
14
  };
17
15
  exports.default = Form;
@@ -78,11 +78,9 @@ const FormField = (props) => {
78
78
  const errorId = errorMessage ? 'error:' + domid : undefined;
79
79
  const assistTextId = assistText ? 'assist:' + domid : undefined;
80
80
  const labelId = LabelTag ? 'label:' + domid : undefined;
81
- const reqStar = required && reqText !== false && (<abbr className={'FormField__label__reqstar'}
82
- // TODO: add mo-better i18n thinking
83
- title={(reqText || 'Þarf að fylla út') + ': '}>
84
- *
85
- </abbr>);
81
+ const reqStar = required && reqText !== false && (react_1.default.createElement("abbr", { className: 'FormField__label__reqstar',
82
+ // TODO: add mo-better i18n thinking
83
+ title: (reqText || 'Þarf að fylla út') + ': ' }, "*"));
86
84
  const inputProps = {
87
85
  id: domid,
88
86
  disabled: disabled,
@@ -92,7 +90,7 @@ const FormField = (props) => {
92
90
  'aria-describedby': assistTextId && errorId ? assistTextId + ' ' + errorId : assistTextId || errorId,
93
91
  'aria-labelledby': labelId, // undefined if normalLabel
94
92
  };
95
- return (<div className={(0, getBemClass_1.default)('FormField', [
93
+ return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('FormField', [
96
94
  small && 'small',
97
95
  hideLabel && 'nolabel',
98
96
  isInvalid && 'invalid',
@@ -101,21 +99,21 @@ const FormField = (props) => {
101
99
  isBrowser && empty && 'empty',
102
100
  isBrowser && filled && 'filled',
103
101
  isBrowser && focused && 'focused',
104
- ], className)} role={group ? 'group' : undefined} ref={props.wrapperRef}>
105
- {LabelTag ? (<LabelTag className={'FormField__label'} id={labelId}>
106
- {' '}
107
- {reqStar} {label}{' '}
108
- </LabelTag>) : (<label className={'FormField__label'} htmlFor={domid}>
109
- {' '}
110
- {reqStar} {label}{' '}
111
- </label>)}{' '}
112
- {renderInput(inputClassNames, inputProps, addFocusProps, isBrowser)}
113
- {assistText && (<div id={assistTextId} className={'FormField__assist'}>
114
- {assistText}
115
- </div>)}
116
- {errorMessage && (<div id={errorId} className={'FormField__error'}>
117
- {errorMessage}
118
- </div>)}
119
- </div>);
102
+ ], className), role: group ? 'group' : undefined, ref: props.wrapperRef },
103
+ LabelTag ? (react_1.default.createElement(LabelTag, { className: 'FormField__label', id: labelId },
104
+ ' ',
105
+ reqStar,
106
+ " ",
107
+ label,
108
+ ' ')) : (react_1.default.createElement("label", { className: 'FormField__label', htmlFor: domid },
109
+ ' ',
110
+ reqStar,
111
+ " ",
112
+ label,
113
+ ' ')),
114
+ ' ',
115
+ renderInput(inputClassNames, inputProps, addFocusProps, isBrowser),
116
+ assistText && (react_1.default.createElement("div", { id: assistTextId, className: 'FormField__assist' }, assistText)),
117
+ errorMessage && (react_1.default.createElement("div", { id: errorId, className: 'FormField__error' }, errorMessage))));
120
118
  };
121
119
  exports.default = FormField;
@@ -44,16 +44,15 @@ const _GalleryModalContext_1 = __importDefault(require("./_GalleryModalContext")
44
44
  const GalleryItem = (props) => {
45
45
  const { caption, description, largeImageSrc } = props, image = __rest(props, ["caption", "description", "largeImageSrc"]);
46
46
  const { setCurrentImage } = (0, react_1.useContext)(_GalleryModalContext_1.default);
47
- return (<figure className="GalleryItem">
48
- <figcaption className="GalleryItem__caption">{caption}</figcaption>
49
- {largeImageSrc ? (<Button_1.default bem="GalleryItem__button" href={largeImageSrc} onClick={(e) => {
47
+ return (react_1.default.createElement("figure", { className: "GalleryItem" },
48
+ react_1.default.createElement("figcaption", { className: "GalleryItem__caption" }, caption),
49
+ largeImageSrc ? (react_1.default.createElement(Button_1.default, { bem: "GalleryItem__button", href: largeImageSrc, onClick: (e) => {
50
50
  e.preventDefault();
51
51
  setCurrentImage(Object.assign(Object.assign({}, image), { caption, description, largeImageSrc }));
52
- }}>
53
- {' '}
54
- <Image_1.default className="GalleryItem__image" {...image}/>{' '}
55
- </Button_1.default>) : (<Image_1.default className="GalleryItem__image" {...image}/>)}
56
- {description && <div className="GalleryItem__description">{description}</div>}
57
- </figure>);
52
+ } },
53
+ ' ',
54
+ react_1.default.createElement(Image_1.default, Object.assign({ className: "GalleryItem__image" }, image)),
55
+ ' ')) : (react_1.default.createElement(Image_1.default, Object.assign({ className: "GalleryItem__image" }, image))),
56
+ description && react_1.default.createElement("div", { className: "GalleryItem__description" }, description)));
58
57
  };
59
58
  exports.default = GalleryItem;
@@ -66,21 +66,17 @@ const GalleryModal = (props) => {
66
66
  // FIXME: This if weirdly inefficient. Either memoize,
67
67
  // or do a simpler single-property comparison.
68
68
  (0, object_1.objectIsSame)((0, object_1.objectClean)(image), (0, object_1.objectClean)(item)));
69
- return (<Modal_1.default open={true} onClosed={() => {
69
+ return (react_1.default.createElement(Modal_1.default, { open: true, onClosed: () => {
70
70
  setCurrentImage(undefined);
71
- }} startOpen={false} bem="GalleryModal" texts={{ closeButton: texts.modalCloseLabel }}>
72
- <>
73
- <react_transition_group_1.CSSTransition in={animated} timeout={200} onEntered={() => {
74
- setAnimated(!animated);
75
- }} classNames="GalleryModalItem--">
76
- <_GalleryModalItem_1.default {...image}/>
77
- </react_transition_group_1.CSSTransition>
78
-
79
- <CarouselPaging_1.default bem="GalleryModalPager" itemCount={items.length} current={imageIndex} setCurrent={updateImage} texts={{
80
- next: texts.modalNextLabel,
81
- prev: texts.modalPrevLabel,
82
- }}/>
83
- </>
84
- </Modal_1.default>);
71
+ }, startOpen: false, bem: "GalleryModal", texts: { closeButton: texts.modalCloseLabel } },
72
+ react_1.default.createElement(react_1.default.Fragment, null,
73
+ react_1.default.createElement(react_transition_group_1.CSSTransition, { in: animated, timeout: 200, onEntered: () => {
74
+ setAnimated(!animated);
75
+ }, classNames: "GalleryModalItem--" },
76
+ react_1.default.createElement(_GalleryModalItem_1.default, Object.assign({}, image))),
77
+ react_1.default.createElement(CarouselPaging_1.default, { bem: "GalleryModalPager", itemCount: items.length, current: imageIndex, setCurrent: updateImage, texts: {
78
+ next: texts.modalNextLabel,
79
+ prev: texts.modalPrevLabel,
80
+ } }))));
85
81
  };
86
82
  exports.default = GalleryModal;
@@ -18,12 +18,10 @@ const react_1 = __importDefault(require("react"));
18
18
  const Image_1 = __importDefault(require("../_abstract/Image"));
19
19
  const GalleryModalItem = (props) => {
20
20
  const { caption, description } = props, image = __rest(props, ["caption", "description"]);
21
- return (<div className="GalleryModalItem">
22
- {(caption || description) && (<div className="GalleryModalItem__text">
23
- <div className="GalleryModalItem__caption">{caption}</div>
24
- <div className="GalleryModalItem__description">{description}</div>
25
- </div>)}
26
- <Image_1.default className="GalleryModalItem__image" src={image.largeImageSrc || image.src}/>
27
- </div>);
21
+ return (react_1.default.createElement("div", { className: "GalleryModalItem" },
22
+ (caption || description) && (react_1.default.createElement("div", { className: "GalleryModalItem__text" },
23
+ react_1.default.createElement("div", { className: "GalleryModalItem__caption" }, caption),
24
+ react_1.default.createElement("div", { className: "GalleryModalItem__description" }, description))),
25
+ react_1.default.createElement(Image_1.default, { className: "GalleryModalItem__image", src: image.largeImageSrc || image.src })));
28
26
  };
29
27
  exports.default = GalleryModalItem;
@@ -48,9 +48,8 @@ const Gallery = (props) => {
48
48
  const { items, ssr, startSeen } = props;
49
49
  const texts = (0, i18n_1.getTexts)(props, defaultTexts);
50
50
  const [modalImage, setModalImage] = (0, react_1.useState)(undefined);
51
- return (<_GalleryModalContext_1.default.Provider value={{ items, setCurrentImage: setModalImage, currentImage: modalImage }}>
52
- <_AbstractCarousel_1.default bem="Gallery" items={items} Component={_GalleryItem_1.default} ssr={ssr} startSeen={startSeen}/>
53
- <_GalleryModal_1.default {...modalImage} texts={texts}/>
54
- </_GalleryModalContext_1.default.Provider>);
51
+ return (react_1.default.createElement(_GalleryModalContext_1.default.Provider, { value: { items, setCurrentImage: setModalImage, currentImage: modalImage } },
52
+ react_1.default.createElement(_AbstractCarousel_1.default, { bem: "Gallery", items: items, Component: _GalleryItem_1.default, ssr: ssr, startSeen: startSeen }),
53
+ react_1.default.createElement(_GalleryModal_1.default, Object.assign({}, modalImage, { texts: texts }))));
55
54
  };
56
55
  exports.default = Gallery;
package/GridBlocks.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const getBemClass_1 = __importDefault(require("@hugsmidjan/react/utils/getBemClass"));
8
+ const assets_1 = require("@reykjavik/hanna-utils/assets");
9
+ const Image_1 = __importDefault(require("./_abstract/Image"));
10
+ const Link_1 = require("./_abstract/Link");
11
+ const seenEffect_1 = require("./utils/seenEffect");
12
+ const ButtonTertiary_1 = __importDefault(require("./ButtonTertiary"));
13
+ const GridBlocks = (props) => {
14
+ const { blocks, twocol, startSeen } = props;
15
+ const [ref] = (0, seenEffect_1.useSeenEffect)(startSeen);
16
+ return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('GridBlocks', [twocol && 'twocol']), ref: ref }, blocks.map(({ title, summary, href, links = [], icon, image }, i) => {
17
+ const imageProps = icon ? { src: (0, assets_1.getEfnistaknUrl)(icon) } : image;
18
+ return (react_1.default.createElement("div", { key: i, className: "GridBlocks__item" },
19
+ imageProps && react_1.default.createElement(Image_1.default, Object.assign({ className: "GridBlocks__illustration" }, imageProps)),
20
+ react_1.default.createElement("div", { className: "GridBlocks__textwrap" },
21
+ react_1.default.createElement("h3", { className: "GridBlocks__item__title" }, href != null ? (react_1.default.createElement(Link_1.Link, { className: "GridBlocks__item__titlelink", href: href }, title)) : (title)),
22
+ react_1.default.createElement("div", { className: "GridBlocks__item__summary" }, summary),
23
+ react_1.default.createElement("ul", { className: "GridBlocks__links" }, links.map((link, i) => {
24
+ return (react_1.default.createElement("li", { key: i, className: "GridBlocks__link" },
25
+ react_1.default.createElement(ButtonTertiary_1.default, Object.assign({}, link))));
26
+ })))));
27
+ })));
28
+ };
29
+ exports.default = GridBlocks;
@@ -13,12 +13,10 @@ const sizes = {
13
13
  };
14
14
  const Heading = (props) => {
15
15
  const { size = 'normal', Tag = 'h2', align, wide, children } = props;
16
- return (<Tag className={(0, getBemClass_1.default)('Heading', [
16
+ return (react_1.default.createElement(Tag, { className: (0, getBemClass_1.default)('Heading', [
17
17
  sizes[size],
18
18
  align === 'right' && 'align--' + align,
19
19
  !align && wide && 'wide',
20
- ])}>
21
- {children}
22
- </Tag>);
20
+ ]) }, children));
23
21
  };
24
22
  exports.default = Heading;
@@ -14,14 +14,13 @@ const HeroBlock = (props) => {
14
14
  const hasButtons = Boolean(primaryButton || secondaryButton);
15
15
  const imgProps = illustration ? { src: (0, assets_1.getIllustrationUrl)(illustration) } : image;
16
16
  const [ref] = (0, seenEffect_1.useSeenEffect)(startSeen);
17
- return (<div className="HeroBlock" ref={ref}>
18
- <h1 className="HeroBlock__title">{title}</h1>
19
- <Image_1.default className="HeroBlock__image" {...imgProps}/>
20
- <div className="HeroBlock__summary">{summary}</div>
21
- {hasButtons && (<div className="HeroBlock__buttons">
22
- {primaryButton && <ButtonPrimary_1.default {...primaryButton}/>}{' '}
23
- {secondaryButton && <ButtonTertiary_1.default {...secondaryButton}/>}
24
- </div>)}
25
- </div>);
17
+ return (react_1.default.createElement("div", { className: "HeroBlock", ref: ref },
18
+ react_1.default.createElement("h1", { className: "HeroBlock__title" }, title),
19
+ react_1.default.createElement(Image_1.default, Object.assign({ className: "HeroBlock__image" }, imgProps)),
20
+ react_1.default.createElement("div", { className: "HeroBlock__summary" }, summary),
21
+ hasButtons && (react_1.default.createElement("div", { className: "HeroBlock__buttons" },
22
+ primaryButton && react_1.default.createElement(ButtonPrimary_1.default, Object.assign({}, primaryButton)),
23
+ ' ',
24
+ secondaryButton && react_1.default.createElement(ButtonTertiary_1.default, Object.assign({}, secondaryButton))))));
26
25
  };
27
26
  exports.default = HeroBlock;
@@ -21,11 +21,11 @@ const IframeBlock = (props) => {
21
21
  compact && 'compact',
22
22
  align === 'right' && 'align--' + align,
23
23
  ]);
24
- return height === 'auto' ? (<iframe_resizer_react_1.default className={className} src={src}/>) : (<iframe className={className} src={src}
25
- // hidden tiger: pass negative height to disable iframe-resizer but not set height explicitly
26
- // (Silly hack, don't rely on this)
27
- height={height < 0 ? undefined : height}
28
- // allow undefined to suppress scrolling attribute
29
- scrolling={scrolling === true ? 'yes' : scrolling === false ? 'no' : scrolling}/>);
24
+ return height === 'auto' ? (react_1.default.createElement(iframe_resizer_react_1.default, { className: className, src: src })) : (react_1.default.createElement("iframe", { className: className, src: src,
25
+ // hidden tiger: pass negative height to disable iframe-resizer but not set height explicitly
26
+ // (Silly hack, don't rely on this)
27
+ height: height < 0 ? undefined : height,
28
+ // allow undefined to suppress scrolling attribute
29
+ scrolling: scrolling === true ? 'yes' : scrolling === false ? 'no' : scrolling }));
30
30
  };
31
31
  exports.default = IframeBlock;
@@ -8,6 +8,6 @@ const assets_1 = require("@reykjavik/hanna-utils/assets");
8
8
  const Image_1 = __importDefault(require("./_abstract/Image"));
9
9
  const Illustration = (props) => {
10
10
  const imgProps = props.type ? { src: (0, assets_1.getIllustrationUrl)(props.type) } : props.image;
11
- return <Image_1.default className="Illustration" {...imgProps}/>;
11
+ return react_1.default.createElement(Image_1.default, Object.assign({ className: "Illustration" }, imgProps));
12
12
  };
13
13
  exports.default = Illustration;
@@ -21,8 +21,7 @@ const seenEffect_1 = require("./utils/seenEffect");
21
21
  const ImageCards = (props) => {
22
22
  const { background, startSeen } = props, cardListProps = __rest(props, ["background", "startSeen"]);
23
23
  const [ref] = (0, seenEffect_1.useSeenEffect)(startSeen);
24
- return (<div className={(0, getBemClass_1.default)('ImageCards', background && 'background')} ref={ref}>
25
- <CardList_1.CardList {...cardListProps} bemPrefix="ImageCards" imgPlaceholder={props.imgPlaceholder || true}/>
26
- </div>);
24
+ return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('ImageCards', background && 'background'), ref: ref },
25
+ react_1.default.createElement(CardList_1.CardList, Object.assign({}, cardListProps, { bemPrefix: "ImageCards", imgPlaceholder: props.imgPlaceholder || true }))));
27
26
  };
28
27
  exports.default = ImageCards;
package/InfoBlock.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const seenEffect_1 = require("./utils/seenEffect");
8
+ const InfoBlock = (props) => {
9
+ const { title, subtitle, items, startSeen } = props;
10
+ const [ref] = (0, seenEffect_1.useSeenEffect)(startSeen);
11
+ return (react_1.default.createElement("div", { className: "InfoBlock", ref: ref },
12
+ react_1.default.createElement("h2", { className: "InfoBlock__title" }, title),
13
+ react_1.default.createElement("div", { className: "InfoBlock__subtitle" }, subtitle),
14
+ react_1.default.createElement("ul", { className: "InfoBlock__items" }, items.map((item, i) => (react_1.default.createElement("li", { key: i, className: "InfoBlock__item" }, item)))),
15
+ 'extraInfo' in props && (react_1.default.createElement("div", { className: "InfoBlock__extrainfo" }, props.extraInfo)),
16
+ 'attention' in props && (react_1.default.createElement("div", { className: "InfoBlock__attention" }, props.attention))));
17
+ };
18
+ exports.default = InfoBlock;
@@ -74,20 +74,14 @@ const InfoHero = (props) => {
74
74
  const alignment = align && constants_1.aligns[align] ? align : 'right';
75
75
  const blings = (blingType && blingOptions[blingType]) ||
76
76
  blingOptions.waves; // default to `waves`
77
- return (<div className={(0, getBemClass_1.default)('InfoHero', 'align--' + alignment)}>
78
- <div className="InfoHero__content">
79
- <h1 className="InfoHero__title">{title}</h1>
80
- {titleBlurb && <div className="InfoHero__titleblurb">{titleBlurb}</div>}
81
-
82
- {subTitle && <div className="InfoHero__subtitle">{(0, breakOnNL_1.default)(subTitle)}</div>}
83
- {blurb && <div className="InfoHero__blurb">{blurb}</div>}
84
-
85
- {showButtons && (<div className="InfoHero__buttons">
86
- {buttons.map((buttonProps, i) => (<ButtonTertiary_1.default key={i} {...buttonProps}/>))}
87
- </div>)}
88
- </div>
89
- <Image_1.default className="InfoHero__image" altText={title} {...image} placeholder/>
90
- <_Blings_1.default blings={blings} mirror={alignment === 'right'}/>
91
- </div>);
77
+ return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('InfoHero', 'align--' + alignment) },
78
+ react_1.default.createElement("div", { className: "InfoHero__content" },
79
+ react_1.default.createElement("h1", { className: "InfoHero__title" }, title),
80
+ titleBlurb && react_1.default.createElement("div", { className: "InfoHero__titleblurb" }, titleBlurb),
81
+ subTitle && react_1.default.createElement("div", { className: "InfoHero__subtitle" }, (0, breakOnNL_1.default)(subTitle)),
82
+ blurb && react_1.default.createElement("div", { className: "InfoHero__blurb" }, blurb),
83
+ showButtons && (react_1.default.createElement("div", { className: "InfoHero__buttons" }, buttons.map((buttonProps, i) => (react_1.default.createElement(ButtonTertiary_1.default, Object.assign({ key: i }, buttonProps))))))),
84
+ react_1.default.createElement(Image_1.default, Object.assign({ className: "InfoHero__image", altText: title }, image, { placeholder: true })),
85
+ react_1.default.createElement(_Blings_1.default, { blings: blings, mirror: alignment === 'right' })));
92
86
  };
93
87
  exports.default = InfoHero;
@@ -16,6 +16,6 @@ const IslandBlock = (props) => {
16
16
  content,
17
17
  image: shapes ? { src: (0, assets_1.getFormheimurUrl)(shapes), inline: true } : image || {},
18
18
  };
19
- return (<_Block_1.default bem="IslandBlock" modifier={'align--' + alignment} {...blockProps} startSeen={startSeen}/>);
19
+ return (react_1.default.createElement(_Block_1.default, Object.assign({ bem: "IslandBlock", modifier: 'align--' + alignment }, blockProps, { startSeen: startSeen })));
20
20
  };
21
21
  exports.default = IslandBlock;
@@ -16,6 +16,6 @@ const IslandPageBlock = (props) => {
16
16
  const { title, summary, buttons, illustration, image, align, background, startSeen } = props;
17
17
  const alignment = align && constants_1.aligns[align] ? align : 'right';
18
18
  const bg = backgrounds[background || 'none'];
19
- return (<_Block_1.default bem="IslandPageBlock" modifier={['align--' + alignment, bg && 'background--' + bg]} content={{ title, summary, buttons }} image={illustration ? { src: (0, assets_1.getIllustrationUrl)(illustration) } : image || {}} startSeen={startSeen}/>);
19
+ return (react_1.default.createElement(_Block_1.default, { bem: "IslandPageBlock", modifier: ['align--' + alignment, bg && 'background--' + bg], content: { title, summary, buttons }, image: illustration ? { src: (0, assets_1.getIllustrationUrl)(illustration) } : image || {}, startSeen: startSeen }));
20
20
  };
21
21
  exports.default = IslandPageBlock;
@@ -10,12 +10,10 @@ const ButtonTertiary_1 = __importDefault(require("./ButtonTertiary"));
10
10
  const LabeledTextBlock = (props) => {
11
11
  const { label, summary, wide, buttons = [], startSeen } = props;
12
12
  const [ref] = (0, seenEffect_1.useSeenEffect)(startSeen);
13
- return (<div className={(0, getBemClass_1.default)('LabeledTextBlock', wide && 'wide')} ref={ref}>
14
- <h2 className="LabeledTextBlock__label">{label}</h2>
15
- <div className="LabeledTextBlock__summary">
16
- {summary}
17
- {buttons.map((button, i) => (<ButtonTertiary_1.default key={i} {...button}/>))}
18
- </div>
19
- </div>);
13
+ return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('LabeledTextBlock', wide && 'wide'), ref: ref },
14
+ react_1.default.createElement("h2", { className: "LabeledTextBlock__label" }, label),
15
+ react_1.default.createElement("div", { className: "LabeledTextBlock__summary" },
16
+ summary,
17
+ buttons.map((button, i) => (react_1.default.createElement(ButtonTertiary_1.default, Object.assign({ key: i }, button)))))));
20
18
  };
21
19
  exports.default = LabeledTextBlock;
package/Layout.js ADDED
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.defaultLayoutTexts = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const hooks_1 = require("@hugsmidjan/react/hooks");
9
+ const getBemClass_1 = __importDefault(require("@hugsmidjan/react/utils/getBemClass"));
10
+ const assets_1 = require("@reykjavik/hanna-utils/assets");
11
+ const i18n_1 = require("@reykjavik/hanna-utils/i18n");
12
+ const Image_1 = __importDefault(require("./_abstract/Image"));
13
+ const Link_1 = require("./_abstract/Link");
14
+ const useMenuToggling_1 = require("./utils/useMenuToggling");
15
+ const useScrollbarWidthCSSVar_1 = require("./utils/useScrollbarWidthCSSVar");
16
+ exports.defaultLayoutTexts = {
17
+ is: {
18
+ lang: 'is',
19
+ skipLinkLabel: 'Valmynd',
20
+ closeMenuLabel: 'Loka',
21
+ closeMenuLabelLong: 'Loka valmynd',
22
+ },
23
+ en: {
24
+ lang: 'en',
25
+ skipLinkLabel: 'Skip to navigation',
26
+ closeMenuLabel: 'Close',
27
+ closeMenuLabelLong: 'Close menu',
28
+ },
29
+ };
30
+ const Layout = (props) => {
31
+ (0, useScrollbarWidthCSSVar_1.useScrollbarWidthCSSVar)();
32
+ const { ssr, globalAlerts, mainChildren, navChildren, footerChildren, colorTheme, children, siteName = 'Reykjavík', logoLink = '/', } = props;
33
+ const { isMenuActive, closeMenu, toggleMenu } = (0, useMenuToggling_1.useMenuToggling)(ssr !== 'ssr-only');
34
+ const isBrowser = (0, hooks_1.useIsBrowserSide)( /* ssr */);
35
+ const txt = (0, i18n_1.getTexts)(props, exports.defaultLayoutTexts);
36
+ return (react_1.default.createElement("div", { className: (0, getBemClass_1.default)('Layout', props.modifier), "data-sprinkled": isBrowser, "data-color-theme": colorTheme },
37
+ globalAlerts && (react_1.default.createElement("div", { className: "Layout__alerts", role: "alert" }, globalAlerts)),
38
+ react_1.default.createElement("div", { className: "Layout__content" },
39
+ react_1.default.createElement("div", { className: "Layout__header", role: "banner" },
40
+ react_1.default.createElement(Link_1.Link, { className: "Layout__header__logo", href: logoLink },
41
+ ' ',
42
+ react_1.default.createElement(Image_1.default, { inline: true, src: (0, assets_1.getAssetUrl)('reykjavik-logo.svg') }),
43
+ " ",
44
+ siteName,
45
+ ' '),
46
+ ' ',
47
+ navChildren && (react_1.default.createElement(Link_1.Link, { className: "Layout__header__skiplink", href: "#pagenav", onClick: isMenuActive &&
48
+ ((e) => {
49
+ e.preventDefault();
50
+ toggleMenu();
51
+ }), "aria-label": txt.skipLinkLabel }, txt.skipLinkLabel))),
52
+ react_1.default.createElement("div", { className: "Layout__main", role: "main" }, mainChildren || children),
53
+ navChildren && (react_1.default.createElement("div", { className: "Layout__nav", id: "pagenav", role: "navigation" },
54
+ navChildren,
55
+ isMenuActive && (react_1.default.createElement("button", { className: "Layout__nav__closebutton", onClick: closeMenu, "aria-label": txt.closeMenuLabelLong, type: "button" }, txt.closeMenuLabel)))),
56
+ react_1.default.createElement("div", { className: "Layout__footer", role: "complementary" }, footerChildren))));
57
+ };
58
+ exports.default = Layout;