@vector-im/compound-web 8.4.0 → 9.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (623) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +33 -0
  2. package/dist/_virtual/_rolldown/runtime.js +13 -0
  3. package/dist/components/ActivityMarker/Pill.cjs +15 -10
  4. package/dist/components/ActivityMarker/Pill.cjs.map +1 -1
  5. package/dist/components/ActivityMarker/Pill.js +13 -10
  6. package/dist/components/ActivityMarker/Pill.js.map +1 -1
  7. package/dist/components/ActivityMarker/Pill.module.cjs +5 -0
  8. package/dist/components/ActivityMarker/Pill.module.cjs.map +1 -0
  9. package/dist/components/ActivityMarker/Pill.module.js +5 -0
  10. package/dist/components/ActivityMarker/Pill.module.js.map +1 -0
  11. package/dist/components/ActivityMarker/Unread.cjs +14 -6
  12. package/dist/components/ActivityMarker/Unread.cjs.map +1 -1
  13. package/dist/components/ActivityMarker/Unread.js +12 -6
  14. package/dist/components/ActivityMarker/Unread.js.map +1 -1
  15. package/dist/components/ActivityMarker/Unread.module.cjs +5 -0
  16. package/dist/components/ActivityMarker/Unread.module.cjs.map +1 -0
  17. package/dist/components/ActivityMarker/Unread.module.js +5 -0
  18. package/dist/components/ActivityMarker/Unread.module.js.map +1 -0
  19. package/dist/components/ActivityMarker/UnreadCounter.cjs +18 -8
  20. package/dist/components/ActivityMarker/UnreadCounter.cjs.map +1 -1
  21. package/dist/components/ActivityMarker/UnreadCounter.js +16 -8
  22. package/dist/components/ActivityMarker/UnreadCounter.js.map +1 -1
  23. package/dist/components/ActivityMarker/UnreadCounter.module.cjs +6 -0
  24. package/dist/components/ActivityMarker/UnreadCounter.module.cjs.map +1 -0
  25. package/dist/components/ActivityMarker/UnreadCounter.module.js +6 -0
  26. package/dist/components/ActivityMarker/UnreadCounter.module.js.map +1 -0
  27. package/dist/components/Alert/Alert.cjs +72 -61
  28. package/dist/components/Alert/Alert.cjs.map +1 -1
  29. package/dist/components/Alert/Alert.js +60 -56
  30. package/dist/components/Alert/Alert.js.map +1 -1
  31. package/dist/components/Alert/Alert.module.cjs +18 -0
  32. package/dist/components/Alert/Alert.module.cjs.map +1 -0
  33. package/dist/components/Alert/Alert.module.js +18 -0
  34. package/dist/components/Alert/Alert.module.js.map +1 -0
  35. package/dist/components/Avatar/Avatar.cjs +48 -55
  36. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  37. package/dist/components/Avatar/Avatar.js +44 -54
  38. package/dist/components/Avatar/Avatar.js.map +1 -1
  39. package/dist/components/Avatar/Avatar.module.cjs +11 -0
  40. package/dist/components/Avatar/Avatar.module.cjs.map +1 -0
  41. package/dist/components/Avatar/Avatar.module.js +11 -0
  42. package/dist/components/Avatar/Avatar.module.js.map +1 -0
  43. package/dist/components/Avatar/AvatarStack.cjs +50 -27
  44. package/dist/components/Avatar/AvatarStack.cjs.map +1 -1
  45. package/dist/components/Avatar/AvatarStack.js +46 -26
  46. package/dist/components/Avatar/AvatarStack.js.map +1 -1
  47. package/dist/components/Avatar/avatar-clip.mask.cjs +6 -0
  48. package/dist/components/Avatar/avatar-clip.mask.cjs.map +1 -0
  49. package/dist/components/Avatar/avatar-clip.mask.js +6 -0
  50. package/dist/components/Avatar/avatar-clip.mask.js.map +1 -0
  51. package/dist/components/Avatar/useIdColorHash.cjs +13 -9
  52. package/dist/components/Avatar/useIdColorHash.cjs.map +1 -1
  53. package/dist/components/Avatar/useIdColorHash.js +14 -10
  54. package/dist/components/Avatar/useIdColorHash.js.map +1 -1
  55. package/dist/components/Badge/Badge.cjs +24 -24
  56. package/dist/components/Badge/Badge.cjs.map +1 -1
  57. package/dist/components/Badge/Badge.js +21 -24
  58. package/dist/components/Badge/Badge.js.map +1 -1
  59. package/dist/components/Badge/Badge.module.cjs +5 -0
  60. package/dist/components/Badge/Badge.module.cjs.map +1 -0
  61. package/dist/components/Badge/Badge.module.js +5 -0
  62. package/dist/components/Badge/Badge.module.js.map +1 -0
  63. package/dist/components/Breadcrumb/Breadcrumb.cjs +56 -54
  64. package/dist/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
  65. package/dist/components/Breadcrumb/Breadcrumb.js +51 -53
  66. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
  67. package/dist/components/Breadcrumb/Breadcrumb.module.cjs +9 -0
  68. package/dist/components/Breadcrumb/Breadcrumb.module.cjs.map +1 -0
  69. package/dist/components/Breadcrumb/Breadcrumb.module.js +9 -0
  70. package/dist/components/Breadcrumb/Breadcrumb.module.js.map +1 -0
  71. package/dist/components/Button/Button.cjs +40 -52
  72. package/dist/components/Button/Button.cjs.map +1 -1
  73. package/dist/components/Button/Button.d.ts +2 -1
  74. package/dist/components/Button/Button.d.ts.map +1 -1
  75. package/dist/components/Button/Button.js +36 -51
  76. package/dist/components/Button/Button.js.map +1 -1
  77. package/dist/components/Button/Button.module.cjs +13 -0
  78. package/dist/components/Button/Button.module.cjs.map +1 -0
  79. package/dist/components/Button/Button.module.js +13 -0
  80. package/dist/components/Button/Button.module.js.map +1 -0
  81. package/dist/components/Button/IconButton/IconButton.cjs +43 -52
  82. package/dist/components/Button/IconButton/IconButton.cjs.map +1 -1
  83. package/dist/components/Button/IconButton/IconButton.js +38 -50
  84. package/dist/components/Button/IconButton/IconButton.js.map +1 -1
  85. package/dist/components/Button/IconButton/IconButton.module.cjs +11 -0
  86. package/dist/components/Button/IconButton/IconButton.module.cjs.map +1 -0
  87. package/dist/components/Button/IconButton/IconButton.module.js +11 -0
  88. package/dist/components/Button/IconButton/IconButton.module.js.map +1 -0
  89. package/dist/components/Button/UnstyledButton.cjs +36 -45
  90. package/dist/components/Button/UnstyledButton.cjs.map +1 -1
  91. package/dist/components/Button/UnstyledButton.js +34 -45
  92. package/dist/components/Button/UnstyledButton.js.map +1 -1
  93. package/dist/components/ChatFilter/ChatFilter.cjs +23 -20
  94. package/dist/components/ChatFilter/ChatFilter.cjs.map +1 -1
  95. package/dist/components/ChatFilter/ChatFilter.js +21 -20
  96. package/dist/components/ChatFilter/ChatFilter.js.map +1 -1
  97. package/dist/components/ChatFilter/ChatFilter.module.cjs +6 -0
  98. package/dist/components/ChatFilter/ChatFilter.module.cjs.map +1 -0
  99. package/dist/components/ChatFilter/ChatFilter.module.js +6 -0
  100. package/dist/components/ChatFilter/ChatFilter.module.js.map +1 -0
  101. package/dist/components/Dropdown/Dropdown.cjs +231 -249
  102. package/dist/components/Dropdown/Dropdown.cjs.map +1 -1
  103. package/dist/components/Dropdown/Dropdown.js +225 -249
  104. package/dist/components/Dropdown/Dropdown.js.map +1 -1
  105. package/dist/components/Dropdown/Dropdown.module.cjs +13 -0
  106. package/dist/components/Dropdown/Dropdown.module.cjs.map +1 -0
  107. package/dist/components/Dropdown/Dropdown.module.js +13 -0
  108. package/dist/components/Dropdown/Dropdown.module.js.map +1 -0
  109. package/dist/components/Form/Controls/Action/Action.cjs +51 -31
  110. package/dist/components/Form/Controls/Action/Action.cjs.map +1 -1
  111. package/dist/components/Form/Controls/Action/Action.js +46 -30
  112. package/dist/components/Form/Controls/Action/Action.js.map +1 -1
  113. package/dist/components/Form/Controls/Action/Action.module.cjs +9 -0
  114. package/dist/components/Form/Controls/Action/Action.module.cjs.map +1 -0
  115. package/dist/components/Form/Controls/Action/Action.module.js +9 -0
  116. package/dist/components/Form/Controls/Action/Action.module.js.map +1 -0
  117. package/dist/components/Form/Controls/Checkbox/Checkbox.cjs +42 -20
  118. package/dist/components/Form/Controls/Checkbox/Checkbox.cjs.map +1 -1
  119. package/dist/components/Form/Controls/Checkbox/Checkbox.js +36 -19
  120. package/dist/components/Form/Controls/Checkbox/Checkbox.js.map +1 -1
  121. package/dist/components/Form/Controls/Checkbox/Checkbox.module.cjs +9 -0
  122. package/dist/components/Form/Controls/Checkbox/Checkbox.module.cjs.map +1 -0
  123. package/dist/components/Form/Controls/Checkbox/Checkbox.module.js +9 -0
  124. package/dist/components/Form/Controls/Checkbox/Checkbox.module.js.map +1 -0
  125. package/dist/components/Form/Controls/EditInPlace/EditInPlace.cjs +171 -203
  126. package/dist/components/Form/Controls/EditInPlace/EditInPlace.cjs.map +1 -1
  127. package/dist/components/Form/Controls/EditInPlace/EditInPlace.js +166 -202
  128. package/dist/components/Form/Controls/EditInPlace/EditInPlace.js.map +1 -1
  129. package/dist/components/Form/Controls/EditInPlace/EditInPlace.module.cjs +8 -0
  130. package/dist/components/Form/Controls/EditInPlace/EditInPlace.module.cjs.map +1 -0
  131. package/dist/components/Form/Controls/EditInPlace/EditInPlace.module.js +8 -0
  132. package/dist/components/Form/Controls/EditInPlace/EditInPlace.module.js.map +1 -0
  133. package/dist/components/Form/Controls/MFA/MFA.cjs +60 -65
  134. package/dist/components/Form/Controls/MFA/MFA.cjs.map +1 -1
  135. package/dist/components/Form/Controls/MFA/MFA.js +56 -65
  136. package/dist/components/Form/Controls/MFA/MFA.js.map +1 -1
  137. package/dist/components/Form/Controls/MFA/MFA.module.cjs +9 -0
  138. package/dist/components/Form/Controls/MFA/MFA.module.cjs.map +1 -0
  139. package/dist/components/Form/Controls/MFA/MFA.module.js +9 -0
  140. package/dist/components/Form/Controls/MFA/MFA.module.js.map +1 -0
  141. package/dist/components/Form/Controls/Password/Password.cjs +52 -37
  142. package/dist/components/Form/Controls/Password/Password.cjs.map +1 -1
  143. package/dist/components/Form/Controls/Password/Password.js +45 -35
  144. package/dist/components/Form/Controls/Password/Password.js.map +1 -1
  145. package/dist/components/Form/Controls/Radio/Radio.cjs +33 -16
  146. package/dist/components/Form/Controls/Radio/Radio.cjs.map +1 -1
  147. package/dist/components/Form/Controls/Radio/Radio.js +28 -15
  148. package/dist/components/Form/Controls/Radio/Radio.js.map +1 -1
  149. package/dist/components/Form/Controls/Radio/Radio.module.cjs +9 -0
  150. package/dist/components/Form/Controls/Radio/Radio.module.cjs.map +1 -0
  151. package/dist/components/Form/Controls/Radio/Radio.module.js +9 -0
  152. package/dist/components/Form/Controls/Radio/Radio.module.js.map +1 -0
  153. package/dist/components/Form/Controls/SettingsToggle/SettingsToggle.cjs +47 -29
  154. package/dist/components/Form/Controls/SettingsToggle/SettingsToggle.cjs.map +1 -1
  155. package/dist/components/Form/Controls/SettingsToggle/SettingsToggle.js +43 -28
  156. package/dist/components/Form/Controls/SettingsToggle/SettingsToggle.js.map +1 -1
  157. package/dist/components/Form/Controls/Text/Text.cjs +34 -18
  158. package/dist/components/Form/Controls/Text/Text.cjs.map +1 -1
  159. package/dist/components/Form/Controls/Text/Text.js +30 -18
  160. package/dist/components/Form/Controls/Text/Text.js.map +1 -1
  161. package/dist/components/Form/Controls/Text/Text.module.cjs +8 -0
  162. package/dist/components/Form/Controls/Text/Text.module.cjs.map +1 -0
  163. package/dist/components/Form/Controls/Text/Text.module.js +8 -0
  164. package/dist/components/Form/Controls/Text/Text.module.js.map +1 -0
  165. package/dist/components/Form/Controls/Toggle/Toggle.cjs +37 -25
  166. package/dist/components/Form/Controls/Toggle/Toggle.cjs.map +1 -1
  167. package/dist/components/Form/Controls/Toggle/Toggle.js +32 -24
  168. package/dist/components/Form/Controls/Toggle/Toggle.js.map +1 -1
  169. package/dist/components/Form/Controls/Toggle/Toggle.module.cjs +9 -0
  170. package/dist/components/Form/Controls/Toggle/Toggle.module.cjs.map +1 -0
  171. package/dist/components/Form/Controls/Toggle/Toggle.module.js +9 -0
  172. package/dist/components/Form/Controls/Toggle/Toggle.module.js.map +1 -0
  173. package/dist/components/Form/Field.cjs +25 -14
  174. package/dist/components/Form/Field.cjs.map +1 -1
  175. package/dist/components/Form/Field.js +22 -14
  176. package/dist/components/Form/Field.js.map +1 -1
  177. package/dist/components/Form/InlineField.cjs +27 -17
  178. package/dist/components/Form/InlineField.cjs.map +1 -1
  179. package/dist/components/Form/InlineField.js +23 -16
  180. package/dist/components/Form/InlineField.js.map +1 -1
  181. package/dist/components/Form/Label.cjs +24 -11
  182. package/dist/components/Form/Label.cjs.map +1 -1
  183. package/dist/components/Form/Label.js +21 -11
  184. package/dist/components/Form/Label.js.map +1 -1
  185. package/dist/components/Form/Message.cjs +61 -40
  186. package/dist/components/Form/Message.cjs.map +1 -1
  187. package/dist/components/Form/Message.js +54 -41
  188. package/dist/components/Form/Message.js.map +1 -1
  189. package/dist/components/Form/Root.cjs +25 -14
  190. package/dist/components/Form/Root.cjs.map +1 -1
  191. package/dist/components/Form/Root.js +22 -14
  192. package/dist/components/Form/Root.js.map +1 -1
  193. package/dist/components/Form/Submit.cjs +23 -12
  194. package/dist/components/Form/Submit.cjs.map +1 -1
  195. package/dist/components/Form/Submit.js +21 -12
  196. package/dist/components/Form/Submit.js.map +1 -1
  197. package/dist/components/Form/form.module.cjs +21 -0
  198. package/dist/components/Form/form.module.cjs.map +1 -0
  199. package/dist/components/Form/form.module.js +21 -0
  200. package/dist/components/Form/form.module.js.map +1 -0
  201. package/dist/components/Form/index.cjs +55 -51
  202. package/dist/components/Form/index.cjs.map +1 -1
  203. package/dist/components/Form/index.js +48 -43
  204. package/dist/components/Form/index.js.map +1 -1
  205. package/dist/components/Glass/Glass.cjs +20 -10
  206. package/dist/components/Glass/Glass.cjs.map +1 -1
  207. package/dist/components/Glass/Glass.js +17 -10
  208. package/dist/components/Glass/Glass.js.map +1 -1
  209. package/dist/components/Glass/Glass.module.cjs +5 -0
  210. package/dist/components/Glass/Glass.module.cjs.map +1 -0
  211. package/dist/components/Glass/Glass.module.js +5 -0
  212. package/dist/components/Glass/Glass.module.js.map +1 -0
  213. package/dist/components/Icon/BigIcon/BigIcon.cjs +18 -25
  214. package/dist/components/Icon/BigIcon/BigIcon.cjs.map +1 -1
  215. package/dist/components/Icon/BigIcon/BigIcon.d.ts +8 -12
  216. package/dist/components/Icon/BigIcon/BigIcon.d.ts.map +1 -1
  217. package/dist/components/Icon/BigIcon/BigIcon.js +15 -25
  218. package/dist/components/Icon/BigIcon/BigIcon.js.map +1 -1
  219. package/dist/components/Icon/BigIcon/BigIcon.module.cjs +6 -0
  220. package/dist/components/Icon/BigIcon/BigIcon.module.cjs.map +1 -0
  221. package/dist/components/Icon/BigIcon/BigIcon.module.js +6 -0
  222. package/dist/components/Icon/BigIcon/BigIcon.module.js.map +1 -0
  223. package/dist/components/Icon/IndicatorIcon/IndicatorIcon.cjs +22 -22
  224. package/dist/components/Icon/IndicatorIcon/IndicatorIcon.cjs.map +1 -1
  225. package/dist/components/Icon/IndicatorIcon/IndicatorIcon.js +19 -22
  226. package/dist/components/Icon/IndicatorIcon/IndicatorIcon.js.map +1 -1
  227. package/dist/components/Icon/IndicatorIcon/IndicatorIcon.module.cjs +6 -0
  228. package/dist/components/Icon/IndicatorIcon/IndicatorIcon.module.cjs.map +1 -0
  229. package/dist/components/Icon/IndicatorIcon/IndicatorIcon.module.js +6 -0
  230. package/dist/components/Icon/IndicatorIcon/IndicatorIcon.module.js.map +1 -0
  231. package/dist/components/InlineSpinner/InlineSpinner.cjs +24 -21
  232. package/dist/components/InlineSpinner/InlineSpinner.cjs.map +1 -1
  233. package/dist/components/InlineSpinner/InlineSpinner.js +19 -20
  234. package/dist/components/InlineSpinner/InlineSpinner.js.map +1 -1
  235. package/dist/components/InlineSpinner/InlineSpinner.module.cjs +8 -0
  236. package/dist/components/InlineSpinner/InlineSpinner.module.cjs.map +1 -0
  237. package/dist/components/InlineSpinner/InlineSpinner.module.js +8 -0
  238. package/dist/components/InlineSpinner/InlineSpinner.module.js.map +1 -0
  239. package/dist/components/Link/Link.cjs +25 -23
  240. package/dist/components/Link/Link.cjs.map +1 -1
  241. package/dist/components/Link/Link.d.ts +5 -4
  242. package/dist/components/Link/Link.d.ts.map +1 -1
  243. package/dist/components/Link/Link.js +22 -23
  244. package/dist/components/Link/Link.js.map +1 -1
  245. package/dist/components/Link/Link.module.cjs +5 -0
  246. package/dist/components/Link/Link.module.cjs.map +1 -0
  247. package/dist/components/Link/Link.module.js +5 -0
  248. package/dist/components/Link/Link.module.js.map +1 -0
  249. package/dist/components/Menu/CheckboxMenuItem.cjs +37 -39
  250. package/dist/components/Menu/CheckboxMenuItem.cjs.map +1 -1
  251. package/dist/components/Menu/CheckboxMenuItem.js +34 -38
  252. package/dist/components/Menu/CheckboxMenuItem.js.map +1 -1
  253. package/dist/components/Menu/ContextMenu.cjs +71 -62
  254. package/dist/components/Menu/ContextMenu.cjs.map +1 -1
  255. package/dist/components/Menu/ContextMenu.js +66 -60
  256. package/dist/components/Menu/ContextMenu.js.map +1 -1
  257. package/dist/components/Menu/DrawerMenu.cjs +27 -22
  258. package/dist/components/Menu/DrawerMenu.cjs.map +1 -1
  259. package/dist/components/Menu/DrawerMenu.js +23 -21
  260. package/dist/components/Menu/DrawerMenu.js.map +1 -1
  261. package/dist/components/Menu/DrawerMenu.module.cjs +9 -0
  262. package/dist/components/Menu/DrawerMenu.module.cjs.map +1 -0
  263. package/dist/components/Menu/DrawerMenu.module.js +9 -0
  264. package/dist/components/Menu/DrawerMenu.module.js.map +1 -0
  265. package/dist/components/Menu/FloatingMenu.cjs +31 -28
  266. package/dist/components/Menu/FloatingMenu.cjs.map +1 -1
  267. package/dist/components/Menu/FloatingMenu.js +27 -27
  268. package/dist/components/Menu/FloatingMenu.js.map +1 -1
  269. package/dist/components/Menu/FloatingMenu.module.cjs +14 -0
  270. package/dist/components/Menu/FloatingMenu.module.cjs.map +1 -0
  271. package/dist/components/Menu/FloatingMenu.module.js +14 -0
  272. package/dist/components/Menu/FloatingMenu.module.js.map +1 -0
  273. package/dist/components/Menu/Menu.cjs +68 -56
  274. package/dist/components/Menu/Menu.cjs.map +1 -1
  275. package/dist/components/Menu/Menu.js +63 -54
  276. package/dist/components/Menu/Menu.js.map +1 -1
  277. package/dist/components/Menu/MenuContext.cjs +10 -5
  278. package/dist/components/Menu/MenuContext.cjs.map +1 -1
  279. package/dist/components/Menu/MenuContext.js +10 -5
  280. package/dist/components/Menu/MenuContext.js.map +1 -1
  281. package/dist/components/Menu/MenuItem.cjs +83 -95
  282. package/dist/components/Menu/MenuItem.cjs.map +1 -1
  283. package/dist/components/Menu/MenuItem.js +77 -93
  284. package/dist/components/Menu/MenuItem.js.map +1 -1
  285. package/dist/components/Menu/MenuItem.module.cjs +20 -0
  286. package/dist/components/Menu/MenuItem.module.cjs.map +1 -0
  287. package/dist/components/Menu/MenuItem.module.js +20 -0
  288. package/dist/components/Menu/MenuItem.module.js.map +1 -0
  289. package/dist/components/Menu/MenuTitle.cjs +21 -14
  290. package/dist/components/Menu/MenuTitle.cjs.map +1 -1
  291. package/dist/components/Menu/MenuTitle.js +17 -13
  292. package/dist/components/Menu/MenuTitle.js.map +1 -1
  293. package/dist/components/Menu/MenuTitle.module.cjs +6 -0
  294. package/dist/components/Menu/MenuTitle.module.cjs.map +1 -0
  295. package/dist/components/Menu/MenuTitle.module.js +6 -0
  296. package/dist/components/Menu/MenuTitle.module.js.map +1 -0
  297. package/dist/components/Menu/RadioMenuItem.cjs +35 -37
  298. package/dist/components/Menu/RadioMenuItem.cjs.map +1 -1
  299. package/dist/components/Menu/RadioMenuItem.js +32 -36
  300. package/dist/components/Menu/RadioMenuItem.js.map +1 -1
  301. package/dist/components/Menu/ToggleMenuItem.cjs +39 -41
  302. package/dist/components/Menu/ToggleMenuItem.cjs.map +1 -1
  303. package/dist/components/Menu/ToggleMenuItem.js +36 -40
  304. package/dist/components/Menu/ToggleMenuItem.js.map +1 -1
  305. package/dist/components/Nav/Nav.module.cjs +11 -0
  306. package/dist/components/Nav/Nav.module.cjs.map +1 -0
  307. package/dist/components/Nav/Nav.module.js +11 -0
  308. package/dist/components/Nav/Nav.module.js.map +1 -0
  309. package/dist/components/Nav/NavBar.cjs +47 -28
  310. package/dist/components/Nav/NavBar.cjs.map +1 -1
  311. package/dist/components/Nav/NavBar.js +44 -28
  312. package/dist/components/Nav/NavBar.js.map +1 -1
  313. package/dist/components/Nav/NavItem.cjs +70 -72
  314. package/dist/components/Nav/NavItem.cjs.map +1 -1
  315. package/dist/components/Nav/NavItem.js +68 -72
  316. package/dist/components/Nav/NavItem.js.map +1 -1
  317. package/dist/components/PageHeader/PageHeader.d.ts +19 -0
  318. package/dist/components/PageHeader/PageHeader.d.ts.map +1 -0
  319. package/dist/components/Progress/Progress.cjs +43 -56
  320. package/dist/components/Progress/Progress.cjs.map +1 -1
  321. package/dist/components/Progress/Progress.d.ts +2 -1
  322. package/dist/components/Progress/Progress.d.ts.map +1 -1
  323. package/dist/components/Progress/Progress.js +40 -56
  324. package/dist/components/Progress/Progress.js.map +1 -1
  325. package/dist/components/Progress/Progress.module.cjs +11 -0
  326. package/dist/components/Progress/Progress.module.cjs.map +1 -0
  327. package/dist/components/Progress/Progress.module.js +11 -0
  328. package/dist/components/Progress/Progress.module.js.map +1 -0
  329. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncement.cjs +108 -115
  330. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncement.cjs.map +1 -1
  331. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncement.js +105 -114
  332. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncement.js.map +1 -1
  333. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncement.module.cjs +11 -0
  334. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncement.module.cjs.map +1 -0
  335. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncement.module.js +11 -0
  336. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncement.module.js.map +1 -0
  337. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncementContext.cjs +16 -12
  338. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncementContext.cjs.map +1 -1
  339. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncementContext.js +15 -13
  340. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncementContext.js.map +1 -1
  341. package/dist/components/ReleaseAnnouncement/useReleaseAnnouncement.cjs +52 -62
  342. package/dist/components/ReleaseAnnouncement/useReleaseAnnouncement.cjs.map +1 -1
  343. package/dist/components/ReleaseAnnouncement/useReleaseAnnouncement.js +52 -63
  344. package/dist/components/ReleaseAnnouncement/useReleaseAnnouncement.js.map +1 -1
  345. package/dist/components/Search/Search.cjs +43 -36
  346. package/dist/components/Search/Search.cjs.map +1 -1
  347. package/dist/components/Search/Search.js +37 -34
  348. package/dist/components/Search/Search.js.map +1 -1
  349. package/dist/components/Search/Search.module.cjs +9 -0
  350. package/dist/components/Search/Search.module.cjs.map +1 -0
  351. package/dist/components/Search/Search.module.js +9 -0
  352. package/dist/components/Search/Search.module.js.map +1 -0
  353. package/dist/components/Separator/Separator.cjs +34 -57
  354. package/dist/components/Separator/Separator.cjs.map +1 -1
  355. package/dist/components/Separator/Separator.js +29 -39
  356. package/dist/components/Separator/Separator.js.map +1 -1
  357. package/dist/components/Separator/Separator.module.cjs +5 -0
  358. package/dist/components/Separator/Separator.module.cjs.map +1 -0
  359. package/dist/components/Separator/Separator.module.js +5 -0
  360. package/dist/components/Separator/Separator.module.js.map +1 -0
  361. package/dist/components/Toast/Toast.cjs +19 -10
  362. package/dist/components/Toast/Toast.cjs.map +1 -1
  363. package/dist/components/Toast/Toast.js +15 -9
  364. package/dist/components/Toast/Toast.js.map +1 -1
  365. package/dist/components/Toast/Toast.module.cjs +6 -0
  366. package/dist/components/Toast/Toast.module.cjs.map +1 -0
  367. package/dist/components/Toast/Toast.module.js +6 -0
  368. package/dist/components/Toast/Toast.module.js.map +1 -0
  369. package/dist/components/Tooltip/Tooltip.cjs +103 -118
  370. package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
  371. package/dist/components/Tooltip/Tooltip.js +99 -117
  372. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  373. package/dist/components/Tooltip/Tooltip.module.cjs +10 -0
  374. package/dist/components/Tooltip/Tooltip.module.cjs.map +1 -0
  375. package/dist/components/Tooltip/Tooltip.module.js +10 -0
  376. package/dist/components/Tooltip/Tooltip.module.js.map +1 -0
  377. package/dist/components/Tooltip/TooltipContext.cjs +16 -10
  378. package/dist/components/Tooltip/TooltipContext.cjs.map +1 -1
  379. package/dist/components/Tooltip/TooltipContext.js +15 -11
  380. package/dist/components/Tooltip/TooltipContext.js.map +1 -1
  381. package/dist/components/Tooltip/TooltipProvider.cjs +22 -7
  382. package/dist/components/Tooltip/TooltipProvider.cjs.map +1 -1
  383. package/dist/components/Tooltip/TooltipProvider.js +19 -7
  384. package/dist/components/Tooltip/TooltipProvider.js.map +1 -1
  385. package/dist/components/Tooltip/useTooltip.cjs +112 -139
  386. package/dist/components/Tooltip/useTooltip.cjs.map +1 -1
  387. package/dist/components/Tooltip/useTooltip.js +111 -139
  388. package/dist/components/Tooltip/useTooltip.js.map +1 -1
  389. package/dist/components/Typography/Body.cjs +17 -10
  390. package/dist/components/Typography/Body.cjs.map +1 -1
  391. package/dist/components/Typography/Body.js +15 -10
  392. package/dist/components/Typography/Body.js.map +1 -1
  393. package/dist/components/Typography/Heading.cjs +92 -20
  394. package/dist/components/Typography/Heading.cjs.map +1 -1
  395. package/dist/components/Typography/Heading.d.ts +2 -1
  396. package/dist/components/Typography/Heading.d.ts.map +1 -1
  397. package/dist/components/Typography/Heading.js +89 -25
  398. package/dist/components/Typography/Heading.js.map +1 -1
  399. package/dist/components/Typography/Text.cjs +20 -7
  400. package/dist/components/Typography/Text.cjs.map +1 -1
  401. package/dist/components/Typography/Text.d.ts +2 -1
  402. package/dist/components/Typography/Text.d.ts.map +1 -1
  403. package/dist/components/Typography/Text.js +18 -7
  404. package/dist/components/Typography/Text.js.map +1 -1
  405. package/dist/components/Typography/Typography.cjs +17 -28
  406. package/dist/components/Typography/Typography.cjs.map +1 -1
  407. package/dist/components/Typography/Typography.d.ts +2 -1
  408. package/dist/components/Typography/Typography.d.ts.map +1 -1
  409. package/dist/components/Typography/Typography.js +14 -28
  410. package/dist/components/Typography/Typography.js.map +1 -1
  411. package/dist/components/Typography/Typography.module.cjs +30 -0
  412. package/dist/components/Typography/Typography.module.cjs.map +1 -0
  413. package/dist/components/Typography/Typography.module.js +30 -0
  414. package/dist/components/Typography/Typography.module.js.map +1 -0
  415. package/dist/components/VisualList/VisualList.cjs +20 -12
  416. package/dist/components/VisualList/VisualList.cjs.map +1 -1
  417. package/dist/components/VisualList/VisualList.js +17 -12
  418. package/dist/components/VisualList/VisualList.js.map +1 -1
  419. package/dist/components/VisualList/VisualList.module.cjs +6 -0
  420. package/dist/components/VisualList/VisualList.module.cjs.map +1 -0
  421. package/dist/components/VisualList/VisualList.module.js +6 -0
  422. package/dist/components/VisualList/VisualList.module.js.map +1 -0
  423. package/dist/components/VisualList/VisualListItem.cjs +28 -36
  424. package/dist/components/VisualList/VisualListItem.cjs.map +1 -1
  425. package/dist/components/VisualList/VisualListItem.js +25 -36
  426. package/dist/components/VisualList/VisualListItem.js.map +1 -1
  427. package/dist/components/VisualList/VisualListItem.module.cjs +11 -0
  428. package/dist/components/VisualList/VisualListItem.module.cjs.map +1 -0
  429. package/dist/components/VisualList/VisualListItem.module.js +11 -0
  430. package/dist/components/VisualList/VisualListItem.module.js.map +1 -0
  431. package/dist/index.cjs +147 -139
  432. package/dist/index.js +36 -116
  433. package/dist/style.css +1609 -1601
  434. package/dist/utils/platform.cjs +12 -11
  435. package/dist/utils/platform.cjs.map +1 -1
  436. package/dist/utils/platform.js +13 -12
  437. package/dist/utils/platform.js.map +1 -1
  438. package/dist/utils/size.d.ts +5 -0
  439. package/dist/utils/size.d.ts.map +1 -0
  440. package/dist/utils/string.cjs +19 -19
  441. package/dist/utils/string.cjs.map +1 -1
  442. package/dist/utils/string.js +20 -20
  443. package/dist/utils/string.js.map +1 -1
  444. package/package.json +15 -15
  445. package/src/components/Avatar/Avatar.module.css +1 -1
  446. package/src/components/Avatar/avatar-clip.mask.svg +2 -6
  447. package/src/components/Breadcrumb/Breadcrumb.module.css +1 -1
  448. package/src/components/Breadcrumb/Breadcrumb.tsx +1 -1
  449. package/src/components/Button/Button.tsx +2 -1
  450. package/src/components/Dropdown/Dropdown.module.css +1 -1
  451. package/src/components/Icon/BigIcon/BigIcon.module.css +11 -8
  452. package/src/components/Icon/BigIcon/BigIcon.tsx +11 -18
  453. package/src/components/Link/Link.module.css +5 -1
  454. package/src/components/Link/Link.tsx +6 -5
  455. package/src/components/Nav/Nav.module.css +1 -1
  456. package/src/components/PageHeader/PageHeader.module.css +41 -0
  457. package/src/components/PageHeader/PageHeader.tsx +67 -0
  458. package/src/components/Progress/Progress.tsx +2 -1
  459. package/src/components/Separator/Separator.module.css +2 -2
  460. package/src/components/Typography/Heading.tsx +2 -1
  461. package/src/components/Typography/Text.tsx +2 -1
  462. package/src/components/Typography/Typography.tsx +2 -1
  463. package/src/components/VisualList/VisualList.module.css +1 -1
  464. package/src/utils/size.ts +11 -0
  465. package/tsconfig.json +1 -0
  466. package/dist/components/ActivityMarker/Pill.module.css.cjs +0 -9
  467. package/dist/components/ActivityMarker/Pill.module.css.cjs.map +0 -1
  468. package/dist/components/ActivityMarker/Pill.module.css.js +0 -9
  469. package/dist/components/ActivityMarker/Pill.module.css.js.map +0 -1
  470. package/dist/components/ActivityMarker/Unread.module.css.cjs +0 -9
  471. package/dist/components/ActivityMarker/Unread.module.css.cjs.map +0 -1
  472. package/dist/components/ActivityMarker/Unread.module.css.js +0 -9
  473. package/dist/components/ActivityMarker/Unread.module.css.js.map +0 -1
  474. package/dist/components/ActivityMarker/UnreadCounter.module.css.cjs +0 -7
  475. package/dist/components/ActivityMarker/UnreadCounter.module.css.cjs.map +0 -1
  476. package/dist/components/ActivityMarker/UnreadCounter.module.css.js +0 -7
  477. package/dist/components/ActivityMarker/UnreadCounter.module.css.js.map +0 -1
  478. package/dist/components/Alert/Alert.module.css.cjs +0 -19
  479. package/dist/components/Alert/Alert.module.css.cjs.map +0 -1
  480. package/dist/components/Alert/Alert.module.css.js +0 -19
  481. package/dist/components/Alert/Alert.module.css.js.map +0 -1
  482. package/dist/components/Avatar/Avatar.module.css.cjs +0 -15
  483. package/dist/components/Avatar/Avatar.module.css.cjs.map +0 -1
  484. package/dist/components/Avatar/Avatar.module.css.js +0 -15
  485. package/dist/components/Avatar/Avatar.module.css.js.map +0 -1
  486. package/dist/components/Avatar/avatar-clip.mask.svg.cjs +0 -5
  487. package/dist/components/Avatar/avatar-clip.mask.svg.cjs.map +0 -1
  488. package/dist/components/Avatar/avatar-clip.mask.svg.js +0 -5
  489. package/dist/components/Avatar/avatar-clip.mask.svg.js.map +0 -1
  490. package/dist/components/Badge/Badge.module.css.cjs +0 -9
  491. package/dist/components/Badge/Badge.module.css.cjs.map +0 -1
  492. package/dist/components/Badge/Badge.module.css.js +0 -9
  493. package/dist/components/Badge/Badge.module.css.js.map +0 -1
  494. package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +0 -13
  495. package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs.map +0 -1
  496. package/dist/components/Breadcrumb/Breadcrumb.module.css.js +0 -13
  497. package/dist/components/Breadcrumb/Breadcrumb.module.css.js.map +0 -1
  498. package/dist/components/Button/Button.module.css.cjs +0 -14
  499. package/dist/components/Button/Button.module.css.cjs.map +0 -1
  500. package/dist/components/Button/Button.module.css.js +0 -14
  501. package/dist/components/Button/Button.module.css.js.map +0 -1
  502. package/dist/components/Button/IconButton/IconButton.module.css.cjs +0 -11
  503. package/dist/components/Button/IconButton/IconButton.module.css.cjs.map +0 -1
  504. package/dist/components/Button/IconButton/IconButton.module.css.js +0 -11
  505. package/dist/components/Button/IconButton/IconButton.module.css.js.map +0 -1
  506. package/dist/components/ChatFilter/ChatFilter.module.css.cjs +0 -7
  507. package/dist/components/ChatFilter/ChatFilter.module.css.cjs.map +0 -1
  508. package/dist/components/ChatFilter/ChatFilter.module.css.js +0 -7
  509. package/dist/components/ChatFilter/ChatFilter.module.css.js.map +0 -1
  510. package/dist/components/Dropdown/Dropdown.module.css.cjs +0 -27
  511. package/dist/components/Dropdown/Dropdown.module.css.cjs.map +0 -1
  512. package/dist/components/Dropdown/Dropdown.module.css.js +0 -27
  513. package/dist/components/Dropdown/Dropdown.module.css.js.map +0 -1
  514. package/dist/components/Form/Controls/Action/Action.module.css.cjs +0 -15
  515. package/dist/components/Form/Controls/Action/Action.module.css.cjs.map +0 -1
  516. package/dist/components/Form/Controls/Action/Action.module.css.js +0 -15
  517. package/dist/components/Form/Controls/Action/Action.module.css.js.map +0 -1
  518. package/dist/components/Form/Controls/Checkbox/Checkbox.module.css.cjs +0 -15
  519. package/dist/components/Form/Controls/Checkbox/Checkbox.module.css.cjs.map +0 -1
  520. package/dist/components/Form/Controls/Checkbox/Checkbox.module.css.js +0 -15
  521. package/dist/components/Form/Controls/Checkbox/Checkbox.module.css.js.map +0 -1
  522. package/dist/components/Form/Controls/EditInPlace/EditInPlace.module.css.cjs +0 -10
  523. package/dist/components/Form/Controls/EditInPlace/EditInPlace.module.css.cjs.map +0 -1
  524. package/dist/components/Form/Controls/EditInPlace/EditInPlace.module.css.js +0 -10
  525. package/dist/components/Form/Controls/EditInPlace/EditInPlace.module.css.js.map +0 -1
  526. package/dist/components/Form/Controls/MFA/MFA.module.css.cjs +0 -15
  527. package/dist/components/Form/Controls/MFA/MFA.module.css.cjs.map +0 -1
  528. package/dist/components/Form/Controls/MFA/MFA.module.css.js +0 -15
  529. package/dist/components/Form/Controls/MFA/MFA.module.css.js.map +0 -1
  530. package/dist/components/Form/Controls/Radio/Radio.module.css.cjs +0 -15
  531. package/dist/components/Form/Controls/Radio/Radio.module.css.cjs.map +0 -1
  532. package/dist/components/Form/Controls/Radio/Radio.module.css.js +0 -15
  533. package/dist/components/Form/Controls/Radio/Radio.module.css.js.map +0 -1
  534. package/dist/components/Form/Controls/Text/Text.module.css.cjs +0 -10
  535. package/dist/components/Form/Controls/Text/Text.module.css.cjs.map +0 -1
  536. package/dist/components/Form/Controls/Text/Text.module.css.js +0 -10
  537. package/dist/components/Form/Controls/Text/Text.module.css.js.map +0 -1
  538. package/dist/components/Form/Controls/Toggle/Toggle.module.css.cjs +0 -15
  539. package/dist/components/Form/Controls/Toggle/Toggle.module.css.cjs.map +0 -1
  540. package/dist/components/Form/Controls/Toggle/Toggle.module.css.js +0 -15
  541. package/dist/components/Form/Controls/Toggle/Toggle.module.css.js.map +0 -1
  542. package/dist/components/Form/form.module.css.cjs +0 -24
  543. package/dist/components/Form/form.module.css.cjs.map +0 -1
  544. package/dist/components/Form/form.module.css.js +0 -24
  545. package/dist/components/Form/form.module.css.js.map +0 -1
  546. package/dist/components/Glass/Glass.module.css.cjs +0 -9
  547. package/dist/components/Glass/Glass.module.css.cjs.map +0 -1
  548. package/dist/components/Glass/Glass.module.css.js +0 -9
  549. package/dist/components/Glass/Glass.module.css.js.map +0 -1
  550. package/dist/components/Icon/BigIcon/BigIcon.module.css.cjs +0 -15
  551. package/dist/components/Icon/BigIcon/BigIcon.module.css.cjs.map +0 -1
  552. package/dist/components/Icon/BigIcon/BigIcon.module.css.js +0 -15
  553. package/dist/components/Icon/BigIcon/BigIcon.module.css.js.map +0 -1
  554. package/dist/components/Icon/IndicatorIcon/IndicatorIcon.module.css.cjs +0 -7
  555. package/dist/components/Icon/IndicatorIcon/IndicatorIcon.module.css.cjs.map +0 -1
  556. package/dist/components/Icon/IndicatorIcon/IndicatorIcon.module.css.js +0 -7
  557. package/dist/components/Icon/IndicatorIcon/IndicatorIcon.module.css.js.map +0 -1
  558. package/dist/components/InlineSpinner/InlineSpinner.module.css.cjs +0 -9
  559. package/dist/components/InlineSpinner/InlineSpinner.module.css.cjs.map +0 -1
  560. package/dist/components/InlineSpinner/InlineSpinner.module.css.js +0 -9
  561. package/dist/components/InlineSpinner/InlineSpinner.module.css.js.map +0 -1
  562. package/dist/components/Link/Link.module.css.cjs +0 -9
  563. package/dist/components/Link/Link.module.css.cjs.map +0 -1
  564. package/dist/components/Link/Link.module.css.js +0 -9
  565. package/dist/components/Link/Link.module.css.js.map +0 -1
  566. package/dist/components/Menu/DrawerMenu.module.css.cjs +0 -15
  567. package/dist/components/Menu/DrawerMenu.module.css.cjs.map +0 -1
  568. package/dist/components/Menu/DrawerMenu.module.css.js +0 -15
  569. package/dist/components/Menu/DrawerMenu.module.css.js.map +0 -1
  570. package/dist/components/Menu/FloatingMenu.module.css.cjs +0 -12
  571. package/dist/components/Menu/FloatingMenu.module.css.cjs.map +0 -1
  572. package/dist/components/Menu/FloatingMenu.module.css.js +0 -12
  573. package/dist/components/Menu/FloatingMenu.module.css.js.map +0 -1
  574. package/dist/components/Menu/MenuItem.module.css.cjs +0 -24
  575. package/dist/components/Menu/MenuItem.module.css.cjs.map +0 -1
  576. package/dist/components/Menu/MenuItem.module.css.js +0 -24
  577. package/dist/components/Menu/MenuItem.module.css.js.map +0 -1
  578. package/dist/components/Menu/MenuTitle.module.css.cjs +0 -7
  579. package/dist/components/Menu/MenuTitle.module.css.cjs.map +0 -1
  580. package/dist/components/Menu/MenuTitle.module.css.js +0 -7
  581. package/dist/components/Menu/MenuTitle.module.css.js.map +0 -1
  582. package/dist/components/Nav/Nav.module.css.cjs +0 -10
  583. package/dist/components/Nav/Nav.module.css.cjs.map +0 -1
  584. package/dist/components/Nav/Nav.module.css.js +0 -10
  585. package/dist/components/Nav/Nav.module.css.js.map +0 -1
  586. package/dist/components/Progress/Progress.module.css.cjs +0 -10
  587. package/dist/components/Progress/Progress.module.css.cjs.map +0 -1
  588. package/dist/components/Progress/Progress.module.css.js +0 -10
  589. package/dist/components/Progress/Progress.module.css.js.map +0 -1
  590. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncement.module.css.cjs +0 -21
  591. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncement.module.css.cjs.map +0 -1
  592. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncement.module.css.js +0 -21
  593. package/dist/components/ReleaseAnnouncement/ReleaseAnnouncement.module.css.js.map +0 -1
  594. package/dist/components/Search/Search.module.css.cjs +0 -15
  595. package/dist/components/Search/Search.module.css.cjs.map +0 -1
  596. package/dist/components/Search/Search.module.css.js +0 -15
  597. package/dist/components/Search/Search.module.css.js.map +0 -1
  598. package/dist/components/Separator/Separator.module.css.cjs +0 -9
  599. package/dist/components/Separator/Separator.module.css.cjs.map +0 -1
  600. package/dist/components/Separator/Separator.module.css.js +0 -9
  601. package/dist/components/Separator/Separator.module.css.js.map +0 -1
  602. package/dist/components/Toast/Toast.module.css.cjs +0 -7
  603. package/dist/components/Toast/Toast.module.css.cjs.map +0 -1
  604. package/dist/components/Toast/Toast.module.css.js +0 -7
  605. package/dist/components/Toast/Toast.module.css.js.map +0 -1
  606. package/dist/components/Tooltip/Tooltip.module.css.cjs +0 -18
  607. package/dist/components/Tooltip/Tooltip.module.css.cjs.map +0 -1
  608. package/dist/components/Tooltip/Tooltip.module.css.js +0 -18
  609. package/dist/components/Tooltip/Tooltip.module.css.js.map +0 -1
  610. package/dist/components/Typography/Typography.module.css.cjs +0 -30
  611. package/dist/components/Typography/Typography.module.css.cjs.map +0 -1
  612. package/dist/components/Typography/Typography.module.css.js +0 -30
  613. package/dist/components/Typography/Typography.module.css.js.map +0 -1
  614. package/dist/components/VisualList/VisualList.module.css.cjs +0 -7
  615. package/dist/components/VisualList/VisualList.module.css.cjs.map +0 -1
  616. package/dist/components/VisualList/VisualList.module.css.js +0 -7
  617. package/dist/components/VisualList/VisualList.module.css.js.map +0 -1
  618. package/dist/components/VisualList/VisualListItem.module.css.cjs +0 -10
  619. package/dist/components/VisualList/VisualListItem.module.css.cjs.map +0 -1
  620. package/dist/components/VisualList/VisualListItem.module.css.js +0 -10
  621. package/dist/components/VisualList/VisualListItem.module.css.js.map +0 -1
  622. package/dist/index.cjs.map +0 -1
  623. package/dist/index.js.map +0 -1
@@ -1,255 +1,231 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import ChevronDown from "@vector-im/compound-design-tokens/assets/web/icons/chevron-down";
3
- import CheckIcon from "@vector-im/compound-design-tokens/assets/web/icons/check";
4
- import ErrorIcon from "@vector-im/compound-design-tokens/assets/web/icons/error-solid";
5
- import { forwardRef, useState, useMemo, useCallback, useRef, useEffect, memo } from "react";
1
+ import Dropdown_module_default from "./Dropdown.module.js";
6
2
  import classNames from "classnames";
7
- import styles from "./Dropdown.module.css.js";
8
- import { useId } from "@floating-ui/react";
9
- const Dropdown = forwardRef(
10
- function Dropdown2({
11
- className,
12
- label,
13
- placeholder,
14
- helpLabel,
15
- onValueChange,
16
- error,
17
- value: controlledValue,
18
- defaultValue,
19
- values,
20
- ...props
21
- }, ref) {
22
- const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);
23
- const value = controlledValue ?? uncontrolledValue;
24
- const text = useMemo(
25
- () => value === void 0 ? placeholder : values.find(([v]) => v === value)?.[1] ?? placeholder,
26
- [value, values, placeholder]
27
- );
28
- const setValue = useCallback(
29
- (value2) => {
30
- setUncontrolledValue(value2);
31
- onValueChange?.(value2);
32
- },
33
- [setUncontrolledValue, onValueChange]
34
- );
35
- const [open, setOpen, dropdownRef] = useOpen();
36
- const { listRef, onComboboxKeyDown, onOptionKeyDown } = useKeyboardShortcut(
37
- open,
38
- setOpen,
39
- setValue
40
- );
41
- const buttonRef = useRef(null);
42
- useEffect(() => {
43
- if (value !== void 0) buttonRef.current?.focus();
44
- }, [value]);
45
- const hasPlaceholder = text === placeholder;
46
- const buttonClasses = classNames({
47
- [styles.placeholder]: hasPlaceholder
48
- });
49
- const borderClasses = classNames(styles.border, {
50
- [styles.open]: open
51
- });
52
- const contentClasses = classNames(styles.content, {
53
- [styles.open]: open
54
- });
55
- const labelId = useId();
56
- const contentId = useId();
57
- return /* @__PURE__ */ jsxs(
58
- "div",
59
- {
60
- ref: dropdownRef,
61
- className: classNames(className, styles.container),
62
- "aria-invalid": Boolean(error),
63
- children: [
64
- /* @__PURE__ */ jsx("label", { id: labelId, children: label }),
65
- /* @__PURE__ */ jsxs(
66
- "button",
67
- {
68
- className: buttonClasses,
69
- role: "combobox",
70
- "aria-haspopup": "listbox",
71
- "aria-labelledby": labelId,
72
- "aria-controls": contentId,
73
- "aria-expanded": open,
74
- ref: (element) => {
75
- buttonRef.current = element;
76
- if (typeof ref === "function") {
77
- ref(element);
78
- } else if (ref) {
79
- ref.current = element;
80
- }
81
- },
82
- onClick: () => setOpen((_open) => !_open),
83
- onKeyDown: onComboboxKeyDown,
84
- ...props,
85
- children: [
86
- text,
87
- /* @__PURE__ */ jsx(ChevronDown, { width: "24", height: "24" })
88
- ]
89
- }
90
- ),
91
- /* @__PURE__ */ jsx("div", { className: borderClasses }),
92
- /* @__PURE__ */ jsx("div", { className: contentClasses, children: /* @__PURE__ */ jsx(
93
- "ul",
94
- {
95
- ref: listRef,
96
- id: contentId,
97
- role: "listbox",
98
- className: styles.content,
99
- children: values.map(([v, text2]) => /* @__PURE__ */ jsx(
100
- DropdownItem,
101
- {
102
- isDisplayed: open,
103
- isSelected: value === v,
104
- onClick: () => {
105
- setOpen(false);
106
- setValue(v);
107
- },
108
- onKeyDown: (e) => onOptionKeyDown(e, v),
109
- children: text2
110
- },
111
- v
112
- ))
113
- }
114
- ) }),
115
- !error && helpLabel && /* @__PURE__ */ jsx("span", { className: styles.help, children: helpLabel }),
116
- error && /* @__PURE__ */ jsxs("span", { className: styles.error, children: [
117
- /* @__PURE__ */ jsx(ErrorIcon, { width: "20", height: "20" }),
118
- error
119
- ] })
120
- ]
121
- }
122
- );
123
- }
124
- );
125
- const DropdownItem = memo(function DropdownItem2({
126
- children,
127
- isSelected,
128
- isDisplayed,
129
- ...props
130
- }) {
131
- const ref = useRef(null);
132
- useEffect(() => {
133
- if (isSelected && isDisplayed) {
134
- ref.current?.focus();
135
- }
136
- }, [isSelected, isDisplayed]);
137
- return /* @__PURE__ */ jsxs(
138
- "li",
139
- {
140
- tabIndex: 0,
141
- role: "option",
142
- ref,
143
- "aria-selected": isSelected,
144
- ...props,
145
- children: [
146
- children,
147
- " ",
148
- isSelected && /* @__PURE__ */ jsx(CheckIcon, { width: "20", height: "20" })
149
- ]
150
- }
151
- );
3
+ import { forwardRef, memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
4
+ import ErrorIcon from "@vector-im/compound-design-tokens/assets/web/icons/error-solid";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { useId as useId$1 } from "@floating-ui/react";
7
+ import Check from "@vector-im/compound-design-tokens/assets/web/icons/check";
8
+ import ChevronDown from "@vector-im/compound-design-tokens/assets/web/icons/chevron-down";
9
+ //#region src/components/Dropdown/Dropdown.tsx
10
+ /**
11
+ * The dropdown content.
12
+ */
13
+ var Dropdown = forwardRef(function Dropdown({ className, label, placeholder, helpLabel, onValueChange, error, value: controlledValue, defaultValue, values, ...props }, ref) {
14
+ const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);
15
+ const value = controlledValue ?? uncontrolledValue;
16
+ const text = useMemo(() => value === void 0 ? placeholder : values.find(([v]) => v === value)?.[1] ?? placeholder, [
17
+ value,
18
+ values,
19
+ placeholder
20
+ ]);
21
+ const setValue = useCallback((value) => {
22
+ setUncontrolledValue(value);
23
+ onValueChange?.(value);
24
+ }, [setUncontrolledValue, onValueChange]);
25
+ const [open, setOpen, dropdownRef] = useOpen();
26
+ const { listRef, onComboboxKeyDown, onOptionKeyDown } = useKeyboardShortcut(open, setOpen, setValue);
27
+ const buttonRef = useRef(null);
28
+ useEffect(() => {
29
+ if (value !== void 0) buttonRef.current?.focus();
30
+ }, [value]);
31
+ const hasPlaceholder = text === placeholder;
32
+ const buttonClasses = classNames({ [Dropdown_module_default.placeholder]: hasPlaceholder });
33
+ const borderClasses = classNames(Dropdown_module_default.border, { [Dropdown_module_default.open]: open });
34
+ const contentClasses = classNames(Dropdown_module_default.content, { [Dropdown_module_default.open]: open });
35
+ /**
36
+ * Ids for accessibility.
37
+ */
38
+ const labelId = useId$1();
39
+ const contentId = useId$1();
40
+ return /* @__PURE__ */ jsxs("div", {
41
+ ref: dropdownRef,
42
+ className: classNames(className, Dropdown_module_default.container),
43
+ "aria-invalid": Boolean(error),
44
+ children: [
45
+ /* @__PURE__ */ jsx("label", {
46
+ id: labelId,
47
+ children: label
48
+ }),
49
+ /* @__PURE__ */ jsxs("button", {
50
+ className: buttonClasses,
51
+ role: "combobox",
52
+ "aria-haspopup": "listbox",
53
+ "aria-labelledby": labelId,
54
+ "aria-controls": contentId,
55
+ "aria-expanded": open,
56
+ ref: (element) => {
57
+ buttonRef.current = element;
58
+ if (typeof ref === "function") ref(element);
59
+ else if (ref) ref.current = element;
60
+ },
61
+ onClick: () => setOpen((_open) => !_open),
62
+ onKeyDown: onComboboxKeyDown,
63
+ ...props,
64
+ children: [text, /* @__PURE__ */ jsx(ChevronDown, {
65
+ width: "24",
66
+ height: "24"
67
+ })]
68
+ }),
69
+ /* @__PURE__ */ jsx("div", { className: borderClasses }),
70
+ /* @__PURE__ */ jsx("div", {
71
+ className: contentClasses,
72
+ children: /* @__PURE__ */ jsx("ul", {
73
+ ref: listRef,
74
+ id: contentId,
75
+ role: "listbox",
76
+ className: Dropdown_module_default.content,
77
+ children: values.map(([v, text]) => /* @__PURE__ */ jsx(DropdownItem, {
78
+ isDisplayed: open,
79
+ isSelected: value === v,
80
+ onClick: () => {
81
+ setOpen(false);
82
+ setValue(v);
83
+ },
84
+ onKeyDown: (e) => onOptionKeyDown(e, v),
85
+ children: text
86
+ }, v))
87
+ })
88
+ }),
89
+ !error && helpLabel && /* @__PURE__ */ jsx("span", {
90
+ className: Dropdown_module_default.help,
91
+ children: helpLabel
92
+ }),
93
+ error && /* @__PURE__ */ jsxs("span", {
94
+ className: Dropdown_module_default.error,
95
+ children: [/* @__PURE__ */ jsx(ErrorIcon, {
96
+ width: "20",
97
+ height: "20"
98
+ }), error]
99
+ })
100
+ ]
101
+ });
102
+ });
103
+ /**
104
+ * A dropdown item component.
105
+ */
106
+ var DropdownItem = memo(function DropdownItem({ children, isSelected, isDisplayed, ...props }) {
107
+ const ref = useRef(null);
108
+ useEffect(() => {
109
+ if (isSelected && isDisplayed) ref.current?.focus();
110
+ }, [isSelected, isDisplayed]);
111
+ return /* @__PURE__ */ jsxs("li", {
112
+ tabIndex: 0,
113
+ role: "option",
114
+ ref,
115
+ "aria-selected": isSelected,
116
+ ...props,
117
+ children: [
118
+ children,
119
+ " ",
120
+ isSelected && /* @__PURE__ */ jsx(Check, {
121
+ width: "20",
122
+ height: "20"
123
+ })
124
+ ]
125
+ });
152
126
  });
127
+ /**
128
+ * A hook to manage the open state of the dropdown.
129
+ */
153
130
  function useOpen() {
154
- const [open, setOpen] = useState(false);
155
- const ref = useRef(null);
156
- useEffect(() => {
157
- const closeIfOutside = (e) => {
158
- if (ref.current && !ref.current.contains(e.target)) {
159
- setOpen(false);
160
- }
161
- };
162
- document.addEventListener("click", closeIfOutside);
163
- return () => document.removeEventListener("click", closeIfOutside);
164
- }, [setOpen]);
165
- return [open, setOpen, ref];
131
+ const [open, setOpen] = useState(false);
132
+ const ref = useRef(null);
133
+ useEffect(() => {
134
+ const closeIfOutside = (e) => {
135
+ if (ref.current && !ref.current.contains(e.target)) setOpen(false);
136
+ };
137
+ document.addEventListener("click", closeIfOutside);
138
+ return () => document.removeEventListener("click", closeIfOutside);
139
+ }, [setOpen]);
140
+ return [
141
+ open,
142
+ setOpen,
143
+ ref
144
+ ];
166
145
  }
146
+ /**
147
+ * A hook to manage the keyboard shortcuts of the dropdown.
148
+ * @param open - the dropdown open state.
149
+ * @param setOpen - the dropdown open state setter.
150
+ * @param setValue - set the selected value and text
151
+ */
167
152
  function useKeyboardShortcut(open, setOpen, setValue) {
168
- const listRef = useRef(null);
169
- const onComboboxKeyDown = useCallback(
170
- ({ key }) => {
171
- switch (key) {
172
- // Enter and Space already managed because it's a button
173
- case "Escape":
174
- setOpen(false);
175
- break;
176
- case "ArrowDown":
177
- setOpen(true);
178
- if (open) {
179
- listRef.current?.firstElementChild?.focus();
180
- }
181
- break;
182
- case "ArrowUp":
183
- setOpen(true);
184
- break;
185
- case "Home": {
186
- setOpen(true);
187
- Promise.resolve().then(() => {
188
- listRef.current?.firstElementChild?.focus();
189
- });
190
- break;
191
- }
192
- case "End": {
193
- setOpen(true);
194
- Promise.resolve().then(() => {
195
- listRef.current?.lastElementChild?.focus();
196
- });
197
- break;
198
- }
199
- }
200
- },
201
- [listRef, open, setOpen]
202
- );
203
- const onOptionKeyDown = useCallback(
204
- (evt, value) => {
205
- const { key, altKey } = evt;
206
- evt.stopPropagation();
207
- evt.preventDefault();
208
- switch (key) {
209
- case "Enter":
210
- case " ": {
211
- setValue(value);
212
- setOpen(false);
213
- break;
214
- }
215
- case "Tab":
216
- case "Escape":
217
- setOpen(false);
218
- break;
219
- case "ArrowDown": {
220
- const currentFocus = document.activeElement;
221
- if (listRef.current?.contains(currentFocus) && currentFocus) {
222
- currentFocus.nextElementSibling?.focus();
223
- }
224
- break;
225
- }
226
- case "ArrowUp": {
227
- if (altKey) {
228
- setValue(value);
229
- setOpen(false);
230
- } else {
231
- const currentFocus = document.activeElement;
232
- if (listRef.current?.contains(currentFocus) && currentFocus) {
233
- currentFocus.previousElementSibling?.focus();
234
- }
235
- }
236
- break;
237
- }
238
- case "Home": {
239
- listRef.current?.firstElementChild?.focus();
240
- break;
241
- }
242
- case "End": {
243
- listRef.current?.lastElementChild?.focus();
244
- break;
245
- }
246
- }
247
- },
248
- [listRef, setValue, setOpen]
249
- );
250
- return { listRef, onComboboxKeyDown, onOptionKeyDown };
153
+ const listRef = useRef(null);
154
+ return {
155
+ listRef,
156
+ onComboboxKeyDown: useCallback(({ key }) => {
157
+ switch (key) {
158
+ case "Escape":
159
+ setOpen(false);
160
+ break;
161
+ case "ArrowDown":
162
+ setOpen(true);
163
+ if (open) (listRef.current?.firstElementChild)?.focus();
164
+ break;
165
+ case "ArrowUp":
166
+ setOpen(true);
167
+ break;
168
+ case "Home":
169
+ setOpen(true);
170
+ Promise.resolve().then(() => {
171
+ (listRef.current?.firstElementChild)?.focus();
172
+ });
173
+ break;
174
+ case "End":
175
+ setOpen(true);
176
+ Promise.resolve().then(() => {
177
+ (listRef.current?.lastElementChild)?.focus();
178
+ });
179
+ break;
180
+ }
181
+ }, [
182
+ listRef,
183
+ open,
184
+ setOpen
185
+ ]),
186
+ onOptionKeyDown: useCallback((evt, value) => {
187
+ const { key, altKey } = evt;
188
+ evt.stopPropagation();
189
+ evt.preventDefault();
190
+ switch (key) {
191
+ case "Enter":
192
+ case " ":
193
+ setValue(value);
194
+ setOpen(false);
195
+ break;
196
+ case "Tab":
197
+ case "Escape":
198
+ setOpen(false);
199
+ break;
200
+ case "ArrowDown": {
201
+ const currentFocus = document.activeElement;
202
+ if (listRef.current?.contains(currentFocus) && currentFocus) currentFocus.nextElementSibling?.focus();
203
+ break;
204
+ }
205
+ case "ArrowUp":
206
+ if (altKey) {
207
+ setValue(value);
208
+ setOpen(false);
209
+ } else {
210
+ const currentFocus = document.activeElement;
211
+ if (listRef.current?.contains(currentFocus) && currentFocus) currentFocus.previousElementSibling?.focus();
212
+ }
213
+ break;
214
+ case "Home":
215
+ (listRef.current?.firstElementChild)?.focus();
216
+ break;
217
+ case "End":
218
+ (listRef.current?.lastElementChild)?.focus();
219
+ break;
220
+ }
221
+ }, [
222
+ listRef,
223
+ setValue,
224
+ setOpen
225
+ ])
226
+ };
251
227
  }
252
- export {
253
- Dropdown
254
- };
255
- //# sourceMappingURL=Dropdown.js.map
228
+ //#endregion
229
+ export { Dropdown };
230
+
231
+ //# sourceMappingURL=Dropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.js","sources":["../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["/*\nCopyright 2024 New Vector Ltd.\n\nSPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial\nPlease see LICENSE files in the repository root for full details.\n*/\n\nimport ChevronDown from \"@vector-im/compound-design-tokens/assets/web/icons/chevron-down\";\nimport Check from \"@vector-im/compound-design-tokens/assets/web/icons/check\";\nimport Error from \"@vector-im/compound-design-tokens/assets/web/icons/error-solid\";\n\nimport React, {\n type Dispatch,\n forwardRef,\n type HTMLProps,\n memo,\n type RefObject,\n type SetStateAction,\n useCallback,\n useEffect,\n useRef,\n useState,\n type KeyboardEvent,\n useMemo,\n} from \"react\";\n\nimport classNames from \"classnames\";\n\nimport styles from \"./Dropdown.module.css\";\nimport { useId } from \"@floating-ui/react\";\n\ntype DropdownProps = {\n /**\n * The CSS class name.\n */\n className?: string;\n /**\n * The controlled value of the dropdown.\n */\n value?: string;\n /**\n * The default value of the dropdown, used when uncontrolled.\n */\n defaultValue?: string;\n /**\n * The values of the dropdown.\n * [value, text]\n */\n values: [string, string][];\n /**\n * The placeholder text.\n */\n placeholder: string;\n /**\n * The label to display at the top of the dropdown\n */\n label: string;\n /**\n * The help label to display at the bottom of the dropdown\n */\n helpLabel?: string;\n /**\n * Callback for when the value changes.\n * @param value\n */\n onValueChange?: (value: string) => void;\n /**\n * The error message to display.\n */\n error?: string;\n};\n\n/**\n * The dropdown content.\n */\nexport const Dropdown = forwardRef<HTMLButtonElement, DropdownProps>(\n function Dropdown(\n {\n className,\n label,\n placeholder,\n helpLabel,\n onValueChange,\n error,\n value: controlledValue,\n defaultValue,\n values,\n ...props\n },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n const text = useMemo(\n () =>\n value === undefined\n ? placeholder\n : (values.find(([v]) => v === value)?.[1] ?? placeholder),\n [value, values, placeholder],\n );\n\n const setValue = useCallback(\n (value: string) => {\n setUncontrolledValue(value);\n onValueChange?.(value);\n },\n [setUncontrolledValue, onValueChange],\n );\n\n const [open, setOpen, dropdownRef] = useOpen();\n const { listRef, onComboboxKeyDown, onOptionKeyDown } = useKeyboardShortcut(\n open,\n setOpen,\n setValue,\n );\n\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n useEffect(() => {\n // Focus the button when the value is set\n // Test if the value is undefined to avoid focusing on the first render\n if (value !== undefined) buttonRef.current?.focus();\n }, [value]);\n\n const hasPlaceholder = text === placeholder;\n const buttonClasses = classNames({\n [styles.placeholder]: hasPlaceholder,\n });\n const borderClasses = classNames(styles.border, {\n [styles.open]: open,\n });\n const contentClasses = classNames(styles.content, {\n [styles.open]: open,\n });\n\n /**\n * Ids for accessibility.\n */\n const labelId = useId();\n const contentId = useId();\n\n return (\n <div\n ref={dropdownRef}\n className={classNames(className, styles.container)}\n aria-invalid={Boolean(error)}\n >\n <label id={labelId}>{label}</label>\n <button\n className={buttonClasses}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-labelledby={labelId}\n aria-controls={contentId}\n aria-expanded={open}\n ref={(element) => {\n // Private ref to focus the button\n buttonRef.current = element;\n // Handle forwarded ref\n if (typeof ref === \"function\") {\n ref(element);\n } else if (ref) {\n ref.current = element;\n }\n }}\n onClick={() => setOpen((_open) => !_open)}\n onKeyDown={onComboboxKeyDown}\n {...props}\n >\n {text}\n <ChevronDown width=\"24\" height=\"24\" />\n </button>\n <div className={borderClasses} />\n <div className={contentClasses}>\n <ul\n ref={listRef}\n id={contentId}\n role=\"listbox\"\n className={styles.content}\n >\n {values.map(([v, text]) => (\n <DropdownItem\n key={v}\n isDisplayed={open}\n isSelected={value === v}\n onClick={() => {\n setOpen(false);\n setValue(v);\n }}\n onKeyDown={(e) => onOptionKeyDown(e, v)}\n >\n {text}\n </DropdownItem>\n ))}\n </ul>\n </div>\n {!error && helpLabel && (\n <span className={styles.help}>{helpLabel}</span>\n )}\n {error && (\n <span className={styles.error}>\n <Error width=\"20\" height=\"20\" />\n {error}\n </span>\n )}\n </div>\n );\n },\n);\n\ntype DropdownItemProps = HTMLProps<HTMLLIElement> & {\n /**\n * Whether the dropdown item is selected.\n */\n isSelected: boolean;\n /**\n * Whether the dropdown item is displayed.\n */\n isDisplayed: boolean;\n /**\n * The text to display in the dropdown item.\n */\n children: string;\n};\n\n/**\n * A dropdown item component.\n */\nconst DropdownItem = memo(function DropdownItem({\n children,\n isSelected,\n isDisplayed,\n ...props\n}: DropdownItemProps) {\n const ref = useRef<HTMLLIElement>(null);\n\n // Focus the item if the dropdown is open and the item is already selected\n useEffect(() => {\n if (isSelected && isDisplayed) {\n ref.current?.focus();\n }\n }, [isSelected, isDisplayed]);\n\n return (\n <li\n tabIndex={0}\n role=\"option\"\n ref={ref}\n aria-selected={isSelected}\n {...props}\n >\n {children} {isSelected && <Check width=\"20\" height=\"20\" />}\n </li>\n );\n});\n\n/**\n * A hook to manage the open state of the dropdown.\n */\nfunction useOpen(): [\n boolean,\n Dispatch<SetStateAction<boolean>>,\n RefObject<HTMLDivElement | null>,\n] {\n const [open, setOpen] = useState(false);\n const ref = useRef<HTMLDivElement | null>(null);\n\n // If the user clicks outside the dropdown, close it\n useEffect(() => {\n const closeIfOutside = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"click\", closeIfOutside);\n return () => document.removeEventListener(\"click\", closeIfOutside);\n }, [setOpen]);\n\n return [open, setOpen, ref];\n}\n\n/**\n * A hook to manage the keyboard shortcuts of the dropdown.\n * @param open - the dropdown open state.\n * @param setOpen - the dropdown open state setter.\n * @param setValue - set the selected value and text\n */\nfunction useKeyboardShortcut(\n open: boolean,\n setOpen: Dispatch<SetStateAction<boolean>>,\n setValue: (value: string) => void,\n) {\n const listRef = useRef<HTMLUListElement>(null);\n const onComboboxKeyDown = useCallback(\n ({ key }: KeyboardEvent) => {\n switch (key) {\n // Enter and Space already managed because it's a button\n case \"Escape\":\n setOpen(false);\n break;\n case \"ArrowDown\":\n setOpen(true);\n // If open, focus the first element\n if (open) {\n (listRef.current?.firstElementChild as HTMLElement)?.focus();\n }\n break;\n case \"ArrowUp\":\n setOpen(true);\n break;\n case \"Home\": {\n setOpen(true);\n // Wait for the dropdown to be opened\n Promise.resolve().then(() => {\n (listRef.current?.firstElementChild as HTMLElement)?.focus();\n });\n break;\n }\n case \"End\": {\n setOpen(true);\n // Wait for the dropdown to be opened\n Promise.resolve().then(() => {\n (listRef.current?.lastElementChild as HTMLElement)?.focus();\n });\n break;\n }\n }\n },\n [listRef, open, setOpen],\n );\n\n const onOptionKeyDown = useCallback(\n (evt: KeyboardEvent, value: string) => {\n const { key, altKey } = evt;\n evt.stopPropagation();\n evt.preventDefault();\n\n switch (key) {\n case \"Enter\":\n case \" \": {\n setValue(value);\n setOpen(false);\n break;\n }\n case \"Tab\":\n case \"Escape\":\n setOpen(false);\n break;\n case \"ArrowDown\": {\n const currentFocus = document.activeElement;\n if (listRef.current?.contains(currentFocus) && currentFocus) {\n (currentFocus.nextElementSibling as HTMLElement)?.focus();\n }\n break;\n }\n case \"ArrowUp\": {\n if (altKey) {\n setValue(value);\n setOpen(false);\n } else {\n const currentFocus = document.activeElement;\n if (listRef.current?.contains(currentFocus) && currentFocus) {\n (currentFocus.previousElementSibling as HTMLElement)?.focus();\n }\n }\n break;\n }\n case \"Home\": {\n (listRef.current?.firstElementChild as HTMLElement)?.focus();\n break;\n }\n case \"End\": {\n (listRef.current?.lastElementChild as HTMLElement)?.focus();\n break;\n }\n }\n },\n [listRef, setValue, setOpen],\n );\n\n return { listRef, onComboboxKeyDown, onOptionKeyDown };\n}\n"],"names":["Dropdown","value","text","Error","DropdownItem","Check"],"mappings":"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"}
1
+ {"version":3,"file":"Dropdown.js","names":[],"sources":["../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["/*\nCopyright 2024 New Vector Ltd.\n\nSPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial\nPlease see LICENSE files in the repository root for full details.\n*/\n\nimport ChevronDown from \"@vector-im/compound-design-tokens/assets/web/icons/chevron-down\";\nimport Check from \"@vector-im/compound-design-tokens/assets/web/icons/check\";\nimport Error from \"@vector-im/compound-design-tokens/assets/web/icons/error-solid\";\n\nimport React, {\n type Dispatch,\n forwardRef,\n type HTMLProps,\n memo,\n type RefObject,\n type SetStateAction,\n useCallback,\n useEffect,\n useRef,\n useState,\n type KeyboardEvent,\n useMemo,\n} from \"react\";\n\nimport classNames from \"classnames\";\n\nimport styles from \"./Dropdown.module.css\";\nimport { useId } from \"@floating-ui/react\";\n\ntype DropdownProps = {\n /**\n * The CSS class name.\n */\n className?: string;\n /**\n * The controlled value of the dropdown.\n */\n value?: string;\n /**\n * The default value of the dropdown, used when uncontrolled.\n */\n defaultValue?: string;\n /**\n * The values of the dropdown.\n * [value, text]\n */\n values: [string, string][];\n /**\n * The placeholder text.\n */\n placeholder: string;\n /**\n * The label to display at the top of the dropdown\n */\n label: string;\n /**\n * The help label to display at the bottom of the dropdown\n */\n helpLabel?: string;\n /**\n * Callback for when the value changes.\n * @param value\n */\n onValueChange?: (value: string) => void;\n /**\n * The error message to display.\n */\n error?: string;\n};\n\n/**\n * The dropdown content.\n */\nexport const Dropdown = forwardRef<HTMLButtonElement, DropdownProps>(\n function Dropdown(\n {\n className,\n label,\n placeholder,\n helpLabel,\n onValueChange,\n error,\n value: controlledValue,\n defaultValue,\n values,\n ...props\n },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n const text = useMemo(\n () =>\n value === undefined\n ? placeholder\n : (values.find(([v]) => v === value)?.[1] ?? placeholder),\n [value, values, placeholder],\n );\n\n const setValue = useCallback(\n (value: string) => {\n setUncontrolledValue(value);\n onValueChange?.(value);\n },\n [setUncontrolledValue, onValueChange],\n );\n\n const [open, setOpen, dropdownRef] = useOpen();\n const { listRef, onComboboxKeyDown, onOptionKeyDown } = useKeyboardShortcut(\n open,\n setOpen,\n setValue,\n );\n\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n useEffect(() => {\n // Focus the button when the value is set\n // Test if the value is undefined to avoid focusing on the first render\n if (value !== undefined) buttonRef.current?.focus();\n }, [value]);\n\n const hasPlaceholder = text === placeholder;\n const buttonClasses = classNames({\n [styles.placeholder]: hasPlaceholder,\n });\n const borderClasses = classNames(styles.border, {\n [styles.open]: open,\n });\n const contentClasses = classNames(styles.content, {\n [styles.open]: open,\n });\n\n /**\n * Ids for accessibility.\n */\n const labelId = useId();\n const contentId = useId();\n\n return (\n <div\n ref={dropdownRef}\n className={classNames(className, styles.container)}\n aria-invalid={Boolean(error)}\n >\n <label id={labelId}>{label}</label>\n <button\n className={buttonClasses}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-labelledby={labelId}\n aria-controls={contentId}\n aria-expanded={open}\n ref={(element) => {\n // Private ref to focus the button\n buttonRef.current = element;\n // Handle forwarded ref\n if (typeof ref === \"function\") {\n ref(element);\n } else if (ref) {\n ref.current = element;\n }\n }}\n onClick={() => setOpen((_open) => !_open)}\n onKeyDown={onComboboxKeyDown}\n {...props}\n >\n {text}\n <ChevronDown width=\"24\" height=\"24\" />\n </button>\n <div className={borderClasses} />\n <div className={contentClasses}>\n <ul\n ref={listRef}\n id={contentId}\n role=\"listbox\"\n className={styles.content}\n >\n {values.map(([v, text]) => (\n <DropdownItem\n key={v}\n isDisplayed={open}\n isSelected={value === v}\n onClick={() => {\n setOpen(false);\n setValue(v);\n }}\n onKeyDown={(e) => onOptionKeyDown(e, v)}\n >\n {text}\n </DropdownItem>\n ))}\n </ul>\n </div>\n {!error && helpLabel && (\n <span className={styles.help}>{helpLabel}</span>\n )}\n {error && (\n <span className={styles.error}>\n <Error width=\"20\" height=\"20\" />\n {error}\n </span>\n )}\n </div>\n );\n },\n);\n\ntype DropdownItemProps = HTMLProps<HTMLLIElement> & {\n /**\n * Whether the dropdown item is selected.\n */\n isSelected: boolean;\n /**\n * Whether the dropdown item is displayed.\n */\n isDisplayed: boolean;\n /**\n * The text to display in the dropdown item.\n */\n children: string;\n};\n\n/**\n * A dropdown item component.\n */\nconst DropdownItem = memo(function DropdownItem({\n children,\n isSelected,\n isDisplayed,\n ...props\n}: DropdownItemProps) {\n const ref = useRef<HTMLLIElement>(null);\n\n // Focus the item if the dropdown is open and the item is already selected\n useEffect(() => {\n if (isSelected && isDisplayed) {\n ref.current?.focus();\n }\n }, [isSelected, isDisplayed]);\n\n return (\n <li\n tabIndex={0}\n role=\"option\"\n ref={ref}\n aria-selected={isSelected}\n {...props}\n >\n {children} {isSelected && <Check width=\"20\" height=\"20\" />}\n </li>\n );\n});\n\n/**\n * A hook to manage the open state of the dropdown.\n */\nfunction useOpen(): [\n boolean,\n Dispatch<SetStateAction<boolean>>,\n RefObject<HTMLDivElement | null>,\n] {\n const [open, setOpen] = useState(false);\n const ref = useRef<HTMLDivElement | null>(null);\n\n // If the user clicks outside the dropdown, close it\n useEffect(() => {\n const closeIfOutside = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"click\", closeIfOutside);\n return () => document.removeEventListener(\"click\", closeIfOutside);\n }, [setOpen]);\n\n return [open, setOpen, ref];\n}\n\n/**\n * A hook to manage the keyboard shortcuts of the dropdown.\n * @param open - the dropdown open state.\n * @param setOpen - the dropdown open state setter.\n * @param setValue - set the selected value and text\n */\nfunction useKeyboardShortcut(\n open: boolean,\n setOpen: Dispatch<SetStateAction<boolean>>,\n setValue: (value: string) => void,\n) {\n const listRef = useRef<HTMLUListElement>(null);\n const onComboboxKeyDown = useCallback(\n ({ key }: KeyboardEvent) => {\n switch (key) {\n // Enter and Space already managed because it's a button\n case \"Escape\":\n setOpen(false);\n break;\n case \"ArrowDown\":\n setOpen(true);\n // If open, focus the first element\n if (open) {\n (listRef.current?.firstElementChild as HTMLElement)?.focus();\n }\n break;\n case \"ArrowUp\":\n setOpen(true);\n break;\n case \"Home\": {\n setOpen(true);\n // Wait for the dropdown to be opened\n Promise.resolve().then(() => {\n (listRef.current?.firstElementChild as HTMLElement)?.focus();\n });\n break;\n }\n case \"End\": {\n setOpen(true);\n // Wait for the dropdown to be opened\n Promise.resolve().then(() => {\n (listRef.current?.lastElementChild as HTMLElement)?.focus();\n });\n break;\n }\n }\n },\n [listRef, open, setOpen],\n );\n\n const onOptionKeyDown = useCallback(\n (evt: KeyboardEvent, value: string) => {\n const { key, altKey } = evt;\n evt.stopPropagation();\n evt.preventDefault();\n\n switch (key) {\n case \"Enter\":\n case \" \": {\n setValue(value);\n setOpen(false);\n break;\n }\n case \"Tab\":\n case \"Escape\":\n setOpen(false);\n break;\n case \"ArrowDown\": {\n const currentFocus = document.activeElement;\n if (listRef.current?.contains(currentFocus) && currentFocus) {\n (currentFocus.nextElementSibling as HTMLElement)?.focus();\n }\n break;\n }\n case \"ArrowUp\": {\n if (altKey) {\n setValue(value);\n setOpen(false);\n } else {\n const currentFocus = document.activeElement;\n if (listRef.current?.contains(currentFocus) && currentFocus) {\n (currentFocus.previousElementSibling as HTMLElement)?.focus();\n }\n }\n break;\n }\n case \"Home\": {\n (listRef.current?.firstElementChild as HTMLElement)?.focus();\n break;\n }\n case \"End\": {\n (listRef.current?.lastElementChild as HTMLElement)?.focus();\n break;\n }\n }\n },\n [listRef, setValue, setOpen],\n );\n\n return { listRef, onComboboxKeyDown, onOptionKeyDown };\n}\n"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ var Dropdown_module_default = {
2
+ container: "_container_gn3xc_8",
3
+ placeholder: "_placeholder_gn3xc_47",
4
+ border: "_border_gn3xc_51",
5
+ content: "_content_gn3xc_60",
6
+ open: "_open_gn3xc_108",
7
+ help: "_help_gn3xc_112",
8
+ error: "_error_gn3xc_117"
9
+ };
10
+ //#endregion
11
+ exports.default = Dropdown_module_default;
12
+
13
+ //# sourceMappingURL=Dropdown.module.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.module.cjs","names":[],"sources":["../../../src/components/Dropdown/Dropdown.module.css"],"sourcesContent":["/*\nCopyright 2024 New Vector Ltd.\n\nSPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial\nPlease see LICENSE files in the repository root for full details.\n*/\n\n.container {\n display: flex;\n flex-direction: column;\n\n label {\n font: var(--cpd-font-body-md-medium);\n margin-block-end: var(--cpd-space-1x);\n }\n\n button {\n inline-size: 100%;\n border: 1px solid var(--cpd-color-border-interactive-primary);\n background: var(--cpd-color-bg-canvas-default);\n border-radius: 0.5rem;\n padding: var(--cpd-space-3x) var(--cpd-space-3x) var(--cpd-space-3x)\n var(--cpd-space-4x);\n box-sizing: border-box;\n color: var(--cpd-color-text-primary);\n font: var(--cpd-font-body-md-regular);\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--cpd-space-4x);\n\n svg {\n transition: transform 0.1s linear;\n }\n }\n\n /**\n * When the dropdown is open, rotate the arrow icon\n */\n button[aria-expanded=\"true\"] {\n svg {\n transform: rotate(180deg);\n }\n }\n\n button.placeholder {\n color: var(--cpd-color-text-secondary);\n }\n\n .border {\n display: none;\n border-inline-start: 1px solid var(--cpd-color-border-interactive-secondary);\n border-inline-end: 1px solid var(--cpd-color-border-interactive-secondary);\n block-size: var(--cpd-space-1x);\n margin-block-start: calc(var(--cpd-space-1x) * -1);\n box-sizing: border-box;\n }\n\n .content {\n display: none;\n position: relative;\n\n ul {\n /**\n * To make the component going over the other elements\n */\n position: absolute;\n display: block;\n inline-size: 100%;\n background: var(--cpd-color-bg-canvas-default);\n border: 1px solid var(--cpd-color-border-interactive-secondary);\n border-block-start: 0;\n border-end-start-radius: var(--cpd-space-4x);\n border-end-end-radius: var(--cpd-space-4x);\n box-sizing: border-box;\n box-shadow: 0 4px 24px 0 rgb(27 29 34 / 10%);\n margin: 0;\n padding: 0;\n padding-block-end: var(--cpd-space-4x);\n cursor: pointer;\n\n li {\n list-style-type: \"\";\n font: var(--cpd-font-body-md-medium);\n padding: var(--cpd-space-3x) var(--cpd-space-4x);\n border-block-end: 1px solid var(--cpd-color-gray-300);\n color: var(--cpd-color-text-secondary);\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--cpd-space-4x);\n\n @media (hover) {\n &:hover {\n background: var(--cpd-color-gray-200);\n }\n }\n\n &[aria-selected=\"true\"] {\n color: var(--cpd-color-text-primary);\n background: var(--cpd-color-gray-300);\n }\n }\n }\n }\n\n .open {\n display: block;\n }\n\n .help {\n font: var(--cpd-font-body-sm-regular);\n color: var(--cpd-color-text-secondary);\n }\n\n .error {\n font: var(--cpd-font-body-sm-medium);\n color: var(--cpd-color-text-critical-primary);\n display: flex;\n gap: var(--cpd-space-2x);\n }\n\n .error,\n .help {\n margin-block-start: var(--cpd-space-2x);\n }\n\n &[aria-invalid=\"true\"] {\n label {\n color: var(--cpd-color-text-critical-primary);\n }\n\n button {\n border-color: var(--cpd-color-text-critical-primary);\n }\n }\n}\n"],"mappings":""}
@@ -0,0 +1,13 @@
1
+ var Dropdown_module_default = {
2
+ container: "_container_gn3xc_8",
3
+ placeholder: "_placeholder_gn3xc_47",
4
+ border: "_border_gn3xc_51",
5
+ content: "_content_gn3xc_60",
6
+ open: "_open_gn3xc_108",
7
+ help: "_help_gn3xc_112",
8
+ error: "_error_gn3xc_117"
9
+ };
10
+ //#endregion
11
+ export { Dropdown_module_default as default };
12
+
13
+ //# sourceMappingURL=Dropdown.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.module.js","names":[],"sources":["../../../src/components/Dropdown/Dropdown.module.css"],"sourcesContent":["/*\nCopyright 2024 New Vector Ltd.\n\nSPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial\nPlease see LICENSE files in the repository root for full details.\n*/\n\n.container {\n display: flex;\n flex-direction: column;\n\n label {\n font: var(--cpd-font-body-md-medium);\n margin-block-end: var(--cpd-space-1x);\n }\n\n button {\n inline-size: 100%;\n border: 1px solid var(--cpd-color-border-interactive-primary);\n background: var(--cpd-color-bg-canvas-default);\n border-radius: 0.5rem;\n padding: var(--cpd-space-3x) var(--cpd-space-3x) var(--cpd-space-3x)\n var(--cpd-space-4x);\n box-sizing: border-box;\n color: var(--cpd-color-text-primary);\n font: var(--cpd-font-body-md-regular);\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--cpd-space-4x);\n\n svg {\n transition: transform 0.1s linear;\n }\n }\n\n /**\n * When the dropdown is open, rotate the arrow icon\n */\n button[aria-expanded=\"true\"] {\n svg {\n transform: rotate(180deg);\n }\n }\n\n button.placeholder {\n color: var(--cpd-color-text-secondary);\n }\n\n .border {\n display: none;\n border-inline-start: 1px solid var(--cpd-color-border-interactive-secondary);\n border-inline-end: 1px solid var(--cpd-color-border-interactive-secondary);\n block-size: var(--cpd-space-1x);\n margin-block-start: calc(var(--cpd-space-1x) * -1);\n box-sizing: border-box;\n }\n\n .content {\n display: none;\n position: relative;\n\n ul {\n /**\n * To make the component going over the other elements\n */\n position: absolute;\n display: block;\n inline-size: 100%;\n background: var(--cpd-color-bg-canvas-default);\n border: 1px solid var(--cpd-color-border-interactive-secondary);\n border-block-start: 0;\n border-end-start-radius: var(--cpd-space-4x);\n border-end-end-radius: var(--cpd-space-4x);\n box-sizing: border-box;\n box-shadow: 0 4px 24px 0 rgb(27 29 34 / 10%);\n margin: 0;\n padding: 0;\n padding-block-end: var(--cpd-space-4x);\n cursor: pointer;\n\n li {\n list-style-type: \"\";\n font: var(--cpd-font-body-md-medium);\n padding: var(--cpd-space-3x) var(--cpd-space-4x);\n border-block-end: 1px solid var(--cpd-color-gray-300);\n color: var(--cpd-color-text-secondary);\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--cpd-space-4x);\n\n @media (hover) {\n &:hover {\n background: var(--cpd-color-gray-200);\n }\n }\n\n &[aria-selected=\"true\"] {\n color: var(--cpd-color-text-primary);\n background: var(--cpd-color-gray-300);\n }\n }\n }\n }\n\n .open {\n display: block;\n }\n\n .help {\n font: var(--cpd-font-body-sm-regular);\n color: var(--cpd-color-text-secondary);\n }\n\n .error {\n font: var(--cpd-font-body-sm-medium);\n color: var(--cpd-color-text-critical-primary);\n display: flex;\n gap: var(--cpd-space-2x);\n }\n\n .error,\n .help {\n margin-block-start: var(--cpd-space-2x);\n }\n\n &[aria-invalid=\"true\"] {\n label {\n color: var(--cpd-color-text-critical-primary);\n }\n\n button {\n border-color: var(--cpd-color-text-critical-primary);\n }\n }\n}\n"],"mappings":""}