@refraktor/core 0.0.4 → 0.0.5

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 (334) hide show
  1. package/build/components/progress-circle/progress-circle.d.ts.map +1 -1
  2. package/build/components/progress-circle/progress-circle.js +6 -6
  3. package/build/components/progress-circle/progress-circle.styles.d.ts +2 -7
  4. package/build/components/progress-circle/progress-circle.styles.d.ts.map +1 -1
  5. package/build/components/progress-circle/progress-circle.styles.js +2 -23
  6. package/build/components/progress-circle/progress-circle.types.d.ts +4 -3
  7. package/build/components/progress-circle/progress-circle.types.d.ts.map +1 -1
  8. package/build/components/slider/slider.d.ts.map +1 -1
  9. package/build/components/slider/slider.js +69 -20
  10. package/build/components/tooltip/tooltip.js +1 -1
  11. package/build/style.css +2 -2
  12. package/package.json +30 -3
  13. package/.turbo/turbo-build.log +0 -4
  14. package/refraktor-core-0.0.1-alpha.0.tgz +0 -0
  15. package/src/components/accordion/accordion-control/accordion-control.tsx +0 -156
  16. package/src/components/accordion/accordion-control/index.ts +0 -1
  17. package/src/components/accordion/accordion-item/accordion-item.tsx +0 -40
  18. package/src/components/accordion/accordion-item/index.ts +0 -1
  19. package/src/components/accordion/accordion-panel/accordion-panel.tsx +0 -58
  20. package/src/components/accordion/accordion-panel/index.ts +0 -1
  21. package/src/components/accordion/accordion.context.ts +0 -93
  22. package/src/components/accordion/accordion.styles.ts +0 -60
  23. package/src/components/accordion/accordion.test.tsx +0 -174
  24. package/src/components/accordion/accordion.tsx +0 -203
  25. package/src/components/accordion/accordion.types.ts +0 -126
  26. package/src/components/accordion/index.ts +0 -17
  27. package/src/components/avatar/avatar-group/avatar-group.tsx +0 -73
  28. package/src/components/avatar/avatar-group/index.ts +0 -1
  29. package/src/components/avatar/avatar.styles.ts +0 -11
  30. package/src/components/avatar/avatar.tsx +0 -142
  31. package/src/components/avatar/avatar.types.ts +0 -86
  32. package/src/components/avatar/index.ts +0 -8
  33. package/src/components/badge/badge.styles.ts +0 -21
  34. package/src/components/badge/badge.tsx +0 -62
  35. package/src/components/badge/badge.types.ts +0 -40
  36. package/src/components/badge/index.ts +0 -2
  37. package/src/components/breadcrumbs/breadcrumbs.styles.ts +0 -55
  38. package/src/components/breadcrumbs/breadcrumbs.test.tsx +0 -136
  39. package/src/components/breadcrumbs/breadcrumbs.tsx +0 -199
  40. package/src/components/breadcrumbs/breadcrumbs.types.ts +0 -78
  41. package/src/components/breadcrumbs/breadcrumbs.utils.ts +0 -70
  42. package/src/components/breadcrumbs/index.ts +0 -6
  43. package/src/components/button/button.styles.ts +0 -28
  44. package/src/components/button/button.test.tsx +0 -57
  45. package/src/components/button/button.tsx +0 -110
  46. package/src/components/button/button.types.ts +0 -69
  47. package/src/components/button/index.ts +0 -2
  48. package/src/components/checkbox/checkbox-group/checkbox-group.tsx +0 -93
  49. package/src/components/checkbox/checkbox-group/index.ts +0 -1
  50. package/src/components/checkbox/checkbox.context.ts +0 -14
  51. package/src/components/checkbox/checkbox.styles.ts +0 -49
  52. package/src/components/checkbox/checkbox.test.tsx +0 -80
  53. package/src/components/checkbox/checkbox.tsx +0 -192
  54. package/src/components/checkbox/checkbox.types.ts +0 -125
  55. package/src/components/checkbox/index.ts +0 -10
  56. package/src/components/chip/chip-group/chip-group.tsx +0 -107
  57. package/src/components/chip/chip-group/index.ts +0 -1
  58. package/src/components/chip/chip.context.ts +0 -15
  59. package/src/components/chip/chip.styles.ts +0 -36
  60. package/src/components/chip/chip.test.tsx +0 -197
  61. package/src/components/chip/chip.tsx +0 -208
  62. package/src/components/chip/chip.types.ts +0 -134
  63. package/src/components/chip/index.ts +0 -10
  64. package/src/components/color-swatch/color-swatch.styles.ts +0 -11
  65. package/src/components/color-swatch/color-swatch.test.tsx +0 -80
  66. package/src/components/color-swatch/color-swatch.tsx +0 -84
  67. package/src/components/color-swatch/color-swatch.types.ts +0 -46
  68. package/src/components/color-swatch/index.ts +0 -2
  69. package/src/components/drawer/drawer-body/drawer-body.tsx +0 -29
  70. package/src/components/drawer/drawer-body/index.ts +0 -1
  71. package/src/components/drawer/drawer-close/drawer-close.tsx +0 -43
  72. package/src/components/drawer/drawer-close/index.ts +0 -1
  73. package/src/components/drawer/drawer-content/drawer-content.tsx +0 -135
  74. package/src/components/drawer/drawer-content/index.ts +0 -1
  75. package/src/components/drawer/drawer-header/drawer-header.tsx +0 -40
  76. package/src/components/drawer/drawer-header/index.ts +0 -1
  77. package/src/components/drawer/drawer-overlay/drawer-overlay.tsx +0 -87
  78. package/src/components/drawer/drawer-overlay/index.ts +0 -1
  79. package/src/components/drawer/drawer-root/drawer-root.tsx +0 -93
  80. package/src/components/drawer/drawer-root/index.ts +0 -1
  81. package/src/components/drawer/drawer.context.ts +0 -26
  82. package/src/components/drawer/drawer.styles.ts +0 -32
  83. package/src/components/drawer/drawer.test.tsx +0 -274
  84. package/src/components/drawer/drawer.tsx +0 -58
  85. package/src/components/drawer/drawer.types.ts +0 -192
  86. package/src/components/drawer/index.ts +0 -18
  87. package/src/components/drawer/use-drawer.ts +0 -94
  88. package/src/components/file-input/file-input.test.tsx +0 -134
  89. package/src/components/file-input/file-input.tsx +0 -224
  90. package/src/components/file-input/file-input.types.ts +0 -78
  91. package/src/components/file-input/file-input.utils.test.ts +0 -36
  92. package/src/components/file-input/file-input.utils.ts +0 -130
  93. package/src/components/file-input/index.ts +0 -2
  94. package/src/components/for/for.test.tsx +0 -66
  95. package/src/components/for/for.tsx +0 -53
  96. package/src/components/for/for.types.ts +0 -40
  97. package/src/components/for/index.ts +0 -2
  98. package/src/components/index.ts +0 -35
  99. package/src/components/input/index.ts +0 -2
  100. package/src/components/input/input-description/index.ts +0 -2
  101. package/src/components/input/input-description/input-description.tsx +0 -36
  102. package/src/components/input/input-error/index.ts +0 -2
  103. package/src/components/input/input-error/input-error.tsx +0 -36
  104. package/src/components/input/input-field/index.ts +0 -1
  105. package/src/components/input/input-field/input-field.styles.ts +0 -23
  106. package/src/components/input/input-field/input-field.tsx +0 -94
  107. package/src/components/input/input-label/index.ts +0 -2
  108. package/src/components/input/input-label/input-label.tsx +0 -47
  109. package/src/components/input/input-wrapper/index.ts +0 -2
  110. package/src/components/input/input-wrapper/input-wrapper.tsx +0 -43
  111. package/src/components/input/input.tsx +0 -71
  112. package/src/components/input/input.types.ts +0 -111
  113. package/src/components/loader/index.ts +0 -2
  114. package/src/components/loader/loader.tsx +0 -89
  115. package/src/components/loader/loader.types.ts +0 -33
  116. package/src/components/menu/index.ts +0 -24
  117. package/src/components/menu/menu-dropdown/index.ts +0 -1
  118. package/src/components/menu/menu-dropdown/menu-dropdown.tsx +0 -220
  119. package/src/components/menu/menu-item/index.ts +0 -1
  120. package/src/components/menu/menu-item/menu-item.tsx +0 -126
  121. package/src/components/menu/menu-label/index.ts +0 -1
  122. package/src/components/menu/menu-label/menu-label.tsx +0 -30
  123. package/src/components/menu/menu-separator/index.ts +0 -1
  124. package/src/components/menu/menu-separator/menu-separator.tsx +0 -28
  125. package/src/components/menu/menu-sub/index.ts +0 -1
  126. package/src/components/menu/menu-sub/menu-sub.tsx +0 -117
  127. package/src/components/menu/menu-sub-dropdown/index.ts +0 -1
  128. package/src/components/menu/menu-sub-dropdown/menu-sub-dropdown.tsx +0 -221
  129. package/src/components/menu/menu-sub-trigger/index.ts +0 -1
  130. package/src/components/menu/menu-sub-trigger/menu-sub-trigger.tsx +0 -164
  131. package/src/components/menu/menu-trigger/index.ts +0 -1
  132. package/src/components/menu/menu-trigger/menu-trigger.tsx +0 -98
  133. package/src/components/menu/menu.context.ts +0 -162
  134. package/src/components/menu/menu.test.tsx +0 -136
  135. package/src/components/menu/menu.tsx +0 -133
  136. package/src/components/menu/menu.types.ts +0 -291
  137. package/src/components/menu/use-menu.ts +0 -204
  138. package/src/components/modal/index.ts +0 -18
  139. package/src/components/modal/modal-body/index.ts +0 -1
  140. package/src/components/modal/modal-body/modal-body.tsx +0 -29
  141. package/src/components/modal/modal-close/index.ts +0 -1
  142. package/src/components/modal/modal-close/modal-close.tsx +0 -43
  143. package/src/components/modal/modal-content/index.ts +0 -1
  144. package/src/components/modal/modal-content/modal-content.tsx +0 -119
  145. package/src/components/modal/modal-header/index.ts +0 -1
  146. package/src/components/modal/modal-header/modal-header.tsx +0 -40
  147. package/src/components/modal/modal-overlay/index.ts +0 -1
  148. package/src/components/modal/modal-overlay/modal-overlay.tsx +0 -87
  149. package/src/components/modal/modal-root/index.ts +0 -1
  150. package/src/components/modal/modal-root/modal-root.tsx +0 -93
  151. package/src/components/modal/modal.context.ts +0 -26
  152. package/src/components/modal/modal.test.tsx +0 -316
  153. package/src/components/modal/modal.tsx +0 -58
  154. package/src/components/modal/modal.types.ts +0 -189
  155. package/src/components/modal/use-modal.ts +0 -94
  156. package/src/components/number-input/index.ts +0 -2
  157. package/src/components/number-input/number-input.styles.ts +0 -37
  158. package/src/components/number-input/number-input.test.tsx +0 -22
  159. package/src/components/number-input/number-input.tsx +0 -381
  160. package/src/components/number-input/number-input.types.ts +0 -58
  161. package/src/components/pagination/index.ts +0 -7
  162. package/src/components/pagination/pagination.styles.ts +0 -84
  163. package/src/components/pagination/pagination.test.tsx +0 -117
  164. package/src/components/pagination/pagination.tsx +0 -371
  165. package/src/components/pagination/pagination.types.ts +0 -95
  166. package/src/components/pagination/pagination.utils.ts +0 -88
  167. package/src/components/password-input/index.ts +0 -2
  168. package/src/components/password-input/password-input.test.tsx +0 -72
  169. package/src/components/password-input/password-input.tsx +0 -85
  170. package/src/components/password-input/password-input.types.ts +0 -30
  171. package/src/components/pin-input/index.ts +0 -2
  172. package/src/components/pin-input/pin-input.test.tsx +0 -149
  173. package/src/components/pin-input/pin-input.tsx +0 -473
  174. package/src/components/pin-input/pin-input.types.ts +0 -78
  175. package/src/components/popover/index.ts +0 -12
  176. package/src/components/popover/popover-dropdown/index.ts +0 -1
  177. package/src/components/popover/popover-dropdown/popover-dropdown.tsx +0 -94
  178. package/src/components/popover/popover-trigger/index.ts +0 -1
  179. package/src/components/popover/popover-trigger/popover-trigger.tsx +0 -49
  180. package/src/components/popover/popover.context.ts +0 -20
  181. package/src/components/popover/popover.tsx +0 -113
  182. package/src/components/popover/popover.types.ts +0 -137
  183. package/src/components/popover/use-popover.ts +0 -219
  184. package/src/components/portal/index.ts +0 -2
  185. package/src/components/portal/portal.test.tsx +0 -39
  186. package/src/components/portal/portal.tsx +0 -104
  187. package/src/components/portal/portal.types.ts +0 -31
  188. package/src/components/progress/index.ts +0 -2
  189. package/src/components/progress/progress.styles.ts +0 -25
  190. package/src/components/progress/progress.test.tsx +0 -107
  191. package/src/components/progress/progress.tsx +0 -93
  192. package/src/components/progress/progress.types.ts +0 -52
  193. package/src/components/progress-circle/index.ts +0 -5
  194. package/src/components/progress-circle/progress-circle.styles.ts +0 -31
  195. package/src/components/progress-circle/progress-circle.test.tsx +0 -140
  196. package/src/components/progress-circle/progress-circle.tsx +0 -124
  197. package/src/components/progress-circle/progress-circle.types.ts +0 -52
  198. package/src/components/radio/index.ts +0 -10
  199. package/src/components/radio/radio-group/index.ts +0 -1
  200. package/src/components/radio/radio-group/radio-group.tsx +0 -89
  201. package/src/components/radio/radio.context.ts +0 -14
  202. package/src/components/radio/radio.styles.ts +0 -49
  203. package/src/components/radio/radio.test.tsx +0 -75
  204. package/src/components/radio/radio.tsx +0 -173
  205. package/src/components/radio/radio.types.ts +0 -126
  206. package/src/components/scroll-area/index.ts +0 -6
  207. package/src/components/scroll-area/scroll-area.test.tsx +0 -72
  208. package/src/components/scroll-area/scroll-area.tsx +0 -70
  209. package/src/components/scroll-area/scroll-area.types.ts +0 -37
  210. package/src/components/segmented-control/index.ts +0 -6
  211. package/src/components/segmented-control/segmented-control.styles.ts +0 -37
  212. package/src/components/segmented-control/segmented-control.test.tsx +0 -170
  213. package/src/components/segmented-control/segmented-control.tsx +0 -255
  214. package/src/components/segmented-control/segmented-control.types.ts +0 -78
  215. package/src/components/select/index.ts +0 -20
  216. package/src/components/select/select-dropdown/index.ts +0 -1
  217. package/src/components/select/select-dropdown/select-dropdown.tsx +0 -299
  218. package/src/components/select/select-group/index.ts +0 -1
  219. package/src/components/select/select-group/select-group.tsx +0 -47
  220. package/src/components/select/select-item/index.ts +0 -1
  221. package/src/components/select/select-item/select-item.tsx +0 -157
  222. package/src/components/select/select-root/index.ts +0 -1
  223. package/src/components/select/select-root/select-root.tsx +0 -333
  224. package/src/components/select/select-trigger/index.ts +0 -1
  225. package/src/components/select/select-trigger/select-trigger.tsx +0 -123
  226. package/src/components/select/select.context.ts +0 -140
  227. package/src/components/select/select.test.tsx +0 -190
  228. package/src/components/select/select.tsx +0 -82
  229. package/src/components/select/select.types.ts +0 -272
  230. package/src/components/select/use-select.ts +0 -170
  231. package/src/components/slider/index.ts +0 -7
  232. package/src/components/slider/slider.styles.ts +0 -37
  233. package/src/components/slider/slider.tsx +0 -275
  234. package/src/components/slider/slider.types.ts +0 -82
  235. package/src/components/switch/index.ts +0 -2
  236. package/src/components/switch/switch.styles.ts +0 -31
  237. package/src/components/switch/switch.tsx +0 -132
  238. package/src/components/switch/switch.types.ts +0 -62
  239. package/src/components/table/index.ts +0 -24
  240. package/src/components/table/table-body/index.ts +0 -1
  241. package/src/components/table/table-body/table-body.tsx +0 -37
  242. package/src/components/table/table-caption/index.ts +0 -1
  243. package/src/components/table/table-caption/table-caption.tsx +0 -32
  244. package/src/components/table/table-cell/index.ts +0 -1
  245. package/src/components/table/table-cell/table-cell.tsx +0 -33
  246. package/src/components/table/table-head/index.ts +0 -1
  247. package/src/components/table/table-head/table-head.tsx +0 -29
  248. package/src/components/table/table-header-cell/index.ts +0 -1
  249. package/src/components/table/table-header-cell/table-header-cell.tsx +0 -33
  250. package/src/components/table/table-row/index.ts +0 -1
  251. package/src/components/table/table-row/table-row.tsx +0 -30
  252. package/src/components/table/table.context.ts +0 -18
  253. package/src/components/table/table.styles.ts +0 -62
  254. package/src/components/table/table.test.tsx +0 -145
  255. package/src/components/table/table.tsx +0 -91
  256. package/src/components/table/table.types.ts +0 -145
  257. package/src/components/tabs/index.ts +0 -18
  258. package/src/components/tabs/tabs-list/index.ts +0 -1
  259. package/src/components/tabs/tabs-list/tabs-list.tsx +0 -42
  260. package/src/components/tabs/tabs-panel/index.ts +0 -1
  261. package/src/components/tabs/tabs-panel/tabs-panel.tsx +0 -58
  262. package/src/components/tabs/tabs-tab/index.ts +0 -1
  263. package/src/components/tabs/tabs-tab/tabs-tab.tsx +0 -210
  264. package/src/components/tabs/tabs.context.ts +0 -88
  265. package/src/components/tabs/tabs.styles.ts +0 -92
  266. package/src/components/tabs/tabs.test.tsx +0 -167
  267. package/src/components/tabs/tabs.tsx +0 -137
  268. package/src/components/tabs/tabs.types.ts +0 -128
  269. package/src/components/textarea/index.ts +0 -2
  270. package/src/components/textarea/textarea-field/index.ts +0 -1
  271. package/src/components/textarea/textarea-field/textarea-field.styles.ts +0 -34
  272. package/src/components/textarea/textarea-field/textarea-field.tsx +0 -96
  273. package/src/components/textarea/textarea.tsx +0 -64
  274. package/src/components/textarea/textarea.types.ts +0 -80
  275. package/src/components/timeline/index.ts +0 -11
  276. package/src/components/timeline/timeline-item/index.ts +0 -1
  277. package/src/components/timeline/timeline-item/timeline-item.tsx +0 -158
  278. package/src/components/timeline/timeline.context.ts +0 -21
  279. package/src/components/timeline/timeline.styles.ts +0 -135
  280. package/src/components/timeline/timeline.test.tsx +0 -150
  281. package/src/components/timeline/timeline.tsx +0 -124
  282. package/src/components/timeline/timeline.types.ts +0 -91
  283. package/src/components/tooltip/index.ts +0 -8
  284. package/src/components/tooltip/tooltip.tsx +0 -164
  285. package/src/components/tooltip/tooltip.types.ts +0 -104
  286. package/src/components/tooltip/use-tooltip.ts +0 -200
  287. package/src/components/transition/index.ts +0 -11
  288. package/src/components/transition/transition.test.tsx +0 -126
  289. package/src/components/transition/transition.tsx +0 -441
  290. package/src/components/transition/transition.types.ts +0 -97
  291. package/src/components/transition/transitions.ts +0 -140
  292. package/src/icons/check.tsx +0 -25
  293. package/src/icons/chevron.tsx +0 -46
  294. package/src/icons/eye-off.tsx +0 -30
  295. package/src/icons/eye.tsx +0 -24
  296. package/src/icons/index.ts +0 -7
  297. package/src/icons/minus.tsx +0 -24
  298. package/src/icons/types.ts +0 -9
  299. package/src/icons/user.tsx +0 -18
  300. package/src/icons/x.tsx +0 -35
  301. package/src/index.ts +0 -5
  302. package/src/style.css +0 -334
  303. package/src/theme/ThemeProvider/ThemeProvider.tsx +0 -111
  304. package/src/theme/ThemeProvider/context.ts +0 -7
  305. package/src/theme/ThemeProvider/generateVariables.test.ts +0 -49
  306. package/src/theme/ThemeProvider/generateVariables.ts +0 -124
  307. package/src/theme/ThemeProvider/index.ts +0 -3
  308. package/src/theme/ThemeProvider/types.ts +0 -37
  309. package/src/theme/createTheme/createTheme.ts +0 -41
  310. package/src/theme/createTheme/index.ts +0 -7
  311. package/src/theme/createTheme/types.ts +0 -62
  312. package/src/theme/defaults/colors.ts +0 -203
  313. package/src/theme/defaults/settings.ts +0 -8
  314. package/src/theme/index.ts +0 -4
  315. package/src/theme/types.ts +0 -31
  316. package/src/theme/utils/get-radius.ts +0 -23
  317. package/src/theme/utils/get-shade.ts +0 -16
  318. package/src/theme/utils/index.ts +0 -3
  319. package/src/theme/utils/use-theme.ts +0 -27
  320. package/src/utils/configs/create-config.ts +0 -15
  321. package/src/utils/configs/index.ts +0 -3
  322. package/src/utils/configs/use-class-names.ts +0 -41
  323. package/src/utils/configs/use-props.ts +0 -55
  324. package/src/utils/cx/index.ts +0 -6
  325. package/src/utils/factory/factory.ts +0 -23
  326. package/src/utils/factory/index.ts +0 -14
  327. package/src/utils/factory/types.ts +0 -92
  328. package/src/utils/index.ts +0 -3
  329. package/src/vitest/index.ts +0 -1
  330. package/src/vitest/setup.tsx +0 -20
  331. package/src/vitest/utils.tsx +0 -59
  332. package/tsconfig.json +0 -13
  333. package/tsconfig.tsbuildinfo +0 -1
  334. package/vitest.config.js +0 -19
@@ -1,164 +0,0 @@
1
- import { useId } from "@refraktor/utils";
2
- import { useTheme } from "../../theme";
3
- import {
4
- createClassNamesConfig,
5
- createComponentConfig,
6
- factory,
7
- useClassNames,
8
- useProps
9
- } from "../../utils";
10
- import {
11
- TooltipClassNames,
12
- TooltipFactoryPayload,
13
- TooltipProps
14
- } from "./tooltip.types";
15
- import { useTooltip } from "./use-tooltip";
16
- import { cloneElement, ComponentProps, isValidElement } from "react";
17
- import { Transition } from "../transition";
18
- import { FloatingArrow, FloatingPortal } from "@floating-ui/react";
19
-
20
- const defaultProps = {
21
- positioning: {
22
- placement: "top",
23
- offset: 8
24
- },
25
- middlewares: { flip: true, shift: true, inline: true },
26
- trigger: "hover",
27
- openDelay: 0,
28
- closeDelay: 0,
29
- showArrow: false,
30
- radius: "default",
31
- withinPortal: true
32
- } satisfies Partial<TooltipProps>;
33
-
34
- const Tooltip = factory<TooltipFactoryPayload>((_props, ref) => {
35
- const { cx, getRadius } = useTheme();
36
- const {
37
- id,
38
- children,
39
- content,
40
- opened,
41
- defaultOpened,
42
- onOpenedChange,
43
- positioning,
44
- middlewares,
45
- disabled,
46
- trigger,
47
- openDelay,
48
- closeDelay,
49
- showArrow,
50
- transitionProps,
51
- radius,
52
- withinPortal,
53
- style,
54
- className,
55
- classNames,
56
- ...props
57
- } = useProps("Tooltip", defaultProps, _props);
58
- const classes = useClassNames("Tooltip", classNames);
59
-
60
- const _id = useId(id);
61
-
62
- const {
63
- opened: isOpened,
64
- context,
65
- refs,
66
- floatingStyles,
67
- getReferenceProps,
68
- getFloatingProps,
69
- placement,
70
- arrowRef
71
- } = useTooltip({
72
- opened,
73
- defaultOpened,
74
- onOpenedChange,
75
- positioning,
76
- middlewares,
77
- disabled,
78
- trigger,
79
- openDelay,
80
- closeDelay,
81
- showArrow
82
- });
83
-
84
- const triggerElement = isValidElement(children)
85
- ? cloneElement(children as any, {
86
- ref: refs.setReference,
87
- ...getReferenceProps({
88
- ...(children.props as ComponentProps<any>)
89
- })
90
- })
91
- : null;
92
-
93
- const tooltipContent = (
94
- <Transition
95
- transition="fade"
96
- duration={200}
97
- mounted={isOpened}
98
- style={{ position: "relative", zIndex: 1000 }}
99
- {...transitionProps}
100
- >
101
- <div
102
- ref={(node) => {
103
- refs.setFloating(node);
104
-
105
- if (typeof ref === "function") {
106
- ref(node);
107
- } else if (ref) {
108
- ref.current = node;
109
- }
110
- }}
111
- id={_id}
112
- role="tooltip"
113
- style={{
114
- ...floatingStyles,
115
- zIndex: 1000,
116
- ...style
117
- }}
118
- className={cx(
119
- "z-50 px-1.5 py-0.5 text-sm bg-[var(--refraktor-bg)] text-[var(--refraktor-text)] shadow-md",
120
- getRadius(radius),
121
- classes.content,
122
- className
123
- )}
124
- {...getFloatingProps()}
125
- {...props}
126
- >
127
- {content}
128
-
129
- {showArrow && (
130
- <FloatingArrow
131
- ref={arrowRef}
132
- context={context}
133
- width={10}
134
- height={5}
135
- className={cx(
136
- "fill-[var(--refraktor-bg)]",
137
- classes.arrow
138
- )}
139
- />
140
- )}
141
- </div>
142
- </Transition>
143
- );
144
-
145
- return (
146
- <div className={cx("inline-block", classes.root)}>
147
- <span className={cx("inline-block", classes.trigger)}>
148
- {triggerElement}
149
- </span>
150
-
151
- {withinPortal ? (
152
- <FloatingPortal>{tooltipContent}</FloatingPortal>
153
- ) : (
154
- tooltipContent
155
- )}
156
- </div>
157
- );
158
- });
159
-
160
- Tooltip.displayName = "@refraktor/core/Tooltip";
161
- Tooltip.configure = createComponentConfig<TooltipProps>();
162
- Tooltip.classNames = createClassNamesConfig<TooltipClassNames>();
163
-
164
- export default Tooltip;
@@ -1,104 +0,0 @@
1
- import { ComponentPropsWithoutRef, ReactNode } from "react";
2
- import type {
3
- FlipOptions,
4
- InlineOptions,
5
- Placement,
6
- ShiftOptions
7
- } from "@floating-ui/react";
8
- import {
9
- createClassNamesConfig,
10
- createComponentConfig,
11
- FactoryPayload
12
- } from "../../utils";
13
- import { TransitionProps } from "../transition";
14
- import { RefraktorRadius } from "../../theme";
15
-
16
- export type TooltipClassNames = {
17
- root?: string;
18
- trigger?: string;
19
- content?: string;
20
- arrow?: string;
21
- };
22
-
23
- export type TooltipPositioning = {
24
- /** The placement of the tooltip relative to the trigger element @default `top` */
25
- placement?: Placement;
26
-
27
- /** Offset distance from the trigger element in pixels @default `8` */
28
- offset?: number;
29
- };
30
-
31
- export type TooltipMiddlewares = {
32
- shift?: boolean | ShiftOptions;
33
- flip?: boolean | FlipOptions;
34
- inline?: boolean | InlineOptions;
35
- };
36
-
37
- export type TooltipTrigger = "hover" | "focus";
38
-
39
- export interface TooltipProps extends Omit<
40
- ComponentPropsWithoutRef<"div">,
41
- "content"
42
- > {
43
- /** The trigger element that activates the tooltip */
44
- children: ReactNode;
45
-
46
- /** Content to display inside the tooltip */
47
- content: ReactNode;
48
-
49
- /** State of the tooltip (controlled) */
50
- opened?: boolean;
51
-
52
- /** Initial state of the tooltip (uncontrolled) */
53
- defaultOpened?: boolean;
54
-
55
- /** Callback called when the tooltip state changes */
56
- onOpenedChange?: (opened: boolean) => void;
57
-
58
- /** Positioning settings for the tooltip */
59
- positioning?: TooltipPositioning;
60
-
61
- /** Middlewares settings for the tooltip */
62
- middlewares?: TooltipMiddlewares;
63
-
64
- /** Whether the tooltip is disabled @default `false` */
65
- disabled?: boolean;
66
-
67
- /** Trigger type for the tooltip @default `hover` */
68
- trigger?: TooltipTrigger;
69
-
70
- /** Delay in milliseconds before the tooltip opens @default `0` */
71
- openDelay?: number;
72
-
73
- /** Delay in milliseconds before the tooltip closes @default `0` */
74
- closeDelay?: number;
75
-
76
- /** Whether to show the arrow for the tooltip @default `false` */
77
- showArrow?: boolean;
78
-
79
- /** Transition props for the tooltip content, uses Transition component internally */
80
- transitionProps?: Omit<TransitionProps, "children" | "mounted">;
81
-
82
- /** Radius for the tooltip content @default `default` */
83
- radius?: RefraktorRadius;
84
-
85
- /** Whether to render the tooltip within a portal @default `true` */
86
- withinPortal?: boolean;
87
-
88
- /** Used for editing root class name */
89
- className?: string;
90
-
91
- /** Used for styling different parts of the component */
92
- classNames?: TooltipClassNames;
93
- }
94
-
95
- export interface TooltipFactoryPayload extends FactoryPayload {
96
- props: TooltipProps;
97
- ref: HTMLDivElement;
98
- compound: {
99
- configure: ReturnType<typeof createComponentConfig<TooltipProps>>;
100
- classNames: ReturnType<
101
- typeof createClassNamesConfig<TooltipClassNames>
102
- >;
103
- };
104
- }
@@ -1,200 +0,0 @@
1
- import { useUncontrolled } from "@refraktor/utils";
2
- import {
3
- TooltipMiddlewares,
4
- TooltipPositioning,
5
- TooltipTrigger
6
- } from "./tooltip.types";
7
- import {
8
- arrow,
9
- autoUpdate,
10
- flip,
11
- FloatingContext,
12
- inline,
13
- Middleware,
14
- offset,
15
- Placement,
16
- shift,
17
- useDismiss,
18
- useFloating,
19
- useFocus,
20
- useHover,
21
- useInteractions,
22
- useRole
23
- } from "@floating-ui/react";
24
- import { useCallback, useMemo, useRef } from "react";
25
-
26
- interface UseTooltipProps {
27
- opened?: boolean;
28
- defaultOpened?: boolean;
29
- onOpenedChange?: (opened: boolean) => void;
30
- positioning?: TooltipPositioning;
31
- middlewares?: TooltipMiddlewares;
32
- disabled?: boolean;
33
- trigger?: TooltipTrigger;
34
- showArrow?: boolean;
35
- openDelay?: number;
36
- closeDelay?: number;
37
- }
38
-
39
- export interface UseTooltipReturn {
40
- opened: boolean;
41
- open: () => void;
42
- close: () => void;
43
- toggle: () => void;
44
- context: FloatingContext;
45
- refs: {
46
- setReference: (node: HTMLElement | null) => void;
47
- setFloating: (node: HTMLElement | null) => void;
48
- reference: React.MutableRefObject<HTMLElement | null>;
49
- floating: React.MutableRefObject<HTMLElement | null>;
50
- };
51
- floatingStyles: React.CSSProperties;
52
- getReferenceProps: (
53
- userProps?: React.HTMLAttributes<HTMLElement>
54
- ) => Record<string, unknown>;
55
- getFloatingProps: (
56
- userProps?: React.HTMLAttributes<HTMLElement>
57
- ) => Record<string, unknown>;
58
- arrowRef: React.RefObject<SVGSVGElement | null>;
59
- placement: Placement;
60
- }
61
-
62
- export function useTooltip(options: UseTooltipProps = {}): UseTooltipReturn {
63
- const {
64
- opened,
65
- defaultOpened,
66
- onOpenedChange,
67
- positioning = {
68
- placement: "top",
69
- offset: 8
70
- },
71
- middlewares = { flip: true, shift: true, inline: true },
72
- disabled = false,
73
- trigger = "hover",
74
- showArrow = false,
75
- openDelay = 0,
76
- closeDelay = 0
77
- } = options;
78
-
79
- const arrowRef = useRef<SVGSVGElement>(null);
80
-
81
- const [isOpen, setIsOpen] = useUncontrolled({
82
- value: opened,
83
- defaultValue: defaultOpened,
84
- finalValue: false,
85
- onChange: onOpenedChange
86
- });
87
-
88
- const middleware = useMemo(() => {
89
- const middleware: Middleware[] = [];
90
-
91
- middleware.push(offset(positioning.offset ?? 8));
92
-
93
- if (middlewares.flip) {
94
- middleware.push(
95
- flip(
96
- typeof middlewares.flip === "boolean"
97
- ? undefined
98
- : middlewares.flip
99
- )
100
- );
101
- }
102
-
103
- if (middlewares.shift) {
104
- middleware.push(
105
- shift(
106
- typeof middlewares.shift === "boolean"
107
- ? undefined
108
- : middlewares.shift
109
- )
110
- );
111
- }
112
-
113
- if (middlewares.inline) {
114
- middleware.push(
115
- inline(
116
- typeof middlewares.inline === "boolean"
117
- ? undefined
118
- : middlewares.inline
119
- )
120
- );
121
- }
122
-
123
- if (arrowRef.current && showArrow) {
124
- middleware.push(
125
- arrow({
126
- element: arrowRef.current
127
- })
128
- );
129
- }
130
-
131
- return middleware;
132
- }, [positioning.offset, middlewares, showArrow, arrowRef]);
133
-
134
- const floating = useFloating({
135
- placement: positioning.placement,
136
- open: isOpen,
137
- onOpenChange: setIsOpen,
138
- middleware: middleware,
139
- whileElementsMounted: autoUpdate,
140
- strategy: "fixed"
141
- });
142
-
143
- const hover = useHover(floating.context, {
144
- enabled: trigger === "hover" && !disabled,
145
- delay: {
146
- open: openDelay,
147
- close: closeDelay
148
- }
149
- });
150
-
151
- const focus = useFocus(floating.context, {
152
- enabled: trigger === "focus" && !disabled
153
- });
154
-
155
- const dismiss = useDismiss(floating.context);
156
-
157
- const role = useRole(floating.context, {
158
- role: "tooltip"
159
- });
160
-
161
- const { getReferenceProps, getFloatingProps } = useInteractions([
162
- hover,
163
- focus,
164
- dismiss,
165
- role
166
- ]);
167
-
168
- const open = useCallback(() => {
169
- setIsOpen(true);
170
- }, [setIsOpen]);
171
-
172
- const close = useCallback(() => {
173
- setIsOpen(false);
174
- }, [setIsOpen]);
175
-
176
- const toggle = useCallback(() => {
177
- setIsOpen(!isOpen);
178
- }, [setIsOpen, isOpen]);
179
-
180
- return {
181
- opened: isOpen,
182
- open,
183
- close,
184
- toggle,
185
- context: floating.context,
186
- refs: {
187
- setReference: floating.refs.setReference,
188
- setFloating: floating.refs.setFloating,
189
- reference: floating.refs
190
- .reference as React.MutableRefObject<HTMLElement | null>,
191
- floating: floating.refs
192
- .floating as React.MutableRefObject<HTMLElement | null>
193
- },
194
- floatingStyles: floating.floatingStyles,
195
- getReferenceProps,
196
- getFloatingProps,
197
- placement: floating.placement,
198
- arrowRef
199
- };
200
- }
@@ -1,11 +0,0 @@
1
- export { default as Transition } from "./transition";
2
- export type {
3
- TransitionDefinition,
4
- TransitionDirection,
5
- TransitionMotionPreference,
6
- TransitionPreset,
7
- TransitionProps,
8
- TransitionState,
9
- TransitionTimingValue
10
- } from "./transition.types";
11
- export { default as transitions, defineTransition } from "./transitions";
@@ -1,126 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import { render, screen, waitFor } from "../../vitest";
3
- import Transition from "./transition";
4
-
5
- describe("@refraktor/core/Transition", () => {
6
- it("unmounts content after exit by default", async () => {
7
- const { rerender } = await render(
8
- <Transition mounted transition="fade" immediate>
9
- <div data-testid="content">Content</div>
10
- </Transition>
11
- );
12
-
13
- expect(screen.getByTestId("content")).toBeInTheDocument();
14
-
15
- rerender(
16
- <Transition mounted={false} transition="fade" immediate>
17
- <div data-testid="content">Content</div>
18
- </Transition>
19
- );
20
-
21
- await waitFor(() => {
22
- expect(screen.queryByTestId("content")).not.toBeInTheDocument();
23
- });
24
- });
25
-
26
- it("keeps content mounted when keepMounted is true", async () => {
27
- const { rerender } = await render(
28
- <Transition
29
- mounted
30
- keepMounted
31
- transition="fade"
32
- immediate
33
- data-testid="transition"
34
- >
35
- Content
36
- </Transition>
37
- );
38
-
39
- rerender(
40
- <Transition
41
- mounted={false}
42
- keepMounted
43
- transition="fade"
44
- immediate
45
- data-testid="transition"
46
- >
47
- Content
48
- </Transition>
49
- );
50
-
51
- const node = screen.getByTestId("transition");
52
- expect(node).toBeInTheDocument();
53
- await waitFor(() => {
54
- expect(node).toHaveAttribute("data-transition-state", "exited");
55
- });
56
- });
57
-
58
- it("fires lifecycle callbacks and forwards root props", async () => {
59
- const onEnterStart = vi.fn();
60
- const onEnterEnd = vi.fn();
61
- const onExitStart = vi.fn();
62
- const onExitEnd = vi.fn();
63
- const onStateChange = vi.fn();
64
-
65
- const { rerender } = await render(
66
- <Transition
67
- mounted={false}
68
- keepMounted
69
- immediate
70
- id="custom-id"
71
- className="custom-class"
72
- data-testid="transition"
73
- onEnterStart={onEnterStart}
74
- onEnterEnd={onEnterEnd}
75
- onExitStart={onExitStart}
76
- onExitEnd={onExitEnd}
77
- onStateChange={onStateChange}
78
- >
79
- {(state) => <span>{state}</span>}
80
- </Transition>
81
- );
82
-
83
- rerender(
84
- <Transition
85
- mounted
86
- keepMounted
87
- immediate
88
- id="custom-id"
89
- className="custom-class"
90
- data-testid="transition"
91
- onEnterStart={onEnterStart}
92
- onEnterEnd={onEnterEnd}
93
- onExitStart={onExitStart}
94
- onExitEnd={onExitEnd}
95
- onStateChange={onStateChange}
96
- >
97
- {(state) => <span>{state}</span>}
98
- </Transition>
99
- );
100
-
101
- rerender(
102
- <Transition
103
- mounted={false}
104
- keepMounted
105
- immediate
106
- id="custom-id"
107
- className="custom-class"
108
- data-testid="transition"
109
- onEnterStart={onEnterStart}
110
- onEnterEnd={onEnterEnd}
111
- onExitStart={onExitStart}
112
- onExitEnd={onExitEnd}
113
- onStateChange={onStateChange}
114
- >
115
- {(state) => <span>{state}</span>}
116
- </Transition>
117
- );
118
-
119
- const node = screen.getByTestId("transition");
120
-
121
- expect(node).toHaveAttribute("id", "custom-id");
122
- expect(node).toHaveClass("custom-class");
123
- expect(node).toHaveAttribute("data-transition-state", "exited");
124
- expect(node).toHaveTextContent("exited");
125
- });
126
- });