@dubai-design-system/components-js 5.1.1 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/MIGRATION.md +196 -15
  3. package/dist/cjs/dda-accordion.cjs.entry.js +3 -3
  4. package/dist/cjs/dda-alert.cjs.entry.js +3 -3
  5. package/dist/cjs/dda-attach-file.cjs.entry.js +3 -3
  6. package/dist/cjs/dda-avatar.cjs.entry.js +7 -7
  7. package/dist/cjs/dda-banner-card.cjs.entry.js +26 -0
  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 +3 -3
  15. package/dist/cjs/dda-dropdown.cjs.entry.js +3 -3
  16. package/dist/cjs/dda-footer.cjs.entry.js +3 -3
  17. package/dist/cjs/dda-header.cjs.entry.js +201 -14
  18. package/dist/cjs/dda-home-banner.cjs.entry.js +5 -5
  19. package/dist/cjs/dda-home-carousel.cjs.entry.js +28 -0
  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 +3 -3
  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-search-input.cjs.entry.js +3 -3
  29. package/dist/cjs/dda-segmented-tabs.cjs.entry.js +4 -4
  30. package/dist/cjs/dda-select.cjs.entry.js +3 -3
  31. package/dist/cjs/dda-sticky-footer.cjs.entry.js +52 -4
  32. package/dist/cjs/dda-tabs.cjs.entry.js +3 -3
  33. package/dist/cjs/dda-textarea.cjs.entry.js +4 -4
  34. package/dist/cjs/dda-toggle.cjs.entry.js +3 -3
  35. package/dist/cjs/dda-tooltip.cjs.entry.js +3 -3
  36. package/dist/cjs/dda-ui-card.cjs.entry.js +2 -2
  37. package/dist/cjs/dda-vertical-stepper.cjs.entry.js +2 -2
  38. package/dist/cjs/dda.cjs.js +2 -2
  39. package/dist/cjs/{index-Bgd2iAET.js → index-DD8fdSxb.js} +1 -1
  40. package/dist/cjs/loader.cjs.js +2 -2
  41. package/dist/cjs/parse-json-prop-B0KWD8qe.js +38 -0
  42. package/dist/collection/collection-manifest.json +5 -3
  43. package/dist/collection/components/dda-accordion/dda-accordion.js +1 -1
  44. package/dist/collection/components/dda-alert/dda-alert.js +1 -1
  45. package/dist/collection/components/dda-alert/dda-alert.stories.js +27 -20
  46. package/dist/collection/components/dda-attach-file/dda-attach-file.js +1 -1
  47. package/dist/collection/components/dda-avatar/dda-avatar.js +5 -5
  48. package/dist/collection/components/dda-banner/dda-banner.js +1 -1
  49. package/dist/collection/components/dda-banner-card/dda-banner-card.js +243 -0
  50. package/dist/collection/components/dda-button/dda-button.js +1 -1
  51. package/dist/collection/components/dda-checkbox/dda-checkbox.js +1 -1
  52. package/dist/collection/components/dda-chip/dda-chip.js +1 -1
  53. package/dist/collection/components/dda-credit-card/dda-credit-card.js +1 -1
  54. package/dist/collection/components/dda-creditcard-field/dda-creditcard-field.js +1 -1
  55. package/dist/collection/components/dda-dropdown/dda-dropdown.js +1 -1
  56. package/dist/collection/components/dda-footer/dda-footer.js +1 -1
  57. package/dist/collection/components/dda-header/dda-header.js +853 -81
  58. package/dist/collection/components/dda-header/dda-header.stories.js +219 -33
  59. package/dist/collection/components/dda-header/nav-model.js +69 -0
  60. package/dist/collection/components/dda-home-banner/dda-home-banner.js +2 -2
  61. package/dist/collection/components/dda-home-banner/home-banner.css +12 -2
  62. package/dist/collection/components/dda-home-carousel/dda-home-carousel.js +164 -0
  63. package/dist/collection/components/dda-home-carousel/dda-home-carousel.stories.js +24 -0
  64. package/dist/collection/components/dda-input/dda-input.js +1 -1
  65. package/dist/collection/components/dda-link-button/dda-link-button.js +2 -2
  66. package/dist/collection/components/dda-number-field/dda-number-field.js +1 -1
  67. package/dist/collection/components/dda-pagination/dda-pagination.js +1 -1
  68. package/dist/collection/components/dda-phonefield/dda-phonefield.js +1 -1
  69. package/dist/collection/components/dda-progressbar/dda-progressbar.js +1 -1
  70. package/dist/collection/components/dda-radiobutton/dda-radiobutton.css +355 -9
  71. package/dist/collection/components/dda-radiobutton/dda-radiobutton.js +1 -1
  72. package/dist/collection/components/dda-range-slider/dda-range-slider.js +2 -2
  73. package/dist/collection/components/dda-search-input/dda-search-input.js +1 -1
  74. package/dist/collection/components/dda-select/dda-select.js +1 -1
  75. package/dist/collection/components/dda-sticky-footer/dda-sticky-footer.js +511 -9
  76. package/dist/collection/components/dda-sticky-footer/dda-sticky-footer.stories.js +24 -2
  77. package/dist/collection/components/dda-tabs/dda-tabs.js +1 -1
  78. package/dist/collection/components/dda-textarea/dda-textarea.js +2 -2
  79. package/dist/collection/components/dda-toggle/dda-toggle.js +1 -1
  80. package/dist/collection/components/dda-tooltip/dda-tooltip.js +1 -1
  81. package/dist/collection/components/dda-ui-card/dda-ui-card.js +1 -1
  82. package/dist/collection/components/segmented-groups/dda-segmented-tabs/dda-segmented-tabs.css +29 -9
  83. package/dist/collection/components/segmented-groups/dda-segmented-tabs/dda-segmented-tabs.js +1 -1
  84. package/dist/collection/components/stepper/dda-horizontal-stepper/dda-horizontal-stepper.js +1 -1
  85. package/dist/collection/components/stepper/dda-vertical-stepper/dda-vertical-stepper.js +1 -1
  86. package/dist/collection/global/global.css +355 -9
  87. package/dist/collection/utils/parse-json-prop.js +34 -0
  88. package/dist/components/dda-accordion.js +1 -1
  89. package/dist/components/dda-alert.js +1 -1
  90. package/dist/components/dda-attach-file.js +1 -1
  91. package/dist/components/dda-avatar.js +1 -1
  92. package/dist/components/dda-banner-card.d.ts +11 -0
  93. package/dist/components/dda-banner-card.js +1 -0
  94. package/dist/components/dda-banner.js +1 -1
  95. package/dist/components/dda-breadcrumb.js +1 -1
  96. package/dist/components/dda-button.js +1 -1
  97. package/dist/components/dda-checkbox.js +1 -1
  98. package/dist/components/dda-chip.js +1 -1
  99. package/dist/components/dda-credit-card.js +1 -1
  100. package/dist/components/dda-creditcard-field.js +1 -1
  101. package/dist/components/dda-dropdown.js +1 -1
  102. package/dist/components/dda-footer.js +1 -1
  103. package/dist/components/dda-header.js +1 -1
  104. package/dist/components/dda-home-banner.js +1 -1
  105. package/dist/components/dda-home-carousel.d.ts +11 -0
  106. package/dist/components/dda-home-carousel.js +1 -0
  107. package/dist/components/dda-horizontal-stepper.js +1 -1
  108. package/dist/components/dda-input.js +1 -1
  109. package/dist/components/dda-link-button.js +1 -1
  110. package/dist/components/dda-number-field.js +1 -1
  111. package/dist/components/dda-pagination.js +1 -1
  112. package/dist/components/dda-phonefield.js +1 -1
  113. package/dist/components/dda-progressbar.js +1 -1
  114. package/dist/components/dda-radiobutton.js +1 -1
  115. package/dist/components/dda-range-slider.js +1 -1
  116. package/dist/components/dda-search-input.js +1 -1
  117. package/dist/components/dda-segmented-tabs.js +1 -1
  118. package/dist/components/dda-select.js +1 -1
  119. package/dist/components/dda-sticky-footer.js +1 -1
  120. package/dist/components/dda-tabs.js +1 -1
  121. package/dist/components/dda-textarea.js +1 -1
  122. package/dist/components/dda-toggle.js +1 -1
  123. package/dist/components/dda-tooltip.js +1 -1
  124. package/dist/components/dda-ui-card.js +1 -1
  125. package/dist/components/dda-vertical-stepper.js +1 -1
  126. package/dist/components/index.js +1 -1
  127. package/dist/components/p-BCtBptNq.js +1 -0
  128. package/dist/components/p-BP6BxgDV.js +1 -0
  129. package/dist/components/p-BZzFtOHg.js +1 -0
  130. package/dist/components/p-CvcFE821.js +1 -0
  131. package/dist/components/p-D3e_hki9.js +1 -0
  132. package/dist/components/p-DCwxgkNU.js +1 -0
  133. package/dist/components/p-R9p4F9Pi.js +1 -0
  134. package/dist/dda/dda.css +1 -53
  135. package/dist/dda/dda.esm.js +1 -1
  136. package/dist/dda/p-0480f0a9.entry.js +1 -0
  137. package/dist/dda/p-06188c4c.entry.js +1 -0
  138. package/dist/dda/p-08e1892a.entry.js +1 -0
  139. package/dist/dda/p-10c5a752.entry.js +1 -0
  140. package/dist/dda/p-169ba650.entry.js +1 -0
  141. package/dist/dda/p-25058697.entry.js +1 -0
  142. package/dist/dda/p-32a7c588.entry.js +1 -0
  143. package/dist/dda/{p-fb4db977.entry.js → p-333205aa.entry.js} +1 -1
  144. package/dist/dda/p-46df4933.entry.js +1 -0
  145. package/dist/dda/p-47322b02.entry.js +1 -0
  146. package/dist/dda/{p-04bcda8a.entry.js → p-4e717a2e.entry.js} +1 -1
  147. package/dist/dda/p-5840fad9.entry.js +1 -0
  148. package/dist/dda/p-5bb62ef7.entry.js +1 -0
  149. package/dist/dda/p-5e757702.entry.js +1 -0
  150. package/dist/dda/p-6430c363.entry.js +1 -0
  151. package/dist/dda/p-6d4f5672.entry.js +1 -0
  152. package/dist/dda/p-6db5588a.entry.js +1 -0
  153. package/dist/dda/p-76859bf8.entry.js +1 -0
  154. package/dist/dda/p-7c1abbd2.entry.js +1 -0
  155. package/dist/dda/p-7ffce954.entry.js +1 -0
  156. package/dist/dda/p-8108c4ed.entry.js +1 -0
  157. package/dist/dda/p-8852dafb.entry.js +1 -0
  158. package/dist/dda/p-8dbbc0ca.entry.js +1 -0
  159. package/dist/dda/p-95100f73.entry.js +1 -0
  160. package/dist/dda/p-9a4e34d1.entry.js +1 -0
  161. package/dist/dda/p-9b234635.entry.js +1 -0
  162. package/dist/dda/p-9d9834ff.entry.js +1 -0
  163. package/dist/dda/p-9f01cb56.entry.js +1 -0
  164. package/dist/dda/p-9ff8dc84.entry.js +1 -0
  165. package/dist/dda/p-BnrqwGTj.js +2 -0
  166. package/dist/dda/p-CvcFE821.js +1 -0
  167. package/dist/dda/p-a8a1ee5d.entry.js +1 -0
  168. package/dist/dda/p-b37f40a9.entry.js +1 -0
  169. package/dist/dda/{p-c77282be.entry.js → p-eaffd32d.entry.js} +1 -1
  170. package/dist/dda/p-f2efc121.entry.js +1 -0
  171. package/dist/dda/p-faed59dd.entry.js +1 -0
  172. package/dist/dda/p-fb00dec4.entry.js +1 -0
  173. package/dist/esm/dda-accordion.entry.js +3 -3
  174. package/dist/esm/dda-alert.entry.js +3 -3
  175. package/dist/esm/dda-attach-file.entry.js +3 -3
  176. package/dist/esm/dda-avatar.entry.js +7 -7
  177. package/dist/esm/dda-banner-card.entry.js +24 -0
  178. package/dist/esm/dda-banner.entry.js +3 -3
  179. package/dist/esm/dda-breadcrumb.entry.js +2 -2
  180. package/dist/esm/dda-button.entry.js +3 -3
  181. package/dist/esm/dda-checkbox.entry.js +3 -3
  182. package/dist/esm/dda-chip.entry.js +3 -3
  183. package/dist/esm/dda-credit-card.entry.js +3 -3
  184. package/dist/esm/dda-creditcard-field.entry.js +3 -3
  185. package/dist/esm/dda-dropdown.entry.js +3 -3
  186. package/dist/esm/dda-footer.entry.js +3 -3
  187. package/dist/esm/dda-header.entry.js +201 -14
  188. package/dist/esm/dda-home-banner.entry.js +5 -5
  189. package/dist/esm/dda-home-carousel.entry.js +26 -0
  190. package/dist/esm/dda-horizontal-stepper.entry.js +3 -3
  191. package/dist/esm/dda-input.entry.js +3 -3
  192. package/dist/esm/dda-link-button_2.entry.js +6 -6
  193. package/dist/esm/dda-number-field.entry.js +3 -3
  194. package/dist/esm/dda-pagination.entry.js +3 -3
  195. package/dist/esm/dda-phonefield.entry.js +3 -3
  196. package/dist/esm/dda-progressbar.entry.js +3 -3
  197. package/dist/esm/dda-range-slider.entry.js +3 -3
  198. package/dist/esm/dda-search-input.entry.js +3 -3
  199. package/dist/esm/dda-segmented-tabs.entry.js +4 -4
  200. package/dist/esm/dda-select.entry.js +3 -3
  201. package/dist/esm/dda-sticky-footer.entry.js +52 -4
  202. package/dist/esm/dda-tabs.entry.js +3 -3
  203. package/dist/esm/dda-textarea.entry.js +4 -4
  204. package/dist/esm/dda-toggle.entry.js +3 -3
  205. package/dist/esm/dda-tooltip.entry.js +3 -3
  206. package/dist/esm/dda-ui-card.entry.js +2 -2
  207. package/dist/esm/dda-vertical-stepper.entry.js +2 -2
  208. package/dist/esm/dda.js +3 -3
  209. package/dist/esm/{index-D6L6zgH9.js → index-BnrqwGTj.js} +1 -1
  210. package/dist/esm/loader.js +3 -3
  211. package/dist/esm/parse-json-prop-CvcFE821.js +36 -0
  212. package/dist/types/components/dda-alert/dda-alert.stories.d.ts +5 -1
  213. package/dist/types/components/dda-banner-card/dda-banner-card.d.ts +25 -0
  214. package/dist/types/components/dda-header/dda-header.d.ts +117 -5
  215. package/dist/types/components/dda-header/dda-header.stories.d.ts +206 -0
  216. package/dist/types/components/dda-header/nav-model.d.ts +19 -0
  217. package/dist/types/components/dda-home-carousel/dda-home-carousel.d.ts +29 -0
  218. package/dist/types/components/dda-home-carousel/dda-home-carousel.stories.d.ts +20 -0
  219. package/dist/types/components/dda-sticky-footer/dda-sticky-footer.d.ts +75 -5
  220. package/dist/types/components/dda-sticky-footer/dda-sticky-footer.stories.d.ts +17 -0
  221. package/dist/types/components.d.ts +747 -21
  222. package/dist/types/utils/parse-json-prop.d.ts +1 -0
  223. package/package.json +3 -1
  224. package/dist/components/p-Bc2V1U4_.js +0 -1
  225. package/dist/components/p-Bzqf-PpF.js +0 -1
  226. package/dist/components/p-D-CHT-as.js +0 -1
  227. package/dist/components/p-DJw8qV7U.js +0 -1
  228. package/dist/components/p-DpwQ9sGp.js +0 -1
  229. package/dist/dda/p-03400387.entry.js +0 -1
  230. package/dist/dda/p-18a3d7b1.entry.js +0 -1
  231. package/dist/dda/p-1f7b8486.entry.js +0 -1
  232. package/dist/dda/p-3024288f.entry.js +0 -1
  233. package/dist/dda/p-41b8ed7d.entry.js +0 -1
  234. package/dist/dda/p-56f60336.entry.js +0 -1
  235. package/dist/dda/p-65776d80.entry.js +0 -1
  236. package/dist/dda/p-73611084.entry.js +0 -1
  237. package/dist/dda/p-7ad8cde9.entry.js +0 -1
  238. package/dist/dda/p-8134e59d.entry.js +0 -1
  239. package/dist/dda/p-8494fd9e.entry.js +0 -1
  240. package/dist/dda/p-876d55b2.entry.js +0 -1
  241. package/dist/dda/p-88d884a8.entry.js +0 -1
  242. package/dist/dda/p-8b25ae94.entry.js +0 -1
  243. package/dist/dda/p-8f376986.entry.js +0 -1
  244. package/dist/dda/p-90019b80.entry.js +0 -1
  245. package/dist/dda/p-92fa4777.entry.js +0 -1
  246. package/dist/dda/p-97431faf.entry.js +0 -1
  247. package/dist/dda/p-D6L6zgH9.js +0 -2
  248. package/dist/dda/p-a5456de2.entry.js +0 -1
  249. package/dist/dda/p-aa7b4c13.entry.js +0 -1
  250. package/dist/dda/p-ad40eb27.entry.js +0 -1
  251. package/dist/dda/p-c055f0d2.entry.js +0 -1
  252. package/dist/dda/p-c42c8733.entry.js +0 -1
  253. package/dist/dda/p-ca64abe6.entry.js +0 -1
  254. package/dist/dda/p-ceca8088.entry.js +0 -1
  255. package/dist/dda/p-d6786b43.entry.js +0 -1
  256. package/dist/dda/p-e2113e42.entry.js +0 -1
  257. package/dist/dda/p-ee862207.entry.js +0 -1
  258. package/dist/dda/p-ef38e28b.entry.js +0 -1
  259. package/dist/dda/p-f43fb910.entry.js +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,122 @@ 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.0 (2026-09-24)
8
+
9
+ A minor release. It brings back the 3.x attributes and components that sites built on 3.5 –
10
+ 3.12.10 use, so they can upgrade to 5.x. Most dda-header text can now be set. Read
11
+ "From 3.5 – 3.12.10 to 5.3.0" in MIGRATION.md.
12
+
13
+ ### Features
14
+
15
+ - **3.x attributes work again.** Versions 3.5 to 3.12.10 had attributes that 3.12.11 to 5.2.0
16
+ did not have. The ones below are back, under their 3.x names. "From 3.5 – 3.12.10 to 5.3.0"
17
+ in MIGRATION.md lists them. A page that uses only 5.x attributes can change in a small number of
18
+ places. "Behaviour Changes" below lists them.
19
+ - **dda-header: the panel, toolbar and side-menu texts can be set.** The accessibility panel, the
20
+ tooltips, the search placeholder and the side-menu titles take attributes, so a page can show
21
+ them in its own language. An empty attribute removes that text. An empty `login-text` or
22
+ `language_text` removes the Login link or the language button, as in 3.x. A few close-button
23
+ labels (for example "Close Sidebar") stay fixed English text; they have no attribute.
24
+ - **dda-header: the 3.x menu shape.** `quick-links` also accepts the 3.x shape (`type`,
25
+ `headerMenuLabel`, `url`, `children`). `dda_default_submenu` items open a dropdown list with a
26
+ second-level fly-out. In TypeScript, `quickLinks` has the type `string | QuickLinkItem[]`, so a
27
+ React, Vue or Angular page can set an array.
28
+ - **dda-header: other menu, 3.x mobile search link, events.** New: `other-menu-items`,
29
+ `side-other-menu-title`, `hide-other-menu`, `mobile-menu-search-url`, and the
30
+ `accessibilitymenufunctionality` and `searchfunctionality` events.
31
+ - **dda-sticky-footer: lists, dubai.ae and the more button.** `middle-link` takes any number of
32
+ logos. `right-link` takes text links with Material icons. `more-icon` adds a button that collects
33
+ the right links on phones. New: `dubaiae-icon-*`, `color-theme`, `*-icon-id`, `*-icon-src-dark`.
34
+ - **dda-home-carousel and dda-banner-card are back.** The cards are links and use the same
35
+ scrolling row as the home-page quick links.
36
+
37
+ ### Bug Fixes
38
+
39
+ - **dda-header: the side-menu ReadSpeaker link has its own id.** Both the desktop and the
40
+ side-menu ReadSpeaker links rendered `id="readspeaker_button1"`, a duplicate id. The side-menu
41
+ copy is now `readspeaker_button1Mobile`.
42
+ - **dda-header: the `L` access key is only on the desktop ReadSpeaker link.** The side-menu copy
43
+ had it too, so pressing `Alt+Shift+L` (or the browser's access-key combination) could activate
44
+ the hidden side-menu link instead of the visible one.
45
+ - **dda-segmented-tabs: the Dubai font, one-line labels, a scrollbar and a focus ring.** The
46
+ segments are buttons, so the browser showed them in its own font, not Dubai. A long label could
47
+ break onto two lines and go outside the segment's fixed height, and a group wider than its
48
+ container made the page wider. The segments had no visible focus ring. The segments now use the
49
+ page font and keep each label on one line, the group scrolls inside its container instead of
50
+ widening it, and a focus ring shows inside the selected segment.
51
+
52
+ ### Behaviour Changes
53
+
54
+ These changes also apply to a page that uses only 5.x attributes. "From 5.2.x to 5.3.0" in
55
+ MIGRATION.md tells you what to check.
56
+
57
+ - **dda-header: an empty `login-text` removes the Login link.** In 5.2.0, an empty `login-text`
58
+ showed the default label "Login". Now it removes the Login link from the toolbar and the side
59
+ menu, as in 3.x. Remove the attribute to show "Login".
60
+ - **dda-header: an empty `language_text` removes the language button.** In 5.2.0, an empty
61
+ `language_text` showed "العربية". Now it removes the language button, as in 3.x. Remove the
62
+ attribute to show "العربية".
63
+ - **dda-header: a `quick-links` item without `href` links to `#`.** In 5.2.0, a 5.x item or a
64
+ mega-menu link without `href` rendered an `<a>` with no `href`. Now the link has `href="#"`.
65
+ - **Home-page service cards show a focus style.** A `.quick-links .link-item` card now moves up
66
+ and shows an outline when it gets keyboard focus (`:focus-visible`). This also applies to the
67
+ plain-HTML cards of 5.2.0. If your own CSS styles this focus state, check that the two styles
68
+ agree.
69
+ - **dda-sticky-footer: the middle logos show by default.** Before, they showed only with
70
+ `hide-middle-section="false"`. Now they show when at least one logo is set. Use
71
+ `hide-middle-section` to hide them.
72
+ - **dda-sticky-footer: an item without an image is not rendered.** Before, every item rendered,
73
+ and an item without an image was an empty link.
74
+
75
+ ## 5.2.0 (2026-09-23)
76
+
77
+ A minor release. The home-page service cards become one scrolling row that stays on the banner at
78
+ every screen width, `dda-header` gets a `hide_login` prop and uses `login-text` and `login-icon` on
79
+ desktop, and `dda-sticky-footer` can show Material icons for the location and news links. Read
80
+ "From 5.1.x to 5.2.0" in MIGRATION.md before you upgrade.
81
+
82
+ ### Features
83
+
84
+ - **dda-header: new `hide_login` prop.** It removes the Login link from the desktop toolbar and
85
+ the side menu. Before, the link always showed. An empty `login-text` still shows the default
86
+ label; use `hide_login` to remove the link.
87
+ - **dda-sticky-footer: `location-button-icon` and `news-button-icon` show a Material Symbols
88
+ icon.** The two props existed but did nothing. When a link has an icon and no image
89
+ (`location-logo-src`, `news-button-src`), it shows the icon, and `location-button-text` /
90
+ `news-button-text` name the link as visually hidden text. When both are set, the image shows,
91
+ the same as before.
92
+
93
+ ### Bug Fixes
94
+
95
+ - **dda-header: the desktop Login link uses `login-text` and `login-icon`.** The desktop toolbar
96
+ always showed "Login" with the `sentiment_satisfied` icon and ignored both props; only the side
97
+ menu used them. The tooltip also uses `login-text` now.
98
+
99
+ ### Behaviour Changes
100
+
101
+ - **Home page service cards (`.quick-links`) scroll sideways when they do not fit.** Before, on
102
+ wide screens the cards got narrower without limit, and at 992px and below they stacked in one
103
+ tall column. Now they stay in one row at every width, no card is narrower than 220px, and the
104
+ row scrolls horizontally with scroll snap. On screens of 992px and below the row spans the
105
+ screen and each card is 75% of the row (at most 300px), so the next card shows at the edge. A
106
+ fade on each edge that has more cards (in browsers with scroll-driven animations) and a thin
107
+ scrollbar also show that the row scrolls. The markup does not change. If your CSS sets
108
+ `display: grid` on `.quick-links` or a width on `.link-item`, check the home page after you
109
+ update.
110
+ - **Home page service cards stay on the banner on small screens.** At 992px and below, on
111
+ screens taller than 600px, the cards sat under the full-height banner, below the first screen
112
+ and under the sticky footer buttons. They now sit on the banner, 12px above the sticky footer
113
+ bar, as on desktop, and are compact (112px tall, 24px icon, one line of description).
114
+ `dda-home-banner`'s slide controls move to 16px above the cards, so the arrows and dots stay
115
+ clear of them. Both read `--dda-quick-links-gap-sm` (12px) and
116
+ `--dda-quick-links-card-height-sm` (112px); set these on `:root` to move the cards and the
117
+ controls together. On short landscape screens (600px tall or less) the cards stay under the
118
+ banner.
119
+ - **Home page service cards sit 24px higher on the banner.** Above 992px, `.quick-links-wrap`
120
+ is 24px further from the bottom of the banner, and `dda-home-banner`'s slide controls moved up
121
+ by the same 24px, so they stay above the cards.
122
+
7
123
  ## 5.1.1 (2026-09-18)
8
124
 
9
125
  A patch release. It fixes the transparent header on scroll, video slides in the home banner, and
package/MIGRATION.md CHANGED
@@ -1,7 +1,7 @@
1
- # Upgrading to 5.1
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.1.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,9 +22,12 @@ Then read the sections for your version, in this order:
22
22
 
23
23
  | You are on | Read |
24
24
  | --- | --- |
25
- | **5.0.x** (5.0.0 – 5.0.3) | [Every upgrade](#2-every-upgrade-checklist) → [5.0.x to 5.1.0](#3-from-50x-to-510) |
26
- | **4.1.0** | [Every upgrade](#2-every-upgrade-checklist) → [From 4.1.0](#5-from-410) → [From 3.x](#6-from-3x-to-50) → [5.0.x to 5.1.0](#3-from-50x-to-510) |
27
- | **3.x** (3.12.16 or earlier) | [Every upgrade](#2-every-upgrade-checklist) → [From 3.x](#6-from-3x-to-50) → [Notes from 5.0.1](#4-notes-from-501-fonts-and-the-stylesheet) → [5.0.x to 5.1.0](#3-from-50x-to-510) |
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) |
28
31
 
29
32
  Most pages need only a few attribute changes. The changes that can break something
30
33
  **silently**, with no error in the console, are marked **Silent**. Search for those first.
@@ -38,14 +41,14 @@ Do these whatever version you start from.
38
41
  - [ ] **Install the same exact version of every DDA package.**
39
42
 
40
43
  ```bash
41
- npm install @dubai-design-system/components-js@5.1.0
44
+ npm install @dubai-design-system/components-js@5.3.0
42
45
  # and, if you use a wrapper:
43
- npm install @dubai-design-system/components-react@5.1.0 # or -vue / -angular
46
+ npm install @dubai-design-system/components-react@5.3.0 # or -vue / -angular
44
47
  ```
45
48
 
46
49
  - [ ] **Load `dda.css`.** It carries the global styles and the Dubai typeface. From npm:
47
50
  `import '@dubai-design-system/components-js/dist/dda/dda.css';`. From the CDN, see
48
- [CDN users](#7-cdn-users).
51
+ [CDN users](#10-cdn-users).
49
52
  - [ ] **Load the icon fonts.** `dda.css` ships no icon font. Without these links, icons render
50
53
  as words such as `chevron_right`.
51
54
 
@@ -74,7 +77,183 @@ Do these whatever version you start from.
74
77
 
75
78
  ---
76
79
 
77
- ## 3. From 5.0.x to 5.1.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
+
141
+ ### Changes that need action
142
+
143
+ **The handler attributes never ran, and they do not run now.** **Silent.**
144
+ Attributes such as `normalcontrast="() => …"`, `searchfunctionality="onSearch(this)"` and
145
+ `languageswitch="…"` have no effect, in 3.x and in 5.x. The header sends events. Listen for them:
146
+
147
+ ```js
148
+ const header = document.querySelector('dda-header');
149
+ header.addEventListener('normalContrast', () => { /* … */ });
150
+ header.addEventListener('searchfunctionality', event => onSearch(event.detail));
151
+ header.addEventListener('accessibilitymenufunctionality', () => { /* … */ });
152
+ ```
153
+
154
+ | Attribute in your markup | Event to listen for |
155
+ | --- | --- |
156
+ | `languageswitch` | `languageSwitch` |
157
+ | `smtextsize`, `basetextsize`, `lgtextsize` | `smTextSize`, `baseTextSize`, `lgTextSize` |
158
+ | `normalcontrast`, `blindcontrast`, `redcontrast`, `greencontrast` | `normalContrast`, `blindContrast`, `redContrast`, `greenContrast` |
159
+ | `searchfunctionality` | `searchfunctionality` (the query, on submit) or `searchSubmit` (on submit; it can cancel the navigation) |
160
+ | `accessibilitymenufunctionality` | `accessibilitymenufunctionality` |
161
+
162
+ **`dda-home-carousel` cards are links.** In 3.x the cards were buttons, and `banner_card_href`
163
+ had no effect. Now a card with `banner_card_href` is a link and it opens the page. If your own
164
+ script opened the page on `cardClick`, remove that code, or the page opens two times.
165
+
166
+ **Set the new accessible names on a site that is not in English.** 3.x had no attribute for these
167
+ names, so your 3.x markup does not set them. They are English by default, and screen readers
168
+ read them on an Arabic page too. Set them in the language of the page:
169
+
170
+ | Component | Attribute | Default |
171
+ | --- | --- | --- |
172
+ | `dda-home-carousel` | `aria_label` | `Quick links` |
173
+ | `dda-sticky-footer` | `aria_label` | `Quick actions` |
174
+ | `dda-sticky-footer` | `more_button_label` | `More` |
175
+ | `dda-header` | `screen_reader_link_label` | `Listen to this page using ReadSpeaker` |
176
+ | `dda-header` | `menu_button_label` | `Menu` |
177
+
178
+ You cannot change five `dda-header` close-button names yet: "Close Sidebar" (three buttons),
179
+ "Close Accessibility" and "Close search". They stay in English.
180
+
181
+ **The carousel does not scroll when the mouse moves.** The row scrolls with the mouse wheel, the
182
+ scrollbar, touch and the keyboard. It shows a cut card and an edge fade when there are more cards.
183
+
184
+ ### Not brought back
185
+
186
+ - `dda-header`: `use-login-popup`, `login-popup-links`, `use-navigator` and its `navigatorClick`
187
+ event, `show-quick-links-icon`, `first-logo-target`, `rel`, `header_default_submenu`,
188
+ `header_submenu_type`. The last four had no effect in 3.12.10.
189
+ - Components: `dda-centered-image-card`, `dda-custom-card`, `dda-event-card`, `dda-header-menu`
190
+ (its menus are now part of `dda-header`), `dda-image-card`, `dda-information-card`,
191
+ `dda-pricing-card`, `dda-scroll-icon`, `dda-slider`, `dda-split-button`,
192
+ `dda-team-member-card`, `dda-teamsection-card`.
193
+
194
+ ---
195
+
196
+ ## 5. From 5.1.x to 5.2.0
197
+
198
+ This section also covers 5.1.1. If you start from 5.1.1, the 5.1.1 notes are already done.
199
+
200
+ ### Triage: run these first
201
+
202
+ ```bash
203
+ # your own layout rules for the home-page service cards and the banner controls
204
+ grep -rn "quick-links\|link-item\|slider-nav" src/
205
+
206
+ # your own overrides of the transparent header (changed in 5.1.1)
207
+ grep -rn "\.transparent " src/
208
+
209
+ # a Login label you set for the side menu only
210
+ grep -rn "login-text\|loginText" src/
211
+ ```
212
+
213
+ ### Changes that need action
214
+
215
+ **The home-page service cards (`.quick-links`) have a new layout.** **Silent.**
216
+ The cards stay in one row at every width. A card is never narrower than 220px, and when the
217
+ cards do not fit, the row scrolls sideways. On screens 992px wide or less and taller than 600px,
218
+ the cards sit on the banner, 12px above the sticky footer bar, at a compact 112px height.
219
+ `dda-home-banner` moves its slide controls to 16px above the cards. On desktop the cards and the
220
+ controls are 24px higher than in 5.1.
221
+
222
+ - Remove your own `display: grid`, widths or heights on `.quick-links` and `.link-item`, and your
223
+ own `bottom` offsets on `.quick-links-wrap` and `.slider-nav`.
224
+ - To move the small-screen cards and controls together, set `--dda-quick-links-gap-sm` (default
225
+ `12px`) and `--dda-quick-links-card-height-sm` (default `112px`) on `:root`.
226
+ - Check the home page on a desktop screen, on a phone (390 × 844) and on a phone on its side.
227
+
228
+ **Transparent header overrides need the new selector (5.1.1).** **Silent.**
229
+ The transparent header rules changed from `.transparent X` to
230
+ `.transparent dda-header:not(.dda-scrolled) X`. An override that starts with `.transparent`
231
+ alone no longer wins. Add `dda-header:not(.dda-scrolled)` to it. Put the `transparent` class on
232
+ `<body>` or on another ancestor of `<dda-header>`, not on `<dda-header>` itself.
233
+
234
+ ### Changes to check, no code change expected
235
+
236
+ - **The desktop Login link uses `login-text` and `login-icon`.** Before, the desktop toolbar
237
+ always showed "Login" with the `sentiment_satisfied` icon, and only the side menu used the
238
+ props. If you set them, the desktop link now shows your label and icon too.
239
+ - **An empty `login-text` does not hide the Login link.** It shows the default label. Use
240
+ `hide_login` to remove the link. (Changed in 5.3.0: see
241
+ [From 5.2.x to 5.3.0](#3-from-52x-to-530).)
242
+ - **`dda-sticky-footer` location and news links with an image look the same.** The new icon
243
+ props take effect only when the image prop is not set.
244
+
245
+ ### New, optional
246
+
247
+ | Component | Addition | Use it to |
248
+ | --- | --- | --- |
249
+ | `dda-header` | `hide_login` | Remove the Login link from the toolbar and the side menu |
250
+ | `dda-sticky-footer` | `location-button-icon`, `news-button-icon` (now used) | Show a Material Symbols icon instead of an image |
251
+ | `dda-input` | `autocomplete` (5.1.1) | Let browsers fill in fields such as `name` and `email` |
252
+ | `dda.css` | `--dda-quick-links-gap-sm`, `--dda-quick-links-card-height-sm` | Move the small-screen cards and banner controls |
253
+
254
+ ---
255
+
256
+ ## 6. From 5.0.x to 5.1.0
78
257
 
79
258
  ### Triage: run these first
80
259
 
@@ -234,7 +413,7 @@ the top of the page.
234
413
 
235
414
  ---
236
415
 
237
- ## 4. Notes from 5.0.1: fonts and the stylesheet
416
+ ## 7. Notes from 5.0.1: fonts and the stylesheet
238
417
 
239
418
  Read this if you start from 5.0.0 or earlier.
240
419
 
@@ -247,7 +426,7 @@ Read this if you start from 5.0.0 or earlier.
247
426
 
248
427
  ---
249
428
 
250
- ## 5. From 4.1.0
429
+ ## 8. From 4.1.0
251
430
 
252
431
  `4.1.0` was published in February 2025 and was never tagged `latest`; most sites never used it.
253
432
  It is a separate build and is not documented component by component. Known differences:
@@ -256,12 +435,14 @@ It is a separate build and is not documented component by component. Known diffe
256
435
  - It publishes no `dist/dda/dda.css`. Add it (see the checklist).
257
436
  - Its `dda-header` is an older implementation. Re-check the header on desktop and on a phone.
258
437
 
259
- Treat a 4.1.0 site like a 3.x site: follow [From 3.x](#6-from-3x-to-50), then
260
- [5.0.x to 5.1.0](#3-from-50x-to-510), and check every page visually.
438
+ Treat a 4.1.0 site like a 3.x site: follow [From 3.x](#9-from-3x-to-50), then
439
+ [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),
440
+ [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
441
+ page visually.
261
442
 
262
443
  ---
263
444
 
264
- ## 6. From 3.x to 5.0
445
+ ## 9. From 3.x to 5.0
265
446
 
266
447
  **Why there is no 4.x to upgrade through:** `4.1.0` already existed on npm, so the next major
267
448
  skipped to 5 to keep `^4` ranges from resolving to that older build.
@@ -397,7 +578,7 @@ a future major release, with notice.
397
578
 
398
579
  ---
399
580
 
400
- ## 7. CDN users
581
+ ## 10. CDN users
401
582
 
402
583
  jsDelivr syncs from npm automatically. Always use an **exact version**: replace `X.X.X` with
403
584
  the version you are upgrading to.