@dnb/eufemia 9.18.0 → 9.19.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 (499) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/cjs/components/Avatar.d.ts +14 -0
  3. package/cjs/components/Avatar.js +52 -0
  4. package/cjs/components/InfoCard.d.ts +14 -0
  5. package/cjs/components/InfoCard.js +52 -0
  6. package/cjs/components/Timeline.d.ts +14 -0
  7. package/cjs/components/Timeline.js +52 -0
  8. package/cjs/components/autocomplete/Autocomplete.d.ts +2 -2
  9. package/cjs/components/avatar/Avatar.js +149 -0
  10. package/cjs/components/avatar/AvatarGroup.js +131 -0
  11. package/cjs/components/avatar/index.d.ts +8 -0
  12. package/cjs/components/avatar/index.js +52 -0
  13. package/cjs/components/avatar/style/_avatar.scss +145 -0
  14. package/cjs/components/avatar/style/dnb-avatar.css +218 -0
  15. package/cjs/components/avatar/style/dnb-avatar.min.css +1 -0
  16. package/cjs/components/avatar/style/dnb-avatar.scss +12 -0
  17. package/cjs/components/avatar/style/index.d.ts +6 -0
  18. package/cjs/components/avatar/style/index.js +3 -0
  19. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.css +36 -0
  20. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -0
  21. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.scss +29 -0
  22. package/cjs/components/avatar/style/themes/ui.js +3 -0
  23. package/cjs/components/avatar/style.js +3 -0
  24. package/cjs/components/breadcrumb/BreadcrumbItem.js +3 -3
  25. package/cjs/components/button/Button.d.ts +1 -1
  26. package/cjs/components/button/Button.js +1 -1
  27. package/cjs/components/button/style/themes/dnb-button-theme-ui.scss +3 -0
  28. package/cjs/components/date-picker/DatePicker.js +4 -2
  29. package/cjs/components/date-picker/DatePickerFooter.d.ts +1 -0
  30. package/cjs/components/date-picker/DatePickerFooter.js +10 -6
  31. package/cjs/components/dropdown/Dropdown.d.ts +4 -3
  32. package/cjs/components/form-label/FormLabel.d.ts +1 -1
  33. package/cjs/components/heading/Heading.d.ts +2 -2
  34. package/cjs/components/heading/HeadingProvider.d.ts +2 -2
  35. package/cjs/components/help-button/HelpButton.d.ts +1 -1
  36. package/cjs/components/help-button/HelpButtonInstance.d.ts +3 -2
  37. package/cjs/components/icon/Icon.d.ts +1 -1
  38. package/cjs/components/icon-primary/IconPrimary.d.ts +1 -1
  39. package/cjs/components/index.d.ts +6 -0
  40. package/cjs/components/index.js +24 -0
  41. package/cjs/components/info-card/InfoCard.js +180 -0
  42. package/cjs/components/info-card/index.d.ts +8 -0
  43. package/cjs/components/info-card/index.js +52 -0
  44. package/cjs/components/info-card/style/_info-card.scss +52 -0
  45. package/cjs/components/info-card/style/dnb-info-card.css +135 -0
  46. package/cjs/components/info-card/style/dnb-info-card.min.css +1 -0
  47. package/cjs/components/info-card/style/dnb-info-card.scss +12 -0
  48. package/cjs/components/info-card/style/index.d.ts +6 -0
  49. package/cjs/components/info-card/style/index.js +3 -0
  50. package/cjs/components/info-card/style.js +3 -0
  51. package/cjs/components/input/Input.d.ts +2 -1
  52. package/cjs/components/lib.js +27 -0
  53. package/cjs/components/number-format/NumberFormat.d.ts +2 -2
  54. package/cjs/components/pagination/Pagination.js +11 -1
  55. package/cjs/components/radio/Radio.d.ts +1 -1
  56. package/cjs/components/radio/RadioGroup.d.ts +1 -1
  57. package/cjs/components/slider/Slider.d.ts +1 -1
  58. package/cjs/components/step-indicator/StepIndicator.d.ts +3 -3
  59. package/cjs/components/step-indicator/StepIndicatorContext.d.ts +1 -1
  60. package/cjs/components/step-indicator/StepIndicatorItem.d.ts +1 -1
  61. package/cjs/components/step-indicator/StepIndicatorSidebar.d.ts +3 -3
  62. package/cjs/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
  63. package/cjs/components/switch/Switch.d.ts +1 -1
  64. package/cjs/components/tabs/Tabs.d.ts +4 -4
  65. package/cjs/components/tabs/TabsContentWrapper.d.ts +1 -1
  66. package/cjs/components/tabs/TabsCustomContent.d.ts +1 -1
  67. package/cjs/components/tag/Tag.js +85 -25
  68. package/cjs/components/tag/TagContext.js +14 -0
  69. package/cjs/components/tag/TagGroup.js +123 -0
  70. package/cjs/components/tag/style/_tag.scss +80 -16
  71. package/cjs/components/tag/style/dnb-tag.css +849 -33
  72. package/cjs/components/tag/style/dnb-tag.min.css +1 -1
  73. package/cjs/components/tag/style/dnb-tag.scss +3 -0
  74. package/cjs/components/tag/style/themes/_tag-mixins.scss +18 -0
  75. package/cjs/components/timeline/Timeline.js +129 -0
  76. package/cjs/components/timeline/TimelineItem.js +149 -0
  77. package/cjs/components/timeline/index.d.ts +8 -0
  78. package/cjs/components/timeline/index.js +52 -0
  79. package/cjs/components/timeline/style/_timeline.scss +42 -0
  80. package/cjs/components/timeline/style/dnb-timeline.css +307 -0
  81. package/cjs/components/timeline/style/dnb-timeline.min.css +1 -0
  82. package/cjs/components/timeline/style/dnb-timeline.scss +12 -0
  83. package/cjs/components/timeline/style/index.d.ts +6 -0
  84. package/cjs/components/timeline/style/index.js +3 -0
  85. package/cjs/components/timeline/style/themes/dnb-timeline-theme-ui.css +185 -0
  86. package/cjs/components/timeline/style/themes/dnb-timeline-theme-ui.min.css +1 -0
  87. package/cjs/components/timeline/style/themes/dnb-timeline-theme-ui.scss +105 -0
  88. package/cjs/components/timeline/style/themes/ui.js +3 -0
  89. package/cjs/components/timeline/style.js +3 -0
  90. package/cjs/components/toggle-button/ToggleButton.d.ts +2 -2
  91. package/cjs/components/toggle-button/ToggleButtonGroup.d.ts +1 -1
  92. package/cjs/elements/Img.d.ts +2 -2
  93. package/cjs/extensions/payment-card/PaymentCard.d.ts +1 -1
  94. package/cjs/extensions/payment-card/style/_payment-card.scss +0 -1
  95. package/cjs/extensions/payment-card/style/dnb-payment-card.css +0 -1
  96. package/cjs/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  97. package/cjs/fragments/drawer-list/DrawerListProvider.js +1 -0
  98. package/cjs/index.d.ts +6 -0
  99. package/cjs/index.js +24 -0
  100. package/cjs/shared/Context.js +10 -4
  101. package/cjs/shared/locales/en-GB.js +5 -0
  102. package/cjs/shared/locales/nb-NO.js +5 -0
  103. package/cjs/style/dnb-ui-components.css +710 -34
  104. package/cjs/style/dnb-ui-components.min.css +3 -3
  105. package/cjs/style/dnb-ui-components.scss +3 -0
  106. package/cjs/style/dnb-ui-elements.css +3 -0
  107. package/cjs/style/dnb-ui-elements.min.css +1 -1
  108. package/cjs/style/dnb-ui-extensions.css +0 -1
  109. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  110. package/cjs/style/dnb-ui-tags.css +6 -0
  111. package/cjs/style/dnb-ui-tags.min.css +2 -2
  112. package/cjs/style/elements/code.scss +3 -0
  113. package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.css +226 -0
  114. package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
  115. package/cjs/style/themes/theme-ui/dnb-theme-ui.css +226 -0
  116. package/cjs/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  117. package/cjs/style/themes/theme-ui/dnb-theme-ui.scss +2 -0
  118. package/components/Avatar.d.ts +14 -0
  119. package/components/Avatar.js +3 -0
  120. package/components/InfoCard.d.ts +14 -0
  121. package/components/InfoCard.js +3 -0
  122. package/components/Timeline.d.ts +14 -0
  123. package/components/Timeline.js +3 -0
  124. package/components/autocomplete/Autocomplete.d.ts +2 -2
  125. package/components/avatar/Avatar.js +89 -0
  126. package/components/avatar/Avatar.tsx +163 -0
  127. package/components/avatar/AvatarGroup.js +94 -0
  128. package/components/avatar/AvatarGroup.tsx +167 -0
  129. package/components/avatar/index.d.ts +8 -0
  130. package/components/avatar/index.js +3 -0
  131. package/components/avatar/style/_avatar.scss +145 -0
  132. package/components/avatar/style/dnb-avatar.css +218 -0
  133. package/components/avatar/style/dnb-avatar.min.css +1 -0
  134. package/components/avatar/style/dnb-avatar.scss +12 -0
  135. package/components/avatar/style/index.d.ts +6 -0
  136. package/components/avatar/style/index.js +1 -0
  137. package/components/avatar/style/themes/dnb-avatar-theme-ui.css +36 -0
  138. package/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -0
  139. package/components/avatar/style/themes/dnb-avatar-theme-ui.scss +29 -0
  140. package/components/avatar/style/themes/ui.js +1 -0
  141. package/components/avatar/style.js +1 -0
  142. package/components/breadcrumb/BreadcrumbItem.js +3 -3
  143. package/components/breadcrumb/BreadcrumbItem.tsx +2 -2
  144. package/components/button/Button.js +1 -1
  145. package/components/button/style/themes/dnb-button-theme-ui.scss +3 -0
  146. package/components/date-picker/DatePicker.js +4 -2
  147. package/components/date-picker/DatePickerFooter.d.ts +1 -0
  148. package/components/date-picker/DatePickerFooter.js +10 -6
  149. package/components/dropdown/Dropdown.d.ts +4 -3
  150. package/components/form-label/FormLabel.d.ts +1 -1
  151. package/components/heading/Heading.d.ts +2 -2
  152. package/components/heading/HeadingProvider.d.ts +2 -2
  153. package/components/help-button/HelpButton.d.ts +1 -1
  154. package/components/help-button/HelpButtonInstance.d.ts +3 -2
  155. package/components/icon/Icon.d.ts +1 -1
  156. package/components/index.d.ts +6 -0
  157. package/components/index.js +4 -1
  158. package/components/info-card/InfoCard.js +140 -0
  159. package/components/info-card/InfoCard.tsx +249 -0
  160. package/components/info-card/index.d.ts +8 -0
  161. package/components/info-card/index.js +3 -0
  162. package/components/info-card/style/_info-card.scss +52 -0
  163. package/components/info-card/style/dnb-info-card.css +135 -0
  164. package/components/info-card/style/dnb-info-card.min.css +1 -0
  165. package/components/info-card/style/dnb-info-card.scss +12 -0
  166. package/components/info-card/style/index.d.ts +6 -0
  167. package/components/info-card/style/index.js +1 -0
  168. package/components/info-card/style.js +1 -0
  169. package/components/input/Input.d.ts +2 -1
  170. package/components/lib.js +7 -1
  171. package/components/number-format/NumberFormat.d.ts +2 -2
  172. package/components/pagination/Pagination.js +7 -0
  173. package/components/radio/Radio.d.ts +1 -1
  174. package/components/radio/RadioGroup.d.ts +1 -1
  175. package/components/slider/Slider.d.ts +1 -1
  176. package/components/step-indicator/StepIndicator.d.ts +3 -3
  177. package/components/step-indicator/StepIndicatorContext.d.ts +1 -1
  178. package/components/step-indicator/StepIndicatorItem.d.ts +1 -1
  179. package/components/step-indicator/StepIndicatorSidebar.d.ts +3 -3
  180. package/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
  181. package/components/switch/Switch.d.ts +1 -1
  182. package/components/tabs/Tabs.d.ts +4 -4
  183. package/components/tabs/TabsContentWrapper.d.ts +1 -1
  184. package/components/tabs/TabsCustomContent.d.ts +1 -1
  185. package/components/tag/Tag.js +84 -25
  186. package/components/tag/Tag.tsx +133 -34
  187. package/components/tag/TagContext.js +2 -0
  188. package/components/tag/TagContext.tsx +3 -0
  189. package/components/tag/TagGroup.js +60 -0
  190. package/components/tag/TagGroup.tsx +80 -0
  191. package/components/tag/style/_tag.scss +80 -16
  192. package/components/tag/style/dnb-tag.css +849 -33
  193. package/components/tag/style/dnb-tag.min.css +1 -1
  194. package/components/tag/style/dnb-tag.scss +3 -0
  195. package/components/tag/style/themes/_tag-mixins.scss +18 -0
  196. package/components/timeline/Timeline.js +57 -0
  197. package/components/timeline/Timeline.tsx +91 -0
  198. package/components/timeline/TimelineItem.js +112 -0
  199. package/components/timeline/TimelineItem.tsx +193 -0
  200. package/components/timeline/index.d.ts +8 -0
  201. package/components/timeline/index.js +3 -0
  202. package/components/timeline/style/_timeline.scss +42 -0
  203. package/components/timeline/style/dnb-timeline.css +307 -0
  204. package/components/timeline/style/dnb-timeline.min.css +1 -0
  205. package/components/timeline/style/dnb-timeline.scss +12 -0
  206. package/components/timeline/style/index.d.ts +6 -0
  207. package/components/timeline/style/index.js +1 -0
  208. package/components/timeline/style/themes/dnb-timeline-theme-ui.css +185 -0
  209. package/components/timeline/style/themes/dnb-timeline-theme-ui.min.css +1 -0
  210. package/components/timeline/style/themes/dnb-timeline-theme-ui.scss +105 -0
  211. package/components/timeline/style/themes/ui.js +1 -0
  212. package/components/timeline/style.js +1 -0
  213. package/components/toggle-button/ToggleButton.d.ts +2 -2
  214. package/components/toggle-button/ToggleButtonGroup.d.ts +1 -1
  215. package/elements/Img.d.ts +1 -1
  216. package/es/components/Avatar.d.ts +14 -0
  217. package/es/components/Avatar.js +3 -0
  218. package/es/components/InfoCard.d.ts +14 -0
  219. package/es/components/InfoCard.js +3 -0
  220. package/es/components/Timeline.d.ts +14 -0
  221. package/es/components/Timeline.js +3 -0
  222. package/es/components/autocomplete/Autocomplete.d.ts +2 -2
  223. package/es/components/avatar/Avatar.js +83 -0
  224. package/es/components/avatar/Avatar.tsx +163 -0
  225. package/es/components/avatar/AvatarGroup.js +89 -0
  226. package/es/components/avatar/AvatarGroup.tsx +167 -0
  227. package/es/components/avatar/index.d.ts +8 -0
  228. package/es/components/avatar/index.js +3 -0
  229. package/es/components/avatar/style/_avatar.scss +145 -0
  230. package/es/components/avatar/style/dnb-avatar.css +218 -0
  231. package/es/components/avatar/style/dnb-avatar.min.css +1 -0
  232. package/es/components/avatar/style/dnb-avatar.scss +12 -0
  233. package/es/components/avatar/style/index.d.ts +6 -0
  234. package/es/components/avatar/style/index.js +1 -0
  235. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.css +36 -0
  236. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -0
  237. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.scss +29 -0
  238. package/es/components/avatar/style/themes/ui.js +1 -0
  239. package/es/components/avatar/style.js +1 -0
  240. package/es/components/breadcrumb/BreadcrumbItem.js +3 -3
  241. package/es/components/breadcrumb/BreadcrumbItem.tsx +2 -2
  242. package/es/components/button/Button.d.ts +1 -1
  243. package/es/components/button/Button.js +1 -1
  244. package/es/components/button/style/themes/dnb-button-theme-ui.scss +3 -0
  245. package/es/components/date-picker/DatePicker.js +4 -2
  246. package/es/components/date-picker/DatePickerFooter.d.ts +1 -0
  247. package/es/components/date-picker/DatePickerFooter.js +9 -6
  248. package/es/components/dropdown/Dropdown.d.ts +4 -3
  249. package/es/components/form-label/FormLabel.d.ts +1 -1
  250. package/es/components/heading/Heading.d.ts +2 -2
  251. package/es/components/heading/HeadingProvider.d.ts +2 -2
  252. package/es/components/help-button/HelpButton.d.ts +1 -1
  253. package/es/components/help-button/HelpButtonInstance.d.ts +3 -2
  254. package/es/components/icon/Icon.d.ts +1 -1
  255. package/es/components/icon-primary/IconPrimary.d.ts +1 -1
  256. package/es/components/index.d.ts +6 -0
  257. package/es/components/index.js +4 -1
  258. package/es/components/info-card/InfoCard.js +135 -0
  259. package/es/components/info-card/InfoCard.tsx +249 -0
  260. package/es/components/info-card/index.d.ts +8 -0
  261. package/es/components/info-card/index.js +3 -0
  262. package/es/components/info-card/style/_info-card.scss +52 -0
  263. package/es/components/info-card/style/dnb-info-card.css +135 -0
  264. package/es/components/info-card/style/dnb-info-card.min.css +1 -0
  265. package/es/components/info-card/style/dnb-info-card.scss +12 -0
  266. package/es/components/info-card/style/index.d.ts +6 -0
  267. package/es/components/info-card/style/index.js +1 -0
  268. package/es/components/info-card/style.js +1 -0
  269. package/es/components/input/Input.d.ts +2 -1
  270. package/es/components/lib.js +7 -1
  271. package/es/components/number-format/NumberFormat.d.ts +2 -2
  272. package/es/components/pagination/Pagination.js +3 -0
  273. package/es/components/radio/Radio.d.ts +1 -1
  274. package/es/components/radio/RadioGroup.d.ts +1 -1
  275. package/es/components/slider/Slider.d.ts +1 -1
  276. package/es/components/step-indicator/StepIndicator.d.ts +3 -3
  277. package/es/components/step-indicator/StepIndicatorContext.d.ts +1 -1
  278. package/es/components/step-indicator/StepIndicatorItem.d.ts +1 -1
  279. package/es/components/step-indicator/StepIndicatorSidebar.d.ts +3 -3
  280. package/es/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
  281. package/es/components/switch/Switch.d.ts +1 -1
  282. package/es/components/tabs/Tabs.d.ts +4 -4
  283. package/es/components/tabs/TabsContentWrapper.d.ts +1 -1
  284. package/es/components/tabs/TabsCustomContent.d.ts +1 -1
  285. package/es/components/tag/Tag.js +83 -26
  286. package/es/components/tag/Tag.tsx +133 -34
  287. package/es/components/tag/TagContext.js +2 -0
  288. package/es/components/tag/TagContext.tsx +3 -0
  289. package/es/components/tag/TagGroup.js +53 -0
  290. package/es/components/tag/TagGroup.tsx +80 -0
  291. package/es/components/tag/style/_tag.scss +80 -16
  292. package/es/components/tag/style/dnb-tag.css +849 -33
  293. package/es/components/tag/style/dnb-tag.min.css +1 -1
  294. package/es/components/tag/style/dnb-tag.scss +3 -0
  295. package/es/components/tag/style/themes/_tag-mixins.scss +18 -0
  296. package/es/components/timeline/Timeline.js +48 -0
  297. package/es/components/timeline/Timeline.tsx +91 -0
  298. package/es/components/timeline/TimelineItem.js +111 -0
  299. package/es/components/timeline/TimelineItem.tsx +193 -0
  300. package/es/components/timeline/index.d.ts +8 -0
  301. package/es/components/timeline/index.js +3 -0
  302. package/es/components/timeline/style/_timeline.scss +42 -0
  303. package/es/components/timeline/style/dnb-timeline.css +307 -0
  304. package/es/components/timeline/style/dnb-timeline.min.css +1 -0
  305. package/es/components/timeline/style/dnb-timeline.scss +12 -0
  306. package/es/components/timeline/style/index.d.ts +6 -0
  307. package/es/components/timeline/style/index.js +1 -0
  308. package/es/components/timeline/style/themes/dnb-timeline-theme-ui.css +185 -0
  309. package/es/components/timeline/style/themes/dnb-timeline-theme-ui.min.css +1 -0
  310. package/es/components/timeline/style/themes/dnb-timeline-theme-ui.scss +105 -0
  311. package/es/components/timeline/style/themes/ui.js +1 -0
  312. package/es/components/timeline/style.js +1 -0
  313. package/es/components/toggle-button/ToggleButton.d.ts +2 -2
  314. package/es/components/toggle-button/ToggleButtonGroup.d.ts +1 -1
  315. package/es/elements/Img.d.ts +2 -2
  316. package/es/extensions/payment-card/PaymentCard.d.ts +1 -1
  317. package/es/extensions/payment-card/style/_payment-card.scss +0 -1
  318. package/es/extensions/payment-card/style/dnb-payment-card.css +0 -1
  319. package/es/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  320. package/es/fragments/drawer-list/DrawerListProvider.js +1 -0
  321. package/es/index.d.ts +6 -0
  322. package/es/index.js +4 -1
  323. package/es/shared/Context.js +10 -4
  324. package/es/shared/locales/en-GB.js +5 -0
  325. package/es/shared/locales/nb-NO.js +5 -0
  326. package/es/style/dnb-ui-components.css +710 -34
  327. package/es/style/dnb-ui-components.min.css +3 -3
  328. package/es/style/dnb-ui-components.scss +3 -0
  329. package/es/style/dnb-ui-elements.css +3 -0
  330. package/es/style/dnb-ui-elements.min.css +1 -1
  331. package/es/style/dnb-ui-extensions.css +0 -1
  332. package/es/style/dnb-ui-extensions.min.css +1 -1
  333. package/es/style/dnb-ui-tags.css +6 -0
  334. package/es/style/dnb-ui-tags.min.css +2 -2
  335. package/es/style/elements/code.scss +3 -0
  336. package/es/style/themes/theme-open-banking/dnb-theme-open-banking.css +226 -0
  337. package/es/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
  338. package/es/style/themes/theme-ui/dnb-theme-ui.css +226 -0
  339. package/es/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  340. package/es/style/themes/theme-ui/dnb-theme-ui.scss +2 -0
  341. package/esm/components/Avatar.d.ts +14 -0
  342. package/esm/components/Avatar.js +3 -0
  343. package/esm/components/InfoCard.d.ts +14 -0
  344. package/esm/components/InfoCard.js +3 -0
  345. package/esm/components/Timeline.d.ts +14 -0
  346. package/esm/components/Timeline.js +3 -0
  347. package/esm/components/autocomplete/Autocomplete.d.ts +2 -2
  348. package/esm/components/avatar/Avatar.js +89 -0
  349. package/esm/components/avatar/Avatar.tsx +163 -0
  350. package/esm/components/avatar/AvatarGroup.js +94 -0
  351. package/esm/components/avatar/AvatarGroup.tsx +167 -0
  352. package/esm/components/avatar/index.d.ts +8 -0
  353. package/esm/components/avatar/index.js +3 -0
  354. package/esm/components/avatar/style/_avatar.scss +145 -0
  355. package/esm/components/avatar/style/dnb-avatar.css +218 -0
  356. package/esm/components/avatar/style/dnb-avatar.min.css +1 -0
  357. package/esm/components/avatar/style/dnb-avatar.scss +12 -0
  358. package/esm/components/avatar/style/index.d.ts +6 -0
  359. package/esm/components/avatar/style/index.js +1 -0
  360. package/esm/components/avatar/style/themes/dnb-avatar-theme-ui.css +36 -0
  361. package/esm/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -0
  362. package/esm/components/avatar/style/themes/dnb-avatar-theme-ui.scss +29 -0
  363. package/esm/components/avatar/style/themes/ui.js +1 -0
  364. package/esm/components/avatar/style.js +1 -0
  365. package/esm/components/breadcrumb/BreadcrumbItem.js +3 -3
  366. package/esm/components/breadcrumb/BreadcrumbItem.tsx +2 -2
  367. package/esm/components/button/Button.js +1 -1
  368. package/esm/components/button/style/themes/dnb-button-theme-ui.scss +3 -0
  369. package/esm/components/date-picker/DatePicker.js +4 -2
  370. package/esm/components/date-picker/DatePickerFooter.d.ts +1 -0
  371. package/esm/components/date-picker/DatePickerFooter.js +10 -6
  372. package/esm/components/dropdown/Dropdown.d.ts +4 -3
  373. package/esm/components/form-label/FormLabel.d.ts +1 -1
  374. package/esm/components/heading/Heading.d.ts +2 -2
  375. package/esm/components/heading/HeadingProvider.d.ts +2 -2
  376. package/esm/components/help-button/HelpButton.d.ts +1 -1
  377. package/esm/components/help-button/HelpButtonInstance.d.ts +3 -2
  378. package/esm/components/icon/Icon.d.ts +1 -1
  379. package/esm/components/index.d.ts +6 -0
  380. package/esm/components/index.js +4 -1
  381. package/esm/components/info-card/InfoCard.js +140 -0
  382. package/esm/components/info-card/InfoCard.tsx +249 -0
  383. package/esm/components/info-card/index.d.ts +8 -0
  384. package/esm/components/info-card/index.js +3 -0
  385. package/esm/components/info-card/style/_info-card.scss +52 -0
  386. package/esm/components/info-card/style/dnb-info-card.css +135 -0
  387. package/esm/components/info-card/style/dnb-info-card.min.css +1 -0
  388. package/esm/components/info-card/style/dnb-info-card.scss +12 -0
  389. package/esm/components/info-card/style/index.d.ts +6 -0
  390. package/esm/components/info-card/style/index.js +1 -0
  391. package/esm/components/info-card/style.js +1 -0
  392. package/esm/components/input/Input.d.ts +2 -1
  393. package/esm/components/lib.js +7 -1
  394. package/esm/components/number-format/NumberFormat.d.ts +2 -2
  395. package/esm/components/pagination/Pagination.js +7 -0
  396. package/esm/components/radio/Radio.d.ts +1 -1
  397. package/esm/components/radio/RadioGroup.d.ts +1 -1
  398. package/esm/components/slider/Slider.d.ts +1 -1
  399. package/esm/components/step-indicator/StepIndicator.d.ts +3 -3
  400. package/esm/components/step-indicator/StepIndicatorContext.d.ts +1 -1
  401. package/esm/components/step-indicator/StepIndicatorItem.d.ts +1 -1
  402. package/esm/components/step-indicator/StepIndicatorSidebar.d.ts +3 -3
  403. package/esm/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
  404. package/esm/components/switch/Switch.d.ts +1 -1
  405. package/esm/components/tabs/Tabs.d.ts +4 -4
  406. package/esm/components/tabs/TabsContentWrapper.d.ts +1 -1
  407. package/esm/components/tabs/TabsCustomContent.d.ts +1 -1
  408. package/esm/components/tag/Tag.js +84 -25
  409. package/esm/components/tag/Tag.tsx +133 -34
  410. package/esm/components/tag/TagContext.js +2 -0
  411. package/esm/components/tag/TagContext.tsx +3 -0
  412. package/esm/components/tag/TagGroup.js +60 -0
  413. package/esm/components/tag/TagGroup.tsx +80 -0
  414. package/esm/components/tag/style/_tag.scss +80 -16
  415. package/esm/components/tag/style/dnb-tag.css +849 -33
  416. package/esm/components/tag/style/dnb-tag.min.css +1 -1
  417. package/esm/components/tag/style/dnb-tag.scss +3 -0
  418. package/esm/components/tag/style/themes/_tag-mixins.scss +18 -0
  419. package/esm/components/timeline/Timeline.js +57 -0
  420. package/esm/components/timeline/Timeline.tsx +91 -0
  421. package/esm/components/timeline/TimelineItem.js +112 -0
  422. package/esm/components/timeline/TimelineItem.tsx +193 -0
  423. package/esm/components/timeline/index.d.ts +8 -0
  424. package/esm/components/timeline/index.js +3 -0
  425. package/esm/components/timeline/style/_timeline.scss +42 -0
  426. package/esm/components/timeline/style/dnb-timeline.css +307 -0
  427. package/esm/components/timeline/style/dnb-timeline.min.css +1 -0
  428. package/esm/components/timeline/style/dnb-timeline.scss +12 -0
  429. package/esm/components/timeline/style/index.d.ts +6 -0
  430. package/esm/components/timeline/style/index.js +1 -0
  431. package/esm/components/timeline/style/themes/dnb-timeline-theme-ui.css +185 -0
  432. package/esm/components/timeline/style/themes/dnb-timeline-theme-ui.min.css +1 -0
  433. package/esm/components/timeline/style/themes/dnb-timeline-theme-ui.scss +105 -0
  434. package/esm/components/timeline/style/themes/ui.js +1 -0
  435. package/esm/components/timeline/style.js +1 -0
  436. package/esm/components/toggle-button/ToggleButton.d.ts +2 -2
  437. package/esm/components/toggle-button/ToggleButtonGroup.d.ts +1 -1
  438. package/esm/dnb-ui-components.min.mjs +4 -4
  439. package/esm/dnb-ui-elements.min.mjs +1 -1
  440. package/esm/dnb-ui-extensions.min.mjs +3 -3
  441. package/esm/dnb-ui-lib.min.mjs +4 -4
  442. package/esm/dnb-ui-web-components.min.mjs +4 -4
  443. package/esm/elements/Img.d.ts +1 -1
  444. package/esm/extensions/payment-card/PaymentCard.d.ts +1 -1
  445. package/esm/extensions/payment-card/style/_payment-card.scss +0 -1
  446. package/esm/extensions/payment-card/style/dnb-payment-card.css +0 -1
  447. package/esm/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  448. package/esm/fragments/drawer-list/DrawerListProvider.js +1 -0
  449. package/esm/index.d.ts +6 -0
  450. package/esm/index.js +4 -1
  451. package/esm/shared/Context.js +10 -4
  452. package/esm/shared/locales/en-GB.js +5 -0
  453. package/esm/shared/locales/nb-NO.js +5 -0
  454. package/esm/style/dnb-ui-components.css +710 -34
  455. package/esm/style/dnb-ui-components.min.css +3 -3
  456. package/esm/style/dnb-ui-components.scss +3 -0
  457. package/esm/style/dnb-ui-elements.css +3 -0
  458. package/esm/style/dnb-ui-elements.min.css +1 -1
  459. package/esm/style/dnb-ui-extensions.css +0 -1
  460. package/esm/style/dnb-ui-extensions.min.css +1 -1
  461. package/esm/style/dnb-ui-tags.css +6 -0
  462. package/esm/style/dnb-ui-tags.min.css +2 -2
  463. package/esm/style/elements/code.scss +3 -0
  464. package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.css +226 -0
  465. package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
  466. package/esm/style/themes/theme-ui/dnb-theme-ui.css +226 -0
  467. package/esm/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  468. package/esm/style/themes/theme-ui/dnb-theme-ui.scss +2 -0
  469. package/extensions/payment-card/PaymentCard.d.ts +1 -1
  470. package/extensions/payment-card/style/_payment-card.scss +0 -1
  471. package/extensions/payment-card/style/dnb-payment-card.css +0 -1
  472. package/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  473. package/fragments/drawer-list/DrawerListProvider.js +1 -0
  474. package/index.d.ts +6 -0
  475. package/index.js +4 -1
  476. package/package.json +2 -3
  477. package/shared/Context.js +10 -4
  478. package/shared/locales/en-GB.js +5 -0
  479. package/shared/locales/nb-NO.js +5 -0
  480. package/style/dnb-ui-components.css +710 -34
  481. package/style/dnb-ui-components.min.css +3 -3
  482. package/style/dnb-ui-components.scss +3 -0
  483. package/style/dnb-ui-elements.css +3 -0
  484. package/style/dnb-ui-elements.min.css +1 -1
  485. package/style/dnb-ui-extensions.css +0 -1
  486. package/style/dnb-ui-extensions.min.css +1 -1
  487. package/style/dnb-ui-tags.css +6 -0
  488. package/style/dnb-ui-tags.min.css +2 -2
  489. package/style/elements/code.scss +3 -0
  490. package/style/themes/theme-open-banking/dnb-theme-open-banking.css +226 -0
  491. package/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
  492. package/style/themes/theme-ui/dnb-theme-ui.css +226 -0
  493. package/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  494. package/style/themes/theme-ui/dnb-theme-ui.scss +2 -0
  495. package/umd/dnb-ui-components.min.js +5 -5
  496. package/umd/dnb-ui-elements.min.js +3 -3
  497. package/umd/dnb-ui-extensions.min.js +3 -3
  498. package/umd/dnb-ui-lib.min.js +5 -5
  499. package/umd/dnb-ui-web-components.min.js +5 -5
@@ -58,7 +58,7 @@ export interface HeadingProps extends React.HTMLProps<HTMLElement> {
58
58
  group?: string;
59
59
 
60
60
  /**
61
- * A heading, can be text or React.Node.
61
+ * <em>(required)</em> a heading, can be text or React.Node.
62
62
  */
63
63
  text?: HeadingText;
64
64
 
@@ -144,7 +144,7 @@ export interface HeadingProps extends React.HTMLProps<HTMLElement> {
144
144
  className?: string;
145
145
 
146
146
  /**
147
- * A heading, can be text or React.Node.
147
+ * <em>(required)</em> a heading, can be text or React.Node.
148
148
  */
149
149
  children?: HeadingChildren;
150
150
  }
@@ -40,12 +40,12 @@ export interface HeadingProviderProps
40
40
  reset?: HeadingProviderReset;
41
41
 
42
42
  /**
43
- * A heading, can be text or React.Node.
43
+ * <em>(required)</em> a heading, can be text or React.Node.
44
44
  */
45
45
  text?: any;
46
46
 
47
47
  /**
48
- * A heading, can be text or React.Node.
48
+ * <em>(required)</em> a heading, can be text or React.Node.
49
49
  */
50
50
  children?: any;
51
51
  }
@@ -82,7 +82,7 @@ export interface HelpButtonProps extends React.HTMLProps<HTMLElement> {
82
82
  title?: React.ReactNode;
83
83
 
84
84
  /**
85
- * Defines the kind of button. Possible values are `primary`, `secondary`, `tertiary` and `signal`.
85
+ * Defines the kind of button. Possible values are `primary`, `secondary`, `tertiary` and `signal`. Defaults to `primary`.
86
86
  */
87
87
  variant?: any;
88
88
 
@@ -3,7 +3,8 @@ export type HelpButtonInstanceVariant =
3
3
  | 'primary'
4
4
  | 'secondary'
5
5
  | 'tertiary'
6
- | 'signal';
6
+ | 'signal'
7
+ | 'unstyled';
7
8
  export type HelpButtonInstanceIcon =
8
9
  | string
9
10
  | React.ReactNode
@@ -47,7 +48,7 @@ export interface HelpButtonInstanceProps
47
48
  id?: string;
48
49
 
49
50
  /**
50
- * Defines the kind of button. Possible values are `primary`, `secondary`, `tertiary` and `signal`.
51
+ * Defines the kind of button. Possible values are `primary`, `secondary`, `tertiary` and `signal`. Defaults to `primary`.
51
52
  */
52
53
  variant?: HelpButtonInstanceVariant;
53
54
 
@@ -46,7 +46,7 @@ export type IconChildren = React.ReactNode | ((...args: any[]) => any);
46
46
  */
47
47
  export interface IconProps extends React.HTMLProps<HTMLElement> {
48
48
  /**
49
- * A React SVG Component or the icon name (in case we use `IconPrimary` or `dnb-icon-primary`).
49
+ * <em>(required)</em> a React SVG Component or the icon name (in case we use `IconPrimary` or `dnb-icon-primary`).
50
50
  */
51
51
  icon?: IconIcon;
52
52
 
@@ -55,7 +55,7 @@ export type IconPrimaryChildren =
55
55
 
56
56
  export interface IconPrimaryProps extends React.HTMLProps<HTMLElement> {
57
57
  /**
58
- * A React SVG Component or the icon name (in case we use `IconPrimary` or `dnb-icon-primary`).
58
+ * <em>(required)</em> a React SVG Component or the icon name (in case we use `IconPrimary` or `dnb-icon-primary`).
59
59
  */
60
60
  icon?: IconPrimaryIcon;
61
61
 
@@ -12,6 +12,7 @@
12
12
  // import all the available components
13
13
  import Accordion from './accordion/Accordion'
14
14
  import Autocomplete from './autocomplete/Autocomplete'
15
+ import Avatar from './avatar/Avatar'
15
16
  import Breadcrumb from './breadcrumb/Breadcrumb'
16
17
  import Button from './button/Button'
17
18
  import Checkbox from './checkbox/Checkbox'
@@ -27,6 +28,7 @@ import Heading from './heading/Heading'
27
28
  import HelpButton from './help-button/HelpButton'
28
29
  import Icon from './icon/Icon'
29
30
  import IconPrimary from './icon-primary/IconPrimary'
31
+ import InfoCard from './info-card/InfoCard'
30
32
  import Input from './input/Input'
31
33
  import InputMasked from './input-masked/InputMasked'
32
34
  import Logo from './logo/Logo'
@@ -44,6 +46,7 @@ import Switch from './switch/Switch'
44
46
  import Tabs from './tabs/Tabs'
45
47
  import Tag from './tag/Tag'
46
48
  import Textarea from './textarea/Textarea'
49
+ import Timeline from './timeline/Timeline'
47
50
  import ToggleButton from './toggle-button/ToggleButton'
48
51
  import Tooltip from './tooltip/Tooltip'
49
52
 
@@ -51,6 +54,7 @@ import Tooltip from './tooltip/Tooltip'
51
54
  export {
52
55
  Accordion,
53
56
  Autocomplete,
57
+ Avatar,
54
58
  Breadcrumb,
55
59
  Button,
56
60
  Checkbox,
@@ -66,6 +70,7 @@ export {
66
70
  HelpButton,
67
71
  Icon,
68
72
  IconPrimary,
73
+ InfoCard,
69
74
  Input,
70
75
  InputMasked,
71
76
  Logo,
@@ -83,6 +88,7 @@ export {
83
88
  Tabs,
84
89
  Tag,
85
90
  Textarea,
91
+ Timeline,
86
92
  ToggleButton,
87
93
  Tooltip,
88
94
  }
@@ -1,5 +1,6 @@
1
1
  import Accordion from './accordion/Accordion';
2
2
  import Autocomplete from './autocomplete/Autocomplete';
3
+ import Avatar from './avatar/Avatar';
3
4
  import Breadcrumb from './breadcrumb/Breadcrumb';
4
5
  import Button from './button/Button';
5
6
  import Checkbox from './checkbox/Checkbox';
@@ -15,6 +16,7 @@ import Heading from './heading/Heading';
15
16
  import HelpButton from './help-button/HelpButton';
16
17
  import Icon from './icon/Icon';
17
18
  import IconPrimary from './icon-primary/IconPrimary';
19
+ import InfoCard from './info-card/InfoCard';
18
20
  import Input from './input/Input';
19
21
  import InputMasked from './input-masked/InputMasked';
20
22
  import Logo from './logo/Logo';
@@ -32,6 +34,7 @@ import Switch from './switch/Switch';
32
34
  import Tabs from './tabs/Tabs';
33
35
  import Tag from './tag/Tag';
34
36
  import Textarea from './textarea/Textarea';
37
+ import Timeline from './timeline/Timeline';
35
38
  import ToggleButton from './toggle-button/ToggleButton';
36
39
  import Tooltip from './tooltip/Tooltip';
37
- export { Accordion, Autocomplete, Breadcrumb, Button, Checkbox, DatePicker, Dropdown, FormLabel, FormRow, FormSet, FormStatus, GlobalError, GlobalStatus, Heading, HelpButton, Icon, IconPrimary, Input, InputMasked, Logo, Modal, NumberFormat, Pagination, ProgressIndicator, Radio, Section, Skeleton, Slider, Space, StepIndicator, Switch, Tabs, Tag, Textarea, ToggleButton, Tooltip };
40
+ export { Accordion, Autocomplete, Avatar, Breadcrumb, Button, Checkbox, DatePicker, Dropdown, FormLabel, FormRow, FormSet, FormStatus, GlobalError, GlobalStatus, Heading, HelpButton, Icon, IconPrimary, InfoCard, Input, InputMasked, Logo, Modal, NumberFormat, Pagination, ProgressIndicator, Radio, Section, Skeleton, Slider, Space, StepIndicator, Switch, Tabs, Tag, Textarea, Timeline, ToggleButton, Tooltip };
@@ -0,0 +1,135 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
+ const _excluded = ["alt", "centered", "title", "skeleton", "className", "icon", "src", "imgProps", "text", "onClose", "onAccept", "closeButtonText", "acceptButtonText", "closeButtonAttributes", "acceptButtonAttributes"];
5
+
6
+ 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; }
7
+
8
+ 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; }
9
+
10
+ import React from 'react';
11
+ import classnames from 'classnames';
12
+ import Button from '../button/Button';
13
+ import IconPrimary from '../icon-primary/IconPrimary';
14
+ import Img from '../../elements/Img';
15
+ import Div from '../../elements/Div';
16
+ import H3 from '../../elements/H3';
17
+ import P from '../../elements/P';
18
+ import { lightbulb_medium as LightbulbIcon } from '../../icons';
19
+ import { createSpacingClasses } from '../space/SpacingHelper';
20
+ import { createSkeletonClass } from '../skeleton/SkeletonHelper';
21
+ import Context from '../../shared/Context';
22
+ import { extendPropsWithContext } from '../../shared/component-helper';
23
+ export const defaultProps = {
24
+ alt: null,
25
+ centered: false,
26
+ className: null,
27
+ skeleton: false,
28
+ icon: LightbulbIcon,
29
+ imgProps: null,
30
+ src: null,
31
+ title: null,
32
+ onAccept: null,
33
+ onClose: null,
34
+ closeButtonText: null,
35
+ acceptButtonText: null,
36
+ closeButtonAttributes: null,
37
+ acceptButtonAttributes: null
38
+ };
39
+
40
+ function InfoCard(localProps) {
41
+ var _IconPrimary;
42
+
43
+ const context = React.useContext(Context);
44
+
45
+ const _extendPropsWithConte = extendPropsWithContext(_objectSpread(_objectSpread({}, defaultProps), localProps)),
46
+ {
47
+ alt,
48
+ centered,
49
+ title,
50
+ skeleton,
51
+ className,
52
+ icon,
53
+ src,
54
+ imgProps,
55
+ text,
56
+ onClose,
57
+ onAccept,
58
+ closeButtonText,
59
+ acceptButtonText,
60
+ closeButtonAttributes,
61
+ acceptButtonAttributes
62
+ } = _extendPropsWithConte,
63
+ props = _objectWithoutProperties(_extendPropsWithConte, _excluded);
64
+
65
+ const skeletonClasses = createSkeletonClass('shape', skeleton, context);
66
+ const spacingClasses = createSpacingClasses(props);
67
+ const closeButtonIsHidden = !onClose && !closeButtonText;
68
+ const acceptButtonIsHidden = !onAccept && !acceptButtonText;
69
+ return React.createElement(Div, _extends({
70
+ className: classnames('dnb-info-card', skeletonClasses, spacingClasses, className, centered && 'dnb-info-card--centered'),
71
+ "data-testid": "info-card"
72
+ }, props), React.createElement(Div, {
73
+ right: !centered && 'small',
74
+ bottom: centered && 'small'
75
+ }, getIllustration()), React.createElement("div", {
76
+ className: "dnb-info-card--content",
77
+ "data-testid": "info-card-content"
78
+ }, title && React.createElement(H3, {
79
+ size: "small",
80
+ "data-testid": "info-card-title",
81
+ bottom: "x-small",
82
+ top: "0"
83
+ }, title), React.createElement(P, {
84
+ size: "small",
85
+ "data-testid": "info-card-text",
86
+ bottom: "0"
87
+ }, text), getButtons()));
88
+
89
+ function getButtons() {
90
+ if (closeButtonIsHidden && acceptButtonIsHidden) return null;
91
+ return React.createElement(Div, {
92
+ top: centered ? 'medium' : 'small',
93
+ className: 'dnb-info-card--buttons' + (centered ? " dnb-info-card--buttons-centered" : "")
94
+ }, !acceptButtonIsHidden && React.createElement(Button, _extends({
95
+ type: "button",
96
+ "data-testid": "into-card-accept-button",
97
+ variant: "secondary",
98
+ right: !centered && 'small',
99
+ on_click: onAccept,
100
+ text: acceptButtonText
101
+ }, acceptButtonAttributes)), !closeButtonIsHidden && React.createElement(Button, _extends({
102
+ type: "button",
103
+ "data-testid": "into-card-close-button",
104
+ variant: "tertiary",
105
+ top: centered && 'small',
106
+ on_click: onClose,
107
+ icon: "close",
108
+ icon_position: "left",
109
+ text: closeButtonText
110
+ }, closeButtonAttributes)));
111
+ }
112
+
113
+ function getIllustration() {
114
+ if (src || imgProps) {
115
+ const imageProps = _objectSpread({
116
+ src,
117
+ alt
118
+ }, imgProps);
119
+
120
+ return React.createElement(Img, _extends({
121
+ "data-testid": "info-card-image",
122
+ className: "dnb-info-card--image"
123
+ }, imageProps));
124
+ }
125
+
126
+ return _IconPrimary || (_IconPrimary = React.createElement(IconPrimary, {
127
+ size: "medium",
128
+ className: "dnb-info-card--icon",
129
+ icon: icon,
130
+ "data-testid": "info-card-icon"
131
+ }));
132
+ }
133
+ }
134
+
135
+ export default InfoCard;
@@ -0,0 +1,249 @@
1
+ import React from 'react'
2
+ import classnames from 'classnames'
3
+
4
+ // Components
5
+ import Button, { ButtonProps } from '../button/Button'
6
+ import IconPrimary, { IconPrimaryIcon } from '../icon-primary/IconPrimary'
7
+ import Img, { ImgProps } from '../../elements/Img'
8
+ import Div from '../../elements/Div'
9
+ import H3 from '../../elements/H3'
10
+ import P from '../../elements/P'
11
+
12
+ // Icons
13
+ import { lightbulb_medium as LightbulbIcon } from '../../icons'
14
+
15
+ // Shared
16
+ import { createSpacingClasses } from '../space/SpacingHelper'
17
+ import { createSkeletonClass } from '../skeleton/SkeletonHelper'
18
+ import Context from '../../shared/Context'
19
+ import { ISpacingProps, SkeletonTypes } from '../../shared/interfaces'
20
+ import { extendPropsWithContext } from '../../shared/component-helper'
21
+
22
+ export interface InfoCardProps {
23
+ /**
24
+ * Used in combination with `src` to provide an alt attribute for the `img` element.
25
+ * Default: null
26
+ */
27
+ alt?: string
28
+ /**
29
+ * Aligns the content to center, rather than left
30
+ * Default: false
31
+ */
32
+ centered?: boolean
33
+ /**
34
+ * Custom className on the component root
35
+ * Default: null
36
+ */
37
+ className?: string
38
+ /**
39
+ * Replace the default icon with custom icon.
40
+ * Default: Lightbulb (icon)
41
+ */
42
+ icon?: IconPrimaryIcon
43
+ /**
44
+ * Props applied to the `img` element if the component is used to display an image. Replace the 'icon'
45
+ * Default: null
46
+ */
47
+ imgProps?: ImgProps
48
+ /**
49
+ * Skeleton should be applied when loading content
50
+ * Default: null
51
+ */
52
+ skeleton?: SkeletonTypes
53
+ /**
54
+ * Specifies the path to the image
55
+ * Default: null
56
+ */
57
+ src?: string
58
+ /**
59
+ * Image src, will replace the 'icon' with the image
60
+ * Default: null
61
+ */
62
+ text: string
63
+ /**
64
+ * Component title
65
+ * Default: null
66
+ */
67
+ title?: string
68
+ /**
69
+ * Is called when the close button is clicked
70
+ * Default: null
71
+ */
72
+ onClose?: React.MouseEventHandler<HTMLButtonElement>
73
+ /**
74
+ * The text of the close button.
75
+ * Default: null
76
+ */
77
+ closeButtonText?: string
78
+ /**
79
+ * Is called when the accept button is clicked
80
+ * Default: null
81
+ */
82
+ onAccept?: React.MouseEventHandler<HTMLButtonElement>
83
+ /**
84
+ * The text of the accept button.
85
+ * Default: null
86
+ */
87
+ acceptButtonText?: string
88
+ /**
89
+ * Additional attributes for the close button.
90
+ * Default: null
91
+ */
92
+ closeButtonAttributes?: ButtonProps
93
+ /**
94
+ * Additional attributes for the accept button
95
+ * Default: null
96
+ */
97
+ acceptButtonAttributes?: ButtonProps
98
+ }
99
+
100
+ export const defaultProps = {
101
+ alt: null,
102
+ centered: false,
103
+ className: null,
104
+ skeleton: false,
105
+ icon: LightbulbIcon,
106
+ imgProps: null,
107
+ src: null,
108
+ title: null,
109
+ onAccept: null,
110
+ onClose: null,
111
+ closeButtonText: null,
112
+ acceptButtonText: null,
113
+ closeButtonAttributes: null,
114
+ acceptButtonAttributes: null,
115
+ }
116
+
117
+ function InfoCard(localProps: InfoCardProps & ISpacingProps) {
118
+ // Every component should have a context
119
+ const context = React.useContext(Context)
120
+ // Extract additional props from global context
121
+ const {
122
+ alt,
123
+ centered,
124
+ title,
125
+ skeleton,
126
+ className,
127
+ icon,
128
+ src,
129
+ imgProps,
130
+ text,
131
+ onClose,
132
+ onAccept,
133
+ closeButtonText,
134
+ acceptButtonText,
135
+ closeButtonAttributes,
136
+ acceptButtonAttributes,
137
+ ...props
138
+ } = extendPropsWithContext({
139
+ ...defaultProps,
140
+ ...localProps,
141
+ })
142
+
143
+ const skeletonClasses = createSkeletonClass('shape', skeleton, context)
144
+ const spacingClasses = createSpacingClasses(props)
145
+
146
+ const closeButtonIsHidden = !onClose && !closeButtonText
147
+ const acceptButtonIsHidden = !onAccept && !acceptButtonText
148
+
149
+ return (
150
+ <Div
151
+ className={classnames(
152
+ 'dnb-info-card',
153
+ skeletonClasses,
154
+ spacingClasses,
155
+ centered && 'dnb-info-card--centered',
156
+ className
157
+ )}
158
+ data-testid="info-card"
159
+ {...props}
160
+ >
161
+ <Div right={!centered && 'small'} bottom={centered && 'small'}>
162
+ {getIllustration()}
163
+ </Div>
164
+
165
+ <div
166
+ className="dnb-info-card--content"
167
+ data-testid="info-card-content"
168
+ >
169
+ {title && (
170
+ <H3
171
+ size="small"
172
+ data-testid="info-card-title"
173
+ bottom="x-small"
174
+ top="0"
175
+ >
176
+ {title}
177
+ </H3>
178
+ )}
179
+ <P size="small" data-testid="info-card-text" bottom="0">
180
+ {text}
181
+ </P>
182
+
183
+ {getButtons()}
184
+ </div>
185
+ </Div>
186
+ )
187
+
188
+ function getButtons() {
189
+ if (closeButtonIsHidden && acceptButtonIsHidden) return null
190
+
191
+ return (
192
+ <Div
193
+ top={centered ? 'medium' : 'small'}
194
+ className={classnames(
195
+ 'dnb-info-card--buttons',
196
+ centered && 'dnb-info-card--buttons-centered'
197
+ )}
198
+ >
199
+ {!acceptButtonIsHidden && (
200
+ <Button
201
+ type="button"
202
+ data-testid="into-card-accept-button"
203
+ variant="secondary"
204
+ right={!centered && 'small'}
205
+ on_click={onAccept}
206
+ text={acceptButtonText}
207
+ {...acceptButtonAttributes}
208
+ />
209
+ )}
210
+ {!closeButtonIsHidden && (
211
+ <Button
212
+ type="button"
213
+ data-testid="into-card-close-button"
214
+ variant="tertiary"
215
+ top={centered && 'small'}
216
+ on_click={onClose}
217
+ icon="close"
218
+ icon_position="left"
219
+ text={closeButtonText}
220
+ {...closeButtonAttributes}
221
+ />
222
+ )}
223
+ </Div>
224
+ )
225
+ }
226
+
227
+ function getIllustration() {
228
+ if (src || imgProps) {
229
+ const imageProps = { src, alt, ...imgProps }
230
+ return (
231
+ <Img
232
+ data-testid="info-card-image"
233
+ className="dnb-info-card--image"
234
+ {...imageProps}
235
+ />
236
+ )
237
+ }
238
+ return (
239
+ <IconPrimary
240
+ size="medium"
241
+ className="dnb-info-card--icon"
242
+ icon={icon}
243
+ data-testid="info-card-icon"
244
+ />
245
+ )
246
+ }
247
+ }
248
+
249
+ export default InfoCard
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Component Entry
3
+ *
4
+ */
5
+
6
+ import InfoCard from './InfoCard';
7
+ export default InfoCard;
8
+ export * from './InfoCard';
@@ -0,0 +1,3 @@
1
+ import InfoCard from './InfoCard';
2
+ export default InfoCard;
3
+ export * from './InfoCard';
@@ -0,0 +1,52 @@
1
+ /*
2
+ * InfoCard component
3
+ *
4
+ */
5
+
6
+ .dnb-info-card {
7
+ display: flex;
8
+ flex-direction: row;
9
+
10
+ background: white;
11
+
12
+ border: 1px solid var(--color-black-8);
13
+ border-radius: 0.25rem;
14
+ padding: 1rem;
15
+
16
+ @include defaultDropShadow();
17
+
18
+ &--centered {
19
+ flex-direction: column;
20
+ align-items: center;
21
+ text-align: center;
22
+ }
23
+
24
+ &--content {
25
+ flex-direction: column;
26
+ margin-top: 0.1875rem;
27
+ }
28
+
29
+ &--centered &--content {
30
+ flex-direction: column;
31
+ margin-top: 0;
32
+ }
33
+
34
+ &--icon {
35
+ color: var(--color-emerald-green);
36
+ }
37
+
38
+ &--image {
39
+ height: 4rem;
40
+ width: 4rem;
41
+ }
42
+
43
+ &--buttons {
44
+ display: flex;
45
+ flex-direction: row;
46
+ &-centered {
47
+ flex-direction: column;
48
+ align-items: center;
49
+ text-align: center;
50
+ }
51
+ }
52
+ }