@dxos/react-ui 0.1.12 → 0.1.14

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 (493) hide show
  1. package/README.md +83 -5
  2. package/dist/lib/browser/index.mjs +2092 -0
  3. package/dist/lib/browser/index.mjs.map +7 -0
  4. package/dist/lib/browser/meta.json +1 -0
  5. package/dist/plugin/node/esbuild-plugin.cjs +469 -0
  6. package/dist/plugin/node/esbuild-plugin.cjs.map +7 -0
  7. package/dist/plugin/node/meta.json +1 -0
  8. package/dist/plugin/node/plugin.cjs +460 -0
  9. package/dist/plugin/node/plugin.cjs.map +7 -0
  10. package/dist/{src → plugin/node}/theme.css +15 -19
  11. package/dist/plugin/node/theme.css.map +7 -0
  12. package/dist/{src → types/src}/components/Alert/Alert.d.ts +7 -2
  13. package/dist/types/src/components/Alert/Alert.d.ts.map +1 -0
  14. package/dist/{src → types/src}/components/Alert/Alert.stories.d.ts +1 -1
  15. package/dist/types/src/components/Alert/Alert.stories.d.ts.map +1 -0
  16. package/dist/{src → types/src}/components/Alert/index.d.ts +0 -0
  17. package/dist/types/src/components/Alert/index.d.ts.map +1 -0
  18. package/dist/types/src/components/AlertDialog/AlertDialog.d.ts +26 -0
  19. package/dist/types/src/components/AlertDialog/AlertDialog.d.ts.map +1 -0
  20. package/dist/{src → types/src}/components/AlertDialog/AlertDialog.stories.d.ts +1 -1
  21. package/dist/types/src/components/AlertDialog/AlertDialog.stories.d.ts.map +1 -0
  22. package/dist/{src → types/src}/components/AlertDialog/index.d.ts +0 -0
  23. package/dist/types/src/components/AlertDialog/index.d.ts.map +1 -0
  24. package/dist/types/src/components/Avatar/Avatar.d.ts +22 -0
  25. package/dist/types/src/components/Avatar/Avatar.d.ts.map +1 -0
  26. package/dist/types/src/components/Avatar/Avatar.stories.d.ts +12 -0
  27. package/dist/types/src/components/Avatar/Avatar.stories.d.ts.map +1 -0
  28. package/dist/{src → types/src}/components/Avatar/index.d.ts +0 -0
  29. package/dist/types/src/components/Avatar/index.d.ts.map +1 -0
  30. package/dist/types/src/components/Button/Button.d.ts +4 -0
  31. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  32. package/dist/types/src/components/Button/Button.stories.d.ts +13 -0
  33. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  34. package/dist/{src → types/src}/components/Button/ButtonGroup.d.ts +0 -0
  35. package/dist/types/src/components/Button/ButtonGroup.d.ts.map +1 -0
  36. package/dist/{src → types/src}/components/Button/ButtonProps.d.ts +0 -2
  37. package/dist/types/src/components/Button/ButtonProps.d.ts.map +1 -0
  38. package/dist/{src → types/src}/components/Button/buttonStyles.d.ts +0 -0
  39. package/dist/types/src/components/Button/buttonStyles.d.ts.map +1 -0
  40. package/dist/{src → types/src}/components/Button/index.d.ts +0 -0
  41. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  42. package/dist/{src → types/src}/components/CompoundButton/CompoundButton.d.ts +0 -0
  43. package/dist/types/src/components/CompoundButton/CompoundButton.d.ts.map +1 -0
  44. package/dist/{src → types/src}/components/CompoundButton/CompoundButton.stories.d.ts +0 -0
  45. package/dist/types/src/components/CompoundButton/CompoundButton.stories.d.ts.map +1 -0
  46. package/dist/{src → types/src}/components/CompoundButton/index.d.ts +0 -0
  47. package/dist/types/src/components/CompoundButton/index.d.ts.map +1 -0
  48. package/dist/types/src/components/Dialog/Dialog.d.ts +26 -0
  49. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  50. package/dist/{src → types/src}/components/Dialog/Dialog.stories.d.ts +1 -1
  51. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  52. package/dist/{src → types/src}/components/Dialog/index.d.ts +0 -0
  53. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  54. package/dist/{src → types/src}/components/Group/Group.d.ts +1 -1
  55. package/dist/types/src/components/Group/Group.d.ts.map +1 -0
  56. package/dist/{src → types/src}/components/Group/Group.stories.d.ts +1 -1
  57. package/dist/types/src/components/Group/Group.stories.d.ts.map +1 -0
  58. package/dist/{src → types/src}/components/Group/index.d.ts +0 -0
  59. package/dist/types/src/components/Group/index.d.ts.map +1 -0
  60. package/dist/{src → types/src}/components/Heading/Heading.d.ts +5 -8
  61. package/dist/types/src/components/Heading/Heading.d.ts.map +1 -0
  62. package/dist/{src → types/src}/components/Heading/Heading.stories.d.ts +5 -8
  63. package/dist/{src → types/src}/components/Heading/Heading.stories.d.ts.map +1 -1
  64. package/dist/{src → types/src}/components/Heading/index.d.ts +0 -0
  65. package/dist/types/src/components/Heading/index.d.ts.map +1 -0
  66. package/dist/{src → types/src}/components/Input/BarePinInput.d.ts +17 -16
  67. package/dist/types/src/components/Input/BarePinInput.d.ts.map +1 -0
  68. package/dist/types/src/components/Input/BareTextInput.d.ts +7 -0
  69. package/dist/types/src/components/Input/BareTextInput.d.ts.map +1 -0
  70. package/dist/types/src/components/Input/BareTextareaInput.d.ts +7 -0
  71. package/dist/types/src/components/Input/BareTextareaInput.d.ts.map +1 -0
  72. package/dist/types/src/components/Input/Input.d.ts +4 -0
  73. package/dist/types/src/components/Input/Input.d.ts.map +1 -0
  74. package/dist/{src → types/src}/components/Input/Input.stories.d.ts +1 -1
  75. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -0
  76. package/dist/types/src/components/Input/InputProps.d.ts +37 -0
  77. package/dist/types/src/components/Input/InputProps.d.ts.map +1 -0
  78. package/dist/{src → types/src}/components/Input/index.d.ts +0 -0
  79. package/dist/types/src/components/Input/index.d.ts.map +1 -0
  80. package/dist/types/src/components/Loading/Loading.d.ts +15 -0
  81. package/dist/types/src/components/Loading/Loading.d.ts.map +1 -0
  82. package/dist/{src → types/src}/components/Loading/Loading.stories.d.ts +1 -3
  83. package/dist/types/src/components/Loading/Loading.stories.d.ts.map +1 -0
  84. package/dist/{src → types/src}/components/Loading/index.d.ts +0 -0
  85. package/dist/types/src/components/Loading/index.d.ts.map +1 -0
  86. package/dist/{src → types/src}/components/NavMenu/NavMenu.d.ts +11 -3
  87. package/dist/types/src/components/NavMenu/NavMenu.d.ts.map +1 -0
  88. package/dist/{src → types/src}/components/NavMenu/NavMenu.stories.d.ts +1 -1
  89. package/dist/types/src/components/NavMenu/NavMenu.stories.d.ts.map +1 -0
  90. package/dist/{src → types/src}/components/NavMenu/index.d.ts +0 -0
  91. package/dist/types/src/components/NavMenu/index.d.ts.map +1 -0
  92. package/dist/types/src/components/Popover/Popover.d.ts +21 -0
  93. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -0
  94. package/dist/{src → types/src}/components/Popover/Popover.stories.d.ts +1 -1
  95. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -0
  96. package/dist/{src → types/src}/components/Popover/index.d.ts +0 -0
  97. package/dist/types/src/components/Popover/index.d.ts.map +1 -0
  98. package/dist/types/src/components/QrCode/QrCode.d.ts +39 -0
  99. package/dist/types/src/components/QrCode/QrCode.d.ts.map +1 -0
  100. package/dist/{src → types/src}/components/QrCode/QrCode.stories.d.ts +1 -1
  101. package/dist/types/src/components/QrCode/QrCode.stories.d.ts.map +1 -0
  102. package/dist/{src → types/src}/components/QrCode/index.d.ts +0 -0
  103. package/dist/types/src/components/QrCode/index.d.ts.map +1 -0
  104. package/dist/types/src/components/Tag/Tag.d.ts +8 -0
  105. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -0
  106. package/dist/{src → types/src}/components/Tag/Tag.stories.d.ts +1 -1
  107. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -0
  108. package/dist/{src → types/src}/components/Tag/index.d.ts +0 -0
  109. package/dist/types/src/components/Tag/index.d.ts.map +1 -0
  110. package/dist/{src → types/src}/components/Toast/Toast.d.ts +10 -1
  111. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -0
  112. package/dist/{src → types/src}/components/Toast/Toast.stories.d.ts +1 -1
  113. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -0
  114. package/dist/{src → types/src}/components/Toast/index.d.ts +0 -0
  115. package/dist/types/src/components/Toast/index.d.ts.map +1 -0
  116. package/dist/types/src/components/Tooltip/Tooltip.d.ts +19 -0
  117. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -0
  118. package/dist/{src → types/src}/components/Tooltip/Tooltip.stories.d.ts +1 -1
  119. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -0
  120. package/dist/{src → types/src}/components/Tooltip/index.d.ts +0 -0
  121. package/dist/types/src/components/Tooltip/index.d.ts.map +1 -0
  122. package/dist/{src → types/src}/components/UiProvider/UiProvider.d.ts +1 -1
  123. package/dist/types/src/components/UiProvider/UiProvider.d.ts.map +1 -0
  124. package/dist/{src → types/src}/components/UiProvider/index.d.ts +0 -0
  125. package/dist/types/src/components/UiProvider/index.d.ts.map +1 -0
  126. package/dist/{src → types/src}/components/index.d.ts +0 -0
  127. package/dist/types/src/components/index.d.ts.map +1 -0
  128. package/dist/types/src/config/index.d.ts +2 -0
  129. package/dist/types/src/config/index.d.ts.map +1 -0
  130. package/dist/types/src/config/tailwind.d.ts +7 -0
  131. package/dist/types/src/config/tailwind.d.ts.map +1 -0
  132. package/dist/types/src/esbuild-plugin.d.ts +6 -0
  133. package/dist/types/src/esbuild-plugin.d.ts.map +1 -0
  134. package/dist/{src → types/src}/hooks/index.d.ts +0 -0
  135. package/dist/types/src/hooks/index.d.ts.map +1 -0
  136. package/dist/{src → types/src}/hooks/useForwardedRef.d.ts +0 -0
  137. package/dist/types/src/hooks/useForwardedRef.d.ts.map +1 -0
  138. package/dist/{src → types/src}/hooks/useId.d.ts +0 -0
  139. package/dist/types/src/hooks/useId.d.ts.map +1 -0
  140. package/dist/{src → types/src}/hooks/useIsFocused.d.ts +0 -0
  141. package/dist/types/src/hooks/useIsFocused.d.ts.map +1 -0
  142. package/dist/{src → types/src}/index.d.ts +3 -2
  143. package/dist/types/src/index.d.ts.map +1 -0
  144. package/dist/{src → types/src}/plugin.d.ts +1 -1
  145. package/dist/types/src/plugin.d.ts.map +1 -0
  146. package/dist/types/src/props/Elevation.d.ts +2 -0
  147. package/dist/types/src/props/Elevation.d.ts.map +1 -0
  148. package/dist/types/src/props/MessageValence.d.ts +2 -0
  149. package/dist/types/src/props/MessageValence.d.ts.map +1 -0
  150. package/dist/types/src/props/Size.d.ts +2 -0
  151. package/dist/types/src/props/Size.d.ts.map +1 -0
  152. package/dist/{src → types/src}/props/index.d.ts +0 -0
  153. package/dist/types/src/props/index.d.ts.map +1 -0
  154. package/dist/{src → types/src}/styles/active.d.ts +0 -0
  155. package/dist/types/src/styles/active.d.ts.map +1 -0
  156. package/dist/{src → types/src}/styles/disabled.d.ts +0 -0
  157. package/dist/types/src/styles/disabled.d.ts.map +1 -0
  158. package/dist/{src → types/src}/styles/focus.d.ts +0 -0
  159. package/dist/types/src/styles/focus.d.ts.map +1 -0
  160. package/dist/{src → types/src}/styles/group.d.ts +0 -0
  161. package/dist/types/src/styles/group.d.ts.map +1 -0
  162. package/dist/{src → types/src}/styles/hover.d.ts +0 -0
  163. package/dist/types/src/styles/hover.d.ts.map +1 -0
  164. package/dist/{src → types/src}/styles/index.d.ts +0 -0
  165. package/dist/types/src/styles/index.d.ts.map +1 -0
  166. package/dist/types/src/styles/input.d.ts +11 -0
  167. package/dist/types/src/styles/input.d.ts.map +1 -0
  168. package/dist/{src → types/src}/styles/ornament.d.ts +0 -0
  169. package/dist/types/src/styles/ornament.d.ts.map +1 -0
  170. package/dist/{src → types/src}/styles/shimmer.d.ts +0 -0
  171. package/dist/types/src/styles/shimmer.d.ts.map +1 -0
  172. package/dist/{src → types/src}/styles/size.d.ts +1 -1
  173. package/dist/types/src/styles/size.d.ts.map +1 -0
  174. package/dist/{src → types/src}/styles/text.d.ts +0 -0
  175. package/dist/types/src/styles/text.d.ts.map +1 -0
  176. package/dist/{src → types/src}/styles/valence.d.ts +0 -0
  177. package/dist/types/src/styles/valence.d.ts.map +1 -0
  178. package/dist/{src → types/src}/testing/index.d.ts +0 -0
  179. package/dist/types/src/testing/index.d.ts.map +1 -0
  180. package/dist/{src → types/src}/testing/templateForComponent.d.ts +0 -0
  181. package/dist/types/src/testing/templateForComponent.d.ts.map +1 -0
  182. package/dist/types/src/util/index.d.ts +2 -0
  183. package/dist/types/src/util/index.d.ts.map +1 -0
  184. package/dist/types/src/util/mx.d.ts +2 -0
  185. package/dist/types/src/util/mx.d.ts.map +1 -0
  186. package/dist/types/src/util/withLogical.d.ts +3 -0
  187. package/dist/types/src/util/withLogical.d.ts.map +1 -0
  188. package/package.json +9 -5
  189. package/plugin.d.ts +1 -1
  190. package/plugin.js +1 -1
  191. package/src/components/Alert/Alert.tsx +12 -6
  192. package/src/components/AlertDialog/AlertDialog.tsx +31 -11
  193. package/src/components/Avatar/Avatar.tsx +35 -13
  194. package/src/components/Button/Button.tsx +11 -13
  195. package/src/components/Button/ButtonGroup.tsx +3 -2
  196. package/src/components/Button/ButtonProps.ts +0 -2
  197. package/src/components/Button/buttonStyles.ts +4 -7
  198. package/src/components/CompoundButton/CompoundButton.tsx +3 -3
  199. package/src/components/Dialog/Dialog.tsx +47 -14
  200. package/src/components/Group/Group.tsx +10 -5
  201. package/src/components/Heading/Heading.tsx +5 -4
  202. package/src/components/Input/BarePinInput.tsx +18 -13
  203. package/src/components/Input/BareTextInput.tsx +18 -15
  204. package/src/components/Input/BareTextareaInput.tsx +17 -16
  205. package/src/components/Input/Input.tsx +17 -23
  206. package/src/components/Input/InputProps.ts +23 -11
  207. package/src/components/Loading/Loading.tsx +18 -8
  208. package/src/components/NavMenu/NavMenu.stories.tsx +1 -1
  209. package/src/components/NavMenu/NavMenu.tsx +42 -19
  210. package/src/components/Popover/Popover.stories.tsx +7 -3
  211. package/src/components/Popover/Popover.tsx +54 -20
  212. package/src/components/QrCode/QrCode.tsx +61 -49
  213. package/src/components/Tag/Tag.tsx +6 -6
  214. package/src/components/Toast/Toast.tsx +48 -26
  215. package/src/components/Tooltip/Tooltip.tsx +32 -13
  216. package/src/components/UiProvider/UiProvider.tsx +3 -3
  217. package/src/config/index.ts +5 -0
  218. package/src/config/tailwind.ts +250 -0
  219. package/src/esbuild-plugin.ts +42 -0
  220. package/src/index.ts +3 -2
  221. package/src/plugin.ts +5 -240
  222. package/src/styles/active.ts +2 -2
  223. package/src/styles/group.ts +2 -3
  224. package/src/styles/input.ts +7 -26
  225. package/src/styles/size.ts +3 -4
  226. package/src/typings.d.ts +0 -1
  227. package/src/util/index.ts +5 -0
  228. package/src/util/mx.ts +28 -0
  229. package/src/util/withLogical.ts +103 -0
  230. package/dist/src/components/Alert/Alert.d.ts.map +0 -1
  231. package/dist/src/components/Alert/Alert.js +0 -21
  232. package/dist/src/components/Alert/Alert.js.map +0 -1
  233. package/dist/src/components/Alert/Alert.stories.d.ts.map +0 -1
  234. package/dist/src/components/Alert/Alert.stories.js +0 -30
  235. package/dist/src/components/Alert/Alert.stories.js.map +0 -1
  236. package/dist/src/components/Alert/index.d.ts.map +0 -1
  237. package/dist/src/components/Alert/index.js +0 -21
  238. package/dist/src/components/Alert/index.js.map +0 -1
  239. package/dist/src/components/AlertDialog/AlertDialog.d.ts +0 -17
  240. package/dist/src/components/AlertDialog/AlertDialog.d.ts.map +0 -1
  241. package/dist/src/components/AlertDialog/AlertDialog.js +0 -65
  242. package/dist/src/components/AlertDialog/AlertDialog.js.map +0 -1
  243. package/dist/src/components/AlertDialog/AlertDialog.stories.d.ts.map +0 -1
  244. package/dist/src/components/AlertDialog/AlertDialog.stories.js +0 -37
  245. package/dist/src/components/AlertDialog/AlertDialog.stories.js.map +0 -1
  246. package/dist/src/components/AlertDialog/index.d.ts.map +0 -1
  247. package/dist/src/components/AlertDialog/index.js +0 -21
  248. package/dist/src/components/AlertDialog/index.js.map +0 -1
  249. package/dist/src/components/Avatar/Avatar.d.ts +0 -13
  250. package/dist/src/components/Avatar/Avatar.d.ts.map +0 -1
  251. package/dist/src/components/Avatar/Avatar.js +0 -53
  252. package/dist/src/components/Avatar/Avatar.js.map +0 -1
  253. package/dist/src/components/Avatar/Avatar.stories.d.ts +0 -10
  254. package/dist/src/components/Avatar/Avatar.stories.d.ts.map +0 -1
  255. package/dist/src/components/Avatar/Avatar.stories.js +0 -30
  256. package/dist/src/components/Avatar/Avatar.stories.js.map +0 -1
  257. package/dist/src/components/Avatar/index.d.ts.map +0 -1
  258. package/dist/src/components/Avatar/index.js +0 -21
  259. package/dist/src/components/Avatar/index.js.map +0 -1
  260. package/dist/src/components/Button/Button.d.ts +0 -4
  261. package/dist/src/components/Button/Button.d.ts.map +0 -1
  262. package/dist/src/components/Button/Button.js +0 -37
  263. package/dist/src/components/Button/Button.js.map +0 -1
  264. package/dist/src/components/Button/Button.stories.d.ts +0 -13
  265. package/dist/src/components/Button/Button.stories.d.ts.map +0 -1
  266. package/dist/src/components/Button/Button.stories.js +0 -33
  267. package/dist/src/components/Button/Button.stories.js.map +0 -1
  268. package/dist/src/components/Button/ButtonGroup.d.ts.map +0 -1
  269. package/dist/src/components/Button/ButtonGroup.js +0 -16
  270. package/dist/src/components/Button/ButtonGroup.js.map +0 -1
  271. package/dist/src/components/Button/ButtonProps.d.ts.map +0 -1
  272. package/dist/src/components/Button/ButtonProps.js +0 -6
  273. package/dist/src/components/Button/ButtonProps.js.map +0 -1
  274. package/dist/src/components/Button/buttonStyles.d.ts.map +0 -1
  275. package/dist/src/components/Button/buttonStyles.js +0 -26
  276. package/dist/src/components/Button/buttonStyles.js.map +0 -1
  277. package/dist/src/components/Button/index.d.ts.map +0 -1
  278. package/dist/src/components/Button/index.js +0 -24
  279. package/dist/src/components/Button/index.js.map +0 -1
  280. package/dist/src/components/CompoundButton/CompoundButton.d.ts.map +0 -1
  281. package/dist/src/components/CompoundButton/CompoundButton.js +0 -27
  282. package/dist/src/components/CompoundButton/CompoundButton.js.map +0 -1
  283. package/dist/src/components/CompoundButton/CompoundButton.stories.d.ts.map +0 -1
  284. package/dist/src/components/CompoundButton/CompoundButton.stories.js +0 -40
  285. package/dist/src/components/CompoundButton/CompoundButton.stories.js.map +0 -1
  286. package/dist/src/components/CompoundButton/index.d.ts.map +0 -1
  287. package/dist/src/components/CompoundButton/index.js +0 -21
  288. package/dist/src/components/CompoundButton/index.js.map +0 -1
  289. package/dist/src/components/Dialog/Dialog.d.ts +0 -14
  290. package/dist/src/components/Dialog/Dialog.d.ts.map +0 -1
  291. package/dist/src/components/Dialog/Dialog.js +0 -59
  292. package/dist/src/components/Dialog/Dialog.js.map +0 -1
  293. package/dist/src/components/Dialog/Dialog.stories.d.ts.map +0 -1
  294. package/dist/src/components/Dialog/Dialog.stories.js +0 -37
  295. package/dist/src/components/Dialog/Dialog.stories.js.map +0 -1
  296. package/dist/src/components/Dialog/index.d.ts.map +0 -1
  297. package/dist/src/components/Dialog/index.js +0 -21
  298. package/dist/src/components/Dialog/index.js.map +0 -1
  299. package/dist/src/components/Group/Group.d.ts.map +0 -1
  300. package/dist/src/components/Group/Group.js +0 -22
  301. package/dist/src/components/Group/Group.js.map +0 -1
  302. package/dist/src/components/Group/Group.stories.d.ts.map +0 -1
  303. package/dist/src/components/Group/Group.stories.js +0 -27
  304. package/dist/src/components/Group/Group.stories.js.map +0 -1
  305. package/dist/src/components/Group/index.d.ts.map +0 -1
  306. package/dist/src/components/Group/index.js +0 -21
  307. package/dist/src/components/Group/index.js.map +0 -1
  308. package/dist/src/components/Heading/Heading.d.ts.map +0 -1
  309. package/dist/src/components/Heading/Heading.js +0 -28
  310. package/dist/src/components/Heading/Heading.js.map +0 -1
  311. package/dist/src/components/Heading/Heading.stories.js +0 -34
  312. package/dist/src/components/Heading/Heading.stories.js.map +0 -1
  313. package/dist/src/components/Heading/index.d.ts.map +0 -1
  314. package/dist/src/components/Heading/index.js +0 -21
  315. package/dist/src/components/Heading/index.js.map +0 -1
  316. package/dist/src/components/Input/BarePinInput.d.ts.map +0 -1
  317. package/dist/src/components/Input/BarePinInput.js +0 -62
  318. package/dist/src/components/Input/BarePinInput.js.map +0 -1
  319. package/dist/src/components/Input/BareTextInput.d.ts +0 -5
  320. package/dist/src/components/Input/BareTextInput.d.ts.map +0 -1
  321. package/dist/src/components/Input/BareTextInput.js +0 -29
  322. package/dist/src/components/Input/BareTextInput.js.map +0 -1
  323. package/dist/src/components/Input/BareTextareaInput.d.ts +0 -5
  324. package/dist/src/components/Input/BareTextareaInput.d.ts.map +0 -1
  325. package/dist/src/components/Input/BareTextareaInput.js +0 -23
  326. package/dist/src/components/Input/BareTextareaInput.js.map +0 -1
  327. package/dist/src/components/Input/Input.d.ts +0 -4
  328. package/dist/src/components/Input/Input.d.ts.map +0 -1
  329. package/dist/src/components/Input/Input.js +0 -87
  330. package/dist/src/components/Input/Input.js.map +0 -1
  331. package/dist/src/components/Input/Input.stories.d.ts.map +0 -1
  332. package/dist/src/components/Input/Input.stories.js +0 -86
  333. package/dist/src/components/Input/Input.stories.js.map +0 -1
  334. package/dist/src/components/Input/InputProps.d.ts +0 -26
  335. package/dist/src/components/Input/InputProps.d.ts.map +0 -1
  336. package/dist/src/components/Input/InputProps.js +0 -6
  337. package/dist/src/components/Input/InputProps.js.map +0 -1
  338. package/dist/src/components/Input/index.d.ts.map +0 -1
  339. package/dist/src/components/Input/index.js +0 -21
  340. package/dist/src/components/Input/index.js.map +0 -1
  341. package/dist/src/components/Loading/Loading.d.ts +0 -12
  342. package/dist/src/components/Loading/Loading.d.ts.map +0 -1
  343. package/dist/src/components/Loading/Loading.js +0 -29
  344. package/dist/src/components/Loading/Loading.js.map +0 -1
  345. package/dist/src/components/Loading/Loading.stories.d.ts.map +0 -1
  346. package/dist/src/components/Loading/Loading.stories.js +0 -39
  347. package/dist/src/components/Loading/Loading.stories.js.map +0 -1
  348. package/dist/src/components/Loading/index.d.ts.map +0 -1
  349. package/dist/src/components/Loading/index.js +0 -21
  350. package/dist/src/components/Loading/index.js.map +0 -1
  351. package/dist/src/components/NavMenu/NavMenu.d.ts.map +0 -1
  352. package/dist/src/components/NavMenu/NavMenu.js +0 -71
  353. package/dist/src/components/NavMenu/NavMenu.js.map +0 -1
  354. package/dist/src/components/NavMenu/NavMenu.stories.d.ts.map +0 -1
  355. package/dist/src/components/NavMenu/NavMenu.stories.js +0 -50
  356. package/dist/src/components/NavMenu/NavMenu.stories.js.map +0 -1
  357. package/dist/src/components/NavMenu/index.d.ts.map +0 -1
  358. package/dist/src/components/NavMenu/index.js +0 -21
  359. package/dist/src/components/NavMenu/index.js.map +0 -1
  360. package/dist/src/components/Popover/Popover.d.ts +0 -11
  361. package/dist/src/components/Popover/Popover.d.ts.map +0 -1
  362. package/dist/src/components/Popover/Popover.js +0 -56
  363. package/dist/src/components/Popover/Popover.js.map +0 -1
  364. package/dist/src/components/Popover/Popover.stories.d.ts.map +0 -1
  365. package/dist/src/components/Popover/Popover.stories.js +0 -39
  366. package/dist/src/components/Popover/Popover.stories.js.map +0 -1
  367. package/dist/src/components/Popover/index.d.ts.map +0 -1
  368. package/dist/src/components/Popover/index.js +0 -21
  369. package/dist/src/components/Popover/index.js.map +0 -1
  370. package/dist/src/components/QrCode/QrCode.d.ts +0 -22
  371. package/dist/src/components/QrCode/QrCode.d.ts.map +0 -1
  372. package/dist/src/components/QrCode/QrCode.js +0 -79
  373. package/dist/src/components/QrCode/QrCode.js.map +0 -1
  374. package/dist/src/components/QrCode/QrCode.stories.d.ts.map +0 -1
  375. package/dist/src/components/QrCode/QrCode.stories.js +0 -42
  376. package/dist/src/components/QrCode/QrCode.stories.js.map +0 -1
  377. package/dist/src/components/QrCode/index.d.ts.map +0 -1
  378. package/dist/src/components/QrCode/index.js +0 -21
  379. package/dist/src/components/QrCode/index.js.map +0 -1
  380. package/dist/src/components/Tag/Tag.d.ts +0 -8
  381. package/dist/src/components/Tag/Tag.d.ts.map +0 -1
  382. package/dist/src/components/Tag/Tag.js +0 -23
  383. package/dist/src/components/Tag/Tag.js.map +0 -1
  384. package/dist/src/components/Tag/Tag.stories.d.ts.map +0 -1
  385. package/dist/src/components/Tag/Tag.stories.js +0 -24
  386. package/dist/src/components/Tag/Tag.stories.js.map +0 -1
  387. package/dist/src/components/Tag/index.d.ts.map +0 -1
  388. package/dist/src/components/Tag/index.js +0 -21
  389. package/dist/src/components/Tag/index.js.map +0 -1
  390. package/dist/src/components/Toast/Toast.d.ts.map +0 -1
  391. package/dist/src/components/Toast/Toast.js +0 -54
  392. package/dist/src/components/Toast/Toast.js.map +0 -1
  393. package/dist/src/components/Toast/Toast.stories.d.ts.map +0 -1
  394. package/dist/src/components/Toast/Toast.stories.js +0 -32
  395. package/dist/src/components/Toast/Toast.stories.js.map +0 -1
  396. package/dist/src/components/Toast/index.d.ts.map +0 -1
  397. package/dist/src/components/Toast/index.js +0 -21
  398. package/dist/src/components/Toast/index.js.map +0 -1
  399. package/dist/src/components/Tooltip/Tooltip.d.ts +0 -12
  400. package/dist/src/components/Tooltip/Tooltip.d.ts.map +0 -1
  401. package/dist/src/components/Tooltip/Tooltip.js +0 -50
  402. package/dist/src/components/Tooltip/Tooltip.js.map +0 -1
  403. package/dist/src/components/Tooltip/Tooltip.stories.d.ts.map +0 -1
  404. package/dist/src/components/Tooltip/Tooltip.stories.js +0 -30
  405. package/dist/src/components/Tooltip/Tooltip.stories.js.map +0 -1
  406. package/dist/src/components/Tooltip/index.d.ts.map +0 -1
  407. package/dist/src/components/Tooltip/index.js +0 -21
  408. package/dist/src/components/Tooltip/index.js.map +0 -1
  409. package/dist/src/components/UiProvider/UiProvider.d.ts.map +0 -1
  410. package/dist/src/components/UiProvider/UiProvider.js +0 -21
  411. package/dist/src/components/UiProvider/UiProvider.js.map +0 -1
  412. package/dist/src/components/UiProvider/index.d.ts.map +0 -1
  413. package/dist/src/components/UiProvider/index.js +0 -21
  414. package/dist/src/components/UiProvider/index.js.map +0 -1
  415. package/dist/src/components/index.d.ts.map +0 -1
  416. package/dist/src/components/index.js +0 -37
  417. package/dist/src/components/index.js.map +0 -1
  418. package/dist/src/hooks/index.d.ts.map +0 -1
  419. package/dist/src/hooks/index.js +0 -23
  420. package/dist/src/hooks/index.js.map +0 -1
  421. package/dist/src/hooks/useForwardedRef.d.ts.map +0 -1
  422. package/dist/src/hooks/useForwardedRef.js +0 -24
  423. package/dist/src/hooks/useForwardedRef.js.map +0 -1
  424. package/dist/src/hooks/useId.d.ts.map +0 -1
  425. package/dist/src/hooks/useId.js +0 -20
  426. package/dist/src/hooks/useId.js.map +0 -1
  427. package/dist/src/hooks/useIsFocused.d.ts.map +0 -1
  428. package/dist/src/hooks/useIsFocused.js +0 -34
  429. package/dist/src/hooks/useIsFocused.js.map +0 -1
  430. package/dist/src/index.d.ts.map +0 -1
  431. package/dist/src/index.js +0 -24
  432. package/dist/src/index.js.map +0 -1
  433. package/dist/src/plugin.d.ts.map +0 -1
  434. package/dist/src/plugin.js +0 -276
  435. package/dist/src/plugin.js.map +0 -1
  436. package/dist/src/props/Elevation.d.ts +0 -2
  437. package/dist/src/props/Elevation.d.ts.map +0 -1
  438. package/dist/src/props/Elevation.js +0 -6
  439. package/dist/src/props/Elevation.js.map +0 -1
  440. package/dist/src/props/MessageValence.d.ts +0 -2
  441. package/dist/src/props/MessageValence.d.ts.map +0 -1
  442. package/dist/src/props/MessageValence.js +0 -6
  443. package/dist/src/props/MessageValence.js.map +0 -1
  444. package/dist/src/props/Size.d.ts +0 -2
  445. package/dist/src/props/Size.d.ts.map +0 -1
  446. package/dist/src/props/Size.js +0 -6
  447. package/dist/src/props/Size.js.map +0 -1
  448. package/dist/src/props/index.d.ts.map +0 -1
  449. package/dist/src/props/index.js +0 -23
  450. package/dist/src/props/index.js.map +0 -1
  451. package/dist/src/styles/active.d.ts.map +0 -1
  452. package/dist/src/styles/active.js +0 -12
  453. package/dist/src/styles/active.js.map +0 -1
  454. package/dist/src/styles/disabled.d.ts.map +0 -1
  455. package/dist/src/styles/disabled.js +0 -8
  456. package/dist/src/styles/disabled.js.map +0 -1
  457. package/dist/src/styles/focus.d.ts.map +0 -1
  458. package/dist/src/styles/focus.js +0 -9
  459. package/dist/src/styles/focus.js.map +0 -1
  460. package/dist/src/styles/group.d.ts.map +0 -1
  461. package/dist/src/styles/group.js +0 -26
  462. package/dist/src/styles/group.js.map +0 -1
  463. package/dist/src/styles/hover.d.ts.map +0 -1
  464. package/dist/src/styles/hover.js +0 -12
  465. package/dist/src/styles/hover.js.map +0 -1
  466. package/dist/src/styles/index.d.ts.map +0 -1
  467. package/dist/src/styles/index.js +0 -30
  468. package/dist/src/styles/index.js.map +0 -1
  469. package/dist/src/styles/input.d.ts +0 -17
  470. package/dist/src/styles/input.d.ts.map +0 -1
  471. package/dist/src/styles/input.js +0 -24
  472. package/dist/src/styles/input.js.map +0 -1
  473. package/dist/src/styles/ornament.d.ts.map +0 -1
  474. package/dist/src/styles/ornament.js +0 -9
  475. package/dist/src/styles/ornament.js.map +0 -1
  476. package/dist/src/styles/shimmer.d.ts.map +0 -1
  477. package/dist/src/styles/shimmer.js +0 -9
  478. package/dist/src/styles/shimmer.js.map +0 -1
  479. package/dist/src/styles/size.d.ts.map +0 -1
  480. package/dist/src/styles/size.js +0 -89
  481. package/dist/src/styles/size.js.map +0 -1
  482. package/dist/src/styles/text.d.ts.map +0 -1
  483. package/dist/src/styles/text.js +0 -11
  484. package/dist/src/styles/text.js.map +0 -1
  485. package/dist/src/styles/valence.d.ts.map +0 -1
  486. package/dist/src/styles/valence.js +0 -66
  487. package/dist/src/styles/valence.js.map +0 -1
  488. package/dist/src/testing/index.d.ts.map +0 -1
  489. package/dist/src/testing/index.js +0 -21
  490. package/dist/src/testing/index.js.map +0 -1
  491. package/dist/src/testing/templateForComponent.d.ts.map +0 -1
  492. package/dist/src/testing/templateForComponent.js +0 -18
  493. package/dist/src/testing/templateForComponent.js.map +0 -1
@@ -3,18 +3,29 @@
3
3
  //
4
4
 
5
5
  import * as PopoverPrimitive from '@radix-ui/react-popover';
6
- import cx from 'classnames';
6
+ import { Button as ToolbarButtonItem } from '@radix-ui/react-toolbar';
7
7
  import { X } from 'phosphor-react';
8
8
  import React, { ComponentProps, ReactNode, useCallback, useState } from 'react';
9
9
 
10
- import { defaultFocus, defaultHover } from '../../styles';
10
+ import { defaultActive, defaultFocus, defaultHover, getSize } from '../../styles';
11
+ import { mx } from '../../util';
11
12
 
12
- export interface PopoverProps extends Omit<ComponentProps<typeof PopoverPrimitive.Content>, 'children'> {
13
+ export interface PopoverSlots {
14
+ content?: Omit<ComponentProps<typeof PopoverPrimitive.Content>, 'children'>;
15
+ arrow?: Pick<ComponentProps<typeof PopoverPrimitive.Arrow>, 'className'>;
16
+ close?: Omit<ComponentProps<typeof PopoverPrimitive.Close>, 'children'>;
17
+ closeIcon?: ComponentProps<typeof X>;
18
+ trigger?: Omit<ComponentProps<typeof PopoverPrimitive.Trigger>, 'children'>;
19
+ }
20
+
21
+ export interface PopoverProps {
13
22
  openTrigger: ReactNode;
14
23
  children: ReactNode;
15
24
  closeLabel?: string;
16
25
  initiallyOpen?: boolean;
17
26
  mountAsSibling?: boolean;
27
+ triggerIsInToolbar?: boolean;
28
+ slots?: PopoverSlots;
18
29
  }
19
30
 
20
31
  type KeyUpEvent = Parameters<Exclude<ComponentProps<typeof PopoverPrimitive.Trigger>['onKeyUp'], undefined>>[0];
@@ -25,51 +36,74 @@ export const Popover = ({
25
36
  closeLabel,
26
37
  initiallyOpen,
27
38
  mountAsSibling,
28
- ...contentProps
39
+ triggerIsInToolbar,
40
+ slots = {}
29
41
  }: PopoverProps) => {
30
42
  const [isOpen, setIsOpen] = useState(!!initiallyOpen);
31
- const onKeyUp = useCallback((e: KeyUpEvent) => {
32
- const keyUpId = (document.activeElement as HTMLElement).dataset.keyupid;
33
- if (keyUpId && e.key === ' ') {
34
- setIsOpen(keyUpId === 'open');
35
- }
36
- }, []);
43
+ const onKeyUp = useCallback(
44
+ (e: KeyUpEvent) => {
45
+ const keyUpId = (document.activeElement as HTMLElement).dataset.keyupid;
46
+ if (keyUpId && e.key === ' ') {
47
+ setIsOpen(keyUpId === 'open');
48
+ }
49
+ slots.trigger?.onKeyUp?.(e);
50
+ },
51
+ [slots.trigger?.onKeyUp]
52
+ );
37
53
 
38
54
  const popoverContent = (
39
55
  <PopoverPrimitive.Content
40
56
  align='center'
41
- {...contentProps}
42
- className={cx(
57
+ {...slots.content}
58
+ className={mx(
43
59
  'radix-side-top:animate-slide-up radix-side-bottom:animate-slide-down',
44
60
  'rounded-lg p-4 shadow-xl elevated-buttons',
45
61
  'bg-white dark:bg-neutral-800',
46
62
  defaultFocus,
47
- contentProps.className
63
+ slots.content?.className
48
64
  )}
49
65
  >
50
- <PopoverPrimitive.Arrow className='fill-current text-white dark:text-neutral-800' />
66
+ <PopoverPrimitive.Arrow className={mx('fill-current text-white dark:text-neutral-800', slots.arrow?.className)} />
51
67
  {children}
52
68
  {closeLabel && (
53
69
  <PopoverPrimitive.Close
54
- className={cx(
70
+ {...slots.close}
71
+ className={mx(
55
72
  'absolute top-3.5 right-3.5 inline-flex items-center justify-center rounded-sm p-1',
56
73
  defaultFocus,
57
- defaultHover({})
74
+ defaultHover({}),
75
+ slots.close?.className
58
76
  )}
59
77
  aria-label={closeLabel}
60
78
  data-keyupid='close'
61
79
  >
62
- <X className='h-4 w-4 text-neutral-500 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-400' />
80
+ <X
81
+ {...slots.closeIcon}
82
+ className={mx(
83
+ getSize(4),
84
+ 'text-neutral-500 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-400',
85
+ slots.closeIcon?.className
86
+ )}
87
+ />
63
88
  </PopoverPrimitive.Close>
64
89
  )}
65
90
  </PopoverPrimitive.Content>
66
91
  );
67
92
 
93
+ const trigger = (
94
+ <PopoverPrimitive.Trigger
95
+ {...slots.trigger}
96
+ onKeyUp={onKeyUp}
97
+ data-keyupid='open'
98
+ className={mx(defaultHover({}), defaultFocus, defaultActive, slots.trigger?.className)}
99
+ >
100
+ {openTrigger}
101
+ </PopoverPrimitive.Trigger>
102
+ );
103
+
68
104
  return (
69
105
  <PopoverPrimitive.Root open={isOpen} onOpenChange={setIsOpen}>
70
- <PopoverPrimitive.Trigger asChild onKeyUp={onKeyUp} data-keyupid='open'>
71
- {openTrigger}
72
- </PopoverPrimitive.Trigger>
106
+ {triggerIsInToolbar ? <ToolbarButtonItem asChild>{trigger}</ToolbarButtonItem> : trigger}
73
107
  {mountAsSibling ? popoverContent : <PopoverPrimitive.Portal>{popoverContent}</PopoverPrimitive.Portal>}
74
108
  </PopoverPrimitive.Root>
75
109
  );
@@ -2,59 +2,73 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import cx from 'classnames';
6
5
  import { QrCode as QrCodeIcon, CopySimple } from 'phosphor-react';
7
6
  import { QRCodeSVG } from 'qrcode.react';
8
- import React, { useCallback, ReactHTMLElement } from 'react';
7
+ import React, { useCallback, ReactHTMLElement, ComponentProps } from 'react';
9
8
 
10
9
  import { useId } from '../../hooks';
11
10
  import { Size } from '../../props';
12
11
  import { getSize } from '../../styles';
13
- import { Button, ButtonGroup, ButtonProps } from '../Button';
14
- import { Tooltip, TooltipProps } from '../Tooltip';
12
+ import { mx } from '../../util';
13
+ import { Button, ButtonGroup } from '../Button';
14
+ import { Tooltip, TooltipSlots } from '../Tooltip';
15
15
 
16
- interface SharedQrCodeProps
17
- extends Omit<ButtonProps, 'onClick' | 'ref' | 'variant'>,
18
- Pick<TooltipProps, 'side' | 'sideOffset' | 'collisionPadding'> {
16
+ interface SharedQrCodeProps {
19
17
  value: string;
20
18
  buttonCompact?: boolean;
21
19
  }
22
20
 
21
+ interface FullQrCodeSlots {
22
+ tooltipContent?: TooltipSlots['content'];
23
+ tooltipArrow?: TooltipSlots['arrow'];
24
+ button?: Omit<ComponentProps<'button'>, 'ref' | 'children'>;
25
+ qrSvg?: ComponentProps<typeof QRCodeSVG>;
26
+ }
27
+
23
28
  export interface FullQrCodeProps extends SharedQrCodeProps {
24
29
  label: string | Omit<ReactHTMLElement<HTMLElement>, 'ref'>;
25
30
  size?: Size;
31
+ slots?: FullQrCodeSlots;
26
32
  }
27
33
 
28
34
  export type QrCodeProps = FullQrCodeProps;
29
35
 
36
+ interface CompactQrCodeSlots {
37
+ qrTooltipContent?: TooltipSlots['content'];
38
+ qrTooltipArrow?: TooltipSlots['arrow'];
39
+ qrButton?: Omit<ComponentProps<'button'>, 'ref' | 'children'>;
40
+ copyTooltipContent?: TooltipSlots['content'];
41
+ copyTooltipArrow?: TooltipSlots['arrow'];
42
+ copyButton?: Omit<ComponentProps<'button'>, 'ref' | 'children'>;
43
+ qrSvg?: ComponentProps<typeof QRCodeSVG>;
44
+ }
45
+
30
46
  export interface CompactQrCodeProps extends SharedQrCodeProps {
31
47
  displayQrLabel: string | Omit<ReactHTMLElement<HTMLElement>, 'ref'>;
32
48
  copyLabel: string | Omit<ReactHTMLElement<HTMLElement>, 'ref'>;
49
+ slots?: CompactQrCodeSlots;
33
50
  }
34
51
 
35
- export const FullQrCode = ({
36
- value,
37
- label,
38
- size,
39
- side,
40
- sideOffset,
41
- collisionPadding,
42
- buttonCompact = true,
43
- ...buttonProps
44
- }: FullQrCodeProps) => {
52
+ export const FullQrCode = ({ value, label, size, buttonCompact = true, slots = {} }: FullQrCodeProps) => {
45
53
  const labelId = useId('qr-label');
46
54
  const copyValue = useCallback(() => {
47
55
  void navigator.clipboard.writeText(value);
48
56
  }, [value]);
49
57
  return (
50
- <Tooltip content={label} {...{ side, sideOffset, collisionPadding }}>
58
+ <Tooltip content={label} {...slots.tooltipContent}>
51
59
  <Button
52
60
  compact={buttonCompact}
53
- {...buttonProps}
54
- className={cx('overflow-hidden p-0', getSize(size ?? 32), buttonProps.className)}
61
+ {...slots.button}
62
+ className={mx('overflow-hidden p-0', getSize(size ?? 32), slots.button?.className)}
55
63
  onClick={copyValue}
56
64
  >
57
- <QRCodeSVG value={value} includeMargin role='none' className='w-full h-auto' />
65
+ <QRCodeSVG
66
+ includeMargin
67
+ role='none'
68
+ {...slots.qrSvg}
69
+ value={value}
70
+ className={mx('w-full h-auto', slots.qrSvg?.className)}
71
+ />
58
72
  <div id={labelId} className='sr-only'>
59
73
  {label}
60
74
  </div>
@@ -63,17 +77,7 @@ export const FullQrCode = ({
63
77
  );
64
78
  };
65
79
 
66
- export const CompactQrCode = ({
67
- value,
68
- displayQrLabel,
69
- copyLabel,
70
- side,
71
- sideOffset,
72
- collisionPadding,
73
- compact,
74
- buttonCompact,
75
- ...buttonProps
76
- }: CompactQrCodeProps) => {
80
+ export const CompactQrCode = ({ value, displayQrLabel, copyLabel, buttonCompact, slots = {} }: CompactQrCodeProps) => {
77
81
  const labelId = useId('qr-label');
78
82
  const copyValue = useCallback(() => {
79
83
  void navigator.clipboard.writeText(value);
@@ -86,29 +90,33 @@ export const CompactQrCode = ({
86
90
  </span>
87
91
  <Tooltip
88
92
  compact
93
+ slots={{ content: { ...slots.qrTooltipContent, side: slots?.qrTooltipContent?.side ?? 'left' } }}
89
94
  content={
90
95
  <div role='none' className='overflow-hidden rounded-md'>
91
- <QRCodeSVG value={value} includeMargin role='none' className={getSize(32)} />
96
+ <QRCodeSVG
97
+ includeMargin
98
+ role='none'
99
+ {...slots.qrSvg}
100
+ value={value}
101
+ className={mx(getSize(32), slots.qrSvg?.className)}
102
+ />
92
103
  </div>
93
104
  }
94
- {...{ side: side ?? 'left', sideOffset, collisionPadding }}
95
105
  >
96
106
  <Button
97
- rounding='rounded-is-md'
98
107
  compact={buttonCompact}
99
- {...buttonProps}
100
- className={cx('border-ie-0 grow', buttonProps.className)}
108
+ {...slots.qrButton}
109
+ className={mx('border-ie-0 grow rounded-is-md', slots.qrButton?.className)}
101
110
  aria-labelledby={labelId}
102
111
  >
103
112
  <QrCodeIcon className={getSize(5)} />
104
113
  </Button>
105
114
  </Tooltip>
106
- <Tooltip content={copyLabel} tooltipLabelsTrigger {...{ side, sideOffset, collisionPadding }}>
115
+ <Tooltip content={copyLabel} tooltipLabelsTrigger slots={{ content: slots.qrTooltipContent }}>
107
116
  <Button
108
- rounding='rounded-ie-md grow'
109
117
  compact={buttonCompact}
110
- {...buttonProps}
111
- className={buttonProps.className}
118
+ {...slots.copyButton}
119
+ className={mx('rounded-ie-md grow', slots.copyButton?.className)}
112
120
  onClick={copyValue}
113
121
  >
114
122
  <CopySimple className={getSize(5)} />
@@ -118,28 +126,32 @@ export const CompactQrCode = ({
118
126
  <ButtonGroup className='hidden md:inline-flex'>
119
127
  <Tooltip
120
128
  compact
129
+ slots={{ content: { ...slots.qrTooltipContent, side: slots?.qrTooltipContent?.side ?? 'left' } }}
121
130
  content={
122
131
  <div role='none' className='overflow-hidden rounded-md'>
123
- <QRCodeSVG value={value} includeMargin role='none' className={getSize(32)} />
132
+ <QRCodeSVG
133
+ includeMargin
134
+ role='none'
135
+ {...slots.qrSvg}
136
+ value={value}
137
+ className={mx(getSize(32), slots.qrSvg?.className)}
138
+ />
124
139
  </div>
125
140
  }
126
- {...{ side: side ?? 'left', sideOffset, collisionPadding }}
127
141
  >
128
142
  <Button
129
- rounding='rounded-is-md'
130
143
  compact={buttonCompact}
131
- {...buttonProps}
132
- className={cx('border-ie-0 flex gap-1', buttonProps.className)}
144
+ {...slots.qrButton}
145
+ className={mx('border-ie-0 flex gap-1 rounded-is-md', slots.qrButton?.className)}
133
146
  >
134
147
  <QrCodeIcon className={getSize(5)} />
135
148
  {displayQrLabel}
136
149
  </Button>
137
150
  </Tooltip>
138
151
  <Button
139
- rounding='rounded-ie-md'
140
152
  compact={buttonCompact}
141
- {...buttonProps}
142
- className={cx('flex gap-1', buttonProps.className)}
153
+ {...slots.copyButton}
154
+ className={mx('flex gap-1 rounded-ie-md', slots.copyButton?.className)}
143
155
  onClick={copyValue}
144
156
  >
145
157
  <CopySimple className={getSize(5)} />
@@ -2,12 +2,12 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import cx from 'classnames';
6
- import React, { PropsWithChildren, ReactNode } from 'react';
5
+ import React, { ComponentProps, PropsWithChildren, ReactNode } from 'react';
7
6
 
8
7
  import { MessageValence } from '../../props';
8
+ import { mx } from '../../util';
9
9
 
10
- export interface TagProps extends React.ComponentProps<'span'> {
10
+ export interface TagProps extends ComponentProps<'span'> {
11
11
  valence?: MessageValence;
12
12
  children?: ReactNode;
13
13
  }
@@ -20,11 +20,11 @@ const valenceColorMap: Record<MessageValence, string> = {
20
20
  error: 'bg-error-100 text-error-800 dark:bg-error-700 dark:text-error-300'
21
21
  };
22
22
 
23
- export const Tag = ({ children, valence = 'neutral', ...props }: PropsWithChildren<TagProps>) => {
23
+ export const Tag = ({ children, valence = 'neutral', ...rootSlot }: PropsWithChildren<TagProps>) => {
24
24
  return (
25
25
  <span
26
- {...props}
27
- className={cx('text-xs font-semibold px-2.5 py-0.5 rounded', valenceColorMap[valence], props.className)}
26
+ {...rootSlot}
27
+ className={mx('text-xs font-semibold px-2.5 py-0.5 rounded', valenceColorMap[valence], rootSlot?.className)}
28
28
  >
29
29
  {children}
30
30
  </span>
@@ -3,12 +3,21 @@
3
3
  //
4
4
 
5
5
  import * as ToastPrimitive from '@radix-ui/react-toast';
6
- import cx from 'classnames';
7
6
  import React, { cloneElement, ComponentProps, ReactHTMLElement, ReactNode, useState } from 'react';
8
7
 
9
8
  import { defaultDescription, defaultFocus } from '../../styles';
9
+ import { mx } from '../../util';
10
10
  import { Button } from '../Button';
11
11
 
12
+ export interface ToastSlots {
13
+ root?: Omit<ComponentProps<typeof ToastPrimitive.Root>, 'children'>;
14
+ heading?: Omit<ComponentProps<'div'>, 'children'>;
15
+ headingInner?: Omit<ComponentProps<'div'>, 'children'>;
16
+ title?: Omit<ComponentProps<typeof ToastPrimitive.Title>, 'children'>;
17
+ description?: Omit<ComponentProps<typeof ToastPrimitive.Description>, 'children'>;
18
+ actions?: Omit<ComponentProps<'div'>, 'children'>;
19
+ }
20
+
12
21
  export interface ToastProps extends Omit<ComponentProps<typeof ToastPrimitive.Root>, 'title'> {
13
22
  title: ReactNode;
14
23
  openTrigger?: string | Omit<ReactHTMLElement<HTMLElement>, 'ref'>;
@@ -17,6 +26,7 @@ export interface ToastProps extends Omit<ComponentProps<typeof ToastPrimitive.Ro
17
26
  titleVisuallyHidden?: boolean;
18
27
  description?: ReactNode;
19
28
  initiallyOpen?: boolean;
29
+ slots?: ToastSlots;
20
30
  }
21
31
 
22
32
  export const Toast = ({
@@ -27,7 +37,7 @@ export const Toast = ({
27
37
  closeTrigger,
28
38
  actionTriggers,
29
39
  initiallyOpen,
30
- ...rootProps
40
+ slots = {}
31
41
  }: ToastProps) => {
32
42
  const [isOpen, setIsOpen] = useState(!!initiallyOpen);
33
43
 
@@ -42,42 +52,54 @@ export const Toast = ({
42
52
  <ToastPrimitive.Root
43
53
  open={isOpen}
44
54
  onOpenChange={setIsOpen}
45
- {...rootProps}
46
- className={cx(
47
- 'shadow-lg rounded-lg',
55
+ {...slots.root}
56
+ className={mx(
57
+ 'shadow-lg rounded-lg elevated-buttons flex',
48
58
  'bg-white dark:bg-neutral-800',
49
59
  'radix-state-open:animate-toast-slide-in-bottom md:radix-state-open:animate-toast-slide-in-right',
50
60
  'radix-state-closed:animate-toast-hide',
51
61
  'radix-swipe-end:animate-toast-swipe-out',
52
62
  'translate-x-radix-toast-swipe-move-x',
53
63
  'radix-swipe-cancel:translate-x-0 radix-swipe-cancel:duration-200 radix-swipe-cancel:ease-[ease]',
54
- 'elevated-buttons',
55
64
  defaultFocus,
56
- rootProps.className
65
+ slots.root?.className
57
66
  )}
58
67
  >
59
- <div role='none' className='flex'>
60
- <div role='none' className='w-0 flex-1 flex items-center pl-5 py-4 min-h-full'>
61
- <div role='none' className='w-full radix flex flex-col justify-center min-h-full gap-1'>
62
- <ToastPrimitive.Title className={cx('text-md font-medium', titleVisuallyHidden && 'sr-only')}>
63
- {title}
64
- </ToastPrimitive.Title>
65
- {description && (
66
- <ToastPrimitive.Description className={defaultDescription}>{description}</ToastPrimitive.Description>
67
- )}
68
- </div>
69
- </div>
70
- <div role='none' className='flex flex-col px-3 py-2 gap-1 items-stretch justify-center min-h-full'>
71
- {(actionTriggers || []).map(({ altText, trigger }, index) => (
72
- <ToastPrimitive.Action key={index} altText={altText} asChild={typeof trigger !== 'string'}>
73
- {trigger}
74
- </ToastPrimitive.Action>
75
- ))}
76
- {closeTrigger && (
77
- <ToastPrimitive.Close asChild={typeof closeTrigger !== 'string'}>{closeTrigger}</ToastPrimitive.Close>
68
+ <div
69
+ role='none'
70
+ {...slots.heading}
71
+ className={mx('w-0 flex-1 flex items-center pl-5 py-4 min-h-full', slots.heading?.className)}
72
+ >
73
+ <div
74
+ role='none'
75
+ {...slots.headingInner}
76
+ className={mx('w-full radix flex flex-col justify-center min-h-full gap-1', slots.headingInner?.className)}
77
+ >
78
+ <ToastPrimitive.Title className={mx('text-md font-medium', titleVisuallyHidden && 'sr-only')}>
79
+ {title}
80
+ </ToastPrimitive.Title>
81
+ {description && (
82
+ <ToastPrimitive.Description className={defaultDescription}>{description}</ToastPrimitive.Description>
78
83
  )}
79
84
  </div>
80
85
  </div>
86
+ <div
87
+ role='none'
88
+ {...slots.actions}
89
+ className={mx(
90
+ 'flex flex-col px-3 py-2 gap-1 items-stretch justify-center min-h-full',
91
+ slots.actions?.className
92
+ )}
93
+ >
94
+ {(actionTriggers || []).map(({ altText, trigger }, index) => (
95
+ <ToastPrimitive.Action key={index} altText={altText} asChild={typeof trigger !== 'string'}>
96
+ {trigger}
97
+ </ToastPrimitive.Action>
98
+ ))}
99
+ {closeTrigger && (
100
+ <ToastPrimitive.Close asChild={typeof closeTrigger !== 'string'}>{closeTrigger}</ToastPrimitive.Close>
101
+ )}
102
+ </div>
81
103
  </ToastPrimitive.Root>
82
104
  </>
83
105
  );
@@ -2,30 +2,42 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
+ import * as PortalPrimitive from '@radix-ui/react-portal';
6
+ import { Button as ToolbarButtonItem } from '@radix-ui/react-toolbar';
5
7
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
6
- import cx from 'classnames';
7
8
  import React, { ComponentProps, ReactNode, useState } from 'react';
8
9
 
9
10
  import { useId } from '../../hooks';
10
11
  import { defaultTooltip } from '../../styles';
12
+ import { mx } from '../../util';
11
13
 
12
- export interface TooltipProps extends Omit<ComponentProps<typeof TooltipPrimitive.Content>, 'children'> {
14
+ export interface TooltipSlots {
15
+ content?: Omit<ComponentProps<typeof TooltipPrimitive.Content>, 'children'>;
16
+ arrow?: Pick<ComponentProps<typeof TooltipPrimitive.Arrow>, 'className'>;
17
+ }
18
+
19
+ export interface TooltipProps {
13
20
  content: ReactNode;
14
21
  children: ReactNode;
22
+ side?: TooltipPrimitive.TooltipContentProps['side'];
15
23
  compact?: boolean;
16
24
  tooltipLabelsTrigger?: boolean;
17
25
  mountAsSibling?: boolean;
26
+ triggerIsInToolbar?: boolean;
18
27
  zIndex?: string;
28
+ slots?: TooltipSlots;
19
29
  }
20
30
 
21
31
  export const Tooltip = ({
22
32
  content,
23
33
  children,
34
+ side,
24
35
  compact,
25
36
  tooltipLabelsTrigger,
26
37
  mountAsSibling,
38
+ triggerIsInToolbar,
27
39
  zIndex = 'z-[2]',
28
- ...contentProps
40
+ slots = {}
29
41
  }: TooltipProps) => {
30
42
  const [isOpen, setIsOpen] = useState(false);
31
43
  const labelId = useId('tooltipLabel');
@@ -33,8 +45,9 @@ export const Tooltip = ({
33
45
  const tooltipContent = (
34
46
  <TooltipPrimitive.Content
35
47
  forceMount
36
- {...contentProps}
37
- className={cx(
48
+ {...slots.content}
49
+ side={side ?? slots.content?.side ?? 'top'}
50
+ className={mx(
38
51
  'radix-side-top:animate-slide-down-fade',
39
52
  'radix-side-right:animate-slide-left-fade',
40
53
  'radix-side-bottom:animate-slide-up-fade',
@@ -45,23 +58,29 @@ export const Tooltip = ({
45
58
  'shadow-lg bg-white dark:bg-neutral-800',
46
59
  !isOpen && 'sr-only',
47
60
  defaultTooltip,
48
- contentProps.className
61
+ slots.content?.className
49
62
  )}
50
63
  >
51
- <TooltipPrimitive.Arrow className='fill-current text-white dark:text-neutral-800' />
64
+ <TooltipPrimitive.Arrow className={mx('fill-current text-white dark:text-neutral-800', slots.arrow?.className)} />
52
65
  {content}
53
66
  </TooltipPrimitive.Content>
54
67
  );
55
68
 
69
+ const triggerContent = (
70
+ <TooltipPrimitive.Trigger asChild {...(tooltipLabelsTrigger && { 'aria-labelledby': labelId })}>
71
+ {children}
72
+ </TooltipPrimitive.Trigger>
73
+ );
74
+
56
75
  return (
57
76
  <TooltipPrimitive.Root open={isOpen} onOpenChange={setIsOpen}>
58
- <TooltipPrimitive.Trigger asChild {...(tooltipLabelsTrigger && { 'aria-labelledby': labelId })}>
59
- {children}
60
- </TooltipPrimitive.Trigger>
77
+ {triggerIsInToolbar ? <ToolbarButtonItem asChild>{triggerContent}</ToolbarButtonItem> : triggerContent}
61
78
  {tooltipLabelsTrigger && (
62
- <span id={labelId} className='sr-only'>
63
- {content}
64
- </span>
79
+ <PortalPrimitive.Root asChild>
80
+ <span id={labelId} className='sr-only'>
81
+ {content}
82
+ </span>
83
+ </PortalPrimitive.Root>
65
84
  )}
66
85
  {mountAsSibling ? tooltipContent : <TooltipPrimitive.Portal forceMount>{tooltipContent}</TooltipPrimitive.Portal>}
67
86
  </TooltipPrimitive.Root>
@@ -9,10 +9,10 @@ import {
9
9
  ToastViewportProps
10
10
  } from '@radix-ui/react-toast';
11
11
  import { Provider as TooltipProvider, TooltipProviderProps } from '@radix-ui/react-tooltip';
12
- import cx from 'classnames';
13
12
  import React, { PropsWithChildren } from 'react';
14
13
 
15
14
  import { defaultFocus } from '../../styles';
15
+ import { mx } from '../../util';
16
16
 
17
17
  export type UiProviderProps = PropsWithChildren<{
18
18
  tooltipProviderProps?: TooltipProviderProps;
@@ -33,8 +33,8 @@ export const UiProvider = ({
33
33
  </TooltipProvider>
34
34
  <ToastViewport
35
35
  {...toastViewportProps}
36
- className={cx(
37
- 'z-50 fixed bottom-4 inset-x-4 w-auto md:top-4 md:right-4 md:left-auto md:bottom-auto md:w-full md:max-w-sm rounded-lg',
36
+ className={mx(
37
+ 'z-50 fixed bottom-4 inset-x-4 w-auto md:top-4 md:right-4 md:left-auto md:bottom-auto md:w-full md:max-w-sm rounded-lg flex flex-col gap-2',
38
38
  defaultFocus,
39
39
  toastViewportProps?.className
40
40
  )}
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2022 DXOS.org
3
+ //
4
+
5
+ export * from './tailwind';