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

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 (762) 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/Stepbar/style.css +2 -0
  89. package/build/components/Stepbar/style.css.map +1 -0
  90. package/build/components/Sticker/style.css +2 -0
  91. package/build/components/Sticker/style.css.map +1 -0
  92. package/build/components/Table/style.css +2 -0
  93. package/build/components/Table/style.css.map +1 -0
  94. package/build/components/Tabs/style.css +2 -0
  95. package/build/components/Tabs/style.css.map +1 -0
  96. package/build/components/Tag/style.css +2 -0
  97. package/build/components/Tag/style.css.map +1 -0
  98. package/build/components/Testimonial/style.css +2 -0
  99. package/build/components/Testimonial/style.css.map +1 -0
  100. package/build/components/Tile/style.css +2 -0
  101. package/build/components/Tile/style.css.map +1 -0
  102. package/build/components/Tooltip/style.css +1 -1
  103. package/build/components/Tooltip/style.css.map +1 -1
  104. package/build/components/index.js +1 -23
  105. package/build/components/index.js.map +1 -1
  106. package/build/components/tsconfig.tsbuildinfo +1 -1
  107. package/build/components/types/index.d.ts +1485 -0
  108. package/build/components/types/src/components/Accordion/Accordion.d.ts +2 -2
  109. package/build/components/types/src/components/Accordion/Accordion.static.d.ts +1 -0
  110. package/build/components/types/src/components/Alert/Alert.d.ts +0 -2
  111. package/build/components/types/src/components/AnchorNavigation/AnchorNavigation.d.ts +1 -2
  112. package/build/components/types/src/components/AnchorNavigation/AnchorNavigation.static.d.ts +20 -17
  113. package/build/components/types/src/components/BlockAction/BlockAction.d.ts +2 -0
  114. package/build/components/types/src/components/BlockAction/Context.d.ts +2 -0
  115. package/build/components/types/src/components/BodyBanner/BodyBanner.d.ts +10 -10
  116. package/build/components/types/src/components/Breadcrumbs/Breadcrumbs.d.ts +0 -2
  117. package/build/components/types/src/components/Button/Button.d.ts +1 -1
  118. package/build/components/types/src/components/Button/index.d.ts +3 -4
  119. package/build/components/types/src/components/Card/Card.d.ts +2 -1
  120. package/build/components/types/src/components/Card/CardSection.d.ts +2 -2
  121. package/build/components/types/src/components/Card/index.d.ts +1 -0
  122. package/build/components/types/src/components/Carousel/Carousel.d.ts +4 -2
  123. package/build/components/types/src/components/Carousel/Carousel.static.d.ts +61 -7
  124. package/build/components/types/src/components/Carousel/constants.d.ts +2 -0
  125. package/build/components/types/src/components/CarouselHero/CarouselHero.d.ts +17 -0
  126. package/build/components/types/src/components/CarouselHero/CarouselHero.static.d.ts +47 -0
  127. package/build/components/types/src/components/CarouselHero/CarouselHeroItem.d.ts +8 -0
  128. package/build/components/types/src/components/CarouselHero/constants.d.ts +33 -0
  129. package/build/components/types/src/components/CarouselHero/index.d.ts +2 -0
  130. package/build/components/types/src/components/CarouselPromotions/CarouselPromotions.d.ts +0 -1
  131. package/build/components/types/src/components/Controls/Controls.d.ts +0 -1
  132. package/build/components/types/src/components/Cover/Cover.d.ts +3 -3
  133. package/build/components/types/src/components/Divider/Divider.d.ts +0 -4
  134. package/build/components/types/src/components/DocumentationSidebar/DocumentationSidebar.d.ts +1 -0
  135. package/build/components/types/src/components/Expander/Expander.d.ts +2 -5
  136. package/build/components/types/src/components/FeatureAccordion/FeatureAccordion.d.ts +1 -3
  137. package/build/components/types/src/components/Footer/Footer.d.ts +1 -5
  138. package/build/components/types/src/components/Footer/constants.d.ts +9 -0
  139. package/build/components/types/src/components/Forms/InputStepper/InputStepper.d.ts +0 -1
  140. package/build/components/types/src/components/Forms/Select/index.d.ts +1 -1
  141. package/build/components/types/src/components/Grid/Grid.d.ts +1 -1
  142. package/build/components/types/src/components/Grid/GridCol.d.ts +1 -1
  143. package/build/components/types/src/components/Hero/Hero.d.ts +0 -3
  144. package/build/components/types/src/components/Icon/IconSearch.d.ts +2 -2
  145. package/build/components/types/src/components/Icon/IconSearchWrapper.d.ts +1 -1
  146. package/build/components/types/src/components/Icon/iconSearchTags.d.ts +255 -252
  147. package/build/components/types/src/components/Link/Link.d.ts +2 -2
  148. package/build/components/types/src/components/Megamenu/Megamenu.d.ts +6 -1
  149. package/build/components/types/src/components/Megamenu/MegamenuBlog.d.ts +2 -1
  150. package/build/components/types/src/components/Megamenu/constants.d.ts +4 -0
  151. package/build/components/types/src/components/Megamenu/static.d.ts +2 -3
  152. package/build/components/types/src/components/Modal/Modal.d.ts +0 -4
  153. package/build/components/types/src/components/Modal/ModalBody.d.ts +3 -3
  154. package/build/components/types/src/components/Modal/ModalProductHeader.d.ts +2 -0
  155. package/build/components/types/src/components/Modal/index.d.ts +0 -1
  156. package/build/components/types/src/components/Pagination/Pagination.d.ts +2 -5
  157. package/build/components/types/src/components/Pagination/Separator.d.ts +2 -2
  158. package/build/components/types/src/components/Pill/Pill.d.ts +3 -1
  159. package/build/components/types/src/components/Preview/Preview.d.ts +1 -1
  160. package/build/components/types/src/components/Preview/PreviewGenerator.d.ts +1 -0
  161. package/build/components/types/src/components/Preview/index.d.ts +1 -1
  162. package/build/components/types/src/components/Progress/Progress.d.ts +0 -1
  163. package/build/components/types/src/components/PromoBanner/PromoBanner.d.ts +9 -6
  164. package/build/components/types/src/components/PromotionCard/PromotionCard.d.ts +3 -3
  165. package/build/components/types/src/components/Section/Section.d.ts +4 -1
  166. package/build/components/types/src/components/Stepbar/Stepbar.d.ts +0 -2
  167. package/build/components/types/src/components/Table/Row.d.ts +1 -2
  168. package/build/components/types/src/components/Table/Table.d.ts +2 -2
  169. package/build/components/types/src/components/Table/docsData.d.ts +2 -0
  170. package/build/components/types/src/components/Table/types.d.ts +1 -0
  171. package/build/components/types/src/components/Tabs/Tabs.d.ts +0 -2
  172. package/build/components/types/src/components/Tag/Tag.d.ts +0 -2
  173. package/build/components/types/src/components/Tile/Tile.d.ts +2 -1
  174. package/build/components/types/src/components/Tooltip/Tooltip.d.ts +0 -1
  175. package/build/components/types/src/components/Tooltip/tests/BaseWrapper.d.ts +1 -1
  176. package/build/components/types/src/components/index.d.ts +4 -5
  177. package/build/components/types/src/docs/utils/SpacePreview.d.ts +1 -2
  178. package/build/components/types/src/scripts/index.d.ts +12 -3
  179. package/build/components/types/src/scripts/modules/SameHeight.d.ts +3 -0
  180. package/build/components/types/src/styles/export/color.d.ts +105 -0
  181. package/build/fonts/HelveticaNeue-Bold.woff2 +0 -0
  182. package/build/fonts/HelveticaNeue-Light.woff2 +0 -0
  183. package/build/fonts/HelveticaNeue-Roman.woff2 +0 -0
  184. package/build/lib/base.css +3 -0
  185. package/build/lib/base.css.map +1 -0
  186. package/build/lib/components.css +1 -1
  187. package/build/lib/components.css.map +1 -1
  188. package/build/lib/footer.css +2 -0
  189. package/build/lib/footer.css.map +1 -0
  190. package/build/lib/megamenu.css +1 -1
  191. package/build/lib/megamenu.css.map +1 -1
  192. package/build/lib/megamenu.js +1 -1
  193. package/build/lib/megamenu.js.map +1 -1
  194. package/build/lib/scripts.js +1 -9
  195. package/build/lib/scripts.js.map +1 -1
  196. package/build/lib/style.css +1 -1
  197. package/build/lib/style.css.map +1 -1
  198. package/build/lib/tsconfig.tsbuildinfo +1 -1
  199. package/build/lib/utilities.css +2 -0
  200. package/build/lib/utilities.css.map +1 -0
  201. package/build/sprite.svg +1 -1
  202. package/package.json +46 -38
  203. package/public/fonts/HelveticaNeue-Bold.woff2 +0 -0
  204. package/public/fonts/HelveticaNeue-Light.woff2 +0 -0
  205. package/public/fonts/HelveticaNeue-Roman.woff2 +0 -0
  206. package/src/assets/icons/ai.svg +6 -0
  207. package/src/assets/icons/article.svg +7 -0
  208. package/src/assets/icons/pictogram-activation--dark.svg +10 -11
  209. package/src/assets/icons/pictogram-activation-free--dark.svg +4 -5
  210. package/src/assets/icons/pictogram-activation-free.svg +4 -5
  211. package/src/assets/icons/pictogram-activation.svg +10 -11
  212. package/src/assets/icons/pictogram-archive--dark.svg +3 -4
  213. package/src/assets/icons/pictogram-archive.svg +3 -4
  214. package/src/assets/icons/pictogram-calling-minutes--dark.svg +3 -4
  215. package/src/assets/icons/pictogram-calling-minutes.svg +3 -4
  216. package/src/assets/icons/pictogram-canal-plus--dark.svg +3 -4
  217. package/src/assets/icons/pictogram-canal-plus.svg +3 -4
  218. package/src/assets/icons/pictogram-competition-tickets--dark.svg +11 -12
  219. package/src/assets/icons/pictogram-competition-tickets.svg +11 -12
  220. package/src/assets/icons/pictogram-device-discount--dark.svg +7 -6
  221. package/src/assets/icons/pictogram-device-discount.svg +5 -6
  222. package/src/assets/icons/pictogram-discount-general--dark.svg +5 -6
  223. package/src/assets/icons/pictogram-discount-general.svg +5 -6
  224. package/src/assets/icons/pictogram-discount-price--dark.svg +5 -6
  225. package/src/assets/icons/pictogram-discount-price.svg +5 -6
  226. package/src/assets/icons/pictogram-extra-data--dark.svg +6 -7
  227. package/src/assets/icons/pictogram-extra-data.svg +6 -7
  228. package/src/assets/icons/pictogram-free-payment--dark.svg +5 -6
  229. package/src/assets/icons/pictogram-free-payment.svg +3 -6
  230. package/src/assets/icons/pictogram-gift--dark.svg +12 -13
  231. package/src/assets/icons/pictogram-gift-one-benefit--dark.svg +7 -8
  232. package/src/assets/icons/pictogram-gift-one-benefit.svg +7 -8
  233. package/src/assets/icons/pictogram-gift-two-benefits--dark.svg +8 -9
  234. package/src/assets/icons/pictogram-gift-two-benefits.svg +8 -9
  235. package/src/assets/icons/pictogram-gift.svg +3 -4
  236. package/src/assets/icons/pictogram-hbo-max--dark.svg +5 -6
  237. package/src/assets/icons/pictogram-hbo-max.svg +5 -6
  238. package/src/assets/icons/pictogram-infinite-sms--dark.svg +3 -4
  239. package/src/assets/icons/pictogram-infinite-sms.svg +3 -4
  240. package/src/assets/icons/pictogram-installation--dark.svg +4 -5
  241. package/src/assets/icons/pictogram-installation-free--dark.svg +4 -5
  242. package/src/assets/icons/pictogram-installation-free.svg +4 -5
  243. package/src/assets/icons/pictogram-installation.svg +4 -5
  244. package/src/assets/icons/pictogram-max--dark.svg +3 -4
  245. package/src/assets/icons/pictogram-max-canal-plus--dark.svg +5 -6
  246. package/src/assets/icons/pictogram-max-canal-plus.svg +5 -6
  247. package/src/assets/icons/pictogram-max.svg +3 -4
  248. package/src/assets/icons/pictogram-moj-orange-app--dark.svg +3 -4
  249. package/src/assets/icons/pictogram-moj-orange-app.svg +3 -4
  250. package/src/assets/icons/pictogram-movie-storage--dark.svg +4 -5
  251. package/src/assets/icons/pictogram-movie-storage.svg +4 -5
  252. package/src/assets/icons/pictogram-online-protection--dark.svg +3 -4
  253. package/src/assets/icons/pictogram-online-protection.svg +3 -4
  254. package/src/assets/icons/pictogram-random-damage--dark.svg +4 -8
  255. package/src/assets/icons/pictogram-random-damage.svg +4 -8
  256. package/src/assets/icons/pictogram-recycling--dark.svg +7 -8
  257. package/src/assets/icons/pictogram-recycling.svg +14 -15
  258. package/src/assets/icons/pictogram-repair--dark.svg +12 -13
  259. package/src/assets/icons/pictogram-repair.svg +12 -13
  260. package/src/assets/icons/pictogram-roaming--dark.svg +3 -4
  261. package/src/assets/icons/pictogram-roaming-discount--dark.svg +3 -16
  262. package/src/assets/icons/pictogram-roaming-discount.svg +15 -16
  263. package/src/assets/icons/pictogram-roaming.svg +3 -4
  264. package/src/assets/icons/pictogram-skylink--dark.svg +10 -11
  265. package/src/assets/icons/pictogram-skylink-live-tv--dark.svg +7 -8
  266. package/src/assets/icons/pictogram-skylink-live-tv.svg +7 -8
  267. package/src/assets/icons/pictogram-skylink.svg +10 -11
  268. package/src/assets/icons/pictogram-sms--dark.svg +5 -6
  269. package/src/assets/icons/pictogram-sms.svg +5 -6
  270. package/src/assets/icons/pictogram-theft--dark.svg +3 -7
  271. package/src/assets/icons/pictogram-theft.svg +3 -7
  272. package/src/assets/icons/pictogram-three-devices--dark.svg +4 -8
  273. package/src/assets/icons/pictogram-three-devices.svg +4 -8
  274. package/src/assets/icons/pictogram-trust--dark.svg +3 -4
  275. package/src/assets/icons/pictogram-trust.svg +3 -4
  276. package/src/assets/icons/pictogram-water-damage--dark.svg +5 -6
  277. package/src/assets/icons/pictogram-water-damage.svg +5 -6
  278. package/src/assets/icons/play.svg +4 -1
  279. package/src/assets/icons/quote.svg +4 -0
  280. package/src/components/Accordion/Accordion.static.ts +36 -30
  281. package/src/components/Accordion/Accordion.tsx +4 -4
  282. package/src/components/Accordion/AccordionHeader.tsx +0 -10
  283. package/src/components/Accordion/AccordionItem.tsx +1 -0
  284. package/src/components/Accordion/styles/config.scss +5 -4
  285. package/src/components/Accordion/styles/mixins.scss +12 -11
  286. package/src/components/Accordion/styles/style.scss +2 -2
  287. package/src/components/Accordion/tests/Accordion.unit.test.js +12 -26
  288. package/src/components/Alert/Alert.tsx +0 -6
  289. package/src/components/Alert/styles/config.scss +1 -1
  290. package/src/components/Alert/styles/mixins.scss +3 -1
  291. package/src/components/Alert/tests/Alert.test.js +0 -14
  292. package/src/components/AnchorNavigation/AnchorNavigation.static.ts +296 -72
  293. package/src/components/AnchorNavigation/AnchorNavigation.tsx +21 -26
  294. package/src/components/AnchorNavigation/styles/mixins.scss +23 -32
  295. package/src/components/AnchorNavigation/tests/AnchorNavigation.conformance.test.js +58 -0
  296. package/src/components/AnchorNavigation/tests/AnchorNavigation.unit.test.js +163 -0
  297. package/src/components/Bar/styles/config.scss +4 -5
  298. package/src/components/Bar/styles/mixins.scss +11 -11
  299. package/src/components/BlockAction/BlockAction.tsx +10 -3
  300. package/src/components/BlockAction/Context.tsx +4 -0
  301. package/src/components/BlockAction/styles/mixins.scss +6 -6
  302. package/src/components/BlockAction/styles/style.scss +5 -0
  303. package/src/components/BodyBanner/BodyBanner.tsx +52 -73
  304. package/src/components/BodyBanner/styles/mixins.scss +39 -33
  305. package/src/components/BodyBanner/styles/style.scss +4 -18
  306. package/src/components/BodyBanner/tests/BodyBanner.conformance.test.js +67 -0
  307. package/src/components/BodyBanner/tests/BodyBanner.unit.test.js +194 -0
  308. package/src/components/Breadcrumbs/BreadcrumbItem.tsx +16 -7
  309. package/src/components/Breadcrumbs/Breadcrumbs.tsx +4 -12
  310. package/src/components/Breadcrumbs/styles/mixins.scss +2 -4
  311. package/src/components/Breadcrumbs/tests/BreadcrumbItem.unit.test.js +14 -8
  312. package/src/components/Breadcrumbs/tests/Breadcrumbs.integration.test.js +14 -37
  313. package/src/components/Breadcrumbs/tests/Breadcrumbs.unit.test.js +19 -23
  314. package/src/components/Button/Button.tsx +2 -6
  315. package/src/components/Button/styles/config.scss +5 -5
  316. package/src/components/Button/styles/mixins.scss +6 -1
  317. package/src/components/Button/styles/style.scss +4 -0
  318. package/src/components/Button/tests/Button.test.js +0 -10
  319. package/src/components/Buttons/styles/mixins.scss +1 -1
  320. package/src/components/Card/Card.tsx +20 -3
  321. package/src/components/Card/CardSection.tsx +7 -11
  322. package/src/components/Card/index.ts +1 -0
  323. package/src/components/Card/styles/config.scss +2 -2
  324. package/src/components/Card/styles/mixins.scss +8 -6
  325. package/src/components/Card/styles/style.scss +4 -0
  326. package/src/components/Card/tests/Card.unit.test.js +45 -6
  327. package/src/components/Card/tests/CardSection.unit.test.js +36 -3
  328. package/src/components/Carousel/Carousel.static.ts +371 -10
  329. package/src/components/Carousel/Carousel.tsx +41 -24
  330. package/src/components/Carousel/constants.ts +2 -0
  331. package/src/components/Carousel/styles/config.scss +1 -2
  332. package/src/components/Carousel/styles/mixins.scss +42 -3
  333. package/src/components/Carousel/styles/style.scss +8 -0
  334. package/src/components/Carousel/tests/Carousel.static.test.js +616 -0
  335. package/src/components/Carousel/tests/Carousel.unit.test.js +117 -12
  336. package/src/components/CarouselHero/CarouselHero.static.ts +528 -0
  337. package/src/components/CarouselHero/CarouselHero.tsx +139 -0
  338. package/src/components/CarouselHero/CarouselHeroItem.tsx +40 -0
  339. package/src/components/CarouselHero/constants.ts +36 -0
  340. package/src/components/CarouselHero/index.ts +2 -0
  341. package/src/components/CarouselHero/styles/config.scss +54 -0
  342. package/src/components/CarouselHero/styles/mixins.scss +278 -0
  343. package/src/components/CarouselHero/styles/style.scss +63 -0
  344. package/src/components/CarouselHero/tests/CarouselHero.conformance.test.js +129 -0
  345. package/src/components/CarouselHero/tests/CarouselHero.unit.test.js +332 -0
  346. package/src/components/CarouselHero/tests/CarouselHeroItem.conformance.test.js +135 -0
  347. package/src/components/CarouselHero/tests/CarouselHeroItem.unit.test.js +143 -0
  348. package/src/components/CarouselPromotions/CarouselPromotions.tsx +1 -6
  349. package/src/components/CarouselPromotions/styles/mixins.scss +8 -5
  350. package/src/components/CarouselPromotions/tests/CarouselPromotions.unit.test.js +0 -17
  351. package/src/components/CartTable/FooterPriceColumn.tsx +5 -3
  352. package/src/components/CartTable/Price.tsx +1 -1
  353. package/src/components/Code/styles/style.scss +6 -5
  354. package/src/components/Controls/Controls.tsx +2 -7
  355. package/src/components/Controls/styles/config.scss +2 -2
  356. package/src/components/Controls/tests/Controls.test.js +0 -32
  357. package/src/components/Cover/Cover.tsx +22 -20
  358. package/src/components/Cover/styles/config.scss +23 -12
  359. package/src/components/Cover/styles/mixins.scss +6 -5
  360. package/src/components/Cover/tests/Cover.unit.test.js +52 -52
  361. package/src/components/Divider/Divider.tsx +2 -16
  362. package/src/components/Divider/styles/config.scss +0 -17
  363. package/src/components/Divider/styles/mixins.scss +8 -10
  364. package/src/components/Divider/styles/style.scss +2 -16
  365. package/src/components/Divider/tests/Divider.conformance.test.js +1 -1
  366. package/src/components/Divider/tests/Divider.unit.test.js +0 -17
  367. package/src/components/DocumentationSidebar/DocumentationSidebar.tsx +188 -2
  368. package/src/components/DocumentationSidebar/styles/style.scss +76 -3
  369. package/src/components/Dropdown/styles/mixins.scss +1 -1
  370. package/src/components/Expander/Expander.static.ts +11 -12
  371. package/src/components/Expander/Expander.tsx +4 -8
  372. package/src/components/Expander/styles/style.scss +12 -3
  373. package/src/components/Expander/tests/Expander.conformance.test.js +8 -12
  374. package/src/components/Expander/tests/Expander.unit.test.js +37 -47
  375. package/src/components/FeatureAccordion/FeatureAccordion.tsx +3 -13
  376. package/src/components/FeatureAccordion/styles/mixins.scss +6 -14
  377. package/src/components/FeatureAccordion/styles/style.scss +2 -4
  378. package/src/components/FeatureAccordion/tests/FeatureAccordion.conformance.test.js +2 -0
  379. package/src/components/FeatureAccordion/tests/FeatureAccordion.unit.test.js +0 -5
  380. package/src/components/Footer/Footer.tsx +86 -70
  381. package/src/components/Footer/constants.ts +10 -0
  382. package/src/components/Footer/styles/config.scss +1 -0
  383. package/src/components/Footer/styles/mixins.scss +173 -0
  384. package/src/components/Footer/styles/style.scss +48 -0
  385. package/src/components/Footer/tests/Footer.conformance.test.js +133 -8
  386. package/src/components/Footer/tests/Footer.unit.test.js +71 -6
  387. package/src/components/Forms/DatePicker/styles/style.scss +1 -1
  388. package/src/components/Forms/Field/styles/config.scss +8 -8
  389. package/src/components/Forms/Field/tests/Autocomplete.Field.conformance.test.js +1 -1
  390. package/src/components/Forms/Field/tests/Checkbox.Field.conformance.test.js +1 -0
  391. package/src/components/Forms/Field/tests/File.Field.conformance.test.js +1 -0
  392. package/src/components/Forms/Field/tests/Group.Field.conformance.test.js +1 -0
  393. package/src/components/Forms/Field/tests/Radio.Field.conformance.test.js +1 -0
  394. package/src/components/Forms/Field/tests/Rangeslider.Field.test.js +1 -0
  395. package/src/components/Forms/Field/tests/Select.Field.conformance.test.js +1 -0
  396. package/src/components/Forms/Field/tests/Text.Field.conformance.test.js +1 -0
  397. package/src/components/Forms/Field/tests/Textarea.Field.conformance.test.js +1 -0
  398. package/src/components/Forms/Fieldset/styles/mixins.scss +3 -3
  399. package/src/components/Forms/File/styles/mixins.scss +1 -1
  400. package/src/components/Forms/Group/styles/mixins.scss +14 -0
  401. package/src/components/Forms/InputStepper/InputStepper.tsx +0 -4
  402. package/src/components/Forms/InputStepper/styles/style.scss +0 -66
  403. package/src/components/Forms/Label/styles/config.scss +3 -0
  404. package/src/components/Forms/RangeSlider/styles/mixins.scss +1 -1
  405. package/src/components/Forms/TextInput/styles/config.scss +1 -1
  406. package/src/components/Forms/styles/config.scss +3 -3
  407. package/src/components/Gauge/styles/style.scss +1 -1
  408. package/src/components/Grid/Grid.tsx +1 -1
  409. package/src/components/Grid/styles/config.scss +5 -3
  410. package/src/components/Grid/styles/mixins.scss +29 -19
  411. package/src/components/Grid/tests/Grid.unit.test.js +11 -0
  412. package/src/components/Hero/Hero.tsx +2 -16
  413. package/src/components/Hero/styles/style.scss +0 -14
  414. package/src/components/Hero/tests/Hero.unit.test.js +109 -119
  415. package/src/components/Icon/iconSearchTags.ts +435 -432
  416. package/src/components/Icon/styles/style.scss +15 -0
  417. package/src/components/Icon/tests/Pictogram.unit.test.js +38 -0
  418. package/src/components/IconList/styles/mixins.scss +5 -5
  419. package/src/components/Image/styles/mixins.scss +2 -2
  420. package/src/components/Link/Link.tsx +4 -5
  421. package/src/components/Link/styles/mixins.scss +9 -3
  422. package/src/components/Link/styles/style.scss +4 -2
  423. package/src/components/Link/tests/Link.conformance.test.js +6 -27
  424. package/src/components/Link/tests/Link.unit.test.js +1 -30
  425. package/src/components/List/styles/config.scss +12 -12
  426. package/src/components/List/styles/mixins.scss +16 -9
  427. package/src/components/Loader/Loader.tsx +2 -10
  428. package/src/components/Loader/styles/mixins.scss +1 -1
  429. package/src/components/Loader/styles/style.scss +6 -4
  430. package/src/components/Megamenu/Megamenu.static.ts +2 -0
  431. package/src/components/Megamenu/Megamenu.tsx +730 -650
  432. package/src/components/Megamenu/MegamenuBlog.tsx +201 -183
  433. package/src/components/Megamenu/constants.ts +4 -0
  434. package/src/components/Megamenu/static.ts +5 -11
  435. package/src/components/Megamenu/styles/mixins.scss +50 -3
  436. package/src/components/Megamenu/styles/style.scss +10 -0
  437. package/src/components/Modal/Modal.tsx +1 -14
  438. package/src/components/Modal/ModalBody.tsx +26 -14
  439. package/src/components/Modal/ModalProductHeader.tsx +6 -2
  440. package/src/components/Modal/index.ts +0 -1
  441. package/src/components/Modal/styles/config.scss +4 -4
  442. package/src/components/Modal/styles/mixins.scss +18 -57
  443. package/src/components/Modal/styles/style.scss +1 -16
  444. package/src/components/Modal/tests/Modal.unit.test.js +0 -59
  445. package/src/components/Modal/tests/ModalBody.unit.test.js +21 -12
  446. package/src/components/Modal/tests/ModalProductHeader.unit.test.js +12 -0
  447. package/src/components/Pagination/Pagination.tsx +3 -13
  448. package/src/components/Pagination/styles/mixins.scss +1 -1
  449. package/src/components/Pill/Pill.tsx +17 -5
  450. package/src/components/Pill/styles/config.scss +2 -1
  451. package/src/components/Pill/styles/style.scss +17 -1
  452. package/src/components/Pill/tests/Pill.conformance.test.js +9 -3
  453. package/src/components/Pill/tests/Pill.unit.test.js +87 -9
  454. package/src/components/Preview/PreviewGenerator.tsx +50 -29
  455. package/src/components/Progress/Progress.tsx +1 -13
  456. package/src/components/Progress/styles/config.scss +4 -4
  457. package/src/components/Progress/styles/mixins.scss +9 -7
  458. package/src/components/PromoBanner/PromoBanner.tsx +70 -43
  459. package/src/components/PromoBanner/styles/mixins.scss +39 -17
  460. package/src/components/PromoBanner/styles/style.scss +5 -7
  461. package/src/components/PromoBanner/tests/PromoBanner.conformance.test.js +783 -0
  462. package/src/components/PromoBanner/tests/PromoBanner.unit.test.js +549 -0
  463. package/src/components/PromotionCard/PromotionCard.tsx +12 -13
  464. package/src/components/PromotionCard/styles/mixins.scss +2 -1
  465. package/src/components/PromotionCard/tests/PromotionCard.conformance.test.js +566 -0
  466. package/src/components/PromotionCard/tests/PromotionCard.unit.test.js +438 -0
  467. package/src/components/Section/Section.tsx +20 -10
  468. package/src/components/Section/styles/config.scss +18 -16
  469. package/src/components/Section/styles/mixins.scss +16 -13
  470. package/src/components/Section/styles/style.scss +1 -0
  471. package/src/components/Section/tests/Section.conformance.test.js +23 -12
  472. package/src/components/Section/tests/Section.unit.test.js +53 -32
  473. package/src/components/Stepbar/Stepbar.tsx +0 -5
  474. package/src/components/Stepbar/styles/mixins.scss +1 -1
  475. package/src/components/Table/Row.tsx +9 -3
  476. package/src/components/Table/Table.tsx +11 -6
  477. package/src/components/Table/TableContext.ts +1 -0
  478. package/src/components/Table/docsData.ts +25 -0
  479. package/src/components/Table/styles/mixins.scss +41 -5
  480. package/src/components/Table/styles/style.scss +6 -0
  481. package/src/components/Table/tests/Table.conformance.test.js +5 -1
  482. package/src/components/Table/tests/Table.unit.test.js +0 -31
  483. package/src/components/Table/types.ts +1 -0
  484. package/src/components/Tabs/Tabs.tsx +0 -5
  485. package/src/components/Tabs/styles/mixins.scss +1 -1
  486. package/src/components/Tabs/tests/Tabs.unit.test.js +0 -8
  487. package/src/components/Tag/Tag.tsx +0 -4
  488. package/src/components/Tag/styles/config.scss +19 -23
  489. package/src/components/Tag/styles/style.scss +33 -0
  490. package/src/components/Tile/CHANGELOG.md +15 -1
  491. package/src/components/Tile/Tile.tsx +11 -3
  492. package/src/components/Tile/styles/config.scss +0 -11
  493. package/src/components/Tile/styles/mixins.scss +1 -0
  494. package/src/components/Tile/styles/style.scss +1 -5
  495. package/src/components/Tile/tests/Tile.unit.test.js +10 -3
  496. package/src/components/Tooltip/InfoTooltip.tsx +1 -5
  497. package/src/components/Tooltip/Tooltip.tsx +1 -10
  498. package/src/components/Tooltip/tests/Tooltip.conformance.test.js +5 -1
  499. package/src/components/Tooltip/tests/Tooltip.unit.test.js +0 -29
  500. package/src/components/index.ts +7 -4
  501. package/src/styles/base/globals-forms.scss +8 -0
  502. package/src/styles/base/globals.scss +26 -22
  503. package/src/styles/base/styleguide.scss +22 -17
  504. package/src/styles/export/base.js +1 -1
  505. package/src/styles/export/color.js +102 -20
  506. package/src/styles/export/color.scss +10 -20
  507. package/src/styles/shame.scss +1 -0
  508. package/src/styles/tokens/color-vars.scss +39 -0
  509. package/src/styles/tokens/color.scss +14 -14
  510. package/src/styles/tokens/tag-colors.scss +20 -0
  511. package/src/styles/typography/config.scss +83 -37
  512. package/src/styles/typography/mixins.scss +29 -15
  513. package/src/styles/typography/style.scss +6 -3
  514. package/src/styles/utilities/border.scss +1 -1
  515. package/src/styles/utilities/color.scss +99 -20
  516. package/src/styles/utilities/horizontal-scroll.scss +1 -1
  517. package/src/styles/utilities/index.scss +1 -0
  518. package/src/styles/utilities/layout.scss +27 -0
  519. package/src/styles/utilities/ordering.scss +44 -0
  520. package/src/styles/utilities/text.scss +44 -2
  521. package/src/styles/utilities/visibility.scss +2 -4
  522. package/build/components/Accordion/index.js +0 -16
  523. package/build/components/Accordion/index.js.map +0 -1
  524. package/build/components/Accordion/tsconfig.tsbuildinfo +0 -1
  525. package/build/components/Alert/index.js +0 -16
  526. package/build/components/Alert/index.js.map +0 -1
  527. package/build/components/Alert/tsconfig.tsbuildinfo +0 -1
  528. package/build/components/AnchorNavigation/index.js +0 -16
  529. package/build/components/AnchorNavigation/index.js.map +0 -1
  530. package/build/components/AnchorNavigation/tsconfig.tsbuildinfo +0 -1
  531. package/build/components/Bar/index.js +0 -16
  532. package/build/components/Bar/index.js.map +0 -1
  533. package/build/components/Bar/tsconfig.tsbuildinfo +0 -1
  534. package/build/components/BlockAction/index.js +0 -16
  535. package/build/components/BlockAction/index.js.map +0 -1
  536. package/build/components/BlockAction/tsconfig.tsbuildinfo +0 -1
  537. package/build/components/BodyBanner/index.js +0 -16
  538. package/build/components/BodyBanner/index.js.map +0 -1
  539. package/build/components/BodyBanner/tsconfig.tsbuildinfo +0 -1
  540. package/build/components/Breadcrumbs/index.js +0 -16
  541. package/build/components/Breadcrumbs/index.js.map +0 -1
  542. package/build/components/Breadcrumbs/tsconfig.tsbuildinfo +0 -1
  543. package/build/components/Button/index.js +0 -16
  544. package/build/components/Button/index.js.map +0 -1
  545. package/build/components/Button/tsconfig.tsbuildinfo +0 -1
  546. package/build/components/Buttons/index.js +0 -16
  547. package/build/components/Buttons/index.js.map +0 -1
  548. package/build/components/Buttons/tsconfig.tsbuildinfo +0 -1
  549. package/build/components/Card/index.js +0 -16
  550. package/build/components/Card/index.js.map +0 -1
  551. package/build/components/Card/tsconfig.tsbuildinfo +0 -1
  552. package/build/components/Carousel/index.js +0 -16
  553. package/build/components/Carousel/index.js.map +0 -1
  554. package/build/components/Carousel/tsconfig.tsbuildinfo +0 -1
  555. package/build/components/CarouselPromotions/index.js +0 -16
  556. package/build/components/CarouselPromotions/index.js.map +0 -1
  557. package/build/components/CarouselPromotions/tsconfig.tsbuildinfo +0 -1
  558. package/build/components/CartTable/index.js +0 -16
  559. package/build/components/CartTable/index.js.map +0 -1
  560. package/build/components/CartTable/tsconfig.tsbuildinfo +0 -1
  561. package/build/components/Code/index.js +0 -11
  562. package/build/components/Code/index.js.map +0 -1
  563. package/build/components/Code/tsconfig.tsbuildinfo +0 -1
  564. package/build/components/Container/index.js +0 -16
  565. package/build/components/Container/index.js.map +0 -1
  566. package/build/components/Container/tsconfig.tsbuildinfo +0 -1
  567. package/build/components/Controls/index.js +0 -16
  568. package/build/components/Controls/index.js.map +0 -1
  569. package/build/components/Controls/tsconfig.tsbuildinfo +0 -1
  570. package/build/components/Cover/index.js +0 -16
  571. package/build/components/Cover/index.js.map +0 -1
  572. package/build/components/Cover/tsconfig.tsbuildinfo +0 -1
  573. package/build/components/Divider/index.js +0 -16
  574. package/build/components/Divider/index.js.map +0 -1
  575. package/build/components/Divider/tsconfig.tsbuildinfo +0 -1
  576. package/build/components/DocumentationSidebar/index.js +0 -16
  577. package/build/components/DocumentationSidebar/index.js.map +0 -1
  578. package/build/components/DocumentationSidebar/tsconfig.tsbuildinfo +0 -1
  579. package/build/components/Dropdown/index.js +0 -16
  580. package/build/components/Dropdown/index.js.map +0 -1
  581. package/build/components/Dropdown/tsconfig.tsbuildinfo +0 -1
  582. package/build/components/Expander/index.js +0 -16
  583. package/build/components/Expander/index.js.map +0 -1
  584. package/build/components/Expander/tsconfig.tsbuildinfo +0 -1
  585. package/build/components/FeatureAccordion/index.js +0 -16
  586. package/build/components/FeatureAccordion/index.js.map +0 -1
  587. package/build/components/FeatureAccordion/tsconfig.tsbuildinfo +0 -1
  588. package/build/components/Footer/index.js +0 -16
  589. package/build/components/Footer/index.js.map +0 -1
  590. package/build/components/Footer/tsconfig.tsbuildinfo +0 -1
  591. package/build/components/Forms/index.js +0 -20
  592. package/build/components/Forms/index.js.map +0 -1
  593. package/build/components/Forms/style.css +0 -2
  594. package/build/components/Forms/style.css.map +0 -1
  595. package/build/components/Forms/tsconfig.tsbuildinfo +0 -1
  596. package/build/components/Gauge/index.js +0 -16
  597. package/build/components/Gauge/index.js.map +0 -1
  598. package/build/components/Gauge/tsconfig.tsbuildinfo +0 -1
  599. package/build/components/Grid/index.js +0 -16
  600. package/build/components/Grid/index.js.map +0 -1
  601. package/build/components/Grid/tsconfig.tsbuildinfo +0 -1
  602. package/build/components/Hero/index.js +0 -16
  603. package/build/components/Hero/index.js.map +0 -1
  604. package/build/components/Hero/tsconfig.tsbuildinfo +0 -1
  605. package/build/components/Icon/index.js +0 -11
  606. package/build/components/Icon/index.js.map +0 -1
  607. package/build/components/Icon/tsconfig.tsbuildinfo +0 -1
  608. package/build/components/IconList/index.js +0 -16
  609. package/build/components/IconList/index.js.map +0 -1
  610. package/build/components/IconList/tsconfig.tsbuildinfo +0 -1
  611. package/build/components/Image/index.js +0 -16
  612. package/build/components/Image/index.js.map +0 -1
  613. package/build/components/Image/tsconfig.tsbuildinfo +0 -1
  614. package/build/components/Link/index.js +0 -7
  615. package/build/components/Link/index.js.map +0 -1
  616. package/build/components/Link/tsconfig.tsbuildinfo +0 -1
  617. package/build/components/List/index.js +0 -16
  618. package/build/components/List/index.js.map +0 -1
  619. package/build/components/List/tsconfig.tsbuildinfo +0 -1
  620. package/build/components/Loader/index.js +0 -16
  621. package/build/components/Loader/index.js.map +0 -1
  622. package/build/components/Loader/tsconfig.tsbuildinfo +0 -1
  623. package/build/components/Megamenu/index.js +0 -16
  624. package/build/components/Megamenu/index.js.map +0 -1
  625. package/build/components/Megamenu/tsconfig.tsbuildinfo +0 -1
  626. package/build/components/Modal/index.js +0 -20
  627. package/build/components/Modal/index.js.map +0 -1
  628. package/build/components/Modal/tsconfig.tsbuildinfo +0 -1
  629. package/build/components/Pagination/index.js +0 -16
  630. package/build/components/Pagination/index.js.map +0 -1
  631. package/build/components/Pagination/tsconfig.tsbuildinfo +0 -1
  632. package/build/components/Pill/index.js +0 -16
  633. package/build/components/Pill/index.js.map +0 -1
  634. package/build/components/Pill/tsconfig.tsbuildinfo +0 -1
  635. package/build/components/Preview/index.js +0 -77
  636. package/build/components/Preview/index.js.map +0 -1
  637. package/build/components/Preview/tsconfig.tsbuildinfo +0 -1
  638. package/build/components/Progress/index.js +0 -16
  639. package/build/components/Progress/index.js.map +0 -1
  640. package/build/components/Progress/tsconfig.tsbuildinfo +0 -1
  641. package/build/components/PromoBanner/index.js +0 -16
  642. package/build/components/PromoBanner/index.js.map +0 -1
  643. package/build/components/PromoBanner/tsconfig.tsbuildinfo +0 -1
  644. package/build/components/PromotionCard/index.js +0 -16
  645. package/build/components/PromotionCard/index.js.map +0 -1
  646. package/build/components/PromotionCard/tsconfig.tsbuildinfo +0 -1
  647. package/build/components/Section/index.js +0 -16
  648. package/build/components/Section/index.js.map +0 -1
  649. package/build/components/Section/tsconfig.tsbuildinfo +0 -1
  650. package/build/components/Skeleton/index.js +0 -16
  651. package/build/components/Skeleton/index.js.map +0 -1
  652. package/build/components/Skeleton/tsconfig.tsbuildinfo +0 -1
  653. package/build/components/SkipLink/index.js +0 -16
  654. package/build/components/SkipLink/index.js.map +0 -1
  655. package/build/components/SkipLink/tsconfig.tsbuildinfo +0 -1
  656. package/build/components/Stepbar/index.js +0 -16
  657. package/build/components/Stepbar/index.js.map +0 -1
  658. package/build/components/Stepbar/tsconfig.tsbuildinfo +0 -1
  659. package/build/components/Sticker/index.js +0 -16
  660. package/build/components/Sticker/index.js.map +0 -1
  661. package/build/components/Sticker/tsconfig.tsbuildinfo +0 -1
  662. package/build/components/Table/index.js +0 -16
  663. package/build/components/Table/index.js.map +0 -1
  664. package/build/components/Table/tsconfig.tsbuildinfo +0 -1
  665. package/build/components/Tabs/index.js +0 -16
  666. package/build/components/Tabs/index.js.map +0 -1
  667. package/build/components/Tabs/tsconfig.tsbuildinfo +0 -1
  668. package/build/components/Tag/index.js +0 -16
  669. package/build/components/Tag/index.js.map +0 -1
  670. package/build/components/Tag/tsconfig.tsbuildinfo +0 -1
  671. package/build/components/Testimonial/index.js +0 -16
  672. package/build/components/Testimonial/index.js.map +0 -1
  673. package/build/components/Testimonial/tsconfig.tsbuildinfo +0 -1
  674. package/build/components/Tile/index.js +0 -16
  675. package/build/components/Tile/index.js.map +0 -1
  676. package/build/components/Tile/tsconfig.tsbuildinfo +0 -1
  677. package/build/components/Tooltip/index.js +0 -16
  678. package/build/components/Tooltip/index.js.map +0 -1
  679. package/build/components/Tooltip/tsconfig.tsbuildinfo +0 -1
  680. package/build/components/index.css +0 -3
  681. package/build/components/index.css.map +0 -1
  682. package/build/components/static.css +0 -2
  683. package/build/components/static.css.map +0 -1
  684. package/build/components/static.js +0 -10
  685. package/build/components/static.js.map +0 -1
  686. package/build/components/types/src/components/Hero/HeroPlayground.d.ts +0 -2
  687. package/build/components/types/src/components/Modal/ModalProductBody.d.ts +0 -10
  688. package/build/lib/after-components.css +0 -2
  689. package/build/lib/after-components.css.map +0 -1
  690. package/build/lib/before-components.css +0 -3
  691. package/build/lib/before-components.css.map +0 -1
  692. package/build/lib/scripts.css +0 -2
  693. package/build/lib/scripts.css.map +0 -1
  694. package/src/components/Accordion/Accordion.mdx +0 -240
  695. package/src/components/Alert/Alert.mdx +0 -141
  696. package/src/components/Bar/Bar.mdx +0 -203
  697. package/src/components/BlockAction/BlockAction.mdx +0 -244
  698. package/src/components/BodyBanner/BodyBanner.mdx +0 -268
  699. package/src/components/Breadcrumbs/Breadcrumbs.mdx +0 -84
  700. package/src/components/Button/Button.mdx +0 -273
  701. package/src/components/Buttons/Buttons.mdx +0 -39
  702. package/src/components/Card/Card.mdx +0 -334
  703. package/src/components/Carousel/Carousel.mdx +0 -159
  704. package/src/components/CarouselPromotions/CarouselPromotions.mdx +0 -246
  705. package/src/components/CartTable/CartTable.mdx +0 -129
  706. package/src/components/Container/Container.mdx +0 -73
  707. package/src/components/Controls/Controls.mdx +0 -469
  708. package/src/components/Cover/Cover.mdx +0 -87
  709. package/src/components/Divider/Divider.mdx +0 -65
  710. package/src/components/Dropdown/Dropdown.mdx +0 -260
  711. package/src/components/Expander/Expander.mdx +0 -153
  712. package/src/components/FeatureAccordion/FeatureAccordion.mdx +0 -33
  713. package/src/components/Forms/Autocomplete/Autocomplete.mdx +0 -198
  714. package/src/components/Forms/Checkbox/Checkbox.mdx +0 -139
  715. package/src/components/Forms/DatePicker/DatePicker.mdx +0 -149
  716. package/src/components/Forms/Field/Field.mdx +0 -383
  717. package/src/components/Forms/Fieldset/Fieldset.mdx +0 -178
  718. package/src/components/Forms/File/File.mdx +0 -88
  719. package/src/components/Forms/FormTooltip.mdx +0 -51
  720. package/src/components/Forms/Forms.mdx +0 -48
  721. package/src/components/Forms/Group/Group.mdx +0 -146
  722. package/src/components/Forms/Hint/Hint.mdx +0 -40
  723. package/src/components/Forms/InputStepper/InputStepper.mdx +0 -147
  724. package/src/components/Forms/Label/Label.mdx +0 -95
  725. package/src/components/Forms/Message/Message.mdx +0 -40
  726. package/src/components/Forms/Radio/Radio.mdx +0 -98
  727. package/src/components/Forms/RangeSlider/RangeSlider.mdx +0 -304
  728. package/src/components/Forms/Select/Select.mdx +0 -106
  729. package/src/components/Forms/TextArea/TextArea.mdx +0 -109
  730. package/src/components/Forms/TextInput/TextInput.mdx +0 -153
  731. package/src/components/Gauge/Gauge.mdx +0 -35
  732. package/src/components/Grid/Grid.mdx +0 -320
  733. package/src/components/Hero/Hero.mdx +0 -168
  734. package/src/components/Hero/HeroPlayground.tsx +0 -369
  735. package/src/components/Icon/Icon.mdx +0 -172
  736. package/src/components/IconList/IconList.mdx +0 -53
  737. package/src/components/Image/Image.mdx +0 -175
  738. package/src/components/Link/Link.mdx +0 -238
  739. package/src/components/List/List.mdx +0 -216
  740. package/src/components/Loader/Loader.mdx +0 -148
  741. package/src/components/Modal/Modal.mdx +0 -565
  742. package/src/components/Modal/ModalProductBody.tsx +0 -52
  743. package/src/components/Pagination/Pagination.mdx +0 -45
  744. package/src/components/Pagination/tests/utils.js +0 -12
  745. package/src/components/Pill/Pill.mdx +0 -41
  746. package/src/components/Progress/Progress.mdx +0 -119
  747. package/src/components/PromotionCard/PromotionCard.mdx +0 -191
  748. package/src/components/Section/Section.mdx +0 -397
  749. package/src/components/Skeleton/Skeleton.mdx +0 -90
  750. package/src/components/SkipLink/SkipLink.mdx +0 -23
  751. package/src/components/Stepbar/Stepbar.mdx +0 -137
  752. package/src/components/Sticker/Sticker.mdx +0 -50
  753. package/src/components/Table/Table.mdx +0 -199
  754. package/src/components/Tabs/Tabs.mdx +0 -373
  755. package/src/components/Tag/Tag.mdx +0 -52
  756. package/src/components/Testimonial/Testimonial.mdx +0 -41
  757. package/src/components/Tile/Tile.mdx +0 -163
  758. package/src/components/Tooltip/Tooltip.mdx +0 -227
  759. package/src/styles/after-components.scss +0 -2
  760. package/src/styles/before-components.scss +0 -18
  761. /package/build/lib/{after-components.js → base.js} +0 -0
  762. /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
+ });