@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/esm/ContentArticle.jsx
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { useSeenEffect } from './utils/seenEffect';
|
|
3
|
-
import ArticleMeta from './ArticleMeta';
|
|
4
|
-
import ContentImage from './ContentImage';
|
|
5
|
-
import Heading from './Heading';
|
|
6
|
-
import RelatedLinks from './RelatedLinks';
|
|
7
|
-
import TextBlock from './TextBlock';
|
|
8
|
-
import VSpacer from './VSpacer';
|
|
9
|
-
const ContentArticle = (props) => {
|
|
10
|
-
const [ref] = useSeenEffect(props.startSeen);
|
|
11
|
-
return (<div className="ContentArticle" ref={ref}>
|
|
12
|
-
<ArticleMeta items={props.meta}/>
|
|
13
|
-
<Heading>{props.headline}</Heading>
|
|
14
|
-
<TextBlock startSeen>
|
|
15
|
-
{props.topImage && <ContentImage {...props.topImage}/>}
|
|
16
|
-
{props.body}
|
|
17
|
-
</TextBlock>
|
|
18
|
-
<VSpacer size="small">
|
|
19
|
-
<hr />
|
|
20
|
-
</VSpacer>
|
|
21
|
-
{props.relatedLinks && <RelatedLinks {...props.relatedLinks}/>}
|
|
22
|
-
</div>);
|
|
23
|
-
};
|
|
24
|
-
export default ContentArticle;
|
package/esm/ContentImage.jsx
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import Image from './_abstract/Image';
|
|
3
|
-
const ContentImage = (props) => {
|
|
4
|
-
const { image, caption, credit } = props;
|
|
5
|
-
return (<figure className="ContentImage">
|
|
6
|
-
{(caption || credit) && (<figcaption className="ContentImage__caption">
|
|
7
|
-
{caption && <span className="ContentImage__text"> {caption} </span>}{' '}
|
|
8
|
-
{credit && <small className="ContentImage__credit"> {credit} </small>}
|
|
9
|
-
</figcaption>)}
|
|
10
|
-
<Image className="ContentImage__image" {...image}/>
|
|
11
|
-
</figure>);
|
|
12
|
-
};
|
|
13
|
-
export default ContentImage;
|
package/esm/FeatureList.jsx
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { useSeenEffect } from './utils/seenEffect';
|
|
3
|
-
import Bling from './Bling';
|
|
4
|
-
const FeatureList = (props) => {
|
|
5
|
-
const { title, features, startSeen } = props;
|
|
6
|
-
const [ref] = useSeenEffect(startSeen);
|
|
7
|
-
const _features = features.length ? features : [{ name: '...' }];
|
|
8
|
-
return (<>
|
|
9
|
-
<Bling type="snake-large" align="left" vertical="down-ish"/>
|
|
10
|
-
|
|
11
|
-
<div className="FeatureList" ref={ref}>
|
|
12
|
-
<h2 className="FeatureList__title">{title}</h2>
|
|
13
|
-
<ul className="FeatureList__list">
|
|
14
|
-
{_features.map(({ name, icon, iconUrl }, i) => (<li key={i} className="FeatureList__feature" style={iconUrl
|
|
15
|
-
? { '--efnistakn': `url("${iconUrl}")` }
|
|
16
|
-
: undefined} data-efnistakn={!iconUrl ? icon : undefined}>
|
|
17
|
-
{name}
|
|
18
|
-
</li>))}
|
|
19
|
-
</ul>
|
|
20
|
-
</div>
|
|
21
|
-
</>);
|
|
22
|
-
};
|
|
23
|
-
export default FeatureList;
|
package/esm/FieldGroup.jsx
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import getBemClass from '@hugsmidjan/react/utils/getBemClass';
|
|
3
|
-
const FieldGroup = (props) => {
|
|
4
|
-
const { legend, children, className, disabled } = props;
|
|
5
|
-
return (<fieldset className={getBemClass('FieldGroup', null, className)} role="group" disabled={disabled}>
|
|
6
|
-
<legend className="FieldGroup__legend">{legend}</legend>
|
|
7
|
-
{children}
|
|
8
|
-
</fieldset>);
|
|
9
|
-
};
|
|
10
|
-
export default FieldGroup;
|
package/esm/FooterBadges.jsx
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Link } from './_abstract/Link';
|
|
3
|
-
const FooterBadges = (props) => {
|
|
4
|
-
if (!props.badges.length) {
|
|
5
|
-
return null;
|
|
6
|
-
}
|
|
7
|
-
return (<ul className="FooterBadges">
|
|
8
|
-
{props.badges.map(({ altText, src, href }, i) => (<li key={i} className="FooterBadges__badge">
|
|
9
|
-
{href ? (<Link href={href}>
|
|
10
|
-
{' '}
|
|
11
|
-
<img src={src} alt={altText}/>{' '}
|
|
12
|
-
</Link>) : (<img src={src} alt={altText}/>)}
|
|
13
|
-
</li>))}
|
|
14
|
-
</ul>);
|
|
15
|
-
};
|
|
16
|
-
export default FooterBadges;
|
package/esm/FooterInfo.jsx
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import getBemClass from '@hugsmidjan/react/utils/getBemClass';
|
|
3
|
-
const FooterInfo = (props) => {
|
|
4
|
-
const { boxes } = props;
|
|
5
|
-
return (<div className="FooterInfo">
|
|
6
|
-
{boxes.map((group, i) => (<div className={getBemClass('FooterInfo__group', group.modifier)} role={group.role} key={i}>
|
|
7
|
-
<h3 className="FooterInfo__grouptitle">{group.title}</h3>
|
|
8
|
-
{group.content ? (<div className={getBemClass('FooterInfo__groupcontent', group.modifier)}>
|
|
9
|
-
{group.content}
|
|
10
|
-
</div>) : (<div className={getBemClass('FooterInfo__groupcontent', group.modifier)} dangerouslySetInnerHTML={{ __html: group.html }}/>)}
|
|
11
|
-
</div>))}
|
|
12
|
-
</div>);
|
|
13
|
-
};
|
|
14
|
-
export default FooterInfo;
|
package/esm/Footnote.jsx
DELETED
package/esm/GridBlocks.jsx
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import getBemClass from '@hugsmidjan/react/utils/getBemClass';
|
|
3
|
-
import { getEfnistaknUrl } from '@reykjavik/hanna-utils/assets';
|
|
4
|
-
import Image from './_abstract/Image';
|
|
5
|
-
import { Link } from './_abstract/Link';
|
|
6
|
-
import { useSeenEffect } from './utils/seenEffect';
|
|
7
|
-
import ButtonTertiary from './ButtonTertiary';
|
|
8
|
-
const GridBlocks = (props) => {
|
|
9
|
-
const { blocks, twocol, startSeen } = props;
|
|
10
|
-
const [ref] = useSeenEffect(startSeen);
|
|
11
|
-
return (<div className={getBemClass('GridBlocks', [twocol && 'twocol'])} ref={ref}>
|
|
12
|
-
{blocks.map(({ title, summary, href, links = [], icon, image }, i) => {
|
|
13
|
-
const imageProps = icon ? { src: getEfnistaknUrl(icon) } : image;
|
|
14
|
-
return (<div key={i} className="GridBlocks__item">
|
|
15
|
-
{imageProps && <Image className="GridBlocks__illustration" {...imageProps}/>}
|
|
16
|
-
<div className="GridBlocks__textwrap">
|
|
17
|
-
<h3 className="GridBlocks__item__title">
|
|
18
|
-
{href != null ? (<Link className="GridBlocks__item__titlelink" href={href}>
|
|
19
|
-
{title}
|
|
20
|
-
</Link>) : (title)}
|
|
21
|
-
</h3>
|
|
22
|
-
<div className="GridBlocks__item__summary">{summary}</div>
|
|
23
|
-
<ul className="GridBlocks__links">
|
|
24
|
-
{links.map((link, i) => {
|
|
25
|
-
return (<li key={i} className="GridBlocks__link">
|
|
26
|
-
<ButtonTertiary {...link}/>
|
|
27
|
-
</li>);
|
|
28
|
-
})}
|
|
29
|
-
</ul>
|
|
30
|
-
</div>
|
|
31
|
-
</div>);
|
|
32
|
-
})}
|
|
33
|
-
</div>);
|
|
34
|
-
};
|
|
35
|
-
export default GridBlocks;
|
package/esm/HeroBlock.jsx
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { getIllustrationUrl } from '@reykjavik/hanna-utils/assets';
|
|
3
|
-
import Image from './_abstract/Image';
|
|
4
|
-
import { useSeenEffect } from './utils/seenEffect';
|
|
5
|
-
import ButtonPrimary from './ButtonPrimary';
|
|
6
|
-
import ButtonTertiary from './ButtonTertiary';
|
|
7
|
-
const HeroBlock = (props) => {
|
|
8
|
-
const { title, summary, illustration, image, primaryButton, secondaryButton, startSeen, } = props;
|
|
9
|
-
const hasButtons = Boolean(primaryButton || secondaryButton);
|
|
10
|
-
const imgProps = illustration ? { src: getIllustrationUrl(illustration) } : image;
|
|
11
|
-
const [ref] = useSeenEffect(startSeen);
|
|
12
|
-
return (<div className="HeroBlock" ref={ref}>
|
|
13
|
-
<h1 className="HeroBlock__title">{title}</h1>
|
|
14
|
-
<Image className="HeroBlock__image" {...imgProps}/>
|
|
15
|
-
<div className="HeroBlock__summary">{summary}</div>
|
|
16
|
-
{hasButtons && (<div className="HeroBlock__buttons">
|
|
17
|
-
{primaryButton && <ButtonPrimary {...primaryButton}/>}{' '}
|
|
18
|
-
{secondaryButton && <ButtonTertiary {...secondaryButton}/>}
|
|
19
|
-
</div>)}
|
|
20
|
-
</div>);
|
|
21
|
-
};
|
|
22
|
-
export default HeroBlock;
|
package/esm/InfoBlock.jsx
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { useSeenEffect } from './utils/seenEffect';
|
|
3
|
-
const InfoBlock = (props) => {
|
|
4
|
-
const { title, subtitle, items, startSeen } = props;
|
|
5
|
-
const [ref] = useSeenEffect(startSeen);
|
|
6
|
-
return (<div className="InfoBlock" ref={ref}>
|
|
7
|
-
<h2 className="InfoBlock__title">{title}</h2>
|
|
8
|
-
<div className="InfoBlock__subtitle">{subtitle}</div>
|
|
9
|
-
<ul className="InfoBlock__items">
|
|
10
|
-
{items.map((item, i) => (<li key={i} className="InfoBlock__item">
|
|
11
|
-
{item}
|
|
12
|
-
</li>))}
|
|
13
|
-
</ul>
|
|
14
|
-
{'extraInfo' in props && (<div className="InfoBlock__extrainfo">{props.extraInfo}</div>)}
|
|
15
|
-
{'attention' in props && (<div className="InfoBlock__attention">{props.attention}</div>)}
|
|
16
|
-
</div>);
|
|
17
|
-
};
|
|
18
|
-
export default InfoBlock;
|
package/esm/LabeledTextBlock.jsx
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import getBemClass from '@hugsmidjan/react/utils/getBemClass';
|
|
3
|
-
import { useSeenEffect } from './utils/seenEffect';
|
|
4
|
-
import ButtonTertiary from './ButtonTertiary';
|
|
5
|
-
const LabeledTextBlock = (props) => {
|
|
6
|
-
const { label, summary, wide, buttons = [], startSeen } = props;
|
|
7
|
-
const [ref] = useSeenEffect(startSeen);
|
|
8
|
-
return (<div className={getBemClass('LabeledTextBlock', wide && 'wide')} ref={ref}>
|
|
9
|
-
<h2 className="LabeledTextBlock__label">{label}</h2>
|
|
10
|
-
<div className="LabeledTextBlock__summary">
|
|
11
|
-
{summary}
|
|
12
|
-
{buttons.map((button, i) => (<ButtonTertiary key={i} {...button}/>))}
|
|
13
|
-
</div>
|
|
14
|
-
</div>);
|
|
15
|
-
};
|
|
16
|
-
export default LabeledTextBlock;
|
package/esm/Layout.jsx
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { useIsBrowserSide } from '@hugsmidjan/react/hooks';
|
|
3
|
-
import getBemClass from '@hugsmidjan/react/utils/getBemClass';
|
|
4
|
-
import { getAssetUrl } from '@reykjavik/hanna-utils/assets';
|
|
5
|
-
import { getTexts } from '@reykjavik/hanna-utils/i18n';
|
|
6
|
-
import Image from './_abstract/Image';
|
|
7
|
-
import { Link } from './_abstract/Link';
|
|
8
|
-
import { useMenuToggling } from './utils/useMenuToggling';
|
|
9
|
-
import { useScrollbarWidthCSSVar } from './utils/useScrollbarWidthCSSVar';
|
|
10
|
-
export const defaultLayoutTexts = {
|
|
11
|
-
is: {
|
|
12
|
-
lang: 'is',
|
|
13
|
-
skipLinkLabel: 'Valmynd',
|
|
14
|
-
closeMenuLabel: 'Loka',
|
|
15
|
-
closeMenuLabelLong: 'Loka valmynd',
|
|
16
|
-
},
|
|
17
|
-
en: {
|
|
18
|
-
lang: 'en',
|
|
19
|
-
skipLinkLabel: 'Skip to navigation',
|
|
20
|
-
closeMenuLabel: 'Close',
|
|
21
|
-
closeMenuLabelLong: 'Close menu',
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
const Layout = (props) => {
|
|
25
|
-
useScrollbarWidthCSSVar();
|
|
26
|
-
const { ssr, globalAlerts, mainChildren, navChildren, footerChildren, colorTheme, children, siteName = 'Reykjavík', logoLink = '/', } = props;
|
|
27
|
-
const { isMenuActive, closeMenu, toggleMenu } = useMenuToggling(ssr !== 'ssr-only');
|
|
28
|
-
const isBrowser = useIsBrowserSide( /* ssr */);
|
|
29
|
-
const txt = getTexts(props, defaultLayoutTexts);
|
|
30
|
-
return (<div className={getBemClass('Layout', props.modifier)} data-sprinkled={isBrowser} data-color-theme={colorTheme}>
|
|
31
|
-
{globalAlerts && (<div className="Layout__alerts" role="alert">
|
|
32
|
-
{globalAlerts}
|
|
33
|
-
</div>)}
|
|
34
|
-
<div className="Layout__content">
|
|
35
|
-
<div className="Layout__header" role="banner">
|
|
36
|
-
<Link className="Layout__header__logo" href={logoLink}>
|
|
37
|
-
{' '}
|
|
38
|
-
<Image inline={true} src={getAssetUrl('reykjavik-logo.svg')}/> {siteName}{' '}
|
|
39
|
-
</Link>{' '}
|
|
40
|
-
{navChildren && (<Link className="Layout__header__skiplink" href="#pagenav" onClick={isMenuActive &&
|
|
41
|
-
((e) => {
|
|
42
|
-
e.preventDefault();
|
|
43
|
-
toggleMenu();
|
|
44
|
-
})} aria-label={txt.skipLinkLabel}>
|
|
45
|
-
{txt.skipLinkLabel}
|
|
46
|
-
</Link>)}
|
|
47
|
-
</div>
|
|
48
|
-
<div className="Layout__main" role="main">
|
|
49
|
-
{mainChildren || children}
|
|
50
|
-
</div>
|
|
51
|
-
{navChildren && (<div className="Layout__nav" id="pagenav" role="navigation">
|
|
52
|
-
{navChildren}
|
|
53
|
-
{isMenuActive && (<button className="Layout__nav__closebutton" onClick={closeMenu} aria-label={txt.closeMenuLabelLong} type="button">
|
|
54
|
-
{txt.closeMenuLabel}
|
|
55
|
-
</button>)}
|
|
56
|
-
</div>)}
|
|
57
|
-
<div className="Layout__footer" role="complementary">
|
|
58
|
-
{footerChildren}
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
</div>);
|
|
62
|
-
};
|
|
63
|
-
export default Layout;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { getIllustrationUrl } from '@reykjavik/hanna-utils/assets';
|
|
3
|
-
import { Link } from '../_abstract/Link';
|
|
4
|
-
export const AuxiliaryPanel = (props) => {
|
|
5
|
-
const { title, id, items, image } = props;
|
|
6
|
-
const imageUrl = image ? getIllustrationUrl(image) : image;
|
|
7
|
-
return (<li className="AuxiliaryPanel" id={id} style={imageUrl
|
|
8
|
-
? { '--menu-auxiliary-image': `url(${imageUrl})` }
|
|
9
|
-
: undefined}>
|
|
10
|
-
<h3 className="AuxiliaryPanel__title">{title}</h3>
|
|
11
|
-
<ul className="AuxiliaryPanel__items">
|
|
12
|
-
{items.map((item, i) => (<li key={i} className="AuxiliaryPanel__item" aria-current={item.current || undefined}>
|
|
13
|
-
<Link className="AuxiliaryPanel__link" href={item.href} target={item.target} lang={item.lang}>
|
|
14
|
-
{item.label}
|
|
15
|
-
</Link>
|
|
16
|
-
</li>))}
|
|
17
|
-
</ul>
|
|
18
|
-
</li>);
|
|
19
|
-
};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import getBemClass from '@hugsmidjan/react/utils/getBemClass';
|
|
3
|
-
import { Link } from '../_abstract/Link';
|
|
4
|
-
export const PrimaryPanel = (props) => {
|
|
5
|
-
const { setActivePanel, panel, isParent, isActive, isBrowser, texts } = props;
|
|
6
|
-
const { items } = panel;
|
|
7
|
-
return (<li ref={isActive ? props.activeRef : undefined} className={getBemClass('PrimaryPanel', [
|
|
8
|
-
isParent && 'parent',
|
|
9
|
-
isActive && 'active',
|
|
10
|
-
items.length > 5 && 'twocol', // TODO: allow setting twocol manually?
|
|
11
|
-
])} id={panel.id}>
|
|
12
|
-
<h3 className="PrimaryPanel__title">
|
|
13
|
-
{' '}
|
|
14
|
-
{isBrowser && !isActive ? (<button className="MainMenu__mega__title-toggler" aria-controls={panel.id} onClick={() => setActivePanel(panel, false)} aria-pressed={isActive} type="button">
|
|
15
|
-
{panel.title}
|
|
16
|
-
</button>) : (panel.title)}
|
|
17
|
-
</h3>
|
|
18
|
-
<ul className="PrimaryPanel__items">
|
|
19
|
-
{items.map((item, i) => (<li key={i} className="PrimaryPanel__item" aria-current={item.current || undefined}>
|
|
20
|
-
<Link className="PrimaryPanel__link" href={item.href} target={item.target} lang={item.lang}>
|
|
21
|
-
<span className="PrimaryPanel__linkTitle">{item.label}</span>{' '}
|
|
22
|
-
<small className="PrimaryPanel__summary">{item.summary}</small>{' '}
|
|
23
|
-
</Link>
|
|
24
|
-
</li>))}
|
|
25
|
-
</ul>
|
|
26
|
-
{isBrowser && isActive && (<button className="MainMenu__megapanel__backtomenu" aria-controls={panel.id} aria-label={texts.backToMenuLong} onClick={() => setActivePanel(undefined)} type="button">
|
|
27
|
-
{texts.backToMenu}
|
|
28
|
-
</button>)}
|
|
29
|
-
</li>);
|
|
30
|
-
};
|
package/esm/MiniMetrics.jsx
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import Button from './_abstract/Button';
|
|
3
|
-
import SeenEffect from './SeenEffect';
|
|
4
|
-
const MiniMetrics = (props) => {
|
|
5
|
-
const { text, moreButton, startSeen } = props;
|
|
6
|
-
return (<SeenEffect className="MiniMetrics" startSeen={startSeen}>
|
|
7
|
-
<strong className="MiniMetrics__text">{text}</strong> {'\n'}
|
|
8
|
-
<Button bem="MiniMetrics__more" {...moreButton}/>
|
|
9
|
-
</SeenEffect>);
|
|
10
|
-
};
|
|
11
|
-
export default MiniMetrics;
|
package/esm/Modal.jsx
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import _Modal from '@hugsmidjan/react/Modal';
|
|
3
|
-
const Modal = (props) => {
|
|
4
|
-
const { closeDelay = 500, texts = {
|
|
5
|
-
closeButton: 'Loka ',
|
|
6
|
-
}, bling, children, render = () => children, } = props;
|
|
7
|
-
return (<_Modal {...props} bodyWrap={false} bem="Modal" closeDelay={closeDelay} texts={texts} render={(args) => bling ? (<>
|
|
8
|
-
{render(args)}
|
|
9
|
-
<div className="Modal__blings">
|
|
10
|
-
<div className="Modal__blings__inner">{bling}</div>
|
|
11
|
-
</div>
|
|
12
|
-
</>) : (render(args))}
|
|
13
|
-
// eslint-disable-next-line react/no-children-prop
|
|
14
|
-
children={undefined}/>);
|
|
15
|
-
};
|
|
16
|
-
export default Modal;
|
package/esm/NameCards.jsx
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import NameCard from './NameCard';
|
|
3
|
-
const NameCards = (props) => {
|
|
4
|
-
const { items } = props;
|
|
5
|
-
return (<div className="NameCards">
|
|
6
|
-
{items.map((item, i) => (<NameCard key={i} {...item}/>))}
|
|
7
|
-
</div>);
|
|
8
|
-
};
|
|
9
|
-
export default NameCards;
|
package/esm/PageFilter.jsx
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import getBemClass from '@hugsmidjan/react/utils/getBemClass';
|
|
3
|
-
import { useSeenEffect } from './utils/seenEffect';
|
|
4
|
-
import Footnote from './Footnote';
|
|
5
|
-
const PageFilter = (props) => {
|
|
6
|
-
const { title, summary, footnote, filters, children, buttonRow, underlap, startSeen } = props;
|
|
7
|
-
const [ref] = useSeenEffect(startSeen);
|
|
8
|
-
return (<div className={getBemClass('PageFilter', underlap && 'underlap')} ref={ref}>
|
|
9
|
-
<h2 className="PageFilter__title">{title}</h2>
|
|
10
|
-
{summary && <div className="PageFilter__summary">{summary}</div>}
|
|
11
|
-
<div className="PageFilter__filters">{filters || children}</div>
|
|
12
|
-
<div className="PageFilter__buttons">{buttonRow}</div>
|
|
13
|
-
{footnote && <Footnote>{footnote}</Footnote>}
|
|
14
|
-
</div>);
|
|
15
|
-
};
|
|
16
|
-
export default PageFilter;
|
package/esm/ProcessOverview.jsx
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import getBemClass from '@hugsmidjan/react/utils/getBemClass';
|
|
3
|
-
const ProcessOverview = (props) => {
|
|
4
|
-
const { title, items, attention, transparent, narrow } = props;
|
|
5
|
-
return (<div className={getBemClass('ProcessOverview', [
|
|
6
|
-
transparent && 'transparent',
|
|
7
|
-
narrow && 'narrow',
|
|
8
|
-
])}>
|
|
9
|
-
<h2 className="ProcessOverview__title">{title}</h2>
|
|
10
|
-
{items.map(({ title, content }, i) => {
|
|
11
|
-
return (<div key={i} className="ProcessOverview__item">
|
|
12
|
-
<h3 className="ProcessOverview__item__title">{title}</h3>
|
|
13
|
-
<div className="ProcessOverview__item__content">{content}</div>
|
|
14
|
-
</div>);
|
|
15
|
-
})}
|
|
16
|
-
|
|
17
|
-
{attention && <div className="ProcessOverview__attention">{attention}</div>}
|
|
18
|
-
</div>);
|
|
19
|
-
};
|
|
20
|
-
export default ProcessOverview;
|
package/esm/PullQuote.jsx
DELETED
package/esm/RadioGroup.jsx
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import TogglerGroupField from './_abstract/TogglerGroupField';
|
|
3
|
-
import TogglerInput from './_abstract/TogglerInput';
|
|
4
|
-
const Radio = (props) => (<TogglerInput {...props} bem="Radio" type="radio"/>);
|
|
5
|
-
const RadioGroup = (props) => (<TogglerGroupField {...props} bem="RadioGroup" modifier={props.layout} Toggler={Radio}/>);
|
|
6
|
-
RadioGroup.__Radio = Radio;
|
|
7
|
-
export default RadioGroup;
|
package/esm/RelatedLinks.jsx
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Link } from './_abstract/Link';
|
|
3
|
-
const types = {
|
|
4
|
-
external: 1,
|
|
5
|
-
document: 1,
|
|
6
|
-
pdf: 1,
|
|
7
|
-
link: 0,
|
|
8
|
-
};
|
|
9
|
-
const RelatedLinks = (props) => {
|
|
10
|
-
const { title, links } = props;
|
|
11
|
-
if (links.length === 0) {
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
const TitleTag = props.titleTag || 'h3';
|
|
15
|
-
return (<div className="RelatedLinks">
|
|
16
|
-
{title && <TitleTag className="RelatedLinks__title">{title}</TitleTag>}
|
|
17
|
-
<ul className="RelatedLinks__list">
|
|
18
|
-
{links.map(({ href, label, type, target }, i) => {
|
|
19
|
-
type = type && types[type] ? type : undefined;
|
|
20
|
-
return (<li key={i} className="RelatedLinks__item">
|
|
21
|
-
<Link className="RelatedLinks__link" href={href} data-type={type} target={target}>
|
|
22
|
-
{' '}
|
|
23
|
-
{label}{' '}
|
|
24
|
-
</Link>
|
|
25
|
-
</li>);
|
|
26
|
-
})}
|
|
27
|
-
</ul>
|
|
28
|
-
</div>);
|
|
29
|
-
};
|
|
30
|
-
export default RelatedLinks;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import Image from '../_abstract/Image';
|
|
3
|
-
import { Link } from '../_abstract/Link';
|
|
4
|
-
const SearchResultsItem = (props) => {
|
|
5
|
-
const { highlight, title, summary, href, meta, image } = props;
|
|
6
|
-
const bem = highlight ? 'SearchResultsHighlightItem' : 'SearchResultsItem';
|
|
7
|
-
const metaArr = (Array.isArray(meta) ? meta : [meta]);
|
|
8
|
-
return (<li className={bem}>
|
|
9
|
-
<Link className={bem + '__link'} href={href}>
|
|
10
|
-
<h3 className={bem + '__title'}>{title}</h3>
|
|
11
|
-
{metaArr.length > 0 && (<span className={bem + '__meta'}>
|
|
12
|
-
{metaArr.map((item, i) => typeof item === 'function' ? item() : item && <span key={i}>{item}</span>)}
|
|
13
|
-
</span>)}
|
|
14
|
-
{highlight && image && <Image className={bem + '__image'} src={image}/>}
|
|
15
|
-
<div className={bem + '__summary'} dangerouslySetInnerHTML={{ __html: summary }}/>
|
|
16
|
-
</Link>
|
|
17
|
-
</li>);
|
|
18
|
-
};
|
|
19
|
-
export default SearchResultsItem;
|
package/esm/WizardLayout.jsx
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { useIsBrowserSide } from '@hugsmidjan/react/hooks';
|
|
3
|
-
import { getAssetUrl } from '@reykjavik/hanna-utils/assets';
|
|
4
|
-
import Image from './_abstract/Image';
|
|
5
|
-
import { Link } from './_abstract/Link';
|
|
6
|
-
import { useScrollbarWidthCSSVar } from './utils/useScrollbarWidthCSSVar';
|
|
7
|
-
const WizardLayout = (props) => {
|
|
8
|
-
useScrollbarWidthCSSVar();
|
|
9
|
-
const {
|
|
10
|
-
// ssr,
|
|
11
|
-
wizardStepper, wizardFooter, children, colorTheme, logoLink = '/', siteName = 'Reykjavík', globalAlerts, } = props;
|
|
12
|
-
const isBrowser = useIsBrowserSide( /* ssr */);
|
|
13
|
-
return (<div className="WizardLayout" data-sprinkled={isBrowser} data-color-theme={colorTheme}>
|
|
14
|
-
{globalAlerts && (<div className="WizardLayout__alerts" role="alert">
|
|
15
|
-
{globalAlerts}
|
|
16
|
-
</div>)}
|
|
17
|
-
<div className="WizardLayout__content">
|
|
18
|
-
<div className="WizardLayout__header" role="banner">
|
|
19
|
-
<Link className="WizardLayout__header__logo" href={logoLink}>
|
|
20
|
-
{' '}
|
|
21
|
-
<Image inline={true} src={getAssetUrl('reykjavik-logo.svg')}/> {siteName}{' '}
|
|
22
|
-
</Link>{' '}
|
|
23
|
-
</div>
|
|
24
|
-
<div className="WizardLayout__wrap">
|
|
25
|
-
{wizardStepper && (<div className="WizardLayout__stepper" role="navigation">
|
|
26
|
-
{wizardStepper}
|
|
27
|
-
</div>)}
|
|
28
|
-
<div className="WizardLayout__main" role="main">
|
|
29
|
-
{children}
|
|
30
|
-
</div>
|
|
31
|
-
<div className="WizardLayout__deco WizardLayout__deco--geometry"/>
|
|
32
|
-
</div>
|
|
33
|
-
<div className="WizardLayout__footer" role="complementary">
|
|
34
|
-
{wizardFooter}
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
37
|
-
</div>);
|
|
38
|
-
};
|
|
39
|
-
export default WizardLayout;
|
package/esm/WizardStepper.jsx
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import getBemClass from '@hugsmidjan/react/utils/getBemClass';
|
|
3
|
-
const WizardStepper = (props) => {
|
|
4
|
-
const { steps, activeStep = -1, allowForwardSkip, disableBacktrack, onClick } = props;
|
|
5
|
-
return (<div className={getBemClass('WizardStepper', activeStep === -1 && 'preview')}>
|
|
6
|
-
{steps.map((step, i) => {
|
|
7
|
-
const { label, clickable, done, neutral } = step;
|
|
8
|
-
const stepClass = getBemClass('WizardStepper__step', [
|
|
9
|
-
(done || (done == null && i < activeStep)) && 'done',
|
|
10
|
-
neutral && 'neutral',
|
|
11
|
-
]);
|
|
12
|
-
const isClickable = clickable === 'always' ||
|
|
13
|
-
(clickable &&
|
|
14
|
-
(activeStep === i ||
|
|
15
|
-
(i > activeStep && allowForwardSkip) ||
|
|
16
|
-
(i < activeStep && !disableBacktrack)));
|
|
17
|
-
const ariaCurrent = activeStep === i ? 'step' : undefined;
|
|
18
|
-
return (<React.Fragment key={i}>
|
|
19
|
-
{isClickable ? (<button type="button" className={stepClass} onClick={() => onClick(i)} aria-current={ariaCurrent}>
|
|
20
|
-
{label}
|
|
21
|
-
</button>) : (<span className={stepClass} aria-current={ariaCurrent}>
|
|
22
|
-
{' '}
|
|
23
|
-
{label}{' '}
|
|
24
|
-
</span>)}{' '}
|
|
25
|
-
</React.Fragment>);
|
|
26
|
-
})}
|
|
27
|
-
</div>);
|
|
28
|
-
};
|
|
29
|
-
export default WizardStepper;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import Button from './Button';
|
|
3
|
-
import Image from './Image';
|
|
4
|
-
const Card = (props) => {
|
|
5
|
-
const { bem, href, title, imgPlaceholder } = props;
|
|
6
|
-
const cardClass = `${bem}__card`;
|
|
7
|
-
const image = 'image' in props && props.image;
|
|
8
|
-
const meta = 'meta' in props && props.meta;
|
|
9
|
-
const summary = 'summary' in props && props.summary;
|
|
10
|
-
return (<>
|
|
11
|
-
<Button bem={cardClass} href={href}>
|
|
12
|
-
{' '}
|
|
13
|
-
<Image className={`${bem}__image`} {...image} placeholder={imgPlaceholder}/>
|
|
14
|
-
<span className={`${cardClass}__title`}>{title}</span>{' '}
|
|
15
|
-
{meta && <span className={`${cardClass}__meta`}>{meta}</span>}{' '}
|
|
16
|
-
{summary && <span className={`${cardClass}__summary`}>{summary}</span>}{' '}
|
|
17
|
-
</Button>{' '}
|
|
18
|
-
</>);
|
|
19
|
-
};
|
|
20
|
-
export const CardList = (props) => {
|
|
21
|
-
const { bemPrefix, title, summaryElement, cards, titleTag = 'h2', children, imgPlaceholder, } = props;
|
|
22
|
-
const TitleTag = titleTag;
|
|
23
|
-
const fallbackImage = (imgPlaceholder !== true && imgPlaceholder) || undefined;
|
|
24
|
-
const fallbackImageStyle = fallbackImage
|
|
25
|
-
? { '--ImageCards--fallback': `url("${fallbackImage}")` }
|
|
26
|
-
: undefined;
|
|
27
|
-
return (<>
|
|
28
|
-
{summaryElement ? (<div className={bemPrefix + '__summary'}>
|
|
29
|
-
{title && <TitleTag className={bemPrefix + '__title'}>{title}</TitleTag>}
|
|
30
|
-
{summaryElement}
|
|
31
|
-
</div>) : (title && <TitleTag className={bemPrefix + '__title'}>{title}</TitleTag>)}
|
|
32
|
-
<ul className={bemPrefix + '__list'} style={fallbackImageStyle}>
|
|
33
|
-
{cards.map((card, i) => (<li key={i} className={bemPrefix + '__item'}>
|
|
34
|
-
<Card {...card} bem={bemPrefix} imgPlaceholder={!!imgPlaceholder}/>
|
|
35
|
-
</li>))}
|
|
36
|
-
</ul>
|
|
37
|
-
{children}
|
|
38
|
-
</>);
|
|
39
|
-
};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import getBemClass from '@hugsmidjan/react/utils/getBemClass';
|
|
3
|
-
const TogglerGroup = (props) => {
|
|
4
|
-
const {
|
|
5
|
-
// id,
|
|
6
|
-
className, bem, name, disabled, Toggler, onSelected, options, inputProps = {}, } = props;
|
|
7
|
-
const values = props.value || [];
|
|
8
|
-
return (<ul className={getBemClass(bem, null, className)} role="group" aria-labelledby={props['aria-labelledby']} aria-describedby={props['aria-describedby']} aria-required={props.required}>
|
|
9
|
-
{options.map((option, i) => {
|
|
10
|
-
const isDisabled = option.disabled != null
|
|
11
|
-
? option.disabled
|
|
12
|
-
: disabled && typeof disabled !== 'boolean'
|
|
13
|
-
? disabled.includes(i)
|
|
14
|
-
: disabled;
|
|
15
|
-
const isChecked = values.includes(option.value);
|
|
16
|
-
return (<Toggler key={i} {...inputProps} className={bem + '__item'} name={name} Wrapper="li" {...option} label={option.label || option.value} onChange={onSelected
|
|
17
|
-
? (e) => {
|
|
18
|
-
const { value } = option;
|
|
19
|
-
const checked = e.currentTarget.checked;
|
|
20
|
-
inputProps.onChange && inputProps.onChange(e);
|
|
21
|
-
const selectedValues = values.filter((val) => val !== value);
|
|
22
|
-
if (checked) {
|
|
23
|
-
selectedValues.push(value);
|
|
24
|
-
}
|
|
25
|
-
onSelected({ value, checked, option, selectedValues });
|
|
26
|
-
}
|
|
27
|
-
: inputProps.onChange} disabled={isDisabled} aria-invalid={props['aria-invalid']} checked={isChecked}/>);
|
|
28
|
-
})}
|
|
29
|
-
</ul>);
|
|
30
|
-
};
|
|
31
|
-
export default TogglerGroup;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import Bling from '../Bling';
|
|
3
|
-
const inverseAlignments = {
|
|
4
|
-
left: 'right',
|
|
5
|
-
'left-ish': 'right-ish',
|
|
6
|
-
'left-center': 'right-center',
|
|
7
|
-
'right-center': 'left-center',
|
|
8
|
-
'right-ish': 'left-ish',
|
|
9
|
-
right: 'left',
|
|
10
|
-
};
|
|
11
|
-
const Blings = (props) => (<>
|
|
12
|
-
{props.blings.map(({ type, align, vertical, color, overlay, parent }, i) => (<Bling key={type + '-' + i} type={type} align={props.mirror ? inverseAlignments[align || 'left'] : align} vertical={vertical} color={color} overlay={overlay} parent={parent}/>))}
|
|
13
|
-
</>);
|
|
14
|
-
export default Blings;
|