@dxos/react-ui 0.8.4-main.ef1bc66f44 → 0.8.4-main.effb148878

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 (563) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/browser/chunk-FFPB5LWE.mjs +1600 -0
  4. package/dist/lib/browser/chunk-FFPB5LWE.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-WU2YVQX4.mjs +32 -0
  6. package/dist/lib/browser/chunk-WU2YVQX4.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +4422 -2412
  8. package/dist/lib/browser/index.mjs.map +4 -4
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/testing/index.mjs +77 -45
  11. package/dist/lib/browser/testing/index.mjs.map +4 -4
  12. package/dist/lib/browser/translations.mjs +9 -0
  13. package/dist/lib/browser/translations.mjs.map +7 -0
  14. package/dist/lib/node-esm/chunk-TIKGPZSG.mjs +34 -0
  15. package/dist/lib/node-esm/chunk-TIKGPZSG.mjs.map +7 -0
  16. package/dist/lib/node-esm/chunk-WOYP6QDI.mjs +1602 -0
  17. package/dist/lib/node-esm/chunk-WOYP6QDI.mjs.map +7 -0
  18. package/dist/lib/node-esm/index.mjs +4422 -2412
  19. package/dist/lib/node-esm/index.mjs.map +4 -4
  20. package/dist/lib/node-esm/meta.json +1 -1
  21. package/dist/lib/node-esm/testing/index.mjs +77 -45
  22. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  23. package/dist/lib/node-esm/translations.mjs +10 -0
  24. package/dist/lib/node-esm/translations.mjs.map +7 -0
  25. package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
  26. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  27. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  28. package/dist/types/src/components/Avatars/Avatar.theme.d.ts +11 -0
  29. package/dist/types/src/components/Avatars/Avatar.theme.d.ts.map +1 -0
  30. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  31. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +5 -1
  32. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  33. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  34. package/dist/types/src/components/Breadcrumb/Breadcrumb.theme.d.ts +4 -0
  35. package/dist/types/src/components/Breadcrumb/Breadcrumb.theme.d.ts.map +1 -0
  36. package/dist/types/src/components/Button/Button.d.ts +2 -2
  37. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  38. package/dist/types/src/components/Button/Button.stories.d.ts +1 -1
  39. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -1
  40. package/dist/types/src/components/Button/Button.theme.d.ts +11 -0
  41. package/dist/types/src/components/Button/Button.theme.d.ts.map +1 -0
  42. package/dist/types/src/components/Button/IconButton.d.ts +1 -0
  43. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  44. package/dist/types/src/components/Button/IconButton.stories.d.ts +4 -0
  45. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
  46. package/dist/types/src/components/Button/IconButton.theme.d.ts +8 -0
  47. package/dist/types/src/components/Button/IconButton.theme.d.ts.map +1 -0
  48. package/dist/types/src/components/Button/Toggle.d.ts +2 -2
  49. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -1
  50. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -1
  51. package/dist/types/src/components/Button/ToggleGroup.d.ts +6 -6
  52. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -1
  53. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +2 -2
  54. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -1
  55. package/dist/types/src/components/Calendar/Calendar.d.ts +33 -0
  56. package/dist/types/src/components/Calendar/Calendar.d.ts.map +1 -0
  57. package/dist/types/src/components/Calendar/Calendar.stories.d.ts +9 -0
  58. package/dist/types/src/components/Calendar/Calendar.stories.d.ts.map +1 -0
  59. package/dist/types/src/components/Calendar/Calendar.theme.d.ts +4 -0
  60. package/dist/types/src/components/Calendar/Calendar.theme.d.ts.map +1 -0
  61. package/dist/types/src/components/Calendar/index.d.ts +2 -0
  62. package/dist/types/src/components/Calendar/index.d.ts.map +1 -0
  63. package/dist/types/src/components/Card/Card.d.ts +135 -0
  64. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  65. package/dist/types/src/components/Card/Card.stories.d.ts +22 -0
  66. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  67. package/dist/types/src/components/Card/Card.theme.d.ts +12 -0
  68. package/dist/types/src/components/Card/Card.theme.d.ts.map +1 -0
  69. package/dist/types/src/components/Card/index.d.ts +2 -0
  70. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  71. package/dist/types/src/components/Carousel/Carousel.d.ts +102 -0
  72. package/dist/types/src/components/Carousel/Carousel.d.ts.map +1 -0
  73. package/dist/types/src/components/Carousel/index.d.ts +2 -0
  74. package/dist/types/src/components/Carousel/index.d.ts.map +1 -0
  75. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  76. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  77. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  78. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  79. package/dist/types/src/components/Column/Column.d.ts +33 -0
  80. package/dist/types/src/components/Column/Column.d.ts.map +1 -0
  81. package/dist/types/src/components/Column/Column.stories.d.ts +25 -0
  82. package/dist/types/src/components/Column/Column.stories.d.ts.map +1 -0
  83. package/dist/types/src/components/Column/Column.theme.d.ts +9 -0
  84. package/dist/types/src/components/Column/Column.theme.d.ts.map +1 -0
  85. package/dist/types/src/components/Column/index.d.ts +3 -0
  86. package/dist/types/src/components/Column/index.d.ts.map +1 -0
  87. package/dist/types/src/components/Column/withColumn.d.ts +21 -0
  88. package/dist/types/src/components/Column/withColumn.d.ts.map +1 -0
  89. package/dist/types/src/components/DatePicker/DatePicker.d.ts +72 -0
  90. package/dist/types/src/components/DatePicker/DatePicker.d.ts.map +1 -0
  91. package/dist/types/src/components/DatePicker/DatePicker.stories.d.ts +10 -0
  92. package/dist/types/src/components/DatePicker/DatePicker.stories.d.ts.map +1 -0
  93. package/dist/types/src/components/DatePicker/DatePicker.theme.d.ts +6 -0
  94. package/dist/types/src/components/DatePicker/DatePicker.theme.d.ts.map +1 -0
  95. package/dist/types/src/components/DatePicker/index.d.ts +2 -0
  96. package/dist/types/src/components/DatePicker/index.d.ts.map +1 -0
  97. package/dist/types/src/components/Dialog/AlertDialog.d.ts +43 -23
  98. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
  99. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
  100. package/dist/types/src/components/Dialog/Dialog.d.ts +52 -32
  101. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  102. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +6 -8
  103. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  104. package/dist/types/src/components/Dialog/Dialog.theme.d.ts +10 -0
  105. package/dist/types/src/components/Dialog/Dialog.theme.d.ts.map +1 -0
  106. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
  107. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
  108. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
  109. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
  110. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +19 -0
  111. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
  112. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
  113. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
  114. package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
  115. package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
  116. package/dist/types/src/components/Focus/Focus.d.ts +36 -0
  117. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  118. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  119. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  120. package/dist/types/src/components/Focus/Focus.theme.d.ts +6 -0
  121. package/dist/types/src/components/Focus/Focus.theme.d.ts.map +1 -0
  122. package/dist/types/src/components/Focus/index.d.ts +2 -0
  123. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  124. package/dist/types/src/components/Icon/Icon.d.ts +4 -0
  125. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  126. package/dist/types/src/components/Icon/Icon.stories.d.ts +11 -3
  127. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
  128. package/dist/types/src/components/Icon/Icon.theme.d.ts +6 -0
  129. package/dist/types/src/components/Icon/Icon.theme.d.ts.map +1 -0
  130. package/dist/types/src/components/Image/Image.d.ts +15 -0
  131. package/dist/types/src/components/Image/Image.d.ts.map +1 -0
  132. package/dist/types/src/components/Image/Image.stories.d.ts +34 -0
  133. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -0
  134. package/dist/types/src/components/Image/index.d.ts +2 -0
  135. package/dist/types/src/components/Image/index.d.ts.map +1 -0
  136. package/dist/types/src/components/Input/Input.d.ts +90 -19
  137. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  138. package/dist/types/src/components/Input/Input.stories.d.ts +20 -9
  139. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  140. package/dist/types/src/components/Input/Input.theme.d.ts +115 -0
  141. package/dist/types/src/components/Input/Input.theme.d.ts.map +1 -0
  142. package/dist/types/src/components/Input/SegmentedInput.d.ts +79 -0
  143. package/dist/types/src/components/Input/SegmentedInput.d.ts.map +1 -0
  144. package/dist/types/src/components/Input/constants.d.ts +2 -0
  145. package/dist/types/src/components/Input/constants.d.ts.map +1 -0
  146. package/dist/types/src/components/Input/index.d.ts +2 -0
  147. package/dist/types/src/components/Input/index.d.ts.map +1 -1
  148. package/dist/types/src/components/Link/Link.d.ts.map +1 -1
  149. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  150. package/dist/types/src/components/Link/Link.theme.d.ts +6 -0
  151. package/dist/types/src/components/Link/Link.theme.d.ts.map +1 -0
  152. package/dist/types/src/components/List/List.d.ts +5 -3
  153. package/dist/types/src/components/List/List.d.ts.map +1 -1
  154. package/dist/types/src/components/List/List.stories.d.ts +3 -1
  155. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  156. package/dist/types/src/components/List/List.theme.d.ts +7 -0
  157. package/dist/types/src/components/List/List.theme.d.ts.map +1 -0
  158. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -1
  159. package/dist/types/src/components/List/Tree.d.ts +2 -2
  160. package/dist/types/src/components/List/Tree.d.ts.map +1 -1
  161. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -1
  162. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -1
  163. package/dist/types/src/components/List/Treegrid.d.ts +5 -9
  164. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
  165. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -1
  166. package/dist/types/src/components/List/Treegrid.theme.d.ts +7 -0
  167. package/dist/types/src/components/List/Treegrid.theme.d.ts.map +1 -0
  168. package/dist/types/src/components/Main/Main.d.ts +13 -9
  169. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  170. package/dist/types/src/components/Main/Main.stories.d.ts +0 -3
  171. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  172. package/dist/types/src/components/Main/Main.theme.d.ts +20 -0
  173. package/dist/types/src/components/Main/Main.theme.d.ts.map +1 -0
  174. package/dist/types/src/components/Main/constants.d.ts +3 -0
  175. package/dist/types/src/components/Main/constants.d.ts.map +1 -0
  176. package/dist/types/src/components/Main/index.d.ts +1 -0
  177. package/dist/types/src/components/Main/index.d.ts.map +1 -1
  178. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  179. package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts +43 -0
  180. package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts.map +1 -0
  181. package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts +16 -0
  182. package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts.map +1 -0
  183. package/dist/types/src/components/MediaPlayer/index.d.ts +2 -0
  184. package/dist/types/src/components/MediaPlayer/index.d.ts.map +1 -0
  185. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
  186. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
  187. package/dist/types/src/components/Menu/DropdownMenu.d.ts +58 -49
  188. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
  189. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +14 -1
  190. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
  191. package/dist/types/src/components/Menu/Menu.theme.d.ts +7 -0
  192. package/dist/types/src/components/Menu/Menu.theme.d.ts.map +1 -0
  193. package/dist/types/src/components/Message/Message.d.ts +1 -1
  194. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  195. package/dist/types/src/components/Message/Message.stories.d.ts +4 -5
  196. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  197. package/dist/types/src/components/Message/Message.theme.d.ts +7 -0
  198. package/dist/types/src/components/Message/Message.theme.d.ts.map +1 -0
  199. package/dist/types/src/components/Panel/Panel.d.ts +35 -0
  200. package/dist/types/src/components/Panel/Panel.d.ts.map +1 -0
  201. package/dist/types/src/components/Panel/Panel.stories.d.ts +6 -0
  202. package/dist/types/src/components/Panel/Panel.stories.d.ts.map +1 -0
  203. package/dist/types/src/components/Panel/Panel.theme.d.ts +13 -0
  204. package/dist/types/src/components/Panel/Panel.theme.d.ts.map +1 -0
  205. package/dist/types/src/components/Panel/index.d.ts +2 -0
  206. package/dist/types/src/components/Panel/index.d.ts.map +1 -0
  207. package/dist/types/src/components/Popover/Popover.d.ts +39 -22
  208. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  209. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  210. package/dist/types/src/components/Popover/Popover.theme.d.ts +8 -0
  211. package/dist/types/src/components/Popover/Popover.theme.d.ts.map +1 -0
  212. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +12 -11
  213. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  214. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +21 -10
  215. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  216. package/dist/types/src/components/ScrollArea/ScrollArea.theme.d.ts +17 -0
  217. package/dist/types/src/components/ScrollArea/ScrollArea.theme.d.ts.map +1 -0
  218. package/dist/types/src/components/ScrollArea/index.d.ts +1 -0
  219. package/dist/types/src/components/ScrollArea/index.d.ts.map +1 -1
  220. package/dist/types/src/components/ScrollArea/scrollbar.d.ts +18 -0
  221. package/dist/types/src/components/ScrollArea/scrollbar.d.ts.map +1 -0
  222. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +41 -18
  223. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  224. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +9 -5
  225. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
  226. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  227. package/dist/types/src/components/Select/Select.stories.d.ts +2 -2
  228. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  229. package/dist/types/src/components/Select/Select.theme.d.ts +6 -0
  230. package/dist/types/src/components/Select/Select.theme.d.ts.map +1 -0
  231. package/dist/types/src/components/Separator/Separator.d.ts +3 -3
  232. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  233. package/dist/types/src/components/Separator/Separator.theme.d.ts +7 -0
  234. package/dist/types/src/components/Separator/Separator.theme.d.ts.map +1 -0
  235. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -1
  236. package/dist/types/src/components/Skeleton/Skeleton.theme.d.ts +6 -0
  237. package/dist/types/src/components/Skeleton/Skeleton.theme.d.ts.map +1 -0
  238. package/dist/types/src/components/Splitter/Splitter.d.ts +22 -16
  239. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
  240. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -1
  241. package/dist/types/src/components/Splitter/Splitter.theme.d.ts +4 -0
  242. package/dist/types/src/components/Splitter/Splitter.theme.d.ts.map +1 -0
  243. package/dist/types/src/components/Status/Status.d.ts +3 -4
  244. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  245. package/dist/types/src/components/Status/Status.stories.d.ts +4 -2
  246. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  247. package/dist/types/src/components/Status/Status.theme.d.ts +7 -0
  248. package/dist/types/src/components/Status/Status.theme.d.ts.map +1 -0
  249. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  250. package/dist/types/src/components/Tag/Tag.stories.d.ts +0 -5
  251. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  252. package/dist/types/src/components/Tag/Tag.theme.d.ts +6 -0
  253. package/dist/types/src/components/Tag/Tag.theme.d.ts.map +1 -0
  254. package/dist/types/src/components/Toast/Toast.d.ts +15 -15
  255. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  256. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  257. package/dist/types/src/components/Toast/Toast.theme.d.ts +6 -0
  258. package/dist/types/src/components/Toast/Toast.theme.d.ts.map +1 -0
  259. package/dist/types/src/components/Toolbar/Toolbar.d.ts +46 -17
  260. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  261. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  262. package/dist/types/src/components/Toolbar/Toolbar.theme.d.ts +8 -0
  263. package/dist/types/src/components/Toolbar/Toolbar.theme.d.ts.map +1 -0
  264. package/dist/types/src/components/Tooltip/Tooltip.d.ts +16 -16
  265. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  266. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -2
  267. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  268. package/dist/types/src/components/Tooltip/Tooltip.theme.d.ts +6 -0
  269. package/dist/types/src/components/Tooltip/Tooltip.theme.d.ts.map +1 -0
  270. package/dist/types/src/components/Tooltip/index.d.ts +1 -0
  271. package/dist/types/src/components/Tooltip/index.d.ts.map +1 -1
  272. package/dist/types/src/components/Tooltip/tooltipContent.d.ts +4 -0
  273. package/dist/types/src/components/Tooltip/tooltipContent.d.ts.map +1 -0
  274. package/dist/types/src/components/index.d.ts +11 -5
  275. package/dist/types/src/components/index.d.ts.map +1 -1
  276. package/dist/types/src/exemplars/generics.stories.d.ts +8 -6
  277. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -1
  278. package/dist/types/src/exemplars/slot.stories.d.ts +1 -0
  279. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -1
  280. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -1
  281. package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
  282. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
  283. package/dist/types/src/hooks/index.d.ts +1 -0
  284. package/dist/types/src/hooks/index.d.ts.map +1 -1
  285. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  286. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  287. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  288. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  289. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  290. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  291. package/dist/types/src/hooks/useTranslationsContext.d.ts +1 -1
  292. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  293. package/dist/types/src/index.d.ts +1 -0
  294. package/dist/types/src/index.d.ts.map +1 -1
  295. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  296. package/dist/types/src/playground/Custom.stories.d.ts +1 -1
  297. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  298. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  299. package/dist/types/src/primitives/Container/Container.d.ts +6 -22
  300. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -1
  301. package/dist/types/src/primitives/Container/Container.stories.d.ts +2 -7
  302. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -1
  303. package/dist/types/src/primitives/Container/index.d.ts +0 -1
  304. package/dist/types/src/primitives/Container/index.d.ts.map +1 -1
  305. package/dist/types/src/{components → primitives}/DensityProvider/DensityProvider.d.ts.map +1 -1
  306. package/dist/types/src/primitives/DensityProvider/index.d.ts.map +1 -0
  307. package/dist/types/src/{components → primitives}/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  308. package/dist/types/src/primitives/ElevationProvider/index.d.ts.map +1 -0
  309. package/dist/types/src/primitives/Flex/Flex.d.ts +8 -5
  310. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
  311. package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
  312. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
  313. package/dist/types/src/primitives/Grid/Grid.d.ts +10 -0
  314. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
  315. package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
  316. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
  317. package/dist/types/src/primitives/Grid/index.d.ts +2 -0
  318. package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
  319. package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.d.ts +1 -1
  320. package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  321. package/dist/types/src/primitives/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
  322. package/dist/types/src/primitives/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  323. package/dist/types/src/primitives/ThemeProvider/TranslationsProvider.d.ts +128 -0
  324. package/dist/types/src/primitives/ThemeProvider/TranslationsProvider.d.ts.map +1 -0
  325. package/dist/types/src/primitives/ThemeProvider/index.d.ts +4 -0
  326. package/dist/types/src/primitives/ThemeProvider/index.d.ts.map +1 -0
  327. package/dist/types/src/primitives/index.d.ts +4 -0
  328. package/dist/types/src/primitives/index.d.ts.map +1 -1
  329. package/dist/types/src/testing/Loading.d.ts +9 -0
  330. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  331. package/dist/types/src/testing/decorators/withLayout.d.ts +1 -1
  332. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  333. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  334. package/dist/types/src/testing/decorators/withTheme.d.ts +6 -2
  335. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  336. package/dist/types/src/testing/index.d.ts +1 -0
  337. package/dist/types/src/testing/index.d.ts.map +1 -1
  338. package/dist/types/src/theme/bindTheme.d.ts +3 -0
  339. package/dist/types/src/theme/bindTheme.d.ts.map +1 -0
  340. package/dist/types/src/theme/defaultTheme.d.ts +4 -0
  341. package/dist/types/src/theme/defaultTheme.d.ts.map +1 -0
  342. package/dist/types/src/theme/index.d.ts +31 -0
  343. package/dist/types/src/theme/index.d.ts.map +1 -0
  344. package/dist/types/src/translations.d.ts +24 -0
  345. package/dist/types/src/translations.d.ts.map +1 -0
  346. package/dist/types/src/util/index.d.ts +2 -1
  347. package/dist/types/src/util/index.d.ts.map +1 -1
  348. package/dist/types/src/util/mobile.d.ts +5 -0
  349. package/dist/types/src/util/mobile.d.ts.map +1 -0
  350. package/dist/types/src/util/slots.d.ts +57 -0
  351. package/dist/types/src/util/slots.d.ts.map +1 -0
  352. package/dist/types/src/util/usePx.d.ts.map +1 -1
  353. package/dist/types/tsconfig.tsbuildinfo +1 -1
  354. package/package.json +36 -27
  355. package/src/components/Avatars/Avatar.stories.tsx +5 -7
  356. package/src/components/Avatars/Avatar.theme.ts +93 -0
  357. package/src/components/Avatars/Avatar.tsx +6 -14
  358. package/src/components/Avatars/AvatarGroup.stories.tsx +0 -1
  359. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -2
  360. package/src/components/Breadcrumb/Breadcrumb.theme.ts +26 -0
  361. package/src/components/Breadcrumb/Breadcrumb.tsx +25 -39
  362. package/src/components/Button/Button.stories.tsx +1 -2
  363. package/src/components/Button/Button.theme.ts +31 -0
  364. package/src/components/Button/Button.tsx +11 -25
  365. package/src/components/Button/IconButton.stories.tsx +56 -6
  366. package/src/components/Button/IconButton.theme.ts +21 -0
  367. package/src/components/Button/IconButton.tsx +3 -4
  368. package/src/components/Button/Toggle.stories.tsx +0 -1
  369. package/src/components/Button/Toggle.tsx +4 -4
  370. package/src/components/Button/ToggleGroup.stories.tsx +0 -1
  371. package/src/components/Button/ToggleGroup.tsx +12 -16
  372. package/src/components/Calendar/Calendar.stories.tsx +43 -0
  373. package/src/components/Calendar/Calendar.theme.ts +74 -0
  374. package/src/components/Calendar/Calendar.tsx +196 -0
  375. package/src/components/Calendar/index.ts +5 -0
  376. package/src/components/Card/Card.stories.tsx +172 -0
  377. package/src/components/Card/Card.theme.ts +101 -0
  378. package/src/components/Card/Card.tsx +496 -0
  379. package/src/components/Card/index.ts +5 -0
  380. package/src/components/Carousel/Carousel.tsx +371 -0
  381. package/src/components/Carousel/index.ts +5 -0
  382. package/src/components/Clipboard/CopyButton.tsx +7 -8
  383. package/src/components/Column/AUDIT.md +148 -0
  384. package/src/components/Column/Column.stories.tsx +181 -0
  385. package/src/components/Column/Column.theme.ts +48 -0
  386. package/src/components/Column/Column.tsx +165 -0
  387. package/src/components/Column/index.ts +6 -0
  388. package/src/components/Column/withColumn.ts +27 -0
  389. package/src/components/DatePicker/DatePicker.stories.tsx +102 -0
  390. package/src/components/DatePicker/DatePicker.theme.ts +35 -0
  391. package/src/components/DatePicker/DatePicker.tsx +279 -0
  392. package/src/components/DatePicker/index.ts +5 -0
  393. package/src/components/Dialog/AlertDialog.stories.tsx +14 -15
  394. package/src/components/Dialog/AlertDialog.tsx +125 -85
  395. package/src/components/Dialog/Dialog.stories.tsx +91 -15
  396. package/src/components/Dialog/Dialog.theme.ts +61 -0
  397. package/src/components/Dialog/Dialog.tsx +131 -117
  398. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +45 -0
  399. package/src/components/ErrorFallback/ErrorFallback.tsx +76 -0
  400. package/src/components/ErrorFallback/ErrorStack.tsx +120 -0
  401. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  402. package/src/components/ErrorFallback/index.ts +9 -0
  403. package/src/components/Focus/AUDIT.md +43 -0
  404. package/src/components/Focus/Focus.stories.tsx +230 -0
  405. package/src/components/Focus/Focus.theme.ts +32 -0
  406. package/src/components/Focus/Focus.tsx +201 -0
  407. package/src/components/Focus/index.ts +5 -0
  408. package/src/components/Icon/Icon.stories.tsx +43 -13
  409. package/src/components/Icon/Icon.theme.ts +27 -0
  410. package/src/components/Icon/Icon.tsx +14 -3
  411. package/src/components/Image/Image.stories.tsx +86 -0
  412. package/src/components/Image/Image.tsx +246 -0
  413. package/src/components/Image/index.ts +5 -0
  414. package/src/components/Input/Input.stories.tsx +146 -64
  415. package/src/components/Input/Input.theme.ts +191 -0
  416. package/src/components/Input/Input.tsx +230 -72
  417. package/src/components/Input/SegmentedInput.tsx +453 -0
  418. package/src/components/Input/constants.ts +5 -0
  419. package/src/components/Input/index.ts +2 -0
  420. package/src/components/Link/Link.stories.tsx +0 -1
  421. package/src/components/Link/Link.theme.ts +16 -0
  422. package/src/components/Link/Link.tsx +11 -3
  423. package/src/components/List/List.stories.tsx +14 -22
  424. package/src/components/List/List.theme.ts +47 -0
  425. package/src/components/List/List.tsx +17 -21
  426. package/src/components/List/ListDropIndicator.tsx +7 -8
  427. package/src/components/List/Tree.stories.tsx +4 -5
  428. package/src/components/List/Tree.tsx +0 -1
  429. package/src/components/List/TreeDropIndicator.tsx +6 -6
  430. package/src/components/List/Treegrid.stories.tsx +27 -28
  431. package/src/components/List/Treegrid.theme.ts +35 -0
  432. package/src/components/List/Treegrid.tsx +22 -28
  433. package/src/components/Main/Main.stories.tsx +3 -7
  434. package/src/components/Main/Main.theme.ts +29 -0
  435. package/src/components/Main/Main.tsx +64 -53
  436. package/src/components/Main/constants.ts +6 -0
  437. package/src/components/Main/index.ts +1 -0
  438. package/src/components/MediaPlayer/MediaPlayer.stories.tsx +50 -0
  439. package/src/components/MediaPlayer/MediaPlayer.tsx +178 -0
  440. package/src/components/MediaPlayer/index.ts +5 -0
  441. package/src/components/Menu/ContextMenu.stories.tsx +0 -1
  442. package/src/components/Menu/ContextMenu.tsx +9 -33
  443. package/src/components/Menu/DropdownMenu.stories.tsx +0 -1
  444. package/src/components/Menu/DropdownMenu.tsx +73 -67
  445. package/src/components/Menu/Menu.theme.ts +48 -0
  446. package/src/components/Message/Message.stories.tsx +25 -11
  447. package/src/components/Message/Message.theme.ts +39 -0
  448. package/src/components/Message/Message.tsx +32 -31
  449. package/src/components/Panel/Panel.stories.tsx +67 -0
  450. package/src/components/Panel/Panel.theme.ts +42 -0
  451. package/src/components/Panel/Panel.tsx +121 -0
  452. package/src/components/Panel/index.ts +5 -0
  453. package/src/components/Popover/Popover.stories.tsx +5 -6
  454. package/src/components/Popover/Popover.theme.ts +40 -0
  455. package/src/components/Popover/Popover.tsx +69 -66
  456. package/src/components/ScrollArea/ScrollArea.stories.tsx +98 -39
  457. package/src/components/ScrollArea/ScrollArea.theme.ts +104 -0
  458. package/src/components/ScrollArea/ScrollArea.tsx +46 -33
  459. package/src/components/ScrollArea/index.ts +1 -0
  460. package/src/components/ScrollArea/scrollbar.ts +21 -0
  461. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +46 -25
  462. package/src/components/ScrollContainer/ScrollContainer.tsx +215 -106
  463. package/src/components/Select/Select.stories.tsx +5 -6
  464. package/src/components/Select/Select.theme.ts +55 -0
  465. package/src/components/Select/Select.tsx +35 -35
  466. package/src/components/Separator/Separator.theme.ts +23 -0
  467. package/src/components/Separator/Separator.tsx +5 -8
  468. package/src/components/Skeleton/Skeleton.stories.tsx +12 -13
  469. package/src/components/Skeleton/Skeleton.theme.ts +22 -0
  470. package/src/components/Skeleton/Skeleton.tsx +1 -1
  471. package/src/components/Splitter/Splitter.stories.tsx +47 -37
  472. package/src/components/Splitter/Splitter.theme.ts +18 -0
  473. package/src/components/Splitter/Splitter.tsx +45 -46
  474. package/src/components/Status/Status.stories.tsx +19 -16
  475. package/src/components/Status/Status.theme.ts +31 -0
  476. package/src/components/Status/Status.tsx +9 -7
  477. package/src/components/Tag/Tag.stories.tsx +3 -9
  478. package/src/components/Tag/Tag.theme.ts +22 -0
  479. package/src/components/Tag/Tag.tsx +2 -7
  480. package/src/components/Toast/Toast.stories.tsx +0 -1
  481. package/src/components/Toast/Toast.theme.ts +52 -0
  482. package/src/components/Toast/Toast.tsx +24 -43
  483. package/src/components/Toolbar/Toolbar.stories.tsx +0 -1
  484. package/src/components/Toolbar/Toolbar.theme.ts +36 -0
  485. package/src/components/Toolbar/Toolbar.tsx +225 -30
  486. package/src/components/Tooltip/Tooltip.stories.tsx +18 -17
  487. package/src/components/Tooltip/Tooltip.theme.ts +19 -0
  488. package/src/components/Tooltip/Tooltip.tsx +36 -35
  489. package/src/components/Tooltip/index.ts +1 -0
  490. package/src/components/Tooltip/tooltipContent.ts +16 -0
  491. package/src/components/index.ts +11 -6
  492. package/src/exemplars/generics.stories.tsx +12 -16
  493. package/src/exemplars/slot.stories.tsx +68 -60
  494. package/src/exemplars/tabster.stories.tsx +5 -5
  495. package/src/exemplars/virtualizer.stories.tsx +136 -0
  496. package/src/hooks/index.ts +1 -0
  497. package/src/hooks/useDensityContext.ts +3 -3
  498. package/src/hooks/useElevationContext.ts +1 -1
  499. package/src/hooks/useThemeContext.ts +1 -1
  500. package/src/hooks/useTranslationsContext.ts +1 -1
  501. package/src/index.ts +1 -0
  502. package/src/playground/Controls.stories.tsx +0 -6
  503. package/src/playground/Custom.stories.tsx +16 -39
  504. package/src/playground/Typography.stories.tsx +1 -1
  505. package/src/primitives/Container/Container.stories.tsx +13 -51
  506. package/src/primitives/Container/Container.tsx +13 -74
  507. package/src/primitives/Container/index.ts +0 -1
  508. package/src/{components → primitives}/DensityProvider/DensityProvider.tsx +1 -1
  509. package/src/primitives/Flex/Flex.stories.tsx +57 -0
  510. package/src/primitives/Flex/Flex.tsx +21 -18
  511. package/src/primitives/Grid/Grid.stories.tsx +56 -0
  512. package/src/primitives/Grid/Grid.tsx +32 -0
  513. package/src/primitives/Grid/index.ts +5 -0
  514. package/src/primitives/ThemeProvider/ThemeProvider.stories.tsx +31 -0
  515. package/src/{components → primitives}/ThemeProvider/ThemeProvider.tsx +9 -8
  516. package/src/{components → primitives}/ThemeProvider/index.ts +2 -2
  517. package/src/primitives/index.ts +5 -0
  518. package/src/testing/Loading.tsx +47 -0
  519. package/src/testing/decorators/withLayout.tsx +15 -11
  520. package/src/testing/decorators/withLayoutVariants.tsx +19 -22
  521. package/src/testing/decorators/withTheme.tsx +23 -12
  522. package/src/testing/index.ts +2 -0
  523. package/src/theme/bindTheme.ts +13 -0
  524. package/src/theme/defaultTheme.ts +83 -0
  525. package/src/theme/index.ts +37 -0
  526. package/src/translations.ts +32 -0
  527. package/src/util/index.ts +2 -1
  528. package/src/util/mobile.ts +11 -0
  529. package/src/util/slots.ts +129 -0
  530. package/src/util/usePx.ts +5 -1
  531. package/dist/lib/browser/chunk-EJYV4HAH.mjs +0 -774
  532. package/dist/lib/browser/chunk-EJYV4HAH.mjs.map +0 -7
  533. package/dist/lib/node-esm/chunk-YTLZCZ2M.mjs +0 -776
  534. package/dist/lib/node-esm/chunk-YTLZCZ2M.mjs.map +0 -7
  535. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -22
  536. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  537. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  538. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  539. package/dist/types/src/components/DensityProvider/index.d.ts.map +0 -1
  540. package/dist/types/src/components/ElevationProvider/index.d.ts.map +0 -1
  541. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +0 -129
  542. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +0 -1
  543. package/dist/types/src/components/ThemeProvider/index.d.ts +0 -4
  544. package/dist/types/src/components/ThemeProvider/index.d.ts.map +0 -1
  545. package/dist/types/src/primitives/Container/Layout.d.ts +0 -18
  546. package/dist/types/src/primitives/Container/Layout.d.ts.map +0 -1
  547. package/dist/types/src/primitives/Container/Layout.stories.d.ts +0 -10
  548. package/dist/types/src/primitives/Container/Layout.stories.d.ts.map +0 -1
  549. package/dist/types/src/util/hasIosKeyboard.d.ts +0 -2
  550. package/dist/types/src/util/hasIosKeyboard.d.ts.map +0 -1
  551. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -67
  552. package/src/components/AnchoredOverflow/index.ts +0 -5
  553. package/src/primitives/Container/Layout.stories.tsx +0 -57
  554. package/src/primitives/Container/Layout.tsx +0 -61
  555. package/src/util/hasIosKeyboard.ts +0 -8
  556. /package/dist/types/src/{components → primitives}/DensityProvider/DensityProvider.d.ts +0 -0
  557. /package/dist/types/src/{components → primitives}/DensityProvider/index.d.ts +0 -0
  558. /package/dist/types/src/{components → primitives}/ElevationProvider/ElevationProvider.d.ts +0 -0
  559. /package/dist/types/src/{components → primitives}/ElevationProvider/index.d.ts +0 -0
  560. /package/src/{components → primitives}/DensityProvider/index.ts +0 -0
  561. /package/src/{components → primitives}/ElevationProvider/ElevationProvider.tsx +0 -0
  562. /package/src/{components → primitives}/ElevationProvider/index.ts +0 -0
  563. /package/src/{components → primitives}/ThemeProvider/TranslationsProvider.tsx +0 -0
@@ -2,14 +2,20 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { Primitive } from '@radix-ui/react-primitive';
6
+ import { Slot } from '@radix-ui/react-slot';
5
7
  import type { ToggleGroupItemProps as ToggleGroupItemPrimitiveProps } from '@radix-ui/react-toggle-group';
6
8
  import * as ToolbarPrimitive from '@radix-ui/react-toolbar';
7
- import React, { Fragment, forwardRef } from 'react';
9
+ import React, { type MouseEventHandler, forwardRef } from 'react';
10
+ import { useTranslation } from 'react-i18next';
8
11
 
9
- import { type ToolbarStyleProps } from '@dxos/ui-theme';
12
+ import { type SlottableProps } from '@dxos/ui-types';
13
+
14
+ import { translationKey } from '#translations';
10
15
 
11
16
  import { useThemeContext } from '../../hooks';
12
- import { type ThemedClassName } from '../../util';
17
+ import { type ToolbarStyleProps } from '../../theme';
18
+ import { composable, composableProps, slottable } from '../../util';
13
19
  import {
14
20
  Button,
15
21
  ButtonGroup,
@@ -22,43 +28,61 @@ import {
22
28
  type ToggleProps,
23
29
  } from '../Button';
24
30
  import { Link, type LinkProps } from '../Link';
31
+ import { DropdownMenu } from '../Menu';
25
32
  import { Separator, type SeparatorProps } from '../Separator';
26
33
 
27
- type ToolbarRootProps = ThemedClassName<
28
- ToolbarPrimitive.ToolbarProps &
29
- ToolbarStyleProps & {
30
- textBlockWidth?: boolean;
31
- }
32
- >;
33
-
34
- // TODO(burdon): Implement asChild property.
35
- const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
36
- (
37
- { classNames, children, density, disabled, layoutManaged, textBlockWidth: textBlockWidthProp, ...props },
38
- forwardedRef,
39
- ) => {
34
+ //
35
+ // Root
36
+ //
37
+
38
+ type ToolbarRootProps = ToolbarPrimitive.ToolbarProps & ToolbarStyleProps;
39
+
40
+ const ToolbarRoot = composable<HTMLDivElement, ToolbarRootProps>(
41
+ ({ children, density, disabled, layoutManaged, orientation, ...props }, forwardedRef) => {
42
+ const { className, role, ...rest } = composableProps(props);
40
43
  const { tx } = useThemeContext();
41
- const InnerRoot = textBlockWidthProp ? 'div' : Fragment;
42
- const innerRootProps = textBlockWidthProp
43
- ? {
44
- role: 'none',
45
- className: tx('toolbar.inner', 'toolbar', { layoutManaged }, classNames),
46
- }
47
- : {};
48
44
 
49
45
  return (
50
46
  <ToolbarPrimitive.Root
51
- {...props}
52
- data-arrow-keys={props.orientation === 'vertical' ? 'up down' : 'left right'}
53
- className={tx('toolbar.root', 'toolbar', { density, disabled, layoutManaged }, classNames)}
47
+ {...rest}
48
+ // Only pass role when explicitly set; radix provides role="toolbar" by default.
49
+ {...(role !== 'none' && { role })}
50
+ orientation={orientation}
51
+ data-arrow-keys={orientation === 'vertical' ? 'up down' : 'left right'}
52
+ className={tx('toolbar.root', { density, disabled, layoutManaged }, className)}
54
53
  ref={forwardedRef}
55
54
  >
56
- <InnerRoot {...innerRootProps}>{children}</InnerRoot>
55
+ {children}
57
56
  </ToolbarPrimitive.Root>
58
57
  );
59
58
  },
60
59
  );
61
60
 
61
+ ToolbarRoot.displayName = 'Toolbar.Root';
62
+
63
+ //
64
+ // Text
65
+ //
66
+
67
+ type ToolbarTextProps = SlottableProps;
68
+
69
+ const ToolbarText = slottable<HTMLDivElement>(({ children, asChild, ...props }, forwardedRef) => {
70
+ const { className, ...rest } = composableProps(props);
71
+ const Comp = asChild ? Slot : Primitive.div;
72
+ const { tx } = useThemeContext();
73
+ return (
74
+ <Comp {...rest} className={tx('toolbar.text', {}, className)} ref={forwardedRef}>
75
+ {children}
76
+ </Comp>
77
+ );
78
+ });
79
+
80
+ ToolbarText.displayName = 'Toolbar.Text';
81
+
82
+ //
83
+ // Button
84
+ //
85
+
62
86
  type ToolbarButtonProps = ButtonProps;
63
87
 
64
88
  const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>((props, forwardedRef) => {
@@ -69,6 +93,12 @@ const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>((props,
69
93
  );
70
94
  });
71
95
 
96
+ ToolbarButton.displayName = 'Toolbar.Button';
97
+
98
+ //
99
+ // IconButton
100
+ //
101
+
72
102
  type ToolbarIconButtonProps = IconButtonProps;
73
103
 
74
104
  const ToolbarIconButton = forwardRef<HTMLButtonElement, ToolbarIconButtonProps>((props, forwardedRef) => {
@@ -79,6 +109,8 @@ const ToolbarIconButton = forwardRef<HTMLButtonElement, ToolbarIconButtonProps>(
79
109
  );
80
110
  });
81
111
 
112
+ ToolbarIconButton.displayName = 'Toolbar.IconButton';
113
+
82
114
  type ToolbarToggleProps = ToggleProps;
83
115
 
84
116
  const ToolbarToggle = forwardRef<HTMLButtonElement, ToolbarToggleProps>((props, forwardedRef) => {
@@ -89,6 +121,12 @@ const ToolbarToggle = forwardRef<HTMLButtonElement, ToolbarToggleProps>((props,
89
121
  );
90
122
  });
91
123
 
124
+ ToolbarToggle.displayName = 'Toolbar.Toggle';
125
+
126
+ //
127
+ // Link
128
+ //
129
+
92
130
  type ToolbarLinkProps = LinkProps;
93
131
 
94
132
  const ToolbarLink = forwardRef<HTMLAnchorElement, ToolbarLinkProps>((props, forwardedRef) => {
@@ -99,12 +137,18 @@ const ToolbarLink = forwardRef<HTMLAnchorElement, ToolbarLinkProps>((props, forw
99
137
  );
100
138
  });
101
139
 
140
+ ToolbarLink.displayName = 'Toolbar.Link';
141
+
102
142
  type ToolbarToggleGroupProps = (
103
143
  | Omit<ToolbarPrimitive.ToolbarToggleGroupSingleProps, 'className'>
104
144
  | Omit<ToolbarPrimitive.ToolbarToggleGroupMultipleProps, 'className'>
105
145
  ) &
106
146
  ButtonGroupProps;
107
147
 
148
+ //
149
+ // ToggleGroup
150
+ //
151
+
108
152
  const ToolbarToggleGroup = forwardRef<HTMLDivElement, ToolbarToggleGroupProps>(
109
153
  ({ classNames, children, elevation, ...props }, forwardedRef) => {
110
154
  return (
@@ -115,6 +159,8 @@ const ToolbarToggleGroup = forwardRef<HTMLDivElement, ToolbarToggleGroupProps>(
115
159
  },
116
160
  );
117
161
 
162
+ ToolbarToggleGroup.displayName = 'Toolbar.ToggleGroup';
163
+
118
164
  type ToolbarToggleGroupItemProps = ToggleGroupItemProps;
119
165
 
120
166
  const ToolbarToggleGroupItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupItemProps>(
@@ -127,10 +173,12 @@ const ToolbarToggleGroupItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupI
127
173
  },
128
174
  );
129
175
 
176
+ ToolbarToggleGroupItem.displayName = 'Toolbar.ToggleGroupItem';
177
+
130
178
  type ToolbarToggleGroupIconItemProps = Omit<ToggleGroupItemPrimitiveProps, 'className'> & IconButtonProps;
131
179
 
132
180
  const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupIconItemProps>(
133
- ({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
181
+ ({ variant, density, elevation, classNames, icon, label, iconOnly, iconClassNames, ...props }, forwardedRef) => {
134
182
  return (
135
183
  <ToolbarPrimitive.ToolbarToggleItem {...props} asChild>
136
184
  <IconButton
@@ -142,6 +190,7 @@ const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGr
142
190
  icon,
143
191
  label,
144
192
  iconOnly,
193
+ iconClassNames,
145
194
  }}
146
195
  ref={forwardedRef}
147
196
  />
@@ -150,13 +199,19 @@ const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGr
150
199
  },
151
200
  );
152
201
 
202
+ ToolbarToggleGroupIconItem.displayName = 'Toolbar.ToggleGroupIconItem';
203
+
204
+ //
205
+ // Separator
206
+ //
207
+
153
208
  type ToolbarSeparatorProps = SeparatorProps & { variant?: 'gap' | 'line' };
154
209
 
155
210
  const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
156
- ({ variant = 'line', ...props }, forwardedRef) => {
211
+ ({ variant = 'gap', ...props }, forwardedRef) => {
157
212
  return variant === 'line' ? (
158
213
  <ToolbarPrimitive.Separator asChild>
159
- <Separator {...props} ref={forwardedRef} />
214
+ <Separator orientation='vertical' {...props} ref={forwardedRef} />
160
215
  </ToolbarPrimitive.Separator>
161
216
  ) : (
162
217
  <ToolbarPrimitive.Separator className='grow' ref={forwardedRef} />
@@ -164,8 +219,139 @@ const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
164
219
  },
165
220
  );
166
221
 
222
+ ToolbarSeparator.displayName = 'Toolbar.Separator';
223
+
224
+ //
225
+ // DragHandle
226
+ //
227
+
228
+ type ToolbarDragHandleProps = { testId?: string; label?: string };
229
+
230
+ const ToolbarDragHandle = forwardRef<HTMLButtonElement, ToolbarDragHandleProps>(
231
+ ({ testId = 'drag-handle', label }, forwardedRef) => {
232
+ const { t } = useTranslation(translationKey);
233
+ return (
234
+ <ToolbarIconButton
235
+ data-testid={testId}
236
+ tabIndex={-1}
237
+ noTooltip
238
+ iconOnly
239
+ icon='ph--dots-six-vertical--regular'
240
+ variant='ghost'
241
+ label={label ?? t('toolbar-drag-handle.label')}
242
+ classNames='dx-focus-ring-none cursor-pointer'
243
+ disabled={!forwardedRef}
244
+ ref={forwardedRef}
245
+ />
246
+ );
247
+ },
248
+ );
249
+
250
+ ToolbarDragHandle.displayName = 'Toolbar.DragHandle';
251
+
252
+ //
253
+ // ActionIconButton
254
+ //
255
+
256
+ /**
257
+ * Known semantic actions a toolbar icon-button can represent. Each action
258
+ * picks its own phosphor icon + default translation key so call sites just
259
+ * declare intent (`action='delete'`) rather than re-specifying the icon /
260
+ * label every time.
261
+ */
262
+ type ToolbarActionIconButtonAction = 'close' | 'delete';
263
+
264
+ type ToolbarActionIconButtonProps = {
265
+ action: ToolbarActionIconButtonAction;
266
+ onClick?: MouseEventHandler<HTMLButtonElement>;
267
+ label?: string;
268
+ };
269
+
270
+ const TOOLBAR_ACTION_ICONS: Record<ToolbarActionIconButtonAction, string> = {
271
+ close: 'ph--x--regular',
272
+ delete: 'ph--trash--regular',
273
+ };
274
+
275
+ const TOOLBAR_ACTION_LABEL_KEYS: Record<ToolbarActionIconButtonAction, string> = {
276
+ close: 'toolbar-close.label',
277
+ delete: 'toolbar-delete.label',
278
+ };
279
+
280
+ const ToolbarActionIconButton = forwardRef<HTMLButtonElement, ToolbarActionIconButtonProps>(
281
+ ({ action, onClick, label }, forwardedRef) => {
282
+ const { t } = useTranslation(translationKey);
283
+
284
+ return (
285
+ <ToolbarIconButton
286
+ iconOnly
287
+ icon={TOOLBAR_ACTION_ICONS[action]}
288
+ variant='ghost'
289
+ label={label ?? t(TOOLBAR_ACTION_LABEL_KEYS[action])}
290
+ classNames='cursor-pointer'
291
+ onClick={onClick}
292
+ ref={forwardedRef}
293
+ />
294
+ );
295
+ },
296
+ );
297
+
298
+ ToolbarActionIconButton.displayName = 'Toolbar.ActionIconButton';
299
+
300
+ //
301
+ // Menu
302
+ //
303
+
304
+ type ToolbarMenuItem<T extends any | void = void> = {
305
+ label: string;
306
+ onClick: (context: T) => void;
307
+ };
308
+
309
+ type ToolbarMenuProps<T extends any | void = void> = {
310
+ context?: T;
311
+ items?: ToolbarMenuItem<T>[];
312
+ };
313
+
314
+ // TODO(burdon): Make slottable.
315
+ function ToolbarMenu<T extends any | void = void>({ context, items }: ToolbarMenuProps<T>) {
316
+ const { t } = useTranslation(translationKey);
317
+
318
+ return (
319
+ <DropdownMenu.Root>
320
+ <DropdownMenu.Trigger disabled={!items?.length} asChild>
321
+ <ToolbarIconButton
322
+ iconOnly
323
+ variant='ghost'
324
+ icon='ph--dots-three-vertical--regular'
325
+ label={t('toolbar-menu.label')}
326
+ />
327
+ </DropdownMenu.Trigger>
328
+ {(items?.length ?? 0) > 0 && (
329
+ <DropdownMenu.Portal>
330
+ <DropdownMenu.Content>
331
+ <DropdownMenu.Viewport>
332
+ {items?.map(({ label, onClick: onSelect }, index) => (
333
+ <DropdownMenu.Item key={index} onSelect={() => onSelect(context as T)}>
334
+ {label}
335
+ </DropdownMenu.Item>
336
+ ))}
337
+ </DropdownMenu.Viewport>
338
+ <DropdownMenu.Arrow />
339
+ </DropdownMenu.Content>
340
+ </DropdownMenu.Portal>
341
+ )}
342
+ </DropdownMenu.Root>
343
+ );
344
+ }
345
+
346
+ ToolbarMenu.displayName = 'Toolbar.Menu';
347
+
348
+ //
349
+ // Toolbar
350
+ //
351
+
167
352
  export const Toolbar = {
168
353
  Root: ToolbarRoot,
354
+ Text: ToolbarText,
169
355
  Button: ToolbarButton,
170
356
  IconButton: ToolbarIconButton,
171
357
  Link: ToolbarLink,
@@ -174,10 +360,14 @@ export const Toolbar = {
174
360
  ToggleGroupItem: ToolbarToggleGroupItem,
175
361
  ToggleGroupIconItem: ToolbarToggleGroupIconItem,
176
362
  Separator: ToolbarSeparator,
363
+ DragHandle: ToolbarDragHandle,
364
+ ActionIconButton: ToolbarActionIconButton,
365
+ Menu: ToolbarMenu,
177
366
  };
178
367
 
179
368
  export type {
180
369
  ToolbarRootProps,
370
+ ToolbarTextProps,
181
371
  ToolbarButtonProps,
182
372
  ToolbarIconButtonProps,
183
373
  ToolbarLinkProps,
@@ -186,4 +376,9 @@ export type {
186
376
  ToolbarToggleGroupItemProps,
187
377
  ToolbarToggleGroupIconItemProps,
188
378
  ToolbarSeparatorProps,
379
+ ToolbarDragHandleProps,
380
+ ToolbarActionIconButtonAction,
381
+ ToolbarActionIconButtonProps,
382
+ ToolbarMenuItem,
383
+ ToolbarMenuProps,
189
384
  };
@@ -5,29 +5,30 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
- import { faker } from '@dxos/random';
8
+ import { random } from '@dxos/random';
9
9
 
10
10
  import { withTheme } from '../../testing';
11
11
  import { Button } from '../Button';
12
-
13
12
  import { Tooltip } from './Tooltip';
14
13
 
15
- type StoryProps = {
14
+ type DefaultStoryProps = {
16
15
  tooltips: { label: string; content: string }[];
17
16
  defaultOpen?: boolean;
18
17
  };
19
18
 
20
- const DefaultStory = ({ tooltips, defaultOpen }: StoryProps) => (
21
- <Tooltip.Provider defaultOpen={defaultOpen}>
22
- <div role='none' className='is-32'>
23
- {tooltips.map(({ label, content }, i) => (
24
- <Tooltip.Trigger asChild key={i} content={content} side='right'>
25
- <Button classNames='block is-full'>{label}</Button>
26
- </Tooltip.Trigger>
27
- ))}
28
- </div>
29
- </Tooltip.Provider>
30
- );
19
+ const DefaultStory = ({ tooltips, defaultOpen }: DefaultStoryProps) => {
20
+ return (
21
+ <Tooltip.Provider defaultOpen={defaultOpen}>
22
+ <div className='w-32'>
23
+ {tooltips.map(({ label, content }, i) => (
24
+ <Tooltip.Trigger asChild key={i} content={content} side='right'>
25
+ <Button classNames='block w-full'>{label}</Button>
26
+ </Tooltip.Trigger>
27
+ ))}
28
+ </div>
29
+ </Tooltip.Provider>
30
+ );
31
+ };
31
32
 
32
33
  const meta = {
33
34
  title: 'ui/react-ui-core/components/Tooltip',
@@ -72,10 +73,10 @@ export const DefaultOpen: Story = {
72
73
  export const StressTest: Story = {
73
74
  args: {
74
75
  defaultOpen: true,
75
- tooltips: faker.helpers.multiple(
76
+ tooltips: random.helpers.multiple(
76
77
  () => ({
77
- label: faker.lorem.words(2),
78
- content: faker.lorem.words(5),
78
+ label: random.lorem.words(2),
79
+ content: random.lorem.words(5),
79
80
  }),
80
81
  { count: 32 },
81
82
  ),
@@ -0,0 +1,19 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { mx } from '@dxos/ui-theme';
6
+ import { type ComponentFunction, type Elevation, type Theme } from '@dxos/ui-types';
7
+
8
+ import { tooltipContent } from './tooltipContent';
9
+
10
+ export type TooltipStyleProps = Partial<{
11
+ elevation: Elevation;
12
+ }>;
13
+
14
+ const arrow: ComponentFunction<TooltipStyleProps> = (_props, ...etc) => mx('fill-inverse-surface', ...etc);
15
+
16
+ export const tooltipTheme: Theme<TooltipStyleProps> = {
17
+ content: tooltipContent,
18
+ arrow,
19
+ };
@@ -3,6 +3,7 @@
3
3
  //
4
4
 
5
5
  // This is based upon `@radix-ui/react-tooltip` fetched 17 March 2025 at https://github.com/radix-ui/primitives at commit 6e75e11.
6
+ // TODO(burdon): Replace with https://ui.shadcn.com/docs/components/radix/tooltip
6
7
 
7
8
  import { composeEventHandlers } from '@radix-ui/primitive';
8
9
  import { useComposedRefs } from '@radix-ui/react-compose-refs';
@@ -21,9 +22,8 @@ import { useControllableState } from '@radix-ui/react-use-controllable-state';
21
22
  import * as VisuallyHiddenPrimitive from '@radix-ui/react-visually-hidden';
22
23
  import React, {
23
24
  type ComponentPropsWithoutRef,
24
- type ElementRef,
25
+ type ComponentRef,
25
26
  type FC,
26
- type MutableRefObject,
27
27
  type ReactNode,
28
28
  type RefObject,
29
29
  type SyntheticEvent,
@@ -54,19 +54,19 @@ type TooltipContextValue = {
54
54
  open: boolean;
55
55
  stateAttribute: 'closed' | 'delayed-open' | 'instant-open';
56
56
  trigger: TooltipTriggerElement | null;
57
- onTriggerChange(trigger: TooltipTriggerElement | null): void;
57
+ onTriggerChange(trigger: TooltipTriggerElement | null, content?: ReactNode, side?: TooltipSide): void;
58
58
  onTriggerEnter(): void;
59
59
  onTriggerLeave(): void;
60
60
  onOpen(): void;
61
61
  onClose(): void;
62
62
  onPointerInTransitChange(inTransit: boolean): void;
63
- isPointerInTransitRef: MutableRefObject<boolean>;
63
+ isPointerInTransitRef: RefObject<boolean>;
64
64
  disableHoverableContent: boolean;
65
65
  };
66
66
 
67
67
  const [TooltipContextProvider, useTooltipContext] = createTooltipContext<TooltipContextValue>(TOOLTIP_NAME);
68
68
 
69
- interface TooltipProviderProps {
69
+ type TooltipProviderProps = {
70
70
  children?: ReactNode;
71
71
  open?: boolean;
72
72
  defaultOpen?: boolean;
@@ -87,7 +87,7 @@ interface TooltipProviderProps {
87
87
  * @defaultValue 300
88
88
  */
89
89
  skipDelayDuration?: number;
90
- }
90
+ };
91
91
 
92
92
  const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<TooltipProviderProps>) => {
93
93
  const {
@@ -111,15 +111,18 @@ const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<Too
111
111
 
112
112
  const popperScope = usePopperScope(__scopeTooltip);
113
113
  const [trigger, setTrigger] = useState<HTMLButtonElement | null>(null);
114
- const [content, setContent] = useState<string>('');
114
+ const [content, setContent] = useState<ReactNode>(null);
115
115
  const [side, setSide] = useState<TooltipSide | undefined>(undefined);
116
116
  const triggerRef = useRef<HTMLButtonElement | null>(trigger);
117
- const handleTriggerChange = useCallback((nextTrigger: HTMLButtonElement | null) => {
118
- setTrigger(nextTrigger);
119
- triggerRef.current = nextTrigger;
120
- setContent(nextTrigger?.getAttribute('data-tooltip-content') ?? '');
121
- setSide((nextTrigger?.getAttribute('data-tooltip-side') as TooltipSide | null) ?? undefined);
122
- }, []);
117
+ const handleTriggerChange = useCallback(
118
+ (nextTrigger: HTMLButtonElement | null, nextContent?: ReactNode, nextSide?: TooltipSide) => {
119
+ setTrigger(nextTrigger);
120
+ triggerRef.current = nextTrigger;
121
+ setContent(nextContent ?? null);
122
+ setSide(nextSide);
123
+ },
124
+ [],
125
+ );
123
126
  const contentId = useId();
124
127
  const openTimerRef = useRef(0);
125
128
  const wasOpenDelayedRef = useRef(false);
@@ -215,9 +218,9 @@ const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<Too
215
218
  isPointerInTransitRef.current = inTransit;
216
219
  }, [])}
217
220
  >
218
- <TooltipContent side={side} className={tx('tooltip.content', 'tooltip', { elevation })}>
221
+ <TooltipContent side={side} className={tx('tooltip.content', { elevation })}>
219
222
  {content}
220
- <TooltipArrow className={tx('tooltip.arrow', 'tooltip__arrow')} />
223
+ <TooltipArrow className={tx('tooltip.arrow')} />
221
224
  </TooltipContent>
222
225
  <TooltipVirtualTrigger virtualRef={triggerRef as RefObject<HTMLButtonElement>} />
223
226
  {children}
@@ -244,13 +247,13 @@ const TooltipVirtualTrigger = ({
244
247
  // TooltipTrigger
245
248
  //
246
249
 
247
- const TRIGGER_NAME = 'TooltipTrigger';
250
+ const TRIGGER_NAME = 'Tooltip.Trigger';
248
251
 
249
- type TooltipTriggerElement = ElementRef<typeof Primitive.button>;
252
+ type TooltipTriggerElement = ComponentRef<typeof Primitive.button>;
250
253
  type PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;
251
- type TooltipTriggerProps = PrimitiveButtonProps &
254
+ type TooltipTriggerProps = Omit<PrimitiveButtonProps, 'content'> &
252
255
  Pick<TooltipProps, 'delayDuration'> & {
253
- content?: string;
256
+ content?: ReactNode;
254
257
  side?: TooltipSide;
255
258
  onInteract?: (event: SyntheticEvent) => void;
256
259
  };
@@ -283,8 +286,6 @@ const TooltipTrigger = forwardRef<TooltipTriggerElement, TooltipTriggerProps>(
283
286
  // commonly anchors and the anchor `type` attribute signifies MIME type.
284
287
  aria-describedby={context.open ? context.contentId : undefined}
285
288
  data-state={context.stateAttribute}
286
- data-tooltip-content={content}
287
- data-tooltip-side={side}
288
289
  {...triggerProps}
289
290
  ref={composedRefs}
290
291
  onPointerMove={composeEventHandlers(props.onPointerMove, (event) => {
@@ -296,7 +297,7 @@ const TooltipTrigger = forwardRef<TooltipTriggerElement, TooltipTriggerProps>(
296
297
  if (event.defaultPrevented) {
297
298
  return;
298
299
  }
299
- context.onTriggerChange(ref.current);
300
+ context.onTriggerChange(ref.current, content, side);
300
301
  context.onTriggerEnter();
301
302
  hasPointerMoveOpenedRef.current = true;
302
303
  }
@@ -326,7 +327,7 @@ TooltipTrigger.displayName = TRIGGER_NAME;
326
327
  // TooltipPortal
327
328
  //
328
329
 
329
- const PORTAL_NAME = 'TooltipPortal';
330
+ const PORTAL_NAME = 'Tooltip.Portal';
330
331
 
331
332
  type PortalContextValue = { forceMount?: true };
332
333
  const [PortalProvider, usePortalContext] = createTooltipContext<PortalContextValue>(PORTAL_NAME, {
@@ -334,7 +335,7 @@ const [PortalProvider, usePortalContext] = createTooltipContext<PortalContextVal
334
335
  });
335
336
 
336
337
  type PortalProps = ComponentPropsWithoutRef<typeof PortalPrimitive>;
337
- interface TooltipPortalProps {
338
+ type TooltipPortalProps = {
338
339
  children?: ReactNode;
339
340
  /**
340
341
  * Specify a container element to portal the content into.
@@ -345,7 +346,7 @@ interface TooltipPortalProps {
345
346
  * controlling animation with React animation libraries.
346
347
  */
347
348
  forceMount?: true;
348
- }
349
+ };
349
350
 
350
351
  const TooltipPortal: FC<TooltipPortalProps> = (props: TooltipScopedProps<TooltipPortalProps>) => {
351
352
  const { __scopeTooltip, forceMount, children, container } = props;
@@ -367,16 +368,16 @@ TooltipPortal.displayName = PORTAL_NAME;
367
368
  // TooltipContent
368
369
  //
369
370
 
370
- const CONTENT_NAME = 'TooltipContent';
371
+ const CONTENT_NAME = 'Tooltip.Content';
371
372
 
372
373
  type TooltipContentElement = TooltipContentImplElement;
373
- interface TooltipContentProps extends TooltipContentImplProps {
374
+ type TooltipContentProps = TooltipContentImplProps & {
374
375
  /**
375
376
  * Used to force mounting when more control is needed. Useful when
376
377
  * controlling animation with React animation libraries.
377
378
  */
378
379
  forceMount?: true;
379
- }
380
+ };
380
381
 
381
382
  const TooltipContent = forwardRef<TooltipContentElement, TooltipContentProps>(
382
383
  (props: TooltipScopedProps<TooltipContentProps>, forwardedRef) => {
@@ -400,7 +401,7 @@ type Point = { x: number; y: number };
400
401
  type Polygon = Point[];
401
402
 
402
403
  type TooltipContentHoverableElement = TooltipContentImplElement;
403
- interface TooltipContentHoverableProps extends TooltipContentImplProps {}
404
+ type TooltipContentHoverableProps = TooltipContentImplProps;
404
405
 
405
406
  const TooltipContentHoverable = forwardRef<TooltipContentHoverableElement, TooltipContentHoverableProps>(
406
407
  (props: TooltipScopedProps<TooltipContentHoverableProps>, forwardedRef) => {
@@ -479,10 +480,10 @@ const [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] =
479
480
  isInside: false,
480
481
  });
481
482
 
482
- type TooltipContentImplElement = ElementRef<typeof PopperPrimitive.Content>;
483
+ type TooltipContentImplElement = ComponentRef<typeof PopperPrimitive.Content>;
483
484
  type DismissableLayerProps = ComponentPropsWithoutRef<typeof DismissableLayer>;
484
485
  type PopperContentProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;
485
- interface TooltipContentImplProps extends Omit<PopperContentProps, 'onPlaced'> {
486
+ type TooltipContentImplProps = Omit<PopperContentProps, 'onPlaced'> & {
486
487
  /**
487
488
  * A more descriptive label for accessibility purpose
488
489
  */
@@ -498,7 +499,7 @@ interface TooltipContentImplProps extends Omit<PopperContentProps, 'onPlaced'> {
498
499
  * Can be prevented.
499
500
  */
500
501
  onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];
501
- }
502
+ };
502
503
 
503
504
  const TooltipContentImpl = forwardRef<TooltipContentImplElement, TooltipContentImplProps>(
504
505
  (props: TooltipScopedProps<TooltipContentImplProps>, forwardedRef) => {
@@ -578,11 +579,11 @@ TooltipContent.displayName = CONTENT_NAME;
578
579
  // TooltipArrow
579
580
  //
580
581
 
581
- const ARROW_NAME = 'TooltipArrow';
582
+ const ARROW_NAME = 'Tooltip.Arrow';
582
583
 
583
- type TooltipArrowElement = ElementRef<typeof PopperPrimitive.Arrow>;
584
+ type TooltipArrowElement = ComponentRef<typeof PopperPrimitive.Arrow>;
584
585
  type PopperArrowProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;
585
- interface TooltipArrowProps extends PopperArrowProps {}
586
+ type TooltipArrowProps = PopperArrowProps;
586
587
 
587
588
  const TooltipArrow = forwardRef<TooltipArrowElement, TooltipArrowProps>(
588
589
  (props: TooltipScopedProps<TooltipArrowProps>, forwardedRef) => {
@@ -3,3 +3,4 @@
3
3
  //
4
4
 
5
5
  export * from './Tooltip';
6
+ export * from './tooltipContent';