@orangesk/orange-design-system 2.0.0-beta.0 → 2.0.0-beta.10

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 (572) hide show
  1. package/build/components/index.css +1 -2
  2. package/build/components/index.css.map +1 -1
  3. package/build/components/index.js +7 -7
  4. package/build/components/index.js.map +1 -1
  5. package/build/components/tsconfig.tsbuildinfo +1 -1
  6. package/build/components/types/index.d.ts +1508 -0
  7. package/build/components/types/src/components/Accordion/Accordion.d.ts +2 -0
  8. package/build/components/types/src/components/Accordion/AccordionHeader.d.ts +2 -1
  9. package/build/components/types/src/components/Accordion/AccordionItem.d.ts +2 -1
  10. package/build/components/types/src/components/AnchorNavigation/AnchorNavigation.d.ts +1 -1
  11. package/build/components/types/src/components/AnchorNavigation/AnchorNavigation.static.d.ts +19 -17
  12. package/build/components/types/src/components/AnchorNavigation/index.d.ts +0 -1
  13. package/build/components/types/src/components/BlockAction/index.d.ts +0 -1
  14. package/build/components/types/src/components/BodyBanner/index.d.ts +0 -1
  15. package/build/components/types/src/components/Button/Button.d.ts +1 -0
  16. package/build/components/types/src/components/Button/index.d.ts +0 -1
  17. package/build/components/types/src/components/Card/Card.d.ts +2 -4
  18. package/build/components/types/src/components/Card/CardSection.d.ts +2 -2
  19. package/build/components/types/src/components/Carousel/Carousel.d.ts +4 -0
  20. package/build/components/types/src/components/Carousel/Carousel.static.d.ts +1 -0
  21. package/build/components/types/src/components/Carousel/constants.d.ts +2 -0
  22. package/build/components/types/src/components/CarouselHero/CarouselHero.d.ts +18 -0
  23. package/build/components/types/src/components/CarouselHero/CarouselHero.static.d.ts +47 -0
  24. package/build/components/types/src/components/CarouselHero/CarouselHeroItem.d.ts +8 -0
  25. package/build/components/types/src/components/CarouselHero/constants.d.ts +33 -0
  26. package/build/components/types/src/components/CarouselHero/index.d.ts +2 -0
  27. package/build/components/types/src/components/Cover/index.d.ts +1 -2
  28. package/build/components/types/src/components/Divider/Divider.d.ts +0 -4
  29. package/build/components/types/src/components/Expander/Expander.d.ts +2 -2
  30. package/build/components/types/src/components/Footer/Footer.d.ts +1 -5
  31. package/build/components/types/src/components/Footer/constants.d.ts +9 -0
  32. package/build/components/types/src/components/Forms/Select/index.d.ts +0 -1
  33. package/build/components/types/src/components/Icon/iconSearchTags.d.ts +253 -251
  34. package/build/components/types/src/components/IconList/index.d.ts +2 -3
  35. package/build/components/types/src/components/List/index.d.ts +2 -3
  36. package/build/components/types/src/components/Megamenu/MegaMenuIcon.d.ts +13 -0
  37. package/build/components/types/src/components/Megamenu/Megamenu.d.ts +1 -9
  38. package/build/components/types/src/components/Megamenu/Megamenu.static.d.ts +47 -0
  39. package/build/components/types/src/components/Megamenu/MegamenuBlog.d.ts +1 -0
  40. package/build/components/types/src/components/Megamenu/constants.d.ts +48 -0
  41. package/build/components/types/src/components/Megamenu/index.d.ts +2 -3
  42. package/build/components/types/src/components/Megamenu/static.d.ts +22 -0
  43. package/build/components/types/src/components/Modal/Modal.d.ts +6 -0
  44. package/build/components/types/src/components/Modal/ModalBody.d.ts +4 -3
  45. package/build/components/types/src/components/Modal/ModalProductBody.d.ts +10 -0
  46. package/build/components/types/src/components/Modal/ModalProductFooter.d.ts +10 -0
  47. package/build/components/types/src/components/Modal/index.d.ts +2 -0
  48. package/build/components/types/src/components/Pagination/Pagination.d.ts +2 -3
  49. package/build/components/types/src/components/Pill/Pill.d.ts +4 -1
  50. package/build/components/types/src/components/Preview/PreviewGenerator.d.ts +1 -1
  51. package/build/components/types/src/components/PromoBanner/PromoBanner.d.ts +9 -5
  52. package/build/components/types/src/components/PromotionCard/PromotionCard.d.ts +2 -2
  53. package/build/components/types/src/components/Section/Section.d.ts +4 -1
  54. package/build/components/types/src/components/Tag/Tag.d.ts +9 -2
  55. package/build/components/types/src/components/index.d.ts +3 -5
  56. package/build/components/types/src/scripts/index.d.ts +10 -0
  57. package/build/lib/after-components.css +1 -1
  58. package/build/lib/after-components.css.map +1 -1
  59. package/build/lib/before-components.css +1 -1
  60. package/build/lib/before-components.css.map +1 -1
  61. package/build/lib/components.css +1 -1
  62. package/build/lib/components.css.map +1 -1
  63. package/build/lib/footer.css +2 -0
  64. package/build/lib/footer.css.map +1 -0
  65. package/build/lib/megamenu.css +2 -0
  66. package/build/lib/megamenu.css.map +1 -0
  67. package/build/lib/megamenu.js +2 -0
  68. package/build/lib/megamenu.js.map +1 -0
  69. package/build/lib/scripts.css +1 -1
  70. package/build/lib/scripts.css.map +1 -1
  71. package/build/lib/scripts.js +5 -5
  72. package/build/lib/scripts.js.map +1 -1
  73. package/build/lib/style.css +1 -1
  74. package/build/lib/style.css.map +1 -1
  75. package/build/lib/tsconfig.tsbuildinfo +1 -1
  76. package/build/logo-line.svg +5 -0
  77. package/build/sprite.svg +1 -1
  78. package/package.json +35 -29
  79. package/src/assets/icons/ai.svg +6 -0
  80. package/src/assets/icons/article.svg +7 -0
  81. package/src/assets/icons/pictogram-activation--dark.svg +10 -11
  82. package/src/assets/icons/pictogram-activation-free--dark.svg +4 -5
  83. package/src/assets/icons/pictogram-activation-free.svg +4 -5
  84. package/src/assets/icons/pictogram-activation.svg +10 -11
  85. package/src/assets/icons/pictogram-archive--dark.svg +3 -4
  86. package/src/assets/icons/pictogram-archive.svg +3 -4
  87. package/src/assets/icons/pictogram-calling-minutes--dark.svg +3 -4
  88. package/src/assets/icons/pictogram-calling-minutes.svg +3 -4
  89. package/src/assets/icons/pictogram-canal-plus--dark.svg +3 -4
  90. package/src/assets/icons/pictogram-canal-plus.svg +3 -4
  91. package/src/assets/icons/pictogram-competition-tickets--dark.svg +11 -12
  92. package/src/assets/icons/pictogram-competition-tickets.svg +11 -12
  93. package/src/assets/icons/pictogram-device-discount--dark.svg +7 -6
  94. package/src/assets/icons/pictogram-device-discount.svg +5 -6
  95. package/src/assets/icons/pictogram-discount-general--dark.svg +5 -6
  96. package/src/assets/icons/pictogram-discount-general.svg +5 -6
  97. package/src/assets/icons/pictogram-discount-price--dark.svg +5 -6
  98. package/src/assets/icons/pictogram-discount-price.svg +5 -6
  99. package/src/assets/icons/pictogram-extra-data--dark.svg +6 -7
  100. package/src/assets/icons/pictogram-extra-data.svg +6 -7
  101. package/src/assets/icons/pictogram-free-payment--dark.svg +5 -6
  102. package/src/assets/icons/pictogram-free-payment.svg +3 -6
  103. package/src/assets/icons/pictogram-gift--dark.svg +12 -13
  104. package/src/assets/icons/pictogram-gift-one-benefit--dark.svg +7 -8
  105. package/src/assets/icons/pictogram-gift-one-benefit.svg +7 -8
  106. package/src/assets/icons/pictogram-gift-two-benefits--dark.svg +8 -9
  107. package/src/assets/icons/pictogram-gift-two-benefits.svg +8 -9
  108. package/src/assets/icons/pictogram-gift.svg +3 -4
  109. package/src/assets/icons/pictogram-hbo-max--dark.svg +5 -6
  110. package/src/assets/icons/pictogram-hbo-max.svg +5 -6
  111. package/src/assets/icons/pictogram-infinite-sms--dark.svg +3 -4
  112. package/src/assets/icons/pictogram-infinite-sms.svg +3 -4
  113. package/src/assets/icons/pictogram-installation--dark.svg +4 -5
  114. package/src/assets/icons/pictogram-installation-free--dark.svg +4 -5
  115. package/src/assets/icons/pictogram-installation-free.svg +4 -5
  116. package/src/assets/icons/pictogram-installation.svg +4 -5
  117. package/src/assets/icons/pictogram-max--dark.svg +3 -4
  118. package/src/assets/icons/pictogram-max-canal-plus--dark.svg +5 -6
  119. package/src/assets/icons/pictogram-max-canal-plus.svg +5 -6
  120. package/src/assets/icons/pictogram-max.svg +3 -4
  121. package/src/assets/icons/pictogram-moj-orange-app--dark.svg +3 -4
  122. package/src/assets/icons/pictogram-moj-orange-app.svg +3 -4
  123. package/src/assets/icons/pictogram-movie-storage--dark.svg +4 -5
  124. package/src/assets/icons/pictogram-movie-storage.svg +4 -5
  125. package/src/assets/icons/pictogram-online-protection--dark.svg +3 -4
  126. package/src/assets/icons/pictogram-online-protection.svg +3 -4
  127. package/src/assets/icons/pictogram-random-damage--dark.svg +4 -8
  128. package/src/assets/icons/pictogram-random-damage.svg +4 -8
  129. package/src/assets/icons/pictogram-recycling--dark.svg +7 -8
  130. package/src/assets/icons/pictogram-recycling.svg +14 -15
  131. package/src/assets/icons/pictogram-repair--dark.svg +12 -13
  132. package/src/assets/icons/pictogram-repair.svg +12 -13
  133. package/src/assets/icons/pictogram-roaming--dark.svg +3 -4
  134. package/src/assets/icons/pictogram-roaming-discount--dark.svg +3 -16
  135. package/src/assets/icons/pictogram-roaming-discount.svg +15 -16
  136. package/src/assets/icons/pictogram-roaming.svg +3 -4
  137. package/src/assets/icons/pictogram-skylink--dark.svg +10 -11
  138. package/src/assets/icons/pictogram-skylink-live-tv--dark.svg +7 -8
  139. package/src/assets/icons/pictogram-skylink-live-tv.svg +7 -8
  140. package/src/assets/icons/pictogram-skylink.svg +10 -11
  141. package/src/assets/icons/pictogram-sms--dark.svg +5 -6
  142. package/src/assets/icons/pictogram-sms.svg +5 -6
  143. package/src/assets/icons/pictogram-theft--dark.svg +3 -7
  144. package/src/assets/icons/pictogram-theft.svg +3 -7
  145. package/src/assets/icons/pictogram-three-devices--dark.svg +4 -8
  146. package/src/assets/icons/pictogram-three-devices.svg +4 -8
  147. package/src/assets/icons/pictogram-trust--dark.svg +3 -4
  148. package/src/assets/icons/pictogram-trust.svg +3 -4
  149. package/src/assets/icons/pictogram-water-damage--dark.svg +5 -6
  150. package/src/assets/icons/pictogram-water-damage.svg +5 -6
  151. package/src/components/Accordion/Accordion.tsx +4 -0
  152. package/src/components/Accordion/AccordionHeader.tsx +9 -2
  153. package/src/components/Accordion/AccordionItem.tsx +5 -2
  154. package/src/components/Accordion/styles/config.scss +4 -4
  155. package/src/components/Accordion/styles/mixins.scss +9 -3
  156. package/src/components/Accordion/styles/style.scss +4 -0
  157. package/src/components/Accordion/tests/Accordion.unit.test.js +11 -0
  158. package/src/components/AnchorNavigation/AnchorNavigation.static.ts +253 -73
  159. package/src/components/AnchorNavigation/AnchorNavigation.tsx +20 -16
  160. package/src/components/AnchorNavigation/index.tsx +0 -2
  161. package/src/components/AnchorNavigation/styles/mixins.scss +14 -27
  162. package/src/components/AnchorNavigation/tests/AnchorNavigation.conformance.test.js +67 -0
  163. package/src/components/AnchorNavigation/tests/AnchorNavigation.unit.test.js +163 -0
  164. package/src/components/Bar/styles/config.scss +4 -5
  165. package/src/components/BlockAction/index.tsx +0 -2
  166. package/src/components/BlockAction/styles/mixins.scss +0 -6
  167. package/src/components/BodyBanner/index.tsx +0 -2
  168. package/src/components/Breadcrumbs/styles/mixins.scss +2 -4
  169. package/src/components/Button/Button.tsx +2 -2
  170. package/src/components/Button/index.tsx +0 -2
  171. package/src/components/Button/styles/config.scss +1 -1
  172. package/src/components/Button/styles/mixins.scss +5 -0
  173. package/src/components/Button/styles/style.scss +4 -0
  174. package/src/components/Card/Card.tsx +20 -8
  175. package/src/components/Card/CardSection.tsx +7 -11
  176. package/src/components/Card/styles/config.scss +1 -1
  177. package/src/components/Card/styles/mixins.scss +8 -6
  178. package/src/components/Card/styles/style.scss +4 -0
  179. package/src/components/Card/tests/Card.unit.test.js +45 -11
  180. package/src/components/Card/tests/CardSection.unit.test.js +36 -3
  181. package/src/components/Carousel/Carousel.static.ts +67 -1
  182. package/src/components/Carousel/Carousel.tsx +41 -19
  183. package/src/components/Carousel/constants.ts +2 -0
  184. package/src/components/Carousel/styles/config.scss +1 -2
  185. package/src/components/Carousel/styles/mixins.scss +35 -2
  186. package/src/components/Carousel/styles/style.scss +8 -0
  187. package/src/components/CarouselHero/CarouselHero.static.ts +528 -0
  188. package/src/components/CarouselHero/CarouselHero.tsx +147 -0
  189. package/src/components/CarouselHero/CarouselHeroItem.tsx +40 -0
  190. package/src/components/CarouselHero/constants.ts +36 -0
  191. package/src/components/CarouselHero/index.ts +2 -0
  192. package/src/components/CarouselHero/styles/config.scss +54 -0
  193. package/src/components/CarouselHero/styles/mixins.scss +278 -0
  194. package/src/components/CarouselHero/styles/style.scss +63 -0
  195. package/src/components/CarouselHero/tests/CarouselHero.conformance.test.js +130 -0
  196. package/src/components/CarouselHero/tests/CarouselHero.unit.test.js +346 -0
  197. package/src/components/CarouselHero/tests/CarouselHeroItem.conformance.test.js +135 -0
  198. package/src/components/CarouselHero/tests/CarouselHeroItem.unit.test.js +143 -0
  199. package/src/components/CarouselPromotions/styles/mixins.scss +10 -3
  200. package/src/components/CartTable/FooterPriceColumn.tsx +5 -3
  201. package/src/components/CartTable/Price.tsx +1 -1
  202. package/src/components/Controls/styles/config.scss +2 -2
  203. package/src/components/Controls/tests/Controls.test.js +0 -9
  204. package/src/components/Cover/index.ts +1 -2
  205. package/src/components/Divider/Divider.tsx +2 -16
  206. package/src/components/Divider/styles/config.scss +0 -17
  207. package/src/components/Divider/styles/mixins.scss +8 -10
  208. package/src/components/Divider/styles/style.scss +2 -16
  209. package/src/components/Divider/tests/Divider.conformance.test.js +1 -1
  210. package/src/components/Divider/tests/Divider.unit.test.js +0 -17
  211. package/src/components/Dropdown/styles/mixins.scss +1 -1
  212. package/src/components/Expander/Expander.tsx +4 -2
  213. package/src/components/Expander/styles/style.scss +7 -0
  214. package/src/components/Footer/Footer.tsx +86 -70
  215. package/src/components/Footer/constants.ts +10 -0
  216. package/src/components/Footer/styles/config.scss +1 -0
  217. package/src/components/Footer/styles/mixins.scss +172 -0
  218. package/src/components/Footer/styles/style.scss +48 -0
  219. package/src/components/Footer/tests/Footer.conformance.test.js +133 -8
  220. package/src/components/Footer/tests/Footer.unit.test.js +71 -6
  221. package/src/components/Forms/DatePicker/styles/style.scss +1 -1
  222. package/src/components/Forms/File/styles/mixins.scss +1 -1
  223. package/src/components/Forms/InputStepper/styles/style.scss +0 -66
  224. package/src/components/Forms/RangeSlider/styles/mixins.scss +1 -1
  225. package/src/components/Forms/Select/index.tsx +0 -2
  226. package/src/components/Forms/TextInput/styles/config.scss +1 -1
  227. package/src/components/Forms/styles/config.scss +3 -3
  228. package/src/components/Icon/iconSearchTags.ts +434 -432
  229. package/src/components/Icon/styles/style.scss +15 -0
  230. package/src/components/Icon/tests/Pictogram.unit.test.js +38 -0
  231. package/src/components/IconList/index.ts +2 -3
  232. package/src/components/Link/styles/style.scss +6 -2
  233. package/src/components/Link/tests/Link.conformance.test.js +5 -20
  234. package/src/components/Link/tests/Link.unit.test.js +1 -10
  235. package/src/components/List/index.ts +2 -3
  236. package/src/components/Loader/Loader.tsx +2 -10
  237. package/src/components/Loader/styles/mixins.scss +1 -1
  238. package/src/components/Loader/styles/style.scss +6 -4
  239. package/src/components/Megamenu/MegaMenuIcon.tsx +48 -0
  240. package/src/components/Megamenu/Megamenu.static.ts +600 -0
  241. package/src/components/Megamenu/Megamenu.tsx +799 -356
  242. package/src/components/Megamenu/MegamenuBlog.tsx +309 -0
  243. package/src/components/Megamenu/constants.ts +56 -0
  244. package/src/components/Megamenu/index.ts +2 -5
  245. package/src/components/Megamenu/static.ts +73 -0
  246. package/src/components/Megamenu/styles/config.scss +2 -13
  247. package/src/components/Megamenu/styles/mixins.scss +647 -208
  248. package/src/components/Megamenu/styles/style.scss +173 -61
  249. package/src/components/Modal/Modal.tsx +17 -2
  250. package/src/components/Modal/ModalBody.tsx +29 -14
  251. package/src/components/Modal/ModalProductBody.tsx +52 -0
  252. package/src/components/Modal/ModalProductFooter.tsx +38 -0
  253. package/src/components/Modal/index.ts +2 -0
  254. package/src/components/Modal/styles/config.scss +7 -0
  255. package/src/components/Modal/styles/mixins.scss +121 -14
  256. package/src/components/Modal/styles/style.scss +28 -0
  257. package/src/components/Modal/tests/Modal.unit.test.js +73 -0
  258. package/src/components/Modal/tests/ModalBody.unit.test.js +28 -12
  259. package/src/components/Pagination/Pagination.tsx +2 -2
  260. package/src/components/Pill/Pill.tsx +8 -3
  261. package/src/components/Pill/styles/config.scss +22 -2
  262. package/src/components/Pill/styles/style.scss +7 -3
  263. package/src/components/Pill/tests/Pill.conformance.test.js +7 -3
  264. package/src/components/Pill/tests/Pill.unit.test.js +45 -7
  265. package/src/components/Preview/PreviewGenerator.tsx +78 -34
  266. package/src/components/PromoBanner/PromoBanner.tsx +52 -34
  267. package/src/components/PromoBanner/styles/mixins.scss +37 -20
  268. package/src/components/PromoBanner/styles/style.scss +5 -11
  269. package/src/components/PromoBanner/tests/PromoBanner.conformance.test.js +781 -0
  270. package/src/components/PromoBanner/tests/PromoBanner.unit.test.js +529 -0
  271. package/src/components/PromotionCard/PromotionCard.tsx +13 -12
  272. package/src/components/PromotionCard/tests/PromotionCard.conformance.test.js +567 -0
  273. package/src/components/PromotionCard/tests/PromotionCard.unit.test.js +500 -0
  274. package/src/components/Section/Section.tsx +20 -4
  275. package/src/components/Section/styles/config.scss +18 -16
  276. package/src/components/Section/styles/mixins.scss +16 -13
  277. package/src/components/Section/styles/style.scss +1 -0
  278. package/src/components/Section/tests/Section.conformance.test.js +27 -10
  279. package/src/components/Section/tests/Section.unit.test.js +73 -25
  280. package/src/components/Tag/Tag.tsx +27 -3
  281. package/src/components/Tag/styles/config.scss +31 -0
  282. package/src/components/Tag/styles/mixins.scss +39 -3
  283. package/src/components/Tag/styles/style.scss +28 -2
  284. package/src/components/Tag/tests/Tag.conformance.test.js +19 -1
  285. package/src/components/Tag/tests/Tag.unit.test.js +93 -0
  286. package/src/components/Tile/styles/style.scss +1 -1
  287. package/src/components/index.ts +5 -6
  288. package/src/styles/base/globals.scss +19 -0
  289. package/src/styles/base/styleguide.scss +17 -17
  290. package/src/styles/export/base.js +2 -2
  291. package/src/styles/export/color.js +2 -2
  292. package/src/styles/shame.scss +2 -1
  293. package/src/styles/tokens/base.scss +1 -1
  294. package/src/styles/tokens/color.scss +12 -8
  295. package/src/styles/typography/mixins.scss +3 -2
  296. package/src/styles/utilities/border.scss +1 -1
  297. package/src/styles/utilities/color.scss +113 -20
  298. package/src/styles/utilities/index.scss +1 -0
  299. package/src/styles/utilities/layout.scss +9 -0
  300. package/src/styles/utilities/ordering.scss +44 -0
  301. package/build/components/Accordion/index.js +0 -16
  302. package/build/components/Accordion/index.js.map +0 -1
  303. package/build/components/Accordion/tsconfig.tsbuildinfo +0 -1
  304. package/build/components/Alert/index.js +0 -16
  305. package/build/components/Alert/index.js.map +0 -1
  306. package/build/components/Alert/tsconfig.tsbuildinfo +0 -1
  307. package/build/components/AnchorNavigation/index.js +0 -16
  308. package/build/components/AnchorNavigation/index.js.map +0 -1
  309. package/build/components/AnchorNavigation/style.css +0 -2
  310. package/build/components/AnchorNavigation/style.css.map +0 -1
  311. package/build/components/AnchorNavigation/tsconfig.tsbuildinfo +0 -1
  312. package/build/components/Bar/index.js +0 -16
  313. package/build/components/Bar/index.js.map +0 -1
  314. package/build/components/Bar/tsconfig.tsbuildinfo +0 -1
  315. package/build/components/BlockAction/index.js +0 -16
  316. package/build/components/BlockAction/index.js.map +0 -1
  317. package/build/components/BlockAction/style.css +0 -2
  318. package/build/components/BlockAction/style.css.map +0 -1
  319. package/build/components/BlockAction/tsconfig.tsbuildinfo +0 -1
  320. package/build/components/BodyBanner/index.js +0 -16
  321. package/build/components/BodyBanner/index.js.map +0 -1
  322. package/build/components/BodyBanner/style.css +0 -2
  323. package/build/components/BodyBanner/style.css.map +0 -1
  324. package/build/components/BodyBanner/tsconfig.tsbuildinfo +0 -1
  325. package/build/components/Breadcrumbs/index.js +0 -16
  326. package/build/components/Breadcrumbs/index.js.map +0 -1
  327. package/build/components/Breadcrumbs/tsconfig.tsbuildinfo +0 -1
  328. package/build/components/Button/index.js +0 -16
  329. package/build/components/Button/index.js.map +0 -1
  330. package/build/components/Button/style.css +0 -2
  331. package/build/components/Button/style.css.map +0 -1
  332. package/build/components/Button/tsconfig.tsbuildinfo +0 -1
  333. package/build/components/Buttons/index.js +0 -16
  334. package/build/components/Buttons/index.js.map +0 -1
  335. package/build/components/Buttons/tsconfig.tsbuildinfo +0 -1
  336. package/build/components/Card/index.js +0 -16
  337. package/build/components/Card/index.js.map +0 -1
  338. package/build/components/Card/tsconfig.tsbuildinfo +0 -1
  339. package/build/components/Carousel/index.js +0 -16
  340. package/build/components/Carousel/index.js.map +0 -1
  341. package/build/components/Carousel/style.css +0 -2
  342. package/build/components/Carousel/style.css.map +0 -1
  343. package/build/components/Carousel/tsconfig.tsbuildinfo +0 -1
  344. package/build/components/CarouselPromotions/index.js +0 -16
  345. package/build/components/CarouselPromotions/index.js.map +0 -1
  346. package/build/components/CarouselPromotions/tsconfig.tsbuildinfo +0 -1
  347. package/build/components/CartTable/index.js +0 -16
  348. package/build/components/CartTable/index.js.map +0 -1
  349. package/build/components/CartTable/style.css +0 -2
  350. package/build/components/CartTable/style.css.map +0 -1
  351. package/build/components/CartTable/tsconfig.tsbuildinfo +0 -1
  352. package/build/components/Code/index.js +0 -11
  353. package/build/components/Code/index.js.map +0 -1
  354. package/build/components/Code/style.css +0 -2
  355. package/build/components/Code/style.css.map +0 -1
  356. package/build/components/Code/tsconfig.tsbuildinfo +0 -1
  357. package/build/components/Container/index.js +0 -16
  358. package/build/components/Container/index.js.map +0 -1
  359. package/build/components/Container/tsconfig.tsbuildinfo +0 -1
  360. package/build/components/Controls/index.js +0 -16
  361. package/build/components/Controls/index.js.map +0 -1
  362. package/build/components/Controls/tsconfig.tsbuildinfo +0 -1
  363. package/build/components/Cover/index.js +0 -16
  364. package/build/components/Cover/index.js.map +0 -1
  365. package/build/components/Cover/style.css +0 -2
  366. package/build/components/Cover/style.css.map +0 -1
  367. package/build/components/Cover/tsconfig.tsbuildinfo +0 -1
  368. package/build/components/Divider/index.js +0 -16
  369. package/build/components/Divider/index.js.map +0 -1
  370. package/build/components/Divider/tsconfig.tsbuildinfo +0 -1
  371. package/build/components/DocumentationSidebar/index.js +0 -16
  372. package/build/components/DocumentationSidebar/index.js.map +0 -1
  373. package/build/components/DocumentationSidebar/style.css +0 -2
  374. package/build/components/DocumentationSidebar/style.css.map +0 -1
  375. package/build/components/DocumentationSidebar/tsconfig.tsbuildinfo +0 -1
  376. package/build/components/Dropdown/index.js +0 -16
  377. package/build/components/Dropdown/index.js.map +0 -1
  378. package/build/components/Dropdown/style.css +0 -2
  379. package/build/components/Dropdown/style.css.map +0 -1
  380. package/build/components/Dropdown/tsconfig.tsbuildinfo +0 -1
  381. package/build/components/Expander/index.js +0 -16
  382. package/build/components/Expander/index.js.map +0 -1
  383. package/build/components/Expander/tsconfig.tsbuildinfo +0 -1
  384. package/build/components/FeatureAccordion/index.js +0 -16
  385. package/build/components/FeatureAccordion/index.js.map +0 -1
  386. package/build/components/FeatureAccordion/style.css +0 -2
  387. package/build/components/FeatureAccordion/style.css.map +0 -1
  388. package/build/components/FeatureAccordion/tsconfig.tsbuildinfo +0 -1
  389. package/build/components/Footer/index.js +0 -16
  390. package/build/components/Footer/index.js.map +0 -1
  391. package/build/components/Footer/style.css +0 -2
  392. package/build/components/Footer/style.css.map +0 -1
  393. package/build/components/Footer/tsconfig.tsbuildinfo +0 -1
  394. package/build/components/Forms/index.js +0 -20
  395. package/build/components/Forms/index.js.map +0 -1
  396. package/build/components/Forms/style.css +0 -2
  397. package/build/components/Forms/style.css.map +0 -1
  398. package/build/components/Forms/tsconfig.tsbuildinfo +0 -1
  399. package/build/components/Gauge/index.js +0 -16
  400. package/build/components/Gauge/index.js.map +0 -1
  401. package/build/components/Gauge/tsconfig.tsbuildinfo +0 -1
  402. package/build/components/Grid/index.js +0 -16
  403. package/build/components/Grid/index.js.map +0 -1
  404. package/build/components/Grid/style.css +0 -2
  405. package/build/components/Grid/style.css.map +0 -1
  406. package/build/components/Grid/tsconfig.tsbuildinfo +0 -1
  407. package/build/components/Hero/index.js +0 -16
  408. package/build/components/Hero/index.js.map +0 -1
  409. package/build/components/Hero/style.css +0 -2
  410. package/build/components/Hero/style.css.map +0 -1
  411. package/build/components/Hero/tsconfig.tsbuildinfo +0 -1
  412. package/build/components/Icon/index.js +0 -11
  413. package/build/components/Icon/index.js.map +0 -1
  414. package/build/components/Icon/tsconfig.tsbuildinfo +0 -1
  415. package/build/components/IconList/index.js +0 -16
  416. package/build/components/IconList/index.js.map +0 -1
  417. package/build/components/IconList/style.css +0 -2
  418. package/build/components/IconList/style.css.map +0 -1
  419. package/build/components/IconList/tsconfig.tsbuildinfo +0 -1
  420. package/build/components/Image/index.js +0 -16
  421. package/build/components/Image/index.js.map +0 -1
  422. package/build/components/Image/tsconfig.tsbuildinfo +0 -1
  423. package/build/components/Link/index.js +0 -7
  424. package/build/components/Link/index.js.map +0 -1
  425. package/build/components/Link/tsconfig.tsbuildinfo +0 -1
  426. package/build/components/List/index.js +0 -16
  427. package/build/components/List/index.js.map +0 -1
  428. package/build/components/List/style.css +0 -2
  429. package/build/components/List/style.css.map +0 -1
  430. package/build/components/List/tsconfig.tsbuildinfo +0 -1
  431. package/build/components/Loader/index.js +0 -16
  432. package/build/components/Loader/index.js.map +0 -1
  433. package/build/components/Loader/tsconfig.tsbuildinfo +0 -1
  434. package/build/components/Megamenu/index.js +0 -20
  435. package/build/components/Megamenu/index.js.map +0 -1
  436. package/build/components/Megamenu/style.css +0 -2
  437. package/build/components/Megamenu/style.css.map +0 -1
  438. package/build/components/Megamenu/tsconfig.tsbuildinfo +0 -1
  439. package/build/components/Modal/index.js +0 -20
  440. package/build/components/Modal/index.js.map +0 -1
  441. package/build/components/Modal/style.css +0 -2
  442. package/build/components/Modal/style.css.map +0 -1
  443. package/build/components/Modal/tsconfig.tsbuildinfo +0 -1
  444. package/build/components/Pagination/index.js +0 -16
  445. package/build/components/Pagination/index.js.map +0 -1
  446. package/build/components/Pagination/tsconfig.tsbuildinfo +0 -1
  447. package/build/components/Pill/index.js +0 -16
  448. package/build/components/Pill/index.js.map +0 -1
  449. package/build/components/Pill/tsconfig.tsbuildinfo +0 -1
  450. package/build/components/Preview/index.js +0 -77
  451. package/build/components/Preview/index.js.map +0 -1
  452. package/build/components/Preview/style.css +0 -2
  453. package/build/components/Preview/style.css.map +0 -1
  454. package/build/components/Preview/tsconfig.tsbuildinfo +0 -1
  455. package/build/components/Progress/index.js +0 -16
  456. package/build/components/Progress/index.js.map +0 -1
  457. package/build/components/Progress/tsconfig.tsbuildinfo +0 -1
  458. package/build/components/PromoBanner/index.js +0 -16
  459. package/build/components/PromoBanner/index.js.map +0 -1
  460. package/build/components/PromoBanner/style.css +0 -2
  461. package/build/components/PromoBanner/style.css.map +0 -1
  462. package/build/components/PromoBanner/tsconfig.tsbuildinfo +0 -1
  463. package/build/components/PromotionCard/index.js +0 -16
  464. package/build/components/PromotionCard/index.js.map +0 -1
  465. package/build/components/PromotionCard/tsconfig.tsbuildinfo +0 -1
  466. package/build/components/Section/index.js +0 -16
  467. package/build/components/Section/index.js.map +0 -1
  468. package/build/components/Section/tsconfig.tsbuildinfo +0 -1
  469. package/build/components/Skeleton/index.js +0 -16
  470. package/build/components/Skeleton/index.js.map +0 -1
  471. package/build/components/Skeleton/tsconfig.tsbuildinfo +0 -1
  472. package/build/components/SkipLink/index.js +0 -16
  473. package/build/components/SkipLink/index.js.map +0 -1
  474. package/build/components/SkipLink/tsconfig.tsbuildinfo +0 -1
  475. package/build/components/Stepbar/index.js +0 -16
  476. package/build/components/Stepbar/index.js.map +0 -1
  477. package/build/components/Stepbar/tsconfig.tsbuildinfo +0 -1
  478. package/build/components/Sticker/index.js +0 -16
  479. package/build/components/Sticker/index.js.map +0 -1
  480. package/build/components/Sticker/tsconfig.tsbuildinfo +0 -1
  481. package/build/components/Table/index.js +0 -16
  482. package/build/components/Table/index.js.map +0 -1
  483. package/build/components/Table/style.css +0 -2
  484. package/build/components/Table/style.css.map +0 -1
  485. package/build/components/Table/tsconfig.tsbuildinfo +0 -1
  486. package/build/components/Tabs/index.js +0 -16
  487. package/build/components/Tabs/index.js.map +0 -1
  488. package/build/components/Tabs/tsconfig.tsbuildinfo +0 -1
  489. package/build/components/Tag/index.js +0 -16
  490. package/build/components/Tag/index.js.map +0 -1
  491. package/build/components/Tag/tsconfig.tsbuildinfo +0 -1
  492. package/build/components/Testimonial/index.js +0 -16
  493. package/build/components/Testimonial/index.js.map +0 -1
  494. package/build/components/Testimonial/tsconfig.tsbuildinfo +0 -1
  495. package/build/components/Tile/index.js +0 -16
  496. package/build/components/Tile/index.js.map +0 -1
  497. package/build/components/Tile/tsconfig.tsbuildinfo +0 -1
  498. package/build/components/Tooltip/index.js +0 -16
  499. package/build/components/Tooltip/index.js.map +0 -1
  500. package/build/components/Tooltip/style.css +0 -2
  501. package/build/components/Tooltip/style.css.map +0 -1
  502. package/build/components/Tooltip/tsconfig.tsbuildinfo +0 -1
  503. package/build/components/static.css +0 -2
  504. package/build/components/static.css.map +0 -1
  505. package/build/components/static.js +0 -10
  506. package/build/components/static.js.map +0 -1
  507. package/build/components/types/src/components/Hero/HeroPlayground.d.ts +0 -2
  508. package/build/components/types/src/components/Megamenu/MegamenuDropdown.d.ts +0 -17
  509. package/src/components/Accordion/Accordion.mdx +0 -222
  510. package/src/components/Alert/Alert.mdx +0 -141
  511. package/src/components/Bar/Bar.mdx +0 -203
  512. package/src/components/BlockAction/BlockAction.mdx +0 -244
  513. package/src/components/BodyBanner/BodyBanner.mdx +0 -268
  514. package/src/components/Breadcrumbs/Breadcrumbs.mdx +0 -84
  515. package/src/components/Button/Button.mdx +0 -273
  516. package/src/components/Buttons/Buttons.mdx +0 -39
  517. package/src/components/Card/Card.mdx +0 -334
  518. package/src/components/Carousel/Carousel.mdx +0 -159
  519. package/src/components/CarouselPromotions/CarouselPromotions.mdx +0 -246
  520. package/src/components/CartTable/CartTable.mdx +0 -129
  521. package/src/components/Container/Container.mdx +0 -73
  522. package/src/components/Controls/Controls.mdx +0 -469
  523. package/src/components/Cover/Cover.mdx +0 -87
  524. package/src/components/Divider/Divider.mdx +0 -65
  525. package/src/components/Dropdown/Dropdown.mdx +0 -260
  526. package/src/components/Expander/Expander.mdx +0 -153
  527. package/src/components/FeatureAccordion/FeatureAccordion.mdx +0 -33
  528. package/src/components/Forms/Autocomplete/Autocomplete.mdx +0 -198
  529. package/src/components/Forms/Checkbox/Checkbox.mdx +0 -139
  530. package/src/components/Forms/DatePicker/DatePicker.mdx +0 -149
  531. package/src/components/Forms/Field/Field.mdx +0 -383
  532. package/src/components/Forms/Fieldset/Fieldset.mdx +0 -178
  533. package/src/components/Forms/File/File.mdx +0 -88
  534. package/src/components/Forms/FormTooltip.mdx +0 -51
  535. package/src/components/Forms/Forms.mdx +0 -48
  536. package/src/components/Forms/Group/Group.mdx +0 -146
  537. package/src/components/Forms/Hint/Hint.mdx +0 -40
  538. package/src/components/Forms/InputStepper/InputStepper.mdx +0 -147
  539. package/src/components/Forms/Label/Label.mdx +0 -95
  540. package/src/components/Forms/Message/Message.mdx +0 -40
  541. package/src/components/Forms/Radio/Radio.mdx +0 -98
  542. package/src/components/Forms/RangeSlider/RangeSlider.mdx +0 -304
  543. package/src/components/Forms/Select/Select.mdx +0 -106
  544. package/src/components/Forms/TextArea/TextArea.mdx +0 -109
  545. package/src/components/Forms/TextInput/TextInput.mdx +0 -153
  546. package/src/components/Gauge/Gauge.mdx +0 -35
  547. package/src/components/Grid/Grid.mdx +0 -320
  548. package/src/components/Hero/Hero.mdx +0 -168
  549. package/src/components/Hero/HeroPlayground.tsx +0 -369
  550. package/src/components/Icon/Icon.mdx +0 -172
  551. package/src/components/IconList/IconList.mdx +0 -53
  552. package/src/components/Image/Image.mdx +0 -175
  553. package/src/components/Link/Link.mdx +0 -224
  554. package/src/components/List/List.mdx +0 -216
  555. package/src/components/Loader/Loader.mdx +0 -148
  556. package/src/components/Megamenu/MegamenuDropdown.tsx +0 -64
  557. package/src/components/Modal/Modal.mdx +0 -565
  558. package/src/components/Pagination/Pagination.mdx +0 -45
  559. package/src/components/Pill/Pill.mdx +0 -41
  560. package/src/components/Progress/Progress.mdx +0 -119
  561. package/src/components/PromotionCard/PromotionCard.mdx +0 -191
  562. package/src/components/Section/Section.mdx +0 -397
  563. package/src/components/Skeleton/Skeleton.mdx +0 -90
  564. package/src/components/SkipLink/SkipLink.mdx +0 -23
  565. package/src/components/Stepbar/Stepbar.mdx +0 -137
  566. package/src/components/Sticker/Sticker.mdx +0 -50
  567. package/src/components/Table/Table.mdx +0 -199
  568. package/src/components/Tabs/Tabs.mdx +0 -373
  569. package/src/components/Tag/Tag.mdx +0 -52
  570. package/src/components/Testimonial/Testimonial.mdx +0 -41
  571. package/src/components/Tile/Tile.mdx +0 -163
  572. package/src/components/Tooltip/Tooltip.mdx +0 -227
@@ -5,11 +5,12 @@ import cx from "classnames";
5
5
 
6
6
  import { useHydrationSafeId } from "../../utils/hooks";
7
7
 
8
- import AccordionHeader from "./AccordionHeader";
8
+ import AccordionHeader, { type AccordionHeaderProps } from "./AccordionHeader";
9
9
 
10
10
  const CLASS_ROOT = "accordion__item";
11
11
 
12
- export interface AccordionItemProps {
12
+ export interface AccordionItemProps
13
+ extends Pick<AccordionHeaderProps, "renderTitle"> {
13
14
  /** Accordion item id (automatically generated by default) */
14
15
  id?: string;
15
16
  /** Open state indication */
@@ -30,6 +31,7 @@ const AccordionItem: React.FC<AccordionItemProps> = ({
30
31
  id,
31
32
  isActive,
32
33
  title,
34
+ renderTitle,
33
35
  renderHeader,
34
36
  children,
35
37
  className,
@@ -47,6 +49,7 @@ const AccordionItem: React.FC<AccordionItemProps> = ({
47
49
  id={currentId}
48
50
  isActive={isActive}
49
51
  title={title}
52
+ renderTitle={renderTitle}
50
53
  {...other}
51
54
  />
52
55
  )}
@@ -1,8 +1,8 @@
1
- @use '../../../styles/tokens/space';
1
+ @use "../../../styles/tools/convert";
2
2
 
3
3
  $spacing: (
4
- default: space.get('small') 0,
5
- large: space.get('medium') 0,
4
+ default: convert.to-rem(15px) 0,
5
+ large: convert.to-rem(20px) 0,
6
6
  );
7
7
 
8
- $enclosed-spacing: space.get('medium');
8
+ $enclosed-spacing: convert.to-rem(20px);
@@ -20,10 +20,10 @@
20
20
  display: flex;
21
21
  flex-direction: column;
22
22
  justify-content: center;
23
- border-top: 1px solid var(--color-border-strong);
23
+ border-bottom: 1px solid var(--color-border-strong);
24
24
 
25
25
  &:last-child {
26
- border-bottom: 1px solid var(--color-border-strong);
26
+ border-bottom: 0px;
27
27
  }
28
28
 
29
29
  ul {
@@ -31,6 +31,12 @@
31
31
  }
32
32
  }
33
33
 
34
+ @mixin item-last-child-no-bottom-border {
35
+ &:last-child {
36
+ border-bottom: none;
37
+ }
38
+ }
39
+
34
40
  @mixin enclosed-item($spacing: config.$enclosed-spacing) {
35
41
  padding-left: $spacing;
36
42
  padding-right: $spacing;
@@ -56,7 +62,7 @@
56
62
 
57
63
  &:hover,
58
64
  &:focus-visible {
59
- color: color.$orange;
65
+ color: var(--color-text-accent);
60
66
  cursor: pointer;
61
67
  }
62
68
 
@@ -13,6 +13,10 @@
13
13
  #{$this}--enclosed & {
14
14
  @include mixins.enclosed-item();
15
15
  }
16
+
17
+ #{$this}--last-item-no-bottom-border & {
18
+ @include mixins.item-last-child-no-bottom-border();
19
+ }
16
20
  }
17
21
 
18
22
  &__header {
@@ -114,6 +114,15 @@ describe("Accordion Component Tests", () => {
114
114
  expect(getByTestId("test-id")).toHaveClass("accordion--enclosed");
115
115
  });
116
116
 
117
+ it("applies last item no bottom border class", () => {
118
+ const { getByTestId } = render(
119
+ <Accordion lastItemNoBottomBorder data-testid="test-id" />,
120
+ );
121
+ expect(getByTestId("test-id")).toHaveClass(
122
+ "accordion--last-item-no-bottom-border",
123
+ );
124
+ });
125
+
117
126
  it("applies custom className", () => {
118
127
  const { getByTestId } = render(
119
128
  <Accordion className="custom-class" data-testid="test-id" />,
@@ -590,6 +599,7 @@ describe("Accordion Component Tests", () => {
590
599
  headingLevel={2}
591
600
  size="large"
592
601
  isEnclosed
602
+ lastItemNoBottomBorder
593
603
  className="custom-accordion"
594
604
  data-testid="complex-accordion"
595
605
  >
@@ -616,6 +626,7 @@ describe("Accordion Component Tests", () => {
616
626
  expect(accordion).toHaveClass("accordion--large");
617
627
  expect(accordion).toHaveClass("accordion--enclosed");
618
628
  expect(accordion).toHaveClass("custom-accordion");
629
+ expect(accordion).toHaveClass("accordion--last-item-no-bottom-border");
619
630
 
620
631
  // Check heading level
621
632
  const headers = container.querySelectorAll("h2");
@@ -1,29 +1,29 @@
1
- interface AnchorNavigationConfig {
2
- itemSelector: string;
3
- }
4
-
5
- export const defaultConfig: AnchorNavigationConfig = {
6
- itemSelector: '.anchor-navigation__item',
7
- };
8
-
9
- export const configDocs = {
10
- itemSelector: "Anchor navigation item element selector",
11
- };
12
-
13
1
  export default class AnchorNavigation {
14
2
  private element: HTMLElement;
15
- private config: AnchorNavigationConfig;
16
- private items: HTMLElement[];
17
- private activeItemIndex: number | null;
3
+ private megamenuElement: HTMLElement | null;
4
+ private resizeObserver: ResizeObserver | null;
5
+ private scrollHandler: () => void;
6
+ private scrollSpyHandler: () => void;
7
+ private scrollEndHandler: () => void;
8
+ private resizeHandler: () => void;
9
+ private isAutoScrolling: boolean = false;
10
+ private navLinks: NodeListOf<HTMLAnchorElement> | null = null;
11
+ private sections: HTMLElement[] = [];
12
+ private currentPath: string;
13
+ private lastActiveIndex: number = 0;
18
14
 
19
- constructor(element: HTMLElement, config?: Partial<AnchorNavigationConfig>) {
15
+ constructor(element: HTMLElement) {
20
16
  this.element = element;
21
- this.config = { ...defaultConfig, ...config };
22
17
 
23
- this.items = [];
24
- this.activeItemIndex = null;
18
+ this.megamenuElement = null;
19
+ this.resizeObserver = null;
20
+ this.isAutoScrolling = false;
21
+ this.currentPath = window.location.pathname;
25
22
 
26
- this.handleClick = this.handleClick.bind(this);
23
+ this.scrollHandler = this.updateStickyPosition.bind(this);
24
+ this.scrollSpyHandler = this.handleScrollSpy.bind(this);
25
+ this.scrollEndHandler = this.handleScrollEnd.bind(this);
26
+ this.resizeHandler = this.initScrollSpy.bind(this);
27
27
 
28
28
  (this.element as any).ODS_AnchorNavigation = this;
29
29
 
@@ -33,83 +33,263 @@ export default class AnchorNavigation {
33
33
  }
34
34
 
35
35
  static getInstance(el: HTMLElement): AnchorNavigation | null {
36
- return el && (el as any).ODS_AnchorNavigation ? (el as any).ODS_AnchorNavigation : null;
36
+ return el && (el as any).ODS_AnchorNavigation
37
+ ? (el as any).ODS_AnchorNavigation
38
+ : null;
37
39
  }
38
40
 
39
- private init(): void {
40
- this.items = Array.from(
41
- this.element.querySelectorAll<HTMLElement>(this.config.itemSelector),
42
- );
41
+ private findMegamenuElement(): HTMLElement | null {
42
+ return document.querySelector("[data-megamenu]") as HTMLElement | null;
43
+ }
43
44
 
44
- this.items.forEach((item, index) => {
45
- item.addEventListener("click", this.handleClick);
45
+ private updateStickyPosition(): void {
46
+ if (!this.megamenuElement) return;
47
+ this.element.style.top = `${this.megamenuElement.offsetHeight}px`;
48
+ }
46
49
 
47
- if (this.isActive(item)) {
48
- this.activeItemIndex = index;
49
- }
50
- });
50
+ private setupMegamenuObserver(): void {
51
+ this.megamenuElement = this.findMegamenuElement();
51
52
 
52
- // Ak nie je žiadna položka aktívna, aktivuj prvú
53
- if (this.activeItemIndex === null && this.items.length > 0) {
54
- this.activateNthItem(0);
53
+ if (!this.megamenuElement) {
54
+ this.element.style.top = "0px";
55
+ return;
55
56
  }
57
+
58
+ this.updateStickyPosition();
59
+ window.addEventListener("scroll", this.scrollHandler, { passive: true });
60
+
61
+ this.resizeObserver = new ResizeObserver(
62
+ this.updateStickyPosition.bind(this),
63
+ );
64
+ this.resizeObserver.observe(this.megamenuElement);
56
65
  }
57
66
 
58
- destroy(): void {
59
- this.items.forEach((item) => {
60
- item.removeEventListener("click", this.handleClick);
67
+ private setupScrollSpy(): void {
68
+ // Set dynamic scroll margin for CSS
69
+ document.documentElement.style.setProperty(
70
+ "--extra-scroll-margin",
71
+ this.element.offsetHeight + "px",
72
+ );
73
+
74
+ // Get all anchor navigation links
75
+ this.navLinks = this.element.querySelectorAll(".anchor-navigation__item");
76
+
77
+ // Get all sections that correspond to the navigation links
78
+ this.sections = Array.from(this.navLinks || [])
79
+ .map((link) => link.getAttribute("href"))
80
+ .filter((href) => href?.includes("#"))
81
+ .map((href) => document.getElementById(href!.split("#")[1]))
82
+ .filter(Boolean) as HTMLElement[];
83
+
84
+ // Add click listeners to anchor navigation items
85
+ this.navLinks.forEach((anchor) => {
86
+ anchor.addEventListener("click", (event) => {
87
+ event.preventDefault();
88
+ const href = anchor.getAttribute("href");
89
+ if (href && href.includes("#")) {
90
+ const targetId = href.split("#")[1];
91
+ const targetElement = document.getElementById(targetId);
92
+
93
+ if (targetElement) {
94
+ this.isAutoScrolling = true;
95
+
96
+ // Calculate scroll position
97
+ const scrollOffset = this.megamenuElement
98
+ ? this.megamenuElement.offsetHeight
99
+ : 0;
100
+ const additionalOffset = this.element.offsetHeight;
101
+ const targetTop =
102
+ targetElement.offsetTop - scrollOffset - additionalOffset;
103
+
104
+ // Smooth scroll to target
105
+ window.scrollTo({
106
+ top: Math.max(0, targetTop),
107
+ behavior: "smooth",
108
+ });
109
+
110
+ // Update active state
111
+ this.initScrollSpy(targetId);
112
+ }
113
+ }
114
+ });
61
115
  });
62
116
 
63
- this.items = [];
64
- (this.element as any).ODS_AnchorNavigation = null;
65
- }
117
+ // Add scroll listeners
118
+ window.addEventListener("scroll", this.scrollSpyHandler, { passive: true });
66
119
 
67
- update(): void {
68
- this.destroy();
69
- this.init();
120
+ // Add scrollend listener with fallback
121
+ try {
122
+ window.addEventListener("scrollend", this.scrollEndHandler);
123
+ } catch {
124
+ // Fallback for browsers that don't support scrollend
125
+ let scrollTimeout: ReturnType<typeof setTimeout>;
126
+ const scrollEndFallback = () => {
127
+ clearTimeout(scrollTimeout);
128
+ scrollTimeout = setTimeout(() => {
129
+ this.handleScrollEnd();
130
+ }, 150);
131
+ };
132
+ window.addEventListener("scroll", scrollEndFallback, { passive: true });
133
+ }
134
+
135
+ window.addEventListener("resize", this.resizeHandler);
136
+
137
+ this.initScrollSpy();
70
138
  }
71
139
 
72
- private isActive = (el: HTMLElement): boolean => {
73
- return el.classList.contains('is-active');
74
- };
140
+ private initScrollSpy(forcedSectionId: string | null = null): void {
141
+ if (!this.navLinks || !this.sections.length) return;
142
+
143
+ let targetSection: HTMLElement | undefined;
144
+ let targetIndex: number = -1;
145
+
146
+ // Remove active class from all links
147
+ this.navLinks.forEach((link) => link.classList.remove("is-active"));
148
+
149
+ if (forcedSectionId) {
150
+ targetSection = document.getElementById(forcedSectionId) || undefined;
151
+ if (targetSection) {
152
+ // Find the index of the forced section
153
+ targetIndex = this.sections.findIndex(
154
+ (section) => section.id === forcedSectionId,
155
+ );
156
+ }
157
+ } else {
158
+ // Calculate scroll offset from megamenu height and anchor nav height
159
+ const scrollOffset = this.megamenuElement
160
+ ? this.megamenuElement.offsetHeight
161
+ : 0;
162
+ const anchorNavOffset = this.element.offsetHeight;
163
+ const totalOffset = scrollOffset + anchorNavOffset;
164
+ const effectiveCenter = window.scrollY + totalOffset + 50; // Add some buffer
165
+
166
+ // Find the section that's currently in view
167
+ for (let i = 0; i < this.sections.length; i++) {
168
+ const section = this.sections[i];
169
+ const { top: sectionTopRaw, height: sectionHeight } =
170
+ section.getBoundingClientRect();
171
+ const sectionTop = sectionTopRaw + window.scrollY;
172
+ const sectionBottom = sectionTop + sectionHeight;
75
173
 
76
- private handleClick(e: MouseEvent): void {
77
- const clickedItem = e.currentTarget as HTMLElement;
174
+ if (effectiveCenter >= sectionTop && effectiveCenter < sectionBottom) {
175
+ targetSection = section;
176
+ targetIndex = i;
177
+ break;
178
+ }
179
+ }
180
+ }
78
181
 
79
- // Najdi index kliknutej položky
80
- const clickedIndex = this.items.findIndex(item => item === clickedItem);
81
-
82
- if (clickedIndex !== -1) {
83
- this.activateNthItem(clickedIndex);
182
+ // Fallback logic: if no section is found, use fallback rules
183
+ if (!targetSection) {
184
+ // If we're at the very top, activate first item
185
+ if (window.scrollY <= 100) {
186
+ targetIndex = 0;
187
+ targetSection = this.sections[0];
188
+ } else {
189
+ // Keep the last active item
190
+ targetIndex = this.lastActiveIndex;
191
+ targetSection = this.sections[targetIndex];
192
+ }
84
193
  }
85
- }
86
194
 
87
- private toggleItem(el: HTMLElement, state: "on" | "off"): void {
88
- const isActive = this.isActive(el);
195
+ // Update last active index if we found a valid target
196
+ if (targetIndex >= 0) {
197
+ this.lastActiveIndex = targetIndex;
198
+ }
199
+
200
+ if (targetSection) {
201
+ const id = targetSection.getAttribute("id");
89
202
 
90
- if (state === "on" && !isActive) {
91
- el.classList.add('is-active');
203
+ // Find the matching navigation link - try different href patterns
204
+ let activeLink = this.element.querySelector(
205
+ `.anchor-navigation__item[href="#${id}"]`,
206
+ ) as HTMLElement;
207
+
208
+ if (!activeLink) {
209
+ activeLink = this.element.querySelector(
210
+ `.anchor-navigation__item[href="${this.currentPath}#${id}"]`,
211
+ ) as HTMLElement;
212
+ }
213
+
214
+ if (!activeLink) {
215
+ // Try without current path for relative links
216
+ activeLink = Array.from(this.navLinks).find((link) => {
217
+ const href = link.getAttribute("href");
218
+ return href && href.endsWith(`#${id}`);
219
+ }) as HTMLElement;
220
+ }
221
+
222
+ if (activeLink) {
223
+ activeLink.classList.add("is-active");
224
+
225
+ // Smooth scroll the navigation to center the active link
226
+ const contentLeft = this.element.querySelector(
227
+ ".anchor-navigation__content-left",
228
+ ) as HTMLElement;
229
+ if (contentLeft) {
230
+ contentLeft.scrollTo({
231
+ left:
232
+ activeLink.offsetLeft -
233
+ this.element.clientWidth / 2 +
234
+ activeLink.clientWidth / 2,
235
+ behavior: "smooth",
236
+ });
237
+ }
238
+ }
92
239
  }
240
+ }
93
241
 
94
- if (state === "off" && isActive) {
95
- el.classList.remove('is-active');
242
+ private handleScrollSpy(): void {
243
+ if (!this.isAutoScrolling) {
244
+ this.initScrollSpy();
96
245
  }
97
246
  }
98
247
 
99
- activateNthItem(index: number): void {
100
- if (index < 0 || index >= this.items.length) return;
248
+ private handleScrollEnd(): void {
249
+ this.isAutoScrolling = false;
250
+ this.initScrollSpy();
251
+ }
101
252
 
102
- this.items.forEach((item, i) => {
103
- if (i === index) {
104
- this.activeItemIndex = i;
105
- this.toggleItem(item, "on");
106
- } else {
107
- this.toggleItem(item, "off");
108
- }
109
- });
253
+ private init(): void {
254
+ this.setupMegamenuObserver();
255
+ this.setupScrollSpy();
110
256
  }
111
257
 
112
- getActiveItemIndex(): number | null {
113
- return this.activeItemIndex;
258
+ destroy(): void {
259
+ window.removeEventListener("scroll", this.scrollHandler);
260
+ window.removeEventListener("scroll", this.scrollSpyHandler);
261
+ window.removeEventListener("scrollend", this.scrollEndHandler);
262
+ window.removeEventListener("resize", this.resizeHandler);
263
+
264
+ if (this.resizeObserver) {
265
+ this.resizeObserver.disconnect();
266
+ this.resizeObserver = null;
267
+ }
268
+
269
+ this.element.style.top = "";
270
+ this.megamenuElement = null;
271
+ this.navLinks = null;
272
+ this.sections = [];
273
+ this.lastActiveIndex = 0;
274
+ (this.element as any).ODS_AnchorNavigation = null;
114
275
  }
115
- }
276
+
277
+ update(): void {
278
+ window.removeEventListener("scroll", this.scrollHandler);
279
+ window.removeEventListener("scroll", this.scrollSpyHandler);
280
+ window.removeEventListener("scrollend", this.scrollEndHandler);
281
+ window.removeEventListener("resize", this.resizeHandler);
282
+
283
+ if (this.resizeObserver) {
284
+ this.resizeObserver.disconnect();
285
+ this.resizeObserver = null;
286
+ }
287
+
288
+ this.megamenuElement = null;
289
+ this.navLinks = null;
290
+ this.sections = [];
291
+ this.lastActiveIndex = 0;
292
+
293
+ this.init();
294
+ }
295
+ }
@@ -2,8 +2,8 @@
2
2
 
3
3
  import React from "react";
4
4
  import cx from "classnames";
5
- import { Grid, GridCol } from "../Grid";
6
5
  import { Link } from "../Link";
6
+ import { Container } from "../Container";
7
7
  import { useStatic } from "../../utils/hooks";
8
8
  import AnchorNavigationStatic from "./AnchorNavigation.static";
9
9
 
@@ -27,6 +27,7 @@ const AnchorNavigation = ({
27
27
  className,
28
28
  colorScheme,
29
29
  children,
30
+ ...other
30
31
  }: AnchorNavigationProps) => {
31
32
  const classes = cx(
32
33
  CLASS_ROOT,
@@ -40,35 +41,38 @@ const AnchorNavigation = ({
40
41
  const [anchorNavRef] = useStatic(AnchorNavigationStatic);
41
42
 
42
43
  return (
43
- <div className={classes} ref={anchorNavRef}>
44
- <div className={`${CLASS_ROOT}__content`}>
45
- <Grid
46
- className={`list-unstyled list-inline horizontal-scroll mb-none ${CLASS_ROOT}__content-left`}
44
+ <nav
45
+ className={classes}
46
+ ref={anchorNavRef}
47
+ data-anchor-navigation
48
+ aria-label="Sekcie stránky"
49
+ {...other}
50
+ >
51
+ <Container className={`${CLASS_ROOT}__content`}>
52
+ <ul
53
+ className={cx(
54
+ "list-inline horizontal-scroll mb-none",
55
+ `${CLASS_ROOT}__content-left`,
56
+ )}
47
57
  >
48
58
  {items.map((item) => (
49
- <GridCol
50
- id={item.href.replace("#", "")}
51
- size={"auto"}
52
- key={item.href}
53
- className="pr-none pl-none"
54
- >
59
+ <li key={item.href}>
55
60
  <Link
56
61
  href={item.href}
57
- colorScheme={colorScheme}
58
62
  className={cx(`${CLASS_ROOT}__item`, {
59
63
  "is-active": item.isActive,
60
64
  })}
61
65
  >
62
66
  {item.label}
63
67
  </Link>
64
- </GridCol>
68
+ </li>
65
69
  ))}
66
- </Grid>
70
+ </ul>
67
71
  {children && (
68
72
  <div className={`${CLASS_ROOT}__content-right`}>{children}</div>
69
73
  )}
70
- </div>
71
- </div>
74
+ </Container>
75
+ </nav>
72
76
  );
73
77
  };
74
78
 
@@ -1,3 +1 @@
1
- import "./styles/style.scss";
2
-
3
1
  export { AnchorNavigation } from "./AnchorNavigation";
@@ -4,16 +4,16 @@
4
4
  @use "./../../../styles/tools/generate";
5
5
  @use "./../../../styles/tools/convert";
6
6
  @use "./../../../styles/typography/config" as typography;
7
+ @use "../../Megamenu/styles/config" as megamenuConfig;
7
8
  @use "sass:map" as sass-map;
8
9
 
9
10
  @mixin anchor-navigation() {
10
11
  position: sticky;
11
12
  top: 0;
12
- z-index: 100;
13
+ z-index: 10;
13
14
  background-color: var(--color-background-primary) !important;
14
- padding: space.get("large") 0;
15
+ border-bottom: 1px solid var(--color-border-strong);
15
16
 
16
- // Štýly pre Grid s horizontal-scroll
17
17
  .horizontal-scroll {
18
18
  &::-webkit-scrollbar {
19
19
  display: none !important;
@@ -22,7 +22,6 @@
22
22
  background: transparent !important;
23
23
  }
24
24
 
25
- // Pre Firefox
26
25
  scrollbar-width: none !important;
27
26
  -ms-overflow-style: none !important;
28
27
  }
@@ -30,22 +29,13 @@
30
29
 
31
30
  @mixin anchor-navigation-item() {
32
31
  margin-right: space.get("large") !important;
32
+ margin-bottom: 0 !important;
33
33
  padding: convert.to-rem(25px) 0 !important;
34
34
  white-space: nowrap;
35
- border-bottom: 4px solid transparent;
36
35
  text-decoration: none !important;
37
36
  display: inline-block;
38
37
  cursor: pointer;
39
-
40
- &:focus {
41
- background-color: var(--color-background-primary) !important;
42
- color: var(--color-text-default) !important;
43
- outline: none !important;
44
- }
45
-
46
- &:hover {
47
- text-decoration: none !important;
48
- }
38
+ font-weight: 700 !important;
49
39
 
50
40
  &:last-child {
51
41
  margin-right: 0;
@@ -56,9 +46,14 @@
56
46
  padding: space.get("small") 0 !important;
57
47
  }
58
48
 
49
+ &:hover,
50
+ &:focus-visible,
51
+ &:active,
59
52
  &.is-active {
60
- border-bottom-color: var(--color-border-accent);
61
- font-weight: 600;
53
+ box-shadow: megamenuConfig.$active-line;
54
+ color: inherit;
55
+ text-decoration: none !important;
56
+ outline: none;
62
57
  }
63
58
  }
64
59
 
@@ -67,24 +62,17 @@
67
62
  justify-content: space-between;
68
63
  align-items: center;
69
64
  position: relative;
70
- border-bottom: 1px solid var(--color-border-subtle);
71
- padding: 0 convert.to-rem(70px);
72
-
73
- @include breakpoint.get("xl", "down") {
74
- padding: 0 convert.to-rem(42px);
75
- }
76
65
 
77
66
  @include breakpoint.get("xs", "down") {
78
- padding: 0 convert.to-rem(10px);
79
- border-bottom: none;
80
67
  overflow: hidden;
81
68
  flex-direction: column;
82
69
  }
83
70
  }
84
71
 
85
72
  @mixin anchor-navigation-content-left() {
73
+ display: flex;
74
+
86
75
  @include breakpoint.get("xs", "down") {
87
- border-bottom: 1px solid var(--color-border-subtle);
88
76
  width: 100%;
89
77
  }
90
78
  }
@@ -119,7 +107,6 @@
119
107
  display: none;
120
108
  }
121
109
  padding: space.get("small") 0;
122
- border-bottom: 1px solid var(--color-border-subtle);
123
110
  width: 100%;
124
111
  justify-content: space-between;
125
112
  }