@ndla/ui 55.0.13-alpha.0 → 55.0.15-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/panda.buildinfo.json +142 -1
- package/dist/styles.css +597 -0
- package/es/Article/ArticleByline.js +7 -7
- package/es/Article/ArticleParagraph.js +11 -13
- package/es/AudioPlayer/AudioPlayer.js +1 -0
- package/es/CampaignBlock/CampaignBlock.js +103 -68
- package/es/Concept/Concept.js +69 -0
- package/es/ContactBlock/ContactBlock.js +17 -17
- package/es/ContentTypeBadge/ContentTypeBadgeNew.js +48 -0
- package/es/Embed/AudioEmbed.js +1 -2
- package/es/Embed/BrightcoveEmbed.js +13 -25
- package/es/Embed/ConceptEmbed.js +57 -301
- package/es/Embed/ConceptListEmbed.js +18 -24
- package/es/Embed/ContentLinkEmbed.js +10 -10
- package/es/Embed/CopyrightEmbed.js +3 -21
- package/es/Embed/ExternalEmbed.js +10 -18
- package/es/Embed/FootnoteEmbed.js +11 -8
- package/es/Embed/GlossEmbed.js +68 -0
- package/es/Embed/H5pEmbed.js +19 -19
- package/es/Embed/IframeEmbed.js +9 -6
- package/es/Embed/InlineTriggerButton.js +70 -0
- package/es/Embed/UnknownEmbed.js +9 -9
- package/es/Embed/UuDisclaimerEmbed.js +14 -25
- package/es/Embed/index.js +1 -3
- package/es/ErrorMessage/ErrorMessage.js +41 -22
- package/es/ErrorMessage/ErrorResourceAccessDenied.js +8 -6
- package/es/FactBox/FactBox.js +118 -47
- package/es/FileList/PdfFile.js +23 -5
- package/es/Gloss/Gloss.js +116 -86
- package/es/Gloss/GlossExample.js +49 -51
- package/es/LicenseByline/EmbedByline.js +143 -33
- package/es/LicenseByline/LicenseLink.js +16 -9
- package/es/LicenseByline/index.js +2 -2
- package/es/LinkBlock/LinkBlock.js +61 -33
- package/es/LinkBlock/LinkBlockSection.js +9 -6
- package/es/Logo/Logo.js +1 -30
- package/es/RelatedArticleList/RelatedArticleList.js +70 -87
- package/es/ResourceBox/ResourceBox.js +65 -37
- package/es/TagSelector/TagSelector.js +124 -131
- package/es/i18n/index.js +2 -1
- package/es/i18n/useComponentTranslations.js +83 -0
- package/es/index.js +4 -12
- package/es/locale/messages-en.js +30 -4
- package/es/locale/messages-nb.js +30 -4
- package/es/locale/messages-nn.js +30 -4
- package/es/locale/messages-se.js +30 -4
- package/es/locale/messages-sma.js +30 -4
- package/es/model/ContentType.js +3 -0
- package/es/styles.css +597 -0
- package/lib/Article/ArticleByline.js +8 -8
- package/lib/Article/ArticleParagraph.js +12 -14
- package/lib/AudioPlayer/AudioPlayer.js +1 -0
- package/lib/CampaignBlock/CampaignBlock.d.ts +2 -2
- package/lib/CampaignBlock/CampaignBlock.js +106 -68
- package/lib/Concept/Concept.d.ts +18 -0
- package/lib/Concept/Concept.js +75 -0
- package/lib/ContactBlock/ContactBlock.js +18 -18
- package/lib/ContentTypeBadge/ContentTypeBadgeNew.d.ts +17 -0
- package/lib/ContentTypeBadge/ContentTypeBadgeNew.js +56 -0
- package/lib/Embed/AudioEmbed.js +2 -3
- package/lib/Embed/BrightcoveEmbed.d.ts +1 -2
- package/lib/Embed/BrightcoveEmbed.js +16 -26
- package/lib/Embed/ConceptEmbed.d.ts +15 -21
- package/lib/Embed/ConceptEmbed.js +58 -301
- package/lib/Embed/ConceptListEmbed.js +21 -26
- package/lib/Embed/ContentLinkEmbed.js +10 -11
- package/lib/Embed/CopyrightEmbed.js +5 -22
- package/lib/Embed/ExternalEmbed.d.ts +1 -2
- package/lib/Embed/ExternalEmbed.js +13 -19
- package/lib/Embed/FootnoteEmbed.js +11 -9
- 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 +21 -19
- package/lib/Embed/IframeEmbed.d.ts +1 -2
- package/lib/Embed/IframeEmbed.js +11 -8
- package/lib/Embed/InlineTriggerButton.d.ts +11 -0
- package/lib/Embed/InlineTriggerButton.js +76 -0
- package/lib/Embed/UnknownEmbed.js +9 -10
- package/lib/Embed/UuDisclaimerEmbed.js +16 -26
- package/lib/Embed/index.d.ts +2 -3
- package/lib/Embed/index.js +2 -9
- package/lib/ErrorMessage/ErrorMessage.js +40 -23
- 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/PdfFile.js +23 -5
- package/lib/Gloss/Gloss.d.ts +10 -2
- package/lib/Gloss/Gloss.js +116 -85
- package/lib/Gloss/GlossExample.d.ts +3 -5
- package/lib/Gloss/GlossExample.js +49 -52
- package/lib/LicenseByline/EmbedByline.d.ts +2 -4
- package/lib/LicenseByline/EmbedByline.js +145 -35
- package/lib/LicenseByline/LicenseLink.d.ts +2 -2
- package/lib/LicenseByline/LicenseLink.js +16 -9
- package/lib/LicenseByline/index.d.ts +2 -2
- package/lib/LicenseByline/index.js +4 -5
- 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/RelatedArticleList/RelatedArticleList.d.ts +4 -4
- package/lib/RelatedArticleList/RelatedArticleList.js +74 -90
- package/lib/ResourceBox/ResourceBox.js +64 -37
- package/lib/TagSelector/TagSelector.d.ts +27 -12
- package/lib/TagSelector/TagSelector.js +126 -131
- 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 +5 -15
- package/lib/index.js +70 -102
- package/lib/locale/messages-en.d.ts +26 -0
- package/lib/locale/messages-en.js +30 -4
- package/lib/locale/messages-nb.d.ts +26 -0
- package/lib/locale/messages-nb.js +30 -4
- package/lib/locale/messages-nn.d.ts +26 -0
- package/lib/locale/messages-nn.js +30 -4
- package/lib/locale/messages-se.d.ts +26 -0
- package/lib/locale/messages-se.js +30 -4
- package/lib/locale/messages-sma.d.ts +26 -0
- package/lib/locale/messages-sma.js +30 -4
- package/lib/model/ContentType.d.ts +3 -0
- package/lib/model/ContentType.js +4 -1
- package/lib/styles.css +597 -0
- package/package.json +11 -13
- package/src/Article/ArticleByline.tsx +1 -1
- package/src/Article/ArticleParagraph.tsx +11 -9
- package/src/AudioPlayer/AudioPlayer.tsx +1 -0
- package/src/CampaignBlock/CampaignBlock.tsx +92 -55
- package/src/Concept/Concept.stories.tsx +142 -0
- package/src/Concept/Concept.tsx +73 -0
- package/src/ContactBlock/ContactBlock.tsx +1 -1
- 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 +18 -20
- package/src/Embed/ConceptEmbed.stories.tsx +1 -105
- package/src/Embed/ConceptEmbed.tsx +60 -385
- package/src/Embed/ConceptListEmbed.tsx +20 -19
- package/src/Embed/ContentLinkEmbed.tsx +8 -10
- package/src/Embed/CopyrightEmbed.tsx +1 -11
- 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/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/LicenseByline/EmbedByline.stories.tsx +9 -4
- package/src/LicenseByline/EmbedByline.tsx +139 -53
- package/src/LicenseByline/LicenseLink.tsx +15 -15
- package/src/LicenseByline/index.tsx +2 -2
- 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 +63 -59
- package/src/TagSelector/TagSelector.stories.tsx +92 -68
- package/src/TagSelector/TagSelector.tsx +161 -126
- package/src/i18n/index.ts +5 -0
- package/src/i18n/useComponentTranslations.ts +72 -0
- package/src/index.ts +23 -19
- package/src/locale/messages-en.ts +28 -2
- package/src/locale/messages-nb.ts +28 -2
- package/src/locale/messages-nn.ts +28 -2
- package/src/locale/messages-se.ts +28 -2
- package/src/locale/messages-sma.ts +28 -2
- package/src/model/ContentType.ts +3 -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 -99
- 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/LicenseByline/LicenseDescription.js +0 -63
- package/es/List/OrderedList.js +0 -41
- package/es/List/UnOrderedList.js +0 -28
- package/es/List/index.js +0 -10
- package/es/Notion/Notion.js +0 -76
- package/es/Notion/NotionImage.js +0 -46
- 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 -105
- 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/LicenseByline/LicenseDescription.d.ts +0 -15
- package/lib/LicenseByline/LicenseDescription.js +0 -70
- package/lib/List/OrderedList.d.ts +0 -16
- package/lib/List/OrderedList.js +0 -48
- package/lib/List/UnOrderedList.d.ts +0 -10
- package/lib/List/UnOrderedList.js +0 -35
- package/lib/List/index.d.ts +0 -9
- package/lib/List/index.js +0 -20
- package/lib/Notion/Notion.d.ts +0 -20
- package/lib/Notion/Notion.js +0 -82
- package/lib/Notion/NotionImage.d.ts +0 -13
- package/lib/Notion/NotionImage.js +0 -54
- 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/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/LicenseByline/LicenseDescription.tsx +0 -100
- package/src/List/OrderedList.stories.tsx +0 -135
- package/src/List/OrderedList.tsx +0 -158
- package/src/List/UnOrderedList.tsx +0 -43
- package/src/List/UnorderedList.stories.tsx +0 -72
- package/src/List/index.ts +0 -10
- package/src/Notion/Notion.tsx +0 -96
- package/src/Notion/NotionImage.tsx +0 -64
- 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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ndla/ui",
|
|
3
|
-
"version": "55.0.
|
|
3
|
+
"version": "55.0.15-alpha.0",
|
|
4
4
|
"description": "UI component library for NDLA",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -33,17 +33,17 @@
|
|
|
33
33
|
"types"
|
|
34
34
|
],
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@ndla/accordion": "^5.0.
|
|
37
|
-
"@ndla/button": "^14.0.
|
|
36
|
+
"@ndla/accordion": "^5.0.7-alpha.0",
|
|
37
|
+
"@ndla/button": "^14.0.7-alpha.0",
|
|
38
38
|
"@ndla/core": "^5.0.1",
|
|
39
39
|
"@ndla/dropdown-menu": "^1.0.38",
|
|
40
|
-
"@ndla/forms": "^9.0.
|
|
40
|
+
"@ndla/forms": "^9.0.8-alpha.0",
|
|
41
41
|
"@ndla/hooks": "^2.1.8",
|
|
42
|
-
"@ndla/icons": "^7.0.
|
|
42
|
+
"@ndla/icons": "^7.0.8-alpha.0",
|
|
43
43
|
"@ndla/licenses": "^8.0.0-alpha.0",
|
|
44
|
-
"@ndla/modal": "^7.0.
|
|
45
|
-
"@ndla/primitives": "^0.0.
|
|
46
|
-
"@ndla/safelink": "^6.0.
|
|
44
|
+
"@ndla/modal": "^7.0.7-alpha.0",
|
|
45
|
+
"@ndla/primitives": "^0.0.19",
|
|
46
|
+
"@ndla/safelink": "^6.0.2-alpha.0",
|
|
47
47
|
"@ndla/styled-system": "^0.0.8",
|
|
48
48
|
"@ndla/tooltip": "^8.0.1",
|
|
49
49
|
"@ndla/typography": "^0.4.23",
|
|
@@ -54,9 +54,7 @@
|
|
|
54
54
|
"i18next-browser-languagedetector": "^7.1.0",
|
|
55
55
|
"lodash.throttle": "^4.1.1",
|
|
56
56
|
"punycode.js": "^2.3.1",
|
|
57
|
-
"react-device-detect": "^2.2.3"
|
|
58
|
-
"react-select": "^5.8.0",
|
|
59
|
-
"react-swipeable": "^7.0.0"
|
|
57
|
+
"react-device-detect": "^2.2.3"
|
|
60
58
|
},
|
|
61
59
|
"peerDependencies": {
|
|
62
60
|
"@emotion/react": "^11.10.4",
|
|
@@ -68,7 +66,7 @@
|
|
|
68
66
|
"react-router-dom": "> 6.0.0"
|
|
69
67
|
},
|
|
70
68
|
"devDependencies": {
|
|
71
|
-
"@ndla/preset-panda": "^0.0.
|
|
69
|
+
"@ndla/preset-panda": "^0.0.11",
|
|
72
70
|
"@ndla/types-backend": "^0.2.86",
|
|
73
71
|
"@ndla/types-embed": "^4.1.8",
|
|
74
72
|
"@pandacss/dev": "^0.42.0",
|
|
@@ -81,5 +79,5 @@
|
|
|
81
79
|
"publishConfig": {
|
|
82
80
|
"access": "public"
|
|
83
81
|
},
|
|
84
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "3675a902b9f44f5afb37c648038b8d90f1ccd7d0"
|
|
85
83
|
}
|
|
@@ -15,7 +15,7 @@ import { AccordionRoot, AccordionHeader, AccordionContent, AccordionItem } from
|
|
|
15
15
|
import { breakpoints, colors, fonts, mq, spacing } from "@ndla/core";
|
|
16
16
|
import { getLicenseByAbbreviation } from "@ndla/licenses";
|
|
17
17
|
import ArticleFootNotes from "./ArticleFootNotes";
|
|
18
|
-
import LicenseLink from "../LicenseByline/LicenseLink";
|
|
18
|
+
import { LicenseLink } from "../LicenseByline/LicenseLink";
|
|
19
19
|
import { FootNote } from "../types";
|
|
20
20
|
|
|
21
21
|
const Wrapper = styled.div`
|
|
@@ -7,19 +7,21 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { ComponentPropsWithoutRef, ReactNode } from "react";
|
|
10
|
-
import styled from "@
|
|
10
|
+
import { styled } from "@ndla/styled-system/jsx";
|
|
11
11
|
|
|
12
12
|
interface Props extends ComponentPropsWithoutRef<"p"> {
|
|
13
13
|
children?: ReactNode;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
const StyledParagraph = styled
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
const StyledParagraph = styled("p", {
|
|
17
|
+
base: {
|
|
18
|
+
'&[data-align="center"]': {
|
|
19
|
+
textAlign: "center",
|
|
20
|
+
},
|
|
21
|
+
'&:has(span[dir="rtl"])': {
|
|
22
|
+
direction: "rtl",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
});
|
|
24
26
|
|
|
25
27
|
export const ArticleParagraph = (props: Props) => <StyledParagraph {...props} />;
|
|
@@ -6,14 +6,13 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
/** @jsxImportSource @emotion/react */
|
|
10
9
|
import parse from "html-react-parser";
|
|
11
|
-
import {
|
|
12
|
-
import styled from "@emotion/styled";
|
|
13
|
-
import { breakpoints, colors, fonts, spacing, mq, misc } from "@ndla/core";
|
|
10
|
+
import { ReactNode } from "react";
|
|
14
11
|
import { Forward } from "@ndla/icons/common";
|
|
12
|
+
import { Text } from "@ndla/primitives";
|
|
15
13
|
import { SafeLink } from "@ndla/safelink";
|
|
16
|
-
import {
|
|
14
|
+
import { styled } from "@ndla/styled-system/jsx";
|
|
15
|
+
import { HeadingLevel } from "../types";
|
|
17
16
|
import { getPossiblyRelativeUrl } from "../utils/relativeUrl";
|
|
18
17
|
|
|
19
18
|
interface Image {
|
|
@@ -35,74 +34,112 @@ interface Props {
|
|
|
35
34
|
path?: string;
|
|
36
35
|
}
|
|
37
36
|
|
|
38
|
-
const Container = styled
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
37
|
+
const Container = styled("div", {
|
|
38
|
+
base: {
|
|
39
|
+
display: "flex",
|
|
40
|
+
flexDirection: "column",
|
|
41
|
+
border: "1px solid",
|
|
42
|
+
borderColor: "stroke.default",
|
|
43
|
+
backgroundColor: "background.default",
|
|
44
|
+
borderRadius: "xsmall",
|
|
45
|
+
boxShadow: "full",
|
|
46
|
+
maxWidth: "surface.xsmall",
|
|
47
|
+
overflow: "hidden",
|
|
48
|
+
mobileWide: {
|
|
49
|
+
maxWidth: "surface.medium",
|
|
50
|
+
},
|
|
51
|
+
tabletWide: {
|
|
52
|
+
// TODO: This is probably not the correct max-width. And it should be a token
|
|
53
|
+
maxWidth: "1100px",
|
|
54
|
+
flexDirection: "row",
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
});
|
|
57
58
|
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
const LinkText = styled(Text, {
|
|
60
|
+
base: {
|
|
61
|
+
display: "flex",
|
|
62
|
+
gap: "xxsmall",
|
|
63
|
+
textDecoration: "underline",
|
|
64
|
+
_hover: {
|
|
65
|
+
textDecoration: "none",
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
const StyledImg = styled("img", {
|
|
70
|
+
base: {
|
|
71
|
+
alignSelf: "center",
|
|
72
|
+
objectFit: "cover",
|
|
73
|
+
width: "100%",
|
|
74
|
+
height: "215px",
|
|
75
|
+
desktop: {
|
|
76
|
+
height: "340px",
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
});
|
|
61
80
|
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
81
|
+
const ContentWrapper = styled("div", {
|
|
82
|
+
base: {
|
|
83
|
+
width: "100%",
|
|
84
|
+
position: "relative",
|
|
85
|
+
display: "flex",
|
|
86
|
+
flexDirection: "column",
|
|
87
|
+
gap: "xsmall",
|
|
88
|
+
alignItems: "flex-start",
|
|
89
|
+
paddingBlock: "medium",
|
|
90
|
+
paddingInline: "medium",
|
|
91
|
+
},
|
|
92
|
+
});
|
|
66
93
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
94
|
+
interface MaybeLinkTextProps {
|
|
95
|
+
url?: string;
|
|
96
|
+
path?: string;
|
|
97
|
+
children: ReactNode;
|
|
98
|
+
}
|
|
71
99
|
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
`;
|
|
100
|
+
const StyledSafeLink = styled(SafeLink, {
|
|
101
|
+
base: {
|
|
102
|
+
color: "inherit",
|
|
103
|
+
},
|
|
104
|
+
});
|
|
78
105
|
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
106
|
+
const MaybeLinkText = ({ url, children, path }: MaybeLinkTextProps) => {
|
|
107
|
+
if (url) return <StyledSafeLink to={getPossiblyRelativeUrl(url, path)}>{children}</StyledSafeLink>;
|
|
108
|
+
return children;
|
|
109
|
+
};
|
|
82
110
|
|
|
83
111
|
const CampaignBlock = ({
|
|
84
112
|
title,
|
|
85
113
|
image,
|
|
86
114
|
imageSide = "left",
|
|
87
115
|
description,
|
|
88
|
-
headingLevel:
|
|
116
|
+
headingLevel: InternalHeading = "h2",
|
|
89
117
|
url,
|
|
90
118
|
path,
|
|
91
119
|
className,
|
|
92
120
|
}: Props) => {
|
|
121
|
+
const imageComponent = image && <StyledImg src={`${image.src}?width=455`} height={340} width={455} alt={image.alt} />;
|
|
122
|
+
const HeaderComponent = url?.url ? LinkText : Text;
|
|
93
123
|
return (
|
|
94
|
-
<Container className={className} data-type="campaign-block"
|
|
95
|
-
{
|
|
96
|
-
<
|
|
97
|
-
<
|
|
98
|
-
|
|
124
|
+
<Container className={className} data-type="campaign-block">
|
|
125
|
+
{imageSide === "left" && imageComponent}
|
|
126
|
+
<ContentWrapper>
|
|
127
|
+
<MaybeLinkText url={url?.url} path={path}>
|
|
128
|
+
<HeaderComponent asChild consumeCss textStyle="heading.small">
|
|
129
|
+
<InternalHeading>{parse(title)}</InternalHeading>
|
|
130
|
+
</HeaderComponent>
|
|
131
|
+
</MaybeLinkText>
|
|
132
|
+
<Text textStyle="body.large">{parse(description)}</Text>
|
|
99
133
|
{!!url?.url && (
|
|
100
|
-
<
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
134
|
+
<MaybeLinkText url={url.url} path={path}>
|
|
135
|
+
<LinkText textStyle="body.medium">
|
|
136
|
+
{parse(url.text ?? "")}
|
|
137
|
+
<Forward />
|
|
138
|
+
</LinkText>
|
|
139
|
+
</MaybeLinkText>
|
|
104
140
|
)}
|
|
105
|
-
</
|
|
141
|
+
</ContentWrapper>
|
|
142
|
+
{imageSide !== "left" && imageComponent}
|
|
106
143
|
</Container>
|
|
107
144
|
);
|
|
108
145
|
};
|
|
@@ -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 { EmbedByline, 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 && <EmbedByline copyright={copyright} type="concept" />}
|
|
70
|
+
</StyledFigure>
|
|
71
|
+
);
|
|
72
|
+
},
|
|
73
|
+
);
|
|
@@ -18,7 +18,7 @@ import { Image } from "@ndla/primitives";
|
|
|
18
18
|
import { IAuthor, IImageMetaInformationV3 } from "@ndla/types-backend/image-api";
|
|
19
19
|
import { CanonicalUrlFuncs } from "../Embed";
|
|
20
20
|
import { errorSvgSrc } from "../Embed/ImageEmbed";
|
|
21
|
-
import LicenseLink from "../LicenseByline/LicenseLink";
|
|
21
|
+
import { LicenseLink } from "../LicenseByline/LicenseLink";
|
|
22
22
|
|
|
23
23
|
const BLOB_WIDTH = 90;
|
|
24
24
|
|
|
@@ -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
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
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 { forwardRef } from "react";
|
|
10
|
+
import { useTranslation } from "react-i18next";
|
|
11
|
+
import { Badge, BadgeProps, type BadgeVariant } from "@ndla/primitives";
|
|
12
|
+
import * as contentTypes from "../model/ContentType";
|
|
13
|
+
|
|
14
|
+
export interface ContentTypeBadgeProps extends Omit<BadgeProps, "colorTheme"> {
|
|
15
|
+
contentType: ContentType | undefined;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
type ContentType =
|
|
19
|
+
| typeof contentTypes.SUBJECT_MATERIAL
|
|
20
|
+
| typeof contentTypes.TASKS_AND_ACTIVITIES
|
|
21
|
+
| typeof contentTypes.ASSESSMENT_RESOURCES
|
|
22
|
+
| typeof contentTypes.SUBJECT
|
|
23
|
+
| typeof contentTypes.SOURCE_MATERIAL
|
|
24
|
+
| typeof contentTypes.LEARNING_PATH
|
|
25
|
+
| typeof contentTypes.TOPIC
|
|
26
|
+
| typeof contentTypes.MULTIDISCIPLINARY_TOPIC
|
|
27
|
+
| typeof contentTypes.CONCEPT
|
|
28
|
+
| typeof contentTypes.EXTERNAL
|
|
29
|
+
| typeof contentTypes.IMAGE
|
|
30
|
+
| typeof contentTypes.AUDIO
|
|
31
|
+
| typeof contentTypes.VIDEO
|
|
32
|
+
| typeof contentTypes.MISSING
|
|
33
|
+
// This allows for us to fallback to string without getting a ts error, while still keeping intellisense
|
|
34
|
+
| (string & {});
|
|
35
|
+
|
|
36
|
+
export const contentTypeToBadgeVariantMap: Record<ContentType, BadgeVariant> = {
|
|
37
|
+
[contentTypes.SUBJECT_MATERIAL]: "brand1",
|
|
38
|
+
[contentTypes.TASKS_AND_ACTIVITIES]: "brand2",
|
|
39
|
+
[contentTypes.ASSESSMENT_RESOURCES]: "brand2",
|
|
40
|
+
[contentTypes.SUBJECT]: "neutral",
|
|
41
|
+
[contentTypes.SOURCE_MATERIAL]: "brand1",
|
|
42
|
+
[contentTypes.LEARNING_PATH]: "brand3",
|
|
43
|
+
[contentTypes.TOPIC]: "neutral",
|
|
44
|
+
// TODO: Verify this color
|
|
45
|
+
[contentTypes.MULTIDISCIPLINARY_TOPIC]: "neutral",
|
|
46
|
+
[contentTypes.CONCEPT]: "brand1",
|
|
47
|
+
// TODO: Verify this color
|
|
48
|
+
[contentTypes.EXTERNAL]: "brand2",
|
|
49
|
+
// TODO: Verify resourceEmbedTypeMapping colors
|
|
50
|
+
[contentTypes.IMAGE]: "brand1",
|
|
51
|
+
[contentTypes.AUDIO]: "brand1",
|
|
52
|
+
[contentTypes.VIDEO]: "brand1",
|
|
53
|
+
[contentTypes.MISSING]: "neutral",
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export const ContentTypeBadge = forwardRef<HTMLDivElement, ContentTypeBadgeProps>(
|
|
57
|
+
({ contentType, children, ...props }, ref) => {
|
|
58
|
+
const { t } = useTranslation();
|
|
59
|
+
return (
|
|
60
|
+
<Badge
|
|
61
|
+
colorTheme={contentTypeToBadgeVariantMap[contentType ?? "missing"] ?? contentTypeToBadgeVariantMap["missing"]}
|
|
62
|
+
{...props}
|
|
63
|
+
ref={ref}
|
|
64
|
+
>
|
|
65
|
+
{children ?? t(`contentTypes.${contentType}`)}
|
|
66
|
+
</Badge>
|
|
67
|
+
);
|
|
68
|
+
},
|
|
69
|
+
);
|
package/src/Embed/AudioEmbed.tsx
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
import { Figure } from "@ndla/primitives";
|
|
9
10
|
import { AudioMetaData } from "@ndla/types-embed";
|
|
10
11
|
import EmbedErrorPlaceholder from "./EmbedErrorPlaceholder";
|
|
11
12
|
import { Author } from "./ImageEmbed";
|
|
12
13
|
import AudioPlayer from "../AudioPlayer";
|
|
13
|
-
import { Figure } from "../Figure";
|
|
14
14
|
import { EmbedByline } from "../LicenseByline";
|
|
15
15
|
|
|
16
16
|
interface Props {
|
|
@@ -42,7 +42,7 @@ const AudioEmbed = ({ embed, lang }: Props) => {
|
|
|
42
42
|
const img = coverPhoto && { url: coverPhoto.url, alt: coverPhoto.altText };
|
|
43
43
|
|
|
44
44
|
return (
|
|
45
|
-
<Figure
|
|
45
|
+
<Figure lang={lang}>
|
|
46
46
|
<AudioPlayer
|
|
47
47
|
description={data.podcastMeta?.introduction ?? ""}
|
|
48
48
|
img={img}
|