@dubai-design-system/components-js 5.3.6 → 5.3.7

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 (233) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/MIGRATION.md +12 -5
  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 +6 -6
  7. package/dist/cjs/dda-banner-card.cjs.entry.js +2 -2
  8. package/dist/cjs/dda-banner.cjs.entry.js +2 -2
  9. package/dist/cjs/dda-breadcrumb.cjs.entry.js +3 -3
  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 +2 -2
  15. package/dist/cjs/dda-dropdown.cjs.entry.js +3 -3
  16. package/dist/cjs/dda-footer.cjs.entry.js +2 -2
  17. package/dist/cjs/dda-header.cjs.entry.js +10 -10
  18. package/dist/cjs/dda-home-banner.cjs.entry.js +5 -5
  19. package/dist/cjs/dda-home-carousel.cjs.entry.js +2 -2
  20. package/dist/cjs/dda-horizontal-stepper.cjs.entry.js +2 -2
  21. package/dist/cjs/dda-input.cjs.entry.js +2 -2
  22. package/dist/cjs/dda-link-button_2.cjs.entry.js +4 -4
  23. package/dist/cjs/dda-number-field.cjs.entry.js +3 -3
  24. package/dist/cjs/dda-pagination.cjs.entry.js +9 -9
  25. package/dist/cjs/dda-phonefield.cjs.entry.js +3 -3
  26. package/dist/cjs/dda-progressbar.cjs.entry.js +2 -2
  27. package/dist/cjs/dda-range-slider.cjs.entry.js +1 -1
  28. package/dist/cjs/dda-scroll-icon.cjs.entry.js +1 -1
  29. package/dist/cjs/dda-search-input.cjs.entry.js +3 -3
  30. package/dist/cjs/dda-segmented-tabs.cjs.entry.js +3 -3
  31. package/dist/cjs/dda-select.cjs.entry.js +4 -4
  32. package/dist/cjs/dda-sticky-footer.cjs.entry.js +6 -9
  33. package/dist/cjs/dda-tabs.cjs.entry.js +3 -3
  34. package/dist/cjs/dda-textarea.cjs.entry.js +3 -3
  35. package/dist/cjs/dda-toggle.cjs.entry.js +2 -2
  36. package/dist/cjs/dda-tooltip.cjs.entry.js +2 -2
  37. package/dist/cjs/dda-ui-card.cjs.entry.js +2 -2
  38. package/dist/cjs/dda-vertical-stepper.cjs.entry.js +2 -2
  39. package/dist/cjs/dda.cjs.js +1 -1
  40. package/dist/cjs/{index-BpHPwGf8.js → index-lNJmUapU.js} +1 -1
  41. package/dist/cjs/loader.cjs.js +1 -1
  42. package/dist/collection/components/dda-accordion/dda-accordion.js +1 -1
  43. package/dist/collection/components/dda-alert/dda-alert.js +1 -1
  44. package/dist/collection/components/dda-attach-file/dda-attach-file.js +1 -1
  45. package/dist/collection/components/dda-avatar/dda-avatar.js +4 -4
  46. package/dist/collection/components/dda-breadcrumb/dda-breadcrumb.js +1 -1
  47. package/dist/collection/components/dda-button/dda-button.js +1 -1
  48. package/dist/collection/components/dda-checkbox/dda-checkbox.js +1 -1
  49. package/dist/collection/components/dda-chip/dda-chip.js +1 -1
  50. package/dist/collection/components/dda-credit-card/dda-credit-card.js +1 -1
  51. package/dist/collection/components/dda-dropdown/dda-dropdown.js +1 -1
  52. package/dist/collection/components/dda-header/dda-header.js +9 -9
  53. package/dist/collection/components/dda-home-banner/dda-home-banner.js +2 -2
  54. package/dist/collection/components/dda-home-banner/home-banner.css +36 -1
  55. package/dist/collection/components/dda-link-button/dda-link-button.js +1 -1
  56. package/dist/collection/components/dda-number-field/dda-number-field.js +1 -1
  57. package/dist/collection/components/dda-pagination/dda-pagination.js +7 -7
  58. package/dist/collection/components/dda-phonefield/dda-phonefield.js +1 -1
  59. package/dist/collection/components/dda-radiobutton/dda-radiobutton.css +137 -6
  60. package/dist/collection/components/dda-search-input/dda-search-input.js +1 -1
  61. package/dist/collection/components/dda-select/dda-select.js +2 -2
  62. package/dist/collection/components/dda-sticky-footer/dda-sticky-footer.js +4 -7
  63. package/dist/collection/components/dda-tabs/dda-tabs.js +1 -1
  64. package/dist/collection/components/dda-textarea/dda-textarea.js +1 -1
  65. package/dist/collection/components/dda-ui-card/dda-ui-card.js +1 -1
  66. package/dist/collection/components/segmented-groups/dda-segmented-tabs/dda-segmented-tabs.js +1 -1
  67. package/dist/collection/components/stepper/dda-vertical-stepper/dda-vertical-stepper.js +1 -1
  68. package/dist/collection/global/global.css +137 -6
  69. package/dist/components/dda-accordion.js +1 -1
  70. package/dist/components/dda-alert.js +1 -1
  71. package/dist/components/dda-attach-file.js +1 -1
  72. package/dist/components/dda-avatar.js +1 -1
  73. package/dist/components/dda-banner-card.js +1 -1
  74. package/dist/components/dda-banner.js +1 -1
  75. package/dist/components/dda-breadcrumb.js +1 -1
  76. package/dist/components/dda-button.js +1 -1
  77. package/dist/components/dda-checkbox.js +1 -1
  78. package/dist/components/dda-chip.js +1 -1
  79. package/dist/components/dda-credit-card.js +1 -1
  80. package/dist/components/dda-creditcard-field.js +1 -1
  81. package/dist/components/dda-dropdown.js +1 -1
  82. package/dist/components/dda-footer.js +1 -1
  83. package/dist/components/dda-header.js +1 -1
  84. package/dist/components/dda-home-banner.js +1 -1
  85. package/dist/components/dda-home-carousel.js +1 -1
  86. package/dist/components/dda-horizontal-stepper.js +1 -1
  87. package/dist/components/dda-input.js +1 -1
  88. package/dist/components/dda-link-button.js +1 -1
  89. package/dist/components/dda-number-field.js +1 -1
  90. package/dist/components/dda-pagination.js +1 -1
  91. package/dist/components/dda-phonefield.js +1 -1
  92. package/dist/components/dda-progressbar.js +1 -1
  93. package/dist/components/dda-radiobutton.js +1 -1
  94. package/dist/components/dda-range-slider.js +1 -1
  95. package/dist/components/dda-scroll-icon.js +1 -1
  96. package/dist/components/dda-search-input.js +1 -1
  97. package/dist/components/dda-segmented-tabs.js +1 -1
  98. package/dist/components/dda-select.js +1 -1
  99. package/dist/components/dda-sticky-footer.js +1 -1
  100. package/dist/components/dda-tabs.js +1 -1
  101. package/dist/components/dda-textarea.js +1 -1
  102. package/dist/components/dda-toggle.js +1 -1
  103. package/dist/components/dda-tooltip.js +1 -1
  104. package/dist/components/dda-ui-card.js +1 -1
  105. package/dist/components/dda-vertical-stepper.js +1 -1
  106. package/dist/components/index.js +1 -1
  107. package/dist/components/p-C189DyVE.js +1 -0
  108. package/dist/components/p-CxoSnPXH.js +1 -0
  109. package/dist/components/p-D0_AWCD0.js +1 -0
  110. package/dist/components/p-DD1Zpaej.js +1 -0
  111. package/dist/components/p-DjZlrMd_.js +1 -0
  112. package/dist/components/{p-DADawXC0.js → p-Ni26DZIa.js} +1 -1
  113. package/dist/components/p-t7bTR_8z.js +1 -0
  114. package/dist/dda/dda.css +1 -1
  115. package/dist/dda/dda.esm.js +1 -1
  116. package/dist/dda/p-062e9ab1.entry.js +1 -0
  117. package/dist/dda/p-09764a0d.entry.js +1 -0
  118. package/dist/dda/p-10381c11.entry.js +1 -0
  119. package/dist/dda/p-105e8117.entry.js +1 -0
  120. package/dist/dda/p-25d6570f.entry.js +1 -0
  121. package/dist/dda/p-3235d840.entry.js +1 -0
  122. package/dist/dda/p-32c533d5.entry.js +1 -0
  123. package/dist/dda/p-3304e4eb.entry.js +1 -0
  124. package/dist/dda/p-3cb3796a.entry.js +1 -0
  125. package/dist/dda/p-3d1788cd.entry.js +1 -0
  126. package/dist/dda/p-411fe443.entry.js +1 -0
  127. package/dist/dda/{p-32b7fa0b.entry.js → p-445e2ddf.entry.js} +1 -1
  128. package/dist/dda/p-47a47db8.entry.js +1 -0
  129. package/dist/dda/p-4a31ef64.entry.js +1 -0
  130. package/dist/dda/p-4b3e59da.entry.js +1 -0
  131. package/dist/dda/p-4c20eda1.entry.js +1 -0
  132. package/dist/dda/p-66990371.entry.js +1 -0
  133. package/dist/dda/p-66fe3114.entry.js +1 -0
  134. package/dist/dda/p-709ab5b5.entry.js +1 -0
  135. package/dist/dda/p-78afa42e.entry.js +1 -0
  136. package/dist/dda/p-7c87086c.entry.js +1 -0
  137. package/dist/dda/p-8057a7ea.entry.js +1 -0
  138. package/dist/dda/p-8a31b82f.entry.js +1 -0
  139. package/dist/dda/p-9bd215b3.entry.js +1 -0
  140. package/dist/dda/p-9d8f2852.entry.js +1 -0
  141. package/dist/dda/p-a10b4715.entry.js +1 -0
  142. package/dist/dda/p-a5e28398.entry.js +1 -0
  143. package/dist/dda/p-ae53a260.entry.js +1 -0
  144. package/dist/dda/p-aee500cb.entry.js +1 -0
  145. package/dist/dda/p-b26c4ca0.entry.js +1 -0
  146. package/dist/dda/p-b6319f76.entry.js +1 -0
  147. package/dist/dda/p-bf7861ef.entry.js +1 -0
  148. package/dist/dda/{p-f49baf43.entry.js → p-c88969da.entry.js} +1 -1
  149. package/dist/dda/p-cbcd2a37.entry.js +1 -0
  150. package/dist/dda/p-e7b2cc22.entry.js +1 -0
  151. package/dist/dda/p-eslb0xPL.js +2 -0
  152. package/dist/dda/p-f937392b.entry.js +1 -0
  153. package/dist/esm/dda-accordion.entry.js +3 -3
  154. package/dist/esm/dda-alert.entry.js +3 -3
  155. package/dist/esm/dda-attach-file.entry.js +3 -3
  156. package/dist/esm/dda-avatar.entry.js +6 -6
  157. package/dist/esm/dda-banner-card.entry.js +2 -2
  158. package/dist/esm/dda-banner.entry.js +2 -2
  159. package/dist/esm/dda-breadcrumb.entry.js +3 -3
  160. package/dist/esm/dda-button.entry.js +3 -3
  161. package/dist/esm/dda-checkbox.entry.js +3 -3
  162. package/dist/esm/dda-chip.entry.js +3 -3
  163. package/dist/esm/dda-credit-card.entry.js +3 -3
  164. package/dist/esm/dda-creditcard-field.entry.js +2 -2
  165. package/dist/esm/dda-dropdown.entry.js +3 -3
  166. package/dist/esm/dda-footer.entry.js +2 -2
  167. package/dist/esm/dda-header.entry.js +10 -10
  168. package/dist/esm/dda-home-banner.entry.js +5 -5
  169. package/dist/esm/dda-home-carousel.entry.js +2 -2
  170. package/dist/esm/dda-horizontal-stepper.entry.js +2 -2
  171. package/dist/esm/dda-input.entry.js +2 -2
  172. package/dist/esm/dda-link-button_2.entry.js +4 -4
  173. package/dist/esm/dda-number-field.entry.js +3 -3
  174. package/dist/esm/dda-pagination.entry.js +9 -9
  175. package/dist/esm/dda-phonefield.entry.js +3 -3
  176. package/dist/esm/dda-progressbar.entry.js +2 -2
  177. package/dist/esm/dda-range-slider.entry.js +1 -1
  178. package/dist/esm/dda-scroll-icon.entry.js +1 -1
  179. package/dist/esm/dda-search-input.entry.js +3 -3
  180. package/dist/esm/dda-segmented-tabs.entry.js +3 -3
  181. package/dist/esm/dda-select.entry.js +4 -4
  182. package/dist/esm/dda-sticky-footer.entry.js +6 -9
  183. package/dist/esm/dda-tabs.entry.js +3 -3
  184. package/dist/esm/dda-textarea.entry.js +3 -3
  185. package/dist/esm/dda-toggle.entry.js +2 -2
  186. package/dist/esm/dda-tooltip.entry.js +2 -2
  187. package/dist/esm/dda-ui-card.entry.js +2 -2
  188. package/dist/esm/dda-vertical-stepper.entry.js +2 -2
  189. package/dist/esm/dda.js +2 -2
  190. package/dist/esm/{index-iieH594-.js → index-eslb0xPL.js} +1 -1
  191. package/dist/esm/loader.js +2 -2
  192. package/package.json +1 -1
  193. package/dist/components/p-Aj18WhqQ.js +0 -1
  194. package/dist/components/p-B6tn8eWW.js +0 -1
  195. package/dist/components/p-DGSOTFfp.js +0 -1
  196. package/dist/components/p-DaS2FaM0.js +0 -1
  197. package/dist/components/p-Dg2Jrfwt.js +0 -1
  198. package/dist/components/p-s_i90FgA.js +0 -1
  199. package/dist/dda/p-0c05652f.entry.js +0 -1
  200. package/dist/dda/p-0fd1acdd.entry.js +0 -1
  201. package/dist/dda/p-11901233.entry.js +0 -1
  202. package/dist/dda/p-18e9a615.entry.js +0 -1
  203. package/dist/dda/p-1b689398.entry.js +0 -1
  204. package/dist/dda/p-29dd1174.entry.js +0 -1
  205. package/dist/dda/p-2f525e36.entry.js +0 -1
  206. package/dist/dda/p-320f0e23.entry.js +0 -1
  207. package/dist/dda/p-3b138fdb.entry.js +0 -1
  208. package/dist/dda/p-3d0b1347.entry.js +0 -1
  209. package/dist/dda/p-4c8f6c9f.entry.js +0 -1
  210. package/dist/dda/p-56be5579.entry.js +0 -1
  211. package/dist/dda/p-591bcbc4.entry.js +0 -1
  212. package/dist/dda/p-756e23e7.entry.js +0 -1
  213. package/dist/dda/p-7fa9f38a.entry.js +0 -1
  214. package/dist/dda/p-84a4b457.entry.js +0 -1
  215. package/dist/dda/p-85cdea5c.entry.js +0 -1
  216. package/dist/dda/p-871750c7.entry.js +0 -1
  217. package/dist/dda/p-88cea310.entry.js +0 -1
  218. package/dist/dda/p-8cd2021c.entry.js +0 -1
  219. package/dist/dda/p-93e38077.entry.js +0 -1
  220. package/dist/dda/p-985c08b9.entry.js +0 -1
  221. package/dist/dda/p-9881b357.entry.js +0 -1
  222. package/dist/dda/p-9c0df893.entry.js +0 -1
  223. package/dist/dda/p-aaa58103.entry.js +0 -1
  224. package/dist/dda/p-accfabd7.entry.js +0 -1
  225. package/dist/dda/p-c16f300c.entry.js +0 -1
  226. package/dist/dda/p-c8319e6f.entry.js +0 -1
  227. package/dist/dda/p-d111ac4a.entry.js +0 -1
  228. package/dist/dda/p-d2fc3312.entry.js +0 -1
  229. package/dist/dda/p-e05169f8.entry.js +0 -1
  230. package/dist/dda/p-e37b2e47.entry.js +0 -1
  231. package/dist/dda/p-e991a8c7.entry.js +0 -1
  232. package/dist/dda/p-ebc2c744.entry.js +0 -1
  233. package/dist/dda/p-iieH594-.js +0 -2
@@ -747,9 +747,9 @@
747
747
  a fade on each edge with more cards, and a thin scrollbar show that the row scrolls. */
748
748
  :is(.quick-links-wrap, .dda-home-quick-links-wrap),
749
749
  .quick-links {
750
- /* Room inside the row for the hover lift (12px above) and the pointer (9px below);
751
- a scrolling box clips anything outside it. */
752
- --dda-quick-links-pad-top: 12px;
750
+ /* Room inside the row for the hover and focus lift (12px above, and the focus ring 4px more)
751
+ and the pointer (9px below); a scrolling box clips anything outside it. */
752
+ --dda-quick-links-pad-top: 16px;
753
753
  --dda-quick-links-pad-bottom: 12px;
754
754
  --dda-quick-links-fade: 32px;
755
755
  }
@@ -878,7 +878,8 @@
878
878
  :is(.quick-links-wrap, .dda-home-quick-links-wrap) .quick-links {
879
879
  width: 100%;
880
880
  box-sizing: border-box;
881
- padding: 20px 20px var(--dda-quick-links-pad-bottom);
881
+ /* Read by the row's padding, so dda-home-carousel's <ul> gets it too (see ul.quick-links). */
882
+ --dda-quick-links-pad-top: 20px;
882
883
  scrollbar-color: var(--dda-on-surface-variant-40) transparent;
883
884
  }
884
885
  .quick-links .link-item {
@@ -966,7 +967,7 @@
966
967
  bottom: calc(var(--dda-quick-links-gap-sm) - var(--dda-quick-links-pad-bottom) + var(--dda-sticky-footer-height, 0px));
967
968
  }
968
969
  :is(.quick-links-wrap, .dda-home-quick-links-wrap) .quick-links {
969
- padding-top: var(--dda-quick-links-pad-top);
970
+ --dda-quick-links-pad-top: 16px;
970
971
  scrollbar-color: rgba(255, 255, 255, 0.7) transparent;
971
972
  }
972
973
  .quick-links .link-item {
@@ -994,8 +995,13 @@
994
995
  }
995
996
 
996
997
  /* dda-home-carousel: its list is a .quick-links row; each <li> holds one dda-banner-card. */
998
+ /* global.css resets every <ul> to margin: 0 and padding: 0 with !important. On this row that removed
999
+ the top padding the hover lift rises into, so a raised card was cut off, and the auto margins
1000
+ that centre it, so the row ran 90vw from the container's start edge and out of the container. */
997
1001
  ul.quick-links {
998
- margin-block: 0;
1002
+ width: min(90vw, 100%);
1003
+ margin: 0 auto !important;
1004
+ padding: var(--dda-quick-links-pad-top) 20px var(--dda-quick-links-pad-bottom) !important;
999
1005
  list-style: none;
1000
1006
  }
1001
1007
  .quick-links > .dda-home-carousel-item {
@@ -1046,6 +1052,38 @@ button.link-item {
1046
1052
  }
1047
1053
  }
1048
1054
 
1055
+ /* Short screens (a laptop zoomed past about 115%, or a phone on its side): dda-home-banner grows
1056
+ with its text (home-banner.css), so the cards follow it in normal flow instead of sitting on it.
1057
+ They wrap instead of scrolling sideways, each at least 220px wide or the row's width, so at 400%
1058
+ zoom every card is in view at a readable size, one under another. */
1059
+ @media screen and (max-height: 700px) {
1060
+ :is(.quick-links-wrap, .dda-home-quick-links-wrap) {
1061
+ position: relative;
1062
+ bottom: auto;
1063
+ }
1064
+ :is(.quick-links-wrap, .dda-home-quick-links-wrap) .quick-links,
1065
+ .quick-links {
1066
+ flex-wrap: wrap;
1067
+ overflow: visible;
1068
+ scroll-snap-type: none;
1069
+ -webkit-mask-image: none;
1070
+ mask-image: none;
1071
+ animation: none;
1072
+ }
1073
+ .quick-links .link-item,
1074
+ .quick-links > .dda-home-carousel-item {
1075
+ flex: 1 1 min(220px, 100%);
1076
+ height: auto;
1077
+ margin-top: 0;
1078
+ border: solid 1px #ddd;
1079
+ }
1080
+ /* The hover and focus lift would push a card into the row above it. */
1081
+ .quick-links .link-item:hover,
1082
+ .quick-links .link-item:focus-visible {
1083
+ margin-top: 0;
1084
+ }
1085
+ }
1086
+
1049
1087
  .dda-card {
1050
1088
  position: relative;
1051
1089
  display: -ms-flexbox;
@@ -2473,6 +2511,90 @@ body {
2473
2511
  }
2474
2512
  }
2475
2513
 
2514
+ /* 992px and below the links are 48px round buttons in one row. Six of them with their spacing
2515
+ took about 424px, so on a 320-375px phone, or a laptop zoomed to 400% (WCAG 1.4.10), the last
2516
+ buttons ran off the screen. Here the spacing narrows with the screen and each button shrinks
2517
+ from 48px when the row does not fit, to no less than 32px, so up to eight fit at 320px. The
2518
+ right-hand links in the "more" menu keep their size. */
2519
+ @media (max-width: 992px) {
2520
+ .dda-footer {
2521
+ padding: 0 clamp(8px, 4vw, 20px);
2522
+ }
2523
+ .dda-footer-item,
2524
+ .dda-footer-item ul {
2525
+ min-width: 0;
2526
+ }
2527
+ :is(.dda-footer-item:not(.dda-footer-right), .dda-footer:not(.has-more-button) .dda-footer-right) li.foot-icon-btn {
2528
+ --dda-foot-btn-pad: clamp(2px, 1vw, 8px);
2529
+ flex: 0 1 calc(48px + 2 * var(--dda-foot-btn-pad));
2530
+ min-width: calc(32px + 2 * var(--dda-foot-btn-pad));
2531
+ padding: 0 var(--dda-foot-btn-pad);
2532
+ }
2533
+ :is(.dda-footer-item:not(.dda-footer-right), .dda-footer:not(.has-more-button) .dda-footer-right) li.foot-icon-btn :is(dda-tooltip, .dda-tooltip-container) {
2534
+ display: flex;
2535
+ width: 100%;
2536
+ }
2537
+ :is(.dda-footer-item:not(.dda-footer-right), .dda-footer:not(.has-more-button) .dda-footer-right) li.foot-icon-btn a {
2538
+ width: 48px;
2539
+ max-width: 100%;
2540
+ height: auto;
2541
+ aspect-ratio: 1;
2542
+ }
2543
+ :is(.dda-footer-item:not(.dda-footer-right), .dda-footer:not(.has-more-button) .dda-footer-right) li.foot-icon-btn a img {
2544
+ max-width: 70%;
2545
+ object-fit: contain;
2546
+ }
2547
+ }
2548
+ /* The short landscape bar above makes the buttons 35px. */
2549
+ @media only screen and (orientation: landscape) and (max-width: 768px) {
2550
+ :is(.dda-footer-item:not(.dda-footer-right), .dda-footer:not(.has-more-button) .dda-footer-right) li.foot-icon-btn {
2551
+ flex-basis: calc(35px + 2 * var(--dda-foot-btn-pad));
2552
+ }
2553
+ }
2554
+
2555
+ /* A tooltip is centred over its button and wider than it, so over the first and last buttons it
2556
+ ran past the screen edge (3-7px on desktop, about 20px on a phone). Those two line up with the
2557
+ button's outer edge instead, and their arrow moves near the button's centre: 16px in on desktop,
2558
+ 24px on the round buttons. In the "more" menu every link sits at the end edge. */
2559
+ .dda-footer .footer-content > .dda-footer-item:first-child li.foot-icon-btn:first-child .dda-tooltip-box.top {
2560
+ left: auto;
2561
+ inset-inline-start: 0;
2562
+ transform: none;
2563
+ }
2564
+ .dda-footer .dda-footer-right li.foot-icon-btn:last-child .dda-tooltip-box.top {
2565
+ left: auto;
2566
+ inset-inline-end: 0;
2567
+ transform: none;
2568
+ }
2569
+ .dda-footer .footer-content > .dda-footer-item:first-child li.foot-icon-btn:first-child .dda-tooltip-box.top::before,
2570
+ .dda-footer .footer-content > .dda-footer-item:first-child li.foot-icon-btn:first-child .dda-tooltip-box.top::after {
2571
+ left: auto;
2572
+ margin-inline-start: 0;
2573
+ inset-inline-start: var(--dda-foot-tip-arrow, 6px);
2574
+ }
2575
+ .dda-footer .dda-footer-right li.foot-icon-btn:last-child .dda-tooltip-box.top::before,
2576
+ .dda-footer .dda-footer-right li.foot-icon-btn:last-child .dda-tooltip-box.top::after {
2577
+ left: auto;
2578
+ margin-inline-start: 0;
2579
+ inset-inline-end: var(--dda-foot-tip-arrow, 6px);
2580
+ }
2581
+ @media (max-width: 992px) {
2582
+ .dda-footer {
2583
+ --dda-foot-tip-arrow: 14px;
2584
+ }
2585
+ .dda-footer.has-more-button .dda-footer-right li.foot-icon-btn .dda-tooltip-box.top {
2586
+ left: auto;
2587
+ inset-inline-end: 0;
2588
+ transform: none;
2589
+ }
2590
+ .dda-footer.has-more-button .dda-footer-right li.foot-icon-btn .dda-tooltip-box.top::before,
2591
+ .dda-footer.has-more-button .dda-footer-right li.foot-icon-btn .dda-tooltip-box.top::after {
2592
+ left: auto;
2593
+ margin-inline-start: 0;
2594
+ inset-inline-end: var(--dda-foot-tip-arrow);
2595
+ }
2596
+ }
2597
+
2476
2598
  .dda-dashboard-sidebar {
2477
2599
  position: fixed;
2478
2600
  top: 0;
@@ -4009,6 +4131,15 @@ button {
4009
4131
  cursor: pointer;
4010
4132
  }
4011
4133
 
4134
+ /* Icon-font ligatures draw from data-icon, not from text in the element: the icon name is then
4135
+ not text in the page, so an accessibility checker does not read "chevron_right" as a visible
4136
+ label that the button's accessible name must contain (WCAG 2.5.3). The icons are aria-hidden;
4137
+ the button's aria-label or text names it. Material classes only, so another icon font's own
4138
+ ::before glyph is untouched. */
4139
+ :is(.material-icons, .material-icons-outlined, .material-icons-round, .material-icons-sharp, .material-icons-two-tone, .material-symbols-outlined, .material-symbols-rounded, .material-symbols-sharp)[data-icon]::before {
4140
+ content: attr(data-icon);
4141
+ }
4142
+
4012
4143
  ul {
4013
4144
  margin: 0 !important;
4014
4145
  padding: 0 !important;
@@ -46,7 +46,7 @@ export class DdaSearchInput {
46
46
  }
47
47
  render() {
48
48
  const id = this.inputId;
49
- return (h(Host, { key: '1f3191966d43f2b236fd11459101c769a0927436' }, h("div", { key: '7dd31c429d569ebfff446d78b7c88787bb89108d', class: `dda-input-container dda-input-size-${this.size} ${this.component_mode} ${this.custom_class} ${this.input_status ? `dda-input-${this.input_status}` : ''} ${this.has_error ? 'dda-validation-error' : ''}` }, this.label && h("label", { key: 'c0b9f0a432de51598797da4734c9147decaf9ba1', htmlFor: id, class: "dda-input-label" }, this.label), h("div", { key: 'ec94b09e36f446cf5d08cd1406374e3a71330f45', class: "dda-search-area dda-search-action" }, h("i", { key: '6a5c297727c0783f204346a09eb479320c98a287', class: "material-icons icon-left", "aria-hidden": "true" }, "search"), h("input", { key: '581437d9d6cda370e2bcafd5f1704cc0fec6ed08', name: this.search_input_name, "aria-label": this.aria_label, id: id, type: "text", class: "dda-input-field dda-search-field", placeholder: this.placeholder, "aria-describedby": this.describedBy, "aria-invalid": this.error_message ? 'true' : undefined }), h("div", { key: 'a8b99cc30487d302ac2c40717ed1d15ca9b862c9', class: "dda-search-btngroup" }, h("button", { key: 'ebdc39f8411eb8fb54feed4c22543d0076708cc6', name: this.close_button_name, "aria-label": this.button_aria_label || this.clear_button_label, id: this.button_id, type: "button", class: "icon-close", onClick: () => this.clearInput() }, h("i", { key: '991884ec48eb496ec35d95368d8763bcf7fb4f07', class: "material-icons material-symbols-outlined", "aria-hidden": "true" }, "close")), this.show_button && (h("button", { key: '9a825cfb95a6fbfc82d34d5014d44cab59193f06', name: this.search_button_name, type: "button", class: "dda-btn btn-color-default-primary dda-btn-sm" }, "Search")))), this.helper_text && h("span", { key: '656c31b9a6a2d9a61d26277821e1fdd47cabc01a', id: this.helperId, class: "dda-helper-text" }, this.helper_text), this.error_message && h("span", { key: 'c796e3b1dc99f60c34009c8bfb4598683d0d0e09', id: this.errorId, class: "dda-error-message" }, this.error_message))));
49
+ return (h(Host, { key: '1f3191966d43f2b236fd11459101c769a0927436' }, h("div", { key: '7dd31c429d569ebfff446d78b7c88787bb89108d', class: `dda-input-container dda-input-size-${this.size} ${this.component_mode} ${this.custom_class} ${this.input_status ? `dda-input-${this.input_status}` : ''} ${this.has_error ? 'dda-validation-error' : ''}` }, this.label && h("label", { key: 'c0b9f0a432de51598797da4734c9147decaf9ba1', htmlFor: id, class: "dda-input-label" }, this.label), h("div", { key: 'ec94b09e36f446cf5d08cd1406374e3a71330f45', class: "dda-search-area dda-search-action" }, h("i", { key: 'ee331ce3af2eb7ce0492119813a6a7e968beff85', class: "material-icons icon-left", "data-icon": "search", "aria-hidden": "true" }), h("input", { key: '709364d5c744547be825cc1e5f82cf06075f9a66', name: this.search_input_name, "aria-label": this.aria_label, id: id, type: "text", class: "dda-input-field dda-search-field", placeholder: this.placeholder, "aria-describedby": this.describedBy, "aria-invalid": this.error_message ? 'true' : undefined }), h("div", { key: 'acf0c3b562ba549cdb6211407de559c8c3b6f6ad', class: "dda-search-btngroup" }, h("button", { key: '8cdc767b648b7a3cd7d145e643db036b75191863', name: this.close_button_name, "aria-label": this.button_aria_label || this.clear_button_label, id: this.button_id, type: "button", class: "icon-close", onClick: () => this.clearInput() }, h("i", { key: '87abd33df3cd3b134f1a0bc7452e82cf5fabeddb', class: "material-icons material-symbols-outlined", "data-icon": "close", "aria-hidden": "true" })), this.show_button && (h("button", { key: '182844cec77fe7c071d779ac117f4a0ffa252622', name: this.search_button_name, type: "button", class: "dda-btn btn-color-default-primary dda-btn-sm" }, "Search")))), this.helper_text && h("span", { key: '08ab7162a99c3ec35c16d807813083ac68215f39', id: this.helperId, class: "dda-helper-text" }, this.helper_text), this.error_message && h("span", { key: '3ab1583781f571ea9f2d1da2c671bbdc3bf70959', id: this.errorId, class: "dda-error-message" }, this.error_message))));
50
50
  }
51
51
  static get is() { return "dda-search-input"; }
52
52
  static get originalStyleUrls() {
@@ -241,10 +241,10 @@ export class Ddaselect {
241
241
  'dda-select-open': this.is_open,
242
242
  [`dda-input-size-${this.size}`]: !!this.size,
243
243
  [`dda-validation-${validation}`]: !!validation,
244
- } }, this.label && h("label", { key: '87491d828a562c97475241da38308faa32e35fb0', id: this.labelId, class: "dda-input-label" }, this.label), h("div", { key: '385d35415beb1104eea5329427c6db616954c0da', class: "dda-dropdown-container" }, h("button", { key: 'd86507f9a4ebc1a7cc66e94d2126d3bd80030b19', name: this.toggle_button_name, "aria-label": this.triggerLabel, "aria-labelledby": this.label && !this.triggerLabel ? `${this.labelId} ${id}` : undefined, id: id, type: "button", class: "dda-input-field dda-select-header", "aria-haspopup": "listbox", "aria-expanded": this.is_open ? 'true' : 'false', "aria-controls": this.is_open ? this.listboxId : undefined, "aria-describedby": this.describedBy, "aria-invalid": this.error_message ? 'true' : undefined, onClick: () => { this.toggleSelect(); }, onKeyDown: this.onTriggerKeyDown, onBlur: this.onTriggerBlur }, current ? current.text : ((_a = this.placeholder) !== null && _a !== void 0 ? _a : 'Select an option'), h("i", { key: '672144adba927f8c64a18d01569021f5184dd85b', class: `material-icons`, "aria-hidden": "true" }, this.is_open ? 'keyboard_arrow_up' : 'keyboard_arrow_down')), this.is_open && (h("div", { key: 'ee31ed5dc81d441998320aff4c700328dd74cb18', id: this.listboxId, role: "listbox", "aria-label": this.triggerLabel || this.label, class: "dda-input-dropdown-list dda-select-list" }, options.length > 0 ? (options.map((option, index) => {
244
+ } }, this.label && h("label", { key: '87491d828a562c97475241da38308faa32e35fb0', id: this.labelId, class: "dda-input-label" }, this.label), h("div", { key: '385d35415beb1104eea5329427c6db616954c0da', class: "dda-dropdown-container" }, h("button", { key: 'd86507f9a4ebc1a7cc66e94d2126d3bd80030b19', name: this.toggle_button_name, "aria-label": this.triggerLabel, "aria-labelledby": this.label && !this.triggerLabel ? `${this.labelId} ${id}` : undefined, id: id, type: "button", class: "dda-input-field dda-select-header", "aria-haspopup": "listbox", "aria-expanded": this.is_open ? 'true' : 'false', "aria-controls": this.is_open ? this.listboxId : undefined, "aria-describedby": this.describedBy, "aria-invalid": this.error_message ? 'true' : undefined, onClick: () => { this.toggleSelect(); }, onKeyDown: this.onTriggerKeyDown, onBlur: this.onTriggerBlur }, current ? current.text : ((_a = this.placeholder) !== null && _a !== void 0 ? _a : 'Select an option'), h("i", { key: 'e01493f9eefb060b52d3b6ec97ed33ad8995edbd', class: `material-icons`, "data-icon": this.is_open ? 'keyboard_arrow_up' : 'keyboard_arrow_down', "aria-hidden": "true" })), this.is_open && (h("div", { key: 'bbe506c30d244f64fba15f0e73f17aa063221153', id: this.listboxId, role: "listbox", "aria-label": this.triggerLabel || this.label, class: "dda-input-dropdown-list dda-select-list" }, options.length > 0 ? (options.map((option, index) => {
245
245
  const isCurrent = current !== undefined && String(current.id) === String(option.id);
246
246
  return (h("button", { name: this.option_select_button_name, type: "button", role: "option", "aria-selected": isCurrent ? 'true' : 'false', tabIndex: index === activeIndex ? 0 : -1, class: `dda-input-dropdown-item ${isCurrent ? 'selected' : ''}`, onClick: () => this.selectOption(option), onKeyDown: (event) => this.onOptionKeyDown(event, option), key: `${index}-${option.id}` }, option.text));
247
- })) : (h("div", { class: "dda-input-dropdown-item" }, "No options available"))))), this.helper_text && h("span", { key: '96cafd84643b25aaf08b0d6984f8690688f0093d', id: this.helperId, class: "dda-helper-text" }, this.helper_text), this.error_message && h("span", { key: '0d4c0493b85c32972a7852d9008a1c8cebf81660', id: this.errorId, class: "dda-error-message" }, this.error_message))));
247
+ })) : (h("div", { class: "dda-input-dropdown-item" }, "No options available"))))), this.helper_text && h("span", { key: 'fdd2cb570b02c071653525fd5205cee0b8d22ff2', id: this.helperId, class: "dda-helper-text" }, this.helper_text), this.error_message && h("span", { key: '25684c92c9182e8d5a61df9dc711ccc27870d665', id: this.errorId, class: "dda-error-message" }, this.error_message))));
248
248
  }
249
249
  static get is() { return "dda-select"; }
250
250
  static get originalStyleUrls() {
@@ -51,10 +51,7 @@ export class DdaStickyFooter {
51
51
  if (src || !icon) {
52
52
  return h("img", { src: src, alt: text });
53
53
  }
54
- return [
55
- h("i", { class: "material-icons material-symbols-outlined", "aria-hidden": "true" }, icon),
56
- h("span", { class: "visually-hidden" }, text),
57
- ];
54
+ return [h("i", { class: "material-icons material-symbols-outlined", "data-icon": icon, "aria-hidden": "true" }), h("span", { class: "visually-hidden" }, text)];
58
55
  }
59
56
  // 3.x: any colorTheme other than "light" is dark. 3.x gave an empty image when the dark one
60
57
  // was missing; this falls back to the light image instead.
@@ -78,12 +75,12 @@ export class DdaStickyFooter {
78
75
  const rightItems = parseJsonProp(this.rightLink, 'right-link');
79
76
  return (
80
77
  // An <aside>, not a <footer>: the page footer (dda-footer) is the only contentinfo landmark.
81
- h("aside", { key: '3646462dd78e1e15798cbde5a74d75191cdd1086', class: { 'dda-footer': true, hidden: this.isHidden, 'has-more-button': !!this.moreIcon }, "aria-label": this.aria_label, "aria-hidden": this.isHidden ? 'true' : 'false', inert: this.isHidden }, h("div", { key: 'cef204100853f69250b15c7e71ef2d6b97df7fce', class: "footer-content" }, h("div", { key: '0bc5c97a4406ff13f240becca20212f78d2e96fc', class: "dda-footer-item dda-footer-left" }, h("ul", { key: '70d02e19f02c4dd54cf533351dd70e28f9b9d00f' }, this.happinessIconSrc && (h("li", { key: 'e0202043b9b94772dec0ecce445ab1fff71545a2', class: "foot-icon-btn" }, h("dda-tooltip", { key: '0d3fb7aa55adca64a1b2cd5adb7c6d323ab358fd', title_text: this.happinessIconTooltip, description: "", position: "top" }, h("a", { key: 'b6617f12a5834e8c2edd86addc03416f19ea7af3', href: this.happinessIconHref, id: this.happinessIconId }, h("img", { key: '1689a7b0fa925862d7083870c1d90b6e2dbbc4ba', src: this.img(this.happinessIconSrc, this.happinessIconSrcDark), alt: this.happinessIconAlt }))))), this.accessibilityIconSrc && (h("li", { key: 'b2abd53e38316dffba4081fbdc2f32e2733e0f65', class: "foot-icon-btn" }, h("dda-tooltip", { key: 'd59ddfeac093c7e213e5847a645a98cae907efbc', title_text: this.accessibilityIconTooltip, description: "", position: "top" }, h("a", { key: '81fcac6b35eed1caf49017d18aa0960871ada04c', href: this.accessibilityIconHref, id: this.accessibilityIconId }, h("img", { key: '1fbec3dc783c99e16a66aec2edf6e09bf68e64aa', src: this.img(this.accessibilityIconSrc, this.accessibilityIconSrcDark), alt: this.accessibilityIconAlt }))))), (this.servicesIconSrc || this.servicesIconText) && (h("li", { key: '4a8bfc4edf865cab5d0dfd271d537a2bd889a170', class: "foot-icon-btn" }, h("dda-tooltip", { key: '48bccd2fc8736481a8446c9db30a014ac63d6ad8', title_text: this.servicesIconTooltip, description: "", position: "top" }, h("a", { key: '15c07ad10e9b29434ed40e1a0db429bb90e9531d', href: this.servicesIconHref, id: this.servicesIconId }, h("img", { key: '3ec96b68cd44f4468e219e46764a84d967ed3989', src: this.img(this.servicesIconSrc, this.servicesIconSrcDark), alt: this.servicesIconText ? '' : this.servicesIconAlt }), this.servicesIconText && h("span", { key: 'c8ebfa04088a46d883e920900ecb8f6880042be4' }, this.servicesIconText))))))), !this.hideMiddleSection && middleLogos.length > 0 && (h("div", { key: 'ffbce0f6070b63588bdf52b5660bdafd02937dc4', class: "dda-footer-item dda-footer-middle" }, h("ul", { key: '7b1ffaa87a43a549d5ff7c09acc7eedda8289776', class: "foot-logo" }, middleLogos.map(logo => (h("li", null, h("dda-tooltip", { title_text: logo.tooltip, description: "", position: "top" }, h("a", { href: logo.href }, h("img", { src: logo.src, alt: logo.alt }))))))))), h("div", { key: '1177349fa3617cc0a60cc36569e2005bd8d161b4', class: "dda-footer-item dda-footer-right" }, h("ul", { key: '28cf955988ea1a1b4897015dbeddbcd19913c523', id: this.rightListId, class: { 'foot-right_links': true, 'show-dda-icon': this.rightOpen }, inert: !!this.moreIcon && !this.rightOpen && this.isMobile }, rightItems.length > 0
82
- ? rightItems.map(item => (h("li", { class: "foot-icon-btn" }, h("dda-tooltip", { title_text: item.RightLinkTooltip || item.LinkText, description: "", position: "top" }, h("a", { href: item.href, id: item.itemId, title: item.title }, item.IconName && (h("i", { class: item.IconFamily || 'material-icons', "aria-hidden": "true" }, item.IconName)), h("span", null, item.LinkText))))))
78
+ h("aside", { key: 'a38f218cd703fcf5b9f74bcbfa81c763f7d16379', class: { 'dda-footer': true, hidden: this.isHidden, 'has-more-button': !!this.moreIcon }, "aria-label": this.aria_label, "aria-hidden": this.isHidden ? 'true' : 'false', inert: this.isHidden }, h("div", { key: 'd9e143bb37fd32126f13bb004fb86cff0d0a6514', class: "footer-content" }, h("div", { key: 'f56809d10ff2940727d224bd84548662749dfc0d', class: "dda-footer-item dda-footer-left" }, h("ul", { key: 'b99abca57926edc6ec2d0d2db6a3135951ff0c55' }, this.happinessIconSrc && (h("li", { key: '7417aab3909435bc3b1f2f861d6fb34ccb4b3b74', class: "foot-icon-btn" }, h("dda-tooltip", { key: '146b35fcd36fea616cf4ff653ade32ef29dd36cf', title_text: this.happinessIconTooltip, description: "", position: "top" }, h("a", { key: '88eebafd1a89ccb3dffe91d9068c9415b19f8969', href: this.happinessIconHref, id: this.happinessIconId }, h("img", { key: 'db58007f1771a78354f96d8243a5dc6de96c3384', src: this.img(this.happinessIconSrc, this.happinessIconSrcDark), alt: this.happinessIconAlt }))))), this.accessibilityIconSrc && (h("li", { key: 'bde1f8193cebe693d583e01a081fdbd3da2024ad', class: "foot-icon-btn" }, h("dda-tooltip", { key: 'c99da2c8e3c174e433248b051c1bebb63bcd4e20', title_text: this.accessibilityIconTooltip, description: "", position: "top" }, h("a", { key: '34b24d2b28e62a5c4b834520c505a1071f7cee80', href: this.accessibilityIconHref, id: this.accessibilityIconId }, h("img", { key: '9a546f8251b4729cdba9805e8b41f677fe2357da', src: this.img(this.accessibilityIconSrc, this.accessibilityIconSrcDark), alt: this.accessibilityIconAlt }))))), (this.servicesIconSrc || this.servicesIconText) && (h("li", { key: '1bdc059f82428775dbdc40ab47fa2f6fc64c20f5', class: "foot-icon-btn" }, h("dda-tooltip", { key: '225f8f8c74cd21671524f4edc61d11eec7758b7f', title_text: this.servicesIconTooltip, description: "", position: "top" }, h("a", { key: 'b40a4dfb6c0605f039dda72076f43b9b37f3f1be', href: this.servicesIconHref, id: this.servicesIconId }, h("img", { key: '06be32622870aa8df2ccd0d85283a750ab6c624d', src: this.img(this.servicesIconSrc, this.servicesIconSrcDark), alt: this.servicesIconText ? '' : this.servicesIconAlt }), this.servicesIconText && h("span", { key: '482793fc7a6be5076860e49803d885bffecbe982' }, this.servicesIconText))))))), !this.hideMiddleSection && middleLogos.length > 0 && (h("div", { key: '4feb7a9bb1fd122fe2ad92de5429773f1f120b7b', class: "dda-footer-item dda-footer-middle" }, h("ul", { key: '8095a68de6df90d0d29fc87254ff2195c89257d9', class: "foot-logo" }, middleLogos.map(logo => (h("li", null, h("dda-tooltip", { title_text: logo.tooltip, description: "", position: "top" }, h("a", { href: logo.href }, h("img", { src: logo.src, alt: logo.alt }))))))))), h("div", { key: '8497bea7fa4865ca106925eac31ce9dcb84c2c43', class: "dda-footer-item dda-footer-right" }, h("ul", { key: 'b8782cb62e2d3bfd17bde3ecd0aa347f175b4357', id: this.rightListId, class: { 'foot-right_links': true, 'show-dda-icon': this.rightOpen }, inert: !!this.moreIcon && !this.rightOpen && this.isMobile }, rightItems.length > 0
79
+ ? rightItems.map(item => (h("li", { class: "foot-icon-btn" }, h("dda-tooltip", { title_text: item.RightLinkTooltip || item.LinkText, description: "", position: "top" }, h("a", { href: item.href, id: item.itemId, title: item.title }, item.IconName && h("i", { class: item.IconFamily || 'material-icons', "data-icon": item.IconName, "aria-hidden": "true" }), h("span", null, item.LinkText))))))
83
80
  : [
84
81
  (this.locationLogoSrc || this.locationButtonIcon) && (h("li", { class: "foot-icon-btn" }, h("dda-tooltip", { title_text: this.locationButtonText, description: "", position: "top" }, h("a", { href: this.locationButtonHref }, this.renderLinkGraphic(this.locationLogoSrc, this.locationButtonIcon, this.locationButtonText))))),
85
82
  (this.newsButtonSrc || this.newsButtonIcon) && (h("li", { class: "foot-icon-btn" }, h("dda-tooltip", { title_text: this.newsButtonText, description: "", position: "top" }, h("a", { href: this.newsButtonHref }, this.renderLinkGraphic(this.newsButtonSrc, this.newsButtonIcon, this.newsButtonText))))),
86
- ], this.dubaiaeIconSrc && this.dubaiaeIconSmallSrc && (h("li", { key: 'edc740c6c800ef96bc14f5543923f82a041d446c', class: "foot-icon-btn" }, h("dda-tooltip", { key: '827b9a1300bde258043c55733fd3547a9390abda', title_text: this.dubaiaeIconTooltip, description: "", position: "top" }, h("a", { key: '5d8e8ed55f43e3615722365b9d26ec8f6e1c4b2f', href: this.dubaiaeIconHref, id: this.dubaiaeIconId }, h("img", { key: '4a1f27125a148e86f50f53afa1b930e0de090dd9', class: "dubaiae-text-icon", src: this.img(this.dubaiaeIconSrc, this.dubaiaeIconSrcDark), alt: this.dubaiaeIconAlt }), h("img", { key: '665af1359538e8355621f813a138f0eb9d7bd84b', class: "dubaiae-small-icon", src: this.dubaiaeIconSmallSrc, alt: this.dubaiaeIconAlt }))))), this.aiIconSrc && (h("li", { key: '01fee43f185be8bf1294aecbe52b055398b7b543', class: "foot-icon-btn" }, h("dda-tooltip", { key: '820c78282e14472ca990b12041db4ec4e642083e', title_text: this.aiIconTooltip, description: "", position: "top" }, h("a", { key: '54eb1224021a028677e9b8d23006fbd9beb11fbf', href: this.aiIconHref, id: this.aiIconId }, h("img", { key: '6d1feb742d0ca78e690351535bbd9cbeebe0d5f5', src: this.img(this.aiIconSrc, this.aiIconSrcDark), alt: this.aiIconAlt }))))), this.chatIconSrc && (h("li", { key: 'af4d7ad217827506e99407da3a8101f32d7bde78', class: "foot-icon-btn" }, h("dda-tooltip", { key: '7478d66901785ce407d0a51ab8e80fa538f67768', title_text: this.chatIconTooltip, description: "", position: "top" }, h("a", { key: '4c8b819b05e00738e6b6a2a2c5361ba3480ec956', href: this.chatIconHref, id: this.chatIconId }, h("img", { key: '316c1e6691521684e21ca55ee6199a959f20528a', src: this.img(this.chatIconSrc, this.chatIconSrcDark), alt: this.chatIconAlt })))))), this.moreIcon && (h("button", { key: '2fc1d6684a5c59a364edf3cd3e7a7c1c03e097a9', type: "button", class: "show-right-icon", "aria-label": this.more_button_label || 'More', "aria-expanded": this.rightOpen ? 'true' : 'false', "aria-controls": this.rightListId, onClick: () => (this.rightOpen = !this.rightOpen) }, h("i", { key: 'e7b3e9c6ba9dec1af710039255832e5a2242b8bd', class: this.moreIconFamily || 'material-icons', "aria-hidden": "true" }, this.moreIcon)))))));
83
+ ], this.dubaiaeIconSrc && this.dubaiaeIconSmallSrc && (h("li", { key: '8683037a1c3c5b02d2961bac4c3a92d8a44b6731', class: "foot-icon-btn" }, h("dda-tooltip", { key: '0c311281571ecd6cbc482a7f8624a3c6052c03f7', title_text: this.dubaiaeIconTooltip, description: "", position: "top" }, h("a", { key: 'f8161e6c9f7ed1ff29b99ee93ce6a2353a52ddf9', href: this.dubaiaeIconHref, id: this.dubaiaeIconId }, h("img", { key: 'eef6cff15c7309b1f1aa23b390a916893ec5ed31', class: "dubaiae-text-icon", src: this.img(this.dubaiaeIconSrc, this.dubaiaeIconSrcDark), alt: this.dubaiaeIconAlt }), h("img", { key: '0b9e70320b28dce78b79e6fc0a6a627d34b66948', class: "dubaiae-small-icon", src: this.dubaiaeIconSmallSrc, alt: this.dubaiaeIconAlt }))))), this.aiIconSrc && (h("li", { key: '2b6c9cb34fc48df8f1ed39320bd03f08ac82f3f8', class: "foot-icon-btn" }, h("dda-tooltip", { key: '08d05108d4234ab4c3c184eaaf3552ea7a2a733b', title_text: this.aiIconTooltip, description: "", position: "top" }, h("a", { key: 'e1258a67593fca3e63296b75f0695c15ea8ef10a', href: this.aiIconHref, id: this.aiIconId }, h("img", { key: '5b94918922d592a684535b0fedd3749d73e57c14', src: this.img(this.aiIconSrc, this.aiIconSrcDark), alt: this.aiIconAlt }))))), this.chatIconSrc && (h("li", { key: '9d7763c1f7520c60b2efbd5eaaf50676e7ac4eb6', class: "foot-icon-btn" }, h("dda-tooltip", { key: '2eec4cf4801bef0e213f8c7076424adcde7d5605', title_text: this.chatIconTooltip, description: "", position: "top" }, h("a", { key: 'd4b770c426e7c61cc29dda658f51ea84e64d54cf', href: this.chatIconHref, id: this.chatIconId }, h("img", { key: 'acb033966851117af485fab4fd9fb44fb6960c7d', src: this.img(this.chatIconSrc, this.chatIconSrcDark), alt: this.chatIconAlt })))))), this.moreIcon && (h("button", { key: '0096cb0859920d2db92a934d6a95e117923ee6e2', type: "button", class: "show-right-icon", "aria-label": this.more_button_label || 'More', "aria-expanded": this.rightOpen ? 'true' : 'false', "aria-controls": this.rightListId, onClick: () => (this.rightOpen = !this.rightOpen) }, h("i", { key: '6fb19f4799d2998d12668a940b6e52a2622d631a', class: this.moreIconFamily || 'material-icons', "data-icon": this.moreIcon, "aria-hidden": "true" })))))));
87
84
  }
88
85
  static get is() { return "dda-sticky-footer"; }
89
86
  static get originalStyleUrls() {
@@ -44,7 +44,7 @@ export class DdaTabs {
44
44
  }
45
45
  }
46
46
  render() {
47
- return (h(Host, { key: '30474ea86c4c1c8fff84f5c09606e1c8a5b88a84' }, h("div", { key: '47bee1548f4f93e7b09b7cb8f28e61d5ddf91f50', role: "group", "aria-label": this.aria_label, class: `dda-tabs-container ${this.hover_style} ${this.custom_class} ${this.component_mode}` }, this.parsedTabs.map((title, index) => (h("button", { id: this.button_id, name: this.button_name, type: "button", "aria-pressed": this.active_tab === index ? 'true' : 'false', class: `dda-tab-item ${this.active_tab === index ? 'active' : ''}`, onClick: () => this.setActiveTab(index) }, this.type === 'text-icon' && h("i", { class: `material-icons`, "aria-hidden": "true" }, this.parsedIcons[index] || ""), h("span", null, title)))))));
47
+ return (h(Host, { key: '30474ea86c4c1c8fff84f5c09606e1c8a5b88a84' }, h("div", { key: '47bee1548f4f93e7b09b7cb8f28e61d5ddf91f50', role: "group", "aria-label": this.aria_label, class: `dda-tabs-container ${this.hover_style} ${this.custom_class} ${this.component_mode}` }, this.parsedTabs.map((title, index) => (h("button", { id: this.button_id, name: this.button_name, type: "button", "aria-pressed": this.active_tab === index ? 'true' : 'false', class: `dda-tab-item ${this.active_tab === index ? 'active' : ''}`, onClick: () => this.setActiveTab(index) }, this.type === 'text-icon' && h("i", { class: `material-icons`, "data-icon": this.parsedIcons[index] || "", "aria-hidden": "true" }), h("span", null, title)))))));
48
48
  }
49
49
  static get is() { return "dda-tabs"; }
50
50
  static get originalStyleUrls() {
@@ -158,7 +158,7 @@ export class DdaTextarea {
158
158
  // as a child `.ql-editor`, which is what AT and Tab actually
159
159
  // land on. The ARIA lives on quill.root (.ql-editor), applied
160
160
  // imperatively in syncRichEditorA11y() after mount.
161
- h("div", { id: id, class: "dda-richeditor-field" })) : (h("textarea", { id: id, name: this.textarea_name, "aria-label": this.aria_label, placeholder: this.placeholder, value: this.value, onInput: (event) => this.handleInput(event), class: "dda-input-field dda-input-textarea", maxLength: this.max_characters, "aria-describedby": this.describedBy, "aria-invalid": this.error_message ? 'true' : undefined })), this.helper_text && (h("div", { key: 'b71d5885604e71af4188d097727c875d7a69ef47', id: this.helperId, class: "dda-helper-text" }, h("span", { key: '497c95108fffd9e12adf08480e8877a9a3cf7ee9', class: "dda-flex dda-align-center dda-gap-2" }, h("i", { key: 'caa536f2039c9c85b922d34a5a2f8ee48beeb9f8', class: "material-icons material-symbols-outlined", "aria-hidden": "true" }, "info"), " ", this.helper_text), h("span", { key: '9bb54ec991d1b38f712974f37741b032056a7a5e', class: "dda-letter-count" }, this.characterCount, " / ", this.max_characters))), this.error_message && (h("div", { key: '24c199bd4481dc7f3061dd1d8f5c78c581be93dc', id: this.errorId, class: "dda-error-message" }, h("span", { key: 'bfa8ef3356a3407130cfb08499c2478b2a70572e', class: "dda-flex dda-align-center dda-gap-2" }, h("i", { key: '1fe75706036a93d63039822dbb8da1d1c659f379', class: "material-icons material-symbols-outlined", "aria-hidden": "true" }, "info"), " ", this.error_message), h("span", { key: '52001e0f2bdd24ac1d61f14b17e6a174e01ace11', class: "dda-letter-count" }, this.characterCount, " / ", this.max_characters))))));
161
+ h("div", { id: id, class: "dda-richeditor-field" })) : (h("textarea", { id: id, name: this.textarea_name, "aria-label": this.aria_label, placeholder: this.placeholder, value: this.value, onInput: (event) => this.handleInput(event), class: "dda-input-field dda-input-textarea", maxLength: this.max_characters, "aria-describedby": this.describedBy, "aria-invalid": this.error_message ? 'true' : undefined })), this.helper_text && (h("div", { key: 'b71d5885604e71af4188d097727c875d7a69ef47', id: this.helperId, class: "dda-helper-text" }, h("span", { key: '497c95108fffd9e12adf08480e8877a9a3cf7ee9', class: "dda-flex dda-align-center dda-gap-2" }, h("i", { key: '5a5256b6f1c969af78303f0da1992094905bb004', class: "material-icons material-symbols-outlined", "data-icon": "info", "aria-hidden": "true" }), " ", this.helper_text), h("span", { key: 'a7835936670a117faf14a25406bf9db731ff7bac', class: "dda-letter-count" }, this.characterCount, " / ", this.max_characters))), this.error_message && (h("div", { key: 'e4367908c85d640d5fd53cde3f679fdcd76310b4', id: this.errorId, class: "dda-error-message" }, h("span", { key: '99b1bdab7ebeb1b901d7f0e9dc15bdc78fff6b08', class: "dda-flex dda-align-center dda-gap-2" }, h("i", { key: '96b4248c674a9458d2730d6c6a58d5bd856af74b', class: "material-icons material-symbols-outlined", "data-icon": "info", "aria-hidden": "true" }), " ", this.error_message), h("span", { key: '004f5506c5990946017b7b218223dead257c2fc9', class: "dda-letter-count" }, this.characterCount, " / ", this.max_characters))))));
162
162
  }
163
163
  static get is() { return "dda-textarea"; }
164
164
  static get originalStyleUrls() {
@@ -28,7 +28,7 @@ export class DdaUiCard {
28
28
  }
29
29
  render() {
30
30
  const HeadingTag = this.headingTag;
31
- return (h(Host, { key: 'adf18a25d016f46bc87b4a1e31241ca162b333e0' }, h("div", { key: '0737db71a77843ea82b477a2f53cf86edf49d8e9', class: 'dda-card' }, h("div", { key: '798f2db5233a36522d7f84d89119cad74d11a006', class: 'dda-card-body' }, this.type !== 'custom' && (h("div", { key: '8c6793c79377b6e5eb0e0ab9bd18a2c1ca4f253a' }, !!this.icon && (h("span", { key: '4570999010919bbf9842e3cd6d3fc4f55dec8c82', class: 'dda-card-icon' }, h("i", { key: 'e80483b0a3da315a7535ab1bda1a2885681152b3', class: 'material-icons', "aria-hidden": "true" }, this.icon))), !!this.image && (h("span", { key: 'b4185ea5c24a6675dc9d0eeef4d179e99130528f', class: 'dda-card-icon' }, h("img", { key: '56306706dce39081bd2cb26bedd0f40b0af6f03c', src: this.image, alt: this.maintitle }))), !!this.maintitle && h(HeadingTag, { key: '7c2a2790cd3115a1631a45c49abe98b5467c2e82', class: 'dda-card-title' }, this.maintitle), !!this.subtitle && h("p", { key: 'fd207fb19f40281ba00d9b0310ef8a744e9ad907', class: 'dda-card-text-muted' }, this.subtitle), !!this.link && (h("a", { key: 'ec7277518f56c8bc596cc1786b6bc950f1454965', href: this.link, class: 'dda-card-link', onClick: (event) => this.linkClick.emit(event) }, this.linktext, ' ', this.linkicon && (h("span", { key: '2191736e59506877a9a094eca2a8caa80056d9c4' }, h("i", { key: 'beb1f6805dc66f93a85c7e4f47eeab22c38bf6c5', class: 'material-icons', "aria-hidden": "true" }, this.linkicon))))))), h("slot", { key: 'bbaabacc33bc9bcacfbd20e54a38058339126169' })))));
31
+ return (h(Host, { key: 'adf18a25d016f46bc87b4a1e31241ca162b333e0' }, h("div", { key: '0737db71a77843ea82b477a2f53cf86edf49d8e9', class: 'dda-card' }, h("div", { key: '798f2db5233a36522d7f84d89119cad74d11a006', class: 'dda-card-body' }, this.type !== 'custom' && (h("div", { key: '8c6793c79377b6e5eb0e0ab9bd18a2c1ca4f253a' }, !!this.icon && (h("span", { key: '4570999010919bbf9842e3cd6d3fc4f55dec8c82', class: 'dda-card-icon' }, h("i", { key: 'ade4f5236d49e7293640459ddf44451932a330cc', class: 'material-icons', "data-icon": this.icon, "aria-hidden": "true" }))), !!this.image && (h("span", { key: 'c80b5cb48244a963083ab0af3898683c0c4d6594', class: 'dda-card-icon' }, h("img", { key: '7769562f143f9218715f257ba8acf7e3ffe7a800', src: this.image, alt: this.maintitle }))), !!this.maintitle && h(HeadingTag, { key: 'a2f859019243156a1333e0aab1501d4e84ebe74a', class: 'dda-card-title' }, this.maintitle), !!this.subtitle && h("p", { key: 'ac2955d7afae34c97aceee9d32bd47719a98e8e6', class: 'dda-card-text-muted' }, this.subtitle), !!this.link && (h("a", { key: '04cdc437a125da70b36fa73caba5795031d3c458', href: this.link, class: 'dda-card-link', onClick: (event) => this.linkClick.emit(event) }, this.linktext, ' ', this.linkicon && (h("span", { key: '3a82a167f74e8c90daa3b698b800862886c8270e' }, h("i", { key: '5ebd1cbab2569ebe714e5909cd327d11d718ac28', class: 'material-icons', "data-icon": this.linkicon, "aria-hidden": "true" }))))))), h("slot", { key: 'f84ddf9b4c8cdb65d7b2b61d8c6742846252f39d' })))));
32
32
  }
33
33
  static get is() { return "dda-ui-card"; }
34
34
  static get originalStyleUrls() {
@@ -72,7 +72,7 @@ export class DdaSegmentedTabs {
72
72
  return (h("div", { key: '182bb79c4e5cc855c33642c649185c2f7da80884', role: "group", "aria-label": this.aria_label, class: `dda-segmented-group ${this.custom_class} ${this.radius_type} ${this.component_mode}` }, this.parsedItems.map((item, index) => {
73
73
  const isSelected = index === this.active_index;
74
74
  const className = `dda-segmented-item${isSelected ? ' active' : ''}`;
75
- return item.startsWith('fo') ? (h("button", { name: this.button_name, type: "button", class: className, "aria-pressed": isSelected ? 'true' : 'false', "aria-label": this.iconLabel(item, index), onClick: () => this.selectSegment(index) }, h("i", { class: "material-icons material-symbols-outlined", "aria-hidden": "true" }, item))) : (h("button", { name: this.button_name, type: "button", class: className, "aria-pressed": isSelected ? 'true' : 'false', onClick: () => this.selectSegment(index) }, item));
75
+ return item.startsWith('fo') ? (h("button", { name: this.button_name, type: "button", class: className, "aria-pressed": isSelected ? 'true' : 'false', "aria-label": this.iconLabel(item, index), onClick: () => this.selectSegment(index) }, h("i", { class: "material-icons material-symbols-outlined", "data-icon": item, "aria-hidden": "true" }))) : (h("button", { name: this.button_name, type: "button", class: className, "aria-pressed": isSelected ? 'true' : 'false', onClick: () => this.selectSegment(index) }, item));
76
76
  })));
77
77
  }
78
78
  static get is() { return "dda-segmented-tabs"; }
@@ -24,7 +24,7 @@ export class DdaVerticalStepper {
24
24
  render() {
25
25
  var _a;
26
26
  const current = (_a = this.current_step) !== null && _a !== void 0 ? _a : this.current_Step;
27
- return (h(Host, { key: '1d0b6cbc4fb3f11bc24adce00250b43a6a42374e' }, h("div", { key: '8fa15dad62552c04527e97e7b98e1450c61cf9e9', class: `${this.custom_class} ${this.component_mode} v-stepper-container` }, this.parsedSteps.map((step, index) => (h("div", { class: `v-step ${index <= current ? 'active' : ''}` }, h("div", { class: "v-step-indicator" }, h("div", { class: "icon" }, h("i", { class: `material-icons`, "aria-hidden": "true" }, step.icon))), h("div", { class: "v-step-content" }, h("div", { class: "v-step-title" }, step.title), h("div", { class: "v-step-subtitle" }, step.subtitle), h("div", { class: "v-step-description" }, step.description)), h("div", { class: "v-step-arrow" }, h("i", { class: "material-icons material-symbols-outlined", "aria-hidden": "true" }, "chevron_right"))))))));
27
+ return (h(Host, { key: '1d0b6cbc4fb3f11bc24adce00250b43a6a42374e' }, h("div", { key: '8fa15dad62552c04527e97e7b98e1450c61cf9e9', class: `${this.custom_class} ${this.component_mode} v-stepper-container` }, this.parsedSteps.map((step, index) => (h("div", { class: `v-step ${index <= current ? 'active' : ''}` }, h("div", { class: "v-step-indicator" }, h("div", { class: "icon" }, h("i", { class: `material-icons`, "data-icon": step.icon, "aria-hidden": "true" }))), h("div", { class: "v-step-content" }, h("div", { class: "v-step-title" }, step.title), h("div", { class: "v-step-subtitle" }, step.subtitle), h("div", { class: "v-step-description" }, step.description)), h("div", { class: "v-step-arrow" }, h("i", { class: "material-icons material-symbols-outlined", "data-icon": "chevron_right", "aria-hidden": "true" }))))))));
28
28
  }
29
29
  static get is() { return "dda-vertical-stepper"; }
30
30
  static get originalStyleUrls() {
@@ -747,9 +747,9 @@
747
747
  a fade on each edge with more cards, and a thin scrollbar show that the row scrolls. */
748
748
  :is(.quick-links-wrap, .dda-home-quick-links-wrap),
749
749
  .quick-links {
750
- /* Room inside the row for the hover lift (12px above) and the pointer (9px below);
751
- a scrolling box clips anything outside it. */
752
- --dda-quick-links-pad-top: 12px;
750
+ /* Room inside the row for the hover and focus lift (12px above, and the focus ring 4px more)
751
+ and the pointer (9px below); a scrolling box clips anything outside it. */
752
+ --dda-quick-links-pad-top: 16px;
753
753
  --dda-quick-links-pad-bottom: 12px;
754
754
  --dda-quick-links-fade: 32px;
755
755
  }
@@ -878,7 +878,8 @@
878
878
  :is(.quick-links-wrap, .dda-home-quick-links-wrap) .quick-links {
879
879
  width: 100%;
880
880
  box-sizing: border-box;
881
- padding: 20px 20px var(--dda-quick-links-pad-bottom);
881
+ /* Read by the row's padding, so dda-home-carousel's <ul> gets it too (see ul.quick-links). */
882
+ --dda-quick-links-pad-top: 20px;
882
883
  scrollbar-color: var(--dda-on-surface-variant-40) transparent;
883
884
  }
884
885
  .quick-links .link-item {
@@ -966,7 +967,7 @@
966
967
  bottom: calc(var(--dda-quick-links-gap-sm) - var(--dda-quick-links-pad-bottom) + var(--dda-sticky-footer-height, 0px));
967
968
  }
968
969
  :is(.quick-links-wrap, .dda-home-quick-links-wrap) .quick-links {
969
- padding-top: var(--dda-quick-links-pad-top);
970
+ --dda-quick-links-pad-top: 16px;
970
971
  scrollbar-color: rgba(255, 255, 255, 0.7) transparent;
971
972
  }
972
973
  .quick-links .link-item {
@@ -994,8 +995,13 @@
994
995
  }
995
996
 
996
997
  /* dda-home-carousel: its list is a .quick-links row; each <li> holds one dda-banner-card. */
998
+ /* global.css resets every <ul> to margin: 0 and padding: 0 with !important. On this row that removed
999
+ the top padding the hover lift rises into, so a raised card was cut off, and the auto margins
1000
+ that centre it, so the row ran 90vw from the container's start edge and out of the container. */
997
1001
  ul.quick-links {
998
- margin-block: 0;
1002
+ width: min(90vw, 100%);
1003
+ margin: 0 auto !important;
1004
+ padding: var(--dda-quick-links-pad-top) 20px var(--dda-quick-links-pad-bottom) !important;
999
1005
  list-style: none;
1000
1006
  }
1001
1007
  .quick-links > .dda-home-carousel-item {
@@ -1046,6 +1052,38 @@ button.link-item {
1046
1052
  }
1047
1053
  }
1048
1054
 
1055
+ /* Short screens (a laptop zoomed past about 115%, or a phone on its side): dda-home-banner grows
1056
+ with its text (home-banner.css), so the cards follow it in normal flow instead of sitting on it.
1057
+ They wrap instead of scrolling sideways, each at least 220px wide or the row's width, so at 400%
1058
+ zoom every card is in view at a readable size, one under another. */
1059
+ @media screen and (max-height: 700px) {
1060
+ :is(.quick-links-wrap, .dda-home-quick-links-wrap) {
1061
+ position: relative;
1062
+ bottom: auto;
1063
+ }
1064
+ :is(.quick-links-wrap, .dda-home-quick-links-wrap) .quick-links,
1065
+ .quick-links {
1066
+ flex-wrap: wrap;
1067
+ overflow: visible;
1068
+ scroll-snap-type: none;
1069
+ -webkit-mask-image: none;
1070
+ mask-image: none;
1071
+ animation: none;
1072
+ }
1073
+ .quick-links .link-item,
1074
+ .quick-links > .dda-home-carousel-item {
1075
+ flex: 1 1 min(220px, 100%);
1076
+ height: auto;
1077
+ margin-top: 0;
1078
+ border: solid 1px #ddd;
1079
+ }
1080
+ /* The hover and focus lift would push a card into the row above it. */
1081
+ .quick-links .link-item:hover,
1082
+ .quick-links .link-item:focus-visible {
1083
+ margin-top: 0;
1084
+ }
1085
+ }
1086
+
1049
1087
  .dda-card {
1050
1088
  position: relative;
1051
1089
  display: -ms-flexbox;
@@ -2473,6 +2511,90 @@ body {
2473
2511
  }
2474
2512
  }
2475
2513
 
2514
+ /* 992px and below the links are 48px round buttons in one row. Six of them with their spacing
2515
+ took about 424px, so on a 320-375px phone, or a laptop zoomed to 400% (WCAG 1.4.10), the last
2516
+ buttons ran off the screen. Here the spacing narrows with the screen and each button shrinks
2517
+ from 48px when the row does not fit, to no less than 32px, so up to eight fit at 320px. The
2518
+ right-hand links in the "more" menu keep their size. */
2519
+ @media (max-width: 992px) {
2520
+ .dda-footer {
2521
+ padding: 0 clamp(8px, 4vw, 20px);
2522
+ }
2523
+ .dda-footer-item,
2524
+ .dda-footer-item ul {
2525
+ min-width: 0;
2526
+ }
2527
+ :is(.dda-footer-item:not(.dda-footer-right), .dda-footer:not(.has-more-button) .dda-footer-right) li.foot-icon-btn {
2528
+ --dda-foot-btn-pad: clamp(2px, 1vw, 8px);
2529
+ flex: 0 1 calc(48px + 2 * var(--dda-foot-btn-pad));
2530
+ min-width: calc(32px + 2 * var(--dda-foot-btn-pad));
2531
+ padding: 0 var(--dda-foot-btn-pad);
2532
+ }
2533
+ :is(.dda-footer-item:not(.dda-footer-right), .dda-footer:not(.has-more-button) .dda-footer-right) li.foot-icon-btn :is(dda-tooltip, .dda-tooltip-container) {
2534
+ display: flex;
2535
+ width: 100%;
2536
+ }
2537
+ :is(.dda-footer-item:not(.dda-footer-right), .dda-footer:not(.has-more-button) .dda-footer-right) li.foot-icon-btn a {
2538
+ width: 48px;
2539
+ max-width: 100%;
2540
+ height: auto;
2541
+ aspect-ratio: 1;
2542
+ }
2543
+ :is(.dda-footer-item:not(.dda-footer-right), .dda-footer:not(.has-more-button) .dda-footer-right) li.foot-icon-btn a img {
2544
+ max-width: 70%;
2545
+ object-fit: contain;
2546
+ }
2547
+ }
2548
+ /* The short landscape bar above makes the buttons 35px. */
2549
+ @media only screen and (orientation: landscape) and (max-width: 768px) {
2550
+ :is(.dda-footer-item:not(.dda-footer-right), .dda-footer:not(.has-more-button) .dda-footer-right) li.foot-icon-btn {
2551
+ flex-basis: calc(35px + 2 * var(--dda-foot-btn-pad));
2552
+ }
2553
+ }
2554
+
2555
+ /* A tooltip is centred over its button and wider than it, so over the first and last buttons it
2556
+ ran past the screen edge (3-7px on desktop, about 20px on a phone). Those two line up with the
2557
+ button's outer edge instead, and their arrow moves near the button's centre: 16px in on desktop,
2558
+ 24px on the round buttons. In the "more" menu every link sits at the end edge. */
2559
+ .dda-footer .footer-content > .dda-footer-item:first-child li.foot-icon-btn:first-child .dda-tooltip-box.top {
2560
+ left: auto;
2561
+ inset-inline-start: 0;
2562
+ transform: none;
2563
+ }
2564
+ .dda-footer .dda-footer-right li.foot-icon-btn:last-child .dda-tooltip-box.top {
2565
+ left: auto;
2566
+ inset-inline-end: 0;
2567
+ transform: none;
2568
+ }
2569
+ .dda-footer .footer-content > .dda-footer-item:first-child li.foot-icon-btn:first-child .dda-tooltip-box.top::before,
2570
+ .dda-footer .footer-content > .dda-footer-item:first-child li.foot-icon-btn:first-child .dda-tooltip-box.top::after {
2571
+ left: auto;
2572
+ margin-inline-start: 0;
2573
+ inset-inline-start: var(--dda-foot-tip-arrow, 6px);
2574
+ }
2575
+ .dda-footer .dda-footer-right li.foot-icon-btn:last-child .dda-tooltip-box.top::before,
2576
+ .dda-footer .dda-footer-right li.foot-icon-btn:last-child .dda-tooltip-box.top::after {
2577
+ left: auto;
2578
+ margin-inline-start: 0;
2579
+ inset-inline-end: var(--dda-foot-tip-arrow, 6px);
2580
+ }
2581
+ @media (max-width: 992px) {
2582
+ .dda-footer {
2583
+ --dda-foot-tip-arrow: 14px;
2584
+ }
2585
+ .dda-footer.has-more-button .dda-footer-right li.foot-icon-btn .dda-tooltip-box.top {
2586
+ left: auto;
2587
+ inset-inline-end: 0;
2588
+ transform: none;
2589
+ }
2590
+ .dda-footer.has-more-button .dda-footer-right li.foot-icon-btn .dda-tooltip-box.top::before,
2591
+ .dda-footer.has-more-button .dda-footer-right li.foot-icon-btn .dda-tooltip-box.top::after {
2592
+ left: auto;
2593
+ margin-inline-start: 0;
2594
+ inset-inline-end: var(--dda-foot-tip-arrow);
2595
+ }
2596
+ }
2597
+
2476
2598
  .dda-dashboard-sidebar {
2477
2599
  position: fixed;
2478
2600
  top: 0;
@@ -4009,6 +4131,15 @@ button {
4009
4131
  cursor: pointer;
4010
4132
  }
4011
4133
 
4134
+ /* Icon-font ligatures draw from data-icon, not from text in the element: the icon name is then
4135
+ not text in the page, so an accessibility checker does not read "chevron_right" as a visible
4136
+ label that the button's accessible name must contain (WCAG 2.5.3). The icons are aria-hidden;
4137
+ the button's aria-label or text names it. Material classes only, so another icon font's own
4138
+ ::before glyph is untouched. */
4139
+ :is(.material-icons, .material-icons-outlined, .material-icons-round, .material-icons-sharp, .material-icons-two-tone, .material-symbols-outlined, .material-symbols-rounded, .material-symbols-sharp)[data-icon]::before {
4140
+ content: attr(data-icon);
4141
+ }
4142
+
4012
4143
  ul {
4013
4144
  margin: 0 !important;
4014
4145
  padding: 0 !important;