@channel.io/bezier-react 1.6.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/dist/cjs/components/Forms/Slider/Slider.js +73 -51
  2. package/dist/cjs/components/Forms/Slider/Slider.js.map +1 -1
  3. package/dist/cjs/components/Forms/Slider/Slider.styled.js +24 -83
  4. package/dist/cjs/components/Forms/Slider/Slider.styled.js.map +1 -1
  5. package/dist/cjs/components/Help/Help.js +10 -7
  6. package/dist/cjs/components/Help/Help.js.map +1 -1
  7. package/dist/cjs/components/Help/Help.styled.js +4 -5
  8. package/dist/cjs/components/Help/Help.styled.js.map +1 -1
  9. package/dist/cjs/components/KeyValueListItem/common/ItemActions/ItemAction.js +2 -9
  10. package/dist/cjs/components/KeyValueListItem/common/ItemActions/ItemAction.js.map +1 -1
  11. package/dist/cjs/components/KeyValueListItem/common/ItemActions/ItemAction.styled.js +3 -20
  12. package/dist/cjs/components/KeyValueListItem/common/ItemActions/ItemAction.styled.js.map +1 -1
  13. package/dist/cjs/components/LegacyTooltip/LegacyTooltip.js +101 -0
  14. package/dist/cjs/components/LegacyTooltip/LegacyTooltip.js.map +1 -0
  15. package/dist/cjs/components/LegacyTooltip/LegacyTooltip.styled.js +41 -0
  16. package/dist/cjs/components/LegacyTooltip/LegacyTooltip.styled.js.map +1 -0
  17. package/dist/cjs/components/LegacyTooltip/LegacyTooltip.types.js +20 -0
  18. package/dist/cjs/components/LegacyTooltip/LegacyTooltip.types.js.map +1 -0
  19. package/dist/cjs/components/{Tooltip/TooltipContent.js → LegacyTooltip/LegacyTooltipContent.js} +9 -12
  20. package/dist/cjs/components/LegacyTooltip/LegacyTooltipContent.js.map +1 -0
  21. package/dist/cjs/components/{Tooltip → LegacyTooltip}/utils.js +33 -33
  22. package/dist/cjs/components/LegacyTooltip/utils.js.map +1 -0
  23. package/dist/cjs/components/ListItem/ListItem.styled.js +1 -1
  24. package/dist/cjs/components/ListMenuTitle/ListMenuTitle.js +11 -10
  25. package/dist/cjs/components/ListMenuTitle/ListMenuTitle.js.map +1 -1
  26. package/dist/cjs/components/Modals/Modal/Modal.types.js.map +1 -1
  27. package/dist/cjs/components/Navigator/NavGroup/NavGroup.js +10 -11
  28. package/dist/cjs/components/Navigator/NavGroup/NavGroup.js.map +1 -1
  29. package/dist/cjs/components/Navigator/NavItem/NavItem.js +10 -10
  30. package/dist/cjs/components/Navigator/NavItem/NavItem.js.map +1 -1
  31. package/dist/cjs/components/SectionLabel/SectionLabel.js +10 -17
  32. package/dist/cjs/components/SectionLabel/SectionLabel.js.map +1 -1
  33. package/dist/cjs/components/SectionLabel/SectionLabel.styled.js +4 -4
  34. package/dist/cjs/components/SectionLabel/SectionLabel.styled.js.map +1 -1
  35. package/dist/cjs/components/Spinner/Spinner.js +10 -7
  36. package/dist/cjs/components/Spinner/Spinner.js.map +1 -1
  37. package/dist/cjs/components/Spinner/Spinner.styled.js +1 -1
  38. package/dist/cjs/components/Spinner/Spinner.types.js.map +1 -1
  39. package/dist/cjs/components/Stack/Stack/Stack.styled.js +1 -1
  40. package/dist/cjs/components/Status/Status.styled.js +1 -1
  41. package/dist/cjs/components/TagBadge/Badge/Badge.js +9 -8
  42. package/dist/cjs/components/TagBadge/Badge/Badge.js.map +1 -1
  43. package/dist/cjs/components/TagBadge/Tag/Tag.js +4 -3
  44. package/dist/cjs/components/TagBadge/Tag/Tag.js.map +1 -1
  45. package/dist/cjs/components/Text/Text.styled.js +1 -1
  46. package/dist/cjs/components/Toast/Toast.types.js +2 -1
  47. package/dist/cjs/components/Toast/Toast.types.js.map +1 -1
  48. package/dist/cjs/components/Toast/ToastElement.js +5 -6
  49. package/dist/cjs/components/Toast/ToastElement.js.map +1 -1
  50. package/dist/cjs/components/Toast/ToastProvider.js +2 -2
  51. package/dist/cjs/components/Toast/ToastProvider.js.map +1 -1
  52. package/dist/cjs/components/Toast/utils.js +6 -5
  53. package/dist/cjs/components/Toast/utils.js.map +1 -1
  54. package/dist/cjs/components/Tooltip/Tooltip.js +211 -83
  55. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  56. package/dist/cjs/components/Tooltip/Tooltip.styled.js +96 -25
  57. package/dist/cjs/components/Tooltip/Tooltip.styled.js.map +1 -1
  58. package/dist/cjs/components/Tooltip/Tooltip.types.js +3 -0
  59. package/dist/cjs/components/Tooltip/Tooltip.types.js.map +1 -1
  60. package/dist/cjs/foundation/FoundationStyledComponent.js +16 -1
  61. package/dist/cjs/foundation/FoundationStyledComponent.js.map +1 -1
  62. package/dist/cjs/index.js +15 -10
  63. package/dist/cjs/index.js.map +1 -1
  64. package/dist/cjs/node_modules/@floating-ui/core/dist/floating-ui.core.js +886 -0
  65. package/dist/cjs/node_modules/@floating-ui/core/dist/floating-ui.core.js.map +1 -0
  66. package/dist/cjs/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +691 -0
  67. package/dist/cjs/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -0
  68. package/dist/cjs/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js +296 -0
  69. package/dist/cjs/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js.map +1 -0
  70. package/dist/cjs/node_modules/@radix-ui/react-popper/dist/index.js +265 -0
  71. package/dist/cjs/node_modules/@radix-ui/react-popper/dist/index.js.map +1 -0
  72. package/dist/cjs/node_modules/@radix-ui/react-slider/dist/index.js +21 -21
  73. package/dist/cjs/node_modules/@radix-ui/react-tooltip/dist/index.js +521 -0
  74. package/dist/cjs/node_modules/@radix-ui/react-tooltip/dist/index.js.map +1 -0
  75. package/dist/cjs/providers/BezierProvider.js +3 -2
  76. package/dist/cjs/providers/BezierProvider.js.map +1 -1
  77. package/dist/esm/components/Forms/Slider/Slider.mjs +76 -53
  78. package/dist/esm/components/Forms/Slider/Slider.mjs.map +1 -1
  79. package/dist/esm/components/Forms/Slider/Slider.styled.mjs +22 -82
  80. package/dist/esm/components/Forms/Slider/Slider.styled.mjs.map +1 -1
  81. package/dist/esm/components/Help/Help.mjs +11 -8
  82. package/dist/esm/components/Help/Help.mjs.map +1 -1
  83. package/dist/esm/components/Help/Help.styled.mjs +4 -5
  84. package/dist/esm/components/Help/Help.styled.mjs.map +1 -1
  85. package/dist/esm/components/KeyValueListItem/common/ItemActions/ItemAction.mjs +3 -10
  86. package/dist/esm/components/KeyValueListItem/common/ItemActions/ItemAction.mjs.map +1 -1
  87. package/dist/esm/components/KeyValueListItem/common/ItemActions/ItemAction.styled.mjs +4 -19
  88. package/dist/esm/components/KeyValueListItem/common/ItemActions/ItemAction.styled.mjs.map +1 -1
  89. package/dist/esm/components/LegacyTooltip/LegacyTooltip.mjs +97 -0
  90. package/dist/esm/components/LegacyTooltip/LegacyTooltip.mjs.map +1 -0
  91. package/dist/esm/components/LegacyTooltip/LegacyTooltip.styled.mjs +36 -0
  92. package/dist/esm/components/LegacyTooltip/LegacyTooltip.styled.mjs.map +1 -0
  93. package/dist/esm/components/LegacyTooltip/LegacyTooltip.types.mjs +18 -0
  94. package/dist/esm/components/LegacyTooltip/LegacyTooltip.types.mjs.map +1 -0
  95. package/dist/esm/components/{Tooltip/TooltipContent.mjs → LegacyTooltip/LegacyTooltipContent.mjs} +8 -9
  96. package/dist/esm/components/LegacyTooltip/LegacyTooltipContent.mjs.map +1 -0
  97. package/dist/esm/components/{Tooltip → LegacyTooltip}/utils.mjs +33 -33
  98. package/dist/esm/components/LegacyTooltip/utils.mjs.map +1 -0
  99. package/dist/esm/components/ListItem/ListItem.styled.mjs +1 -1
  100. package/dist/esm/components/ListMenuTitle/ListMenuTitle.mjs +12 -11
  101. package/dist/esm/components/ListMenuTitle/ListMenuTitle.mjs.map +1 -1
  102. package/dist/esm/components/Modals/Modal/Modal.types.mjs.map +1 -1
  103. package/dist/esm/components/Navigator/NavGroup/NavGroup.mjs +11 -12
  104. package/dist/esm/components/Navigator/NavGroup/NavGroup.mjs.map +1 -1
  105. package/dist/esm/components/Navigator/NavItem/NavItem.mjs +11 -11
  106. package/dist/esm/components/Navigator/NavItem/NavItem.mjs.map +1 -1
  107. package/dist/esm/components/Overlay/Overlay.mjs +2 -2
  108. package/dist/esm/components/Overlay/Overlay.mjs.map +1 -1
  109. package/dist/esm/components/SectionLabel/SectionLabel.mjs +11 -17
  110. package/dist/esm/components/SectionLabel/SectionLabel.mjs.map +1 -1
  111. package/dist/esm/components/SectionLabel/SectionLabel.styled.mjs +4 -4
  112. package/dist/esm/components/SectionLabel/SectionLabel.styled.mjs.map +1 -1
  113. package/dist/esm/components/Spinner/Spinner.mjs +11 -8
  114. package/dist/esm/components/Spinner/Spinner.mjs.map +1 -1
  115. package/dist/esm/components/Spinner/Spinner.styled.mjs +1 -1
  116. package/dist/esm/components/Spinner/Spinner.types.mjs.map +1 -1
  117. package/dist/esm/components/Stack/Stack/Stack.styled.mjs +1 -1
  118. package/dist/esm/components/Status/Status.styled.mjs +1 -1
  119. package/dist/esm/components/TagBadge/Badge/Badge.mjs +10 -9
  120. package/dist/esm/components/TagBadge/Badge/Badge.mjs.map +1 -1
  121. package/dist/esm/components/TagBadge/Tag/Tag.mjs +5 -4
  122. package/dist/esm/components/TagBadge/Tag/Tag.mjs.map +1 -1
  123. package/dist/esm/components/Text/Text.styled.mjs +1 -1
  124. package/dist/esm/components/Toast/Toast.types.mjs +2 -1
  125. package/dist/esm/components/Toast/Toast.types.mjs.map +1 -1
  126. package/dist/esm/components/Toast/ToastElement.mjs +5 -6
  127. package/dist/esm/components/Toast/ToastElement.mjs.map +1 -1
  128. package/dist/esm/components/Toast/ToastProvider.mjs +2 -2
  129. package/dist/esm/components/Toast/ToastProvider.mjs.map +1 -1
  130. package/dist/esm/components/Toast/utils.mjs +6 -5
  131. package/dist/esm/components/Toast/utils.mjs.map +1 -1
  132. package/dist/esm/components/Tooltip/Tooltip.mjs +213 -82
  133. package/dist/esm/components/Tooltip/Tooltip.mjs.map +1 -1
  134. package/dist/esm/components/Tooltip/Tooltip.styled.mjs +93 -23
  135. package/dist/esm/components/Tooltip/Tooltip.styled.mjs.map +1 -1
  136. package/dist/esm/components/Tooltip/Tooltip.types.mjs +3 -0
  137. package/dist/esm/components/Tooltip/Tooltip.types.mjs.map +1 -1
  138. package/dist/esm/foundation/FoundationStyledComponent.mjs +16 -1
  139. package/dist/esm/foundation/FoundationStyledComponent.mjs.map +1 -1
  140. package/dist/esm/index.mjs +7 -5
  141. package/dist/esm/index.mjs.map +1 -1
  142. package/dist/esm/node_modules/@floating-ui/core/dist/floating-ui.core.mjs +875 -0
  143. package/dist/esm/node_modules/@floating-ui/core/dist/floating-ui.core.mjs.map +1 -0
  144. package/dist/esm/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +679 -0
  145. package/dist/esm/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs.map +1 -0
  146. package/dist/esm/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.mjs +265 -0
  147. package/dist/esm/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.mjs.map +1 -0
  148. package/dist/esm/node_modules/@radix-ui/react-popper/dist/index.mjs +257 -0
  149. package/dist/esm/node_modules/@radix-ui/react-popper/dist/index.mjs.map +1 -0
  150. package/dist/esm/node_modules/@radix-ui/react-portal/dist/index.mjs +2 -2
  151. package/dist/esm/node_modules/@radix-ui/react-slider/dist/index.mjs +1 -1
  152. package/dist/esm/node_modules/@radix-ui/react-tooltip/dist/index.mjs +509 -0
  153. package/dist/esm/node_modules/@radix-ui/react-tooltip/dist/index.mjs.map +1 -0
  154. package/dist/esm/providers/BezierProvider.mjs +3 -2
  155. package/dist/esm/providers/BezierProvider.mjs.map +1 -1
  156. package/dist/types/components/Forms/Slider/Slider.d.ts +18 -2
  157. package/dist/types/components/Forms/Slider/Slider.d.ts.map +1 -1
  158. package/dist/types/components/Forms/Slider/Slider.styled.d.ts +14 -24
  159. package/dist/types/components/Forms/Slider/Slider.styled.d.ts.map +1 -1
  160. package/dist/types/components/Forms/Slider/Slider.types.d.ts +52 -13
  161. package/dist/types/components/Forms/Slider/Slider.types.d.ts.map +1 -1
  162. package/dist/types/components/Help/Help.d.ts +1 -4
  163. package/dist/types/components/Help/Help.d.ts.map +1 -1
  164. package/dist/types/components/Help/Help.styled.d.ts +1 -1
  165. package/dist/types/components/Help/Help.styled.d.ts.map +1 -1
  166. package/dist/types/components/Help/Help.types.d.ts +1 -1
  167. package/dist/types/components/Help/Help.types.d.ts.map +1 -1
  168. package/dist/types/components/KeyValueListItem/common/ItemActions/ItemAction.d.ts.map +1 -1
  169. package/dist/types/components/KeyValueListItem/common/ItemActions/ItemAction.styled.d.ts +1 -7
  170. package/dist/types/components/KeyValueListItem/common/ItemActions/ItemAction.styled.d.ts.map +1 -1
  171. package/dist/types/components/KeyValueListItem/common/ItemActions/ItemAction.types.d.ts +3 -3
  172. package/dist/types/components/KeyValueListItem/common/ItemActions/ItemAction.types.d.ts.map +1 -1
  173. package/dist/types/components/KeyValueListItem/common/KeyItem/KeyItem.types.d.ts +2 -2
  174. package/dist/types/components/KeyValueListItem/common/KeyItem/KeyItem.types.d.ts.map +1 -1
  175. package/dist/types/components/LegacyTooltip/LegacyTooltip.d.ts +6 -0
  176. package/dist/types/components/LegacyTooltip/LegacyTooltip.d.ts.map +1 -0
  177. package/dist/types/components/LegacyTooltip/LegacyTooltip.styled.d.ts +18 -0
  178. package/dist/types/components/LegacyTooltip/LegacyTooltip.styled.d.ts.map +1 -0
  179. package/dist/types/components/LegacyTooltip/LegacyTooltip.types.d.ts +40 -0
  180. package/dist/types/components/LegacyTooltip/LegacyTooltip.types.d.ts.map +1 -0
  181. package/dist/types/components/LegacyTooltip/LegacyTooltipContent.d.ts +4 -0
  182. package/dist/types/components/LegacyTooltip/LegacyTooltipContent.d.ts.map +1 -0
  183. package/dist/types/components/LegacyTooltip/index.d.ts +4 -0
  184. package/dist/types/components/LegacyTooltip/index.d.ts.map +1 -0
  185. package/dist/types/components/{Tooltip → LegacyTooltip}/utils.d.ts +2 -2
  186. package/dist/types/components/LegacyTooltip/utils.d.ts.map +1 -0
  187. package/dist/types/components/ListMenuTitle/ListMenuTitle.d.ts +1 -1
  188. package/dist/types/components/ListMenuTitle/ListMenuTitle.d.ts.map +1 -1
  189. package/dist/types/components/ListMenuTitle/ListMenuTitle.types.d.ts +1 -2
  190. package/dist/types/components/ListMenuTitle/ListMenuTitle.types.d.ts.map +1 -1
  191. package/dist/types/components/Modals/Modal/Modal.types.d.ts +2 -2
  192. package/dist/types/components/Modals/Modal/Modal.types.d.ts.map +1 -1
  193. package/dist/types/components/Navigator/NavGroup/NavGroup.d.ts +1 -2
  194. package/dist/types/components/Navigator/NavGroup/NavGroup.d.ts.map +1 -1
  195. package/dist/types/components/Navigator/NavGroup/NavGroup.types.d.ts +3 -3
  196. package/dist/types/components/Navigator/NavGroup/NavGroup.types.d.ts.map +1 -1
  197. package/dist/types/components/Navigator/NavItem/NavItem.d.ts +1 -2
  198. package/dist/types/components/Navigator/NavItem/NavItem.d.ts.map +1 -1
  199. package/dist/types/components/Navigator/NavItem/NavItem.types.d.ts +3 -3
  200. package/dist/types/components/Navigator/NavItem/NavItem.types.d.ts.map +1 -1
  201. package/dist/types/components/SectionLabel/SectionLabel.d.ts +1 -2
  202. package/dist/types/components/SectionLabel/SectionLabel.d.ts.map +1 -1
  203. package/dist/types/components/SectionLabel/SectionLabel.styled.d.ts +1 -1
  204. package/dist/types/components/SectionLabel/SectionLabel.styled.d.ts.map +1 -1
  205. package/dist/types/components/SectionLabel/SectionLabel.types.d.ts +2 -7
  206. package/dist/types/components/SectionLabel/SectionLabel.types.d.ts.map +1 -1
  207. package/dist/types/components/Spinner/Spinner.d.ts +1 -1
  208. package/dist/types/components/Spinner/Spinner.d.ts.map +1 -1
  209. package/dist/types/components/Spinner/Spinner.types.d.ts +2 -1
  210. package/dist/types/components/Spinner/Spinner.types.d.ts.map +1 -1
  211. package/dist/types/components/TagBadge/Badge/Badge.d.ts +1 -1
  212. package/dist/types/components/TagBadge/Badge/Badge.d.ts.map +1 -1
  213. package/dist/types/components/TagBadge/Badge/Badge.types.d.ts +2 -2
  214. package/dist/types/components/TagBadge/Badge/Badge.types.d.ts.map +1 -1
  215. package/dist/types/components/TagBadge/Tag/Tag.d.ts +1 -1
  216. package/dist/types/components/TagBadge/Tag/Tag.d.ts.map +1 -1
  217. package/dist/types/components/Toast/Toast.types.d.ts +4 -4
  218. package/dist/types/components/Toast/Toast.types.d.ts.map +1 -1
  219. package/dist/types/components/Toast/ToastElement.d.ts.map +1 -1
  220. package/dist/types/components/Toast/utils.d.ts.map +1 -1
  221. package/dist/types/components/Tooltip/Tooltip.d.ts +31 -5
  222. package/dist/types/components/Tooltip/Tooltip.d.ts.map +1 -1
  223. package/dist/types/components/Tooltip/Tooltip.styled.d.ts +22 -12
  224. package/dist/types/components/Tooltip/Tooltip.styled.d.ts.map +1 -1
  225. package/dist/types/components/Tooltip/Tooltip.types.d.ts +105 -24
  226. package/dist/types/components/Tooltip/Tooltip.types.d.ts.map +1 -1
  227. package/dist/types/components/Tooltip/index.d.ts +3 -5
  228. package/dist/types/components/Tooltip/index.d.ts.map +1 -1
  229. package/dist/types/components/VisuallyHidden/VisuallyHidden.types.d.ts +2 -1
  230. package/dist/types/components/VisuallyHidden/VisuallyHidden.types.d.ts.map +1 -1
  231. package/dist/types/foundation/FoundationStyledComponent.d.ts.map +1 -1
  232. package/dist/types/index.d.ts +1 -0
  233. package/dist/types/index.d.ts.map +1 -1
  234. package/dist/types/providers/BezierProvider.d.ts.map +1 -1
  235. package/package.json +3 -2
  236. package/src/components/Avatars/AvatarGroup/__snapshots__/AvatarGroup.test.tsx.snap +17 -17
  237. package/src/components/Button/__snapshots__/Button.test.tsx.snap +15 -15
  238. package/src/components/Forms/FormControl/__snapshots__/FormControl.test.tsx.snap +119 -119
  239. package/src/components/Forms/Slider/Slider.stories.tsx +10 -63
  240. package/src/components/Forms/Slider/Slider.styled.ts +46 -95
  241. package/src/components/Forms/Slider/Slider.test.tsx +130 -97
  242. package/src/components/Forms/Slider/Slider.tsx +117 -96
  243. package/src/components/Forms/Slider/Slider.types.ts +55 -17
  244. package/src/components/Forms/Slider/__snapshots__/Slider.test.tsx.snap +156 -0
  245. package/src/components/Help/Help.styled.ts +4 -7
  246. package/src/components/Help/Help.tsx +19 -12
  247. package/src/components/Help/Help.types.ts +1 -1
  248. package/src/components/KeyValueListItem/KeyValueListItem.test.tsx +10 -6
  249. package/src/components/KeyValueListItem/__snapshots__/KeyValueListItem.test.tsx.snap +13 -13
  250. package/src/components/KeyValueListItem/common/ItemActions/ItemAction.styled.ts +5 -15
  251. package/src/components/KeyValueListItem/common/ItemActions/ItemAction.tsx +6 -13
  252. package/src/components/KeyValueListItem/common/ItemActions/ItemAction.types.ts +3 -6
  253. package/src/components/KeyValueListItem/common/KeyItem/KeyItem.types.ts +2 -5
  254. package/src/components/LegacyTooltip/LegacyTooltip.stories.tsx +105 -0
  255. package/src/components/LegacyTooltip/LegacyTooltip.styled.ts +46 -0
  256. package/src/components/LegacyTooltip/LegacyTooltip.test.tsx +100 -0
  257. package/src/components/LegacyTooltip/LegacyTooltip.tsx +152 -0
  258. package/src/components/LegacyTooltip/LegacyTooltip.types.ts +69 -0
  259. package/src/components/{Tooltip/TooltipContent.test.tsx → LegacyTooltip/LegacyTooltipContent.test.tsx} +9 -8
  260. package/src/components/{Tooltip/TooltipContent.tsx → LegacyTooltip/LegacyTooltipContent.tsx} +6 -7
  261. package/src/components/LegacyTooltip/index.ts +5 -0
  262. package/src/components/{Tooltip → LegacyTooltip}/utils.ts +35 -35
  263. package/src/components/ListMenuTitle/ListMenuTitle.tsx +10 -6
  264. package/src/components/ListMenuTitle/ListMenuTitle.types.ts +1 -1
  265. package/src/components/Modals/Modal/Modal.types.ts +2 -2
  266. package/src/components/Navigator/NavGroup/NavGroup.stories.tsx +5 -2
  267. package/src/components/Navigator/NavGroup/NavGroup.test.tsx +1 -1
  268. package/src/components/Navigator/NavGroup/NavGroup.tsx +13 -16
  269. package/src/components/Navigator/NavGroup/NavGroup.types.ts +3 -2
  270. package/src/components/Navigator/NavItem/NavItem.test.tsx +3 -1
  271. package/src/components/Navigator/NavItem/NavItem.tsx +13 -12
  272. package/src/components/Navigator/NavItem/NavItem.types.ts +3 -2
  273. package/src/components/SectionLabel/SectionLabel.stories.tsx +1 -1
  274. package/src/components/SectionLabel/SectionLabel.styled.ts +2 -4
  275. package/src/components/SectionLabel/SectionLabel.test.tsx +5 -25
  276. package/src/components/SectionLabel/SectionLabel.tsx +11 -17
  277. package/src/components/SectionLabel/SectionLabel.types.ts +2 -8
  278. package/src/components/Spinner/Spinner.tsx +7 -4
  279. package/src/components/Spinner/Spinner.types.ts +2 -1
  280. package/src/components/TagBadge/Badge/Badge.stories.tsx +2 -1
  281. package/src/components/TagBadge/Badge/Badge.tsx +15 -10
  282. package/src/components/TagBadge/Badge/Badge.types.ts +2 -2
  283. package/src/components/TagBadge/Tag/Tag.tsx +9 -4
  284. package/src/components/TagBadge/TagBadge.mdx +1 -1
  285. package/src/components/TagBadge/TagBadge.stories.tsx +48 -33
  286. package/src/components/Toast/Toast.stories.tsx +9 -8
  287. package/src/components/Toast/Toast.types.ts +8 -5
  288. package/src/components/Toast/ToastElement.tsx +4 -5
  289. package/src/components/Toast/ToastProvider.tsx +2 -2
  290. package/src/components/Toast/ToastService.test.ts +3 -1
  291. package/src/components/Toast/useToastContextValues.test.tsx +5 -4
  292. package/src/components/Toast/utils.ts +13 -5
  293. package/src/components/Tooltip/Tooltip.stories.tsx +28 -67
  294. package/src/components/Tooltip/Tooltip.styled.ts +109 -19
  295. package/src/components/Tooltip/Tooltip.test.tsx +136 -63
  296. package/src/components/Tooltip/Tooltip.tsx +262 -120
  297. package/src/components/Tooltip/Tooltip.types.ts +111 -47
  298. package/src/components/Tooltip/index.ts +8 -8
  299. package/src/components/VisuallyHidden/VisuallyHidden.types.ts +1 -1
  300. package/src/foundation/FoundationStyledComponent.tsx +17 -1
  301. package/src/index.ts +1 -0
  302. package/src/providers/BezierProvider.tsx +10 -6
  303. package/dist/cjs/components/Tooltip/TooltipContent.js.map +0 -1
  304. package/dist/cjs/components/Tooltip/utils.js.map +0 -1
  305. package/dist/esm/components/Tooltip/TooltipContent.mjs.map +0 -1
  306. package/dist/esm/components/Tooltip/utils.mjs.map +0 -1
  307. package/dist/types/components/Tooltip/TooltipContent.d.ts +0 -5
  308. package/dist/types/components/Tooltip/TooltipContent.d.ts.map +0 -1
  309. package/dist/types/components/Tooltip/utils.d.ts.map +0 -1
  310. /package/src/components/{Tooltip/__snapshots__/Tooltip.test.tsx.snap → LegacyTooltip/__snapshots__/LegacyTooltip.test.tsx.snap} +0 -0
@@ -1,99 +1,172 @@
1
1
  import React from 'react'
2
2
 
3
- import { fireEvent } from '@testing-library/dom'
4
- import { act } from '@testing-library/react'
5
-
6
- import { css } from '~/src/foundation'
3
+ import {
4
+ isInaccessible,
5
+ waitFor,
6
+ } from '@testing-library/react'
7
+ import userEvent from '@testing-library/user-event'
7
8
 
8
9
  import { render } from '~/src/utils/testUtils'
9
10
 
10
- import Tooltip, {
11
- TOOLTIP_CONTENT_TEST_ID,
12
- TOOLTIP_TEST_ID,
11
+ import {
12
+ Tooltip,
13
+ TooltipProvider,
13
14
  } from './Tooltip'
14
- import type TooltipProps from './Tooltip.types'
15
-
16
- const RootTooltip: React.FC<TooltipProps> = ({ children, ...rests }) => (
17
- <Tooltip {...rests}>
18
- { children }
19
- </Tooltip>
20
- )
21
-
22
- describe('Tooltip test >', () => {
23
- let props: TooltipProps
15
+ import {
16
+ type TooltipProps,
17
+ type TooltipProviderProps,
18
+ } from './Tooltip.types'
19
+
20
+ describe('Tooltip', () => {
21
+ const renderTooltip = ({
22
+ children,
23
+ ...rest
24
+ }: TooltipProps = {}) => render(
25
+ <Tooltip {...rest}>
26
+ <button type="button">
27
+ Trigger
28
+ </button>
29
+ </Tooltip>,
30
+ )
24
31
 
25
- const content = 'Hovered'
32
+ let user: ReturnType<typeof userEvent.setup>
26
33
 
27
34
  beforeEach(() => {
28
- props = {
29
- children: 'Text',
30
- content,
31
- }
32
-
33
- jest.useFakeTimers()
35
+ user = userEvent.setup()
34
36
  })
35
37
 
36
- afterEach(() => {
37
- jest.useRealTimers()
38
- })
38
+ describe('ARIA', () => {
39
+ it('should be accessible', () => {
40
+ const { container } = renderTooltip({ defaultShow: true })
41
+ expect(isInaccessible(container)).toBe(false)
42
+ })
39
43
 
40
- const renderTooltip = (optionProps?: TooltipProps) => render(
41
- <RootTooltip {...props} {...optionProps} />,
42
- )
44
+ it('The element that serves as the tooltip container has role `tooltip`.', () => {
45
+ const { getByRole } = renderTooltip({ defaultShow: true })
46
+ expect(getByRole('tooltip')).toBeInTheDocument()
47
+ })
43
48
 
44
- it('Tooltip with default props', () => {
45
- const { baseElement, getByTestId } = renderTooltip()
49
+ it('The element that triggers the tooltip references the tooltip element with `aria-describedby`.', () => {
50
+ const { getByRole } = renderTooltip({ defaultShow: true })
51
+ expect(getByRole('button')).toHaveAttribute('aria-describedby', getByRole('tooltip').id)
52
+ })
53
+ })
46
54
 
47
- act(() => {
48
- fireEvent.mouseOver(getByTestId(TOOLTIP_TEST_ID))
55
+ describe('User Interactions', () => {
56
+ it('The tooltip content should be visible when hover over the trigger.', async () => {
57
+ const { getByRole } = renderTooltip()
58
+ await user.hover(getByRole('button'))
59
+ expect(getByRole('tooltip')).toBeInTheDocument()
60
+ })
49
61
 
50
- jest.runAllTimers()
62
+ it('The tooltip content should be visible when the keyboard focuses on the trigger.', async () => {
63
+ const { getByRole } = renderTooltip()
64
+ await user.tab()
65
+ expect(getByRole('tooltip')).toBeInTheDocument()
51
66
  })
52
67
 
53
- expect(baseElement).toMatchSnapshot()
54
- })
68
+ it('When the tooltip content is visible, pressing Esc should hide the tooltip content.', async () => {
69
+ const { queryByRole } = renderTooltip({ defaultShow: true })
70
+ await user.keyboard('{Escape}')
71
+ expect(queryByRole('tooltip')).not.toBeInTheDocument()
72
+ })
55
73
 
56
- it('Tooltip with contentInterpolation prop', async () => {
57
- const { baseElement, getByTestId } = renderTooltip({
58
- contentInterpolation: css`background-color: black;`,
74
+ it('When the `allowHover` property is true, the tooltip content should be hoverable.', async () => {
75
+ const { getByRole } = renderTooltip({ allowHover: true })
76
+ await user.hover(getByRole('button'))
77
+ await user.hover(getByRole('tooltip'))
78
+ expect(getByRole('tooltip')).toBeInTheDocument()
59
79
  })
60
80
 
61
- act(() => {
62
- fireEvent.mouseOver(getByTestId(TOOLTIP_TEST_ID))
81
+ it('When the tooltip is visible, the `onShow` handler should be called.', async () => {
82
+ const onShow = jest.fn()
83
+ const { getByRole } = renderTooltip({ onShow })
84
+ await user.hover(getByRole('button'))
85
+ expect(onShow).toHaveBeenCalled()
86
+ })
63
87
 
64
- jest.runAllTimers()
88
+ it('When the tooltip is hidden, the `onHide` handler should be called.', async () => {
89
+ const onHide = jest.fn()
90
+ const { getByRole } = renderTooltip({ onHide })
91
+ await user.hover(getByRole('button'))
92
+ await user.unhover(getByRole('button'))
93
+ expect(onHide).toHaveBeenCalled()
65
94
  })
66
95
 
67
- expect(baseElement).toMatchSnapshot()
68
- })
96
+ it('If the `disabled` property is true, the tooltip should not be visible when hovering over it or with keyboard focus.', async () => {
97
+ const { getByRole, queryByRole } = renderTooltip({ disabled: true })
98
+ await user.hover(getByRole('button'))
99
+ expect(queryByRole('tooltip')).not.toBeInTheDocument()
100
+ await user.tab()
101
+ expect(queryByRole('tooltip')).not.toBeInTheDocument()
102
+ })
69
103
 
70
- it('TooltipContent not rendered at first', async () => {
71
- const { queryByTestId } = renderTooltip()
104
+ it('If the `delayShow` property is greater than 0, the tooltip should be delayed by that number of ms before appearing.', async () => {
105
+ const { getByRole, queryByRole } = renderTooltip({ delayShow: 1000 })
106
+ await user.hover(getByRole('button'))
107
+ expect(queryByRole('tooltip')).not.toBeInTheDocument()
108
+ await waitFor(() => {
109
+ expect(queryByRole('tooltip')).toBeInTheDocument()
110
+ }, { timeout: 1000 })
111
+ })
72
112
 
73
- expect(queryByTestId(TOOLTIP_CONTENT_TEST_ID)).toBeNull()
113
+ it('If the `delayHide` property is greater than 0, the tooltip should be delayed by that number of ms before disappearing.', async () => {
114
+ const { getByRole, queryByRole } = renderTooltip({ delayHide: 1000 })
115
+ await user.hover(getByRole('button'))
116
+ await user.unhover(getByRole('button'))
117
+ expect(queryByRole('tooltip')).toBeInTheDocument()
118
+ await waitFor(() => {
119
+ expect(queryByRole('tooltip')).not.toBeInTheDocument()
120
+ }, { timeout: 1000 })
121
+ })
74
122
  })
123
+ })
75
124
 
76
- it('TooltipContent rendered after mouseover', async () => {
77
- const { getByTestId, queryByTestId } = renderTooltip()
78
-
79
- act(() => {
80
- fireEvent.mouseOver(getByTestId(TOOLTIP_TEST_ID))
125
+ describe('TooltipProvider', () => {
126
+ const renderTooltipProvider = ({
127
+ children,
128
+ ...rest
129
+ }: TooltipProviderProps = {}) => render(
130
+ <TooltipProvider {...rest}>
131
+ <Tooltip>
132
+ <button type="button">
133
+ Trigger
134
+ </button>
135
+ </Tooltip>
136
+ </TooltipProvider>,
137
+ )
81
138
 
82
- jest.runAllTimers()
83
- })
139
+ let user: ReturnType<typeof userEvent.setup>
84
140
 
85
- expect(queryByTestId(TOOLTIP_CONTENT_TEST_ID)).toBeVisible()
141
+ beforeEach(() => {
142
+ user = userEvent.setup()
86
143
  })
87
144
 
88
- it('Tooltip with disabled prop not rendered even after mouseover', async () => {
89
- const { getByTestId, queryByTestId } = renderTooltip({ disabled: true })
90
-
91
- act(() => {
92
- fireEvent.mouseOver(getByTestId(TOOLTIP_TEST_ID))
145
+ describe('User Interactions', () => {
146
+ it('If the `allowHover` property is true, the tooltip content should be hoverable.', async () => {
147
+ const { getByRole } = renderTooltipProvider({ allowHover: true })
148
+ await user.hover(getByRole('button'))
149
+ await user.hover(getByRole('tooltip'))
150
+ expect(getByRole('tooltip')).toBeInTheDocument()
151
+ })
93
152
 
94
- jest.runAllTimers()
153
+ it('If the `delayShow` property is greater than 0, the tooltip should be delayed by that number of ms before appearing.', async () => {
154
+ const { getByRole, queryByRole } = renderTooltipProvider({ delayShow: 1000 })
155
+ await user.hover(getByRole('button'))
156
+ expect(queryByRole('tooltip')).not.toBeInTheDocument()
157
+ await waitFor(() => {
158
+ expect(queryByRole('tooltip')).toBeInTheDocument()
159
+ }, { timeout: 1000 })
95
160
  })
96
161
 
97
- expect(queryByTestId(TOOLTIP_CONTENT_TEST_ID)).toBeNull()
162
+ it('If the `delayHide` property is greater than 0, the tooltip should be delayed by that number of ms before disappearing.', async () => {
163
+ const { getByRole, queryByRole } = renderTooltipProvider({ delayHide: 1000 })
164
+ await user.hover(getByRole('button'))
165
+ await user.unhover(getByRole('button'))
166
+ expect(queryByRole('tooltip')).toBeInTheDocument()
167
+ await waitFor(() => {
168
+ expect(queryByRole('tooltip')).not.toBeInTheDocument()
169
+ }, { timeout: 1000 })
170
+ })
98
171
  })
99
172
  })
@@ -1,5 +1,4 @@
1
1
  import React, {
2
- type Ref,
3
2
  forwardRef,
4
3
  useCallback,
5
4
  useEffect,
@@ -8,146 +7,289 @@ import React, {
8
7
  useState,
9
8
  } from 'react'
10
9
 
11
- import { window } from '~/src/utils/domUtils'
12
-
13
- import type TooltipProps from './Tooltip.types'
14
- import { TooltipPosition } from './Tooltip.types'
15
- import TooltipContent from './TooltipContent'
16
-
17
- import { Container } from './Tooltip.styled'
18
-
19
- export const TOOLTIP_TEST_ID = 'bezier-react-tooltip'
20
- export const TOOLTIP_CONTENT_TEST_ID = 'bezier-react-tooltip-content'
21
-
22
- function Tooltip(
23
- {
24
- as,
25
- testId = TOOLTIP_TEST_ID,
26
- contentTestId = TOOLTIP_CONTENT_TEST_ID,
27
- className,
28
- contentClassName,
29
- contentInterpolation,
30
- contentWrapperStyle,
31
- content = null,
32
- lazy = false, // optional prop 에서 추후 default behavior 를 lazy 하게 바꿀 예정
33
- placement = TooltipPosition.BottomCenter,
34
- disabled = false,
35
- offset = 4,
36
- keepInContainer = false,
37
- allowHover = false,
38
- delayShow = 0,
39
- delayHide = 0,
40
- children,
41
- ...otherProps
42
- }: TooltipProps,
43
- forwardedRef: Ref<any>,
10
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip'
11
+
12
+ import { document } from '~/src/utils/domUtils'
13
+ import { isBoolean } from '~/src/utils/typeUtils'
14
+
15
+ import {
16
+ TooltipPosition,
17
+ type TooltipProps,
18
+ type TooltipProviderProps,
19
+ } from './Tooltip.types'
20
+
21
+ import * as Styled from './Tooltip.styled'
22
+
23
+ // TODO: (@ed) Evolve it into a commonly reusable function
24
+ // FIXME: duplicate
25
+ function createContext<ContextValue>(
26
+ providerName: string,
27
+ defaultValue: ContextValue,
44
28
  ) {
45
- const [show, setShow] = useState(false)
46
- const [didMount, setDidMount] = useState(show)
29
+ const Context = React.createContext<ContextValue>(defaultValue)
47
30
 
48
- const tooltipContainerRef = useRef<HTMLDivElement>(null)
49
- const timerRef = useRef<ReturnType<Window['setTimeout']>>()
31
+ function useContext(consumerName: string) {
32
+ const contextValue = React.useContext(Context)
50
33
 
51
- useEffect(function hideTooltipContentWhenDisabled() {
52
- if (disabled) {
53
- setShow(false)
34
+ if (!contextValue) {
35
+ throw new Error(`'${consumerName}' must be used within '${providerName}'`)
54
36
  }
55
- }, [disabled])
56
37
 
57
- useEffect(function updateDidMount() {
58
- setDidMount((prev) => prev || show)
59
- }, [show])
38
+ return contextValue
39
+ }
40
+
41
+ return [
42
+ Context.Provider,
43
+ useContext,
44
+ ] as const
45
+ }
60
46
 
61
- const handleMouseEnter = useCallback(() => {
62
- if (disabled) {
63
- return
64
- }
47
+ function getSideAndAlign(
48
+ placement: TooltipPosition,
49
+ ): Pick<TooltipPrimitive.TooltipContentProps, 'side' | 'align'> {
50
+ switch (placement) {
51
+ case TooltipPosition.TopCenter:
52
+ return {
53
+ side: 'top',
54
+ align: 'center',
55
+ }
56
+ case TooltipPosition.TopLeft:
57
+ return {
58
+ side: 'top',
59
+ align: 'start',
60
+ }
61
+ case TooltipPosition.TopRight:
62
+ return {
63
+ side: 'top',
64
+ align: 'end',
65
+ }
66
+ case TooltipPosition.RightCenter:
67
+ return {
68
+ side: 'right',
69
+ align: 'center',
70
+ }
71
+ case TooltipPosition.RightTop:
72
+ return {
73
+ side: 'right',
74
+ align: 'start',
75
+ }
76
+ case TooltipPosition.RightBottom:
77
+ return {
78
+ side: 'right',
79
+ align: 'end',
80
+ }
81
+ case TooltipPosition.BottomCenter:
82
+ return {
83
+ side: 'bottom',
84
+ align: 'center',
85
+ }
86
+ case TooltipPosition.BottomLeft:
87
+ return {
88
+ side: 'bottom',
89
+ align: 'start',
90
+ }
91
+ case TooltipPosition.BottomRight:
92
+ return {
93
+ side: 'bottom',
94
+ align: 'end',
95
+ }
96
+ case TooltipPosition.LeftCenter:
97
+ return {
98
+ side: 'left',
99
+ align: 'center',
100
+ }
101
+ case TooltipPosition.LeftTop:
102
+ return {
103
+ side: 'left',
104
+ align: 'start',
105
+ }
106
+ case TooltipPosition.LeftBottom:
107
+ return {
108
+ side: 'left',
109
+ align: 'end',
110
+ }
111
+ default:
112
+ // NOTE: should not reach here
113
+ return {
114
+ side: undefined,
115
+ align: undefined,
116
+ }
117
+ }
118
+ }
119
+
120
+ const [
121
+ /**
122
+ * NOTE: Custom context use because the radix-ui doesn't support `delayHide`.
123
+ */
124
+ TooltipGlobalContextProvider,
125
+ useTooltipGlobalContext,
126
+ ] = createContext<Required<Pick<TooltipProviderProps, 'delayHide'>> | null>('TooltipProvider', null)
127
+
128
+ /**
129
+ * `TooltipProvider` is used to globally provide props to child tooltips.
130
+ *
131
+ * @example
132
+ *
133
+ * ```tsx
134
+ * <TooltipProvider allowHover delayShow={1000}>
135
+ * <Tooltip />
136
+ * </TooltipProvider>
137
+ * ```
138
+ */
139
+ export function TooltipProvider({
140
+ children,
141
+ allowHover = false,
142
+ delayShow = 0,
143
+ delayHide = 0,
144
+ skipDelayShow = 0,
145
+ }: TooltipProviderProps) {
146
+ const contextValue = useMemo(() => ({
147
+ delayHide,
148
+ }), [delayHide])
149
+
150
+ return (
151
+ <TooltipPrimitive.Provider
152
+ delayDuration={delayShow}
153
+ skipDelayDuration={skipDelayShow}
154
+ disableHoverableContent={!allowHover}
155
+ >
156
+ <TooltipGlobalContextProvider value={contextValue}>
157
+ { children }
158
+ </TooltipGlobalContextProvider>
159
+ </TooltipPrimitive.Provider>
160
+ )
161
+ }
162
+
163
+ /**
164
+ * `Tooltip` is a component that shows additional information when the mouse hovers or the keyboard is focused.
165
+ *
166
+ * @example
167
+ *
168
+ * ```tsx
169
+ * // Anatomy of the Tooltip
170
+ * <TooltipProvider>
171
+ * <Tooltip />
172
+ * </TooltipProvider>
173
+ *
174
+ * // Example of a Tooltip with a button
175
+ * <Tooltip content="Ta-da!">
176
+ * <button>Hover me</button>
177
+ * </Tooltip>
178
+ * ```
179
+ */
180
+ export const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(function Tooltip({
181
+ as,
182
+ children,
183
+ defaultShow,
184
+ onShow: onShowProp,
185
+ onHide: onHideProp,
186
+ disabled,
187
+ content,
188
+ description,
189
+ icon,
190
+ placement = TooltipPosition.BottomCenter,
191
+ offset = 4,
192
+ container = document.body,
193
+ keepInContainer = true,
194
+ allowHover,
195
+ delayShow,
196
+ delayHide: delayHideProp,
197
+ ...rest
198
+ }, forwardedRef) {
199
+ const [show, setShow] = useState<boolean>(defaultShow ?? false)
200
+ const timeoutRef = useRef<NodeJS.Timeout>()
201
+ const { delayHide: globalDelayHide } = useTooltipGlobalContext('Tooltip')
65
202
 
66
- if (timerRef.current) {
67
- clearTimeout(timerRef.current)
203
+ const delayHide = delayHideProp ?? globalDelayHide
204
+
205
+ useEffect(function cleanUpTimeout() {
206
+ return function cleanUp() {
207
+ if (timeoutRef.current) {
208
+ clearTimeout(timeoutRef.current)
209
+ }
68
210
  }
211
+ }, [])
69
212
 
70
- timerRef.current = window.setTimeout(() => {
71
- setShow(true)
72
- }, delayShow)
73
- }, [
74
- delayShow,
75
- disabled,
76
- ])
213
+ const onShow = useCallback(() => {
214
+ setShow(true)
215
+ onShowProp?.()
216
+ }, [onShowProp])
217
+
218
+ const onHide = useCallback(() => {
219
+ setShow(false)
220
+ onHideProp?.()
221
+ }, [onHideProp])
77
222
 
78
- const handleMouseLeave = useCallback(() => {
79
- if (disabled) {
223
+ const onOpenChange = useCallback((open: boolean) => {
224
+ if (disabled) { return }
225
+
226
+ if (open) {
227
+ onShow()
80
228
  return
81
229
  }
82
230
 
83
- if (timerRef.current) {
84
- clearTimeout(timerRef.current)
231
+ if (timeoutRef.current) {
232
+ clearTimeout(timeoutRef.current)
233
+ timeoutRef.current = undefined
85
234
  }
86
235
 
87
- timerRef.current = window.setTimeout(() => {
88
- setShow(false)
89
- }, delayHide)
90
- }, [
91
- delayHide,
92
- disabled,
93
- ])
94
-
95
- const TooltipComponent = useMemo(() => {
96
- if (!lazy || didMount) {
97
- return (
98
- <TooltipContent
99
- as={as}
100
- content={content}
101
- contentClassName={contentClassName}
102
- contentInterpolation={contentInterpolation}
103
- contentWrapperStyle={contentWrapperStyle}
104
- disabled={disabled}
105
- placement={placement}
106
- offset={offset}
107
- allowHover={allowHover}
108
- keepInContainer={keepInContainer}
109
- tooltipContainer={tooltipContainerRef.current}
110
- forwardedRef={forwardedRef}
111
- testId={contentTestId}
112
- />
113
- )
236
+ if (delayHide > 0) {
237
+ timeoutRef.current = setTimeout(() => {
238
+ onHide()
239
+ }, delayHide)
240
+ return
114
241
  }
115
242
 
116
- return null
243
+ onHide()
117
244
  }, [
118
- lazy,
119
- didMount,
120
- as,
121
- content,
122
- contentClassName,
123
- contentInterpolation,
124
- contentWrapperStyle,
125
245
  disabled,
126
- placement,
127
- offset,
128
- allowHover,
129
- keepInContainer,
130
- forwardedRef,
131
- contentTestId,
246
+ delayHide,
247
+ onShow,
248
+ onHide,
132
249
  ])
133
250
 
134
- if (!children) {
135
- return null
136
- }
137
-
138
251
  return (
139
- <Container
140
- ref={tooltipContainerRef}
141
- data-testid={testId}
142
- className={className}
143
- onMouseEnter={handleMouseEnter}
144
- onMouseLeave={handleMouseLeave}
145
- {...otherProps}
252
+ <TooltipPrimitive.Root
253
+ open={show}
254
+ defaultOpen={defaultShow}
255
+ delayDuration={delayShow}
256
+ disableHoverableContent={isBoolean(allowHover) ? !allowHover : undefined}
257
+ onOpenChange={onOpenChange}
146
258
  >
147
- { children }
148
- { show && TooltipComponent }
149
- </Container>
150
- )
151
- }
259
+ <TooltipPrimitive.Trigger asChild>
260
+ { children }
261
+ </TooltipPrimitive.Trigger>
262
+
263
+ <TooltipPrimitive.Portal container={container}>
264
+ <TooltipPrimitive.Content
265
+ {...rest}
266
+ {...getSideAndAlign(placement)}
267
+ asChild
268
+ ref={forwardedRef}
269
+ sideOffset={offset}
270
+ avoidCollisions={keepInContainer}
271
+ collisionPadding={8}
272
+ hideWhenDetached
273
+ >
274
+ <Styled.TooltipContent forwardedAs={as}>
275
+ <Styled.TextContainer>
276
+ <Styled.Content>
277
+ { content }
278
+ </Styled.Content>
152
279
 
153
- export default React.memo(forwardRef(Tooltip))
280
+ { description && (
281
+ <Styled.Description>
282
+ { description }
283
+ </Styled.Description>
284
+ ) }
285
+ </Styled.TextContainer>
286
+
287
+ { icon && (
288
+ <Styled.Icon source={icon} />
289
+ ) }
290
+ </Styled.TooltipContent>
291
+ </TooltipPrimitive.Content>
292
+ </TooltipPrimitive.Portal>
293
+ </TooltipPrimitive.Root>
294
+ )
295
+ })