@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,42 @@
1
+ 'use client';
2
+
3
+ import React, { useContext, useMemo } from 'react';
4
+ import { useListBoxSection } from 'react-aria';
5
+
6
+ import { MultiSelectContext } from '../../../../multi-select.component.js';
7
+ import { MultiSelectOption } from '../multi-select-option/multi-select-option.component.js';
8
+
9
+ import { styles as listBoxStyles } from './multi-select-list-box-section.styles.js';
10
+
11
+ import type { MultiSelectSectionProps } from './multi-select-list-box-section.types.js';
12
+
13
+ export function MultiSelectListBoxSection<T>({ section }: MultiSelectSectionProps<T>) {
14
+ const { listState } = useContext(MultiSelectContext);
15
+ const { itemProps, headingProps, groupProps } = useListBoxSection({
16
+ heading: section.rendered,
17
+ 'aria-label': section['aria-label'],
18
+ });
19
+
20
+ const styles = listBoxStyles();
21
+
22
+ const childNodes = useMemo(() => {
23
+ return listState?.collection?.getChildren ? [...listState.collection.getChildren(section.key)] : [];
24
+ }, [section.key, listState?.collection]);
25
+
26
+ return (
27
+ <>
28
+ <li {...itemProps}>
29
+ {section.rendered && (
30
+ <span {...headingProps} className={styles.span()} tabIndex={-1}>
31
+ {section.rendered}
32
+ </span>
33
+ )}
34
+ <ul {...groupProps}>
35
+ {childNodes.map(node => (
36
+ <MultiSelectOption key={node.key} item={node} />
37
+ ))}
38
+ </ul>
39
+ </li>
40
+ </>
41
+ );
42
+ }
@@ -0,0 +1,7 @@
1
+ import { tv } from 'tailwind-variants';
2
+
3
+ export const styles = tv({
4
+ slots: {
5
+ span: 'flex h-6 items-center bg-surface-muted-faint px-2 align-middle typography-body-10 text-text-hero',
6
+ },
7
+ });
@@ -0,0 +1,5 @@
1
+ import type { Node } from '@react-types/shared';
2
+
3
+ export type MultiSelectSectionProps<T> = {
4
+ section: Node<T>;
5
+ };
@@ -0,0 +1,66 @@
1
+ 'use client';
2
+
3
+ import React, { useCallback, useContext, useRef, KeyboardEvent } from 'react';
4
+ import { mergeProps, useFocusRing, useOption } from 'react-aria';
5
+
6
+ import { TickIcon } from '../../../../../icon/index.js';
7
+ import { MultiSelectContext } from '../../../../multi-select.component.js';
8
+
9
+ import { styles as optionStyles } from './multi-select-option.styles.js';
10
+ import { MultiSelectOptionProps } from './multi-select-option.types.js';
11
+
12
+ export function MultiSelectOption<T>({ item }: MultiSelectOptionProps<T>) {
13
+ const { listState, selectAllRef, inputRef } = useContext(MultiSelectContext);
14
+ const selectionMode = listState.selectionManager.selectionMode;
15
+ const ref = useRef<HTMLLIElement>(null);
16
+ const { optionProps, isDisabled, isSelected } = useOption({ key: item.key }, listState, ref);
17
+ const { isFocusVisible, focusProps } = useFocusRing();
18
+
19
+ const styles = optionStyles({
20
+ disabled: isDisabled,
21
+ selectionMode,
22
+ isFocusVisible,
23
+ });
24
+
25
+ // Need to manually handle keyboard accessibility due to component complexity
26
+ const handleButtonKeyDown = useCallback(
27
+ (e: KeyboardEvent<HTMLLIElement>) => {
28
+ if (e.key === 'ArrowUp' && item.index === 0) {
29
+ e.preventDefault();
30
+ if (selectAllRef.current) {
31
+ selectAllRef.current?.focus();
32
+ } else {
33
+ inputRef.current?.focus();
34
+ }
35
+ }
36
+ if (e.key === 'Enter' || e.key === ' ') {
37
+ e.preventDefault();
38
+ listState.selectionManager.toggleSelection(item.key);
39
+ }
40
+ },
41
+ // eslint-disable-next-line react-hooks/exhaustive-deps
42
+ [listState.selectionManager],
43
+ );
44
+
45
+ return (
46
+ <li
47
+ {...mergeProps(optionProps, focusProps)}
48
+ ref={ref}
49
+ className={styles.root()}
50
+ onKeyDown={handleButtonKeyDown}
51
+ aria-checked={selectionMode === 'multiple' ? isSelected : undefined}
52
+ aria-selected={selectionMode === 'single' ? isSelected : undefined}
53
+ tabIndex={0}
54
+ >
55
+ <div className={styles.itemContainer()}>
56
+ <div className={styles.flexZero()}>
57
+ <div className={styles.checkbox()}>
58
+ {isSelected && <TickIcon size="small" aria-hidden="true" color="hero" />}
59
+ </div>
60
+ </div>
61
+ <div className={styles.body()}>{item.rendered}</div>
62
+ </div>
63
+ {item.props?.description && <div className={styles.description()}>{item.props.description}</div>}
64
+ </li>
65
+ );
66
+ }
@@ -0,0 +1,33 @@
1
+ import { tv } from 'tailwind-variants';
2
+
3
+ export const styles = tv({
4
+ slots: {
5
+ root: 'flex cursor-pointer flex-col justify-between bg-background-white p-2 text-sm text-text-body transition-[background-color] hover:bg-surface-muted-faint',
6
+ checkbox: 'size-4',
7
+ body: '-mt-0.5 flex flex-1 items-center typography-body-9',
8
+ flexZero: 'flex-0',
9
+ itemContainer: 'flex gap-1',
10
+ description: 'relative ml-5 typography-body-10 text-text-muted',
11
+ },
12
+ variants: {
13
+ selectionMode: {
14
+ none: {},
15
+ multiple: {
16
+ checkbox: 'flex items-center justify-center rounded border border-border-hero bg-background-white',
17
+ },
18
+ single: {
19
+ checkbox: 'flex items-center justify-center',
20
+ },
21
+ },
22
+ isFocusVisible: {
23
+ true: {
24
+ root: 'bg-surface-muted-faint focus-outline -outline-offset-2',
25
+ },
26
+ },
27
+ disabled: {
28
+ true: {
29
+ root: 'cursor-not-allowed text-text-muted',
30
+ },
31
+ },
32
+ },
33
+ });
@@ -0,0 +1,7 @@
1
+ import type { Node } from '@react-types/shared';
2
+
3
+ export type MultiSelectOptionProps<T> = {
4
+ // item is a react-stately Node for the given item value type T.
5
+ // props.description is optional and may not exist for all item types, so keep it optional.
6
+ item: Omit<Node<T>, 'props'> & { props?: { description?: string } };
7
+ };
@@ -0,0 +1,104 @@
1
+ 'use client';
2
+
3
+ import React, { useCallback, useContext, useMemo, KeyboardEvent } from 'react';
4
+ import { useOption, useFocusRing, mergeProps } from 'react-aria';
5
+
6
+ import { TickIcon } from '../../../../../icon/index.js';
7
+ import { MultiSelectContext } from '../../../../multi-select.component.js';
8
+
9
+ import { styles as selectAllOptionStyles } from './multi-select-select-all-option.styles.js';
10
+
11
+ export function MultiSelectSelectAllOption() {
12
+ const { listState, selectAllRef, listBoxRef, inputRef } = useContext(MultiSelectContext);
13
+
14
+ const allItemsAreSelected = useMemo(
15
+ () => listState.selectionManager.isSelectAll,
16
+ [listState.selectionManager.isSelectAll],
17
+ );
18
+
19
+ const withOneSelectionOrMore = useMemo(
20
+ () => !![...listState.selectionManager.selectedKeys].length,
21
+ [listState.selectionManager.selectedKeys],
22
+ );
23
+
24
+ // Handle selection change
25
+ const handleSelectionChange = useCallback(() => {
26
+ if (!allItemsAreSelected) {
27
+ // This is because selectAll send a string called 'all' when it is called.
28
+ listState.selectionManager.setSelectedKeys(
29
+ new Set([...listState.selectionManager.selectedKeys, ...listState.selectionManager.collection.getKeys()]),
30
+ );
31
+ return;
32
+ }
33
+ return listState.selectionManager.clearSelection();
34
+ }, [allItemsAreSelected, listState.selectionManager]);
35
+
36
+ // Use useOption for accessibility and keyboard nav
37
+ const { optionProps } = useOption(
38
+ {
39
+ key: 'select-all',
40
+ },
41
+ listState,
42
+ selectAllRef,
43
+ );
44
+
45
+ const { isFocusVisible, focusProps } = useFocusRing();
46
+
47
+ const styles = selectAllOptionStyles({
48
+ selected: withOneSelectionOrMore,
49
+ isFocusVisible,
50
+ });
51
+
52
+ // Need to manually handle keyboard accessibility due to component complexity
53
+ const handleInputKeyDown = useCallback(
54
+ (e: KeyboardEvent<HTMLDivElement>) => {
55
+ if (e.key === 'ArrowDown') {
56
+ e.preventDefault();
57
+ const firstItem = listBoxRef.current?.querySelector('[data-key]') as HTMLElement;
58
+ firstItem?.focus();
59
+ }
60
+ if (e.key === 'ArrowUp') {
61
+ e.preventDefault();
62
+ inputRef.current?.focus();
63
+ }
64
+ if (e.key === 'Enter' || e.key === ' ') {
65
+ e.preventDefault();
66
+ handleSelectionChange();
67
+ }
68
+ },
69
+ [handleSelectionChange, listBoxRef, inputRef],
70
+ );
71
+
72
+ let ariaChecked: 'true' | 'false' | 'mixed';
73
+ if (allItemsAreSelected) {
74
+ ariaChecked = 'true';
75
+ } else if (withOneSelectionOrMore) {
76
+ ariaChecked = 'mixed';
77
+ } else {
78
+ ariaChecked = 'false';
79
+ }
80
+
81
+ return (
82
+ <div
83
+ className={styles.listItem()}
84
+ key="select-all"
85
+ {...mergeProps(optionProps, focusProps)}
86
+ ref={selectAllRef}
87
+ onClick={handleSelectionChange}
88
+ onKeyDown={e => {
89
+ handleInputKeyDown(e);
90
+ }}
91
+ role="option"
92
+ aria-checked={ariaChecked}
93
+ aria-label="Select all options"
94
+ >
95
+ <div className={styles.button()}>
96
+ <div className={styles.checkbox()} role="presentation">
97
+ {allItemsAreSelected && <TickIcon size="small" aria-hidden="true" color="hero" />}
98
+ {!allItemsAreSelected && withOneSelectionOrMore && <div className={styles.indeterminate()} />}
99
+ </div>
100
+ <span className={styles.label()}>Select all</span>
101
+ </div>
102
+ </div>
103
+ );
104
+ }
@@ -0,0 +1,21 @@
1
+ import { tv } from 'tailwind-variants';
2
+
3
+ export const styles = tv({
4
+ slots: {
5
+ listItem: 'border-b border-b-border-muted-soft hover:bg-surface-muted-faint',
6
+ button: 'flex w-full cursor-pointer items-center gap-1 p-2',
7
+ checkbox: 'flex size-4 items-center justify-center rounded border border-border-hero bg-background-white',
8
+ indeterminate: 'block w-3/5 border-t-2 border-t-border-hero',
9
+ label: 'typography-body-9',
10
+ },
11
+ variants: {
12
+ selected: {
13
+ true: { listItem: 'bg-surface-muted-faint' },
14
+ false: { listItem: '' },
15
+ },
16
+ isFocusVisible: {
17
+ true: { listItem: 'bg-surface-muted-faint focus-outline -outline-offset-2' },
18
+ false: {},
19
+ },
20
+ },
21
+ });
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+
3
+ import React, { useContext } from 'react';
4
+ import { useListBox } from 'react-aria';
5
+
6
+ import { MultiSelectContext } from '../../multi-select.component.js';
7
+
8
+ import { MultiSelectListBoxSection } from './components/multi-select-list-box-section/multi-select-list-box-section.component.js';
9
+ import { MultiSelectOption } from './components/multi-select-option/multi-select-option.component.js';
10
+ import { MultiSelectSelectAllOption } from './components/multi-select-select-all-option/multi-select-select-all-option.component.js';
11
+ import { styles as listBoxStyles } from './multi-select-list-box.styles.js';
12
+
13
+ import type { MultiSelectListBoxProps } from './multi-select-list-box.types.js';
14
+
15
+ export function MultiSelectListBox<T extends object = object>({ listBoxRef, ...props }: MultiSelectListBoxProps<T>) {
16
+ const { listState } = useContext(MultiSelectContext);
17
+ const selectionMode = listState.selectionManager.selectionMode;
18
+ const { listBoxProps } = useListBox({ selectionMode, ...props }, listState, listBoxRef);
19
+
20
+ const stateCollection = [...listState.collection];
21
+
22
+ const styles = listBoxStyles();
23
+
24
+ return (
25
+ <div className={styles.container()}>
26
+ {selectionMode === 'multiple' && stateCollection.length > 0 && <MultiSelectSelectAllOption />}
27
+ <ul {...listBoxProps} ref={listBoxRef} className={styles.ul()}>
28
+ {stateCollection.length > 0 ? (
29
+ stateCollection.map(item =>
30
+ item.type === 'section' ? (
31
+ <MultiSelectListBoxSection key={item.key} section={item} />
32
+ ) : (
33
+ <MultiSelectOption key={item.key} item={item} />
34
+ ),
35
+ )
36
+ ) : (
37
+ <p className={styles.noItemsText()}>No results. Try another search.</p>
38
+ )}
39
+ </ul>
40
+ </div>
41
+ );
42
+ }
@@ -0,0 +1,10 @@
1
+ import { tv } from 'tailwind-variants';
2
+
3
+ export const styles = tv({
4
+ slots: {
5
+ container: 'max-h-72 overflow-auto',
6
+ checkbox: 'flex size-4 items-center justify-center rounded border border-border-muted-strong',
7
+ ul: 'w-full outline-none',
8
+ noItemsText: 'px-2 py-3 typography-body-9 text-text-body',
9
+ },
10
+ });
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { type AriaListBoxOptions } from 'react-aria';
3
+
4
+ export type MultiSelectListBoxProps<T> = {
5
+ listBoxRef: React.RefObject<HTMLUListElement>;
6
+ } & Omit<AriaListBoxOptions<T>, 'selectionMode'>;
@@ -0,0 +1,139 @@
1
+ import React, { useCallback, useContext, useEffect, useState, Key, KeyboardEvent } from 'react';
2
+ import { mergeProps, useButton, useFocusRing } from 'react-aria';
3
+
4
+ import { useBreakpoint } from '../../../../hook/breakpoints.hook.js';
5
+ import { resolveResponsiveVariant } from '../../../../utils/breakpoint.util.js';
6
+ import { Button } from '../../../button/button.component.js';
7
+ import { DropDownIcon, ClearIcon } from '../../../icon/index.js';
8
+ import { Tooltip } from '../../../tooltip/tooltip.component.js';
9
+ import { MultiSelectContext } from '../../multi-select.component.js';
10
+
11
+ import { styles as triggerStyles } from './multi-select-list-box-trigger.styles.js';
12
+ import { MultiSelectListBoxTriggerProps } from './multi-select-list-box-trigger.types.js';
13
+
14
+ export function MultiSelectListBoxTrigger<T>({
15
+ placeholder,
16
+ showSingleSectionTitle,
17
+ selectedKeys,
18
+ triggerProps,
19
+ id,
20
+ }: MultiSelectListBoxTriggerProps<T>) {
21
+ const { size, overlayState, listState, buttonRef, inputRef } = useContext(MultiSelectContext);
22
+ const selectionMode = listState.selectionManager.selectionMode;
23
+ const breakpoint = useBreakpoint();
24
+ const { buttonProps } = useButton(triggerProps, buttonRef);
25
+ const { focusProps, isFocusVisible } = useFocusRing();
26
+ const [selectedValues, setSelectedValues] = useState<{ key: string; value: string | undefined }[]>([]);
27
+ const [sectionTitle, setSectionTitle] = useState<string | undefined>(undefined);
28
+
29
+ const finalButtonProps = mergeProps(focusProps, buttonProps);
30
+ const styles = triggerStyles({
31
+ size: resolveResponsiveVariant(size, breakpoint),
32
+ isFocusVisible,
33
+ });
34
+
35
+ const getSectionTitle = useCallback(
36
+ (key?: Key): string | undefined => {
37
+ const parentKey = key ?? '';
38
+ const item = listState.collection.getItem(parentKey as string);
39
+ if (!item) return undefined;
40
+ const title = (item.props as { title?: string }).title;
41
+ return title;
42
+ },
43
+ [listState.collection],
44
+ );
45
+
46
+ const handleTriggerKeyDown = useCallback(
47
+ (e: KeyboardEvent<HTMLButtonElement>) => {
48
+ if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {
49
+ e.preventDefault();
50
+ overlayState.open();
51
+ inputRef.current?.focus();
52
+ }
53
+ },
54
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55
+ [overlayState],
56
+ );
57
+
58
+ // Manage selected items state for display
59
+ useEffect(() => {
60
+ if (!selectedKeys || typeof selectedKeys === 'string' || (selectedKeys instanceof Set && selectedKeys.size === 0)) {
61
+ setSelectedValues([]);
62
+ } else {
63
+ const currentMap = new Map(selectedValues.map(item => [item.key, item.value]));
64
+
65
+ // manages the selected values that should be displayed to work with filtering
66
+ const next: { key: string; value: string | undefined }[] = [];
67
+ for (const key of [...selectedKeys] as string[]) {
68
+ if (currentMap.has(key)) {
69
+ next.push({ key, value: currentMap.get(key) });
70
+ } else {
71
+ next.push({ key, value: listState.collection.getItem(key)?.textValue });
72
+ }
73
+ }
74
+
75
+ // Handles displaying the section title
76
+ if (selectionMode === 'single' && showSingleSectionTitle) {
77
+ const firstKey = ([...selectedKeys] as string[])[0];
78
+ const parentKey = listState.collection.getItem(firstKey)?.parentKey;
79
+ const title = parentKey ? getSectionTitle(parentKey) : undefined;
80
+ setSectionTitle(title);
81
+ }
82
+
83
+ setSelectedValues(next);
84
+ }
85
+ // eslint-disable-next-line react-hooks/exhaustive-deps
86
+ }, [selectedKeys]);
87
+
88
+ const valuesString =
89
+ selectionMode === 'single' && selectedValues.length > 0 && showSingleSectionTitle && sectionTitle
90
+ ? `${sectionTitle}: ${selectedValues[0].value}`
91
+ : selectedValues.map(node => node.value || '').join(', ');
92
+
93
+ return (
94
+ <>
95
+ <Tooltip tooltip={valuesString} position="top">
96
+ <div className={styles.buttonContainer()}>
97
+ <button
98
+ className={styles.control()}
99
+ ref={buttonRef}
100
+ {...finalButtonProps}
101
+ onKeyDown={handleTriggerKeyDown}
102
+ type="button"
103
+ role="combobox"
104
+ aria-autocomplete="list"
105
+ tabIndex={undefined}
106
+ aria-haspopup="dialog"
107
+ id={id}
108
+ >
109
+ {/* Selected items */}
110
+ <div className={styles.selection()}>
111
+ <span className={styles.selectionSpan()}>{selectedValues.length > 0 ? valuesString : placeholder}</span>
112
+ </div>
113
+
114
+ {/* dropdown toggle */}
115
+ <div className={styles.button()}>
116
+ <DropDownIcon color="muted-vivid" size="medium" aria-hidden="true" />
117
+ </div>
118
+ </button>
119
+ {selectedValues.length > 0 && (
120
+ <Button
121
+ className={styles.clearButton()}
122
+ look="unstyled"
123
+ onClick={() => {
124
+ listState.selectionManager.clearSelection();
125
+ }}
126
+ >
127
+ <ClearIcon className={styles.clearIcon()} size="small" color="muted" />
128
+ </Button>
129
+ )}
130
+ </div>
131
+ </Tooltip>
132
+ {selectedValues.length > 0 && selectionMode === 'multiple' && (
133
+ <p className={styles.hint()}>
134
+ {selectedValues.length} item{selectedValues.length > 1 && 's'} selected
135
+ </p>
136
+ )}
137
+ </>
138
+ );
139
+ }
@@ -0,0 +1,70 @@
1
+ import { tv } from 'tailwind-variants';
2
+
3
+ export const styles = tv({
4
+ slots: {
5
+ buttonContainer: 'relative w-full',
6
+ control: 'form-control relative box-border inline-flex w-full flex-row overflow-hidden',
7
+ selection: 'flex flex-1 items-center overflow-hidden pr-4.5 text-left whitespace-nowrap',
8
+ selectionSpan: 'w-full overflow-hidden text-ellipsis',
9
+ hint: 'typography-body-10 text-text-muted',
10
+ button: 'flex cursor-default items-center justify-center border-l border-l-border-muted-strong bg-background-white',
11
+ clearButton: 'absolute top-0 bottom-0 flex !h-auto items-center justify-center',
12
+ clearIcon: '-mt-0.5',
13
+ },
14
+ variants: {
15
+ size: {
16
+ small: {
17
+ control:
18
+ 'min-h-[1.875rem] form-control-small group-[.input-group-inset-after]:pr-6 group-[.input-group-inset-before]:pl-6',
19
+ button: '-mt-0.5 -mr-[0.5625rem] -mb-[0.25rem] rounded-r-sm px-0.5',
20
+ clearButton: 'right-6.5',
21
+ },
22
+ medium: {
23
+ control:
24
+ 'min-h-[2.25rem] form-control-medium group-[.input-group-inset-after]:pr-7 group-[.input-group-inset-before]:pl-7',
25
+ button: '-my-[0.3125rem] -mr-2 rounded-r-md px-1.5',
26
+ clearButton: 'right-8.5',
27
+ },
28
+ large: {
29
+ control:
30
+ 'min-h-[2.625rem] form-control-large group-[.input-group-inset-after]:pr-8 group-[.input-group-inset-before]:pl-8',
31
+ button: '-my-[0.5rem] -mr-2.5 rounded-r-lg px-1.5',
32
+ clearButton: 'right-8.5',
33
+ },
34
+ xlarge: {
35
+ control:
36
+ 'min-h-[3rem] form-control-xlarge group-[.input-group-inset-after]:pr-9 group-[.input-group-inset-before]:pl-9',
37
+ button: '-mt-[0.5625rem] -mr-3 -mb-[0.625rem] rounded-r-xl px-2',
38
+ clearButton: 'right-9.5',
39
+ },
40
+ },
41
+ invalid: {
42
+ true: {
43
+ control: 'border-border-danger',
44
+ },
45
+ false: {
46
+ control: 'border-border-muted-strong',
47
+ },
48
+ },
49
+ isFocusVisible: {
50
+ true: {
51
+ control: 'focus-outline',
52
+ },
53
+ },
54
+ width: {
55
+ full: { control: 'w-full' },
56
+ 1: { control: 'box-content w-[1.81ex]' },
57
+ 2: { control: 'box-content w-[3.62ex]' },
58
+ 3: { control: 'box-content w-[5.43ex]' },
59
+ 4: { control: 'box-content w-[7.24ex]' },
60
+ 5: { control: 'box-content w-[9.05ex]' },
61
+ 6: { control: 'box-content w-[10.86ex]' },
62
+ 7: { control: 'box-content w-[12.67ex]' },
63
+ 8: { control: 'box-content w-[14.48ex]' },
64
+ 9: { control: 'box-content w-[16.29ex]' },
65
+ 10: { control: 'box-content w-[18.1ex]' },
66
+ 20: { control: 'box-content w-[36.2ex]' },
67
+ 30: { control: 'box-content w-[54.3ex]' },
68
+ },
69
+ },
70
+ });
@@ -0,0 +1,21 @@
1
+ import { AriaButtonProps } from 'react-aria';
2
+ import { ListProps } from 'react-stately';
3
+ import { VariantProps } from 'tailwind-variants';
4
+
5
+ import { ResponsiveVariants } from 'src/types/responsive-variants.types.js';
6
+
7
+ import { MultiSelectProps } from '../../multi-select.types.js';
8
+
9
+ import { styles as triggerStyles } from './multi-select-list-box-trigger.styles.js';
10
+
11
+ type Variants = VariantProps<typeof triggerStyles>;
12
+
13
+ export type MultiSelectSize = ResponsiveVariants<Variants['size']>;
14
+
15
+ export type MultiSelectListBoxTriggerProps<T> = {
16
+ id?: string;
17
+ placeholder: string;
18
+ selectedKeys?: ListProps<T>['selectedKeys'];
19
+ showSingleSectionTitle?: MultiSelectProps<T>['showSingleSectionTitle'];
20
+ triggerProps: AriaButtonProps<'button'>;
21
+ };
@@ -0,0 +1,64 @@
1
+ 'use client';
2
+
3
+ import React, { useContext } from 'react';
4
+ import { DismissButton, mergeProps, Overlay, usePopover } from 'react-aria';
5
+
6
+ import { MultiSelectContext } from '../../multi-select.component.js';
7
+
8
+ import { styles as popoverStyles } from './multi-select-popover.styles.js';
9
+
10
+ import type { MultiSelectPopoverProps } from './multi-select-popover.types.js';
11
+
12
+ export function MultiSelectPopover({ children, className, ...props }: MultiSelectPopoverProps) {
13
+ const { overlayState, overlayProps, popoverRef, buttonRef, placement, portalContainer } =
14
+ useContext(MultiSelectContext);
15
+
16
+ const { popoverProps } = usePopover(
17
+ {
18
+ ...props,
19
+ placement,
20
+ popoverRef,
21
+ triggerRef: buttonRef,
22
+ isNonModal: true,
23
+ shouldFlip: true,
24
+ shouldCloseOnInteractOutside: () => false, // need to manage accessibility manually due to complexity of component
25
+ offset: 6,
26
+ },
27
+ overlayState,
28
+ );
29
+
30
+ const width = buttonRef.current?.getBoundingClientRect().width;
31
+ const styles = popoverStyles();
32
+
33
+ return (
34
+ <Overlay disableFocusManagement portalContainer={portalContainer}>
35
+ <div
36
+ {...mergeProps(popoverProps, overlayProps)}
37
+ ref={popoverRef}
38
+ className={styles.overlay({ className })}
39
+ style={{ ...popoverProps.style, width: width ? `${width}px` : undefined }}
40
+ onBlur={e => {
41
+ const related = e.relatedTarget as Element | null;
42
+ if (!popoverRef?.current) return;
43
+ // keep open if focus moved to an element inside the popover
44
+ if (related && popoverRef.current.contains(related)) return;
45
+ // keep open if focus moved to the trigger button (so it doesn't open instantly on press)
46
+ if (related && buttonRef?.current && buttonRef.current.contains(related)) return;
47
+ overlayState.close();
48
+ }}
49
+ // Closes the dropdown when using keyboard navigation
50
+ onKeyDown={e => {
51
+ if (e.key === 'Tab' || e.key === 'Escape') {
52
+ overlayState.close();
53
+ }
54
+ }}
55
+ role="dialog"
56
+ aria-modal="true"
57
+ aria-label="Options list with filter"
58
+ >
59
+ {children}
60
+ <DismissButton onDismiss={() => overlayState.close()} />
61
+ </div>
62
+ </Overlay>
63
+ );
64
+ }
@@ -0,0 +1,8 @@
1
+ import { tv } from 'tailwind-variants';
2
+
3
+ export const styles = tv({
4
+ slots: {
5
+ underlay: 'fixed inset-0 bg-black/5',
6
+ overlay: 'z-10 flex flex-col overflow-hidden rounded-xl border border-border-muted-soft bg-background-white shadow',
7
+ },
8
+ });
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+
3
+ import type { AriaPopoverProps } from 'react-aria';
4
+
5
+ export type MultiSelectPopoverProps = {
6
+ children: React.ReactNode;
7
+ className?: string;
8
+ } & Omit<AriaPopoverProps, 'popoverRef' | 'triggerRef'>;