@dnb/eufemia 9.19.0 → 9.20.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.
Files changed (200) hide show
  1. package/CHANGELOG.md +20 -198
  2. package/cjs/components/avatar/Avatar.js +14 -12
  3. package/cjs/components/avatar/AvatarGroup.js +11 -11
  4. package/cjs/components/avatar/style/_avatar.scss +2 -0
  5. package/cjs/components/avatar/style/dnb-avatar.css +4 -1
  6. package/cjs/components/avatar/style/dnb-avatar.min.css +1 -1
  7. package/cjs/components/breadcrumb/Breadcrumb.js +27 -52
  8. package/cjs/components/breadcrumb/BreadcrumbItem.js +15 -29
  9. package/cjs/components/button/Button.d.ts +11 -7
  10. package/cjs/components/icon-primary/IconPrimary.d.ts +2 -1
  11. package/cjs/components/info-card/InfoCard.js +22 -22
  12. package/cjs/components/pagination/Pagination.d.ts +6 -6
  13. package/cjs/components/pagination/Pagination.js +2 -2
  14. package/cjs/components/skeleton/Skeleton.d.ts +1 -1
  15. package/cjs/components/skeleton/SkeletonHelper.d.ts +2 -1
  16. package/cjs/components/step-indicator/StepIndicatorTriggerButton.js +4 -4
  17. package/cjs/components/tag/Tag.js +17 -29
  18. package/cjs/components/tag/TagGroup.js +10 -24
  19. package/cjs/components/timeline/Timeline.js +24 -64
  20. package/cjs/components/timeline/TimelineItem.js +16 -29
  21. package/cjs/elements/Div.d.ts +1 -1
  22. package/cjs/elements/P.d.ts +2 -1
  23. package/cjs/shared/AnimateHeight.js +19 -13
  24. package/cjs/shared/helpers.js +16 -4
  25. package/cjs/shared/hooks/index.js +13 -0
  26. package/cjs/shared/hooks/usePropsWithContext.js +92 -0
  27. package/cjs/style/dnb-ui-components.css +4 -1
  28. package/cjs/style/dnb-ui-components.min.css +1 -1
  29. package/cjs/style/dnb-ui-elements.css +1 -3
  30. package/cjs/style/dnb-ui-elements.min.css +1 -1
  31. package/cjs/style/dnb-ui-tags.css +2 -6
  32. package/cjs/style/dnb-ui-tags.min.css +2 -2
  33. package/cjs/style/elements/code.scss +1 -3
  34. package/cjs/style/stylis.d.ts +38 -0
  35. package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.css +1 -3
  36. package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +1 -1
  37. package/cjs/style/themes/theme-ui/dnb-theme-ui.css +1 -3
  38. package/cjs/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
  39. package/components/avatar/Avatar.js +14 -13
  40. package/components/avatar/Avatar.tsx +8 -9
  41. package/components/avatar/AvatarGroup.js +20 -20
  42. package/components/avatar/AvatarGroup.tsx +4 -8
  43. package/components/avatar/style/_avatar.scss +2 -0
  44. package/components/avatar/style/dnb-avatar.css +4 -1
  45. package/components/avatar/style/dnb-avatar.min.css +1 -1
  46. package/components/breadcrumb/Breadcrumb.js +22 -35
  47. package/components/breadcrumb/Breadcrumb.tsx +10 -10
  48. package/components/breadcrumb/BreadcrumbItem.js +14 -25
  49. package/components/breadcrumb/BreadcrumbItem.tsx +8 -11
  50. package/components/button/Button.d.ts +11 -7
  51. package/components/icon-primary/IconPrimary.d.ts +2 -1
  52. package/components/info-card/InfoCard.js +22 -22
  53. package/components/info-card/InfoCard.tsx +13 -12
  54. package/components/modal/Modal.tsx +1 -1
  55. package/components/modal/ModalContent.tsx +6 -2
  56. package/components/modal/components/ModalHeader.tsx +2 -2
  57. package/components/modal/types.ts +2 -2
  58. package/components/pagination/Pagination.d.ts +6 -6
  59. package/components/pagination/Pagination.js +2 -2
  60. package/components/skeleton/SkeletonHelper.d.ts +2 -1
  61. package/components/step-indicator/StepIndicatorTriggerButton.js +4 -4
  62. package/components/tag/Tag.js +17 -27
  63. package/components/tag/Tag.tsx +15 -13
  64. package/components/tag/TagGroup.js +9 -22
  65. package/components/tag/TagGroup.tsx +6 -10
  66. package/components/timeline/Timeline.js +23 -27
  67. package/components/timeline/Timeline.tsx +24 -20
  68. package/components/timeline/TimelineItem.js +15 -25
  69. package/components/timeline/TimelineItem.tsx +8 -10
  70. package/elements/P.d.ts +2 -1
  71. package/es/components/avatar/Avatar.js +7 -6
  72. package/es/components/avatar/Avatar.tsx +8 -9
  73. package/es/components/avatar/AvatarGroup.js +6 -6
  74. package/es/components/avatar/AvatarGroup.tsx +4 -8
  75. package/es/components/avatar/style/_avatar.scss +2 -0
  76. package/es/components/avatar/style/dnb-avatar.css +4 -1
  77. package/es/components/avatar/style/dnb-avatar.min.css +1 -1
  78. package/es/components/breadcrumb/Breadcrumb.js +8 -14
  79. package/es/components/breadcrumb/Breadcrumb.tsx +10 -10
  80. package/es/components/breadcrumb/BreadcrumbItem.js +9 -13
  81. package/es/components/breadcrumb/BreadcrumbItem.tsx +8 -11
  82. package/es/components/button/Button.d.ts +11 -7
  83. package/es/components/icon-primary/IconPrimary.d.ts +2 -1
  84. package/es/components/info-card/InfoCard.js +8 -8
  85. package/es/components/info-card/InfoCard.tsx +13 -12
  86. package/es/components/modal/Modal.tsx +1 -1
  87. package/es/components/modal/ModalContent.tsx +6 -2
  88. package/es/components/modal/components/ModalHeader.tsx +2 -2
  89. package/es/components/modal/types.ts +2 -2
  90. package/es/components/pagination/Pagination.d.ts +6 -6
  91. package/es/components/pagination/Pagination.js +2 -2
  92. package/es/components/skeleton/Skeleton.d.ts +1 -1
  93. package/es/components/skeleton/SkeletonHelper.d.ts +2 -1
  94. package/es/components/step-indicator/StepIndicatorTriggerButton.js +4 -4
  95. package/es/components/tag/Tag.js +11 -14
  96. package/es/components/tag/Tag.tsx +15 -13
  97. package/es/components/tag/TagGroup.js +7 -13
  98. package/es/components/tag/TagGroup.tsx +6 -10
  99. package/es/components/timeline/Timeline.js +21 -17
  100. package/es/components/timeline/Timeline.tsx +24 -20
  101. package/es/components/timeline/TimelineItem.js +9 -12
  102. package/es/components/timeline/TimelineItem.tsx +8 -10
  103. package/es/elements/Div.d.ts +1 -1
  104. package/es/elements/P.d.ts +2 -1
  105. package/es/shared/AnimateHeight.js +15 -13
  106. package/es/shared/helpers.js +9 -2
  107. package/es/shared/hooks/index.js +1 -0
  108. package/es/shared/hooks/index.ts +1 -0
  109. package/es/shared/hooks/usePropsWithContext.js +26 -0
  110. package/es/shared/hooks/usePropsWithContext.ts +45 -0
  111. package/es/shared/interfaces.tsx +0 -2
  112. package/es/style/dnb-ui-components.css +4 -1
  113. package/es/style/dnb-ui-components.min.css +1 -1
  114. package/es/style/dnb-ui-elements.css +1 -3
  115. package/es/style/dnb-ui-elements.min.css +1 -1
  116. package/es/style/dnb-ui-tags.css +2 -6
  117. package/es/style/dnb-ui-tags.min.css +2 -2
  118. package/es/style/elements/code.scss +1 -3
  119. package/es/style/stylis.d.ts +38 -0
  120. package/es/style/themes/theme-open-banking/dnb-theme-open-banking.css +1 -3
  121. package/es/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +1 -1
  122. package/es/style/themes/theme-ui/dnb-theme-ui.css +1 -3
  123. package/es/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
  124. package/esm/components/avatar/Avatar.js +14 -13
  125. package/esm/components/avatar/Avatar.tsx +8 -9
  126. package/esm/components/avatar/AvatarGroup.js +20 -20
  127. package/esm/components/avatar/AvatarGroup.tsx +4 -8
  128. package/esm/components/avatar/style/_avatar.scss +2 -0
  129. package/esm/components/avatar/style/dnb-avatar.css +4 -1
  130. package/esm/components/avatar/style/dnb-avatar.min.css +1 -1
  131. package/esm/components/breadcrumb/Breadcrumb.js +22 -35
  132. package/esm/components/breadcrumb/Breadcrumb.tsx +10 -10
  133. package/esm/components/breadcrumb/BreadcrumbItem.js +14 -25
  134. package/esm/components/breadcrumb/BreadcrumbItem.tsx +8 -11
  135. package/esm/components/button/Button.d.ts +11 -7
  136. package/esm/components/icon-primary/IconPrimary.d.ts +2 -1
  137. package/esm/components/info-card/InfoCard.js +22 -22
  138. package/esm/components/info-card/InfoCard.tsx +13 -12
  139. package/esm/components/modal/Modal.tsx +1 -1
  140. package/esm/components/modal/ModalContent.tsx +6 -2
  141. package/esm/components/modal/components/ModalHeader.tsx +2 -2
  142. package/esm/components/modal/types.ts +2 -2
  143. package/esm/components/pagination/Pagination.d.ts +6 -6
  144. package/esm/components/pagination/Pagination.js +2 -2
  145. package/esm/components/skeleton/SkeletonHelper.d.ts +2 -1
  146. package/esm/components/step-indicator/StepIndicatorTriggerButton.js +4 -4
  147. package/esm/components/tag/Tag.js +17 -27
  148. package/esm/components/tag/Tag.tsx +15 -13
  149. package/esm/components/tag/TagGroup.js +9 -22
  150. package/esm/components/tag/TagGroup.tsx +6 -10
  151. package/esm/components/timeline/Timeline.js +23 -27
  152. package/esm/components/timeline/Timeline.tsx +24 -20
  153. package/esm/components/timeline/TimelineItem.js +15 -25
  154. package/esm/components/timeline/TimelineItem.tsx +8 -10
  155. package/esm/dnb-ui-components.min.mjs +3 -3
  156. package/esm/dnb-ui-lib.min.mjs +3 -3
  157. package/esm/dnb-ui-web-components.min.mjs +4 -4
  158. package/esm/elements/P.d.ts +2 -1
  159. package/esm/shared/AnimateHeight.js +19 -13
  160. package/esm/shared/helpers.js +15 -4
  161. package/esm/shared/hooks/index.js +1 -0
  162. package/esm/shared/hooks/index.ts +1 -0
  163. package/esm/shared/hooks/usePropsWithContext.js +47 -0
  164. package/esm/shared/hooks/usePropsWithContext.ts +45 -0
  165. package/esm/shared/interfaces.tsx +0 -2
  166. package/esm/style/dnb-ui-components.css +4 -1
  167. package/esm/style/dnb-ui-components.min.css +1 -1
  168. package/esm/style/dnb-ui-elements.css +1 -3
  169. package/esm/style/dnb-ui-elements.min.css +1 -1
  170. package/esm/style/dnb-ui-tags.css +2 -6
  171. package/esm/style/dnb-ui-tags.min.css +2 -2
  172. package/esm/style/elements/code.scss +1 -3
  173. package/esm/style/stylis.d.ts +38 -0
  174. package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.css +1 -3
  175. package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +1 -1
  176. package/esm/style/themes/theme-ui/dnb-theme-ui.css +1 -3
  177. package/esm/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
  178. package/package.json +1 -1
  179. package/shared/AnimateHeight.js +19 -13
  180. package/shared/helpers.js +15 -4
  181. package/shared/hooks/index.js +1 -0
  182. package/shared/hooks/index.ts +1 -0
  183. package/shared/hooks/usePropsWithContext.js +47 -0
  184. package/shared/hooks/usePropsWithContext.ts +45 -0
  185. package/shared/interfaces.tsx +0 -2
  186. package/style/dnb-ui-components.css +4 -1
  187. package/style/dnb-ui-components.min.css +1 -1
  188. package/style/dnb-ui-elements.css +1 -3
  189. package/style/dnb-ui-elements.min.css +1 -1
  190. package/style/dnb-ui-tags.css +2 -6
  191. package/style/dnb-ui-tags.min.css +2 -2
  192. package/style/elements/code.scss +1 -3
  193. package/style/stylis.d.ts +38 -0
  194. package/style/themes/theme-open-banking/dnb-theme-open-banking.css +1 -3
  195. package/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +1 -1
  196. package/style/themes/theme-ui/dnb-theme-ui.css +1 -3
  197. package/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
  198. package/umd/dnb-ui-components.min.js +3 -3
  199. package/umd/dnb-ui-lib.min.js +4 -4
  200. package/umd/dnb-ui-web-components.min.js +3 -3
@@ -8,14 +8,14 @@ import { AvatarSizes, AvatarVariants } from './Avatar'
8
8
  // Shared
9
9
  import Context from '../../shared/Context'
10
10
  import { ISpacingProps } from '../../shared/interfaces'
11
- import { extendPropsWithContext } from '../../shared/component-helper'
11
+ import { usePropsWithContext } from '../../shared/hooks'
12
12
 
13
13
  export interface AvatarGroupProps {
14
14
  /**
15
15
  * Label to describe the avatar group
16
16
  * Default: null
17
17
  */
18
- label: string
18
+ label: React.ReactNode
19
19
 
20
20
  /**
21
21
  * Custom className on the component root
@@ -59,7 +59,7 @@ export const defaultProps = {
59
59
 
60
60
  export const AvatarGroupContext = React.createContext(null)
61
61
 
62
- function AvatarGroup(localProps: AvatarGroupProps & ISpacingProps) {
62
+ const AvatarGroup = (localProps: AvatarGroupProps & ISpacingProps) => {
63
63
  // Every component should have a context
64
64
  const context = React.useContext(Context)
65
65
  // Extract additional props from global context
@@ -71,11 +71,7 @@ function AvatarGroup(localProps: AvatarGroupProps & ISpacingProps) {
71
71
  maxElements: maxElementsProp,
72
72
  variant,
73
73
  ...props
74
- } = extendPropsWithContext(
75
- { ...defaultProps, ...localProps },
76
- defaultProps,
77
- context?.AvatarGroup
78
- )
74
+ } = usePropsWithContext(localProps, defaultProps, context?.AvatarGroup)
79
75
 
80
76
  const maxElements =
81
77
  maxElementsProp && maxElementsProp > 0 ? maxElementsProp : 4
@@ -112,6 +112,7 @@
112
112
 
113
113
  &:nth-of-type(2) {
114
114
  margin-left: 0;
115
+ border-left: none;
115
116
  }
116
117
  }
117
118
 
@@ -119,6 +120,7 @@
119
120
  display: inline-flex;
120
121
  align-items: center;
121
122
  justify-content: center;
123
+ flex-shrink: 0;
122
124
  color: var(--color-black-55);
123
125
 
124
126
  &--size-small {
@@ -185,7 +185,8 @@
185
185
  .dnb-avatar__group .dnb-avatar--size-x-large {
186
186
  margin-left: -1.5rem; }
187
187
  .dnb-avatar__group .dnb-avatar:nth-of-type(2) {
188
- margin-left: 0; }
188
+ margin-left: 0;
189
+ border-left: none; }
189
190
  .dnb-avatar__group--elements-left {
190
191
  display: -webkit-inline-box;
191
192
  display: -ms-inline-flexbox;
@@ -196,6 +197,8 @@
196
197
  -webkit-box-pack: center;
197
198
  -ms-flex-pack: center;
198
199
  justify-content: center;
200
+ -ms-flex-negative: 0;
201
+ flex-shrink: 0;
199
202
  color: #737373;
200
203
  color: var(--color-black-55); }
201
204
  .dnb-avatar__group--elements-left--size-small {
@@ -1 +1 @@
1
- .dnb-avatar{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;color:var(--color-black-80,#333);font-family:DNB,sans-serif;font-family:var(--font-family-default);font-size:1rem;font-size:var(--font-size-small);font-style:normal;font-weight:400;font-weight:var(--font-weight-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;padding:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-break:break-word}.dnb-avatar *,.dnb-avatar :after,.dnb-avatar :before{background-repeat:no-repeat;-webkit-box-sizing:border-box;box-sizing:border-box}.dnb-avatar :after,.dnb-avatar :before{text-decoration:inherit;vertical-align:inherit}:root{--avatar-font-size--small:var(--font-size-x-small);--avatar-font-size--medium:var(--font-size-basis);--avatar-font-size--large:var(--font-size-x-large);--avatar-font-size--x-large:var(--font-size-x-large);--avatar-line-height--small:var(--line-height-x-small);--avatar-line-height--medium:var(--line-height-basis);--avatar-line-height--large:var(--line-height-large);--avatar-line-height--x-large:var(--line-height-large);--avatar-width--small:1.5rem;--avatar-height--small:1.5rem;--avatar-width--medium:2rem;--avatar-height--medium:2rem;--avatar-width--large:4rem;--avatar-height--large:4rem;--avatar-width--x-large:5rem;--avatar-height--x-large:5rem}.dnb-avatar{-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;-ms-flex-negative:0;align-items:center;border-radius:50%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;flex-shrink:0;font-weight:500;font-weight:var(--font-weight-medium);justify-content:center;line-height:1;overflow:hidden;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dnb-avatar,.dnb-core-style .dnb-avatar{line-height:2.5rem;line-height:var(--button-height)}.dnb-avatar--size-small{font-size:.875rem;font-size:var(--avatar-font-size--small);height:1.5rem;height:var(--avatar-height--small);width:1.5rem;width:var(--avatar-width--small)}.dnb-avatar--size-small,.dnb-core-style .dnb-avatar--size-small{line-height:1.125rem;line-height:var(--avatar-line-height--small)}.dnb-avatar--size-medium{font-size:1.125rem;font-size:var(--avatar-font-size--medium);height:2rem;height:var(--avatar-height--medium);width:2rem;width:var(--avatar-width--medium)}.dnb-avatar--size-medium,.dnb-core-style .dnb-avatar--size-medium{line-height:1.5rem;line-height:var(--avatar-line-height--medium)}.dnb-avatar--size-large{font-size:2.125rem;font-size:var(--avatar-font-size--large);height:4rem;height:var(--avatar-height--large);width:4rem;width:var(--avatar-width--large)}.dnb-avatar--size-large,.dnb-core-style .dnb-avatar--size-large{line-height:2.5rem;line-height:var(--avatar-line-height--large)}.dnb-avatar--size-x-large{font-size:2.125rem;font-size:var(--avatar-font-size--x-large);height:5rem;height:var(--avatar-height--x-large);width:5rem;width:var(--avatar-width--x-large)}.dnb-avatar--size-x-large,.dnb-core-style .dnb-avatar--size-x-large{line-height:2.5rem;line-height:var(--avatar-line-height--x-large)}.dnb-avatar__group{-webkit-box-pack:flex;-ms-flex-pack:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:row;flex-direction:row;justify-content:flex}.dnb-avatar__group .dnb-avatar{border:.125rem solid #f8f8f8;border:.125rem solid var(--color-black-3);-webkit-box-sizing:content-box;box-sizing:content-box}.dnb-avatar__group .dnb-avatar--size-small{margin-left:-.5rem}.dnb-avatar__group .dnb-avatar--size-medium{margin-left:-.75rem}.dnb-avatar__group .dnb-avatar--size-large{margin-left:-1rem}.dnb-avatar__group .dnb-avatar--size-x-large{margin-left:-1.5rem}.dnb-avatar__group .dnb-avatar:nth-of-type(2){margin-left:0}.dnb-avatar__group--elements-left{-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;color:#737373;color:var(--color-black-55);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;justify-content:center}.dnb-avatar__group--elements-left--size-small{font-size:.875rem;font-size:var(--font-size-x-small);margin-left:.125rem}.dnb-avatar__group--elements-left--size-medium{font-size:1rem;font-size:var(--font-size-small);margin-left:.125rem}.dnb-avatar__group--elements-left--size-large,.dnb-avatar__group--elements-left--size-x-large{font-size:1.625rem;font-size:var(--font-size-large);margin-left:.25rem;margin-left:var(--spacing-xx-small)}
1
+ .dnb-avatar{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;color:var(--color-black-80,#333);font-family:DNB,sans-serif;font-family:var(--font-family-default);font-size:1rem;font-size:var(--font-size-small);font-style:normal;font-weight:400;font-weight:var(--font-weight-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;padding:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-break:break-word}.dnb-avatar *,.dnb-avatar :after,.dnb-avatar :before{background-repeat:no-repeat;-webkit-box-sizing:border-box;box-sizing:border-box}.dnb-avatar :after,.dnb-avatar :before{text-decoration:inherit;vertical-align:inherit}:root{--avatar-font-size--small:var(--font-size-x-small);--avatar-font-size--medium:var(--font-size-basis);--avatar-font-size--large:var(--font-size-x-large);--avatar-font-size--x-large:var(--font-size-x-large);--avatar-line-height--small:var(--line-height-x-small);--avatar-line-height--medium:var(--line-height-basis);--avatar-line-height--large:var(--line-height-large);--avatar-line-height--x-large:var(--line-height-large);--avatar-width--small:1.5rem;--avatar-height--small:1.5rem;--avatar-width--medium:2rem;--avatar-height--medium:2rem;--avatar-width--large:4rem;--avatar-height--large:4rem;--avatar-width--x-large:5rem;--avatar-height--x-large:5rem}.dnb-avatar{-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;-ms-flex-negative:0;align-items:center;border-radius:50%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;flex-shrink:0;font-weight:500;font-weight:var(--font-weight-medium);justify-content:center;line-height:1;overflow:hidden;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dnb-avatar,.dnb-core-style .dnb-avatar{line-height:2.5rem;line-height:var(--button-height)}.dnb-avatar--size-small{font-size:.875rem;font-size:var(--avatar-font-size--small);height:1.5rem;height:var(--avatar-height--small);width:1.5rem;width:var(--avatar-width--small)}.dnb-avatar--size-small,.dnb-core-style .dnb-avatar--size-small{line-height:1.125rem;line-height:var(--avatar-line-height--small)}.dnb-avatar--size-medium{font-size:1.125rem;font-size:var(--avatar-font-size--medium);height:2rem;height:var(--avatar-height--medium);width:2rem;width:var(--avatar-width--medium)}.dnb-avatar--size-medium,.dnb-core-style .dnb-avatar--size-medium{line-height:1.5rem;line-height:var(--avatar-line-height--medium)}.dnb-avatar--size-large{font-size:2.125rem;font-size:var(--avatar-font-size--large);height:4rem;height:var(--avatar-height--large);width:4rem;width:var(--avatar-width--large)}.dnb-avatar--size-large,.dnb-core-style .dnb-avatar--size-large{line-height:2.5rem;line-height:var(--avatar-line-height--large)}.dnb-avatar--size-x-large{font-size:2.125rem;font-size:var(--avatar-font-size--x-large);height:5rem;height:var(--avatar-height--x-large);width:5rem;width:var(--avatar-width--x-large)}.dnb-avatar--size-x-large,.dnb-core-style .dnb-avatar--size-x-large{line-height:2.5rem;line-height:var(--avatar-line-height--x-large)}.dnb-avatar__group{-webkit-box-pack:flex;-ms-flex-pack:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:row;flex-direction:row;justify-content:flex}.dnb-avatar__group .dnb-avatar{border:.125rem solid #f8f8f8;border:.125rem solid var(--color-black-3);-webkit-box-sizing:content-box;box-sizing:content-box}.dnb-avatar__group .dnb-avatar--size-small{margin-left:-.5rem}.dnb-avatar__group .dnb-avatar--size-medium{margin-left:-.75rem}.dnb-avatar__group .dnb-avatar--size-large{margin-left:-1rem}.dnb-avatar__group .dnb-avatar--size-x-large{margin-left:-1.5rem}.dnb-avatar__group .dnb-avatar:nth-of-type(2){border-left:none;margin-left:0}.dnb-avatar__group--elements-left{-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;-ms-flex-negative:0;align-items:center;color:#737373;color:var(--color-black-55);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;flex-shrink:0;justify-content:center}.dnb-avatar__group--elements-left--size-small{font-size:.875rem;font-size:var(--font-size-x-small);margin-left:.125rem}.dnb-avatar__group--elements-left--size-medium{font-size:1rem;font-size:var(--font-size-small);margin-left:.125rem}.dnb-avatar__group--elements-left--size-large,.dnb-avatar__group--elements-left--size-x-large{font-size:1.625rem;font-size:var(--font-size-large);margin-left:.25rem;margin-left:var(--spacing-xx-small)}
@@ -1,21 +1,8 @@
1
- import "core-js/modules/es.object.keys.js";
2
- import "core-js/modules/es.symbol.js";
3
- import "core-js/modules/es.array.filter.js";
4
- import "core-js/modules/es.object.to-string.js";
5
- import "core-js/modules/es.object.get-own-property-descriptor.js";
6
- import "core-js/modules/web.dom-collections.for-each.js";
7
- import "core-js/modules/es.object.get-own-property-descriptors.js";
8
1
  import _extends from "@babel/runtime/helpers/esm/extends";
9
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
10
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
11
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
12
4
  var _excluded = ["className", "skeleton", "children", "variant", "onClick", "navText", "goBackText", "homeText", "backToText", "styleType", "collapsedStyleType", "isCollapsed", "spacing", "data", "href"];
13
5
  import "core-js/modules/es.array.map.js";
14
-
15
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
16
-
17
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
18
-
19
6
  import React, { useEffect, useState } from 'react';
20
7
  import classnames from 'classnames';
21
8
  import { createSkeletonClass } from '../skeleton/SkeletonHelper';
@@ -24,9 +11,9 @@ import Section from '../section/Section';
24
11
  import Button from '../button/Button';
25
12
  import { useMediaQuery } from '../../shared';
26
13
  import Context from '../../shared/Context';
27
- import { extendPropsWithContext } from '../../shared/component-helper';
14
+ import { usePropsWithContext } from '../../shared/hooks';
28
15
  import BreadcrumbItem from './BreadcrumbItem';
29
- export * from './BreadcrumbItem';
16
+ import { convertJsxToString } from '../../shared/component-helper';
30
17
  export var defaultProps = {
31
18
  className: null,
32
19
  skeleton: false,
@@ -45,28 +32,28 @@ export var defaultProps = {
45
32
  spacing: false
46
33
  };
47
34
 
48
- function Breadcrumb(localProps) {
35
+ var Breadcrumb = function Breadcrumb(localProps) {
49
36
  var _context$translation;
50
37
 
51
38
  var context = React.useContext(Context);
52
39
 
53
- var _extendPropsWithConte = extendPropsWithContext(_objectSpread(_objectSpread({}, defaultProps), localProps), defaultProps, context === null || context === void 0 ? void 0 : (_context$translation = context.translation) === null || _context$translation === void 0 ? void 0 : _context$translation.Breadcrumb, context === null || context === void 0 ? void 0 : context.Breadcrumb),
54
- className = _extendPropsWithConte.className,
55
- skeleton = _extendPropsWithConte.skeleton,
56
- childrenItems = _extendPropsWithConte.children,
57
- variant = _extendPropsWithConte.variant,
58
- onClick = _extendPropsWithConte.onClick,
59
- navText = _extendPropsWithConte.navText,
60
- goBackText = _extendPropsWithConte.goBackText,
61
- homeText = _extendPropsWithConte.homeText,
62
- backToText = _extendPropsWithConte.backToText,
63
- styleType = _extendPropsWithConte.styleType,
64
- collapsedStyleType = _extendPropsWithConte.collapsedStyleType,
65
- overrideIsCollapsed = _extendPropsWithConte.isCollapsed,
66
- spacing = _extendPropsWithConte.spacing,
67
- data = _extendPropsWithConte.data,
68
- href = _extendPropsWithConte.href,
69
- props = _objectWithoutProperties(_extendPropsWithConte, _excluded);
40
+ var _usePropsWithContext = usePropsWithContext(localProps, defaultProps, context === null || context === void 0 ? void 0 : (_context$translation = context.translation) === null || _context$translation === void 0 ? void 0 : _context$translation.Breadcrumb, context === null || context === void 0 ? void 0 : context.Breadcrumb),
41
+ className = _usePropsWithContext.className,
42
+ skeleton = _usePropsWithContext.skeleton,
43
+ childrenItems = _usePropsWithContext.children,
44
+ variant = _usePropsWithContext.variant,
45
+ onClick = _usePropsWithContext.onClick,
46
+ navText = _usePropsWithContext.navText,
47
+ goBackText = _usePropsWithContext.goBackText,
48
+ homeText = _usePropsWithContext.homeText,
49
+ backToText = _usePropsWithContext.backToText,
50
+ styleType = _usePropsWithContext.styleType,
51
+ collapsedStyleType = _usePropsWithContext.collapsedStyleType,
52
+ overrideIsCollapsed = _usePropsWithContext.isCollapsed,
53
+ spacing = _usePropsWithContext.spacing,
54
+ data = _usePropsWithContext.data,
55
+ href = _usePropsWithContext.href,
56
+ props = _objectWithoutProperties(_usePropsWithContext, _excluded);
70
57
 
71
58
  var skeletonClasses = createSkeletonClass('font', skeleton, context);
72
59
  var spacingClasses = createSpacingClasses(props);
@@ -108,7 +95,7 @@ function Breadcrumb(localProps) {
108
95
  };
109
96
 
110
97
  return React.createElement("nav", _extends({
111
- "aria-label": navText,
98
+ "aria-label": convertJsxToString(navText),
112
99
  className: classnames('dnb-breadcrumb', skeletonClasses, spacingClasses, className, spacing && 'dnb-breadcrumb--spacing'),
113
100
  "data-testid": "breadcrumb-nav"
114
101
  }, props), React.createElement(Section, {
@@ -135,7 +122,7 @@ function Breadcrumb(localProps) {
135
122
  className: "dnb-breadcrumb__collapse",
136
123
  "data-testid": "breadcrumb-collapse"
137
124
  }, React.createElement(MultipleCrumbs, null)));
138
- }
125
+ };
139
126
 
140
127
  Breadcrumb.Item = BreadcrumbItem;
141
128
  export { BreadcrumbItem };
@@ -10,13 +10,13 @@ import Button from '../button/Button'
10
10
  // Shared
11
11
  import { useMediaQuery } from '../../shared'
12
12
  import Context from '../../shared/Context'
13
- import { ISpacingProps, SkeletonTypes } from '../../shared/interfaces'
14
- import { extendPropsWithContext } from '../../shared/component-helper'
13
+ import { ISpacingProps } from '../../shared/interfaces'
14
+ import { SkeletonShow } from '../skeleton/Skeleton'
15
+ import { usePropsWithContext } from '../../shared/hooks'
15
16
 
16
17
  // Internal
17
18
  import BreadcrumbItem, { BreadcrumbItemProps } from './BreadcrumbItem'
18
-
19
- export * from './BreadcrumbItem'
19
+ import { convertJsxToString } from '../../shared/component-helper'
20
20
 
21
21
  export interface BreadcrumbProps {
22
22
  /**
@@ -29,7 +29,7 @@ export interface BreadcrumbProps {
29
29
  * Skeleton should be applied when loading content
30
30
  * Default: null
31
31
  */
32
- skeleton?: SkeletonTypes
32
+ skeleton?: SkeletonShow
33
33
 
34
34
  /**
35
35
  * Pass in a list of your pages as objects of breadcrumbitem to render them as breadcrumbitems.
@@ -89,7 +89,7 @@ export interface BreadcrumbProps {
89
89
  * If variant='collapse', you can override isCollapsed for the collapsed content by updating this value.
90
90
  * Default: null
91
91
  */
92
- isCollapsed?: boolean | string
92
+ isCollapsed?: boolean
93
93
 
94
94
  /**
95
95
  * Use one of the Section component style types (style_type)
@@ -128,7 +128,7 @@ export const defaultProps = {
128
128
  spacing: false,
129
129
  }
130
130
 
131
- function Breadcrumb(localProps: BreadcrumbProps & ISpacingProps) {
131
+ const Breadcrumb = (localProps: BreadcrumbProps & ISpacingProps) => {
132
132
  // Every component should have a context
133
133
  const context = React.useContext(Context)
134
134
  // Extract additional props from global context
@@ -149,8 +149,8 @@ function Breadcrumb(localProps: BreadcrumbProps & ISpacingProps) {
149
149
  data,
150
150
  href,
151
151
  ...props
152
- } = extendPropsWithContext(
153
- { ...defaultProps, ...localProps },
152
+ } = usePropsWithContext(
153
+ localProps,
154
154
  defaultProps,
155
155
  context?.translation?.Breadcrumb,
156
156
  context?.Breadcrumb
@@ -197,7 +197,7 @@ function Breadcrumb(localProps: BreadcrumbProps & ISpacingProps) {
197
197
 
198
198
  return (
199
199
  <nav
200
- aria-label={navText}
200
+ aria-label={convertJsxToString(navText)}
201
201
  className={classnames(
202
202
  'dnb-breadcrumb',
203
203
  skeletonClasses,
@@ -1,26 +1,13 @@
1
- import "core-js/modules/es.object.keys.js";
2
- import "core-js/modules/es.symbol.js";
3
- import "core-js/modules/es.array.filter.js";
4
- import "core-js/modules/es.object.to-string.js";
5
- import "core-js/modules/es.object.get-own-property-descriptor.js";
6
- import "core-js/modules/web.dom-collections.for-each.js";
7
- import "core-js/modules/es.object.get-own-property-descriptors.js";
8
1
  import _extends from "@babel/runtime/helpers/esm/extends";
9
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
10
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
11
3
  var _excluded = ["text", "href", "icon", "onClick", "variant", "skeleton"];
12
-
13
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
14
-
15
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
16
-
17
4
  import React from 'react';
18
5
  import Button from '../button/Button';
19
6
  import IconPrimary from '../icon-primary/IconPrimary';
20
7
  import P from '../../elements/P';
21
8
  import homeIcon from '../../icons/home';
22
9
  import Context from '../../shared/Context';
23
- import { extendPropsWithContext } from '../../shared/component-helper';
10
+ import { usePropsWithContext } from '../../shared/hooks';
24
11
  var defaultProps = {
25
12
  text: null,
26
13
  href: null,
@@ -29,18 +16,19 @@ var defaultProps = {
29
16
  variant: null,
30
17
  skeleton: null
31
18
  };
32
- export default function BreadcrumbItem(localProps) {
19
+
20
+ var BreadcrumbItem = function BreadcrumbItem(localProps) {
33
21
  var context = React.useContext(Context);
34
22
  var homeText = context.translation.Breadcrumb.homeText;
35
23
 
36
- var _extendPropsWithConte = extendPropsWithContext(_objectSpread(_objectSpread({}, defaultProps), localProps), defaultProps, context === null || context === void 0 ? void 0 : context.BreadcrumbItem),
37
- text = _extendPropsWithConte.text,
38
- href = _extendPropsWithConte.href,
39
- icon = _extendPropsWithConte.icon,
40
- onClick = _extendPropsWithConte.onClick,
41
- variant = _extendPropsWithConte.variant,
42
- skeleton = _extendPropsWithConte.skeleton,
43
- props = _objectWithoutProperties(_extendPropsWithConte, _excluded);
24
+ var _usePropsWithContext = usePropsWithContext(localProps, defaultProps, context === null || context === void 0 ? void 0 : context.BreadcrumbItem),
25
+ text = _usePropsWithContext.text,
26
+ href = _usePropsWithContext.href,
27
+ icon = _usePropsWithContext.icon,
28
+ onClick = _usePropsWithContext.onClick,
29
+ variant = _usePropsWithContext.variant,
30
+ skeleton = _usePropsWithContext.skeleton,
31
+ props = _objectWithoutProperties(_usePropsWithContext, _excluded);
44
32
 
45
33
  var currentIcon = icon || variant === 'home' && homeIcon || 'chevron_left';
46
34
  var currentText = text || variant === 'home' && homeText || '';
@@ -54,7 +42,6 @@ export default function BreadcrumbItem(localProps) {
54
42
  href: href,
55
43
  icon: currentIcon,
56
44
  icon_position: "left",
57
- icon_: currentIcon,
58
45
  on_click: onClick,
59
46
  text: currentText,
60
47
  skeleton: skeleton
@@ -67,4 +54,6 @@ export default function BreadcrumbItem(localProps) {
67
54
  left: "0",
68
55
  "data-testid": "breadcrumb-item-text"
69
56
  }, currentText)));
70
- }
57
+ };
58
+
59
+ export default BreadcrumbItem;
@@ -12,8 +12,8 @@ import homeIcon from '../../icons/home'
12
12
 
13
13
  // Shared
14
14
  import Context from '../../shared/Context'
15
- import { SkeletonTypes } from '../../shared/interfaces'
16
- import { extendPropsWithContext } from '../../shared/component-helper'
15
+ import { SkeletonShow } from '../skeleton/Skeleton'
16
+ import { usePropsWithContext } from '../../shared/hooks'
17
17
 
18
18
  export interface BreadcrumbItemProps {
19
19
  /**
@@ -50,7 +50,7 @@ export interface BreadcrumbItemProps {
50
50
  * Skeleton should be applied when loading content
51
51
  * Default: null
52
52
  */
53
- skeleton?: SkeletonTypes
53
+ skeleton?: SkeletonShow
54
54
  }
55
55
 
56
56
  const defaultProps = {
@@ -62,7 +62,7 @@ const defaultProps = {
62
62
  skeleton: null,
63
63
  }
64
64
 
65
- export default function BreadcrumbItem(localProps: BreadcrumbItemProps) {
65
+ const BreadcrumbItem = (localProps: BreadcrumbItemProps) => {
66
66
  // Every component should have a context
67
67
  const context = React.useContext(Context)
68
68
  const {
@@ -73,13 +73,9 @@ export default function BreadcrumbItem(localProps: BreadcrumbItemProps) {
73
73
 
74
74
  // Extract additional props from global context
75
75
  const { text, href, icon, onClick, variant, skeleton, ...props } =
76
- extendPropsWithContext(
77
- { ...defaultProps, ...localProps },
78
- defaultProps,
79
- context?.BreadcrumbItem
80
- )
76
+ usePropsWithContext(localProps, defaultProps, context?.BreadcrumbItem)
81
77
 
82
- const currentIcon =
78
+ const currentIcon: IconPrimaryIcon =
83
79
  icon || (variant === 'home' && homeIcon) || 'chevron_left'
84
80
  const currentText = text || (variant === 'home' && homeText) || ''
85
81
  const isInteractive = (href || onClick) && variant !== 'current'
@@ -96,7 +92,6 @@ export default function BreadcrumbItem(localProps: BreadcrumbItemProps) {
96
92
  href={href}
97
93
  icon={currentIcon}
98
94
  icon_position="left"
99
- icon_={currentIcon} // what does this do?
100
95
  on_click={onClick}
101
96
  text={currentText}
102
97
  skeleton={skeleton}
@@ -116,3 +111,5 @@ export default function BreadcrumbItem(localProps: BreadcrumbItemProps) {
116
111
  </li>
117
112
  )
118
113
  }
114
+
115
+ export default BreadcrumbItem
@@ -1,15 +1,15 @@
1
1
  import * as React from 'react';
2
+ import { SkeletonShow } from '../skeleton/Skeleton';
3
+ import { IconPrimaryIcon } from '../icon-primary/IconPrimary';
2
4
  export type ButtonText = string | React.ReactNode;
3
5
  export type ButtonVariant =
4
6
  | 'primary'
5
7
  | 'secondary'
6
8
  | 'tertiary'
7
- | 'signal';
9
+ | 'signal'
10
+ | 'unstyled';
8
11
  export type ButtonSize = 'default' | 'small' | 'medium' | 'large';
9
- export type ButtonIcon =
10
- | string
11
- | React.ReactNode
12
- | ((...args: any[]) => any);
12
+ export type ButtonIcon = IconPrimaryIcon;
13
13
  export type ButtonIconPosition = 'left' | 'right' | 'top';
14
14
  export type ButtonIconSize = string | number;
15
15
  export type ButtonTooltip =
@@ -26,7 +26,7 @@ export type ButtonTo = string | any | ((...args: any[]) => any);
26
26
  export type ButtonWrap = string | boolean;
27
27
  export type ButtonBounding = string | boolean;
28
28
  export type ButtonStretch = string | boolean;
29
- export type ButtonSkeleton = string | boolean;
29
+ export type ButtonSkeleton = SkeletonShow;
30
30
  export type ButtonDisabled = string | boolean;
31
31
  export type ButtonChildren =
32
32
  | string
@@ -70,7 +70,11 @@ export type ButtonOnClick = string | ((...args: any[]) => any);
70
70
  /**
71
71
  * NB: Do not change the docs (comments) in here. The docs are updated during build time by "generateTypes.js" and "fetchPropertiesFromDocs.js".
72
72
  */
73
- export interface ButtonProps extends React.HTMLProps<HTMLElement> {
73
+ export interface ButtonProps
74
+ extends Omit<
75
+ React.HTMLProps<HTMLElement>,
76
+ 'disabled' | 'size' | 'title' | 'wrap'
77
+ > {
74
78
  /**
75
79
  * The content of the button can be a string or a React Element.
76
80
  */
@@ -53,7 +53,8 @@ export type IconPrimaryChildren =
53
53
  /**
54
54
  * NB: Do not change the docs (comments) in here. The docs are updated during build time by "generateTypes.js" and "fetchPropertiesFromDocs.js".
55
55
  */
56
- export interface IconPrimaryProps extends React.HTMLProps<HTMLElement> {
56
+ export interface IconPrimaryProps
57
+ extends Omit<React.HTMLProps<HTMLElement>, 'size'> {
57
58
  /**
58
59
  * A React SVG Component or the icon name (in case we use `IconPrimary` or `dnb-icon-primary`).
59
60
  */
@@ -26,7 +26,7 @@ import { lightbulb_medium as LightbulbIcon } from '../../icons';
26
26
  import { createSpacingClasses } from '../space/SpacingHelper';
27
27
  import { createSkeletonClass } from '../skeleton/SkeletonHelper';
28
28
  import Context from '../../shared/Context';
29
- import { extendPropsWithContext } from '../../shared/component-helper';
29
+ import { usePropsWithContext } from '../../shared/hooks';
30
30
  export var defaultProps = {
31
31
  alt: null,
32
32
  centered: false,
@@ -44,28 +44,28 @@ export var defaultProps = {
44
44
  acceptButtonAttributes: null
45
45
  };
46
46
 
47
- function InfoCard(localProps) {
47
+ var InfoCard = function InfoCard(localProps) {
48
48
  var _IconPrimary;
49
49
 
50
50
  var context = React.useContext(Context);
51
51
 
52
- var _extendPropsWithConte = extendPropsWithContext(_objectSpread(_objectSpread({}, defaultProps), localProps)),
53
- alt = _extendPropsWithConte.alt,
54
- centered = _extendPropsWithConte.centered,
55
- title = _extendPropsWithConte.title,
56
- skeleton = _extendPropsWithConte.skeleton,
57
- className = _extendPropsWithConte.className,
58
- icon = _extendPropsWithConte.icon,
59
- src = _extendPropsWithConte.src,
60
- imgProps = _extendPropsWithConte.imgProps,
61
- text = _extendPropsWithConte.text,
62
- onClose = _extendPropsWithConte.onClose,
63
- onAccept = _extendPropsWithConte.onAccept,
64
- closeButtonText = _extendPropsWithConte.closeButtonText,
65
- acceptButtonText = _extendPropsWithConte.acceptButtonText,
66
- closeButtonAttributes = _extendPropsWithConte.closeButtonAttributes,
67
- acceptButtonAttributes = _extendPropsWithConte.acceptButtonAttributes,
68
- props = _objectWithoutProperties(_extendPropsWithConte, _excluded);
52
+ var _usePropsWithContext = usePropsWithContext(_objectSpread(_objectSpread({}, defaultProps), localProps)),
53
+ alt = _usePropsWithContext.alt,
54
+ centered = _usePropsWithContext.centered,
55
+ title = _usePropsWithContext.title,
56
+ skeleton = _usePropsWithContext.skeleton,
57
+ className = _usePropsWithContext.className,
58
+ icon = _usePropsWithContext.icon,
59
+ src = _usePropsWithContext.src,
60
+ imgProps = _usePropsWithContext.imgProps,
61
+ text = _usePropsWithContext.text,
62
+ onClose = _usePropsWithContext.onClose,
63
+ onAccept = _usePropsWithContext.onAccept,
64
+ closeButtonText = _usePropsWithContext.closeButtonText,
65
+ acceptButtonText = _usePropsWithContext.acceptButtonText,
66
+ closeButtonAttributes = _usePropsWithContext.closeButtonAttributes,
67
+ acceptButtonAttributes = _usePropsWithContext.acceptButtonAttributes,
68
+ props = _objectWithoutProperties(_usePropsWithContext, _excluded);
69
69
 
70
70
  var skeletonClasses = createSkeletonClass('shape', skeleton, context);
71
71
  var spacingClasses = createSpacingClasses(props);
@@ -98,14 +98,14 @@ function InfoCard(localProps) {
98
98
  className: 'dnb-info-card--buttons' + (centered ? " dnb-info-card--buttons-centered" : "")
99
99
  }, !acceptButtonIsHidden && React.createElement(Button, _extends({
100
100
  type: "button",
101
- "data-testid": "into-card-accept-button",
101
+ "data-testid": "info-card-accept-button",
102
102
  variant: "secondary",
103
103
  right: !centered && 'small',
104
104
  on_click: onAccept,
105
105
  text: acceptButtonText
106
106
  }, acceptButtonAttributes)), !closeButtonIsHidden && React.createElement(Button, _extends({
107
107
  type: "button",
108
- "data-testid": "into-card-close-button",
108
+ "data-testid": "info-card-close-button",
109
109
  variant: "tertiary",
110
110
  top: centered && 'small',
111
111
  on_click: onClose,
@@ -135,6 +135,6 @@ function InfoCard(localProps) {
135
135
  "data-testid": "info-card-icon"
136
136
  }));
137
137
  }
138
- }
138
+ };
139
139
 
140
140
  export default InfoCard;
@@ -15,16 +15,17 @@ import { lightbulb_medium as LightbulbIcon } from '../../icons'
15
15
  // Shared
16
16
  import { createSpacingClasses } from '../space/SpacingHelper'
17
17
  import { createSkeletonClass } from '../skeleton/SkeletonHelper'
18
+ import { SkeletonShow } from '../skeleton/Skeleton'
18
19
  import Context from '../../shared/Context'
19
- import { ISpacingProps, SkeletonTypes } from '../../shared/interfaces'
20
- import { extendPropsWithContext } from '../../shared/component-helper'
20
+ import { ISpacingProps } from '../../shared/interfaces'
21
+ import { usePropsWithContext } from '../../shared/hooks'
21
22
 
22
23
  export interface InfoCardProps {
23
24
  /**
24
25
  * Used in combination with `src` to provide an alt attribute for the `img` element.
25
26
  * Default: null
26
27
  */
27
- alt?: string
28
+ alt?: React.ReactNode
28
29
  /**
29
30
  * Aligns the content to center, rather than left
30
31
  * Default: false
@@ -49,7 +50,7 @@ export interface InfoCardProps {
49
50
  * Skeleton should be applied when loading content
50
51
  * Default: null
51
52
  */
52
- skeleton?: SkeletonTypes
53
+ skeleton?: SkeletonShow
53
54
  /**
54
55
  * Specifies the path to the image
55
56
  * Default: null
@@ -59,12 +60,12 @@ export interface InfoCardProps {
59
60
  * Image src, will replace the 'icon' with the image
60
61
  * Default: null
61
62
  */
62
- text: string
63
+ text: React.ReactNode
63
64
  /**
64
65
  * Component title
65
66
  * Default: null
66
67
  */
67
- title?: string
68
+ title?: React.ReactNode
68
69
  /**
69
70
  * Is called when the close button is clicked
70
71
  * Default: null
@@ -74,7 +75,7 @@ export interface InfoCardProps {
74
75
  * The text of the close button.
75
76
  * Default: null
76
77
  */
77
- closeButtonText?: string
78
+ closeButtonText?: React.ReactNode
78
79
  /**
79
80
  * Is called when the accept button is clicked
80
81
  * Default: null
@@ -84,7 +85,7 @@ export interface InfoCardProps {
84
85
  * The text of the accept button.
85
86
  * Default: null
86
87
  */
87
- acceptButtonText?: string
88
+ acceptButtonText?: React.ReactNode
88
89
  /**
89
90
  * Additional attributes for the close button.
90
91
  * Default: null
@@ -114,7 +115,7 @@ export const defaultProps = {
114
115
  acceptButtonAttributes: null,
115
116
  }
116
117
 
117
- function InfoCard(localProps: InfoCardProps & ISpacingProps) {
118
+ const InfoCard = (localProps: InfoCardProps & ISpacingProps) => {
118
119
  // Every component should have a context
119
120
  const context = React.useContext(Context)
120
121
  // Extract additional props from global context
@@ -135,7 +136,7 @@ function InfoCard(localProps: InfoCardProps & ISpacingProps) {
135
136
  closeButtonAttributes,
136
137
  acceptButtonAttributes,
137
138
  ...props
138
- } = extendPropsWithContext({
139
+ } = usePropsWithContext({
139
140
  ...defaultProps,
140
141
  ...localProps,
141
142
  })
@@ -199,7 +200,7 @@ function InfoCard(localProps: InfoCardProps & ISpacingProps) {
199
200
  {!acceptButtonIsHidden && (
200
201
  <Button
201
202
  type="button"
202
- data-testid="into-card-accept-button"
203
+ data-testid="info-card-accept-button"
203
204
  variant="secondary"
204
205
  right={!centered && 'small'}
205
206
  on_click={onAccept}
@@ -210,7 +211,7 @@ function InfoCard(localProps: InfoCardProps & ISpacingProps) {
210
211
  {!closeButtonIsHidden && (
211
212
  <Button
212
213
  type="button"
213
- data-testid="into-card-close-button"
214
+ data-testid="info-card-close-button"
214
215
  variant="tertiary"
215
216
  top={centered && 'small'}
216
217
  on_click={onClose}
@@ -25,7 +25,7 @@ import ModalHeader from './components/ModalHeader'
25
25
  import ModalHeaderBar from './components/ModalHeaderBar'
26
26
  import CloseButton from './components/CloseButton'
27
27
  import ModalRoot from './ModalRoot'
28
- import { ISpacingProps } from 'packages/dnb-eufemia/build/shared/interfaces'
28
+ import { ISpacingProps } from '../../shared/interfaces'
29
29
 
30
30
  export const ANIMATION_DURATION = 300
31
31