@dubai-design-system/components-js 5.2.0 → 5.3.1

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 (297) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/MIGRATION.md +153 -18
  3. package/dist/cjs/dda-accordion.cjs.entry.js +3 -3
  4. package/dist/cjs/dda-alert.cjs.entry.js +5 -5
  5. package/dist/cjs/dda-attach-file.cjs.entry.js +3 -3
  6. package/dist/cjs/dda-avatar.cjs.entry.js +8 -8
  7. package/dist/{dda/dda-credit-card.entry.js → cjs/dda-banner-card.cjs.entry.js} +16 -16
  8. package/dist/cjs/dda-banner.cjs.entry.js +3 -3
  9. package/dist/cjs/dda-breadcrumb.cjs.entry.js +2 -2
  10. package/dist/cjs/dda-button.cjs.entry.js +3 -3
  11. package/dist/cjs/dda-checkbox.cjs.entry.js +3 -3
  12. package/dist/cjs/dda-chip.cjs.entry.js +3 -3
  13. package/dist/cjs/dda-credit-card.cjs.entry.js +3 -3
  14. package/dist/cjs/dda-creditcard-field.cjs.entry.js +4 -4
  15. package/dist/cjs/dda-dropdown.cjs.entry.js +4 -4
  16. package/dist/cjs/dda-footer.cjs.entry.js +3 -3
  17. package/dist/cjs/dda-header.cjs.entry.js +208 -23
  18. package/dist/cjs/dda-home-banner.cjs.entry.js +9 -5
  19. package/dist/{dda/dda-tooltip.entry.js → cjs/dda-home-carousel.cjs.entry.js} +18 -36
  20. package/dist/cjs/dda-horizontal-stepper.cjs.entry.js +3 -3
  21. package/dist/cjs/dda-input.cjs.entry.js +3 -3
  22. package/dist/cjs/dda-link-button_2.cjs.entry.js +6 -6
  23. package/dist/cjs/dda-number-field.cjs.entry.js +3 -3
  24. package/dist/cjs/dda-pagination.cjs.entry.js +4 -4
  25. package/dist/cjs/dda-phonefield.cjs.entry.js +3 -3
  26. package/dist/cjs/dda-progressbar.cjs.entry.js +3 -3
  27. package/dist/cjs/dda-range-slider.cjs.entry.js +3 -3
  28. package/dist/cjs/dda-scroll-icon.cjs.entry.js +32 -0
  29. package/dist/cjs/dda-search-input.cjs.entry.js +2 -2
  30. package/dist/cjs/dda-segmented-tabs.cjs.entry.js +5 -5
  31. package/dist/cjs/dda-select.cjs.entry.js +84 -15
  32. package/dist/cjs/dda-sticky-footer.cjs.entry.js +41 -4
  33. package/dist/cjs/dda-tabs.cjs.entry.js +4 -4
  34. package/dist/cjs/dda-textarea.cjs.entry.js +1351 -16189
  35. package/dist/cjs/dda-toggle.cjs.entry.js +3 -3
  36. package/dist/cjs/dda-tooltip.cjs.entry.js +3 -3
  37. package/dist/cjs/dda-ui-card.cjs.entry.js +3 -3
  38. package/dist/cjs/dda-vertical-stepper.cjs.entry.js +2 -2
  39. package/dist/cjs/dda.cjs.js +3 -30
  40. package/dist/cjs/{index-Na_7EWDR.js → index-CM4T__Je.js} +1 -1
  41. package/dist/cjs/index.cjs.js +0 -10
  42. package/dist/cjs/loader.cjs.js +2 -2
  43. package/dist/cjs/parse-json-prop-B0KWD8qe.js +38 -0
  44. package/dist/collection/collection-manifest.json +7 -4
  45. package/dist/collection/components/dda-accordion/dda-accordion.js +1 -1
  46. package/dist/collection/components/dda-alert/dda-alert.js +1 -1
  47. package/dist/collection/components/dda-attach-file/dda-attach-file.js +1 -1
  48. package/dist/collection/components/dda-avatar/dda-avatar.js +5 -5
  49. package/dist/collection/components/dda-banner/dda-banner.js +1 -1
  50. package/dist/collection/components/dda-banner-card/dda-banner-card.js +243 -0
  51. package/dist/collection/components/dda-button/dda-button.js +1 -1
  52. package/dist/collection/components/dda-checkbox/dda-checkbox.js +1 -1
  53. package/dist/collection/components/dda-chip/dda-chip.js +1 -1
  54. package/dist/collection/components/dda-credit-card/dda-credit-card.js +1 -1
  55. package/dist/collection/components/dda-creditcard-field/dda-creditcard-field.js +1 -1
  56. package/dist/collection/components/dda-dropdown/dda-dropdown.js +1 -1
  57. package/dist/collection/components/dda-footer/dda-footer.js +1 -1
  58. package/dist/collection/components/dda-header/dda-header.js +838 -88
  59. package/dist/collection/components/dda-header/dda-header.stories.js +200 -35
  60. package/dist/collection/components/dda-header/nav-model.js +69 -0
  61. package/dist/collection/components/dda-home-banner/dda-home-banner.js +46 -2
  62. package/dist/collection/components/dda-home-banner/dda-home-banner.stories.js +6 -0
  63. package/dist/collection/components/dda-home-banner/home-banner.css +10 -0
  64. package/dist/collection/components/dda-home-carousel/dda-home-carousel.js +164 -0
  65. package/dist/collection/components/dda-home-carousel/dda-home-carousel.stories.js +24 -0
  66. package/dist/collection/components/dda-input/dda-input.js +1 -1
  67. package/dist/collection/components/dda-link-button/dda-link-button.js +2 -2
  68. package/dist/collection/components/dda-number-field/dda-number-field.js +1 -1
  69. package/dist/collection/components/dda-pagination/dda-pagination.js +1 -1
  70. package/dist/collection/components/dda-phonefield/dda-phonefield.js +1 -1
  71. package/dist/collection/components/dda-progressbar/dda-progressbar.js +1 -1
  72. package/dist/collection/components/dda-radiobutton/dda-radiobutton.css +233 -6
  73. package/dist/collection/components/dda-radiobutton/dda-radiobutton.js +1 -1
  74. package/dist/collection/components/dda-range-slider/dda-range-slider.js +2 -2
  75. package/dist/collection/components/dda-scroll-icon/dda-scroll-icon.css +72 -0
  76. package/dist/collection/components/dda-scroll-icon/dda-scroll-icon.js +120 -0
  77. package/dist/collection/components/dda-scroll-icon/dda-scroll-icon.stories.js +17 -0
  78. package/dist/collection/components/dda-select/dda-select.js +209 -18
  79. package/dist/collection/components/dda-select/dda-select.stories.js +68 -10
  80. package/dist/collection/components/dda-sticky-footer/dda-sticky-footer.js +496 -5
  81. package/dist/collection/components/dda-sticky-footer/dda-sticky-footer.stories.js +12 -1
  82. package/dist/collection/components/dda-tabs/dda-tabs.js +1 -1
  83. package/dist/collection/components/dda-textarea/dda-textarea.js +2 -2
  84. package/dist/collection/components/dda-toggle/dda-toggle.js +1 -1
  85. package/dist/collection/components/dda-tooltip/dda-tooltip.js +1 -1
  86. package/dist/collection/components/dda-ui-card/dda-ui-card.js +1 -1
  87. package/dist/collection/components/segmented-groups/dda-segmented-tabs/dda-segmented-tabs.css +29 -9
  88. package/dist/collection/components/segmented-groups/dda-segmented-tabs/dda-segmented-tabs.js +1 -1
  89. package/dist/collection/components/stepper/dda-horizontal-stepper/dda-horizontal-stepper.js +1 -1
  90. package/dist/collection/components/stepper/dda-vertical-stepper/dda-vertical-stepper.js +1 -1
  91. package/dist/collection/global/global.css +233 -6
  92. package/dist/collection/utils/parse-json-prop.js +34 -0
  93. package/dist/components/dda-accordion.js +1 -59
  94. package/dist/components/dda-alert.js +1 -94
  95. package/dist/components/dda-attach-file.js +1 -138
  96. package/dist/components/dda-avatar.js +1 -107
  97. package/dist/components/dda-banner-card.d.ts +11 -0
  98. package/dist/components/dda-banner-card.js +1 -0
  99. package/dist/components/dda-banner.js +1 -57
  100. package/dist/components/dda-breadcrumb.js +1 -66
  101. package/dist/components/dda-button.js +1 -6
  102. package/dist/components/dda-checkbox.js +1 -59
  103. package/dist/components/dda-chip.js +1 -55
  104. package/dist/components/dda-credit-card.js +1 -54
  105. package/dist/components/dda-creditcard-field.js +1 -133
  106. package/dist/components/dda-dropdown.js +1 -113
  107. package/dist/components/dda-footer.js +1 -72
  108. package/dist/components/dda-header.js +1 -367
  109. package/dist/components/dda-home-banner.js +1 -249
  110. package/dist/components/dda-home-carousel.d.ts +11 -0
  111. package/dist/components/dda-home-carousel.js +1 -0
  112. package/dist/components/dda-horizontal-stepper.js +1 -69
  113. package/dist/components/dda-input.js +1 -92
  114. package/dist/components/dda-link-button.js +1 -6
  115. package/dist/components/dda-number-field.js +1 -127
  116. package/dist/components/dda-pagination.js +1 -133
  117. package/dist/components/dda-phonefield.js +1 -316
  118. package/dist/components/dda-progressbar.js +1 -58
  119. package/dist/components/dda-radiobutton.js +1 -6
  120. package/dist/components/dda-range-slider.js +1 -93
  121. package/dist/components/dda-scroll-icon.d.ts +11 -0
  122. package/dist/components/dda-scroll-icon.js +1 -0
  123. package/dist/components/dda-search-input.js +1 -102
  124. package/dist/components/dda-segmented-tabs.js +1 -133
  125. package/dist/components/dda-select.js +1 -219
  126. package/dist/components/dda-sticky-footer.js +1 -132
  127. package/dist/components/dda-tabs.js +1 -91
  128. package/dist/components/dda-textarea.js +1 -31277
  129. package/dist/components/dda-toggle.js +1 -55
  130. package/dist/components/dda-tooltip.js +1 -6
  131. package/dist/components/dda-ui-card.js +1 -71
  132. package/dist/components/dda-vertical-stepper.js +1 -72
  133. package/dist/components/index.js +1 -34
  134. package/dist/components/p-BUv5-HOm.js +1 -0
  135. package/dist/components/p-BvEnF2US.js +1 -0
  136. package/dist/components/{p-C2Cs3ruo.js → p-C8EPNbJC.js} +1 -1
  137. package/dist/components/p-CS5LPB9B.js +1 -0
  138. package/dist/components/p-CedhFs0i.js +1 -0
  139. package/dist/components/p-CvcFE821.js +1 -0
  140. package/dist/components/{p-D7sJgBDk.js → p-DHgv6zQy.js} +1 -1
  141. package/dist/components/p-kJRBkcMn.js +1 -0
  142. package/dist/dda/dda.css +46 -6385
  143. package/dist/dda/dda.esm.js +1 -47
  144. package/dist/dda/index.esm.js +1 -29
  145. package/dist/dda/p-074f8dab.entry.js +1 -0
  146. package/dist/dda/p-1a0d490e.entry.js +1 -0
  147. package/dist/dda/p-1c42a19b.entry.js +1 -0
  148. package/dist/dda/p-1eb0af5a.entry.js +1 -0
  149. package/dist/dda/p-215629d6.entry.js +1 -0
  150. package/dist/dda/{p-eed4a104.entry.js → p-221613e8.entry.js} +1 -1
  151. package/dist/dda/{p-3835f3b7.entry.js → p-284bc873.entry.js} +1 -1
  152. package/dist/dda/{p-98c59aa8.entry.js → p-2f99af01.entry.js} +1 -1
  153. package/dist/dda/p-3003acb0.entry.js +1 -0
  154. package/dist/dda/p-5b314403.entry.js +1 -0
  155. package/dist/dda/{p-32746429.entry.js → p-5b669c2f.entry.js} +1 -1
  156. package/dist/dda/p-5fe5c488.entry.js +1 -0
  157. package/dist/dda/{p-95b87c55.entry.js → p-6577d6b5.entry.js} +1 -1
  158. package/dist/dda/{p-95e1a389.entry.js → p-6b358fa8.entry.js} +1 -1
  159. package/dist/dda/{p-eecfe091.entry.js → p-6e6ce5c8.entry.js} +1 -1
  160. package/dist/dda/{p-d8fd3f73.entry.js → p-70a20025.entry.js} +1 -1
  161. package/dist/dda/p-78ff5172.entry.js +1 -0
  162. package/dist/dda/{p-489a3711.entry.js → p-7afdde8a.entry.js} +1 -1
  163. package/dist/dda/{p-1acc0fda.entry.js → p-7ba8071a.entry.js} +1 -1
  164. package/dist/dda/{p-96741f45.entry.js → p-7d20f926.entry.js} +1 -1
  165. package/dist/dda/p-806de72d.entry.js +1 -0
  166. package/dist/dda/{p-0a86a74c.entry.js → p-922d33f8.entry.js} +1 -1
  167. package/dist/dda/{p-c39d196d.entry.js → p-9a9e372d.entry.js} +1 -1
  168. package/dist/dda/{p-0574c9df.entry.js → p-9c3b7bf8.entry.js} +1 -1
  169. package/dist/dda/p-BJOt1fv7.js +2 -0
  170. package/dist/dda/p-CvcFE821.js +1 -0
  171. package/dist/dda/{p-ee6d56fc.entry.js → p-a19303b5.entry.js} +1 -1
  172. package/dist/dda/{p-87d647e7.entry.js → p-c7a4e410.entry.js} +1 -1
  173. package/dist/dda/{p-8de4f35e.entry.js → p-c9e411cb.entry.js} +1 -1
  174. package/dist/dda/{p-3d57e957.entry.js → p-cd1d47cb.entry.js} +1 -1
  175. package/dist/dda/p-cfdbbd1a.entry.js +1 -0
  176. package/dist/dda/{p-e660a594.entry.js → p-d114dea3.entry.js} +1 -1
  177. package/dist/dda/{p-16f94322.entry.js → p-db565a30.entry.js} +1 -1
  178. package/dist/dda/{p-d06c5daf.entry.js → p-e6043272.entry.js} +1 -1
  179. package/dist/dda/p-ef52ec1e.entry.js +1 -0
  180. package/dist/dda/{p-9c86dc30.entry.js → p-f2c9d77a.entry.js} +1 -1
  181. package/dist/dda/{p-2630152f.entry.js → p-faccb313.entry.js} +1 -1
  182. package/dist/dda/{p-9416d8ec.entry.js → p-fdf0dce8.entry.js} +1 -1
  183. package/dist/esm/dda-accordion.entry.js +3 -3
  184. package/dist/esm/dda-alert.entry.js +5 -5
  185. package/dist/esm/dda-attach-file.entry.js +3 -3
  186. package/dist/esm/dda-avatar.entry.js +8 -8
  187. package/dist/{dda/dda-tabs.entry.js → esm/dda-banner-card.entry.js} +14 -49
  188. package/dist/esm/dda-banner.entry.js +3 -3
  189. package/dist/esm/dda-breadcrumb.entry.js +2 -2
  190. package/dist/esm/dda-button.entry.js +3 -3
  191. package/dist/esm/dda-checkbox.entry.js +3 -3
  192. package/dist/esm/dda-chip.entry.js +3 -3
  193. package/dist/esm/dda-credit-card.entry.js +3 -3
  194. package/dist/esm/dda-creditcard-field.entry.js +4 -4
  195. package/dist/esm/dda-dropdown.entry.js +4 -4
  196. package/dist/esm/dda-footer.entry.js +3 -3
  197. package/dist/esm/dda-header.entry.js +208 -23
  198. package/dist/esm/dda-home-banner.entry.js +9 -5
  199. package/dist/{dda/dda-breadcrumb.entry.js → esm/dda-home-carousel.entry.js} +16 -30
  200. package/dist/esm/dda-horizontal-stepper.entry.js +3 -3
  201. package/dist/esm/dda-input.entry.js +3 -3
  202. package/dist/esm/dda-link-button_2.entry.js +6 -6
  203. package/dist/esm/dda-number-field.entry.js +3 -3
  204. package/dist/esm/dda-pagination.entry.js +4 -4
  205. package/dist/esm/dda-phonefield.entry.js +3 -3
  206. package/dist/esm/dda-progressbar.entry.js +3 -3
  207. package/dist/esm/dda-range-slider.entry.js +3 -3
  208. package/dist/esm/dda-scroll-icon.entry.js +30 -0
  209. package/dist/esm/dda-search-input.entry.js +2 -2
  210. package/dist/esm/dda-segmented-tabs.entry.js +5 -5
  211. package/dist/esm/dda-select.entry.js +84 -15
  212. package/dist/esm/dda-sticky-footer.entry.js +41 -4
  213. package/dist/esm/dda-tabs.entry.js +4 -4
  214. package/dist/esm/dda-textarea.entry.js +1351 -16189
  215. package/dist/esm/dda-toggle.entry.js +3 -3
  216. package/dist/esm/dda-tooltip.entry.js +3 -3
  217. package/dist/esm/dda-ui-card.entry.js +3 -3
  218. package/dist/esm/dda-vertical-stepper.entry.js +2 -2
  219. package/dist/esm/dda.js +4 -31
  220. package/dist/esm/{index-CI_UcUy5.js → index-BJOt1fv7.js} +1 -1
  221. package/dist/esm/index.js +0 -10
  222. package/dist/esm/loader.js +3 -3
  223. package/dist/esm/parse-json-prop-CvcFE821.js +36 -0
  224. package/dist/types/components/dda-banner-card/dda-banner-card.d.ts +25 -0
  225. package/dist/types/components/dda-header/dda-header.d.ts +114 -4
  226. package/dist/types/components/dda-header/dda-header.stories.d.ts +187 -0
  227. package/dist/types/components/dda-header/nav-model.d.ts +19 -0
  228. package/dist/types/components/dda-home-banner/dda-home-banner.d.ts +4 -0
  229. package/dist/types/components/dda-home-banner/dda-home-banner.stories.d.ts +8 -0
  230. package/dist/types/components/dda-home-carousel/dda-home-carousel.d.ts +29 -0
  231. package/dist/types/components/dda-home-carousel/dda-home-carousel.stories.d.ts +20 -0
  232. package/dist/types/components/dda-scroll-icon/dda-scroll-icon.d.ts +11 -0
  233. package/dist/types/components/dda-scroll-icon/dda-scroll-icon.stories.d.ts +20 -0
  234. package/dist/types/components/dda-select/dda-select.d.ts +40 -5
  235. package/dist/types/components/dda-select/dda-select.stories.d.ts +25 -0
  236. package/dist/types/components/dda-sticky-footer/dda-sticky-footer.d.ts +70 -1
  237. package/dist/types/components/dda-sticky-footer/dda-sticky-footer.stories.d.ts +4 -0
  238. package/dist/types/components.d.ts +863 -21
  239. package/dist/types/utils/parse-json-prop.d.ts +1 -0
  240. package/package.json +4 -2
  241. package/dist/cjs/dda-link-button.cjs.entry.js +0 -51
  242. package/dist/cjs/dda-radiobutton.cjs.entry.js +0 -27
  243. package/dist/cjs/index-DXyiIgGK.js +0 -4637
  244. package/dist/components/dda-button2.js +0 -80
  245. package/dist/components/dda-link-button2.js +0 -81
  246. package/dist/components/dda-radiobutton2.js +0 -54
  247. package/dist/components/dda-tooltip2.js +0 -70
  248. package/dist/components/index2.js +0 -4622
  249. package/dist/components/p-C520q-ka.js +0 -1
  250. package/dist/components/p-CZO9Eawo.js +0 -1
  251. package/dist/components/p-_-I_65FG.js +0 -1
  252. package/dist/components/unique-id.js +0 -12
  253. package/dist/dda/dda-accordion.entry.js +0 -31
  254. package/dist/dda/dda-alert.entry.js +0 -57
  255. package/dist/dda/dda-attach-file.entry.js +0 -102
  256. package/dist/dda/dda-avatar.entry.js +0 -70
  257. package/dist/dda/dda-banner.entry.js +0 -30
  258. package/dist/dda/dda-button.entry.js +0 -47
  259. package/dist/dda/dda-checkbox.entry.js +0 -27
  260. package/dist/dda/dda-chip.entry.js +0 -25
  261. package/dist/dda/dda-creditcard-field.entry.js +0 -94
  262. package/dist/dda/dda-dropdown.entry.js +0 -75
  263. package/dist/dda/dda-footer.entry.js +0 -34
  264. package/dist/dda/dda-header.entry.js +0 -282
  265. package/dist/dda/dda-home-banner.entry.js +0 -208
  266. package/dist/dda/dda-horizontal-stepper.entry.js +0 -39
  267. package/dist/dda/dda-input.entry.js +0 -56
  268. package/dist/dda/dda-link-button.entry.js +0 -49
  269. package/dist/dda/dda-number-field.entry.js +0 -86
  270. package/dist/dda/dda-pagination.entry.js +0 -86
  271. package/dist/dda/dda-phonefield.entry.js +0 -271
  272. package/dist/dda/dda-progressbar.entry.js +0 -30
  273. package/dist/dda/dda-radiobutton.entry.js +0 -25
  274. package/dist/dda/dda-range-slider.entry.js +0 -55
  275. package/dist/dda/dda-search-input.entry.js +0 -63
  276. package/dist/dda/dda-segmented-tabs.entry.js +0 -96
  277. package/dist/dda/dda-select.entry.js +0 -183
  278. package/dist/dda/dda-sticky-footer.entry.js +0 -61
  279. package/dist/dda/dda-textarea.entry.js +0 -31241
  280. package/dist/dda/dda-toggle.entry.js +0 -25
  281. package/dist/dda/dda-ui-card.entry.js +0 -41
  282. package/dist/dda/dda-vertical-stepper.entry.js +0 -41
  283. package/dist/dda/index-CFIwfRqf.js +0 -4622
  284. package/dist/dda/p-271c5f91.entry.js +0 -1
  285. package/dist/dda/p-58de747b.entry.js +0 -1
  286. package/dist/dda/p-63754a93.entry.js +0 -1
  287. package/dist/dda/p-9541e108.entry.js +0 -1
  288. package/dist/dda/p-CI_UcUy5.js +0 -2
  289. package/dist/dda/p-b6190656.entry.js +0 -1
  290. package/dist/dda/p-c0da1e14.entry.js +0 -1
  291. package/dist/dda/p-c5ebf7df.entry.js +0 -1
  292. package/dist/dda/p-e8ca224f.entry.js +0 -1
  293. package/dist/dda/p-ea1720d2.entry.js +0 -1
  294. package/dist/dda/unique-id-B-I003EB.js +0 -12
  295. package/dist/esm/dda-link-button.entry.js +0 -49
  296. package/dist/esm/dda-radiobutton.entry.js +0 -25
  297. package/dist/esm/index-CFIwfRqf.js +0 -4622
package/CHANGELOG.md CHANGED
@@ -4,6 +4,98 @@ All notable changes to the Dubai Design System packages are documented in this f
4
4
  All four published packages (`components-js`, `components-react`, `components-vue`,
5
5
  `components-angular`) share a version and release together.
6
6
 
7
+ ## 5.3.1 (2026-09-28)
8
+
9
+ A patch release. It fixes the search text on the transparent header and brings back the banner scroll icon, `dda-scroll-icon`, and `dda-select` options with ids, as in 3.x.
10
+
11
+ ### Bug Fixes
12
+
13
+ - **dda-header: typed search text is white on the transparent header.** 5.3.0 made only the placeholder white, so typed text was black on the dark banner. The typed text and the caret are now white at the top of the page, and dark again when the header turns white on scroll.
14
+ - **dda-select: `main_aria_label` hid the label and the selected value.** `main_aria_label` set the trigger's `aria-label`, which replaces `aria-labelledby`, so screen readers announced only `main_aria_label`'s text, not the label or the current selection. `main_aria_label` now applies only when there is no `label`. With a `label`, the trigger keeps `aria-labelledby` and `main_aria_label` is ignored.
15
+ - **dda-select: `selectChanged` dropped extra fields on object options.** For an `{ id, text }` option with extra fields (for example `{ id: 1, text: "Dubai", code: "DXB" }`), `selectChanged` now sends the full object, as 3.x did. String options are unaffected.
16
+ - **dda-select: a false `selectionChange` when `selected` holds text or a differently-typed id.** Re-picking the already-selected option could still fire `selectionChange` when `selected` was matched by text, or set as a number where the option id is a string. It no longer fires in these cases.
17
+ - **dda-select: `selectBlurred` fired when a keyboard open moved focus into the list.** Opening the list with Arrow Down/Up moves focus from the trigger into the list, which is not the user leaving the field. `selectBlurred` no longer fires for it.
18
+ - **dda-select: `selectBlurred`'s `name` could be `undefined`.** It now falls back to the trigger's own id when neither `input_name` nor `button_id` is set.
19
+
20
+ ### Features
21
+
22
+ - **dda-home-banner: the scroll icon is back.** The slide controls end with a decorative scroll icon, as in 3.x. It is hidden from assistive technology and at 992px and below. Add `show_scroll_icon_mobile` to show it at 992px and below too. Set `show_scroll_icon="false"` to remove it.
23
+ - **dda-scroll-icon is back.** `scroll_icon_size` (`sm`, `lg`) and `scroll_icon_color` (`white`, `black`) work as in 3.x. The dot does not move when the user asks for reduced motion.
24
+ - **dda-select: options with ids.** `options` also takes 3.x `{ id, text }` objects, and `selected` takes the id or the text. `placeholder`, `input_name` and `validation_type` work as in 3.x, `main_aria_label` is back (see Bug Fixes for its scope), and the 3.x events `selectChanged` and `selectBlurred` are back. `selectionChange` now also sends `id` and `text`. String options work as before.
25
+
26
+ ### Behaviour Changes
27
+
28
+ - **dda-select: `selectionChange`'s `detail` has two new keys.** `detail` is now `{ value, id, text }`; `value` is unchanged. Code that deep-compares the whole `detail` object, rather than reading `detail.value`, sees the new `id` and `text` keys.
29
+ - **dda-select: a `selected` value that matches no option shows the placeholder.** Earlier releases showed the raw `selected` text instead.
30
+
31
+ ## 5.3.0 (2026-09-24)
32
+
33
+ A minor release. It brings back the 3.x attributes and components that sites built on 3.5 –
34
+ 3.12.10 use, so they can upgrade to 5.x. Most dda-header text can now be set. Read
35
+ "From 3.5 – 3.12.10 to 5.3.0" in MIGRATION.md.
36
+
37
+ ### Features
38
+
39
+ - **3.x attributes work again.** Versions 3.5 to 3.12.10 had attributes that 3.12.11 to 5.2.0
40
+ did not have. The ones below are back, under their 3.x names. "From 3.5 – 3.12.10 to 5.3.0"
41
+ in MIGRATION.md lists them. A page that uses only 5.x attributes can change in a small number of
42
+ places. "Behaviour Changes" below lists them.
43
+ - **dda-header: the panel, toolbar and side-menu texts can be set.** The accessibility panel, the
44
+ tooltips, the search placeholder and the side-menu titles take attributes, so a page can show
45
+ them in its own language. An empty attribute removes that text. An empty `login-text` or
46
+ `language_text` removes the Login link or the language button, as in 3.x. A few close-button
47
+ labels (for example "Close Sidebar") stay fixed English text; they have no attribute.
48
+ - **dda-header: the 3.x menu shape.** `quick-links` also accepts the 3.x shape (`type`,
49
+ `headerMenuLabel`, `url`, `children`). `dda_default_submenu` items open a dropdown list with a
50
+ second-level fly-out. In TypeScript, `quickLinks` has the type `string | QuickLinkItem[]`, so a
51
+ React, Vue or Angular page can set an array.
52
+ - **dda-header: other menu, 3.x mobile search link, events.** New: `other-menu-items`,
53
+ `side-other-menu-title`, `hide-other-menu`, `mobile-menu-search-url`, and the
54
+ `accessibilitymenufunctionality` and `searchfunctionality` events.
55
+ - **dda-sticky-footer: lists, dubai.ae and the more button.** `middle-link` takes any number of
56
+ logos. `right-link` takes text links with Material icons. `more-icon` adds a button that collects
57
+ the right links on phones. New: `dubaiae-icon-*`, `color-theme`, `*-icon-id`, `*-icon-src-dark`.
58
+ - **dda-home-carousel and dda-banner-card are back.** The cards are links and use the same
59
+ scrolling row as the home-page quick links.
60
+
61
+ ### Bug Fixes
62
+
63
+ - **dda-header: the side-menu ReadSpeaker link has its own id.** Both the desktop and the
64
+ side-menu ReadSpeaker links rendered `id="readspeaker_button1"`, a duplicate id. The side-menu
65
+ copy is now `readspeaker_button1Mobile`.
66
+ - **dda-header: the `L` access key is only on the desktop ReadSpeaker link.** The side-menu copy
67
+ had it too, so pressing `Alt+Shift+L` (or the browser's access-key combination) could activate
68
+ the hidden side-menu link instead of the visible one.
69
+ - **dda-segmented-tabs: the Dubai font, one-line labels, a scrollbar and a focus ring.** The
70
+ segments are buttons, so the browser showed them in its own font, not Dubai. A long label could
71
+ break onto two lines and go outside the segment's fixed height, and a group wider than its
72
+ container made the page wider. The segments had no visible focus ring. The segments now use the
73
+ page font and keep each label on one line, the group scrolls inside its container instead of
74
+ widening it, and a focus ring shows inside the selected segment.
75
+
76
+ ### Behaviour Changes
77
+
78
+ These changes also apply to a page that uses only 5.x attributes. "From 5.2.x to 5.3.0" in
79
+ MIGRATION.md tells you what to check.
80
+
81
+ - **dda-header: an empty `login-text` removes the Login link.** In 5.2.0, an empty `login-text`
82
+ showed the default label "Login". Now it removes the Login link from the toolbar and the side
83
+ menu, as in 3.x. Remove the attribute to show "Login".
84
+ - **dda-header: an empty `language_text` removes the language button.** In 5.2.0, an empty
85
+ `language_text` showed "العربية". Now it removes the language button, as in 3.x. Remove the
86
+ attribute to show "العربية".
87
+ - **dda-header: a `quick-links` item without `href` links to `#`.** In 5.2.0, a 5.x item or a
88
+ mega-menu link without `href` rendered an `<a>` with no `href`. Now the link has `href="#"`.
89
+ - **Home-page service cards show a focus style.** A `.quick-links .link-item` card now moves up
90
+ and shows an outline when it gets keyboard focus (`:focus-visible`). This also applies to the
91
+ plain-HTML cards of 5.2.0. If your own CSS styles this focus state, check that the two styles
92
+ agree.
93
+ - **dda-sticky-footer: the middle logos show by default.** Before, they showed only with
94
+ `hide-middle-section="false"`. Now they show when at least one logo is set. Use
95
+ `hide-middle-section` to hide them.
96
+ - **dda-sticky-footer: an item without an image is not rendered.** Before, every item rendered,
97
+ and an item without an image was an empty link.
98
+
7
99
  ## 5.2.0 (2026-09-23)
8
100
 
9
101
  A minor release. The home-page service cards become one scrolling row that stays on the banner at
package/MIGRATION.md CHANGED
@@ -1,7 +1,7 @@
1
- # Upgrading to 5.2
1
+ # Upgrading to 5.3
2
2
 
3
3
  This guide takes you from any earlier release of the Dubai Design System packages to
4
- **5.2.0**. It ships inside `@dubai-design-system/components-js` as `MIGRATION.md`, next to
4
+ **5.3.0**. It ships inside `@dubai-design-system/components-js` as `MIGRATION.md`, next to
5
5
  `CHANGELOG.md`.
6
6
 
7
7
  All four packages share one version and must be upgraded together:
@@ -22,10 +22,12 @@ Then read the sections for your version, in this order:
22
22
 
23
23
  | You are on | Read |
24
24
  | --- | --- |
25
- | **5.1.x** (5.1.0 – 5.1.1) | [Every upgrade](#2-every-upgrade-checklist) → [5.1.x to 5.2.0](#3-from-51x-to-520) |
26
- | **5.0.x** (5.0.0 – 5.0.3) | [Every upgrade](#2-every-upgrade-checklist) → [5.0.x to 5.1.0](#4-from-50x-to-510) → [5.1.x to 5.2.0](#3-from-51x-to-520) |
27
- | **4.1.0** | [Every upgrade](#2-every-upgrade-checklist) → [From 4.1.0](#6-from-410) → [From 3.x](#7-from-3x-to-50) → [5.0.x to 5.1.0](#4-from-50x-to-510) → [5.1.x to 5.2.0](#3-from-51x-to-520) |
28
- | **3.x** (3.12.16 or earlier) | [Every upgrade](#2-every-upgrade-checklist) → [From 3.x](#7-from-3x-to-50) → [Notes from 5.0.1](#5-notes-from-501-fonts-and-the-stylesheet) → [5.0.x to 5.1.0](#4-from-50x-to-510) → [5.1.x to 5.2.0](#3-from-51x-to-520) |
25
+ | **5.2.x** (5.2.0) | [Every upgrade](#2-every-upgrade-checklist) → [5.2.x to 5.3.0](#3-from-52x-to-530) |
26
+ | **5.1.x** (5.1.0 – 5.1.1) | [Every upgrade](#2-every-upgrade-checklist) → [5.1.x to 5.2.0](#5-from-51x-to-520) → [5.2.x to 5.3.0](#3-from-52x-to-530) |
27
+ | **5.0.x** (5.0.0 – 5.0.3) | [Every upgrade](#2-every-upgrade-checklist) → [5.0.x to 5.1.0](#6-from-50x-to-510) → [5.1.x to 5.2.0](#5-from-51x-to-520) → [5.2.x to 5.3.0](#3-from-52x-to-530) |
28
+ | **4.1.0** | [Every upgrade](#2-every-upgrade-checklist) → [From 4.1.0](#8-from-410) → [From 3.x](#9-from-3x-to-50) → [Notes from 5.0.1](#7-notes-from-501-fonts-and-the-stylesheet) → [5.0.x to 5.1.0](#6-from-50x-to-510) → [5.1.x to 5.2.0](#5-from-51x-to-520) → [5.2.x to 5.3.0](#3-from-52x-to-530) |
29
+ | **3.5 – 3.12.10** (for example 3.11.3) | [Every upgrade](#2-every-upgrade-checklist) → [From 3.5 – 3.12.10](#4-from-35--31210-to-530) → [From 3.x](#9-from-3x-to-50) → [Notes from 5.0.1](#7-notes-from-501-fonts-and-the-stylesheet) → [5.0.x to 5.1.0](#6-from-50x-to-510) → [5.1.x to 5.2.0](#5-from-51x-to-520) → [5.2.x to 5.3.0](#3-from-52x-to-530) |
30
+ | **3.x** (3.12.16 or earlier) | [Every upgrade](#2-every-upgrade-checklist) → [From 3.x](#9-from-3x-to-50) → [Notes from 5.0.1](#7-notes-from-501-fonts-and-the-stylesheet) → [5.0.x to 5.1.0](#6-from-50x-to-510) → [5.1.x to 5.2.0](#5-from-51x-to-520) → [5.2.x to 5.3.0](#3-from-52x-to-530) |
29
31
 
30
32
  Most pages need only a few attribute changes. The changes that can break something
31
33
  **silently**, with no error in the console, are marked **Silent**. Search for those first.
@@ -39,14 +41,14 @@ Do these whatever version you start from.
39
41
  - [ ] **Install the same exact version of every DDA package.**
40
42
 
41
43
  ```bash
42
- npm install @dubai-design-system/components-js@5.2.0
44
+ npm install @dubai-design-system/components-js@5.3.0
43
45
  # and, if you use a wrapper:
44
- npm install @dubai-design-system/components-react@5.2.0 # or -vue / -angular
46
+ npm install @dubai-design-system/components-react@5.3.0 # or -vue / -angular
45
47
  ```
46
48
 
47
49
  - [ ] **Load `dda.css`.** It carries the global styles and the Dubai typeface. From npm:
48
50
  `import '@dubai-design-system/components-js/dist/dda/dda.css';`. From the CDN, see
49
- [CDN users](#8-cdn-users).
51
+ [CDN users](#10-cdn-users).
50
52
  - [ ] **Load the icon fonts.** `dda.css` ships no icon font. Without these links, icons render
51
53
  as words such as `chevron_right`.
52
54
 
@@ -75,7 +77,138 @@ Do these whatever version you start from.
75
77
 
76
78
  ---
77
79
 
78
- ## 3. From 5.1.x to 5.2.0
80
+ ## 3. From 5.2.x to 5.3.0
81
+
82
+ 5.3.0 adds attributes and does not remove any. A page that uses only 5.x attributes can still
83
+ change in the places below. Examine each one.
84
+
85
+ ### Triage: run these first
86
+
87
+ ```bash
88
+ # empty login-text or language_text attributes
89
+ grep -rnE "(login-text|loginText|language_text)=(\"\"|'')" src/
90
+ # your own focus styles for the home-page service cards
91
+ grep -rn 'link-item:focus' src/
92
+ ```
93
+
94
+ ### Changes to check
95
+
96
+ - **An empty `login-text` removes the Login link.** **Silent.** In 5.2.0, an empty `login-text`
97
+ showed the default label "Login". Now it removes the Login link from the toolbar and the side
98
+ menu. To show "Login", remove the attribute or set it to `Login`.
99
+ - **An empty `language_text` removes the language button.** **Silent.** In 5.2.0, an empty
100
+ `language_text` showed "العربية". Now it removes the language button. To show "العربية",
101
+ remove the attribute.
102
+ - **The `dda-sticky-footer` middle logos show by default.** In 5.2.0, they showed only with
103
+ `hide-middle-section="false"`. Now they show when at least one logo is set. To hide them, set
104
+ `hide-middle-section`.
105
+ - **A `quick-links` item without `href` links to `#`.** In 5.2.0, a top-level item or a mega-menu
106
+ link without `href` had no `href` attribute. Now it has `href="#"`. Give each item a real
107
+ `href`.
108
+ - **The home-page service cards show a focus style.** A `.quick-links .link-item` card now moves
109
+ up and shows an outline when it gets keyboard focus (`:focus-visible`). This applies to the
110
+ plain-HTML cards from 5.2.0 too. If your CSS styles this focus state, make sure the two styles
111
+ agree. Use the keyboard to examine the cards.
112
+
113
+ ---
114
+
115
+ ## 4. From 3.5 – 3.12.10 to 5.3.0
116
+
117
+ Versions 3.5 to 3.12.10 had attributes and two components that 3.12.11 to 5.2.0 did not have.
118
+ 5.3.0 brings back the ones below under the same names, so most 3.x markup works without change.
119
+ Read this section first. Then read these sections, in this order:
120
+ [From 3.x to 5.0](#9-from-3x-to-50), [Notes from 5.0.1](#7-notes-from-501-fonts-and-the-stylesheet),
121
+ [5.0.x to 5.1.0](#6-from-50x-to-510), [5.1.x to 5.2.0](#5-from-51x-to-520) and
122
+ [5.2.x to 5.3.0](#3-from-52x-to-530).
123
+
124
+ ### Works again without change
125
+
126
+ - **`dda-header`:** all accessibility-panel texts (`contrast_title`, `contrast_description`,
127
+ `contrast_noraml_text`, `contrast_color_blind_text`, `contrast_red_weakness_text`,
128
+ `contrast_green_weakness_text`, `screen_reader_title`, `screen_reader_description`,
129
+ `text_size_title`, `text_size_description`), `read_speaker_link`, `selected_contrast`,
130
+ `selected_text_size`, `accessibility_tooltip`, `accessibility_button_text`,
131
+ `accessibility_button_id`, `accessibility_button_icon_family`, `accessibility_button_icon_name`,
132
+ `search_tooltip`, `search_input_placeholder`, `language_tooltip`, `login_tooltip`,
133
+ `use-predesigned-accessibility-menu`, `side-main-menu-title`, `side-other-menu-title`,
134
+ `other-menu-items`, `hide-other-menu`, `mobile-menu-search-id`, `mobile-menu-search-url`, and
135
+ the 3.x `quick-links` shape (`type`, `headerMenuLabel`, `url`, `children`).
136
+ - **`dda-header` events:** `accessibilitymenufunctionality` and `searchfunctionality`.
137
+ - **`dda-sticky-footer`:** `middle-link`, `right-link`, `more-icon`, `more-icon-family`,
138
+ `dubaiae-icon-*`, `color-theme`, every `*-icon-id` and every `*-icon-src-dark`.
139
+ - **Components:** `dda-home-carousel` and `dda-banner-card`.
140
+ - **`dda-select`** (from 5.3.1): 3.x `{ id, text }` options, `placeholder`, `input_name`,
141
+ `validation_type`, and the `selectChanged` and `selectBlurred` events.
142
+ - **`dda-scroll-icon` and the home banner's scroll icon** (from 5.3.1).
143
+
144
+ ### Changes that need action
145
+
146
+ **The handler attributes never ran, and they do not run now.** **Silent.**
147
+ Attributes such as `normalcontrast="() => …"`, `searchfunctionality="onSearch(this)"` and
148
+ `languageswitch="…"` have no effect, in 3.x and in 5.x. The header sends events. Listen for them:
149
+
150
+ ```js
151
+ const header = document.querySelector('dda-header');
152
+ header.addEventListener('normalContrast', () => { /* … */ });
153
+ header.addEventListener('searchfunctionality', event => onSearch(event.detail));
154
+ header.addEventListener('accessibilitymenufunctionality', () => { /* … */ });
155
+ ```
156
+
157
+ | Attribute in your markup | Event to listen for |
158
+ | --- | --- |
159
+ | `languageswitch` | `languageSwitch` |
160
+ | `smtextsize`, `basetextsize`, `lgtextsize` | `smTextSize`, `baseTextSize`, `lgTextSize` |
161
+ | `normalcontrast`, `blindcontrast`, `redcontrast`, `greencontrast` | `normalContrast`, `blindContrast`, `redContrast`, `greenContrast` |
162
+ | `searchfunctionality` | `searchfunctionality` (the query, on submit) or `searchSubmit` (on submit; it can cancel the navigation) |
163
+ | `accessibilitymenufunctionality` | `accessibilitymenufunctionality` |
164
+
165
+ **`dda-select`'s `main_aria_label` now has an effect, but only without a `label`.** 3.x declared
166
+ `main_aria_label` but never used it. From 5.3.1, `dda-select` uses it as the trigger's
167
+ `aria-label`, and only when there is no `label`. With a `label`, the trigger keeps
168
+ `aria-labelledby` and `main_aria_label` is ignored, so the label and the selected value stay
169
+ announced.
170
+
171
+ **`dda-home-carousel` cards are links.** In 3.x the cards were buttons, and `banner_card_href`
172
+ had no effect. Now a card with `banner_card_href` is a link and it opens the page. If your own
173
+ script opened the page on `cardClick`, remove that code, or the page opens two times.
174
+
175
+ **Set the new accessible names on a site that is not in English.** 3.x had no attribute for these
176
+ names, so your 3.x markup does not set them. They are English by default, and screen readers
177
+ read them on an Arabic page too. Set them in the language of the page:
178
+
179
+ | Component | Attribute | Default |
180
+ | --- | --- | --- |
181
+ | `dda-home-carousel` | `aria_label` | `Quick links` |
182
+ | `dda-sticky-footer` | `aria_label` | `Quick actions` |
183
+ | `dda-sticky-footer` | `more_button_label` | `More` |
184
+ | `dda-header` | `screen_reader_link_label` | `Listen to this page using ReadSpeaker` |
185
+ | `dda-header` | `menu_button_label` | `Menu` |
186
+
187
+ You cannot change five `dda-header` close-button names yet: "Close Sidebar" (three buttons),
188
+ "Close Accessibility" and "Close search". They stay in English.
189
+
190
+ **The carousel does not scroll when the mouse moves.** The row scrolls with the mouse wheel, the
191
+ scrollbar, touch and the keyboard. It shows a cut card and an edge fade when there are more cards.
192
+
193
+ **Remove your own 3.x workarounds for the transparent header.** **Silent.**
194
+ Some sites added rules that inverted the header colours, for example
195
+ `body.transparent .dda-mega-menu > li > a { mix-blend-mode: difference; filter: invert(1) brightness(2); }`
196
+ or `body.transparent .dda-search i { color: black; filter: invert(1) brightness(2); }`.
197
+ 5.x already shows white text and icons on the transparent header. With these rules, the text and icons turn dark again. Remove every such `filter` and `mix-blend-mode` rule.
198
+
199
+ ### Not brought back
200
+
201
+ - `dda-header`: `use-login-popup`, `login-popup-links`, `use-navigator` and its `navigatorClick`
202
+ event, `show-quick-links-icon`, `first-logo-target`, `rel`, `header_default_submenu`,
203
+ `header_submenu_type`. The last four had no effect in 3.12.10.
204
+ - Components: `dda-centered-image-card`, `dda-custom-card`, `dda-event-card`, `dda-header-menu`
205
+ (its menus are now part of `dda-header`), `dda-image-card`, `dda-information-card`,
206
+ `dda-pricing-card`, `dda-slider`, `dda-split-button`,
207
+ `dda-team-member-card`, `dda-teamsection-card`.
208
+
209
+ ---
210
+
211
+ ## 5. From 5.1.x to 5.2.0
79
212
 
80
213
  This section also covers 5.1.1. If you start from 5.1.1, the 5.1.1 notes are already done.
81
214
 
@@ -119,7 +252,8 @@ alone no longer wins. Add `dda-header:not(.dda-scrolled)` to it. Put the `transp
119
252
  always showed "Login" with the `sentiment_satisfied` icon, and only the side menu used the
120
253
  props. If you set them, the desktop link now shows your label and icon too.
121
254
  - **An empty `login-text` does not hide the Login link.** It shows the default label. Use
122
- `hide_login` to remove the link.
255
+ `hide_login` to remove the link. (Changed in 5.3.0: see
256
+ [From 5.2.x to 5.3.0](#3-from-52x-to-530).)
123
257
  - **`dda-sticky-footer` location and news links with an image look the same.** The new icon
124
258
  props take effect only when the image prop is not set.
125
259
 
@@ -134,7 +268,7 @@ alone no longer wins. Add `dda-header:not(.dda-scrolled)` to it. Put the `transp
134
268
 
135
269
  ---
136
270
 
137
- ## 4. From 5.0.x to 5.1.0
271
+ ## 6. From 5.0.x to 5.1.0
138
272
 
139
273
  ### Triage: run these first
140
274
 
@@ -294,7 +428,7 @@ the top of the page.
294
428
 
295
429
  ---
296
430
 
297
- ## 5. Notes from 5.0.1: fonts and the stylesheet
431
+ ## 7. Notes from 5.0.1: fonts and the stylesheet
298
432
 
299
433
  Read this if you start from 5.0.0 or earlier.
300
434
 
@@ -307,7 +441,7 @@ Read this if you start from 5.0.0 or earlier.
307
441
 
308
442
  ---
309
443
 
310
- ## 6. From 4.1.0
444
+ ## 8. From 4.1.0
311
445
 
312
446
  `4.1.0` was published in February 2025 and was never tagged `latest`; most sites never used it.
313
447
  It is a separate build and is not documented component by component. Known differences:
@@ -316,13 +450,14 @@ It is a separate build and is not documented component by component. Known diffe
316
450
  - It publishes no `dist/dda/dda.css`. Add it (see the checklist).
317
451
  - Its `dda-header` is an older implementation. Re-check the header on desktop and on a phone.
318
452
 
319
- Treat a 4.1.0 site like a 3.x site: follow [From 3.x](#7-from-3x-to-50), then
320
- [5.0.x to 5.1.0](#4-from-50x-to-510) and [5.1.x to 5.2.0](#3-from-51x-to-520), and check every
453
+ Treat a 4.1.0 site like a 3.x site: follow [From 3.x](#9-from-3x-to-50), then
454
+ [Notes from 5.0.1](#7-notes-from-501-fonts-and-the-stylesheet), [5.0.x to 5.1.0](#6-from-50x-to-510),
455
+ [5.1.x to 5.2.0](#5-from-51x-to-520) and [5.2.x to 5.3.0](#3-from-52x-to-530), and check every
321
456
  page visually.
322
457
 
323
458
  ---
324
459
 
325
- ## 7. From 3.x to 5.0
460
+ ## 9. From 3.x to 5.0
326
461
 
327
462
  **Why there is no 4.x to upgrade through:** `4.1.0` already existed on npm, so the next major
328
463
  skipped to 5 to keep `^4` ranges from resolving to that older build.
@@ -458,7 +593,7 @@ a future major release, with notice.
458
593
 
459
594
  ---
460
595
 
461
- ## 8. CDN users
596
+ ## 10. CDN users
462
597
 
463
598
  jsDelivr syncs from npm automatically. Always use an **exact version**: replace `X.X.X` with
464
599
  the version you are upgrading to.