@westpac/ui 1.0.0-canary.9 → 1.0.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 (596) hide show
  1. package/CHANGELOG.md +409 -6
  2. package/assets/icons/filled/arrow-back-filled.svg +3 -0
  3. package/assets/icons/filled/arrow-down-filled.svg +3 -0
  4. package/assets/icons/filled/arrow-forward-filled.svg +3 -0
  5. package/assets/icons/filled/arrow-up-filled.svg +3 -0
  6. package/assets/icons/outlined/arrow-back-outlined.svg +3 -0
  7. package/assets/icons/outlined/arrow-down-outlined.svg +3 -0
  8. package/assets/icons/outlined/arrow-forward-outlined.svg +3 -0
  9. package/assets/icons/outlined/arrow-up-outlined.svg +3 -0
  10. package/assets/logos-symbols/dark/AmericanExpressSymbol-Dm.svg +27 -0
  11. package/assets/logos-symbols/dark/ApplePaySymbol-Dm.svg +16 -0
  12. package/assets/logos-symbols/dark/AppleStoreInverseSymbol-Dm.svg +16 -0
  13. package/assets/logos-symbols/dark/AppleStoreSymbol-Dm.svg +16 -0
  14. package/assets/logos-symbols/dark/BOMLogo-Dm.svg +44 -0
  15. package/assets/logos-symbols/{BOMShieldLogo.svg → dark/BOMShieldLogo-Dm.svg} +2 -2
  16. package/assets/logos-symbols/dark/BPAYLandSymbol-Dm.svg +11 -0
  17. package/assets/logos-symbols/dark/BPAYPortSymbol-Dm.svg +11 -0
  18. package/assets/logos-symbols/dark/BSALogo-Dm.svg +16 -0
  19. package/assets/logos-symbols/dark/BSAStackedLogo-Dm.svg +16 -0
  20. package/assets/logos-symbols/dark/BTLogo-Dm.svg +5 -0
  21. package/assets/logos-symbols/dark/BTLogoReversed-Dm.svg +5 -0
  22. package/assets/logos-symbols/{PanoramaLogoReversed.svg → dark/BTPanoramaLogo-Dm.svg} +12 -12
  23. package/assets/logos-symbols/{PanoramaLogo.svg → dark/BTPanoramaReversedLogo-Dm.svg} +12 -12
  24. package/assets/logos-symbols/dark/FacebookCircularSymbol-Dm.svg +4 -0
  25. package/assets/logos-symbols/dark/FacebookSymbol-Dm.svg +5 -0
  26. package/assets/logos-symbols/dark/GooglePayInverseSymbol-Dm.svg +11 -0
  27. package/assets/logos-symbols/dark/GooglePaySymbol-Dm.svg +11 -0
  28. package/assets/logos-symbols/dark/GoogleStoreSymbol-Dm.svg +23 -0
  29. package/assets/logos-symbols/dark/InstagramSymbol-Dm.svg +11 -0
  30. package/assets/logos-symbols/{LinkedInSymbol.svg → dark/LinkedInSymbol-Dm.svg} +4 -4
  31. package/assets/logos-symbols/dark/MastercardSymbol-Dm.svg +12 -0
  32. package/assets/logos-symbols/dark/PayIDInverseSymbol-Dm.svg +10 -0
  33. package/assets/logos-symbols/dark/PayIDSymbol-Dm.svg +10 -0
  34. package/assets/logos-symbols/dark/PayToInverseSymbol-Dm.svg +10 -0
  35. package/assets/logos-symbols/dark/PayToSymbol-Dm.svg +10 -0
  36. package/assets/logos-symbols/dark/STGDragonLogo-Dm.svg +23 -0
  37. package/assets/logos-symbols/dark/STGLogo-Dm.svg +32 -0
  38. package/assets/logos-symbols/{SamsungPayButtonBlack.svg → dark/SamsungPayButtonInverseSymbol-Dm.svg} +7 -7
  39. package/assets/logos-symbols/dark/SamsungPayButtonSymbol-Dm.svg +21 -0
  40. package/assets/logos-symbols/dark/VisaBlueSymbol-Dm.svg +11 -0
  41. package/assets/logos-symbols/dark/VisaWhiteSymbol-Dm.svg +11 -0
  42. package/assets/logos-symbols/{WBCLogo.svg → dark/WBCLogo-Dm.svg} +2 -2
  43. package/assets/logos-symbols/dark/WBGInternalLogo-Dm.svg +12 -0
  44. package/assets/logos-symbols/dark/WBGLogo-Dm.svg +11 -0
  45. package/assets/logos-symbols/dark/XSymbol-Dm.svg +11 -0
  46. package/assets/logos-symbols/dark/YouTubeSymbol-Dm.svg +5 -0
  47. package/assets/logos-symbols/dark/eftposHorizontalInverseSymbol-Dm.svg +21 -0
  48. package/assets/logos-symbols/dark/eftposHorizontalSymbol-Dm.svg +21 -0
  49. package/assets/logos-symbols/dark/eftposVerticalInverseSymbol-Dm.svg +21 -0
  50. package/assets/logos-symbols/dark/eftposVerticalSymbol-Dm.svg +21 -0
  51. package/assets/logos-symbols/light/AmericanExpressSymbol-Lm.svg +27 -0
  52. package/assets/logos-symbols/light/ApplePaySymbol-Lm.svg +16 -0
  53. package/assets/logos-symbols/light/AppleStoreInverseSymbol-Lm.svg +16 -0
  54. package/assets/logos-symbols/light/AppleStoreSymbol-Lm.svg +16 -0
  55. package/assets/logos-symbols/light/BOMLogo-Lm.svg +44 -0
  56. package/assets/logos-symbols/light/BOMShieldLogo-Lm.svg +29 -0
  57. package/assets/logos-symbols/light/BPAYLandSymbol-Lm.svg +11 -0
  58. package/assets/logos-symbols/light/BPAYPortSymbol-Lm.svg +11 -0
  59. package/assets/logos-symbols/light/BSALogo-Lm.svg +16 -0
  60. package/assets/logos-symbols/light/BSAStackedLogo-Lm.svg +16 -0
  61. package/assets/logos-symbols/light/BTLogo-Lm.svg +5 -0
  62. package/assets/logos-symbols/light/BTLogoReversed-Lm.svg +5 -0
  63. package/assets/logos-symbols/light/BTPanoramaLogo-Lm.svg +20 -0
  64. package/assets/logos-symbols/light/BTPanoramaReversedLogo-Lm.svg +20 -0
  65. package/assets/logos-symbols/light/FacebookCircularSymbol-Lm.svg +4 -0
  66. package/assets/logos-symbols/light/FacebookSymbol-Lm.svg +5 -0
  67. package/assets/logos-symbols/light/GooglePayInverseSymbol-Lm.svg +11 -0
  68. package/assets/logos-symbols/light/GooglePaySymbol-Lm.svg +11 -0
  69. package/assets/logos-symbols/light/GoogleStoreSymbol-Lm.svg +23 -0
  70. package/assets/logos-symbols/light/InstagramSymbol-Lm.svg +11 -0
  71. package/assets/logos-symbols/light/LinkedInSymbol-Lm.svg +13 -0
  72. package/assets/logos-symbols/light/MastercardSymbol-Lm.svg +12 -0
  73. package/assets/logos-symbols/light/PayIDInverseSymbol-Lm.svg +10 -0
  74. package/assets/logos-symbols/light/PayIDSymbol-Lm.svg +10 -0
  75. package/assets/logos-symbols/light/PayToInverseSymbol-Lm.svg +10 -0
  76. package/assets/logos-symbols/light/PayToSymbol-Lm.svg +10 -0
  77. package/assets/logos-symbols/light/STGDragonLogo-Lm.svg +23 -0
  78. package/assets/logos-symbols/light/STGLogo-Lm.svg +32 -0
  79. package/assets/logos-symbols/{SamsungPayButtonWhite.svg → light/SamsungPayButtonInverseSymbol-Lm.svg} +7 -7
  80. package/assets/logos-symbols/light/SamsungPayButtonSymbol-Lm.svg +21 -0
  81. package/assets/logos-symbols/light/VisaBlueSymbol-Lm.svg +11 -0
  82. package/assets/logos-symbols/light/VisaWhiteSymbol-Lm.svg +11 -0
  83. package/assets/logos-symbols/light/WBCLogo-Lm.svg +12 -0
  84. package/assets/logos-symbols/light/WBGInternalLogo-Lm.svg +12 -0
  85. package/assets/logos-symbols/light/WBGLogo-Lm.svg +11 -0
  86. package/assets/logos-symbols/{XSymbol.svg → light/XSymbol-Lm.svg} +2 -2
  87. package/assets/logos-symbols/light/YouTubeSymbol-Lm.svg +5 -0
  88. package/assets/logos-symbols/light/eftposHorizontalInverseSymbol-Lm.svg +21 -0
  89. package/assets/logos-symbols/light/eftposHorizontalSymbol-Lm.svg +21 -0
  90. package/assets/logos-symbols/light/eftposVerticalInverseSymbol-Lm.svg +21 -0
  91. package/assets/logos-symbols/light/eftposVerticalSymbol-Lm.svg +21 -0
  92. package/dist/component-type.json +1 -1
  93. package/dist/components/autocomplete/components/autocomplete-list-box/autocomplete-list-box.component.js +1 -1
  94. package/dist/components/autocomplete/components/autocomplete-popover/autocomplete-popover.component.js +4 -2
  95. package/dist/components/bottom-sheet/bottom-sheet.component.js +1 -1
  96. package/dist/components/button/button.component.js +3 -2
  97. package/dist/components/button-group/components/button-group-button/button-group-button.component.js +2 -2
  98. package/dist/components/checkbox-group/checkbox-group.component.js +2 -2
  99. package/dist/components/compacta/components/compacta-item/compacta-item.component.js +2 -2
  100. package/dist/components/date-picker/components/date-field/components/date-segment/date-segment.component.js +0 -1
  101. package/dist/components/date-picker/components/date-field/components/date-segment/date-segment.styles.d.ts +2 -14
  102. package/dist/components/date-picker/components/date-field/components/date-segment/date-segment.styles.js +2 -6
  103. package/dist/components/date-picker/components/popover/popover.styles.js +1 -1
  104. package/dist/components/date-picker/date-picker.component.d.ts +1 -1
  105. package/dist/components/date-picker/date-picker.component.js +11 -2
  106. package/dist/components/date-picker/date-picker.styles.d.ts +45 -30
  107. package/dist/components/date-picker/date-picker.styles.js +22 -17
  108. package/dist/components/date-picker/date-picker.types.d.ts +11 -2
  109. package/dist/components/header/header.component.js +8 -3
  110. package/dist/components/icon/components/arrow-back-icon.d.ts +2 -0
  111. package/dist/components/icon/components/arrow-back-icon.js +12 -0
  112. package/dist/components/icon/components/arrow-down-icon.d.ts +2 -0
  113. package/dist/components/icon/components/arrow-down-icon.js +12 -0
  114. package/dist/components/icon/components/arrow-forward-icon.d.ts +2 -0
  115. package/dist/components/icon/components/arrow-forward-icon.js +12 -0
  116. package/dist/components/icon/components/arrow-up-icon.d.ts +2 -0
  117. package/dist/components/icon/components/arrow-up-icon.js +12 -0
  118. package/dist/components/icon/icon.styles.js +5 -5
  119. package/dist/components/icon/index.d.ts +4 -0
  120. package/dist/components/icon/index.js +4 -0
  121. package/dist/components/index.d.ts +1 -0
  122. package/dist/components/index.js +1 -0
  123. package/dist/components/input-group/components/input-group-supporting-text/input-group-supporting-text.styles.d.ts +1 -1
  124. package/dist/components/input-group/components/input-group-supporting-text/input-group-supporting-text.styles.js +1 -1
  125. package/dist/components/link/link.styles.d.ts +0 -6
  126. package/dist/components/link/link.styles.js +5 -7
  127. package/dist/components/modal/components/modal-dialog/components/modal-dialog-body/modal-dialog-body.styles.js +1 -1
  128. package/dist/components/modal/components/modal-dialog/modal-dialog.styles.js +1 -1
  129. package/dist/components/multi-select/components/multi-select-dropdown/multi-select-dropdown.component.d.ts +2 -0
  130. package/dist/components/multi-select/components/multi-select-dropdown/multi-select-dropdown.component.js +20 -0
  131. package/dist/components/multi-select/components/multi-select-dropdown/multi-select-dropdown.styles.d.ts +37 -0
  132. package/dist/components/multi-select/components/multi-select-dropdown/multi-select-dropdown.styles.js +8 -0
  133. package/dist/components/multi-select/components/multi-select-dropdown/multi-select-dropdown.types.d.ts +5 -0
  134. package/dist/components/multi-select/components/multi-select-dropdown/multi-select-dropdown.types.js +1 -0
  135. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-list-box-section/multi-select-list-box-section.component.d.ts +2 -0
  136. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-list-box-section/multi-select-list-box-section.component.js +31 -0
  137. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-list-box-section/multi-select-list-box-section.styles.d.ts +25 -0
  138. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-list-box-section/multi-select-list-box-section.styles.js +6 -0
  139. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-list-box-section/multi-select-list-box-section.types.d.ts +4 -0
  140. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-list-box-section/multi-select-list-box-section.types.js +1 -0
  141. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-option/multi-select-option.component.d.ts +2 -0
  142. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-option/multi-select-option.component.js +62 -0
  143. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-option/multi-select-option.styles.d.ts +82 -0
  144. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-option/multi-select-option.styles.js +32 -0
  145. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-option/multi-select-option.types.d.ts +8 -0
  146. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-option/multi-select-option.types.js +1 -0
  147. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-select-all-option/multi-select-select-all-option.component.d.ts +1 -0
  148. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-select-all-option/multi-select-select-all-option.component.js +93 -0
  149. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-select-all-option/multi-select-select-all-option.styles.d.ts +64 -0
  150. package/dist/components/multi-select/components/multi-select-list-box/components/multi-select-select-all-option/multi-select-select-all-option.styles.js +26 -0
  151. package/dist/components/multi-select/components/multi-select-list-box/multi-select-list-box.component.d.ts +2 -0
  152. package/dist/components/multi-select/components/multi-select-list-box/multi-select-list-box.component.js +35 -0
  153. package/dist/components/multi-select/components/multi-select-list-box/multi-select-list-box.styles.d.ts +43 -0
  154. package/dist/components/multi-select/components/multi-select-list-box/multi-select-list-box.styles.js +9 -0
  155. package/dist/components/multi-select/components/multi-select-list-box/multi-select-list-box.types.d.ts +5 -0
  156. package/dist/components/multi-select/components/multi-select-list-box/multi-select-list-box.types.js +1 -0
  157. package/dist/components/multi-select/components/multi-select-list-box-trigger/multi-select-list-box-trigger.component.d.ts +2 -0
  158. package/dist/components/multi-select/components/multi-select-list-box-trigger/multi-select-list-box-trigger.component.js +121 -0
  159. package/dist/components/multi-select/components/multi-select-list-box-trigger/multi-select-list-box-trigger.styles.d.ts +259 -0
  160. package/dist/components/multi-select/components/multi-select-list-box-trigger/multi-select-list-box-trigger.styles.js +91 -0
  161. package/dist/components/multi-select/components/multi-select-list-box-trigger/multi-select-list-box-trigger.types.d.ts +16 -0
  162. package/dist/components/multi-select/components/multi-select-list-box-trigger/multi-select-list-box-trigger.types.js +1 -0
  163. package/dist/components/multi-select/components/multi-select-popover/multi-select-popover.component.d.ts +2 -0
  164. package/dist/components/multi-select/components/multi-select-popover/multi-select-popover.component.js +52 -0
  165. package/dist/components/multi-select/components/multi-select-popover/multi-select-popover.styles.d.ts +31 -0
  166. package/dist/components/multi-select/components/multi-select-popover/multi-select-popover.styles.js +7 -0
  167. package/dist/components/multi-select/components/multi-select-popover/multi-select-popover.types.d.ts +6 -0
  168. package/dist/components/multi-select/components/multi-select-popover/multi-select-popover.types.js +1 -0
  169. package/dist/components/multi-select/components/multi-select-searchbar/multi-select-searchbar.component.d.ts +2 -0
  170. package/dist/components/multi-select/components/multi-select-searchbar/multi-select-searchbar.component.js +74 -0
  171. package/dist/components/multi-select/components/multi-select-searchbar/multi-select-searchbar.styles.d.ts +31 -0
  172. package/dist/components/multi-select/components/multi-select-searchbar/multi-select-searchbar.styles.js +7 -0
  173. package/dist/components/multi-select/components/multi-select-searchbar/multi-select-searchbar.types.d.ts +6 -0
  174. package/dist/components/multi-select/components/multi-select-searchbar/multi-select-searchbar.types.js +1 -0
  175. package/dist/components/multi-select/index.d.ts +2 -0
  176. package/dist/components/multi-select/index.js +1 -0
  177. package/dist/components/multi-select/multi-select.component.d.ts +7 -0
  178. package/dist/components/multi-select/multi-select.component.js +95 -0
  179. package/dist/components/multi-select/multi-select.styles.d.ts +25 -0
  180. package/dist/components/multi-select/multi-select.styles.js +6 -0
  181. package/dist/components/multi-select/multi-select.types.d.ts +61 -0
  182. package/dist/components/multi-select/multi-select.types.js +1 -0
  183. package/dist/components/multi-select/utils/filter-nodes.d.ts +2 -0
  184. package/dist/components/multi-select/utils/filter-nodes.js +25 -0
  185. package/dist/components/pictogram/pictogram.styles.d.ts +6 -9
  186. package/dist/components/pictogram/pictogram.styles.js +2 -3
  187. package/dist/components/pictogram/pictogram.types.d.ts +1 -1
  188. package/dist/components/popover/components/panel/panel.component.d.ts +1 -1
  189. package/dist/components/popover/components/panel/panel.component.js +35 -17
  190. package/dist/components/popover/components/panel/panel.hook.d.ts +4 -1
  191. package/dist/components/popover/components/panel/panel.hook.js +96 -19
  192. package/dist/components/popover/components/panel/panel.styles.js +2 -2
  193. package/dist/components/popover/components/panel/panel.types.d.ts +8 -0
  194. package/dist/components/popover/popover.component.js +14 -4
  195. package/dist/components/radio-group/radio-group.component.js +2 -2
  196. package/dist/components/selector/components/selector-button-group/selector-button-group.component.d.ts +2 -1
  197. package/dist/components/selector/components/selector-button-group/selector-button-group.component.js +1 -1
  198. package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.component.js +1 -0
  199. package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.component.js +2 -2
  200. package/dist/components/selector/components/selector-link-group/selector-link-group.component.d.ts +2 -1
  201. package/dist/components/selector/components/selector-link-group/selector-link-group.component.js +1 -1
  202. package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.component.js +1 -0
  203. package/dist/components/selector/components/selector-radio-group/selector-radio-group.component.js +2 -2
  204. package/dist/components/symbol/components/logos/bom-logo.d.ts +1 -1
  205. package/dist/components/symbol/components/logos/bom-logo.js +94 -146
  206. package/dist/components/symbol/components/logos/bom-multibrand-large-logo.d.ts +1 -1
  207. package/dist/components/symbol/components/logos/bom-multibrand-large-logo.js +63 -67
  208. package/dist/components/symbol/components/logos/bom-multibrand-small-logo.js +60 -60
  209. package/dist/components/symbol/components/logos/bom-shield-logo.js +49 -41
  210. package/dist/components/symbol/components/logos/bsa-logo.d.ts +1 -1
  211. package/dist/components/symbol/components/logos/bsa-logo.js +25 -31
  212. package/dist/components/symbol/components/logos/bsa-multibrand-large-logo.d.ts +1 -1
  213. package/dist/components/symbol/components/logos/bsa-multibrand-large-logo.js +10 -12
  214. package/dist/components/symbol/components/logos/bsa-multibrand-small-logo.d.ts +1 -1
  215. package/dist/components/symbol/components/logos/bsa-multibrand-small-logo.js +10 -12
  216. package/dist/components/symbol/components/logos/bsa-stacked-logo.d.ts +1 -1
  217. package/dist/components/symbol/components/logos/bsa-stacked-logo.js +25 -31
  218. package/dist/components/symbol/components/logos/bt-logo.js +4 -4
  219. package/dist/components/symbol/components/logos/bt-multibrand-large-logo.js +4 -4
  220. package/dist/components/symbol/components/logos/bt-multibrand-small-logo.js +7 -7
  221. package/dist/components/symbol/components/logos/bt-panorama-logo.js +19 -19
  222. package/dist/components/symbol/components/logos/bt-panorama-reversed-logo.js +19 -19
  223. package/dist/components/symbol/components/logos/bt-reversed-logo.js +4 -4
  224. package/dist/components/symbol/components/logos/stg-dragon-logo.d.ts +1 -1
  225. package/dist/components/symbol/components/logos/stg-dragon-logo.js +28 -18
  226. package/dist/components/symbol/components/logos/stg-logo.d.ts +1 -1
  227. package/dist/components/symbol/components/logos/stg-logo.js +37 -27
  228. package/dist/components/symbol/components/logos/stg-multibrand-large-logo.d.ts +1 -1
  229. package/dist/components/symbol/components/logos/stg-multibrand-large-logo.js +18 -15
  230. package/dist/components/symbol/components/logos/stg-multibrand-small-logo.d.ts +1 -1
  231. package/dist/components/symbol/components/logos/stg-multibrand-small-logo.js +18 -16
  232. package/dist/components/symbol/components/logos/wbc-logo.js +13 -7
  233. package/dist/components/symbol/components/logos/wbc-multibrand-large-logo.d.ts +1 -1
  234. package/dist/components/symbol/components/logos/wbc-multibrand-large-logo.js +8 -5
  235. package/dist/components/symbol/components/logos/wbc-multibrand-small-logo.js +4 -3
  236. package/dist/components/symbol/components/logos/wbg-internal-logo.d.ts +2 -0
  237. package/dist/components/symbol/components/logos/wbg-internal-logo.js +36 -0
  238. package/dist/components/symbol/components/logos/wbg-logo.d.ts +2 -0
  239. package/dist/components/symbol/components/logos/wbg-logo.js +27 -0
  240. package/dist/components/symbol/components/logos/wbg-multibrand-large-logo.d.ts +2 -0
  241. package/dist/components/symbol/components/logos/wbg-multibrand-large-logo.js +25 -0
  242. package/dist/components/symbol/components/logos/wbg-multibrand-small-logo.d.ts +2 -0
  243. package/dist/components/symbol/components/logos/wbg-multibrand-small-logo.js +21 -0
  244. package/dist/components/symbol/components/symbols/american-express-symbol.js +65 -15
  245. package/dist/components/symbol/components/symbols/apple-pay-symbol.d.ts +2 -0
  246. package/dist/components/symbol/components/symbols/apple-pay-symbol.js +42 -0
  247. package/dist/components/symbol/components/symbols/apple-store-inverse-symbol.js +26 -25
  248. package/dist/components/symbol/components/symbols/apple-store-symbol.js +26 -25
  249. package/dist/components/symbol/components/symbols/bpay-land-symbol.js +14 -10
  250. package/dist/components/symbol/components/symbols/bpay-port-symbol.js +14 -10
  251. package/dist/components/symbol/components/symbols/eftpos-horizontal-inverse-symbol.d.ts +2 -0
  252. package/dist/components/symbol/components/symbols/eftpos-horizontal-inverse-symbol.js +56 -0
  253. package/dist/components/symbol/components/symbols/eftpos-horizontal-symbol.d.ts +2 -0
  254. package/dist/components/symbol/components/symbols/eftpos-horizontal-symbol.js +56 -0
  255. package/dist/components/symbol/components/symbols/{pay-to-wordmark-dark-grey-symbol.d.ts → eftpos-vertical-inverse-symbol.d.ts} +1 -1
  256. package/dist/components/symbol/components/symbols/eftpos-vertical-inverse-symbol.js +56 -0
  257. package/dist/components/symbol/components/symbols/{pay-to-light-grey-symbol.d.ts → eftpos-vertical-symbol.d.ts} +1 -1
  258. package/dist/components/symbol/components/symbols/eftpos-vertical-symbol.js +56 -0
  259. package/dist/components/symbol/components/symbols/facebook-circular-symbol.d.ts +2 -0
  260. package/dist/components/symbol/components/symbols/facebook-circular-symbol.js +17 -0
  261. package/dist/components/symbol/components/symbols/facebook-symbol.js +9 -11
  262. package/dist/components/symbol/components/symbols/google-pay-inverse-symbol.d.ts +2 -0
  263. package/dist/components/symbol/components/symbols/google-pay-inverse-symbol.js +38 -0
  264. package/dist/components/symbol/components/symbols/google-pay-symbol.d.ts +2 -0
  265. package/dist/components/symbol/components/symbols/google-pay-symbol.js +38 -0
  266. package/dist/components/symbol/components/symbols/google-store-symbol.js +64 -121
  267. package/dist/components/symbol/components/symbols/instagram-symbol.js +15 -43
  268. package/dist/components/symbol/components/symbols/linked-in-symbol.js +19 -17
  269. package/dist/components/symbol/components/symbols/mastercard-symbol.js +16 -16
  270. package/dist/components/symbol/components/symbols/{x-mark-inverse-symbol.d.ts → pay-id-inverse-symbol.d.ts} +1 -1
  271. package/dist/components/symbol/components/symbols/pay-id-inverse-symbol.js +24 -0
  272. package/dist/components/symbol/components/symbols/pay-id-symbol.js +12 -2
  273. package/dist/components/symbol/components/symbols/pay-to-inverse-symbol.d.ts +2 -0
  274. package/dist/components/symbol/components/symbols/pay-to-inverse-symbol.js +22 -0
  275. package/dist/components/symbol/components/symbols/{x-mark-symbol.d.ts → pay-to-symbol.d.ts} +1 -1
  276. package/dist/components/symbol/components/symbols/pay-to-symbol.js +22 -0
  277. package/dist/components/symbol/components/symbols/samsung-pay-button-inverse-symbol.d.ts +2 -0
  278. package/dist/components/symbol/components/symbols/samsung-pay-button-inverse-symbol.js +55 -0
  279. package/dist/components/symbol/components/symbols/samsung-pay-button-symbol.d.ts +2 -0
  280. package/dist/components/symbol/components/symbols/samsung-pay-button-symbol.js +55 -0
  281. package/dist/components/symbol/components/symbols/visa-blue-symbol.js +12 -6
  282. package/dist/components/symbol/components/symbols/visa-white-symbol.js +12 -6
  283. package/dist/components/symbol/components/symbols/x-symbol.js +4 -4
  284. package/dist/components/symbol/components/symbols/youtube-symbol.js +8 -26
  285. package/dist/components/symbol/index.d.ts +17 -23
  286. package/dist/components/symbol/index.js +17 -23
  287. package/dist/components/symbol/symbol.types.d.ts +0 -4
  288. package/dist/components/tooltip/components/tooltip-content/tooltip-content.component.d.ts +1 -1
  289. package/dist/components/tooltip/components/tooltip-content/tooltip-content.component.js +4 -2
  290. package/dist/components/tooltip/components/tooltip-content/tooltip-content.styles.d.ts +16 -1
  291. package/dist/components/tooltip/components/tooltip-content/tooltip-content.styles.js +7 -1
  292. package/dist/components/tooltip/components/tooltip-content/tooltip-content.types.d.ts +1 -0
  293. package/dist/components/tooltip/tooltip.component.d.ts +1 -1
  294. package/dist/components/tooltip/tooltip.component.js +5 -4
  295. package/dist/components/tooltip/tooltip.types.d.ts +3 -0
  296. package/dist/css/westpac-ui.css +284 -165
  297. package/dist/css/westpac-ui.min.css +284 -165
  298. package/package.json +15 -11
  299. package/src/components/autocomplete/components/autocomplete-list-box/autocomplete-list-box.component.tsx +1 -1
  300. package/src/components/autocomplete/components/autocomplete-popover/autocomplete-popover.component.tsx +2 -2
  301. package/src/components/bottom-sheet/bottom-sheet.component.tsx +1 -1
  302. package/src/components/button/button.component.tsx +2 -1
  303. package/src/components/button-group/components/button-group-button/button-group-button.component.tsx +2 -2
  304. package/src/components/checkbox-group/checkbox-group.component.tsx +1 -1
  305. package/src/components/compacta/components/compacta-item/compacta-item.component.tsx +2 -2
  306. package/src/components/date-picker/components/calendar/components/calendar-cell/calendar-cell.types.ts +0 -4
  307. package/src/components/date-picker/components/date-field/components/date-segment/date-segment.component.tsx +0 -1
  308. package/src/components/date-picker/components/date-field/components/date-segment/date-segment.styles.ts +2 -6
  309. package/src/components/date-picker/components/popover/popover.styles.ts +1 -1
  310. package/src/components/date-picker/date-picker.component.tsx +15 -2
  311. package/src/components/date-picker/date-picker.styles.ts +22 -18
  312. package/src/components/date-picker/date-picker.types.ts +12 -3
  313. package/src/components/header/header.component.tsx +10 -6
  314. package/src/components/icon/components/arrow-back-icon.tsx +17 -0
  315. package/src/components/icon/components/arrow-down-icon.tsx +17 -0
  316. package/src/components/icon/components/arrow-forward-icon.tsx +17 -0
  317. package/src/components/icon/components/arrow-up-icon.tsx +17 -0
  318. package/src/components/icon/icon.styles.ts +5 -5
  319. package/src/components/icon/index.ts +4 -0
  320. package/src/components/index.ts +1 -0
  321. package/src/components/input-group/components/input-group-supporting-text/input-group-supporting-text.styles.ts +1 -1
  322. package/src/components/link/link.component.tsx +1 -0
  323. package/src/components/link/link.styles.ts +5 -7
  324. package/src/components/modal/components/modal-dialog/components/modal-dialog-body/modal-dialog-body.styles.ts +1 -1
  325. package/src/components/modal/components/modal-dialog/modal-dialog.component.tsx +1 -0
  326. package/src/components/modal/components/modal-dialog/modal-dialog.styles.ts +1 -1
  327. package/src/components/multi-select/components/multi-select-dropdown/multi-select-dropdown.component.tsx +26 -0
  328. package/src/components/multi-select/components/multi-select-dropdown/multi-select-dropdown.styles.ts +9 -0
  329. package/src/components/multi-select/components/multi-select-dropdown/multi-select-dropdown.types.ts +6 -0
  330. package/src/components/multi-select/components/multi-select-list-box/components/multi-select-list-box-section/multi-select-list-box-section.component.tsx +42 -0
  331. package/src/components/multi-select/components/multi-select-list-box/components/multi-select-list-box-section/multi-select-list-box-section.styles.ts +7 -0
  332. package/src/components/multi-select/components/multi-select-list-box/components/multi-select-list-box-section/multi-select-list-box-section.types.ts +5 -0
  333. package/src/components/multi-select/components/multi-select-list-box/components/multi-select-option/multi-select-option.component.tsx +66 -0
  334. package/src/components/multi-select/components/multi-select-list-box/components/multi-select-option/multi-select-option.styles.ts +33 -0
  335. package/src/components/multi-select/components/multi-select-list-box/components/multi-select-option/multi-select-option.types.ts +7 -0
  336. package/src/components/multi-select/components/multi-select-list-box/components/multi-select-select-all-option/multi-select-select-all-option.component.tsx +104 -0
  337. package/src/components/multi-select/components/multi-select-list-box/components/multi-select-select-all-option/multi-select-select-all-option.styles.ts +21 -0
  338. package/src/components/multi-select/components/multi-select-list-box/multi-select-list-box.component.tsx +42 -0
  339. package/src/components/multi-select/components/multi-select-list-box/multi-select-list-box.styles.ts +10 -0
  340. package/src/components/multi-select/components/multi-select-list-box/multi-select-list-box.types.ts +6 -0
  341. package/src/components/multi-select/components/multi-select-list-box-trigger/multi-select-list-box-trigger.component.tsx +139 -0
  342. package/src/components/multi-select/components/multi-select-list-box-trigger/multi-select-list-box-trigger.styles.ts +70 -0
  343. package/src/components/multi-select/components/multi-select-list-box-trigger/multi-select-list-box-trigger.types.ts +21 -0
  344. package/src/components/multi-select/components/multi-select-popover/multi-select-popover.component.tsx +64 -0
  345. package/src/components/multi-select/components/multi-select-popover/multi-select-popover.styles.ts +8 -0
  346. package/src/components/multi-select/components/multi-select-popover/multi-select-popover.types.ts +8 -0
  347. package/src/components/multi-select/components/multi-select-searchbar/multi-select-searchbar.component.tsx +81 -0
  348. package/src/components/multi-select/components/multi-select-searchbar/multi-select-searchbar.styles.ts +8 -0
  349. package/src/components/multi-select/components/multi-select-searchbar/multi-select-searchbar.types.ts +7 -0
  350. package/src/components/multi-select/index.ts +2 -0
  351. package/src/components/multi-select/multi-select.component.tsx +116 -0
  352. package/src/components/multi-select/multi-select.styles.ts +7 -0
  353. package/src/components/multi-select/multi-select.types.ts +60 -0
  354. package/src/components/multi-select/utils/filter-nodes.ts +29 -0
  355. package/src/components/pictogram/pictogram.styles.ts +2 -3
  356. package/src/components/pictogram/pictogram.types.ts +1 -1
  357. package/src/components/popover/components/panel/panel.component.tsx +50 -26
  358. package/src/components/popover/components/panel/panel.hook.tsx +101 -27
  359. package/src/components/popover/components/panel/panel.styles.ts +2 -2
  360. package/src/components/popover/components/panel/panel.types.ts +8 -0
  361. package/src/components/popover/popover.component.tsx +16 -2
  362. package/src/components/radio-group/radio-group.component.tsx +1 -1
  363. package/src/components/selector/components/selector-button-group/selector-button-group.component.tsx +1 -1
  364. package/src/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.component.tsx +6 -1
  365. package/src/components/selector/components/selector-checkbox-group/selector-checkbox-group.component.tsx +1 -1
  366. package/src/components/selector/components/selector-link-group/selector-link-group.component.tsx +1 -1
  367. package/src/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.component.tsx +6 -1
  368. package/src/components/selector/components/selector-radio-group/selector-radio-group.component.tsx +1 -1
  369. package/src/components/symbol/components/logos/bom-logo.tsx +87 -141
  370. package/src/components/symbol/components/logos/bom-multibrand-large-logo.tsx +22 -27
  371. package/src/components/symbol/components/logos/bom-multibrand-small-logo.tsx +20 -20
  372. package/src/components/symbol/components/logos/bom-shield-logo.tsx +27 -21
  373. package/src/components/symbol/components/logos/bsa-logo.tsx +49 -57
  374. package/src/components/symbol/components/logos/bsa-multibrand-large-logo.tsx +28 -31
  375. package/src/components/symbol/components/logos/bsa-multibrand-small-logo.tsx +28 -31
  376. package/src/components/symbol/components/logos/bsa-stacked-logo.tsx +49 -57
  377. package/src/components/symbol/components/logos/bt-logo.tsx +6 -3
  378. package/src/components/symbol/components/logos/bt-multibrand-large-logo.tsx +4 -4
  379. package/src/components/symbol/components/logos/bt-multibrand-small-logo.tsx +7 -7
  380. package/src/components/symbol/components/logos/bt-panorama-logo.tsx +21 -18
  381. package/src/components/symbol/components/logos/bt-panorama-reversed-logo.tsx +21 -18
  382. package/src/components/symbol/components/logos/bt-reversed-logo.tsx +6 -3
  383. package/src/components/symbol/components/logos/stg-dragon-logo.tsx +77 -68
  384. package/src/components/symbol/components/logos/stg-logo.tsx +113 -104
  385. package/src/components/symbol/components/logos/stg-multibrand-large-logo.tsx +45 -42
  386. package/src/components/symbol/components/logos/stg-multibrand-small-logo.tsx +44 -42
  387. package/src/components/symbol/components/logos/wbc-logo.tsx +16 -9
  388. package/src/components/symbol/components/logos/wbc-multibrand-large-logo.tsx +22 -19
  389. package/src/components/symbol/components/logos/wbc-multibrand-small-logo.tsx +3 -2
  390. package/src/components/symbol/components/logos/wbg-internal-logo.tsx +51 -0
  391. package/src/components/symbol/components/logos/wbg-logo.tsx +41 -0
  392. package/src/components/symbol/components/logos/wbg-multibrand-large-logo.tsx +38 -0
  393. package/src/components/symbol/components/logos/wbg-multibrand-small-logo.tsx +38 -0
  394. package/src/components/symbol/components/symbols/american-express-symbol.tsx +73 -17
  395. package/src/components/symbol/components/symbols/apple-pay-symbol.tsx +61 -0
  396. package/src/components/symbol/components/symbols/apple-store-inverse-symbol.tsx +22 -20
  397. package/src/components/symbol/components/symbols/apple-store-symbol.tsx +21 -19
  398. package/src/components/symbol/components/symbols/bpay-land-symbol.tsx +10 -3
  399. package/src/components/symbol/components/symbols/bpay-port-symbol.tsx +10 -3
  400. package/src/components/symbol/components/symbols/eftpos-horizontal-inverse-symbol.tsx +74 -0
  401. package/src/components/symbol/components/symbols/eftpos-horizontal-symbol.tsx +74 -0
  402. package/src/components/symbol/components/symbols/eftpos-vertical-inverse-symbol.tsx +74 -0
  403. package/src/components/symbol/components/symbols/eftpos-vertical-symbol.tsx +74 -0
  404. package/src/components/symbol/components/symbols/facebook-circular-symbol.tsx +32 -0
  405. package/src/components/symbol/components/symbols/facebook-symbol.tsx +12 -7
  406. package/src/components/symbol/components/symbols/google-pay-inverse-symbol.tsx +60 -0
  407. package/src/components/symbol/components/symbols/google-pay-symbol.tsx +60 -0
  408. package/src/components/symbol/components/symbols/google-store-symbol.tsx +79 -99
  409. package/src/components/symbol/components/symbols/instagram-symbol.tsx +12 -24
  410. package/src/components/symbol/components/symbols/linked-in-symbol.tsx +17 -7
  411. package/src/components/symbol/components/symbols/mastercard-symbol.tsx +13 -16
  412. package/src/components/symbol/components/symbols/pay-id-inverse-symbol.tsx +37 -0
  413. package/src/components/symbol/components/symbols/pay-id-symbol.tsx +13 -4
  414. package/src/components/symbol/components/symbols/pay-to-inverse-symbol.tsx +35 -0
  415. package/src/components/symbol/components/symbols/pay-to-symbol.tsx +35 -0
  416. package/src/components/symbol/components/symbols/samsung-pay-button-inverse-symbol.tsx +79 -0
  417. package/src/components/symbol/components/symbols/samsung-pay-button-symbol.tsx +79 -0
  418. package/src/components/symbol/components/symbols/visa-blue-symbol.tsx +9 -4
  419. package/src/components/symbol/components/symbols/visa-white-symbol.tsx +9 -4
  420. package/src/components/symbol/components/symbols/x-symbol.tsx +4 -4
  421. package/src/components/symbol/components/symbols/youtube-symbol.tsx +9 -14
  422. package/src/components/symbol/index.ts +17 -23
  423. package/src/components/symbol/symbol.types.ts +0 -4
  424. package/src/components/tooltip/components/tooltip-content/tooltip-content.component.tsx +2 -2
  425. package/src/components/tooltip/components/tooltip-content/tooltip-content.styles.ts +7 -1
  426. package/src/components/tooltip/components/tooltip-content/tooltip-content.types.ts +1 -0
  427. package/src/components/tooltip/tooltip.component.tsx +9 -4
  428. package/src/components/tooltip/tooltip.types.ts +4 -0
  429. package/utils/build-svg-zip/index.ts +1 -1
  430. package/assets/logos-symbols/AmericanExpressSymbol.svg +0 -13
  431. package/assets/logos-symbols/AppleStoreBlack.svg +0 -16
  432. package/assets/logos-symbols/AppleStoreWhite.svg +0 -16
  433. package/assets/logos-symbols/Apple_Pay.svg +0 -16
  434. package/assets/logos-symbols/BOMLogo.svg +0 -44
  435. package/assets/logos-symbols/BOMMultibrandLargeLogoCenter.svg +0 -23
  436. package/assets/logos-symbols/BOMMultibrandLargeLogoLeft.svg +0 -23
  437. package/assets/logos-symbols/BOMMultibrandLargeLogoRight.svg +0 -30
  438. package/assets/logos-symbols/BOMMultibrandSmallLogoCenter.svg +0 -22
  439. package/assets/logos-symbols/BOMMultibrandSmallLogoLeft.svg +0 -22
  440. package/assets/logos-symbols/BOMMultibrandSmallLogoRight.svg +0 -22
  441. package/assets/logos-symbols/BPayLandSymbol.svg +0 -11
  442. package/assets/logos-symbols/BPayPortSymbol.svg +0 -11
  443. package/assets/logos-symbols/BSALogo.svg +0 -16
  444. package/assets/logos-symbols/BSAMultibrandLargeLogoCenter.svg +0 -5
  445. package/assets/logos-symbols/BSAMultibrandLargeLogoLeft.svg +0 -5
  446. package/assets/logos-symbols/BSAMultibrandLargeLogoRight.svg +0 -5
  447. package/assets/logos-symbols/BSAMultibrandSmallLogoCenter.svg +0 -5
  448. package/assets/logos-symbols/BSAMultibrandSmallLogoLeft.svg +0 -5
  449. package/assets/logos-symbols/BSAMultibrandSmallLogoRight.svg +0 -5
  450. package/assets/logos-symbols/BSAStackedLogo.svg +0 -16
  451. package/assets/logos-symbols/BTLogo.svg +0 -5
  452. package/assets/logos-symbols/BTLogoReversed.svg +0 -5
  453. package/assets/logos-symbols/BTMultibrandLargeLogoCenter.svg +0 -5
  454. package/assets/logos-symbols/BTMultibrandLargeLogoLeft.svg +0 -5
  455. package/assets/logos-symbols/BTMultibrandLargeLogoRight.svg +0 -12
  456. package/assets/logos-symbols/BTMultibrandSmallLogoCenter.svg +0 -12
  457. package/assets/logos-symbols/BTMultibrandSmallLogoLeft.svg +0 -12
  458. package/assets/logos-symbols/BTMultibrandSmallLogoRight.svg +0 -12
  459. package/assets/logos-symbols/BTPanoramaMultibrandLargeLogoCenter.svg +0 -20
  460. package/assets/logos-symbols/BTPanoramaMultibrandLargeLogoLeft.svg +0 -20
  461. package/assets/logos-symbols/BTPanoramaMultibrandLargeLogoRight.svg +0 -20
  462. package/assets/logos-symbols/BTPanoramaMultibrandSmallLogoCenter.svg +0 -20
  463. package/assets/logos-symbols/BTPanoramaMultibrandSmallLogoLeft.svg +0 -20
  464. package/assets/logos-symbols/BTPanoramaMultibrandSmallLogoRight.svg +0 -20
  465. package/assets/logos-symbols/FacebookSymbol.svg +0 -11
  466. package/assets/logos-symbols/GooglePlusSymbol.svg +0 -19
  467. package/assets/logos-symbols/GoogleStoreSymbol.svg +0 -45
  468. package/assets/logos-symbols/InstagramSymbol.svg +0 -21
  469. package/assets/logos-symbols/MastercardAcceptedSymbol.svg +0 -15
  470. package/assets/logos-symbols/MastercardHorizontalSymbol.svg +0 -14
  471. package/assets/logos-symbols/MastercardSymbol.svg +0 -7
  472. package/assets/logos-symbols/MicrosoftStoreSymbol.svg +0 -16
  473. package/assets/logos-symbols/PayIDSymbol.svg +0 -10
  474. package/assets/logos-symbols/PrototypeLargeLogoCentre.svg +0 -9
  475. package/assets/logos-symbols/PrototypeLargeLogoLeft.svg +0 -9
  476. package/assets/logos-symbols/PrototypeLargeLogoRight.svg +0 -9
  477. package/assets/logos-symbols/PrototypeLogo.svg +0 -9
  478. package/assets/logos-symbols/PrototypeSmallLogoCentre.svg +0 -9
  479. package/assets/logos-symbols/PrototypeSmallLogoLeft.svg +0 -9
  480. package/assets/logos-symbols/PrototypeSmallLogoRight.svg +0 -9
  481. package/assets/logos-symbols/RAMSLogo.svg +0 -37
  482. package/assets/logos-symbols/RAMSMultibrandLargeLogoCenter.svg +0 -37
  483. package/assets/logos-symbols/RAMSMultibrandLargeLogoLeft.svg +0 -37
  484. package/assets/logos-symbols/RAMSMultibrandLargeLogoRight.svg +0 -37
  485. package/assets/logos-symbols/RAMSMultibrandSmallLogoCenter.svg +0 -37
  486. package/assets/logos-symbols/RAMSMultibrandSmallLogoLeft.svg +0 -37
  487. package/assets/logos-symbols/RAMSMultibrandSmallLogoRight.svg +0 -37
  488. package/assets/logos-symbols/RedAvatarCircleLogo.svg +0 -12
  489. package/assets/logos-symbols/RedAvatarCircleReversedLogo.svg +0 -11
  490. package/assets/logos-symbols/RedAvatarLogo.svg +0 -11
  491. package/assets/logos-symbols/STGDragonLogo.svg +0 -23
  492. package/assets/logos-symbols/STGLogo.svg +0 -32
  493. package/assets/logos-symbols/STGMultibrandLargeLogoCenter.svg +0 -9
  494. package/assets/logos-symbols/STGMultibrandLargeLogoLeft.svg +0 -9
  495. package/assets/logos-symbols/STGMultibrandLargeLogoRight.svg +0 -9
  496. package/assets/logos-symbols/STGMultibrandSmallLogoCenter.svg +0 -9
  497. package/assets/logos-symbols/STGMultibrandSmallLogoLeft.svg +0 -9
  498. package/assets/logos-symbols/STGMultibrandSmallLogoRight.svg +0 -16
  499. package/assets/logos-symbols/SamsungPayCTA-AddtoBlack.svg +0 -26
  500. package/assets/logos-symbols/SamsungPayCTA-AddtoWhite.svg +0 -26
  501. package/assets/logos-symbols/SamsungPayCTA-DonateBlack.svg +0 -32
  502. package/assets/logos-symbols/SamsungPayCTA-DonateWhite.svg +0 -32
  503. package/assets/logos-symbols/SamsungPayCTA-PartnerBlack.svg +0 -34
  504. package/assets/logos-symbols/SamsungPayCTA-PartnerWhite.svg +0 -34
  505. package/assets/logos-symbols/SamsungPayCTA-PaywithBlack.svg +0 -29
  506. package/assets/logos-symbols/SamsungPayCTA-PaywithWhite.svg +0 -29
  507. package/assets/logos-symbols/SamsungPayHorizontalBlack.svg +0 -19
  508. package/assets/logos-symbols/SamsungPayVerticalBlack.svg +0 -12
  509. package/assets/logos-symbols/SamsungPayVerticalWhite.svg +0 -12
  510. package/assets/logos-symbols/SamsungPayWhite.svg +0 -19
  511. package/assets/logos-symbols/SlackSymbol.svg +0 -14
  512. package/assets/logos-symbols/VisaBlueSymbol.svg +0 -11
  513. package/assets/logos-symbols/VisaSymbol.svg +0 -10
  514. package/assets/logos-symbols/VisaWhiteSymbol.svg +0 -11
  515. package/assets/logos-symbols/WBCMultibrandLargeLogoCenter.svg +0 -3
  516. package/assets/logos-symbols/WBCMultibrandLargeLogoLeft.svg +0 -3
  517. package/assets/logos-symbols/WBCMultibrandLargeLogoRight.svg +0 -3
  518. package/assets/logos-symbols/WBCMultibrandSmallLogoCenter.svg +0 -3
  519. package/assets/logos-symbols/WBCMultibrandSmallLogoLeft.svg +0 -3
  520. package/assets/logos-symbols/WBCMultibrandSmallLogoRight.svg +0 -3
  521. package/assets/logos-symbols/XBlack.svg +0 -3
  522. package/assets/logos-symbols/XWhite.svg +0 -3
  523. package/assets/logos-symbols/YammerSymbol.svg +0 -11
  524. package/assets/logos-symbols/YouTubeSymbol.svg +0 -16
  525. package/assets/logos-symbols/eftposHorizontalPositive.svg +0 -21
  526. package/assets/logos-symbols/eftposHorizontalReversed.svg +0 -21
  527. package/assets/logos-symbols/eftposHorizontalReversedMono.svg +0 -16
  528. package/assets/logos-symbols/eftposVerticalPositive.svg +0 -21
  529. package/assets/logos-symbols/eftposVerticalReversed.svg +0 -21
  530. package/assets/logos-symbols/eftposVerticalWhite.svg +0 -21
  531. package/assets/logos-symbols/google-pay-mark_800.svg +0 -18
  532. package/dist/components/symbol/components/logos/bt-panorama-multibrand-large-logo.d.ts +0 -2
  533. package/dist/components/symbol/components/logos/bt-panorama-multibrand-large-logo.js +0 -63
  534. package/dist/components/symbol/components/logos/bt-panorama-multibrand-small-logo.d.ts +0 -2
  535. package/dist/components/symbol/components/logos/bt-panorama-multibrand-small-logo.js +0 -63
  536. package/dist/components/symbol/components/logos/red-avatar-circle-logo.d.ts +0 -2
  537. package/dist/components/symbol/components/logos/red-avatar-circle-logo.js +0 -25
  538. package/dist/components/symbol/components/logos/red-avatar-circle-reversed-logo.d.ts +0 -2
  539. package/dist/components/symbol/components/logos/red-avatar-circle-reversed-logo.js +0 -22
  540. package/dist/components/symbol/components/logos/red-avatar-logo.d.ts +0 -2
  541. package/dist/components/symbol/components/logos/red-avatar-logo.js +0 -20
  542. package/dist/components/symbol/components/symbols/google-plus-symbol.d.ts +0 -2
  543. package/dist/components/symbol/components/symbols/google-plus-symbol.js +0 -45
  544. package/dist/components/symbol/components/symbols/mastercard-accepted-symbol.d.ts +0 -2
  545. package/dist/components/symbol/components/symbols/mastercard-accepted-symbol.js +0 -31
  546. package/dist/components/symbol/components/symbols/mastercard-horizontal-symbol.d.ts +0 -2
  547. package/dist/components/symbol/components/symbols/mastercard-horizontal-symbol.js +0 -28
  548. package/dist/components/symbol/components/symbols/microsoft-store-symbol.d.ts +0 -2
  549. package/dist/components/symbol/components/symbols/microsoft-store-symbol.js +0 -35
  550. package/dist/components/symbol/components/symbols/pay-to-black-symbol.d.ts +0 -2
  551. package/dist/components/symbol/components/symbols/pay-to-black-symbol.js +0 -16
  552. package/dist/components/symbol/components/symbols/pay-to-dark-grey-symbol.d.ts +0 -2
  553. package/dist/components/symbol/components/symbols/pay-to-dark-grey-symbol.js +0 -16
  554. package/dist/components/symbol/components/symbols/pay-to-light-grey-symbol.js +0 -16
  555. package/dist/components/symbol/components/symbols/pay-to-white-symbol.d.ts +0 -2
  556. package/dist/components/symbol/components/symbols/pay-to-white-symbol.js +0 -16
  557. package/dist/components/symbol/components/symbols/pay-to-wordmark-black-symbol.d.ts +0 -2
  558. package/dist/components/symbol/components/symbols/pay-to-wordmark-black-symbol.js +0 -25
  559. package/dist/components/symbol/components/symbols/pay-to-wordmark-dark-grey-symbol.js +0 -25
  560. package/dist/components/symbol/components/symbols/pay-to-wordmark-light-grey-symbol.d.ts +0 -2
  561. package/dist/components/symbol/components/symbols/pay-to-wordmark-light-grey-symbol.js +0 -25
  562. package/dist/components/symbol/components/symbols/pay-to-wordmark-white-symbol.d.ts +0 -2
  563. package/dist/components/symbol/components/symbols/pay-to-wordmark-white-symbol.js +0 -25
  564. package/dist/components/symbol/components/symbols/slack-symbol.d.ts +0 -2
  565. package/dist/components/symbol/components/symbols/slack-symbol.js +0 -31
  566. package/dist/components/symbol/components/symbols/twitter-symbol.d.ts +0 -2
  567. package/dist/components/symbol/components/symbols/twitter-symbol.js +0 -22
  568. package/dist/components/symbol/components/symbols/visa-symbol.d.ts +0 -2
  569. package/dist/components/symbol/components/symbols/visa-symbol.js +0 -14
  570. package/dist/components/symbol/components/symbols/x-mark-inverse-symbol.js +0 -14
  571. package/dist/components/symbol/components/symbols/x-mark-symbol.js +0 -14
  572. package/dist/components/symbol/components/symbols/yammer-symbol.d.ts +0 -2
  573. package/dist/components/symbol/components/symbols/yammer-symbol.js +0 -22
  574. package/src/components/symbol/components/logos/bt-panorama-multibrand-large-logo.tsx +0 -80
  575. package/src/components/symbol/components/logos/bt-panorama-multibrand-small-logo.tsx +0 -80
  576. package/src/components/symbol/components/logos/red-avatar-circle-logo.tsx +0 -35
  577. package/src/components/symbol/components/logos/red-avatar-circle-reversed-logo.tsx +0 -31
  578. package/src/components/symbol/components/logos/red-avatar-logo.tsx +0 -34
  579. package/src/components/symbol/components/symbols/google-plus-symbol.tsx +0 -43
  580. package/src/components/symbol/components/symbols/mastercard-accepted-symbol.tsx +0 -44
  581. package/src/components/symbol/components/symbols/mastercard-horizontal-symbol.tsx +0 -43
  582. package/src/components/symbol/components/symbols/microsoft-store-symbol.tsx +0 -38
  583. package/src/components/symbol/components/symbols/pay-to-black-symbol.tsx +0 -30
  584. package/src/components/symbol/components/symbols/pay-to-dark-grey-symbol.tsx +0 -30
  585. package/src/components/symbol/components/symbols/pay-to-light-grey-symbol.tsx +0 -30
  586. package/src/components/symbol/components/symbols/pay-to-white-symbol.tsx +0 -30
  587. package/src/components/symbol/components/symbols/pay-to-wordmark-black-symbol.tsx +0 -42
  588. package/src/components/symbol/components/symbols/pay-to-wordmark-dark-grey-symbol.tsx +0 -42
  589. package/src/components/symbol/components/symbols/pay-to-wordmark-light-grey-symbol.tsx +0 -42
  590. package/src/components/symbol/components/symbols/pay-to-wordmark-white-symbol.tsx +0 -42
  591. package/src/components/symbol/components/symbols/slack-symbol.tsx +0 -43
  592. package/src/components/symbol/components/symbols/twitter-symbol.tsx +0 -31
  593. package/src/components/symbol/components/symbols/visa-symbol.tsx +0 -28
  594. package/src/components/symbol/components/symbols/x-mark-inverse-symbol.tsx +0 -28
  595. package/src/components/symbol/components/symbols/x-mark-symbol.tsx +0 -28
  596. package/src/components/symbol/components/symbols/yammer-symbol.tsx +0 -31
@@ -0,0 +1,81 @@
1
+ import React, { useContext, useCallback, KeyboardEvent } from 'react';
2
+
3
+ import { Button } from '../../../../components/button/index.js';
4
+ import { ClearIcon, SearchIcon } from '../../../../components/icon/index.js';
5
+ import { InputGroup } from '../../../../components/input-group/index.js';
6
+ import { Input } from '../../../input/index.js';
7
+ import { MultiSelectContext } from '../../multi-select.component.js';
8
+
9
+ import { styles as searchbarStyles } from './multi-select-searchbar.styles.js';
10
+
11
+ import type { MultiSelectSearchbarProps } from './multi-select-searchbar.types.js';
12
+
13
+ export function MultiSelectSearchbar({
14
+ filterText,
15
+ setFilterText,
16
+ closeBtnRef,
17
+ }: Pick<MultiSelectSearchbarProps, 'filterText' | 'setFilterText' | 'closeBtnRef'>) {
18
+ const { size, inputRef, selectAllRef, listBoxRef } = useContext(MultiSelectContext);
19
+ const styles = searchbarStyles();
20
+ const handleInputKeyDown = useCallback(
21
+ (e: KeyboardEvent<HTMLInputElement>) => {
22
+ if (e.key === 'ArrowDown') {
23
+ e.preventDefault();
24
+ if (selectAllRef.current) {
25
+ selectAllRef.current.focus();
26
+ } else {
27
+ const firstItem = listBoxRef.current?.querySelector('[data-key]') as HTMLElement;
28
+ firstItem?.focus();
29
+ }
30
+ }
31
+ if (e.key === 'Escape' && filterText.length > 0) {
32
+ e.stopPropagation();
33
+ setFilterText('');
34
+ }
35
+ if (e.key === 'Tab' && filterText.length > 0) {
36
+ e.preventDefault();
37
+ e.stopPropagation();
38
+ closeBtnRef.current?.focus();
39
+ }
40
+ },
41
+ [filterText.length, setFilterText, selectAllRef, listBoxRef, closeBtnRef],
42
+ );
43
+ return (
44
+ <div className={styles.searchInputWrapper()}>
45
+ <InputGroup
46
+ before={{
47
+ icon: props => <SearchIcon {...props} color="muted" />,
48
+ }}
49
+ after={
50
+ filterText.length > 0 && {
51
+ inset: true,
52
+ element: (
53
+ <Button
54
+ onClick={() => {
55
+ setFilterText('');
56
+ inputRef.current?.focus();
57
+ }}
58
+ look="unstyled"
59
+ className={styles.clearButton()}
60
+ ref={closeBtnRef}
61
+ aria-label="Clear filter text"
62
+ >
63
+ <ClearIcon color="muted" size="small" />
64
+ </Button>
65
+ ),
66
+ }
67
+ }
68
+ aria-label="Filter options"
69
+ >
70
+ <Input
71
+ ref={inputRef}
72
+ size={size}
73
+ value={filterText}
74
+ onChange={e => setFilterText(e.target.value)}
75
+ onKeyDown={handleInputKeyDown}
76
+ tabIndex={-1}
77
+ />
78
+ </InputGroup>
79
+ </div>
80
+ );
81
+ }
@@ -0,0 +1,8 @@
1
+ import { tv } from 'tailwind-variants';
2
+
3
+ export const styles = tv({
4
+ slots: {
5
+ searchInputWrapper: 'border-b border-b-border-muted-soft p-2',
6
+ clearButton: 'mb-0.5 px-2',
7
+ },
8
+ });
@@ -0,0 +1,7 @@
1
+ import { ButtonRef } from '../../../../components/button/button.types.js';
2
+
3
+ export type MultiSelectSearchbarProps = {
4
+ filterText: string;
5
+ setFilterText: (text: string) => void;
6
+ closeBtnRef: React.RefObject<ButtonRef>;
7
+ };
@@ -0,0 +1,2 @@
1
+ export { MultiSelect, MultiSelectItem, MultiSelectSection } from './multi-select.component.js';
2
+ export { type MultiSelectValue } from './multi-select.types.js';
@@ -0,0 +1,116 @@
1
+ 'use client';
2
+
3
+ import { Node } from '@react-types/shared';
4
+ import React, { useRef, useState, memo, createContext } from 'react';
5
+ import { useFilter, useOverlayTrigger } from 'react-aria';
6
+ import { Item, useListState, useOverlayTriggerState } from 'react-stately';
7
+
8
+ import { MultiSelectDropdown } from './components/multi-select-dropdown/multi-select-dropdown.component.js';
9
+ import { MultiSelectListBoxTrigger } from './components/multi-select-list-box-trigger/multi-select-list-box-trigger.component.js';
10
+ import { styles as multiSelectStyles } from './multi-select.styles.js';
11
+ import { filterNodes } from './utils/filter-nodes.js';
12
+
13
+ import type {
14
+ MultiSelectContextProps,
15
+ MultiSelectItemProps,
16
+ MultiSelectProps,
17
+ MultiSelectValue,
18
+ } from './multi-select.types.js';
19
+
20
+ export const MultiSelectContext = createContext<MultiSelectContextProps>({
21
+ overlayState: {} as MultiSelectContextProps['overlayState'],
22
+ listState: {} as MultiSelectContextProps['listState'],
23
+ listBoxRef: { current: null },
24
+ buttonRef: { current: null },
25
+ popoverRef: { current: null },
26
+ selectAllRef: { current: null },
27
+ inputRef: { current: null },
28
+ filterText: '',
29
+ overlayProps: {},
30
+ });
31
+
32
+ export function BaseMultiSelect<T extends MultiSelectValue = MultiSelectValue>({
33
+ size = 'medium',
34
+ listBoxProps,
35
+ selectionMode = 'multiple',
36
+ selectedKeys,
37
+ onSelectionChange,
38
+ placeholder = 'Select',
39
+ showSingleSectionTitle = false,
40
+ placement,
41
+ portalContainer,
42
+ id,
43
+ ...props
44
+ }: MultiSelectProps<T>) {
45
+ const [filterText, setFilterText] = useState('');
46
+ const filter = useFilter({ sensitivity: 'base' });
47
+
48
+ const listState = useListState<T>({
49
+ ...props,
50
+ selectedKeys,
51
+ selectionMode,
52
+ onSelectionChange,
53
+ // Need to provide a custom filter as the default filtering in react-stately does not work with sections
54
+ // https://github.com/adobe/react-spectrum/issues/4930
55
+ filter: (nodes: Iterable<Node<T>>) =>
56
+ filterNodes(nodes, filterText, (value, string) => filter.contains(value, string)),
57
+ });
58
+
59
+ // refs
60
+ const inputRef = useRef<HTMLInputElement>(null);
61
+ const buttonRef = useRef<HTMLButtonElement>(null);
62
+ const popoverRef = useRef<HTMLDivElement>(null);
63
+ const selectAllRef = useRef<HTMLInputElement>(null);
64
+ const listBoxRef = useRef<HTMLUListElement>(null);
65
+
66
+ const overlayState = useOverlayTriggerState({
67
+ onOpenChange: isOpen => {
68
+ if (isOpen) {
69
+ requestAnimationFrame(() => {
70
+ inputRef.current?.focus();
71
+ });
72
+ }
73
+ if (!isOpen) {
74
+ buttonRef.current?.focus();
75
+ }
76
+ },
77
+ });
78
+ const { triggerProps, overlayProps } = useOverlayTrigger({ type: 'dialog' }, overlayState, buttonRef);
79
+
80
+ const styles = multiSelectStyles({});
81
+
82
+ return (
83
+ <MultiSelectContext.Provider
84
+ value={{
85
+ filterText,
86
+ size,
87
+ overlayState,
88
+ listState,
89
+ buttonRef,
90
+ popoverRef,
91
+ placement,
92
+ selectAllRef,
93
+ listBoxRef,
94
+ inputRef,
95
+ overlayProps,
96
+ portalContainer,
97
+ }}
98
+ >
99
+ <div className={styles.root()}>
100
+ <MultiSelectListBoxTrigger
101
+ placeholder={placeholder}
102
+ selectedKeys={selectedKeys}
103
+ showSingleSectionTitle={showSingleSectionTitle}
104
+ triggerProps={triggerProps}
105
+ id={id}
106
+ />
107
+ {overlayState.isOpen && <MultiSelectDropdown setFilterText={setFilterText} {...listBoxProps} />}
108
+ </div>
109
+ </MultiSelectContext.Provider>
110
+ );
111
+ }
112
+ export const MultiSelect = memo(BaseMultiSelect);
113
+
114
+ // Exporting react-stately's Item with custom props/naming and Section with custom naming to align with other components
115
+ export const MultiSelectItem = Item as (props: MultiSelectItemProps) => JSX.Element;
116
+ export { Section as MultiSelectSection } from 'react-stately';
@@ -0,0 +1,7 @@
1
+ import { tv } from 'tailwind-variants';
2
+
3
+ export const styles = tv({
4
+ slots: {
5
+ root: 'relative flex flex-col gap-1',
6
+ },
7
+ });
@@ -0,0 +1,60 @@
1
+ import { DOMProps } from '@react-types/shared';
2
+ import { Key, ReactNode, RefObject } from 'react';
3
+ import { AriaListBoxOptions, AriaPopoverProps } from 'react-aria';
4
+ import { ItemProps, ListProps, ListState, OverlayTriggerState } from 'react-stately';
5
+
6
+ import { MultiSelectSize } from './components/multi-select-list-box-trigger/multi-select-list-box-trigger.types.js';
7
+
8
+ export type MultiSelectContextProps<T extends object = object> = {
9
+ size?: MultiSelectSize;
10
+ overlayState: OverlayTriggerState;
11
+ listState: ListState<T>;
12
+ buttonRef: RefObject<HTMLButtonElement>;
13
+ listBoxRef: RefObject<HTMLUListElement>;
14
+ popoverRef: RefObject<HTMLDivElement>;
15
+ selectAllRef: RefObject<HTMLInputElement>;
16
+ inputRef: RefObject<HTMLInputElement>;
17
+ filterText: string;
18
+ overlayProps: DOMProps;
19
+ placement?: AriaPopoverProps['placement'];
20
+ portalContainer?: Element;
21
+ };
22
+
23
+ export type MultiSelectItemProps<T extends object = object> = { description?: string } & ItemProps<T>;
24
+
25
+ // Props for the items that can be passed to the MultiSelect component
26
+ export type MultiSelectValue = { textValue?: string; content?: ReactNode; key: Key; description?: string };
27
+
28
+ export type MultiSelectProps<T> = {
29
+ /**
30
+ * Props for the list box within the multi-select
31
+ */
32
+ listBoxProps?: Omit<AriaListBoxOptions<T>, 'state' | 'selectionMode'>;
33
+ /**
34
+ * id for the base multi-select container for accessibility/other uses
35
+ */
36
+ id?: string;
37
+ /**
38
+ * Placeholder text for the input
39
+ */
40
+ placeholder?: string;
41
+ /**
42
+ * Manual placement of the dropdown, will flip automatically if there is not enough space
43
+ * @default bottom
44
+ */
45
+ placement?: AriaPopoverProps['placement'];
46
+ /**
47
+ * Element where the popover will be rendered, by default it will be into the body
48
+ */
49
+ portalContainer?: Element;
50
+ /**
51
+ * Whether to show the section for the selected option in the field i.e. "Transaction: Savings" rather than "Savings"
52
+ * NOTE: Only works with single selectionMode multi-selects
53
+ */
54
+ showSingleSectionTitle?: boolean;
55
+ /**
56
+ * Size of input
57
+ * @default medium
58
+ */
59
+ size?: MultiSelectSize;
60
+ } & ListProps<T>;
@@ -0,0 +1,29 @@
1
+ import { Node } from '@react-types/shared';
2
+
3
+ export function filterNodes<T>(
4
+ nodes: Iterable<Node<T>>,
5
+ filterText: string,
6
+ contains: (value: string, search: string) => boolean,
7
+ ): Iterable<Node<T>> {
8
+ if (!filterText) return nodes;
9
+
10
+ const arr = Array.from(nodes);
11
+
12
+ return arr.flatMap((node: Node<T>) => {
13
+ if (node.type !== 'section') {
14
+ return contains(node.textValue ?? '', filterText) ? [node] : [];
15
+ }
16
+
17
+ // See https://github.com/adobe/react-spectrum/discussions/4348 for why this deprecation is ignored
18
+ // eslint-disable-next-line sonarjs/deprecation
19
+ const childNodesArr = Array.from(node.childNodes || []);
20
+ const matchedChildren: Node<T>[] = childNodesArr.filter((child: Node<T>) =>
21
+ contains(child.textValue ?? '', filterText),
22
+ );
23
+
24
+ if (matchedChildren.length === 0) return [];
25
+
26
+ const sectionWithMatches = { ...node, childNodes: matchedChildren } as Node<T>;
27
+ return [sectionWithMatches];
28
+ });
29
+ }
@@ -8,9 +8,8 @@ export const fill = tv({
8
8
  base: '',
9
9
  variants: {
10
10
  mode: {
11
- dark: 'fill-surface-pictogram-base',
12
- light: 'fill-surface-mono',
13
- reversed: 'fill-surface-reversed',
11
+ base: 'fill-surface-pictogram-base',
12
+ mono: 'fill-surface-mono',
14
13
  duo: '',
15
14
  },
16
15
  highlight: {
@@ -1,6 +1,6 @@
1
1
  import { type SVGAttributes } from 'react';
2
2
 
3
- export type PictogramMode = 'dark' | 'light' | 'duo' | 'reversed';
3
+ export type PictogramMode = 'base' | 'mono' | 'duo';
4
4
 
5
5
  export type PictogramProps = SVGAttributes<SVGElement> & {
6
6
  /**
@@ -1,9 +1,9 @@
1
- import React, { useRef } from 'react';
2
- import { FocusScope } from 'react-aria';
1
+ import React, { useEffect, useRef } from 'react';
3
2
  import { createPortal } from 'react-dom';
4
3
 
5
4
  import { useBreakpoint } from '../../../../hook/breakpoints.hook.js';
6
5
  import { resolveResponsiveVariant } from '../../../../utils/breakpoint.util.js';
6
+ import { ButtonRef } from '../../../button/button.types.js';
7
7
  import { Button } from '../../../button/index.js';
8
8
  import { CloseIcon } from '../../../icon/index.js';
9
9
 
@@ -16,42 +16,66 @@ export function BasePanel({
16
16
  heading,
17
17
  headingTag: Tag = 'h1',
18
18
  content,
19
- placement = 'bottom',
19
+ placement = 'top',
20
20
  id,
21
21
  triggerRef,
22
+ onClose,
23
+ open,
22
24
  portal,
23
25
  }: PanelProps) {
24
26
  const popoverRef = useRef<HTMLDivElement>(null);
25
27
  const arrowRef = useRef<HTMLDivElement>(null);
26
28
  const breakpoint = useBreakpoint();
27
- const resolvedPlacement = resolveResponsiveVariant(placement, breakpoint);
28
- const { popoverPosition, arrowPosition } = usePanel({ state, placement: resolvedPlacement, triggerRef, portal });
29
+ const headingRef = useRef<HTMLHeadingElement>(null);
30
+ const buttonRef = useRef<ButtonRef>(null);
31
+ const { popoverPosition, arrowPosition, localPlacement } = usePanel({
32
+ state,
33
+ placement,
34
+ triggerRef,
35
+ portal,
36
+ popoverRef,
37
+ });
38
+ const resolvedPlacement = resolveResponsiveVariant(localPlacement, breakpoint);
29
39
 
30
40
  const styles = panelStyles({ placement: resolvedPlacement });
41
+ useEffect(() => {
42
+ if (state.isOpen && !open) {
43
+ if (headingRef.current) {
44
+ headingRef.current.focus();
45
+ } else {
46
+ buttonRef.current?.focus();
47
+ }
48
+ }
49
+ // eslint-disable-next-line react-hooks/exhaustive-deps
50
+ }, [state.isOpen]);
51
+
31
52
  return (
32
- <FocusScope autoFocus restoreFocus>
33
- <div style={popoverPosition} className={styles.popover()} test-id="popover" id={id} ref={popoverRef}>
34
- <div className={styles.content()}>
35
- {heading && (
36
- <Tag tabIndex={0} className={styles.heading()}>
37
- {heading}
38
- </Tag>
39
- )}
40
- <div className={styles.body()} tabIndex={0}>
41
- {content}
42
- </div>
43
- <Button
44
- look="link"
45
- size="small"
46
- onClick={() => state.close()}
47
- className={styles.closeBtn()}
48
- iconAfter={() => <CloseIcon color="primary" size="small" aria-hidden />}
49
- aria-label="Close popover"
50
- />
53
+ <div style={popoverPosition} className={styles.popover()} test-id="popover" id={id} ref={popoverRef} role="dialog">
54
+ <div className={styles.content()}>
55
+ {heading && (
56
+ <Tag className={styles.heading()} tabIndex={-1} ref={headingRef}>
57
+ {heading}
58
+ </Tag>
59
+ )}
60
+ <div className={styles.body()} id="popover-content">
61
+ {content}
51
62
  </div>
52
- <div aria-hidden className={styles.arrow()} style={arrowPosition} test-id="arrow" ref={arrowRef} />
63
+ <Button
64
+ look="link"
65
+ tag="button"
66
+ size="small"
67
+ ref={buttonRef}
68
+ onClick={() => {
69
+ onClose?.();
70
+ state.close();
71
+ }}
72
+ className={styles.closeBtn()}
73
+ iconAfter={() => <CloseIcon color="primary" size="small" aria-hidden />}
74
+ aria-label="Close popover"
75
+ />
53
76
  </div>
54
- </FocusScope>
77
+ <div aria-hidden className={styles.arrow()} style={arrowPosition} test-id="arrow" ref={arrowRef} />
78
+ </div>
55
79
  );
56
80
  }
57
81
 
@@ -1,41 +1,47 @@
1
- import { useMemo } from 'react';
1
+ import { RefObject, useCallback, useEffect, useLayoutEffect, useMemo, useState } from 'react';
2
2
 
3
3
  import { PanelProps } from './panel.types.js';
4
4
 
5
- const PANEL_WIDTH_SIZE = 282;
5
+ const PANEL_WIDTH_SIZE = 300;
6
+ const ARROW_HEIGHT = 7; // the border-x value for the before pseudo element in the styles, 2*ARROW_HEIGHT gives the width of the arrow
6
7
 
7
- const getVerticalPositionPopover = (element: HTMLDivElement) => {
8
+ const getHorizontalPositionPopover = (element: HTMLDivElement, screenWidth: number) => {
8
9
  const triggerDOMRect = element.getBoundingClientRect();
9
-
10
- const offsetLeftToCenter = (PANEL_WIDTH_SIZE - (triggerDOMRect?.width || 0) / 2) * -1;
10
+ const offsetLeftToCenter = ((PANEL_WIDTH_SIZE - (triggerDOMRect?.width || 0)) / 2) * -1;
11
11
  if (triggerDOMRect.left + offsetLeftToCenter <= 0) {
12
12
  return 'left';
13
13
  }
14
- if (
15
- triggerDOMRect.left + offsetLeftToCenter >= 0 &&
16
- triggerDOMRect.right + offsetLeftToCenter * -1 <= window.innerWidth
17
- ) {
14
+ if (triggerDOMRect.left + offsetLeftToCenter >= 0 && triggerDOMRect.right + offsetLeftToCenter * -1 <= screenWidth) {
18
15
  return 'center';
19
16
  }
20
- if (PANEL_WIDTH_SIZE + (triggerDOMRect?.left || 0) >= window.innerWidth) {
17
+ if (PANEL_WIDTH_SIZE + (triggerDOMRect?.left || 0) >= screenWidth) {
21
18
  return 'right';
22
19
  }
23
20
  };
24
21
 
25
- const getLeftOffsetPerVerticalPosition = (element: HTMLDivElement) => {
22
+ const getLeftOffsetPerHorizontalPosition = (element: HTMLDivElement, screenWidth: number) => {
26
23
  const triggerDOMRect = element.getBoundingClientRect();
27
- switch (getVerticalPositionPopover(element)) {
24
+
25
+ const rightOffset =
26
+ (PANEL_WIDTH_SIZE + (triggerDOMRect?.left || 0) - screenWidth + (screenWidth - (triggerDOMRect?.right || 0))) * -1;
27
+ switch (getHorizontalPositionPopover(element, screenWidth)) {
28
28
  case 'center':
29
29
  return ((PANEL_WIDTH_SIZE - (triggerDOMRect?.width || 0)) / 2) * -1;
30
30
  case 'right':
31
- return (
32
- (PANEL_WIDTH_SIZE +
33
- (triggerDOMRect?.left || 0) -
34
- window.innerWidth +
35
- (window.innerWidth - (triggerDOMRect?.right || 0))) *
36
- -1
37
- );
31
+ // For smaller screens, if adjusting for right makes it go off screen on the left, adjust it to have a 16px space from the edge
32
+ if (triggerDOMRect.left + rightOffset <= 0) {
33
+ // For extra small screens extra adjustment is needed e.g. <320px wide
34
+ if (triggerDOMRect.left + rightOffset - PANEL_WIDTH_SIZE <= -screenWidth) {
35
+ return rightOffset - (triggerDOMRect.left + rightOffset) + (screenWidth - PANEL_WIDTH_SIZE) / 2;
36
+ }
37
+ return rightOffset - (triggerDOMRect.left + rightOffset) + 16;
38
+ }
39
+ return rightOffset;
38
40
  default:
41
+ // For extra small screens extra adjustment is needed e.g. <320px wide
42
+ if (triggerDOMRect?.left + PANEL_WIDTH_SIZE >= screenWidth) {
43
+ return -(triggerDOMRect?.left || 0) + (screenWidth - PANEL_WIDTH_SIZE) / 2;
44
+ }
39
45
  return 0;
40
46
  }
41
47
  };
@@ -45,6 +51,7 @@ export type PanelHookProps = {
45
51
  portal: PanelProps['portal'];
46
52
  state: PanelProps['state'];
47
53
  triggerRef: PanelProps['triggerRef'];
54
+ popoverRef?: RefObject<HTMLDivElement>;
48
55
  };
49
56
 
50
57
  /**
@@ -53,14 +60,78 @@ export type PanelHookProps = {
53
60
  * @returns {Object} return.popoverPosition - The calculated position styles for the popover.
54
61
  * @returns {Object} return.arrowPosition - The calculated position styles for the popover arrow.
55
62
  */
56
- export function usePanel({ state, placement = 'bottom', triggerRef, portal }: PanelHookProps) {
63
+ export function usePanel({ state, placement = 'top', triggerRef, portal, popoverRef }: PanelHookProps) {
64
+ if (!triggerRef.current) {
65
+ throw new Error('You must pass valid refs.');
66
+ }
67
+ // using documentElement to get the width of the viewport excluding scrollbar
68
+ const [screenWidth, setScreenWidth] = useState<number>(document.documentElement.clientWidth);
69
+ const [localPlacement, setLocalPlacement] = useState<PanelProps['placement']>(placement);
70
+ const [originalPosition, setOriginalPosition] = useState<DOMRect | null>(null);
71
+ const trigger = triggerRef.current.getBoundingClientRect();
72
+
73
+ // used for flipping popover if there is no space
74
+ const getVerticalPosition = useCallback(() => {
75
+ // handle vertical position with portal
76
+ if (portal instanceof Element) {
77
+ const portalRect = portal.getBoundingClientRect();
78
+ if (originalPosition && originalPosition?.top < portalRect.top) {
79
+ setLocalPlacement('bottom');
80
+ }
81
+ if (originalPosition && originalPosition?.bottom > portalRect.bottom) {
82
+ setLocalPlacement('top');
83
+ }
84
+ return;
85
+ }
86
+ // handle vertical position with no portal
87
+ if (originalPosition && originalPosition?.height > trigger.top) {
88
+ setLocalPlacement('bottom');
89
+ }
90
+ if (originalPosition && originalPosition?.bottom > document.documentElement.clientHeight) {
91
+ setLocalPlacement('top');
92
+ }
93
+ if (
94
+ originalPosition &&
95
+ originalPosition?.bottom <= document.documentElement.clientHeight &&
96
+ placement === 'bottom'
97
+ ) {
98
+ setLocalPlacement('bottom');
99
+ }
100
+ }, [placement, portal, originalPosition, trigger.top]);
101
+
102
+ useLayoutEffect(() => {
103
+ setOriginalPosition(popoverRef?.current?.getBoundingClientRect() || null);
104
+ }, [popoverRef]);
105
+
106
+ // So popover can be in correct position on open and doesn't move when opened
107
+ useLayoutEffect(() => {
108
+ getVerticalPosition();
109
+ }, [getVerticalPosition]);
110
+
111
+ useEffect(() => {
112
+ const handleResize = () => {
113
+ if (portal instanceof Element) {
114
+ setScreenWidth(portal.clientWidth);
115
+ getVerticalPosition();
116
+ } else {
117
+ setScreenWidth(document.documentElement.clientWidth);
118
+ getVerticalPosition();
119
+ }
120
+ };
121
+
122
+ window.addEventListener('resize', handleResize);
123
+ return () => {
124
+ window.removeEventListener('resize', handleResize);
125
+ };
126
+ }, [portal, getVerticalPosition]);
127
+
57
128
  const popoverPosition = useMemo(() => {
58
129
  const triggerDOMRect = triggerRef.current?.getBoundingClientRect();
59
130
  // The offset is calculated according if the popover will overflow the window
60
- const leftOffset = triggerRef.current ? getLeftOffsetPerVerticalPosition(triggerRef.current) : 0;
131
+ const leftOffset = triggerRef.current ? getLeftOffsetPerHorizontalPosition(triggerRef.current, screenWidth) : 0;
61
132
  // If it is not portal, we can simplify the logic
62
133
  if (!portal) {
63
- switch (placement) {
134
+ switch (localPlacement) {
64
135
  case 'top':
65
136
  return {
66
137
  bottom: '100%',
@@ -77,7 +148,7 @@ export function usePanel({ state, placement = 'bottom', triggerRef, portal }: Pa
77
148
 
78
149
  // If it is portal, we need to considerate the scroll if there is a scroll in the portal
79
150
  const portalElement = portal as Element;
80
- switch (placement) {
151
+ switch (localPlacement) {
81
152
  case 'top':
82
153
  return {
83
154
  // The top is calculated according to the portal element
@@ -94,20 +165,23 @@ export function usePanel({ state, placement = 'bottom', triggerRef, portal }: Pa
94
165
  };
95
166
  }
96
167
  // eslint-disable-next-line react-hooks/exhaustive-deps
97
- }, [placement, portal, triggerRef, state.isOpen]);
168
+ }, [localPlacement, portal, triggerRef, state.isOpen, screenWidth]);
98
169
 
99
170
  const arrowPosition = useMemo(() => {
100
171
  const triggerDOMRect = triggerRef.current?.getBoundingClientRect();
101
- const leftOffset = triggerRef.current ? getLeftOffsetPerVerticalPosition(triggerRef.current) * -1 : 0;
172
+ const leftOffset = triggerRef.current
173
+ ? getLeftOffsetPerHorizontalPosition(triggerRef.current, screenWidth) * -1
174
+ : 0;
102
175
 
103
176
  return {
104
- left: `${(triggerDOMRect?.width || 0) / 2 + leftOffset}px`,
177
+ left: `${leftOffset - ARROW_HEIGHT + (triggerDOMRect?.width || 0) / 2}px`,
105
178
  };
106
179
  // eslint-disable-next-line react-hooks/exhaustive-deps
107
- }, [triggerRef, state.isOpen]);
180
+ }, [triggerRef, state.isOpen, screenWidth, originalPosition]);
108
181
 
109
182
  return {
110
183
  popoverPosition,
111
184
  arrowPosition,
185
+ localPlacement,
112
186
  };
113
187
  }
@@ -18,11 +18,11 @@ export const styles = tv({
18
18
  placement: {
19
19
  top: {
20
20
  popover: '-mt-2 mb-2',
21
- arrow: 'top-full translate-x-[-6px] translate-y-0',
21
+ arrow: 'top-full translate-x-[-2.5px]',
22
22
  },
23
23
  bottom: {
24
24
  popover: 'mt-2',
25
- arrow: 'bottom-full translate-x-[6px] rotate-180 after:bottom-[1px]',
25
+ arrow: 'bottom-full translate-x-[14px] rotate-180', // rotate-180 moves the arrow to the left, translate needed for centering
26
26
  },
27
27
  },
28
28
  },
@@ -16,6 +16,14 @@ export type PanelProps = {
16
16
  * Tag to render
17
17
  */
18
18
  headingTag?: keyof Pick<JSX.IntrinsicElements, 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'>;
19
+ /**
20
+ * onClose callback
21
+ */
22
+ onClose?: () => void;
23
+ /**
24
+ * Whether the popover is open by default
25
+ */
26
+ open?: boolean;
19
27
  /**
20
28
  * Placement of popover. If no placement provided it will default to top unless there is no space then will appear on bottom.
21
29
  */