@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
 
@@ -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,140 @@
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
+ import _extends from "@babel/runtime/helpers/esm/extends";
9
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
10
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
11
+ var _excluded = ["alt", "centered", "title", "skeleton", "className", "icon", "src", "imgProps", "text", "onClose", "onAccept", "closeButtonText", "acceptButtonText", "closeButtonAttributes", "acceptButtonAttributes"];
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
+ import React from 'react';
18
+ import classnames from 'classnames';
19
+ import Button from '../button/Button';
20
+ import IconPrimary from '../icon-primary/IconPrimary';
21
+ import Img from '../../elements/Img';
22
+ import Div from '../../elements/Div';
23
+ import H3 from '../../elements/H3';
24
+ import P from '../../elements/P';
25
+ import { lightbulb_medium as LightbulbIcon } from '../../icons';
26
+ import { createSpacingClasses } from '../space/SpacingHelper';
27
+ import { createSkeletonClass } from '../skeleton/SkeletonHelper';
28
+ import Context from '../../shared/Context';
29
+ import { extendPropsWithContext } from '../../shared/component-helper';
30
+ export var defaultProps = {
31
+ alt: null,
32
+ centered: false,
33
+ className: null,
34
+ skeleton: false,
35
+ icon: LightbulbIcon,
36
+ imgProps: null,
37
+ src: null,
38
+ title: null,
39
+ onAccept: null,
40
+ onClose: null,
41
+ closeButtonText: null,
42
+ acceptButtonText: null,
43
+ closeButtonAttributes: null,
44
+ acceptButtonAttributes: null
45
+ };
46
+
47
+ function InfoCard(localProps) {
48
+ var _IconPrimary;
49
+
50
+ var context = React.useContext(Context);
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);
69
+
70
+ var skeletonClasses = createSkeletonClass('shape', skeleton, context);
71
+ var spacingClasses = createSpacingClasses(props);
72
+ var closeButtonIsHidden = !onClose && !closeButtonText;
73
+ var acceptButtonIsHidden = !onAccept && !acceptButtonText;
74
+ return React.createElement(Div, _extends({
75
+ className: classnames('dnb-info-card', skeletonClasses, spacingClasses, className, centered && 'dnb-info-card--centered'),
76
+ "data-testid": "info-card"
77
+ }, props), React.createElement(Div, {
78
+ right: !centered && 'small',
79
+ bottom: centered && 'small'
80
+ }, getIllustration()), React.createElement("div", {
81
+ className: "dnb-info-card--content",
82
+ "data-testid": "info-card-content"
83
+ }, title && React.createElement(H3, {
84
+ size: "small",
85
+ "data-testid": "info-card-title",
86
+ bottom: "x-small",
87
+ top: "0"
88
+ }, title), React.createElement(P, {
89
+ size: "small",
90
+ "data-testid": "info-card-text",
91
+ bottom: "0"
92
+ }, text), getButtons()));
93
+
94
+ function getButtons() {
95
+ if (closeButtonIsHidden && acceptButtonIsHidden) return null;
96
+ return React.createElement(Div, {
97
+ top: centered ? 'medium' : 'small',
98
+ className: 'dnb-info-card--buttons' + (centered ? " dnb-info-card--buttons-centered" : "")
99
+ }, !acceptButtonIsHidden && React.createElement(Button, _extends({
100
+ type: "button",
101
+ "data-testid": "into-card-accept-button",
102
+ variant: "secondary",
103
+ right: !centered && 'small',
104
+ on_click: onAccept,
105
+ text: acceptButtonText
106
+ }, acceptButtonAttributes)), !closeButtonIsHidden && React.createElement(Button, _extends({
107
+ type: "button",
108
+ "data-testid": "into-card-close-button",
109
+ variant: "tertiary",
110
+ top: centered && 'small',
111
+ on_click: onClose,
112
+ icon: "close",
113
+ icon_position: "left",
114
+ text: closeButtonText
115
+ }, closeButtonAttributes)));
116
+ }
117
+
118
+ function getIllustration() {
119
+ if (src || imgProps) {
120
+ var imageProps = _objectSpread({
121
+ src: src,
122
+ alt: alt
123
+ }, imgProps);
124
+
125
+ return React.createElement(Img, _extends({
126
+ "data-testid": "info-card-image",
127
+ className: "dnb-info-card--image"
128
+ }, imageProps));
129
+ }
130
+
131
+ return _IconPrimary || (_IconPrimary = React.createElement(IconPrimary, {
132
+ size: "medium",
133
+ className: "dnb-info-card--icon",
134
+ icon: icon,
135
+ "data-testid": "info-card-icon"
136
+ }));
137
+ }
138
+ }
139
+
140
+ 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
+ }