@ndla/ui 55.0.12-alpha.0 → 55.0.14-alpha.0
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/dist/all-aout.js +0 -0
- package/dist/all.css +1 -0
- package/dist/panda.buildinfo.json +289 -0
- package/dist/styles.css +1197 -0
- package/es/Article/Article.js +3 -4
- package/es/Article/ArticleByline.js +9 -9
- package/es/Article/ArticleFootNotes.js +4 -4
- package/es/Article/ArticleParagraph.js +11 -13
- package/es/AudioPlayer/AudioPlayer.js +142 -163
- package/es/AudioPlayer/Controls.js +187 -203
- package/es/AudioPlayer/SpeechControl.js +13 -11
- package/es/BlogPost/BlogPost.js +85 -23
- package/es/CampaignBlock/CampaignBlock.js +103 -69
- package/es/CodeBlock/CodeBlock.js +88 -96
- package/es/Concept/Concept.js +69 -0
- package/es/ContactBlock/ContactBlock.js +54 -40
- package/es/ContentLoader/index.js +7 -7
- package/es/ContentTypeBadge/ContentTypeBadgeNew.js +48 -0
- package/es/CopyParagraphButton/CopyParagraphButton.js +4 -4
- package/es/Embed/AudioEmbed.js +6 -11
- package/es/Embed/BrightcoveEmbed.js +25 -39
- package/es/Embed/CodeEmbed.js +58 -10
- package/es/Embed/ConceptEmbed.js +57 -306
- package/es/Embed/ConceptListEmbed.js +18 -24
- package/es/Embed/ContentLinkEmbed.js +10 -10
- package/es/Embed/CopyrightEmbed.js +4 -21
- package/es/Embed/EmbedErrorPlaceholder.js +32 -17
- package/es/Embed/ExternalEmbed.js +17 -28
- package/es/Embed/FootnoteEmbed.js +14 -11
- package/es/Embed/GlossEmbed.js +68 -0
- package/es/Embed/H5pEmbed.js +20 -21
- package/es/Embed/IframeEmbed.js +17 -15
- package/es/Embed/ImageEmbed.js +167 -122
- package/es/Embed/InlineTriggerButton.js +70 -0
- package/es/Embed/RelatedContentEmbed.js +8 -10
- package/es/Embed/UnknownEmbed.js +9 -9
- package/es/Embed/UuDisclaimerEmbed.js +16 -27
- package/es/Embed/index.js +1 -3
- package/es/ErrorMessage/ErrorMessage.js +42 -23
- package/es/ErrorMessage/ErrorResourceAccessDenied.js +8 -6
- package/es/FactBox/FactBox.js +118 -47
- package/es/FileList/File.js +1 -1
- package/es/FileList/Format.js +3 -3
- package/es/FileList/PdfFile.js +23 -5
- package/es/FrontpageArticle/FrontpageArticle.js +1 -1
- package/es/Gloss/Gloss.js +122 -94
- package/es/Gloss/GlossExample.js +49 -52
- package/es/Grid/Grid.js +1 -1
- package/es/KeyFigure/KeyFigure.js +2 -2
- package/es/LanguageSelector/LanguageSelector.js +2 -2
- package/es/LicenseByline/EmbedByline.js +5 -6
- package/es/LicenseByline/LicenseDescription.js +1 -1
- package/es/LicenseByline/LicenseLink.js +1 -2
- package/es/LinkBlock/LinkBlock.js +61 -33
- package/es/LinkBlock/LinkBlockSection.js +9 -6
- package/es/Logo/Logo.js +1 -30
- package/es/Messages/MessageBox.js +1 -1
- package/es/RelatedArticleList/RelatedArticleList.js +73 -90
- package/es/ResourceBox/ResourceBox.js +67 -44
- package/es/Search/ActiveFilters.js +1 -1
- package/es/Search/ContentTypeResult.js +9 -6
- package/es/Search/ContentTypeResultStyles.js +1 -1
- package/es/Search/IsPathToHighlight.js +1 -1
- package/es/Search/SearchField.js +6 -8
- package/es/Search/SearchResult.js +14 -19
- package/es/Search/SearchResultSleeve.js +14 -16
- package/es/SnackBar/SnackbarProvider.js +8 -11
- package/es/TagSelector/TagSelector.js +124 -131
- package/es/TreeStructure/AddFolderButton.js +4 -6
- package/es/TreeStructure/ComboboxButton.js +4 -7
- package/es/TreeStructure/FolderItem.js +12 -15
- package/es/TreeStructure/FolderItems.js +3 -3
- package/es/TreeStructure/TreeStructure.js +9 -12
- package/es/TreeStructure/helperFunctions.js +1 -1
- package/es/ZendeskButton/ZendeskButton.js +55 -0
- package/es/i18n/formatNestedMessages.js +1 -1
- package/es/i18n/index.js +2 -1
- package/es/i18n/useComponentTranslations.js +83 -0
- package/es/index.js +6 -12
- package/es/locale/messages-en.js +39 -12
- package/es/locale/messages-nb.js +39 -12
- package/es/locale/messages-nn.js +39 -12
- package/es/locale/messages-se.js +39 -12
- package/es/locale/messages-sma.js +39 -12
- package/es/model/ContentType.js +3 -0
- package/es/styles.css +1197 -0
- package/es/utils/relativeUrl.js +3 -3
- package/lib/Article/Article.js +3 -4
- package/lib/Article/ArticleByline.js +9 -9
- package/lib/Article/ArticleFootNotes.js +4 -4
- package/lib/Article/ArticleParagraph.js +12 -14
- package/lib/AudioPlayer/AudioPlayer.d.ts +1 -2
- package/lib/AudioPlayer/AudioPlayer.js +142 -162
- package/lib/AudioPlayer/Controls.js +190 -205
- package/lib/AudioPlayer/SpeechControl.js +13 -11
- package/lib/BlogPost/BlogPost.d.ts +2 -2
- package/lib/BlogPost/BlogPost.js +85 -24
- package/lib/CampaignBlock/CampaignBlock.d.ts +2 -2
- package/lib/CampaignBlock/CampaignBlock.js +106 -69
- package/lib/CodeBlock/CodeBlock.d.ts +5 -8
- package/lib/CodeBlock/CodeBlock.js +88 -96
- package/lib/Concept/Concept.d.ts +18 -0
- package/lib/Concept/Concept.js +75 -0
- package/lib/ContactBlock/ContactBlock.js +55 -43
- package/lib/ContentLoader/index.js +7 -7
- package/lib/ContentTypeBadge/ContentTypeBadgeNew.d.ts +17 -0
- package/lib/ContentTypeBadge/ContentTypeBadgeNew.js +56 -0
- package/lib/CopyParagraphButton/CopyParagraphButton.js +4 -4
- package/lib/Embed/AudioEmbed.js +7 -12
- package/lib/Embed/BrightcoveEmbed.d.ts +1 -2
- package/lib/Embed/BrightcoveEmbed.js +28 -40
- package/lib/Embed/CodeEmbed.js +56 -8
- package/lib/Embed/ConceptEmbed.d.ts +15 -21
- package/lib/Embed/ConceptEmbed.js +58 -306
- package/lib/Embed/ConceptListEmbed.js +21 -26
- package/lib/Embed/ContentLinkEmbed.js +10 -11
- package/lib/Embed/CopyrightEmbed.js +6 -22
- package/lib/Embed/EmbedErrorPlaceholder.d.ts +4 -3
- package/lib/Embed/EmbedErrorPlaceholder.js +32 -18
- package/lib/Embed/ExternalEmbed.d.ts +1 -2
- package/lib/Embed/ExternalEmbed.js +20 -29
- package/lib/Embed/FootnoteEmbed.js +14 -12
- package/lib/Embed/GlossEmbed.d.ts +13 -0
- package/lib/Embed/GlossEmbed.js +76 -0
- package/lib/Embed/H5pEmbed.d.ts +1 -2
- package/lib/Embed/H5pEmbed.js +22 -21
- package/lib/Embed/IframeEmbed.d.ts +1 -2
- package/lib/Embed/IframeEmbed.js +19 -17
- package/lib/Embed/ImageEmbed.d.ts +1 -2
- package/lib/Embed/ImageEmbed.js +167 -123
- package/lib/Embed/InlineTriggerButton.d.ts +11 -0
- package/lib/Embed/InlineTriggerButton.js +76 -0
- package/lib/Embed/RelatedContentEmbed.js +8 -10
- package/lib/Embed/UnknownEmbed.js +9 -10
- package/lib/Embed/UuDisclaimerEmbed.js +18 -28
- package/lib/Embed/index.d.ts +2 -3
- package/lib/Embed/index.js +2 -9
- package/lib/ErrorMessage/ErrorMessage.js +41 -24
- package/lib/ErrorMessage/ErrorResourceAccessDenied.js +7 -6
- package/lib/FactBox/FactBox.d.ts +0 -1
- package/lib/FactBox/FactBox.js +119 -46
- package/lib/FileList/File.js +1 -1
- package/lib/FileList/Format.js +3 -3
- package/lib/FileList/PdfFile.js +23 -5
- package/lib/FrontpageArticle/FrontpageArticle.js +1 -1
- package/lib/Gloss/Gloss.d.ts +10 -2
- package/lib/Gloss/Gloss.js +122 -93
- package/lib/Gloss/GlossExample.d.ts +3 -5
- package/lib/Gloss/GlossExample.js +49 -53
- package/lib/Grid/Grid.js +1 -1
- package/lib/KeyFigure/KeyFigure.js +2 -2
- package/lib/LanguageSelector/LanguageSelector.js +2 -2
- package/lib/LicenseByline/EmbedByline.js +5 -6
- package/lib/LicenseByline/LicenseDescription.js +1 -1
- package/lib/LicenseByline/LicenseLink.js +1 -2
- package/lib/LinkBlock/LinkBlock.js +62 -34
- package/lib/LinkBlock/LinkBlockSection.js +9 -7
- package/lib/Logo/Logo.d.ts +1 -3
- package/lib/Logo/Logo.js +2 -30
- package/lib/Messages/MessageBox.js +1 -1
- package/lib/RelatedArticleList/RelatedArticleList.d.ts +4 -4
- package/lib/RelatedArticleList/RelatedArticleList.js +77 -93
- package/lib/ResourceBox/ResourceBox.js +67 -45
- package/lib/Search/ActiveFilters.js +1 -1
- package/lib/Search/ContentTypeResult.js +9 -6
- package/lib/Search/ContentTypeResultStyles.js +1 -1
- package/lib/Search/IsPathToHighlight.js +1 -1
- package/lib/Search/SearchField.js +6 -8
- package/lib/Search/SearchResult.js +14 -19
- package/lib/Search/SearchResultSleeve.js +14 -16
- package/lib/SnackBar/SnackbarProvider.js +8 -11
- package/lib/TagSelector/TagSelector.d.ts +27 -12
- package/lib/TagSelector/TagSelector.js +126 -131
- package/lib/TreeStructure/AddFolderButton.js +4 -6
- package/lib/TreeStructure/ComboboxButton.js +4 -7
- package/lib/TreeStructure/FolderItem.js +12 -15
- package/lib/TreeStructure/FolderItems.js +3 -3
- package/lib/TreeStructure/TreeStructure.js +9 -12
- package/lib/TreeStructure/helperFunctions.js +1 -1
- package/lib/ZendeskButton/ZendeskButton.d.ts +19 -0
- package/lib/ZendeskButton/ZendeskButton.js +61 -0
- package/lib/i18n/formatNestedMessages.js +1 -1
- package/lib/i18n/index.d.ts +1 -0
- package/lib/i18n/index.js +20 -1
- package/lib/i18n/useComponentTranslations.d.ts +14 -0
- package/lib/i18n/useComponentTranslations.js +93 -0
- package/lib/index.d.ts +7 -14
- package/lib/index.js +77 -89
- package/lib/locale/messages-en.d.ts +27 -0
- package/lib/locale/messages-en.js +39 -12
- package/lib/locale/messages-nb.d.ts +27 -0
- package/lib/locale/messages-nb.js +39 -12
- package/lib/locale/messages-nn.d.ts +27 -0
- package/lib/locale/messages-nn.js +39 -12
- package/lib/locale/messages-se.d.ts +27 -0
- package/lib/locale/messages-se.js +39 -12
- package/lib/locale/messages-sma.d.ts +27 -0
- package/lib/locale/messages-sma.js +39 -12
- package/lib/model/ContentType.d.ts +3 -0
- package/lib/model/ContentType.js +4 -1
- package/lib/styles.css +1197 -0
- package/lib/types.d.ts +1 -0
- package/lib/utils/relativeUrl.js +3 -3
- package/package.json +18 -15
- package/src/Article/ArticleParagraph.tsx +11 -9
- package/src/AudioPlayer/AudioPlayer.tsx +139 -176
- package/src/AudioPlayer/Controls.tsx +210 -250
- package/src/AudioPlayer/SpeechControl.tsx +9 -7
- package/src/BlogPost/BlogPost.tsx +82 -58
- package/src/CampaignBlock/CampaignBlock.tsx +92 -55
- package/src/CodeBlock/CodeBlock.stories.tsx +0 -43
- package/src/CodeBlock/CodeBlock.tsx +91 -202
- package/src/Concept/Concept.stories.tsx +142 -0
- package/src/Concept/Concept.tsx +73 -0
- package/src/ContactBlock/ContactBlock.tsx +10 -2
- package/src/ContentTypeBadge/ContentTypeBadgeNew.stories.tsx +70 -0
- package/src/ContentTypeBadge/ContentTypeBadgeNew.tsx +69 -0
- package/src/Embed/AudioEmbed.tsx +2 -2
- package/src/Embed/BrightcoveEmbed.stories.tsx +0 -3
- package/src/Embed/BrightcoveEmbed.tsx +17 -19
- package/src/Embed/CodeEmbed.stories.tsx +95 -0
- package/src/Embed/CodeEmbed.tsx +62 -7
- package/src/Embed/ConceptEmbed.stories.tsx +1 -105
- package/src/Embed/ConceptEmbed.tsx +60 -393
- package/src/Embed/ConceptListEmbed.tsx +20 -19
- package/src/Embed/ContentLinkEmbed.tsx +8 -10
- package/src/Embed/CopyrightEmbed.tsx +1 -11
- package/src/Embed/EmbedErrorPlaceholder.tsx +31 -28
- package/src/Embed/ExternalEmbed.tsx +14 -17
- package/src/Embed/FootnoteEmbed.stories.tsx +2 -5
- package/src/Embed/FootnoteEmbed.tsx +13 -16
- package/src/Embed/GlossEmbed.stories.tsx +140 -0
- package/src/Embed/GlossEmbed.tsx +64 -0
- package/src/Embed/H5pEmbed.tsx +22 -16
- package/src/Embed/IframeEmbed.tsx +12 -6
- package/src/Embed/ImageEmbed.stories.tsx +53 -11
- package/src/Embed/ImageEmbed.tsx +162 -166
- package/src/Embed/InlineTriggerButton.tsx +72 -0
- package/src/Embed/UnknownEmbed.tsx +6 -7
- package/src/Embed/UuDisclaimerEmbed.stories.tsx +4 -4
- package/src/Embed/UuDisclaimerEmbed.tsx +17 -25
- package/src/Embed/index.ts +2 -3
- package/src/ErrorMessage/ErrorMessage.tsx +40 -29
- package/src/ErrorMessage/ErrorResourceAccessDenied.tsx +8 -6
- package/src/FactBox/FactBox.tsx +115 -115
- package/src/FactBox/Factbox.stories.tsx +43 -27
- package/src/FileList/FileList.stories.tsx +6 -1
- package/src/FileList/PdfFile.tsx +22 -5
- package/src/Gloss/Gloss.stories.tsx +107 -1
- package/src/Gloss/Gloss.tsx +143 -156
- package/src/Gloss/GlossExample.tsx +51 -77
- package/src/LinkBlock/LinkBlock.stories.tsx +8 -10
- package/src/LinkBlock/LinkBlock.tsx +54 -59
- package/src/LinkBlock/LinkBlockSection.tsx +9 -12
- package/src/Logo/Logo.stories.tsx +0 -1
- package/src/Logo/Logo.tsx +2 -30
- package/src/RelatedArticleList/RelatedArticleList.tsx +69 -88
- package/src/ResourceBox/ResourceBox.tsx +65 -73
- package/src/Search/ContentTypeResult.tsx +9 -3
- package/src/Search/SearchResultSleeve.tsx +5 -2
- package/src/TagSelector/TagSelector.stories.tsx +92 -68
- package/src/TagSelector/TagSelector.tsx +161 -126
- package/src/ZendeskButton/ZendeskButton.tsx +58 -0
- package/src/i18n/index.ts +5 -0
- package/src/i18n/useComponentTranslations.ts +72 -0
- package/src/index.ts +27 -18
- package/src/locale/messages-en.ts +29 -2
- package/src/locale/messages-nb.ts +29 -2
- package/src/locale/messages-nn.ts +29 -2
- package/src/locale/messages-se.ts +29 -2
- package/src/locale/messages-sma.ts +29 -2
- package/src/model/ContentType.ts +3 -0
- package/src/types.ts +2 -0
- package/es/DefinitionList/DefinitionDescription.js +0 -28
- package/es/DefinitionList/DefinitionTerm.js +0 -28
- package/es/DefinitionList/index.js +0 -10
- package/es/Embed/conceptComponents.js +0 -155
- package/es/ExpandableBox/ExpandableBox.js +0 -29
- package/es/ExpandableBox/index.js +0 -9
- package/es/Figure/Figure.js +0 -73
- package/es/Figure/index.js +0 -9
- package/es/FramedContent/FramedContent.js +0 -28
- package/es/FramedContent/index.js +0 -10
- package/es/Image/Image.js +0 -100
- package/es/Image/ImageLink.js +0 -39
- package/es/Image/index.js +0 -12
- package/es/LetterFilter/LetterFilter.js +0 -54
- package/es/LetterFilter/alphabet.js +0 -9
- package/es/LetterFilter/index.js +0 -10
- package/es/Notion/Notion.js +0 -76
- package/es/Notion/NotionImage.js +0 -91
- package/es/Notion/index.js +0 -9
- package/es/Table/Table.js +0 -141
- package/es/Table/index.js +0 -11
- package/es/TagSelector/Control.js +0 -28
- package/es/TagSelector/DropdownIndicator.js +0 -60
- package/es/TagSelector/Input.js +0 -22
- package/es/TagSelector/Menu.js +0 -27
- package/es/TagSelector/MenuList.js +0 -28
- package/es/TagSelector/Option.js +0 -60
- package/es/TagSelector/SelectContainer.js +0 -27
- package/es/TagSelector/ValueButton.js +0 -53
- package/es/TagSelector/ariaMessages.js +0 -94
- package/es/TagSelector/index.js +0 -10
- package/es/TagSelector/types.js +0 -1
- package/lib/DefinitionList/DefinitionDescription.d.ts +0 -10
- package/lib/DefinitionList/DefinitionDescription.js +0 -35
- package/lib/DefinitionList/DefinitionTerm.d.ts +0 -10
- package/lib/DefinitionList/DefinitionTerm.js +0 -35
- package/lib/DefinitionList/index.d.ts +0 -9
- package/lib/DefinitionList/index.js +0 -20
- package/lib/Embed/conceptComponents.d.ts +0 -40
- package/lib/Embed/conceptComponents.js +0 -163
- package/lib/ExpandableBox/ExpandableBox.d.ts +0 -15
- package/lib/ExpandableBox/ExpandableBox.js +0 -37
- package/lib/ExpandableBox/index.d.ts +0 -8
- package/lib/ExpandableBox/index.js +0 -18
- package/lib/Figure/Figure.d.ts +0 -16
- package/lib/Figure/Figure.js +0 -81
- package/lib/Figure/index.d.ts +0 -9
- package/lib/Figure/index.js +0 -13
- package/lib/FramedContent/FramedContent.d.ts +0 -12
- package/lib/FramedContent/FramedContent.js +0 -35
- package/lib/FramedContent/index.d.ts +0 -9
- package/lib/FramedContent/index.js +0 -16
- package/lib/Image/Image.d.ts +0 -38
- package/lib/Image/Image.js +0 -106
- package/lib/Image/ImageLink.d.ts +0 -18
- package/lib/Image/ImageLink.js +0 -44
- package/lib/Image/index.d.ts +0 -12
- package/lib/Image/index.js +0 -30
- package/lib/LetterFilter/LetterFilter.d.ts +0 -14
- package/lib/LetterFilter/LetterFilter.js +0 -61
- package/lib/LetterFilter/alphabet.d.ts +0 -8
- package/lib/LetterFilter/alphabet.js +0 -15
- package/lib/LetterFilter/index.d.ts +0 -9
- package/lib/LetterFilter/index.js +0 -16
- package/lib/Notion/Notion.d.ts +0 -20
- package/lib/Notion/Notion.js +0 -82
- package/lib/Notion/NotionImage.d.ts +0 -23
- package/lib/Notion/NotionImage.js +0 -101
- package/lib/Notion/index.d.ts +0 -8
- package/lib/Notion/index.js +0 -13
- package/lib/Table/Table.d.ts +0 -19
- package/lib/Table/Table.js +0 -145
- package/lib/Table/index.d.ts +0 -10
- package/lib/Table/index.js +0 -23
- package/lib/TagSelector/Control.d.ts +0 -11
- package/lib/TagSelector/Control.js +0 -35
- package/lib/TagSelector/DropdownIndicator.d.ts +0 -11
- package/lib/TagSelector/DropdownIndicator.js +0 -64
- package/lib/TagSelector/Input.d.ts +0 -12
- package/lib/TagSelector/Input.js +0 -29
- package/lib/TagSelector/Menu.d.ts +0 -12
- package/lib/TagSelector/Menu.js +0 -34
- package/lib/TagSelector/MenuList.d.ts +0 -16
- package/lib/TagSelector/MenuList.js +0 -35
- package/lib/TagSelector/Option.d.ts +0 -12
- package/lib/TagSelector/Option.js +0 -67
- package/lib/TagSelector/SelectContainer.d.ts +0 -11
- package/lib/TagSelector/SelectContainer.js +0 -34
- package/lib/TagSelector/ValueButton.d.ts +0 -20
- package/lib/TagSelector/ValueButton.js +0 -60
- package/lib/TagSelector/ariaMessages.d.ts +0 -16
- package/lib/TagSelector/ariaMessages.js +0 -101
- package/lib/TagSelector/index.d.ts +0 -11
- package/lib/TagSelector/index.js +0 -13
- package/lib/TagSelector/types.d.ts +0 -11
- package/lib/TagSelector/types.js +0 -5
- package/src/DefinitionList/DefinitionDescription.tsx +0 -26
- package/src/DefinitionList/DefinitionTerm.tsx +0 -26
- package/src/DefinitionList/index.tsx +0 -10
- package/src/Embed/conceptComponents.tsx +0 -293
- package/src/ExpandableBox/ExpandableBox.stories.tsx +0 -41
- package/src/ExpandableBox/ExpandableBox.tsx +0 -23
- package/src/ExpandableBox/index.ts +0 -9
- package/src/Figure/Figure.tsx +0 -167
- package/src/Figure/index.ts +0 -11
- package/src/FramedContent/FramedContent.stories.tsx +0 -152
- package/src/FramedContent/FramedContent.tsx +0 -26
- package/src/FramedContent/index.ts +0 -10
- package/src/Image/Image.stories.tsx +0 -61
- package/src/Image/Image.tsx +0 -147
- package/src/Image/ImageLink.tsx +0 -37
- package/src/Image/__tests__/Image-test.tsx +0 -66
- package/src/Image/__tests__/__snapshots__/Image-test.tsx.snap +0 -194
- package/src/Image/index.ts +0 -14
- package/src/LetterFilter/LetterFilter.stories.tsx +0 -29
- package/src/LetterFilter/LetterFilter.tsx +0 -78
- package/src/LetterFilter/alphabet.ts +0 -39
- package/src/LetterFilter/index.ts +0 -11
- package/src/Notion/Notion.tsx +0 -96
- package/src/Notion/NotionImage.tsx +0 -114
- package/src/Notion/index.ts +0 -9
- package/src/Table/Table.stories.tsx +0 -738
- package/src/Table/Table.tsx +0 -284
- package/src/Table/index.ts +0 -12
- package/src/TagSelector/Control.tsx +0 -34
- package/src/TagSelector/DropdownIndicator.tsx +0 -55
- package/src/TagSelector/Input.tsx +0 -31
- package/src/TagSelector/Menu.tsx +0 -38
- package/src/TagSelector/MenuList.tsx +0 -30
- package/src/TagSelector/Option.tsx +0 -58
- package/src/TagSelector/SelectContainer.tsx +0 -31
- package/src/TagSelector/ValueButton.tsx +0 -47
- package/src/TagSelector/ariaMessages.ts +0 -96
- package/src/TagSelector/index.ts +0 -14
- package/src/TagSelector/types.ts +0 -12
|
@@ -6,176 +6,93 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import styled from "@
|
|
12
|
-
import {
|
|
13
|
-
import { colors, fonts, spacing } from "@ndla/core";
|
|
14
|
-
import { Copy } from "@ndla/icons/action";
|
|
15
|
-
import { Done } from "@ndla/icons/editor";
|
|
16
|
-
import { copyTextToClipboard } from "@ndla/util";
|
|
17
|
-
import { ICodeLangugeOption, codeLanguageOptions } from "./codeLanguageOptions";
|
|
9
|
+
import { type ComponentPropsWithRef, forwardRef, useMemo } from "react";
|
|
10
|
+
import { cx } from "@ndla/styled-system/css";
|
|
11
|
+
import { styled } from "@ndla/styled-system/jsx";
|
|
12
|
+
import { type JsxStyleProps } from "@ndla/styled-system/types";
|
|
18
13
|
|
|
19
|
-
|
|
20
|
-
margin: 15px 0;
|
|
21
|
-
`;
|
|
22
|
-
|
|
23
|
-
const TitleBar = styled.div`
|
|
24
|
-
display: flex;
|
|
25
|
-
justify-content: space-between;
|
|
26
|
-
width: 100%;
|
|
27
|
-
`;
|
|
28
|
-
|
|
29
|
-
const Title = styled.h3`
|
|
30
|
-
font-style: normal;
|
|
31
|
-
font-weight: normal;
|
|
32
|
-
font-size: 16px;
|
|
33
|
-
line-height: 32px;
|
|
34
|
-
letter-spacing: 1px;
|
|
35
|
-
text-transform: uppercase;
|
|
36
|
-
color: ${colors.text.primary};
|
|
37
|
-
margin: 5px 0;
|
|
38
|
-
`;
|
|
39
|
-
|
|
40
|
-
type Props = {
|
|
41
|
-
code: string;
|
|
14
|
+
interface Props extends JsxStyleProps, ComponentPropsWithRef<"pre"> {
|
|
42
15
|
highlightedCode: string;
|
|
43
16
|
format: string;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
.token.url,
|
|
124
|
-
.token.variable {
|
|
125
|
-
color: #a67f59;
|
|
126
|
-
background: rgba(255, 255, 255, 0.5);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
.token.atrule,
|
|
130
|
-
.token.attr-value,
|
|
131
|
-
.token.keyword,
|
|
132
|
-
.token.class-name {
|
|
133
|
-
color: #1990b8;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
.token.regex,
|
|
137
|
-
.token.important {
|
|
138
|
-
color: #e90;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
.language-css .token.string,
|
|
142
|
-
.style .token.string {
|
|
143
|
-
color: #a67f59;
|
|
144
|
-
background: rgba(255, 255, 255, 0.5);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
.token.important {
|
|
148
|
-
font-weight: normal;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
.token.bold {
|
|
152
|
-
font-weight: bold;
|
|
153
|
-
}
|
|
154
|
-
.token.italic {
|
|
155
|
-
font-style: italic;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
.token.entity {
|
|
159
|
-
cursor: help;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
.token.namespace {
|
|
163
|
-
opacity: 0.7;
|
|
164
|
-
}
|
|
165
|
-
`;
|
|
166
|
-
|
|
167
|
-
const getTitleFromFormat = (format: string) => {
|
|
168
|
-
const selectedLanguage = codeLanguageOptions.find((item: ICodeLangugeOption) => item.format === format);
|
|
169
|
-
if (selectedLanguage) {
|
|
170
|
-
return selectedLanguage.title;
|
|
171
|
-
}
|
|
172
|
-
return;
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
export const Codeblock = ({ actionButton, code, highlightedCode, format, showCopy = false, title }: Props) => {
|
|
176
|
-
const { t } = useTranslation();
|
|
177
|
-
const [isCopied, setIsCopied] = useState(false);
|
|
178
|
-
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const Pre = styled("pre", {
|
|
20
|
+
base: {
|
|
21
|
+
border: "1px solid",
|
|
22
|
+
borderColor: "stroke.subtle",
|
|
23
|
+
borderLeft: "4px solid",
|
|
24
|
+
borderLeftColor: "stroke.default",
|
|
25
|
+
borderRadius: "xsmall",
|
|
26
|
+
boxSizing: "border-box",
|
|
27
|
+
overflowX: "auto",
|
|
28
|
+
textStyle: "label.medium",
|
|
29
|
+
fontFamily: "code",
|
|
30
|
+
display: "block",
|
|
31
|
+
whiteSpace: "pre",
|
|
32
|
+
"& .linenumber": {
|
|
33
|
+
display: "inline-block",
|
|
34
|
+
paddingBlock: "0",
|
|
35
|
+
paddingInline: "small",
|
|
36
|
+
borderRight: "1px solid",
|
|
37
|
+
borderColor: "stroke.subtle",
|
|
38
|
+
width: "xxlarge",
|
|
39
|
+
textAlign: "right",
|
|
40
|
+
marginInlineEnd: "xsmall",
|
|
41
|
+
},
|
|
42
|
+
"& .linenumber[data-first]": {
|
|
43
|
+
paddingBlockStart: "xsmall",
|
|
44
|
+
},
|
|
45
|
+
"& .linenumber[data-last]": {
|
|
46
|
+
paddingBlockEnd: "xsmall",
|
|
47
|
+
},
|
|
48
|
+
// The remaining css is copied from the coy theme in prismjs. A lot of css is omitted due to styling clashes
|
|
49
|
+
"& .token.comment, .token.block-comment, .token.prolog, .token.doctype, .token.cdata": {
|
|
50
|
+
color: "#7d8b99",
|
|
51
|
+
},
|
|
52
|
+
"& .token.punctuation": {
|
|
53
|
+
color: "#5f6364",
|
|
54
|
+
},
|
|
55
|
+
"& .token.property, .token.tag, .token.boolean, .token.number, .token.function-name, .token.constant, .token.symbol, .token.deleted":
|
|
56
|
+
{
|
|
57
|
+
color: "#c92c2c",
|
|
58
|
+
},
|
|
59
|
+
"& .token.selector, .token.attr-name, .token.string, .token.char, .token.function, .token.builtin, .token.inserted":
|
|
60
|
+
{
|
|
61
|
+
color: "#2f9c0a",
|
|
62
|
+
},
|
|
63
|
+
"& .token.operator, .token.entity, .token.url, .token.variable": {
|
|
64
|
+
color: "#a67f59",
|
|
65
|
+
background: "rgba(255, 255, 255, 0.5)",
|
|
66
|
+
},
|
|
67
|
+
"& .token.atrule, .token.attr-value, .token.keyword, .token.class-name": {
|
|
68
|
+
color: "#1990b8",
|
|
69
|
+
},
|
|
70
|
+
"& .token.regex, .token.important": {
|
|
71
|
+
color: "#e90",
|
|
72
|
+
},
|
|
73
|
+
"& .language-css .token.string, .style .token.string": {
|
|
74
|
+
color: "#a67f59",
|
|
75
|
+
background: "rgba(255, 255, 255, 0.5)",
|
|
76
|
+
},
|
|
77
|
+
"& .token.important": {
|
|
78
|
+
fontWeight: "normal",
|
|
79
|
+
},
|
|
80
|
+
"& .token.bold": {
|
|
81
|
+
fontWeight: "bold",
|
|
82
|
+
},
|
|
83
|
+
"& .token.italic": {
|
|
84
|
+
fontStyle: "italic",
|
|
85
|
+
},
|
|
86
|
+
"& .token.entity": {
|
|
87
|
+
cursor: "help",
|
|
88
|
+
},
|
|
89
|
+
"& .token.namespace": {
|
|
90
|
+
opacity: "0.7",
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
export const Codeblock = forwardRef<HTMLPreElement, Props>(({ highlightedCode, format, className, ...props }, ref) => {
|
|
179
96
|
const codeWithLineNumbers = useMemo(() => {
|
|
180
97
|
return highlightedCode
|
|
181
98
|
.split("\n")
|
|
@@ -187,42 +104,14 @@ export const Codeblock = ({ actionButton, code, highlightedCode, format, showCop
|
|
|
187
104
|
.join("\n");
|
|
188
105
|
}, [highlightedCode]);
|
|
189
106
|
|
|
190
|
-
useEffect(() => {
|
|
191
|
-
if (isCopied) {
|
|
192
|
-
const timer = setInterval(() => setIsCopied(false), 3000);
|
|
193
|
-
// ensure interval is cleared - also if unmounted
|
|
194
|
-
return () => {
|
|
195
|
-
clearTimeout(timer);
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
}, [isCopied]);
|
|
199
|
-
|
|
200
107
|
return (
|
|
201
|
-
<
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
<code className={`language-${format}`} dangerouslySetInnerHTML={{ __html: codeWithLineNumbers }} />
|
|
208
|
-
</StyledPre>
|
|
209
|
-
{showCopy && (
|
|
210
|
-
<ButtonV2
|
|
211
|
-
title={t("codeBlock.copyButton")}
|
|
212
|
-
disabled={isCopied}
|
|
213
|
-
data-copied-title={t("codeBlock.copiedCode")}
|
|
214
|
-
data-copy-string={code}
|
|
215
|
-
onClick={() => {
|
|
216
|
-
copyTextToClipboard(code);
|
|
217
|
-
setIsCopied(true);
|
|
218
|
-
}}
|
|
219
|
-
>
|
|
220
|
-
{isCopied ? <Done aria-hidden="true" /> : <Copy aria-hidden="true" />}{" "}
|
|
221
|
-
{isCopied ? t("codeBlock.copiedCode") : t("codeBlock.copyCode")}
|
|
222
|
-
</ButtonV2>
|
|
223
|
-
)}
|
|
224
|
-
</Wrapper>
|
|
108
|
+
<Pre
|
|
109
|
+
className={cx(`language-${format}`, className)}
|
|
110
|
+
{...props}
|
|
111
|
+
dangerouslySetInnerHTML={{ __html: codeWithLineNumbers }}
|
|
112
|
+
ref={ref}
|
|
113
|
+
/>
|
|
225
114
|
);
|
|
226
|
-
};
|
|
115
|
+
});
|
|
227
116
|
|
|
228
117
|
export default Codeblock;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2024-present, NDLA.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
10
|
+
import { ConceptData } from "@ndla/types-embed";
|
|
11
|
+
import { Concept } from "./Concept";
|
|
12
|
+
|
|
13
|
+
const visualElementData: ConceptData["visualElement"] = {
|
|
14
|
+
resource: "image",
|
|
15
|
+
status: "success",
|
|
16
|
+
embedData: {
|
|
17
|
+
resource: "image",
|
|
18
|
+
resourceId: "61181",
|
|
19
|
+
size: "full",
|
|
20
|
+
align: "",
|
|
21
|
+
alt: "Tenåringsjente med lyse fletter slenger på håret. Foto. ",
|
|
22
|
+
caption:
|
|
23
|
+
"Den østerrikske tronfølgeren Franz Ferdinand og hans hustru Sophie var på besøk i Sarajevo i 1914. Begge ble skutt og drept av nasjonalisten Gavrilo Princip i det som er kjent som <em>skuddene i Sarajevo</em>. Denne hendelsen var den utløsende årsaken til første verdenskrig.",
|
|
24
|
+
url: "https://api.test.ndla.no/image-api/v2/images/61181",
|
|
25
|
+
},
|
|
26
|
+
data: {
|
|
27
|
+
id: "61181",
|
|
28
|
+
metaUrl: "https://api.test.ndla.no/image-api/v3/images/61181",
|
|
29
|
+
title: {
|
|
30
|
+
title: "\nHigh angle view of teenage girl with tousled dyed hair dancing at skateboard park\n",
|
|
31
|
+
language: "nb",
|
|
32
|
+
},
|
|
33
|
+
alttext: {
|
|
34
|
+
alttext: "Tenåringsjente med lyse fletter slenger på håret. Foto. ",
|
|
35
|
+
language: "nb",
|
|
36
|
+
},
|
|
37
|
+
copyright: {
|
|
38
|
+
license: {
|
|
39
|
+
license: "CC-BY-NC-4.0",
|
|
40
|
+
description: "Creative Commons Attribution-NonCommercial 4.0 International",
|
|
41
|
+
url: "https://creativecommons.org/licenses/by-nc/4.0/",
|
|
42
|
+
},
|
|
43
|
+
origin: "https://bilder.ntb.no/r/preview/creative/EXuziiZGWno",
|
|
44
|
+
creators: [
|
|
45
|
+
{
|
|
46
|
+
type: "photographer",
|
|
47
|
+
name: "Maskot",
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
processors: [],
|
|
51
|
+
rightsholders: [
|
|
52
|
+
{
|
|
53
|
+
type: "rightsholder",
|
|
54
|
+
name: "NTB",
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
processed: false,
|
|
58
|
+
},
|
|
59
|
+
tags: {
|
|
60
|
+
tags: ["danser", "kultur", "identitet"],
|
|
61
|
+
language: "nb",
|
|
62
|
+
},
|
|
63
|
+
caption: {
|
|
64
|
+
caption: "Modellklarert.",
|
|
65
|
+
language: "nb",
|
|
66
|
+
},
|
|
67
|
+
supportedLanguages: ["nb"],
|
|
68
|
+
created: "2022-01-07T08:26:01Z",
|
|
69
|
+
createdBy: "lA2KgVfhY-fpmgHCYAy5W1DX",
|
|
70
|
+
modelRelease: "yes",
|
|
71
|
+
image: {
|
|
72
|
+
fileName: "S81WiNgl.jpg",
|
|
73
|
+
size: 1685455,
|
|
74
|
+
contentType: "image/jpeg",
|
|
75
|
+
imageUrl: "https://api.test.ndla.no/image-api/raw/S81WiNgl.jpg",
|
|
76
|
+
dimensions: {
|
|
77
|
+
width: 2000,
|
|
78
|
+
height: 1333,
|
|
79
|
+
},
|
|
80
|
+
language: "nb",
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export default {
|
|
86
|
+
title: "Components/Concept",
|
|
87
|
+
component: Concept,
|
|
88
|
+
tags: ["autodocs"],
|
|
89
|
+
args: {
|
|
90
|
+
title: "skin - formasjonsskade",
|
|
91
|
+
lang: "nb",
|
|
92
|
+
visualElement: visualElementData,
|
|
93
|
+
copyright: {
|
|
94
|
+
license: {
|
|
95
|
+
license: "CC-BY-SA-4.0",
|
|
96
|
+
description: "Creative Commons Attribution-ShareAlike 4.0 International",
|
|
97
|
+
url: "https://creativecommons.org/licenses/by-sa/4.0/",
|
|
98
|
+
},
|
|
99
|
+
creators: [{ type: "Writer", name: "Sissel Paaske" }],
|
|
100
|
+
processors: [
|
|
101
|
+
{ type: "Processor", name: "Totaltekst" },
|
|
102
|
+
{ type: "Correction", name: "Arbeidets art" },
|
|
103
|
+
],
|
|
104
|
+
rightsholders: [],
|
|
105
|
+
processed: false,
|
|
106
|
+
},
|
|
107
|
+
children: (
|
|
108
|
+
<>
|
|
109
|
+
<p>
|
|
110
|
+
Ordet «skin» er engelsk og brukes om formasjonsskade som oppstår i boreprosessen i området som grenser inn til
|
|
111
|
+
brønnen. Skaden er størst i området nærmest hullet, men den kan bre seg utover et stykke fra brønnen. Skin
|
|
112
|
+
forteller om bergartens permeabilitet i reservoarsonen.
|
|
113
|
+
</p>
|
|
114
|
+
<p>Hullveggen skades både av borekronen, små partikler og væsken som brukes i brønnen.</p>
|
|
115
|
+
<p>
|
|
116
|
+
Skaden i bergarten gir dårligere forhold for oljen som skal strømme til brønnen. Gangene i bergarten plugges,
|
|
117
|
+
og det oppstår et trykkfall som reduserer produksjonstrykket i brønnen.
|
|
118
|
+
</p>
|
|
119
|
+
<p>
|
|
120
|
+
Det er viktig å redusere omfanget av skaden ved å velge væsker som passer godt til bergartsegenskapene, og å
|
|
121
|
+
bore med en borekrone som skader minst mulig.
|
|
122
|
+
</p>
|
|
123
|
+
<p>Skader som er dannet av borevæske, kan repareres ved å syrebehandle hullets overflate.</p>
|
|
124
|
+
</>
|
|
125
|
+
),
|
|
126
|
+
},
|
|
127
|
+
} satisfies Meta<typeof Concept>;
|
|
128
|
+
|
|
129
|
+
export const Default: StoryObj<typeof Concept> = {};
|
|
130
|
+
|
|
131
|
+
export const WithoutVisualElement: StoryObj<typeof Concept> = {
|
|
132
|
+
args: {
|
|
133
|
+
visualElement: undefined,
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
export const WithoutLicenseAndVisualElement: StoryObj<typeof Concept> = {
|
|
138
|
+
args: {
|
|
139
|
+
visualElement: undefined,
|
|
140
|
+
copyright: undefined,
|
|
141
|
+
},
|
|
142
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2024-present, NDLA.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { ComponentPropsWithRef, ReactNode, forwardRef } from "react";
|
|
10
|
+
import { Figure } from "@ndla/primitives";
|
|
11
|
+
import { styled } from "@ndla/styled-system/jsx";
|
|
12
|
+
import { IDraftCopyright as ConceptCopyright } from "@ndla/types-backend/concept-api";
|
|
13
|
+
import { ConceptVisualElementMeta } from "@ndla/types-embed";
|
|
14
|
+
import { BrightcoveEmbed, ExternalEmbed, H5pEmbed, IframeEmbed, ImageEmbed } from "../Embed";
|
|
15
|
+
import { LicenseContainerContent } from "../LicenseByline/EmbedByline";
|
|
16
|
+
|
|
17
|
+
export interface ConceptProps extends ComponentPropsWithRef<"figure"> {
|
|
18
|
+
copyright?: ConceptCopyright;
|
|
19
|
+
visualElement?: ConceptVisualElementMeta;
|
|
20
|
+
lang?: string;
|
|
21
|
+
title?: string;
|
|
22
|
+
children?: ReactNode;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const StyledFigure = styled(Figure, {
|
|
26
|
+
base: {
|
|
27
|
+
display: "flex",
|
|
28
|
+
flexDirection: "column",
|
|
29
|
+
gap: "medium",
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const ContentWrapper = styled("div", {
|
|
34
|
+
base: {
|
|
35
|
+
textStyle: "body.large",
|
|
36
|
+
display: "inline",
|
|
37
|
+
"& p": {
|
|
38
|
+
display: "inline",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// TODO: Figure out if we need to support tags, subjects and headerButtons.
|
|
44
|
+
|
|
45
|
+
export const Concept = forwardRef<HTMLElement, ConceptProps>(
|
|
46
|
+
({ copyright, visualElement, lang, children, title, ...rest }, ref) => {
|
|
47
|
+
return (
|
|
48
|
+
<StyledFigure ref={ref} {...rest}>
|
|
49
|
+
<ContentWrapper lang={lang}>
|
|
50
|
+
{!!title && (
|
|
51
|
+
<>
|
|
52
|
+
<b>{title}</b>
|
|
53
|
+
{` – `}
|
|
54
|
+
</>
|
|
55
|
+
)}
|
|
56
|
+
{children}
|
|
57
|
+
</ContentWrapper>
|
|
58
|
+
{visualElement?.resource === "image" ? (
|
|
59
|
+
<ImageEmbed embed={visualElement} lang={lang} />
|
|
60
|
+
) : visualElement?.resource === "brightcove" ? (
|
|
61
|
+
<BrightcoveEmbed embed={visualElement} />
|
|
62
|
+
) : visualElement?.resource === "h5p" ? (
|
|
63
|
+
<H5pEmbed embed={visualElement} />
|
|
64
|
+
) : visualElement?.resource === "iframe" ? (
|
|
65
|
+
<IframeEmbed embed={visualElement} />
|
|
66
|
+
) : visualElement?.resource === "external" ? (
|
|
67
|
+
<ExternalEmbed embed={visualElement} />
|
|
68
|
+
) : null}
|
|
69
|
+
{copyright && <LicenseContainerContent copyright={copyright} type="concept" />}
|
|
70
|
+
</StyledFigure>
|
|
71
|
+
);
|
|
72
|
+
},
|
|
73
|
+
);
|
|
@@ -14,10 +14,10 @@ import styled from "@emotion/styled";
|
|
|
14
14
|
import { spacing, fonts, colors, mq, breakpoints, misc } from "@ndla/core";
|
|
15
15
|
import { BlobPointy as UnstyledBlobPointy, BlobRound as UnstyledBlobRound } from "@ndla/icons/common";
|
|
16
16
|
import { COPYRIGHTED, getLicenseByAbbreviation } from "@ndla/licenses";
|
|
17
|
+
import { Image } from "@ndla/primitives";
|
|
17
18
|
import { IAuthor, IImageMetaInformationV3 } from "@ndla/types-backend/image-api";
|
|
18
19
|
import { CanonicalUrlFuncs } from "../Embed";
|
|
19
20
|
import { errorSvgSrc } from "../Embed/ImageEmbed";
|
|
20
|
-
import Image, { ImageLink } from "../Image";
|
|
21
21
|
import LicenseLink from "../LicenseByline/LicenseLink";
|
|
22
22
|
|
|
23
23
|
const BLOB_WIDTH = 90;
|
|
@@ -150,9 +150,17 @@ interface LinkWrapperProps {
|
|
|
150
150
|
children: ReactNode;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
+
const StyledLink = styled.a`
|
|
154
|
+
text-decoration: none;
|
|
155
|
+
`;
|
|
156
|
+
|
|
153
157
|
const LinkWrapper = ({ src, children }: LinkWrapperProps) => {
|
|
154
158
|
if (src) {
|
|
155
|
-
return
|
|
159
|
+
return (
|
|
160
|
+
<StyledLink target="_blank" href={src} rel="noopener noreferrer">
|
|
161
|
+
{children}
|
|
162
|
+
</StyledLink>
|
|
163
|
+
);
|
|
156
164
|
}
|
|
157
165
|
return children;
|
|
158
166
|
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2024-present, NDLA.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { useTranslation } from "react-i18next";
|
|
10
|
+
import { Meta, StoryFn, StoryObj } from "@storybook/react";
|
|
11
|
+
import { Video } from "@ndla/icons/editor";
|
|
12
|
+
import { HStack, styled } from "@ndla/styled-system/jsx";
|
|
13
|
+
import { ContentTypeBadge } from "./ContentTypeBadgeNew";
|
|
14
|
+
|
|
15
|
+
export default {
|
|
16
|
+
title: "Components/ContentTypeBadgeNew",
|
|
17
|
+
component: ContentTypeBadge,
|
|
18
|
+
tags: ["autodocs"],
|
|
19
|
+
parameters: {
|
|
20
|
+
inlineStories: true,
|
|
21
|
+
},
|
|
22
|
+
args: {
|
|
23
|
+
contentType: "subject-material",
|
|
24
|
+
},
|
|
25
|
+
} satisfies Meta<typeof ContentTypeBadge>;
|
|
26
|
+
|
|
27
|
+
export const Default: StoryObj<typeof ContentTypeBadge> = {};
|
|
28
|
+
|
|
29
|
+
const StyledHStack = styled(HStack, {
|
|
30
|
+
base: {
|
|
31
|
+
flexWrap: "wrap",
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
export const AllBadges: StoryFn<typeof ContentTypeBadge> = () => (
|
|
36
|
+
<StyledHStack gap="3xsmall">
|
|
37
|
+
<ContentTypeBadge contentType="subject-material" />
|
|
38
|
+
<ContentTypeBadge contentType="tasks-and-activities" />
|
|
39
|
+
<ContentTypeBadge contentType="assessment-resources" />
|
|
40
|
+
<ContentTypeBadge contentType="subject" />
|
|
41
|
+
<ContentTypeBadge contentType="source-material" />
|
|
42
|
+
<ContentTypeBadge contentType="learning-path" />
|
|
43
|
+
<ContentTypeBadge contentType="topic" />
|
|
44
|
+
<ContentTypeBadge contentType="multidisciplinary-topic" />
|
|
45
|
+
<ContentTypeBadge contentType="concept" />
|
|
46
|
+
<ContentTypeBadge contentType="external" />
|
|
47
|
+
<ContentTypeBadge contentType="image" />
|
|
48
|
+
<ContentTypeBadge contentType="audio" />
|
|
49
|
+
<ContentTypeBadge contentType="video" />
|
|
50
|
+
<ContentTypeBadge contentType="missing" />
|
|
51
|
+
</StyledHStack>
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
const StyledContentTypeBadge = styled(ContentTypeBadge, {
|
|
55
|
+
base: {
|
|
56
|
+
display: "flex",
|
|
57
|
+
gap: "4xsmall",
|
|
58
|
+
alignItems: "center",
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
export const ContentOverride: StoryFn<typeof ContentTypeBadge> = () => {
|
|
63
|
+
const { t } = useTranslation();
|
|
64
|
+
return (
|
|
65
|
+
<StyledContentTypeBadge contentType="video">
|
|
66
|
+
<Video size="small" />
|
|
67
|
+
{t("contentTypes.video")}
|
|
68
|
+
</StyledContentTypeBadge>
|
|
69
|
+
);
|
|
70
|
+
};
|