@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.
- package/{AccordionList.jsx → AccordionList.js} +5 -14
- package/{ActionCards.jsx → ActionCards.js} +2 -3
- package/{Alert.jsx → Alert.js} +6 -8
- package/ArticleCarousel/_ArticleCarouselCard.js +31 -0
- package/{ArticleCarousel.jsx → ArticleCarousel.js} +1 -1
- package/{ArticleMeta.jsx → ArticleMeta.js} +9 -8
- package/{Attention.jsx → Attention.js} +1 -1
- package/{BasicTable.jsx → BasicTable.js} +11 -12
- package/{Bling.jsx → Bling.js} +2 -2
- package/{BlockBreak.jsx → BlockBreak.js} +1 -1
- package/{BlockQuote.jsx → BlockQuote.js} +1 -1
- package/BreadCrumbs.js +33 -0
- package/{ButtonBack.jsx → ButtonBack.js} +1 -1
- package/{ButtonBar.jsx → ButtonBar.js} +2 -4
- package/{ButtonPrimary.jsx → ButtonPrimary.js} +1 -1
- package/{ButtonSecondary.jsx → ButtonSecondary.js} +1 -1
- package/{ButtonTertiary.jsx → ButtonTertiary.js} +1 -1
- package/CHANGELOG.md +1 -1
- package/{Carousel.jsx → Carousel.js} +1 -1
- package/{CarouselStepper.jsx → CarouselStepper.js} +1 -1
- package/{CenterColumn.jsx → CenterColumn.js} +1 -3
- package/{Checkbox.jsx → Checkbox.js} +1 -1
- package/{CheckboxButtonsGroup.jsx → CheckboxButtonsGroup.js} +2 -2
- package/{CheckboxGroup.jsx → CheckboxGroup.js} +1 -1
- package/{CityBlock.jsx → CityBlock.js} +1 -1
- package/{ContactBubble.jsx → ContactBubble.js} +12 -26
- package/{ContentArticle.jsx → ContentArticle.js} +9 -12
- package/ContentImage.js +23 -0
- package/{Datepicker.jsx → Datepicker.js} +17 -18
- package/{ExtraLinks.jsx → ExtraLinks.js} +9 -17
- package/FeatureList.js +21 -0
- package/{FieldGroup.jsx → FieldGroup.js} +3 -4
- package/{FileInput.jsx → FileInput.js} +22 -25
- package/{Foonote.jsx → Foonote.js} +0 -0
- package/FooterBadges.js +17 -0
- package/FooterInfo.js +14 -0
- package/{Footnote.jsx → Footnote.js} +1 -1
- package/{Form.jsx → Form.js} +2 -4
- package/{FormField.jsx → FormField.js} +20 -22
- package/Gallery/{_GalleryItem.jsx → _GalleryItem.js} +8 -9
- package/Gallery/{_GalleryModal.jsx → _GalleryModal.js} +11 -15
- package/Gallery/{_GalleryModalItem.jsx → _GalleryModalItem.js} +5 -7
- package/{Gallery.jsx → Gallery.js} +3 -4
- package/GridBlocks.js +29 -0
- package/{Heading.jsx → Heading.js} +2 -4
- package/{HeroBlock.jsx → HeroBlock.js} +8 -9
- package/{IframeBlock.jsx → IframeBlock.js} +6 -6
- package/{Illustration.jsx → Illustration.js} +1 -1
- package/{ImageCards.jsx → ImageCards.js} +2 -3
- package/InfoBlock.js +18 -0
- package/{InfoHero.jsx → InfoHero.js} +9 -15
- package/{IslandBlock.jsx → IslandBlock.js} +1 -1
- package/{IslandPageBlock.jsx → IslandPageBlock.js} +1 -1
- package/{LabeledTextBlock.jsx → LabeledTextBlock.js} +5 -7
- package/Layout.js +58 -0
- package/MainMenu/{_Auxiliary.jsx → _Auxiliary.js} +5 -11
- package/MainMenu/_PrimaryPanel.js +29 -0
- package/{MainMenu.jsx → MainMenu.js} +27 -40
- package/{MiniMetrics.jsx → MiniMetrics.js} +5 -4
- package/Modal.js +19 -0
- package/{NameCard.jsx → NameCard.js} +18 -23
- package/{NameCards.jsx → NameCards.js} +1 -3
- package/{NewsHero.jsx → NewsHero.js} +7 -9
- package/{PageFilter.jsx → PageFilter.js} +6 -7
- package/{PageHeading.jsx → PageHeading.js} +2 -4
- package/ProcessOverview.js +22 -0
- package/{PullQuote.jsx → PullQuote.js} +1 -1
- package/{RadioButtonsGroup.jsx → RadioButtonsGroup.js} +2 -2
- package/{RadioGroup.jsx → RadioGroup.js} +2 -2
- package/{RelatedLinks.jsx → RelatedLinks.js} +9 -13
- package/{RowBlock.jsx → RowBlock.js} +1 -3
- package/{RowBlockColumn.jsx → RowBlockColumn.js} +2 -4
- package/{SearchInput.jsx → SearchInput.js} +4 -6
- package/SearchResults/_SearchResultsItem.js +20 -0
- package/{SearchResults.jsx → SearchResults.js} +27 -36
- package/{SeenEffect.jsx → SeenEffect.js} +1 -1
- package/{Selectbox.jsx → Selectbox.js} +1 -1
- package/{ShareButtons.jsx → ShareButtons.js} +6 -12
- package/{Sharpie.jsx → Sharpie.js} +1 -1
- package/{SiteSearchAutocomplete.jsx → SiteSearchAutocomplete.js} +5 -7
- package/{SiteSearchCurtain.jsx → SiteSearchCurtain.js} +1 -5
- package/{SiteSearchInput.jsx → SiteSearchInput.js} +10 -12
- package/{Skeleton.jsx → Skeleton.js} +5 -5
- package/{SubHeading.jsx → SubHeading.js} +2 -4
- package/{Tabs.jsx → Tabs.js} +12 -12
- package/{TagPill.jsx → TagPill.js} +11 -16
- package/{TextBlock.jsx → TextBlock.js} +2 -4
- package/{TextButton.jsx → TextButton.js} +1 -1
- package/{TextInput.jsx → TextInput.js} +1 -1
- package/{VSpacer.jsx → VSpacer.js} +1 -1
- package/{VerticalTabsTOC.jsx → VerticalTabsTOC.js} +2 -2
- package/WizardLayout.js +35 -0
- package/{WizardLayoutClose.jsx → WizardLayoutClose.js} +1 -1
- package/WizardStepper.js +30 -0
- package/_abstract/{Button.jsx → Button.js} +2 -6
- package/_abstract/CardList.js +43 -0
- package/_abstract/{Image.jsx → Image.js} +10 -12
- package/_abstract/{Link.jsx → Link.js} +0 -0
- package/_abstract/TogglerGroup.js +34 -0
- package/_abstract/{TogglerGroupField.jsx → TogglerGroupField.js} +3 -3
- package/_abstract/{TogglerInput.jsx → TogglerInput.js} +13 -15
- package/_abstract/{_AbstractCarousel.jsx → _AbstractCarousel.js} +7 -10
- package/_abstract/{_Blings.jsx → _Blings.js} +1 -3
- package/_abstract/_Block.js +29 -0
- package/_abstract/{_Quote.jsx → _Quote.js} +3 -6
- package/_abstract/{breakOnNL.jsx → breakOnNL.js} +1 -1
- package/esm/AccordionList.js +24 -0
- package/esm/{ActionCards.jsx → ActionCards.js} +2 -3
- package/esm/{Alert.jsx → Alert.js} +6 -8
- package/esm/ArticleCarousel/_ArticleCarouselCard.js +24 -0
- package/esm/{ArticleCarousel.jsx → ArticleCarousel.js} +1 -1
- package/esm/ArticleMeta.js +18 -0
- package/esm/Attention.js +4 -0
- package/esm/{BasicTable.jsx → BasicTable.js} +11 -12
- package/esm/{Bling.jsx → Bling.js} +2 -2
- package/esm/BlockBreak.js +6 -0
- package/esm/BlockQuote.js +4 -0
- package/esm/BreadCrumbs.js +28 -0
- package/esm/ButtonBack.js +4 -0
- package/esm/{ButtonBar.jsx → ButtonBar.js} +2 -4
- package/esm/ButtonPrimary.js +4 -0
- package/esm/ButtonSecondary.js +4 -0
- package/esm/{ButtonTertiary.jsx → ButtonTertiary.js} +1 -1
- package/esm/Carousel.js +4 -0
- package/esm/CarouselStepper.js +4 -0
- package/esm/CenterColumn.js +7 -0
- package/esm/Checkbox.js +4 -0
- package/esm/{CheckboxButtonsGroup.jsx → CheckboxButtonsGroup.js} +2 -2
- package/esm/{CheckboxGroup.jsx → CheckboxGroup.js} +1 -1
- package/esm/{CityBlock.jsx → CityBlock.js} +1 -1
- package/esm/{ContactBubble.jsx → ContactBubble.js} +12 -26
- package/esm/ContentArticle.js +21 -0
- package/esm/ContentImage.js +18 -0
- package/esm/{Datepicker.jsx → Datepicker.js} +17 -18
- package/esm/{ExtraLinks.jsx → ExtraLinks.js} +9 -17
- package/esm/FeatureList.js +16 -0
- package/esm/FieldGroup.js +9 -0
- package/esm/{FileInput.jsx → FileInput.js} +22 -25
- package/esm/{Foonote.jsx → Foonote.js} +0 -0
- package/esm/FooterBadges.js +12 -0
- package/esm/FooterInfo.js +9 -0
- package/esm/Footnote.js +3 -0
- package/esm/{Form.jsx → Form.js} +2 -4
- package/esm/{FormField.jsx → FormField.js} +20 -22
- package/esm/Gallery/{_GalleryItem.jsx → _GalleryItem.js} +8 -9
- package/esm/Gallery/{_GalleryModal.jsx → _GalleryModal.js} +11 -15
- package/esm/Gallery/{_GalleryModalItem.jsx → _GalleryModalItem.js} +5 -7
- package/esm/{Gallery.jsx → Gallery.js} +3 -4
- package/esm/GridBlocks.js +24 -0
- package/esm/{Heading.jsx → Heading.js} +2 -4
- package/esm/HeroBlock.js +21 -0
- package/esm/{IframeBlock.jsx → IframeBlock.js} +6 -6
- package/esm/{Illustration.jsx → Illustration.js} +1 -1
- package/esm/{ImageCards.jsx → ImageCards.js} +2 -3
- package/esm/InfoBlock.js +13 -0
- package/esm/{InfoHero.jsx → InfoHero.js} +9 -15
- package/esm/{IslandBlock.jsx → IslandBlock.js} +1 -1
- package/esm/{IslandPageBlock.jsx → IslandPageBlock.js} +1 -1
- package/esm/LabeledTextBlock.js +14 -0
- package/esm/Layout.js +52 -0
- package/esm/MainMenu/_Auxiliary.js +13 -0
- package/esm/MainMenu/_PrimaryPanel.js +22 -0
- package/esm/{MainMenu.jsx → MainMenu.js} +27 -40
- package/esm/MiniMetrics.js +12 -0
- package/esm/Modal.js +14 -0
- package/esm/{NameCard.jsx → NameCard.js} +18 -23
- package/esm/NameCards.js +7 -0
- package/esm/{NewsHero.jsx → NewsHero.js} +7 -9
- package/esm/PageFilter.js +15 -0
- package/esm/{PageHeading.jsx → PageHeading.js} +2 -4
- package/esm/ProcessOverview.js +17 -0
- package/esm/PullQuote.js +4 -0
- package/esm/{RadioButtonsGroup.jsx → RadioButtonsGroup.js} +2 -2
- package/esm/RadioGroup.js +7 -0
- package/esm/RelatedLinks.js +26 -0
- package/esm/{RowBlock.jsx → RowBlock.js} +1 -3
- package/esm/{RowBlockColumn.jsx → RowBlockColumn.js} +2 -4
- package/esm/{SearchInput.jsx → SearchInput.js} +4 -6
- package/esm/SearchResults/_SearchResultsItem.js +15 -0
- package/esm/{SearchResults.jsx → SearchResults.js} +27 -36
- package/esm/{SeenEffect.jsx → SeenEffect.js} +1 -1
- package/esm/{Selectbox.jsx → Selectbox.js} +1 -1
- package/esm/{ShareButtons.jsx → ShareButtons.js} +6 -12
- package/esm/{Sharpie.jsx → Sharpie.js} +1 -1
- package/esm/{SiteSearchAutocomplete.jsx → SiteSearchAutocomplete.js} +5 -7
- package/esm/{SiteSearchCurtain.jsx → SiteSearchCurtain.js} +1 -5
- package/esm/{SiteSearchInput.jsx → SiteSearchInput.js} +10 -12
- package/esm/{Skeleton.jsx → Skeleton.js} +5 -5
- package/esm/{SubHeading.jsx → SubHeading.js} +2 -4
- package/esm/{Tabs.jsx → Tabs.js} +12 -12
- package/esm/{TagPill.jsx → TagPill.js} +11 -16
- package/esm/{TextBlock.jsx → TextBlock.js} +2 -4
- package/esm/{TextButton.jsx → TextButton.js} +1 -1
- package/esm/{TextInput.jsx → TextInput.js} +1 -1
- package/esm/{VSpacer.jsx → VSpacer.js} +1 -1
- package/esm/{VerticalTabsTOC.jsx → VerticalTabsTOC.js} +2 -2
- package/esm/WizardLayout.js +30 -0
- package/esm/WizardLayoutClose.js +4 -0
- package/esm/WizardStepper.js +25 -0
- package/esm/_abstract/{Button.jsx → Button.js} +2 -6
- package/esm/_abstract/CardList.js +36 -0
- package/esm/_abstract/{Image.jsx → Image.js} +10 -12
- package/esm/_abstract/{Link.jsx → Link.js} +0 -0
- package/esm/_abstract/TogglerGroup.js +29 -0
- package/esm/_abstract/{TogglerGroupField.jsx → TogglerGroupField.js} +3 -3
- package/esm/_abstract/{TogglerInput.jsx → TogglerInput.js} +13 -15
- package/esm/_abstract/{_AbstractCarousel.jsx → _AbstractCarousel.js} +7 -10
- package/esm/_abstract/_Blings.js +12 -0
- package/esm/_abstract/_Block.js +24 -0
- package/esm/_abstract/_Quote.js +8 -0
- package/esm/_abstract/{breakOnNL.jsx → breakOnNL.js} +1 -1
- package/package.json +91 -91
- package/ArticleCarousel/_ArticleCarouselCard.jsx +0 -32
- package/BreadCrumbs.jsx +0 -36
- package/ContentImage.jsx +0 -18
- package/FeatureList.jsx +0 -28
- package/FooterBadges.jsx +0 -21
- package/FooterInfo.jsx +0 -19
- package/GridBlocks.jsx +0 -40
- package/InfoBlock.jsx +0 -23
- package/Layout.jsx +0 -69
- package/MainMenu/_PrimaryPanel.jsx +0 -37
- package/Modal.jsx +0 -21
- package/ProcessOverview.jsx +0 -25
- package/SearchResults/_SearchResultsItem.jsx +0 -24
- package/WizardLayout.jsx +0 -44
- package/WizardStepper.jsx +0 -34
- package/_abstract/CardList.jsx +0 -46
- package/_abstract/TogglerGroup.jsx +0 -36
- package/_abstract/_Block.jsx +0 -32
- package/esm/AccordionList.jsx +0 -33
- package/esm/ArticleCarousel/_ArticleCarouselCard.jsx +0 -25
- package/esm/ArticleMeta.jsx +0 -17
- package/esm/Attention.jsx +0 -4
- package/esm/BlockBreak.jsx +0 -6
- package/esm/BlockQuote.jsx +0 -4
- package/esm/BreadCrumbs.jsx +0 -31
- package/esm/ButtonBack.jsx +0 -4
- package/esm/ButtonPrimary.jsx +0 -4
- package/esm/ButtonSecondary.jsx +0 -4
- package/esm/Carousel.jsx +0 -4
- package/esm/CarouselStepper.jsx +0 -4
- package/esm/CenterColumn.jsx +0 -9
- package/esm/Checkbox.jsx +0 -4
- package/esm/ContentArticle.jsx +0 -24
- package/esm/ContentImage.jsx +0 -13
- package/esm/FeatureList.jsx +0 -23
- package/esm/FieldGroup.jsx +0 -10
- package/esm/FooterBadges.jsx +0 -16
- package/esm/FooterInfo.jsx +0 -14
- package/esm/Footnote.jsx +0 -3
- package/esm/GridBlocks.jsx +0 -35
- package/esm/HeroBlock.jsx +0 -22
- package/esm/InfoBlock.jsx +0 -18
- package/esm/LabeledTextBlock.jsx +0 -16
- package/esm/Layout.jsx +0 -63
- package/esm/MainMenu/_Auxiliary.jsx +0 -19
- package/esm/MainMenu/_PrimaryPanel.jsx +0 -30
- package/esm/MiniMetrics.jsx +0 -11
- package/esm/Modal.jsx +0 -16
- package/esm/NameCards.jsx +0 -9
- package/esm/PageFilter.jsx +0 -16
- package/esm/ProcessOverview.jsx +0 -20
- package/esm/PullQuote.jsx +0 -4
- package/esm/RadioGroup.jsx +0 -7
- package/esm/RelatedLinks.jsx +0 -30
- package/esm/SearchResults/_SearchResultsItem.jsx +0 -19
- package/esm/WizardLayout.jsx +0 -39
- package/esm/WizardLayoutClose.jsx +0 -4
- package/esm/WizardStepper.jsx +0 -29
- package/esm/_abstract/CardList.jsx +0 -39
- package/esm/_abstract/TogglerGroup.jsx +0 -31
- package/esm/_abstract/_Blings.jsx +0 -14
- package/esm/_abstract/_Block.jsx +0 -27
- 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 (
|
|
11
|
-
|
|
12
|
-
|
|
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) => (
|
|
160
|
-
|
|
161
|
-
{
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
package/FooterBadges.js
ADDED
|
@@ -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) => (
|
|
7
|
+
const Footnote = (props) => (react_1.default.createElement("div", { className: "Footnote" }, props.children));
|
|
8
8
|
exports.default = Footnote;
|
package/{Form.jsx → Form.js}
RENAMED
|
@@ -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 (
|
|
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 && (
|
|
82
|
-
|
|
83
|
-
|
|
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 (
|
|
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)
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
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 (
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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 (
|
|
69
|
+
return (react_1.default.createElement(Modal_1.default, { open: true, onClosed: () => {
|
|
70
70
|
setCurrentImage(undefined);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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 (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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 (
|
|
52
|
-
|
|
53
|
-
|
|
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 (
|
|
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 (
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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' ? (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
|
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 (
|
|
25
|
-
|
|
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 (
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
{
|
|
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 (
|
|
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 (
|
|
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 (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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;
|