@orangesk/orange-design-system 2.0.0-beta.2 → 2.0.0-beta.21

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 (784) hide show
  1. package/README.md +346 -19
  2. package/build/components/Accordion/style.css +2 -0
  3. package/build/components/Accordion/style.css.map +1 -0
  4. package/build/components/Alert/style.css +2 -0
  5. package/build/components/Alert/style.css.map +1 -0
  6. package/build/components/AnchorNavigation/style.css +1 -1
  7. package/build/components/AnchorNavigation/style.css.map +1 -1
  8. package/build/components/Bar/style.css +2 -0
  9. package/build/components/Bar/style.css.map +1 -0
  10. package/build/components/BlockAction/style.css +2 -0
  11. package/build/components/BlockAction/style.css.map +1 -0
  12. package/build/components/BodyBanner/style.css +1 -1
  13. package/build/components/BodyBanner/style.css.map +1 -1
  14. package/build/components/Breadcrumbs/style.css +2 -0
  15. package/build/components/Breadcrumbs/style.css.map +1 -0
  16. package/build/components/Button/style.css +2 -0
  17. package/build/components/Button/style.css.map +1 -0
  18. package/build/components/Buttons/style.css +2 -0
  19. package/build/components/Buttons/style.css.map +1 -0
  20. package/build/components/Card/style.css +2 -0
  21. package/build/components/Card/style.css.map +1 -0
  22. package/build/components/Carousel/style.css +1 -1
  23. package/build/components/Carousel/style.css.map +1 -1
  24. package/build/components/CarouselHero/style.css +2 -0
  25. package/build/components/CarouselHero/style.css.map +1 -0
  26. package/build/components/CarouselPromotions/style.css +2 -0
  27. package/build/components/CarouselPromotions/style.css.map +1 -0
  28. package/build/components/CartTable/style.css +1 -1
  29. package/build/components/CartTable/style.css.map +1 -1
  30. package/build/components/Container/style.css +2 -0
  31. package/build/components/Container/style.css.map +1 -0
  32. package/build/components/Controls/style.css +2 -0
  33. package/build/components/Controls/style.css.map +1 -0
  34. package/build/components/Cover/style.css +2 -0
  35. package/build/components/Cover/style.css.map +1 -0
  36. package/build/components/Divider/style.css +2 -0
  37. package/build/components/Divider/style.css.map +1 -0
  38. package/build/components/DocumentationSidebar/style.css +1 -1
  39. package/build/components/DocumentationSidebar/style.css.map +1 -1
  40. package/build/components/Dropdown/style.css +1 -1
  41. package/build/components/Dropdown/style.css.map +1 -1
  42. package/build/components/Expander/style.css +2 -0
  43. package/build/components/Expander/style.css.map +1 -0
  44. package/build/components/FeatureAccordion/style.css +1 -1
  45. package/build/components/FeatureAccordion/style.css.map +1 -1
  46. package/build/components/Footer/style.css +1 -1
  47. package/build/components/Footer/style.css.map +1 -1
  48. package/build/components/Gauge/style.css +2 -0
  49. package/build/components/Gauge/style.css.map +1 -0
  50. package/build/components/Grid/style.css +1 -1
  51. package/build/components/Grid/style.css.map +1 -1
  52. package/build/components/Hero/style.css +1 -1
  53. package/build/components/Hero/style.css.map +1 -1
  54. package/build/components/Icon/style.css +2 -0
  55. package/build/components/Icon/style.css.map +1 -0
  56. package/build/components/IconList/style.css +1 -1
  57. package/build/components/IconList/style.css.map +1 -1
  58. package/build/components/Image/style.css +2 -0
  59. package/build/components/Image/style.css.map +1 -0
  60. package/build/components/Link/style.css +2 -0
  61. package/build/components/Link/style.css.map +1 -0
  62. package/build/components/List/style.css +2 -0
  63. package/build/components/List/style.css.map +1 -0
  64. package/build/components/Loader/style.css +2 -0
  65. package/build/components/Loader/style.css.map +1 -0
  66. package/build/components/Megamenu/style.css +2 -0
  67. package/build/components/Megamenu/style.css.map +1 -0
  68. package/build/components/Modal/style.css +2 -0
  69. package/build/components/Modal/style.css.map +1 -0
  70. package/build/components/Pagination/style.css +2 -0
  71. package/build/components/Pagination/style.css.map +1 -0
  72. package/build/components/Pill/style.css +2 -0
  73. package/build/components/Pill/style.css.map +1 -0
  74. package/build/components/Preview/style.css +1 -1
  75. package/build/components/Preview/style.css.map +1 -1
  76. package/build/components/Progress/style.css +2 -0
  77. package/build/components/Progress/style.css.map +1 -0
  78. package/build/components/PromoBanner/style.css +1 -1
  79. package/build/components/PromoBanner/style.css.map +1 -1
  80. package/build/components/PromotionCard/style.css +2 -0
  81. package/build/components/PromotionCard/style.css.map +1 -0
  82. package/build/components/Section/style.css +2 -0
  83. package/build/components/Section/style.css.map +1 -0
  84. package/build/components/Skeleton/style.css +2 -0
  85. package/build/components/Skeleton/style.css.map +1 -0
  86. package/build/components/SkipLink/style.css +2 -0
  87. package/build/components/SkipLink/style.css.map +1 -0
  88. package/build/components/SocialButton/style.css +2 -0
  89. package/build/components/SocialButton/style.css.map +1 -0
  90. package/build/components/Stepbar/style.css +2 -0
  91. package/build/components/Stepbar/style.css.map +1 -0
  92. package/build/components/Sticker/style.css +2 -0
  93. package/build/components/Sticker/style.css.map +1 -0
  94. package/build/components/Table/style.css +2 -0
  95. package/build/components/Table/style.css.map +1 -0
  96. package/build/components/Tabs/style.css +2 -0
  97. package/build/components/Tabs/style.css.map +1 -0
  98. package/build/components/Tag/style.css +2 -0
  99. package/build/components/Tag/style.css.map +1 -0
  100. package/build/components/Testimonial/style.css +2 -0
  101. package/build/components/Testimonial/style.css.map +1 -0
  102. package/build/components/Tile/style.css +2 -0
  103. package/build/components/Tile/style.css.map +1 -0
  104. package/build/components/Tooltip/style.css +1 -1
  105. package/build/components/Tooltip/style.css.map +1 -1
  106. package/build/components/index.js +1 -23
  107. package/build/components/index.js.map +1 -1
  108. package/build/components/tsconfig.tsbuildinfo +1 -1
  109. package/build/components/types/index.d.ts +1497 -0
  110. package/build/components/types/src/components/Accordion/Accordion.d.ts +2 -2
  111. package/build/components/types/src/components/Accordion/Accordion.static.d.ts +1 -0
  112. package/build/components/types/src/components/Alert/Alert.d.ts +0 -2
  113. package/build/components/types/src/components/AnchorNavigation/AnchorNavigation.d.ts +1 -2
  114. package/build/components/types/src/components/AnchorNavigation/AnchorNavigation.static.d.ts +20 -17
  115. package/build/components/types/src/components/BlockAction/BlockAction.d.ts +2 -0
  116. package/build/components/types/src/components/BlockAction/Context.d.ts +2 -0
  117. package/build/components/types/src/components/BodyBanner/BodyBanner.d.ts +10 -10
  118. package/build/components/types/src/components/Breadcrumbs/Breadcrumbs.d.ts +0 -2
  119. package/build/components/types/src/components/Button/Button.d.ts +1 -1
  120. package/build/components/types/src/components/Button/index.d.ts +3 -4
  121. package/build/components/types/src/components/Card/Card.d.ts +2 -1
  122. package/build/components/types/src/components/Card/CardSection.d.ts +2 -2
  123. package/build/components/types/src/components/Card/index.d.ts +1 -0
  124. package/build/components/types/src/components/Carousel/Carousel.d.ts +4 -2
  125. package/build/components/types/src/components/Carousel/Carousel.static.d.ts +61 -7
  126. package/build/components/types/src/components/Carousel/constants.d.ts +2 -0
  127. package/build/components/types/src/components/CarouselHero/CarouselHero.d.ts +17 -0
  128. package/build/components/types/src/components/CarouselHero/CarouselHero.static.d.ts +47 -0
  129. package/build/components/types/src/components/CarouselHero/CarouselHeroItem.d.ts +8 -0
  130. package/build/components/types/src/components/CarouselHero/constants.d.ts +33 -0
  131. package/build/components/types/src/components/CarouselHero/index.d.ts +2 -0
  132. package/build/components/types/src/components/CarouselPromotions/CarouselPromotions.d.ts +0 -1
  133. package/build/components/types/src/components/Controls/Controls.d.ts +0 -1
  134. package/build/components/types/src/components/Cover/Cover.d.ts +3 -3
  135. package/build/components/types/src/components/Divider/Divider.d.ts +0 -4
  136. package/build/components/types/src/components/DocumentationSidebar/DocumentationSidebar.d.ts +1 -0
  137. package/build/components/types/src/components/Expander/Expander.d.ts +2 -5
  138. package/build/components/types/src/components/FeatureAccordion/FeatureAccordion.d.ts +1 -3
  139. package/build/components/types/src/components/Footer/Footer.d.ts +1 -5
  140. package/build/components/types/src/components/Footer/PlanObnovy.d.ts +1 -0
  141. package/build/components/types/src/components/Footer/constants.d.ts +10 -0
  142. package/build/components/types/src/components/Footer/data.d.ts +6 -0
  143. package/build/components/types/src/components/Forms/InputStepper/InputStepper.d.ts +0 -1
  144. package/build/components/types/src/components/Forms/Select/index.d.ts +1 -1
  145. package/build/components/types/src/components/Grid/Grid.d.ts +1 -1
  146. package/build/components/types/src/components/Grid/GridCol.d.ts +1 -1
  147. package/build/components/types/src/components/Hero/Hero.d.ts +0 -3
  148. package/build/components/types/src/components/Icon/IconSearch.d.ts +2 -2
  149. package/build/components/types/src/components/Icon/IconSearchWrapper.d.ts +1 -1
  150. package/build/components/types/src/components/Icon/iconSearchTags.d.ts +259 -252
  151. package/build/components/types/src/components/Link/Link.d.ts +2 -2
  152. package/build/components/types/src/components/Megamenu/Megamenu.d.ts +6 -1
  153. package/build/components/types/src/components/Megamenu/MegamenuBlog.d.ts +2 -1
  154. package/build/components/types/src/components/Megamenu/constants.d.ts +4 -0
  155. package/build/components/types/src/components/Megamenu/static.d.ts +2 -3
  156. package/build/components/types/src/components/Modal/Modal.d.ts +0 -4
  157. package/build/components/types/src/components/Modal/ModalBody.d.ts +3 -3
  158. package/build/components/types/src/components/Modal/ModalProductHeader.d.ts +2 -0
  159. package/build/components/types/src/components/Modal/index.d.ts +0 -1
  160. package/build/components/types/src/components/Pagination/Pagination.d.ts +2 -5
  161. package/build/components/types/src/components/Pagination/Separator.d.ts +2 -2
  162. package/build/components/types/src/components/Pill/Pill.d.ts +3 -1
  163. package/build/components/types/src/components/Preview/Preview.d.ts +1 -1
  164. package/build/components/types/src/components/Preview/PreviewGenerator.d.ts +1 -0
  165. package/build/components/types/src/components/Preview/index.d.ts +1 -1
  166. package/build/components/types/src/components/Progress/Progress.d.ts +0 -1
  167. package/build/components/types/src/components/PromoBanner/PromoBanner.d.ts +9 -6
  168. package/build/components/types/src/components/PromotionCard/PromotionCard.d.ts +3 -3
  169. package/build/components/types/src/components/Section/Section.d.ts +4 -1
  170. package/build/components/types/src/components/SocialButton/SocialButton.d.ts +13 -0
  171. package/build/components/types/src/components/SocialButton/index.d.ts +1 -0
  172. package/build/components/types/src/components/Stepbar/Stepbar.d.ts +0 -2
  173. package/build/components/types/src/components/Table/Row.d.ts +1 -2
  174. package/build/components/types/src/components/Table/Table.d.ts +2 -2
  175. package/build/components/types/src/components/Table/docsData.d.ts +2 -0
  176. package/build/components/types/src/components/Table/types.d.ts +1 -0
  177. package/build/components/types/src/components/Tabs/Tabs.d.ts +0 -2
  178. package/build/components/types/src/components/Tag/Tag.d.ts +0 -2
  179. package/build/components/types/src/components/Tile/Tile.d.ts +2 -1
  180. package/build/components/types/src/components/Tooltip/Tooltip.d.ts +0 -1
  181. package/build/components/types/src/components/Tooltip/tests/BaseWrapper.d.ts +1 -1
  182. package/build/components/types/src/components/index.d.ts +5 -5
  183. package/build/components/types/src/docs/utils/SpacePreview.d.ts +1 -2
  184. package/build/components/types/src/scripts/index.d.ts +12 -3
  185. package/build/components/types/src/scripts/modules/SameHeight.d.ts +3 -0
  186. package/build/components/types/src/styles/export/color.d.ts +105 -0
  187. package/build/fonts/HelveticaNeue-Bold.woff2 +0 -0
  188. package/build/fonts/HelveticaNeue-Light.woff2 +0 -0
  189. package/build/fonts/HelveticaNeue-Roman.woff2 +0 -0
  190. package/build/lib/base.css +3 -0
  191. package/build/lib/base.css.map +1 -0
  192. package/build/lib/components.css +1 -1
  193. package/build/lib/components.css.map +1 -1
  194. package/build/lib/footer.css +2 -0
  195. package/build/lib/footer.css.map +1 -0
  196. package/build/lib/megamenu.css +1 -1
  197. package/build/lib/megamenu.css.map +1 -1
  198. package/build/lib/megamenu.js +1 -1
  199. package/build/lib/megamenu.js.map +1 -1
  200. package/build/lib/scripts.js +1 -9
  201. package/build/lib/scripts.js.map +1 -1
  202. package/build/lib/style.css +1 -1
  203. package/build/lib/style.css.map +1 -1
  204. package/build/lib/tsconfig.tsbuildinfo +1 -1
  205. package/build/lib/utilities.css +2 -0
  206. package/build/lib/utilities.css.map +1 -0
  207. package/build/plan-obnovy.svg +53 -0
  208. package/build/sprite.svg +1 -1
  209. package/package.json +46 -38
  210. package/public/fonts/HelveticaNeue-Bold.woff2 +0 -0
  211. package/public/fonts/HelveticaNeue-Light.woff2 +0 -0
  212. package/public/fonts/HelveticaNeue-Roman.woff2 +0 -0
  213. package/src/assets/icons/ai.svg +6 -0
  214. package/src/assets/icons/article.svg +7 -0
  215. package/src/assets/icons/instagram.svg +5 -1
  216. package/src/assets/icons/linkedin-2.svg +3 -1
  217. package/src/assets/icons/pictogram-activation--dark.svg +10 -11
  218. package/src/assets/icons/pictogram-activation-free--dark.svg +4 -5
  219. package/src/assets/icons/pictogram-activation-free.svg +4 -5
  220. package/src/assets/icons/pictogram-activation.svg +10 -11
  221. package/src/assets/icons/pictogram-archive--dark.svg +3 -4
  222. package/src/assets/icons/pictogram-archive.svg +3 -4
  223. package/src/assets/icons/pictogram-calling-minutes--dark.svg +3 -4
  224. package/src/assets/icons/pictogram-calling-minutes.svg +3 -4
  225. package/src/assets/icons/pictogram-canal-plus--dark.svg +3 -4
  226. package/src/assets/icons/pictogram-canal-plus.svg +3 -4
  227. package/src/assets/icons/pictogram-competition-tickets--dark.svg +11 -12
  228. package/src/assets/icons/pictogram-competition-tickets.svg +11 -12
  229. package/src/assets/icons/pictogram-device-discount--dark.svg +7 -6
  230. package/src/assets/icons/pictogram-device-discount.svg +5 -6
  231. package/src/assets/icons/pictogram-discount-general--dark.svg +5 -6
  232. package/src/assets/icons/pictogram-discount-general.svg +5 -6
  233. package/src/assets/icons/pictogram-discount-price--dark.svg +5 -6
  234. package/src/assets/icons/pictogram-discount-price.svg +5 -6
  235. package/src/assets/icons/pictogram-extra-data--dark.svg +6 -7
  236. package/src/assets/icons/pictogram-extra-data.svg +6 -7
  237. package/src/assets/icons/pictogram-free-payment--dark.svg +5 -6
  238. package/src/assets/icons/pictogram-free-payment.svg +3 -6
  239. package/src/assets/icons/pictogram-gift--dark.svg +12 -13
  240. package/src/assets/icons/pictogram-gift-one-benefit--dark.svg +7 -8
  241. package/src/assets/icons/pictogram-gift-one-benefit.svg +7 -8
  242. package/src/assets/icons/pictogram-gift-two-benefits--dark.svg +8 -9
  243. package/src/assets/icons/pictogram-gift-two-benefits.svg +8 -9
  244. package/src/assets/icons/pictogram-gift.svg +3 -4
  245. package/src/assets/icons/pictogram-hbo-max--dark.svg +5 -6
  246. package/src/assets/icons/pictogram-hbo-max.svg +5 -6
  247. package/src/assets/icons/pictogram-infinite-sms--dark.svg +3 -4
  248. package/src/assets/icons/pictogram-infinite-sms.svg +3 -4
  249. package/src/assets/icons/pictogram-installation--dark.svg +4 -5
  250. package/src/assets/icons/pictogram-installation-free--dark.svg +4 -5
  251. package/src/assets/icons/pictogram-installation-free.svg +4 -5
  252. package/src/assets/icons/pictogram-installation.svg +4 -5
  253. package/src/assets/icons/pictogram-max--dark.svg +3 -4
  254. package/src/assets/icons/pictogram-max-canal-plus--dark.svg +5 -6
  255. package/src/assets/icons/pictogram-max-canal-plus.svg +5 -6
  256. package/src/assets/icons/pictogram-max.svg +3 -4
  257. package/src/assets/icons/pictogram-moj-orange-app--dark.svg +3 -4
  258. package/src/assets/icons/pictogram-moj-orange-app.svg +3 -4
  259. package/src/assets/icons/pictogram-movie-storage--dark.svg +4 -5
  260. package/src/assets/icons/pictogram-movie-storage.svg +4 -5
  261. package/src/assets/icons/pictogram-online-protection--dark.svg +3 -4
  262. package/src/assets/icons/pictogram-online-protection.svg +3 -4
  263. package/src/assets/icons/pictogram-random-damage--dark.svg +4 -8
  264. package/src/assets/icons/pictogram-random-damage.svg +4 -8
  265. package/src/assets/icons/pictogram-recycling--dark.svg +7 -8
  266. package/src/assets/icons/pictogram-recycling.svg +14 -15
  267. package/src/assets/icons/pictogram-repair--dark.svg +12 -13
  268. package/src/assets/icons/pictogram-repair.svg +12 -13
  269. package/src/assets/icons/pictogram-roaming--dark.svg +3 -4
  270. package/src/assets/icons/pictogram-roaming-discount--dark.svg +3 -16
  271. package/src/assets/icons/pictogram-roaming-discount.svg +15 -16
  272. package/src/assets/icons/pictogram-roaming.svg +3 -4
  273. package/src/assets/icons/pictogram-skylink--dark.svg +10 -11
  274. package/src/assets/icons/pictogram-skylink-live-tv--dark.svg +7 -8
  275. package/src/assets/icons/pictogram-skylink-live-tv.svg +7 -8
  276. package/src/assets/icons/pictogram-skylink.svg +10 -11
  277. package/src/assets/icons/pictogram-sms--dark.svg +5 -6
  278. package/src/assets/icons/pictogram-sms.svg +5 -6
  279. package/src/assets/icons/pictogram-theft--dark.svg +3 -7
  280. package/src/assets/icons/pictogram-theft.svg +3 -7
  281. package/src/assets/icons/pictogram-three-devices--dark.svg +4 -8
  282. package/src/assets/icons/pictogram-three-devices.svg +4 -8
  283. package/src/assets/icons/pictogram-trust--dark.svg +3 -4
  284. package/src/assets/icons/pictogram-trust.svg +3 -4
  285. package/src/assets/icons/pictogram-water-damage--dark.svg +5 -6
  286. package/src/assets/icons/pictogram-water-damage.svg +5 -6
  287. package/src/assets/icons/pinterest.svg +4 -0
  288. package/src/assets/icons/play.svg +4 -1
  289. package/src/assets/icons/quote.svg +4 -0
  290. package/src/assets/icons/snapchat.svg +4 -0
  291. package/src/assets/icons/tiktok.svg +4 -0
  292. package/src/assets/icons/whatsapp.svg +4 -0
  293. package/src/components/Accordion/Accordion.static.ts +36 -30
  294. package/src/components/Accordion/Accordion.tsx +4 -4
  295. package/src/components/Accordion/AccordionHeader.tsx +0 -10
  296. package/src/components/Accordion/AccordionItem.tsx +1 -0
  297. package/src/components/Accordion/styles/config.scss +5 -4
  298. package/src/components/Accordion/styles/mixins.scss +12 -11
  299. package/src/components/Accordion/styles/style.scss +2 -2
  300. package/src/components/Accordion/tests/Accordion.unit.test.js +12 -26
  301. package/src/components/Alert/Alert.tsx +0 -6
  302. package/src/components/Alert/styles/config.scss +1 -1
  303. package/src/components/Alert/styles/mixins.scss +3 -1
  304. package/src/components/Alert/tests/Alert.test.js +0 -14
  305. package/src/components/AnchorNavigation/AnchorNavigation.static.ts +296 -72
  306. package/src/components/AnchorNavigation/AnchorNavigation.tsx +21 -26
  307. package/src/components/AnchorNavigation/styles/mixins.scss +23 -32
  308. package/src/components/AnchorNavigation/tests/AnchorNavigation.conformance.test.js +58 -0
  309. package/src/components/AnchorNavigation/tests/AnchorNavigation.unit.test.js +163 -0
  310. package/src/components/Bar/styles/config.scss +4 -5
  311. package/src/components/Bar/styles/mixins.scss +11 -11
  312. package/src/components/BlockAction/BlockAction.tsx +10 -3
  313. package/src/components/BlockAction/Context.tsx +4 -0
  314. package/src/components/BlockAction/styles/mixins.scss +6 -6
  315. package/src/components/BlockAction/styles/style.scss +5 -0
  316. package/src/components/BodyBanner/BodyBanner.tsx +52 -73
  317. package/src/components/BodyBanner/styles/mixins.scss +39 -33
  318. package/src/components/BodyBanner/styles/style.scss +4 -18
  319. package/src/components/BodyBanner/tests/BodyBanner.conformance.test.js +67 -0
  320. package/src/components/BodyBanner/tests/BodyBanner.unit.test.js +194 -0
  321. package/src/components/Breadcrumbs/BreadcrumbItem.tsx +16 -7
  322. package/src/components/Breadcrumbs/Breadcrumbs.tsx +4 -12
  323. package/src/components/Breadcrumbs/styles/mixins.scss +2 -4
  324. package/src/components/Breadcrumbs/tests/BreadcrumbItem.unit.test.js +14 -8
  325. package/src/components/Breadcrumbs/tests/Breadcrumbs.integration.test.js +14 -37
  326. package/src/components/Breadcrumbs/tests/Breadcrumbs.unit.test.js +19 -23
  327. package/src/components/Button/Button.tsx +2 -6
  328. package/src/components/Button/styles/config.scss +5 -5
  329. package/src/components/Button/styles/mixins.scss +6 -1
  330. package/src/components/Button/styles/style.scss +4 -0
  331. package/src/components/Button/tests/Button.test.js +0 -10
  332. package/src/components/Buttons/styles/mixins.scss +1 -1
  333. package/src/components/Card/Card.tsx +20 -3
  334. package/src/components/Card/CardSection.tsx +7 -11
  335. package/src/components/Card/index.ts +1 -0
  336. package/src/components/Card/styles/config.scss +2 -2
  337. package/src/components/Card/styles/mixins.scss +8 -6
  338. package/src/components/Card/styles/style.scss +4 -0
  339. package/src/components/Card/tests/Card.unit.test.js +45 -6
  340. package/src/components/Card/tests/CardSection.unit.test.js +36 -3
  341. package/src/components/Carousel/Carousel.static.ts +371 -10
  342. package/src/components/Carousel/Carousel.tsx +41 -24
  343. package/src/components/Carousel/constants.ts +2 -0
  344. package/src/components/Carousel/styles/config.scss +1 -2
  345. package/src/components/Carousel/styles/mixins.scss +42 -3
  346. package/src/components/Carousel/styles/style.scss +8 -0
  347. package/src/components/Carousel/tests/Carousel.static.test.js +616 -0
  348. package/src/components/Carousel/tests/Carousel.unit.test.js +117 -12
  349. package/src/components/CarouselHero/CarouselHero.static.ts +528 -0
  350. package/src/components/CarouselHero/CarouselHero.tsx +139 -0
  351. package/src/components/CarouselHero/CarouselHeroItem.tsx +40 -0
  352. package/src/components/CarouselHero/constants.ts +36 -0
  353. package/src/components/CarouselHero/index.ts +2 -0
  354. package/src/components/CarouselHero/styles/config.scss +54 -0
  355. package/src/components/CarouselHero/styles/mixins.scss +278 -0
  356. package/src/components/CarouselHero/styles/style.scss +63 -0
  357. package/src/components/CarouselHero/tests/CarouselHero.conformance.test.js +129 -0
  358. package/src/components/CarouselHero/tests/CarouselHero.unit.test.js +332 -0
  359. package/src/components/CarouselHero/tests/CarouselHeroItem.conformance.test.js +135 -0
  360. package/src/components/CarouselHero/tests/CarouselHeroItem.unit.test.js +143 -0
  361. package/src/components/CarouselPromotions/CarouselPromotions.tsx +1 -6
  362. package/src/components/CarouselPromotions/styles/mixins.scss +8 -5
  363. package/src/components/CarouselPromotions/tests/CarouselPromotions.unit.test.js +0 -17
  364. package/src/components/CartTable/FooterPriceColumn.tsx +5 -3
  365. package/src/components/CartTable/Price.tsx +1 -1
  366. package/src/components/Code/styles/style.scss +6 -5
  367. package/src/components/Controls/Controls.tsx +2 -7
  368. package/src/components/Controls/styles/config.scss +2 -2
  369. package/src/components/Controls/tests/Controls.test.js +0 -32
  370. package/src/components/Cover/Cover.tsx +22 -20
  371. package/src/components/Cover/styles/config.scss +23 -12
  372. package/src/components/Cover/styles/mixins.scss +6 -5
  373. package/src/components/Cover/tests/Cover.unit.test.js +52 -52
  374. package/src/components/Divider/Divider.tsx +2 -16
  375. package/src/components/Divider/styles/config.scss +0 -17
  376. package/src/components/Divider/styles/mixins.scss +8 -10
  377. package/src/components/Divider/styles/style.scss +2 -16
  378. package/src/components/Divider/tests/Divider.conformance.test.js +1 -1
  379. package/src/components/Divider/tests/Divider.unit.test.js +0 -17
  380. package/src/components/DocumentationSidebar/DocumentationSidebar.tsx +188 -2
  381. package/src/components/DocumentationSidebar/styles/style.scss +76 -3
  382. package/src/components/Dropdown/styles/mixins.scss +1 -1
  383. package/src/components/Expander/Expander.static.ts +11 -12
  384. package/src/components/Expander/Expander.tsx +4 -8
  385. package/src/components/Expander/styles/style.scss +12 -3
  386. package/src/components/Expander/tests/Expander.conformance.test.js +8 -12
  387. package/src/components/Expander/tests/Expander.unit.test.js +37 -47
  388. package/src/components/FeatureAccordion/FeatureAccordion.tsx +3 -13
  389. package/src/components/FeatureAccordion/styles/mixins.scss +6 -14
  390. package/src/components/FeatureAccordion/styles/style.scss +2 -4
  391. package/src/components/FeatureAccordion/tests/FeatureAccordion.conformance.test.js +2 -0
  392. package/src/components/FeatureAccordion/tests/FeatureAccordion.unit.test.js +0 -5
  393. package/src/components/Footer/Footer.tsx +110 -71
  394. package/src/components/Footer/PlanObnovy.tsx +211 -0
  395. package/src/components/Footer/constants.ts +11 -0
  396. package/src/components/Footer/data.ts +27 -0
  397. package/src/components/Footer/styles/config.scss +1 -0
  398. package/src/components/Footer/styles/mixins.scss +182 -0
  399. package/src/components/Footer/styles/style.scss +54 -0
  400. package/src/components/Footer/tests/Footer.conformance.test.js +133 -8
  401. package/src/components/Footer/tests/Footer.unit.test.js +71 -6
  402. package/src/components/Forms/DatePicker/styles/style.scss +1 -1
  403. package/src/components/Forms/Field/styles/config.scss +8 -8
  404. package/src/components/Forms/Field/tests/Autocomplete.Field.conformance.test.js +1 -1
  405. package/src/components/Forms/Field/tests/Checkbox.Field.conformance.test.js +1 -0
  406. package/src/components/Forms/Field/tests/File.Field.conformance.test.js +1 -0
  407. package/src/components/Forms/Field/tests/Group.Field.conformance.test.js +1 -0
  408. package/src/components/Forms/Field/tests/Radio.Field.conformance.test.js +1 -0
  409. package/src/components/Forms/Field/tests/Rangeslider.Field.test.js +1 -0
  410. package/src/components/Forms/Field/tests/Select.Field.conformance.test.js +1 -0
  411. package/src/components/Forms/Field/tests/Text.Field.conformance.test.js +1 -0
  412. package/src/components/Forms/Field/tests/Textarea.Field.conformance.test.js +1 -0
  413. package/src/components/Forms/Fieldset/styles/mixins.scss +3 -3
  414. package/src/components/Forms/File/styles/mixins.scss +1 -1
  415. package/src/components/Forms/Group/styles/mixins.scss +14 -0
  416. package/src/components/Forms/InputStepper/InputStepper.tsx +0 -4
  417. package/src/components/Forms/InputStepper/styles/style.scss +0 -66
  418. package/src/components/Forms/Label/styles/config.scss +3 -0
  419. package/src/components/Forms/RangeSlider/styles/mixins.scss +1 -1
  420. package/src/components/Forms/TextArea/styles/mixins.scss +10 -9
  421. package/src/components/Forms/TextInput/styles/config.scss +1 -1
  422. package/src/components/Forms/styles/config.scss +5 -4
  423. package/src/components/Gauge/styles/style.scss +1 -1
  424. package/src/components/Grid/Grid.tsx +1 -1
  425. package/src/components/Grid/styles/config.scss +5 -3
  426. package/src/components/Grid/styles/mixins.scss +29 -19
  427. package/src/components/Grid/tests/Grid.unit.test.js +11 -0
  428. package/src/components/Hero/Hero.tsx +2 -16
  429. package/src/components/Hero/styles/style.scss +0 -14
  430. package/src/components/Hero/tests/Hero.unit.test.js +109 -119
  431. package/src/components/Icon/iconSearchTags.ts +440 -432
  432. package/src/components/Icon/styles/style.scss +15 -0
  433. package/src/components/Icon/tests/Pictogram.unit.test.js +38 -0
  434. package/src/components/IconList/styles/mixins.scss +5 -5
  435. package/src/components/Image/styles/mixins.scss +2 -2
  436. package/src/components/Link/Link.tsx +4 -5
  437. package/src/components/Link/styles/mixins.scss +9 -3
  438. package/src/components/Link/styles/style.scss +4 -2
  439. package/src/components/Link/tests/Link.conformance.test.js +6 -27
  440. package/src/components/Link/tests/Link.unit.test.js +1 -30
  441. package/src/components/List/styles/config.scss +12 -12
  442. package/src/components/List/styles/mixins.scss +16 -9
  443. package/src/components/Loader/Loader.tsx +2 -10
  444. package/src/components/Loader/styles/mixins.scss +1 -1
  445. package/src/components/Loader/styles/style.scss +6 -4
  446. package/src/components/Megamenu/Megamenu.static.ts +2 -0
  447. package/src/components/Megamenu/Megamenu.tsx +730 -650
  448. package/src/components/Megamenu/MegamenuBlog.tsx +201 -183
  449. package/src/components/Megamenu/constants.ts +4 -0
  450. package/src/components/Megamenu/static.ts +5 -11
  451. package/src/components/Megamenu/styles/mixins.scss +50 -3
  452. package/src/components/Megamenu/styles/style.scss +10 -0
  453. package/src/components/Modal/Modal.tsx +1 -14
  454. package/src/components/Modal/ModalBody.tsx +26 -14
  455. package/src/components/Modal/ModalProductHeader.tsx +6 -2
  456. package/src/components/Modal/index.ts +0 -1
  457. package/src/components/Modal/styles/config.scss +4 -4
  458. package/src/components/Modal/styles/mixins.scss +18 -57
  459. package/src/components/Modal/styles/style.scss +1 -16
  460. package/src/components/Modal/tests/Modal.unit.test.js +0 -59
  461. package/src/components/Modal/tests/ModalBody.unit.test.js +21 -12
  462. package/src/components/Modal/tests/ModalProductHeader.unit.test.js +12 -0
  463. package/src/components/Pagination/Pagination.tsx +3 -13
  464. package/src/components/Pagination/styles/mixins.scss +1 -1
  465. package/src/components/Pill/Pill.tsx +17 -5
  466. package/src/components/Pill/styles/config.scss +2 -1
  467. package/src/components/Pill/styles/style.scss +17 -1
  468. package/src/components/Pill/tests/Pill.conformance.test.js +9 -3
  469. package/src/components/Pill/tests/Pill.unit.test.js +87 -9
  470. package/src/components/Preview/PreviewGenerator.tsx +50 -29
  471. package/src/components/Progress/Progress.tsx +1 -13
  472. package/src/components/Progress/styles/config.scss +4 -4
  473. package/src/components/Progress/styles/mixins.scss +9 -7
  474. package/src/components/PromoBanner/PromoBanner.tsx +70 -43
  475. package/src/components/PromoBanner/styles/mixins.scss +39 -17
  476. package/src/components/PromoBanner/styles/style.scss +5 -7
  477. package/src/components/PromoBanner/tests/PromoBanner.conformance.test.js +783 -0
  478. package/src/components/PromoBanner/tests/PromoBanner.unit.test.js +549 -0
  479. package/src/components/PromotionCard/PromotionCard.tsx +12 -13
  480. package/src/components/PromotionCard/styles/mixins.scss +2 -1
  481. package/src/components/PromotionCard/tests/PromotionCard.conformance.test.js +566 -0
  482. package/src/components/PromotionCard/tests/PromotionCard.unit.test.js +438 -0
  483. package/src/components/Section/Section.tsx +20 -10
  484. package/src/components/Section/styles/config.scss +18 -16
  485. package/src/components/Section/styles/mixins.scss +16 -13
  486. package/src/components/Section/styles/style.scss +1 -0
  487. package/src/components/Section/tests/Section.conformance.test.js +23 -12
  488. package/src/components/Section/tests/Section.unit.test.js +53 -32
  489. package/src/components/SocialButton/SocialButton.tsx +67 -0
  490. package/src/components/SocialButton/index.ts +1 -0
  491. package/src/components/SocialButton/styles/config.scss +172 -0
  492. package/src/components/SocialButton/styles/mixins.scss +42 -0
  493. package/src/components/SocialButton/styles/style.scss +16 -0
  494. package/src/components/SocialButton/tests/SocialButton.unit.test.js +162 -0
  495. package/src/components/Stepbar/Stepbar.tsx +0 -5
  496. package/src/components/Stepbar/styles/mixins.scss +1 -1
  497. package/src/components/Table/Row.tsx +9 -3
  498. package/src/components/Table/Table.tsx +11 -6
  499. package/src/components/Table/TableContext.ts +1 -0
  500. package/src/components/Table/docsData.ts +25 -0
  501. package/src/components/Table/styles/mixins.scss +41 -5
  502. package/src/components/Table/styles/style.scss +6 -0
  503. package/src/components/Table/tests/Table.conformance.test.js +5 -1
  504. package/src/components/Table/tests/Table.unit.test.js +0 -31
  505. package/src/components/Table/types.ts +1 -0
  506. package/src/components/Tabs/Tabs.tsx +0 -5
  507. package/src/components/Tabs/styles/mixins.scss +1 -1
  508. package/src/components/Tabs/tests/Tabs.unit.test.js +0 -8
  509. package/src/components/Tag/Tag.tsx +0 -4
  510. package/src/components/Tag/styles/config.scss +19 -23
  511. package/src/components/Tag/styles/style.scss +33 -0
  512. package/src/components/Tile/CHANGELOG.md +15 -1
  513. package/src/components/Tile/Tile.tsx +11 -3
  514. package/src/components/Tile/styles/config.scss +0 -11
  515. package/src/components/Tile/styles/mixins.scss +1 -0
  516. package/src/components/Tile/styles/style.scss +1 -5
  517. package/src/components/Tile/tests/Tile.unit.test.js +10 -3
  518. package/src/components/Tooltip/InfoTooltip.tsx +1 -5
  519. package/src/components/Tooltip/Tooltip.tsx +1 -10
  520. package/src/components/Tooltip/tests/Tooltip.conformance.test.js +5 -1
  521. package/src/components/Tooltip/tests/Tooltip.unit.test.js +0 -29
  522. package/src/components/index.ts +9 -4
  523. package/src/styles/base/globals-forms.scss +8 -0
  524. package/src/styles/base/globals.scss +26 -22
  525. package/src/styles/base/styleguide.scss +22 -17
  526. package/src/styles/export/base.js +1 -1
  527. package/src/styles/export/color.js +102 -20
  528. package/src/styles/export/color.scss +10 -20
  529. package/src/styles/shame.scss +1 -0
  530. package/src/styles/tokens/color-vars.scss +39 -0
  531. package/src/styles/tokens/color.scss +14 -14
  532. package/src/styles/tokens/tag-colors.scss +20 -0
  533. package/src/styles/typography/config.scss +83 -37
  534. package/src/styles/typography/mixins.scss +29 -15
  535. package/src/styles/typography/style.scss +6 -3
  536. package/src/styles/utilities/border.scss +1 -1
  537. package/src/styles/utilities/color.scss +99 -20
  538. package/src/styles/utilities/horizontal-scroll.scss +1 -1
  539. package/src/styles/utilities/index.scss +1 -0
  540. package/src/styles/utilities/layout.scss +27 -0
  541. package/src/styles/utilities/ordering.scss +44 -0
  542. package/src/styles/utilities/text.scss +44 -2
  543. package/src/styles/utilities/visibility.scss +2 -4
  544. package/build/components/Accordion/index.js +0 -16
  545. package/build/components/Accordion/index.js.map +0 -1
  546. package/build/components/Accordion/tsconfig.tsbuildinfo +0 -1
  547. package/build/components/Alert/index.js +0 -16
  548. package/build/components/Alert/index.js.map +0 -1
  549. package/build/components/Alert/tsconfig.tsbuildinfo +0 -1
  550. package/build/components/AnchorNavigation/index.js +0 -16
  551. package/build/components/AnchorNavigation/index.js.map +0 -1
  552. package/build/components/AnchorNavigation/tsconfig.tsbuildinfo +0 -1
  553. package/build/components/Bar/index.js +0 -16
  554. package/build/components/Bar/index.js.map +0 -1
  555. package/build/components/Bar/tsconfig.tsbuildinfo +0 -1
  556. package/build/components/BlockAction/index.js +0 -16
  557. package/build/components/BlockAction/index.js.map +0 -1
  558. package/build/components/BlockAction/tsconfig.tsbuildinfo +0 -1
  559. package/build/components/BodyBanner/index.js +0 -16
  560. package/build/components/BodyBanner/index.js.map +0 -1
  561. package/build/components/BodyBanner/tsconfig.tsbuildinfo +0 -1
  562. package/build/components/Breadcrumbs/index.js +0 -16
  563. package/build/components/Breadcrumbs/index.js.map +0 -1
  564. package/build/components/Breadcrumbs/tsconfig.tsbuildinfo +0 -1
  565. package/build/components/Button/index.js +0 -16
  566. package/build/components/Button/index.js.map +0 -1
  567. package/build/components/Button/tsconfig.tsbuildinfo +0 -1
  568. package/build/components/Buttons/index.js +0 -16
  569. package/build/components/Buttons/index.js.map +0 -1
  570. package/build/components/Buttons/tsconfig.tsbuildinfo +0 -1
  571. package/build/components/Card/index.js +0 -16
  572. package/build/components/Card/index.js.map +0 -1
  573. package/build/components/Card/tsconfig.tsbuildinfo +0 -1
  574. package/build/components/Carousel/index.js +0 -16
  575. package/build/components/Carousel/index.js.map +0 -1
  576. package/build/components/Carousel/tsconfig.tsbuildinfo +0 -1
  577. package/build/components/CarouselPromotions/index.js +0 -16
  578. package/build/components/CarouselPromotions/index.js.map +0 -1
  579. package/build/components/CarouselPromotions/tsconfig.tsbuildinfo +0 -1
  580. package/build/components/CartTable/index.js +0 -16
  581. package/build/components/CartTable/index.js.map +0 -1
  582. package/build/components/CartTable/tsconfig.tsbuildinfo +0 -1
  583. package/build/components/Code/index.js +0 -11
  584. package/build/components/Code/index.js.map +0 -1
  585. package/build/components/Code/tsconfig.tsbuildinfo +0 -1
  586. package/build/components/Container/index.js +0 -16
  587. package/build/components/Container/index.js.map +0 -1
  588. package/build/components/Container/tsconfig.tsbuildinfo +0 -1
  589. package/build/components/Controls/index.js +0 -16
  590. package/build/components/Controls/index.js.map +0 -1
  591. package/build/components/Controls/tsconfig.tsbuildinfo +0 -1
  592. package/build/components/Cover/index.js +0 -16
  593. package/build/components/Cover/index.js.map +0 -1
  594. package/build/components/Cover/tsconfig.tsbuildinfo +0 -1
  595. package/build/components/Divider/index.js +0 -16
  596. package/build/components/Divider/index.js.map +0 -1
  597. package/build/components/Divider/tsconfig.tsbuildinfo +0 -1
  598. package/build/components/DocumentationSidebar/index.js +0 -16
  599. package/build/components/DocumentationSidebar/index.js.map +0 -1
  600. package/build/components/DocumentationSidebar/tsconfig.tsbuildinfo +0 -1
  601. package/build/components/Dropdown/index.js +0 -16
  602. package/build/components/Dropdown/index.js.map +0 -1
  603. package/build/components/Dropdown/tsconfig.tsbuildinfo +0 -1
  604. package/build/components/Expander/index.js +0 -16
  605. package/build/components/Expander/index.js.map +0 -1
  606. package/build/components/Expander/tsconfig.tsbuildinfo +0 -1
  607. package/build/components/FeatureAccordion/index.js +0 -16
  608. package/build/components/FeatureAccordion/index.js.map +0 -1
  609. package/build/components/FeatureAccordion/tsconfig.tsbuildinfo +0 -1
  610. package/build/components/Footer/index.js +0 -16
  611. package/build/components/Footer/index.js.map +0 -1
  612. package/build/components/Footer/tsconfig.tsbuildinfo +0 -1
  613. package/build/components/Forms/index.js +0 -20
  614. package/build/components/Forms/index.js.map +0 -1
  615. package/build/components/Forms/style.css +0 -2
  616. package/build/components/Forms/style.css.map +0 -1
  617. package/build/components/Forms/tsconfig.tsbuildinfo +0 -1
  618. package/build/components/Gauge/index.js +0 -16
  619. package/build/components/Gauge/index.js.map +0 -1
  620. package/build/components/Gauge/tsconfig.tsbuildinfo +0 -1
  621. package/build/components/Grid/index.js +0 -16
  622. package/build/components/Grid/index.js.map +0 -1
  623. package/build/components/Grid/tsconfig.tsbuildinfo +0 -1
  624. package/build/components/Hero/index.js +0 -16
  625. package/build/components/Hero/index.js.map +0 -1
  626. package/build/components/Hero/tsconfig.tsbuildinfo +0 -1
  627. package/build/components/Icon/index.js +0 -11
  628. package/build/components/Icon/index.js.map +0 -1
  629. package/build/components/Icon/tsconfig.tsbuildinfo +0 -1
  630. package/build/components/IconList/index.js +0 -16
  631. package/build/components/IconList/index.js.map +0 -1
  632. package/build/components/IconList/tsconfig.tsbuildinfo +0 -1
  633. package/build/components/Image/index.js +0 -16
  634. package/build/components/Image/index.js.map +0 -1
  635. package/build/components/Image/tsconfig.tsbuildinfo +0 -1
  636. package/build/components/Link/index.js +0 -7
  637. package/build/components/Link/index.js.map +0 -1
  638. package/build/components/Link/tsconfig.tsbuildinfo +0 -1
  639. package/build/components/List/index.js +0 -16
  640. package/build/components/List/index.js.map +0 -1
  641. package/build/components/List/tsconfig.tsbuildinfo +0 -1
  642. package/build/components/Loader/index.js +0 -16
  643. package/build/components/Loader/index.js.map +0 -1
  644. package/build/components/Loader/tsconfig.tsbuildinfo +0 -1
  645. package/build/components/Megamenu/index.js +0 -16
  646. package/build/components/Megamenu/index.js.map +0 -1
  647. package/build/components/Megamenu/tsconfig.tsbuildinfo +0 -1
  648. package/build/components/Modal/index.js +0 -20
  649. package/build/components/Modal/index.js.map +0 -1
  650. package/build/components/Modal/tsconfig.tsbuildinfo +0 -1
  651. package/build/components/Pagination/index.js +0 -16
  652. package/build/components/Pagination/index.js.map +0 -1
  653. package/build/components/Pagination/tsconfig.tsbuildinfo +0 -1
  654. package/build/components/Pill/index.js +0 -16
  655. package/build/components/Pill/index.js.map +0 -1
  656. package/build/components/Pill/tsconfig.tsbuildinfo +0 -1
  657. package/build/components/Preview/index.js +0 -77
  658. package/build/components/Preview/index.js.map +0 -1
  659. package/build/components/Preview/tsconfig.tsbuildinfo +0 -1
  660. package/build/components/Progress/index.js +0 -16
  661. package/build/components/Progress/index.js.map +0 -1
  662. package/build/components/Progress/tsconfig.tsbuildinfo +0 -1
  663. package/build/components/PromoBanner/index.js +0 -16
  664. package/build/components/PromoBanner/index.js.map +0 -1
  665. package/build/components/PromoBanner/tsconfig.tsbuildinfo +0 -1
  666. package/build/components/PromotionCard/index.js +0 -16
  667. package/build/components/PromotionCard/index.js.map +0 -1
  668. package/build/components/PromotionCard/tsconfig.tsbuildinfo +0 -1
  669. package/build/components/Section/index.js +0 -16
  670. package/build/components/Section/index.js.map +0 -1
  671. package/build/components/Section/tsconfig.tsbuildinfo +0 -1
  672. package/build/components/Skeleton/index.js +0 -16
  673. package/build/components/Skeleton/index.js.map +0 -1
  674. package/build/components/Skeleton/tsconfig.tsbuildinfo +0 -1
  675. package/build/components/SkipLink/index.js +0 -16
  676. package/build/components/SkipLink/index.js.map +0 -1
  677. package/build/components/SkipLink/tsconfig.tsbuildinfo +0 -1
  678. package/build/components/Stepbar/index.js +0 -16
  679. package/build/components/Stepbar/index.js.map +0 -1
  680. package/build/components/Stepbar/tsconfig.tsbuildinfo +0 -1
  681. package/build/components/Sticker/index.js +0 -16
  682. package/build/components/Sticker/index.js.map +0 -1
  683. package/build/components/Sticker/tsconfig.tsbuildinfo +0 -1
  684. package/build/components/Table/index.js +0 -16
  685. package/build/components/Table/index.js.map +0 -1
  686. package/build/components/Table/tsconfig.tsbuildinfo +0 -1
  687. package/build/components/Tabs/index.js +0 -16
  688. package/build/components/Tabs/index.js.map +0 -1
  689. package/build/components/Tabs/tsconfig.tsbuildinfo +0 -1
  690. package/build/components/Tag/index.js +0 -16
  691. package/build/components/Tag/index.js.map +0 -1
  692. package/build/components/Tag/tsconfig.tsbuildinfo +0 -1
  693. package/build/components/Testimonial/index.js +0 -16
  694. package/build/components/Testimonial/index.js.map +0 -1
  695. package/build/components/Testimonial/tsconfig.tsbuildinfo +0 -1
  696. package/build/components/Tile/index.js +0 -16
  697. package/build/components/Tile/index.js.map +0 -1
  698. package/build/components/Tile/tsconfig.tsbuildinfo +0 -1
  699. package/build/components/Tooltip/index.js +0 -16
  700. package/build/components/Tooltip/index.js.map +0 -1
  701. package/build/components/Tooltip/tsconfig.tsbuildinfo +0 -1
  702. package/build/components/index.css +0 -3
  703. package/build/components/index.css.map +0 -1
  704. package/build/components/static.css +0 -2
  705. package/build/components/static.css.map +0 -1
  706. package/build/components/static.js +0 -10
  707. package/build/components/static.js.map +0 -1
  708. package/build/components/types/src/components/Hero/HeroPlayground.d.ts +0 -2
  709. package/build/components/types/src/components/Modal/ModalProductBody.d.ts +0 -10
  710. package/build/lib/after-components.css +0 -2
  711. package/build/lib/after-components.css.map +0 -1
  712. package/build/lib/before-components.css +0 -3
  713. package/build/lib/before-components.css.map +0 -1
  714. package/build/lib/scripts.css +0 -2
  715. package/build/lib/scripts.css.map +0 -1
  716. package/src/components/Accordion/Accordion.mdx +0 -240
  717. package/src/components/Alert/Alert.mdx +0 -141
  718. package/src/components/Bar/Bar.mdx +0 -203
  719. package/src/components/BlockAction/BlockAction.mdx +0 -244
  720. package/src/components/BodyBanner/BodyBanner.mdx +0 -268
  721. package/src/components/Breadcrumbs/Breadcrumbs.mdx +0 -84
  722. package/src/components/Button/Button.mdx +0 -273
  723. package/src/components/Buttons/Buttons.mdx +0 -39
  724. package/src/components/Card/Card.mdx +0 -334
  725. package/src/components/Carousel/Carousel.mdx +0 -159
  726. package/src/components/CarouselPromotions/CarouselPromotions.mdx +0 -246
  727. package/src/components/CartTable/CartTable.mdx +0 -129
  728. package/src/components/Container/Container.mdx +0 -73
  729. package/src/components/Controls/Controls.mdx +0 -469
  730. package/src/components/Cover/Cover.mdx +0 -87
  731. package/src/components/Divider/Divider.mdx +0 -65
  732. package/src/components/Dropdown/Dropdown.mdx +0 -260
  733. package/src/components/Expander/Expander.mdx +0 -153
  734. package/src/components/FeatureAccordion/FeatureAccordion.mdx +0 -33
  735. package/src/components/Forms/Autocomplete/Autocomplete.mdx +0 -198
  736. package/src/components/Forms/Checkbox/Checkbox.mdx +0 -139
  737. package/src/components/Forms/DatePicker/DatePicker.mdx +0 -149
  738. package/src/components/Forms/Field/Field.mdx +0 -383
  739. package/src/components/Forms/Fieldset/Fieldset.mdx +0 -178
  740. package/src/components/Forms/File/File.mdx +0 -88
  741. package/src/components/Forms/FormTooltip.mdx +0 -51
  742. package/src/components/Forms/Forms.mdx +0 -48
  743. package/src/components/Forms/Group/Group.mdx +0 -146
  744. package/src/components/Forms/Hint/Hint.mdx +0 -40
  745. package/src/components/Forms/InputStepper/InputStepper.mdx +0 -147
  746. package/src/components/Forms/Label/Label.mdx +0 -95
  747. package/src/components/Forms/Message/Message.mdx +0 -40
  748. package/src/components/Forms/Radio/Radio.mdx +0 -98
  749. package/src/components/Forms/RangeSlider/RangeSlider.mdx +0 -304
  750. package/src/components/Forms/Select/Select.mdx +0 -106
  751. package/src/components/Forms/TextArea/TextArea.mdx +0 -109
  752. package/src/components/Forms/TextInput/TextInput.mdx +0 -153
  753. package/src/components/Gauge/Gauge.mdx +0 -35
  754. package/src/components/Grid/Grid.mdx +0 -320
  755. package/src/components/Hero/Hero.mdx +0 -168
  756. package/src/components/Hero/HeroPlayground.tsx +0 -369
  757. package/src/components/Icon/Icon.mdx +0 -172
  758. package/src/components/IconList/IconList.mdx +0 -53
  759. package/src/components/Image/Image.mdx +0 -175
  760. package/src/components/Link/Link.mdx +0 -238
  761. package/src/components/List/List.mdx +0 -216
  762. package/src/components/Loader/Loader.mdx +0 -148
  763. package/src/components/Modal/Modal.mdx +0 -565
  764. package/src/components/Modal/ModalProductBody.tsx +0 -52
  765. package/src/components/Pagination/Pagination.mdx +0 -45
  766. package/src/components/Pagination/tests/utils.js +0 -12
  767. package/src/components/Pill/Pill.mdx +0 -41
  768. package/src/components/Progress/Progress.mdx +0 -119
  769. package/src/components/PromotionCard/PromotionCard.mdx +0 -191
  770. package/src/components/Section/Section.mdx +0 -397
  771. package/src/components/Skeleton/Skeleton.mdx +0 -90
  772. package/src/components/SkipLink/SkipLink.mdx +0 -23
  773. package/src/components/Stepbar/Stepbar.mdx +0 -137
  774. package/src/components/Sticker/Sticker.mdx +0 -50
  775. package/src/components/Table/Table.mdx +0 -199
  776. package/src/components/Tabs/Tabs.mdx +0 -373
  777. package/src/components/Tag/Tag.mdx +0 -52
  778. package/src/components/Testimonial/Testimonial.mdx +0 -41
  779. package/src/components/Tile/Tile.mdx +0 -163
  780. package/src/components/Tooltip/Tooltip.mdx +0 -227
  781. package/src/styles/after-components.scss +0 -2
  782. package/src/styles/before-components.scss +0 -18
  783. /package/build/lib/{after-components.js → base.js} +0 -0
  784. /package/build/lib/{before-components.js → utilities.js} +0 -0
@@ -0,0 +1,783 @@
1
+ import React from "react";
2
+ import { render, screen } from "@testing-library/react";
3
+ import { axe } from "jest-axe";
4
+ import userEvent from "@testing-library/user-event";
5
+
6
+ import { PromoBanner } from "../";
7
+
8
+ /**
9
+ * PromoBanner Component Conformance Tests
10
+ *
11
+ * These tests verify the complete functionality of the PromoBanner component including:
12
+ *
13
+ * 🎯 HTML VALIDITY
14
+ * - HTML validity with various prop combinations
15
+ * - Semantic HTML structure
16
+ * - Complex JSX structure validation
17
+ * - Grid layout structure
18
+ * - Image element validation
19
+ *
20
+ * ♿ ACCESSIBILITY (A11y)
21
+ * - WCAG 2.1 compliance using jest-axe
22
+ * - Proper use of semantic HTML elements
23
+ * - Image alt attributes
24
+ * - Interactive elements (buttons, links)
25
+ * - Focus management and keyboard navigation
26
+ * - Screen reader compatibility
27
+ * - Color contrast compliance
28
+ * - Grid layout accessibility
29
+ *
30
+ * 🎨 FUNCTIONAL BEHAVIOR
31
+ * - Correct application of CSS classes (promo-banner)
32
+ * - Color scheme variants: light, dark
33
+ * - Layout variants: default (horizontal), vertical
34
+ * - Image alignment: top, bottom
35
+ * - Image bleeding effect
36
+ * - Full width image functionality
37
+ * - Custom className merging
38
+ * - Grid and GridCol integration
39
+ * - Image component integration
40
+ *
41
+ * 📝 CONTENT RENDERING
42
+ * - Text children rendering
43
+ * - Complex JSX children
44
+ * - Multiple children
45
+ * - Empty content handling
46
+ * - Image rendering with various props
47
+ *
48
+ * ⚠️ EDGE CASES
49
+ * - Null, undefined, boolean children
50
+ * - Number and array children
51
+ * - Invalid props graceful handling
52
+ * - Empty image URLs
53
+ * - Boundary usage cases
54
+ *
55
+ * 🔗 INTEGRATION TESTS
56
+ * - Working with interactive elements
57
+ * - Grid component integration
58
+ * - Image component integration
59
+ * - Event handling
60
+ * - Focus management
61
+ * - Responsive behavior
62
+ */
63
+
64
+ describe("PromoBanner Component Conformance Tests", () => {
65
+ describe("HTML Validity", () => {
66
+ it("is valid HTML with default props", () => {
67
+ const { container } = render(<PromoBanner />);
68
+ expect(container).toHTMLValidate();
69
+ });
70
+
71
+ it("is valid HTML with all props", () => {
72
+ const { container } = render(
73
+ <PromoBanner
74
+ className="test-class"
75
+ image="https://example.com/test.jpg"
76
+ alignImage="top"
77
+ bleedImage
78
+ imageFullWidth
79
+ variant="vertical"
80
+ itemClassName="custom-item"
81
+ imageClassName="custom-image"
82
+ data-testid="test-promo-banner"
83
+ >
84
+ <h2>Promotion Title</h2>
85
+ <p>Promotion description with detailed content</p>
86
+ <button type="button">Call to Action</button>
87
+ </PromoBanner>,
88
+ );
89
+ expect(container).toHTMLValidate();
90
+ });
91
+
92
+ it("is valid HTML with complex content structure", () => {
93
+ const { container } = render(
94
+ <PromoBanner image="https://example.com/banner.jpg">
95
+ <header>
96
+ <h1>Special Offer</h1>
97
+ <p className="subtitle">Limited time promotion</p>
98
+ </header>
99
+ <main>
100
+ <section>
101
+ <h2>Details</h2>
102
+ <p>
103
+ Comprehensive promotion details with <strong>emphasis</strong>{" "}
104
+ and <em>italic text</em>.
105
+ </p>
106
+ <ul>
107
+ <li>Feature 1</li>
108
+ <li>Feature 2</li>
109
+ <li>Feature 3</li>
110
+ </ul>
111
+ <div>
112
+ <button type="button">Primary Action</button>
113
+ <button type="button">Secondary Action</button>
114
+ </div>
115
+ </section>
116
+ </main>
117
+ </PromoBanner>,
118
+ );
119
+ expect(container).toHTMLValidate();
120
+ });
121
+
122
+ it("is valid HTML with Grid layout structure", () => {
123
+ const { container } = render(
124
+ <PromoBanner>
125
+ <div className="content-wrapper">
126
+ <h2>Grid Layout Content</h2>
127
+ <p>Content rendered within Grid component structure</p>
128
+ </div>
129
+ </PromoBanner>,
130
+ );
131
+ expect(container).toHTMLValidate();
132
+ });
133
+
134
+ it("is valid HTML with Image component", () => {
135
+ const { container } = render(
136
+ <PromoBanner image="https://example.com/test.jpg" alignImage="bottom">
137
+ <h2>Content with Image</h2>
138
+ <p>Banner with properly structured Image component</p>
139
+ </PromoBanner>,
140
+ );
141
+ expect(container).toHTMLValidate();
142
+ });
143
+
144
+ it("is valid HTML with vertical variant", () => {
145
+ const { container } = render(
146
+ <PromoBanner
147
+ variant="vertical"
148
+ image="https://example.com/vertical.jpg"
149
+ >
150
+ <h2>Vertical Layout</h2>
151
+ <p>Content in vertical layout structure</p>
152
+ </PromoBanner>,
153
+ );
154
+ expect(container).toHTMLValidate();
155
+ });
156
+
157
+ it("is valid HTML with bleeding image", () => {
158
+ const { container } = render(
159
+ <PromoBanner image="https://example.com/bleed.jpg" bleedImage>
160
+ <h2>Bleeding Image</h2>
161
+ <p>Content with bleeding image effect</p>
162
+ </PromoBanner>,
163
+ );
164
+ expect(container).toHTMLValidate();
165
+ });
166
+
167
+ it("is valid HTML with full width image", () => {
168
+ const { container } = render(
169
+ <PromoBanner
170
+ variant="vertical"
171
+ image="https://example.com/fullwidth.jpg"
172
+ imageFullWidth
173
+ >
174
+ <h2>Full Width Image</h2>
175
+ <p>Content with full width image</p>
176
+ </PromoBanner>,
177
+ );
178
+ expect(container).toHTMLValidate();
179
+ });
180
+
181
+ it("is valid HTML with reverse variant", () => {
182
+ const { container } = render(
183
+ <PromoBanner variant="reverse" image="https://example.com/reverse.jpg">
184
+ <h2>Reverse Layout</h2>
185
+ <p>Content with reverse layout</p>
186
+ </PromoBanner>,
187
+ );
188
+ expect(container).toHTMLValidate();
189
+ });
190
+ });
191
+
192
+ describe("Accessibility (A11y)", () => {
193
+ it("is accessible with default props", async () => {
194
+ const { container } = render(
195
+ <PromoBanner>
196
+ <h2>Accessible Content</h2>
197
+ <p>This content is accessible by default</p>
198
+ </PromoBanner>,
199
+ );
200
+ expect(await axe(container)).toHaveNoViolations();
201
+ });
202
+
203
+ it("is accessible with all props", async () => {
204
+ const { container } = render(
205
+ <PromoBanner
206
+ image="https://example.com/test.jpg"
207
+ alignImage="top"
208
+ bleedImage
209
+ variant="vertical"
210
+ >
211
+ <h2>Accessible Banner</h2>
212
+ <p>Banner content with all accessibility features</p>
213
+ <button type="button">Accessible Button</button>
214
+ </PromoBanner>,
215
+ );
216
+ expect(await axe(container)).toHaveNoViolations();
217
+ });
218
+
219
+ it("is accessible with complex interactive content", async () => {
220
+ const { container } = render(
221
+ <PromoBanner image="https://example.com/interactive.jpg">
222
+ <h1>Interactive Promotion</h1>
223
+ <p>
224
+ Promotion with multiple interactive elements and proper
225
+ accessibility
226
+ </p>
227
+ <form>
228
+ <label htmlFor="email">Email Address</label>
229
+ <input type="email" id="email" name="email" required />
230
+ <button type="submit">Subscribe</button>
231
+ </form>
232
+ <nav aria-label="Promotion navigation">
233
+ <ul>
234
+ <li>
235
+ <a href="#details">Details</a>
236
+ </li>
237
+ <li>
238
+ <a href="#terms">Terms</a>
239
+ </li>
240
+ <li>
241
+ <a href="#contact">Contact</a>
242
+ </li>
243
+ </ul>
244
+ </nav>
245
+ </PromoBanner>,
246
+ );
247
+ expect(await axe(container)).toHaveNoViolations();
248
+ });
249
+
250
+ it("has proper image alt attribute", async () => {
251
+ const { container } = render(
252
+ <PromoBanner image="https://example.com/promo.jpg">
253
+ <h2>Banner with Image</h2>
254
+ </PromoBanner>,
255
+ );
256
+
257
+ const image = screen.getByRole("img");
258
+ expect(image).toHaveAttribute("alt", "Obrázok");
259
+ expect(await axe(container)).toHaveNoViolations();
260
+ });
261
+
262
+ it("is accessible with heading hierarchy", async () => {
263
+ const { container } = render(
264
+ <PromoBanner>
265
+ <h1>Main Banner Title</h1>
266
+ <h2>Subtitle</h2>
267
+ <h3>Section Title</h3>
268
+ <p>Content with proper heading hierarchy</p>
269
+ </PromoBanner>,
270
+ );
271
+ expect(await axe(container)).toHaveNoViolations();
272
+ });
273
+
274
+ it("is accessible with form elements", async () => {
275
+ const { container } = render(
276
+ <PromoBanner>
277
+ <h2>Newsletter Signup</h2>
278
+ <form>
279
+ <fieldset>
280
+ <legend>Contact Information</legend>
281
+ <div>
282
+ <label htmlFor="promo-name">Name</label>
283
+ <input type="text" id="promo-name" name="name" required />
284
+ </div>
285
+ <div>
286
+ <label htmlFor="promo-email">Email</label>
287
+ <input type="email" id="promo-email" name="email" required />
288
+ </div>
289
+ <button type="submit">Submit</button>
290
+ </fieldset>
291
+ </form>
292
+ </PromoBanner>,
293
+ );
294
+ expect(await axe(container)).toHaveNoViolations();
295
+ });
296
+
297
+ it("is accessible with ARIA attributes", async () => {
298
+ const { container } = render(
299
+ <PromoBanner>
300
+ <div role="banner" aria-labelledby="promo-title">
301
+ <h2 id="promo-title">Special Promotion</h2>
302
+ <p aria-describedby="promo-details">Limited time offer</p>
303
+ <div id="promo-details">
304
+ Valid until end of month. Terms and conditions apply.
305
+ </div>
306
+ <button
307
+ type="button"
308
+ aria-expanded="false"
309
+ aria-controls="promo-details"
310
+ >
311
+ Learn More
312
+ </button>
313
+ </div>
314
+ </PromoBanner>,
315
+ );
316
+ expect(await axe(container)).toHaveNoViolations();
317
+ });
318
+
319
+ it("is accessible with reverse variant", async () => {
320
+ const { container } = render(
321
+ <PromoBanner variant="reverse" image="https://example.com/test.jpg">
322
+ <h2>Accessible Reverse Layout</h2>
323
+ <p>This content is accessible in reverse layout</p>
324
+ <button type="button">Action Button</button>
325
+ </PromoBanner>,
326
+ );
327
+ expect(await axe(container)).toHaveNoViolations();
328
+ });
329
+ });
330
+
331
+ describe("Functional Behavior", () => {
332
+ it("applies correct CSS classes for default state", () => {
333
+ const { container } = render(<PromoBanner>Content</PromoBanner>);
334
+
335
+ const banner = container.querySelector(".promo-banner");
336
+ const item = container.querySelector(".promo-banner__item");
337
+
338
+ expect(banner).toHaveClass("promo-banner");
339
+ expect(item).toHaveClass("promo-banner__item");
340
+ });
341
+
342
+ it("applies variant classes correctly", () => {
343
+ const { container: horizontalContainer } = render(
344
+ <PromoBanner>Horizontal Content</PromoBanner>,
345
+ );
346
+ const { container: verticalContainer } = render(
347
+ <PromoBanner variant="vertical">Vertical Content</PromoBanner>,
348
+ );
349
+ const { container: reverseContainer } = render(
350
+ <PromoBanner variant="reverse" image="test.jpg">
351
+ Reverse Content
352
+ </PromoBanner>,
353
+ );
354
+
355
+ const horizontalItem = horizontalContainer.querySelector(
356
+ ".promo-banner__item",
357
+ );
358
+ const verticalItem = verticalContainer.querySelector(
359
+ ".promo-banner__item",
360
+ );
361
+ const reverseItem = reverseContainer.querySelector(".promo-banner__item");
362
+
363
+ expect(horizontalItem).not.toHaveClass(
364
+ "align-items-center",
365
+ "align-center",
366
+ "align-self-center",
367
+ );
368
+ expect(verticalItem).toHaveClass(
369
+ "align-items-center",
370
+ "align-center",
371
+ "align-self-center",
372
+ );
373
+ expect(reverseItem).not.toHaveClass(
374
+ "align-items-center",
375
+ "align-center",
376
+ "align-self-center",
377
+ );
378
+ });
379
+
380
+ it("applies image-related classes correctly", () => {
381
+ const { container } = render(
382
+ <PromoBanner
383
+ image="test.jpg"
384
+ alignImage="top"
385
+ bleedImage
386
+ imageFullWidth
387
+ >
388
+ Content
389
+ </PromoBanner>,
390
+ );
391
+
392
+ const imageContainer = container.querySelector(".promo-banner__image");
393
+ const image = screen.getByRole("img");
394
+
395
+ expect(imageContainer).toHaveClass(
396
+ "promo-banner__image",
397
+ "promo-banner__image--bleed-right",
398
+ "align-self-top",
399
+ );
400
+ expect(image).toHaveClass("mb-none", "fullwidth");
401
+ });
402
+
403
+ it("merges custom classes correctly", () => {
404
+ const { container } = render(
405
+ <PromoBanner
406
+ className="custom-banner"
407
+ itemClassName="custom-item"
408
+ imageClassName="custom-image"
409
+ image="test.jpg"
410
+ >
411
+ Content
412
+ </PromoBanner>,
413
+ );
414
+
415
+ const banner = container.querySelector(".promo-banner");
416
+ const item = container.querySelector(".promo-banner__item");
417
+ const imageContainer = container.querySelector(".promo-banner__image");
418
+
419
+ expect(banner).toHaveClass("promo-banner", "custom-banner");
420
+ expect(item).toHaveClass("promo-banner__item", "custom-item");
421
+ expect(imageContainer).toHaveClass("promo-banner__image", "custom-image");
422
+ });
423
+
424
+ it("handles Grid component integration correctly", () => {
425
+ const { container } = render(<PromoBanner>Grid Content</PromoBanner>);
426
+
427
+ const grid = container.querySelector(".grid");
428
+ const gridCols = container.querySelectorAll(".grid__col");
429
+
430
+ expect(grid).toBeInTheDocument();
431
+ expect(gridCols).toHaveLength(1); // Only content column when no image
432
+ });
433
+
434
+ it("handles GridCol sizes correctly", () => {
435
+ const { container: noImageContainer } = render(
436
+ <PromoBanner>No image content</PromoBanner>,
437
+ );
438
+ const { container: withImageContainer } = render(
439
+ <PromoBanner image="test.jpg">With image content</PromoBanner>,
440
+ );
441
+ const { container: verticalContainer } = render(
442
+ <PromoBanner variant="vertical">Vertical content</PromoBanner>,
443
+ );
444
+
445
+ const noImageCol = noImageContainer.querySelector(".grid__col");
446
+ const withImageContentCol = withImageContainer
447
+ .querySelector(".promo-banner__item")
448
+ .closest(".grid__col");
449
+ const verticalCol = verticalContainer.querySelector(".grid__col");
450
+
451
+ expect(noImageCol).toHaveClass("grid__col");
452
+ expect(withImageContentCol).toHaveClass("grid__col");
453
+ expect(verticalCol).toHaveClass("grid__col");
454
+ });
455
+ });
456
+
457
+ describe("Content Rendering", () => {
458
+ it("renders text content correctly", () => {
459
+ render(<PromoBanner>Simple text content</PromoBanner>);
460
+ expect(screen.getByText("Simple text content")).toBeInTheDocument();
461
+ });
462
+
463
+ it("renders complex JSX content correctly", () => {
464
+ render(
465
+ <PromoBanner>
466
+ <div data-testid="complex-wrapper">
467
+ <h1>Complex Title</h1>
468
+ <p>
469
+ Complex description with <strong>bold</strong> and <em>italic</em>{" "}
470
+ text
471
+ </p>
472
+ <ul>
473
+ <li>List item 1</li>
474
+ <li>List item 2</li>
475
+ </ul>
476
+ <button type="button">Action Button</button>
477
+ </div>
478
+ </PromoBanner>,
479
+ );
480
+
481
+ expect(screen.getByTestId("complex-wrapper")).toBeInTheDocument();
482
+ expect(screen.getByRole("heading", { level: 1 })).toHaveTextContent(
483
+ "Complex Title",
484
+ );
485
+ expect(screen.getByRole("button")).toHaveTextContent("Action Button");
486
+ expect(screen.getByRole("list")).toBeInTheDocument();
487
+ });
488
+
489
+ it("renders multiple children correctly", () => {
490
+ render(
491
+ <PromoBanner>
492
+ <h2>Title</h2>
493
+ <p>Description</p>
494
+ <div>Additional content</div>
495
+ <button type="button">Button</button>
496
+ </PromoBanner>,
497
+ );
498
+
499
+ expect(screen.getByRole("heading")).toBeInTheDocument();
500
+ expect(screen.getByText("Description")).toBeInTheDocument();
501
+ expect(screen.getByText("Additional content")).toBeInTheDocument();
502
+ expect(screen.getByRole("button")).toBeInTheDocument();
503
+ });
504
+
505
+ it("renders image with correct attributes", () => {
506
+ render(
507
+ <PromoBanner image="https://example.com/banner.jpg" imageFullWidth>
508
+ Content with image
509
+ </PromoBanner>,
510
+ );
511
+
512
+ const image = screen.getByRole("img");
513
+ expect(image).toHaveAttribute("src", "https://example.com/banner.jpg");
514
+ expect(image).toHaveAttribute("alt", "Obrázok");
515
+ expect(image).toHaveClass("mb-none", "fullwidth");
516
+ });
517
+
518
+ it("renders content without image correctly", () => {
519
+ render(<PromoBanner>Content without image</PromoBanner>);
520
+
521
+ expect(screen.getByText("Content without image")).toBeInTheDocument();
522
+ expect(screen.queryByRole("img")).not.toBeInTheDocument();
523
+ });
524
+
525
+ it("handles dynamic content updates", () => {
526
+ const { rerender } = render(<PromoBanner>Initial content</PromoBanner>);
527
+ expect(screen.getByText("Initial content")).toBeInTheDocument();
528
+
529
+ rerender(<PromoBanner>Updated content</PromoBanner>);
530
+ expect(screen.getByText("Updated content")).toBeInTheDocument();
531
+ expect(screen.queryByText("Initial content")).not.toBeInTheDocument();
532
+ });
533
+ });
534
+
535
+ describe("Edge Cases", () => {
536
+ it("handles null children gracefully", () => {
537
+ const { container } = render(<PromoBanner>{null}</PromoBanner>);
538
+ const banner = container.querySelector(".promo-banner");
539
+ expect(banner).toBeInTheDocument();
540
+ });
541
+
542
+ it("handles undefined children gracefully", () => {
543
+ const { container } = render(<PromoBanner>{undefined}</PromoBanner>);
544
+ const banner = container.querySelector(".promo-banner");
545
+ expect(banner).toBeInTheDocument();
546
+ });
547
+
548
+ it("handles boolean children gracefully", () => {
549
+ const { container } = render(<PromoBanner>{true}</PromoBanner>);
550
+ const banner = container.querySelector(".promo-banner");
551
+ expect(banner).toBeInTheDocument();
552
+ });
553
+
554
+ it("handles number children", () => {
555
+ render(<PromoBanner>{42}</PromoBanner>);
556
+ expect(screen.getByText("42")).toBeInTheDocument();
557
+ });
558
+
559
+ it("handles array children", () => {
560
+ render(<PromoBanner>{["Banner 1", "Banner 2", "Banner 3"]}</PromoBanner>);
561
+ expect(screen.getByText(/Banner 1/)).toBeInTheDocument();
562
+ expect(screen.getByText(/Banner 2/)).toBeInTheDocument();
563
+ expect(screen.getByText(/Banner 3/)).toBeInTheDocument();
564
+ });
565
+
566
+ it("handles empty string children", () => {
567
+ const { container } = render(<PromoBanner>{""}</PromoBanner>);
568
+ const banner = container.querySelector(".promo-banner");
569
+ expect(banner).toBeInTheDocument();
570
+ });
571
+
572
+ it("handles invalid alignImage prop gracefully", () => {
573
+ const { container } = render(
574
+ <PromoBanner image="test.jpg" alignImage="invalid">
575
+ Content
576
+ </PromoBanner>,
577
+ );
578
+ const imageContainer = container.querySelector(".promo-banner__image");
579
+ expect(imageContainer).toHaveClass("promo-banner__image");
580
+ // Invalid align values are passed through
581
+ expect(imageContainer).toHaveClass("align-self-invalid");
582
+ });
583
+
584
+ it("handles invalid variant prop gracefully", () => {
585
+ const { container } = render(
586
+ <PromoBanner variant="invalid">Content</PromoBanner>,
587
+ );
588
+ const contentCol = container
589
+ .querySelector(".promo-banner__item")
590
+ .closest(".grid__col");
591
+ // Should use default horizontal behavior
592
+ expect(contentCol).toHaveClass("grid__col");
593
+ const item = container.querySelector(".promo-banner__item");
594
+ expect(item).not.toHaveClass(
595
+ "align-items-center",
596
+ "align-center",
597
+ "align-self-center",
598
+ );
599
+ });
600
+
601
+ it("handles empty image URL", () => {
602
+ render(<PromoBanner image="">Content with empty image</PromoBanner>);
603
+ // Empty image URL should not render an image element
604
+ expect(screen.queryByRole("img")).not.toBeInTheDocument();
605
+ });
606
+
607
+ it("handles very long content gracefully", () => {
608
+ const longContent = "Very long content ".repeat(100);
609
+ render(<PromoBanner>{longContent}</PromoBanner>);
610
+ expect(screen.getByText(/Very long content/)).toBeInTheDocument();
611
+ });
612
+
613
+ it("handles special characters in content", () => {
614
+ const specialContent =
615
+ "Content with special chars: áčďéíľňóôšťúžý @#$%^&*()";
616
+ render(<PromoBanner>{specialContent}</PromoBanner>);
617
+ expect(screen.getByText(specialContent)).toBeInTheDocument();
618
+ });
619
+ });
620
+
621
+ describe("Integration Tests", () => {
622
+ it("works with interactive elements", async () => {
623
+ const user = userEvent.setup();
624
+ const handleClick = jest.fn();
625
+
626
+ render(
627
+ <PromoBanner>
628
+ <h2>Interactive Banner</h2>
629
+ <button type="button" onClick={handleClick}>
630
+ Click me
631
+ </button>
632
+ </PromoBanner>,
633
+ );
634
+
635
+ const button = screen.getByRole("button");
636
+ await user.click(button);
637
+ expect(handleClick).toHaveBeenCalledTimes(1);
638
+ });
639
+
640
+ it("handles form submission within banner", async () => {
641
+ const user = userEvent.setup();
642
+ const handleSubmit = jest.fn((e) => e.preventDefault());
643
+
644
+ render(
645
+ <PromoBanner>
646
+ <form onSubmit={handleSubmit}>
647
+ <label htmlFor="test-input">Test Input</label>
648
+ <input type="text" id="test-input" />
649
+ <button type="submit">Submit</button>
650
+ </form>
651
+ </PromoBanner>,
652
+ );
653
+
654
+ const input = screen.getByLabelText("Test Input");
655
+ const submitButton = screen.getByRole("button", { name: "Submit" });
656
+
657
+ await user.type(input, "test value");
658
+ await user.click(submitButton);
659
+
660
+ expect(handleSubmit).toHaveBeenCalledTimes(1);
661
+ expect(input).toHaveValue("test value");
662
+ });
663
+
664
+ it("handles focus management correctly", async () => {
665
+ const user = userEvent.setup();
666
+
667
+ render(
668
+ <PromoBanner>
669
+ <button type="button">Button 1</button>
670
+ <button type="button">Button 2</button>
671
+ <a href="#">Link</a>
672
+ </PromoBanner>,
673
+ );
674
+
675
+ const button1 = screen.getByRole("button", { name: "Button 1" });
676
+ const button2 = screen.getByRole("button", { name: "Button 2" });
677
+ const link = screen.getByRole("link");
678
+
679
+ await user.tab();
680
+ expect(button1).toHaveFocus();
681
+
682
+ await user.tab();
683
+ expect(button2).toHaveFocus();
684
+
685
+ await user.tab();
686
+ expect(link).toHaveFocus();
687
+ });
688
+
689
+ it("works with keyboard navigation", async () => {
690
+ const user = userEvent.setup();
691
+ const handleClick = jest.fn();
692
+
693
+ render(
694
+ <PromoBanner>
695
+ <button type="button" onClick={handleClick}>
696
+ Keyboard accessible button
697
+ </button>
698
+ </PromoBanner>,
699
+ );
700
+
701
+ const button = screen.getByRole("button");
702
+ button.focus();
703
+ await user.keyboard("{Enter}");
704
+ expect(handleClick).toHaveBeenCalledTimes(1);
705
+
706
+ await user.keyboard(" ");
707
+ expect(handleClick).toHaveBeenCalledTimes(2);
708
+ });
709
+
710
+ it("maintains proper Grid component behavior", () => {
711
+ const { container } = render(
712
+ <PromoBanner className="test-grid">
713
+ <div>Grid content</div>
714
+ </PromoBanner>,
715
+ );
716
+
717
+ const grid = container.querySelector(".grid");
718
+ const gridCol = container.querySelector(".grid__col");
719
+
720
+ expect(grid).toHaveClass("grid", "promo-banner", "test-grid");
721
+ expect(gridCol).toHaveClass("grid__col");
722
+ });
723
+
724
+ it("handles event propagation correctly", async () => {
725
+ const user = userEvent.setup();
726
+ const bannerClick = jest.fn();
727
+ const buttonClick = jest.fn((e) => e.stopPropagation());
728
+
729
+ render(
730
+ <PromoBanner onClick={bannerClick}>
731
+ <button type="button" onClick={buttonClick}>
732
+ Stop propagation button
733
+ </button>
734
+ </PromoBanner>,
735
+ );
736
+
737
+ const button = screen.getByRole("button");
738
+ await user.click(button);
739
+
740
+ expect(buttonClick).toHaveBeenCalledTimes(1);
741
+ expect(bannerClick).not.toHaveBeenCalled(); // Should be stopped
742
+ });
743
+
744
+ it("works with responsive image behavior", () => {
745
+ render(
746
+ <PromoBanner image="responsive.jpg" imageFullWidth>
747
+ Responsive content
748
+ </PromoBanner>,
749
+ );
750
+
751
+ const image = screen.getByRole("img");
752
+ expect(image).toHaveClass("fullwidth");
753
+ expect(image).toHaveAttribute("src", "responsive.jpg");
754
+ });
755
+
756
+ it("handles complex nested component structure", () => {
757
+ render(
758
+ <PromoBanner image="complex.jpg" variant="vertical">
759
+ <header>
760
+ <h1>Complex Structure</h1>
761
+ </header>
762
+ <main>
763
+ <section>
764
+ <h2>Section Title</h2>
765
+ <article>
766
+ <h3>Article Title</h3>
767
+ <p>Article content</p>
768
+ </article>
769
+ </section>
770
+ </main>
771
+ <aside>
772
+ <p>Sidebar content</p>
773
+ </aside>
774
+ </PromoBanner>,
775
+ );
776
+
777
+ expect(screen.getByRole("banner")).toBeInTheDocument();
778
+ expect(screen.getByRole("main")).toBeInTheDocument();
779
+ expect(screen.getByRole("complementary")).toBeInTheDocument();
780
+ expect(screen.getByRole("article")).toBeInTheDocument();
781
+ });
782
+ });
783
+ });