@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,158 +0,0 @@
1
- import { CSSProperties } from "react";
2
- import { useTheme } from "../../../theme";
3
- import { factory } from "../../../utils";
4
- import { useTimelineContext } from "../timeline.context";
5
- import { getConnector, getSize, getStatus } from "../timeline.styles";
6
- import { TimelineItemFactoryPayload } from "../timeline.types";
7
-
8
- const TimelineItem = factory<TimelineItemFactoryPayload>(
9
- (
10
- {
11
- date,
12
- title,
13
- bullet,
14
- line = true,
15
- children,
16
- className,
17
- __timelineIndex,
18
- __timelineCount,
19
- ...props
20
- },
21
- ref
22
- ) => {
23
- const { cx, getRadius } = useTheme();
24
- const { orientation, size, radius, lineVariant, active, getStyles } =
25
- useTimelineContext();
26
-
27
- const isActive =
28
- typeof __timelineIndex === "number" &&
29
- active >= 0 &&
30
- __timelineIndex <= active;
31
-
32
- const sizeStyles = getSize(size);
33
- const statusStyles = getStatus(isActive);
34
- const connectorStyles = getConnector(lineVariant, orientation);
35
-
36
- const isLast =
37
- typeof __timelineIndex === "number" &&
38
- typeof __timelineCount === "number" &&
39
- __timelineIndex === __timelineCount - 1;
40
- const showConnector = line && !isLast;
41
-
42
- const connectorColorStyle = {
43
- "--refraktor-timeline-connector-color": statusStyles.connectorColor
44
- } as CSSProperties;
45
-
46
- return (
47
- <div
48
- ref={ref}
49
- role="listitem"
50
- data-active={isActive}
51
- data-orientation={orientation}
52
- className={cx(
53
- "min-w-0",
54
- orientation === "horizontal"
55
- ? "flex-1 flex flex-col"
56
- : "flex items-stretch last:pb-0",
57
- orientation === "vertical" && sizeStyles.itemSpacing,
58
- sizeStyles.itemGap,
59
- getStyles("item"),
60
- className
61
- )}
62
- {...props}
63
- >
64
- <div
65
- className={cx(
66
- "shrink-0",
67
- orientation === "horizontal"
68
- ? "w-full flex items-center"
69
- : "h-full self-stretch flex flex-col items-center",
70
- orientation === "vertical" && sizeStyles.bulletWrapper,
71
- getStyles("bulletWrapper")
72
- )}
73
- >
74
- <span
75
- data-timeline-bullet="true"
76
- className={cx(
77
- "inline-flex items-center justify-center",
78
- "select-none",
79
- sizeStyles.bullet,
80
- getRadius(radius),
81
- statusStyles.bullet,
82
- getStyles("bullet")
83
- )}
84
- >
85
- {bullet && bullet}
86
- </span>
87
-
88
- {showConnector && (
89
- <span
90
- aria-hidden="true"
91
- data-timeline-connector="true"
92
- style={connectorColorStyle}
93
- className={cx(
94
- connectorStyles,
95
- orientation === "vertical" &&
96
- sizeStyles.connectorExtend,
97
- getStyles("connector")
98
- )}
99
- />
100
- )}
101
- </div>
102
-
103
- <div
104
- className={cx(
105
- "min-w-0 flex flex-col",
106
- orientation === "horizontal" && "mt-1",
107
- sizeStyles.contentGap,
108
- getStyles("content")
109
- )}
110
- >
111
- {date && (
112
- <div
113
- data-timeline-date="true"
114
- className={cx(
115
- "leading-none",
116
- sizeStyles.date,
117
- statusStyles.date,
118
- getStyles("date")
119
- )}
120
- >
121
- {date}
122
- </div>
123
- )}
124
-
125
- {title && (
126
- <div
127
- className={cx(
128
- "font-medium leading-tight",
129
- sizeStyles.title,
130
- statusStyles.title,
131
- getStyles("title")
132
- )}
133
- >
134
- {title}
135
- </div>
136
- )}
137
-
138
- {children !== undefined && children !== null && (
139
- <div
140
- className={cx(
141
- "leading-snug",
142
- sizeStyles.description,
143
- statusStyles.description,
144
- getStyles("description")
145
- )}
146
- >
147
- {children}
148
- </div>
149
- )}
150
- </div>
151
- </div>
152
- );
153
- }
154
- );
155
-
156
- TimelineItem.displayName = "@refraktor/core/Timeline.Item";
157
-
158
- export default TimelineItem;
@@ -1,21 +0,0 @@
1
- import { createSafeContext } from "@refraktor/utils";
2
- import { RefraktorRadius, RefraktorSize } from "../../theme";
3
- import {
4
- TimelineClassNames,
5
- TimelineLineVariant,
6
- TimelineOrientation
7
- } from "./timeline.types";
8
-
9
- export interface TimelineContextValue {
10
- orientation: TimelineOrientation;
11
- size: RefraktorSize;
12
- radius: RefraktorRadius;
13
- lineVariant: TimelineLineVariant;
14
- active: number;
15
- getStyles: (part: keyof TimelineClassNames) => string | undefined;
16
- }
17
-
18
- export const [TimelineProvider, useTimelineContext] =
19
- createSafeContext<TimelineContextValue>(
20
- "Timeline component was not found in tree. Make sure Timeline.Item is wrapped with Timeline."
21
- );
@@ -1,135 +0,0 @@
1
- import { RefraktorSize } from "../../theme";
2
- import { TimelineLineVariant, TimelineOrientation } from "./timeline.types";
3
-
4
- type TimelineSizeStyles = {
5
- rootGap: string;
6
- itemGap: string;
7
- itemSpacing: string;
8
- connectorExtend: string;
9
- bulletWrapper: string;
10
- bullet: string;
11
- contentGap: string;
12
- date: string;
13
- title: string;
14
- description: string;
15
- };
16
-
17
- type TimelineStatusStyles = {
18
- bullet: string;
19
- date: string;
20
- title: string;
21
- description: string;
22
- connectorColor: string;
23
- };
24
-
25
- const sizes: Record<RefraktorSize, TimelineSizeStyles> = {
26
- xs: {
27
- rootGap: "gap-3",
28
- itemGap: "gap-2",
29
- itemSpacing: "pb-3",
30
- connectorExtend: "-mb-3",
31
- bulletWrapper: "w-4",
32
- bullet: "size-4 text-[9px]",
33
- contentGap: "gap-1",
34
- date: "text-[10px]",
35
- title: "text-xs",
36
- description: "text-xs"
37
- },
38
- sm: {
39
- rootGap: "gap-3",
40
- itemGap: "gap-2.5",
41
- itemSpacing: "pb-3",
42
- connectorExtend: "-mb-3",
43
- bulletWrapper: "w-5",
44
- bullet: "size-4.5 text-[10px]",
45
- contentGap: "gap-1",
46
- date: "text-[11px]",
47
- title: "text-xs",
48
- description: "text-xs"
49
- },
50
- md: {
51
- rootGap: "gap-4",
52
- itemGap: "gap-3",
53
- itemSpacing: "pb-4",
54
- connectorExtend: "-mb-4",
55
- bulletWrapper: "w-6",
56
- bullet: "size-5 text-xs",
57
- contentGap: "gap-1.5",
58
- date: "text-xs",
59
- title: "text-sm",
60
- description: "text-xs"
61
- },
62
- lg: {
63
- rootGap: "gap-4",
64
- itemGap: "gap-3.5",
65
- itemSpacing: "pb-4",
66
- connectorExtend: "-mb-4",
67
- bulletWrapper: "w-7",
68
- bullet: "size-6 text-sm",
69
- contentGap: "gap-1.5",
70
- date: "text-sm",
71
- title: "text-base",
72
- description: "text-sm"
73
- },
74
- xl: {
75
- rootGap: "gap-5",
76
- itemGap: "gap-4",
77
- itemSpacing: "pb-5",
78
- connectorExtend: "-mb-5",
79
- bulletWrapper: "w-8",
80
- bullet: "size-7 text-base",
81
- contentGap: "gap-2",
82
- date: "text-base",
83
- title: "text-lg",
84
- description: "text-base"
85
- }
86
- };
87
-
88
- const statuses = {
89
- default: {
90
- bullet: "border border-[var(--refraktor-border)] text-[var(--refraktor-text-secondary)]",
91
- date: "text-[var(--refraktor-text-secondary)]",
92
- title: "text-[var(--refraktor-text)]",
93
- description: "text-[var(--refraktor-text-secondary)]",
94
- connectorColor: "var(--refraktor-border)"
95
- },
96
- active: {
97
- bullet: "border border-[var(--refraktor-primary)] text-[var(--refraktor-text)]",
98
- date: "text-[var(--refraktor-text-secondary)]",
99
- title: "text-[var(--refraktor-text)]",
100
- description: "text-[var(--refraktor-text-secondary)]",
101
- connectorColor: "var(--refraktor-primary)"
102
- }
103
- } satisfies Record<"default" | "active", TimelineStatusStyles>;
104
-
105
- export const getSize = (size: RefraktorSize = "md") => sizes[size];
106
-
107
- export const getStatus = (active: boolean) =>
108
- active ? statuses.active : statuses.default;
109
-
110
- export function getConnector(
111
- lineVariant: TimelineLineVariant = "solid",
112
- orientation: TimelineOrientation = "vertical"
113
- ) {
114
- if (orientation === "vertical") {
115
- if (lineVariant === "dashed") {
116
- return "w-0 flex-1 border-l border-dashed border-[var(--refraktor-timeline-connector-color)]";
117
- }
118
-
119
- if (lineVariant === "dotted") {
120
- return "w-0 flex-1 border-l border-dotted border-[var(--refraktor-timeline-connector-color)]";
121
- }
122
-
123
- return "w-px flex-1 bg-[var(--refraktor-timeline-connector-color)]";
124
- }
125
-
126
- if (lineVariant === "dashed") {
127
- return "ml-2 h-0 flex-1 border-t border-dashed border-[var(--refraktor-timeline-connector-color)]";
128
- }
129
-
130
- if (lineVariant === "dotted") {
131
- return "ml-2 h-0 flex-1 border-t border-dotted border-[var(--refraktor-timeline-connector-color)]";
132
- }
133
-
134
- return "ml-2 h-px flex-1 bg-[var(--refraktor-timeline-connector-color)]";
135
- }
@@ -1,150 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { render, screen } from "../../vitest";
3
- import Timeline from "./timeline";
4
-
5
- describe("@refraktor/core/Timeline", () => {
6
- it("renders timeline items with title and children description", async () => {
7
- await render(
8
- <Timeline>
9
- <Timeline.Item title="Project started">Planning</Timeline.Item>
10
- <Timeline.Item title="In progress">Building</Timeline.Item>
11
- </Timeline>
12
- );
13
-
14
- expect(screen.getByRole("list")).toBeInTheDocument();
15
- expect(screen.getAllByRole("listitem")).toHaveLength(2);
16
- expect(screen.getByText("Project started")).toBeInTheDocument();
17
- expect(screen.getByText("Building")).toBeInTheDocument();
18
- });
19
-
20
- it("renders date above title", async () => {
21
- await render(
22
- <Timeline>
23
- <Timeline.Item date="Mar 2026" title="Project started">
24
- Planning
25
- </Timeline.Item>
26
- </Timeline>
27
- );
28
-
29
- const date = screen.getByText("Mar 2026");
30
- const title = screen.getByText("Project started");
31
-
32
- expect(date).toHaveAttribute("data-timeline-date", "true");
33
- expect(
34
- date.compareDocumentPosition(title) & Node.DOCUMENT_POSITION_FOLLOWING
35
- ).toBeTruthy();
36
- });
37
-
38
- it("supports horizontal orientation", async () => {
39
- const { container } = await render(
40
- <Timeline orientation="horizontal">
41
- <Timeline.Item title="Step 1" />
42
- <Timeline.Item title="Step 2" />
43
- </Timeline>
44
- );
45
-
46
- const root = container.firstElementChild as HTMLDivElement;
47
- const item = screen.getAllByRole("listitem")[0];
48
-
49
- expect(root).toHaveAttribute("data-orientation", "horizontal");
50
- expect(item).toHaveAttribute("data-orientation", "horizontal");
51
- });
52
-
53
- it("hides the connector on the last item", async () => {
54
- const { container } = await render(
55
- <Timeline>
56
- <Timeline.Item title="One" />
57
- <Timeline.Item title="Two" />
58
- <Timeline.Item title="Three" />
59
- </Timeline>
60
- );
61
-
62
- const connectors = container.querySelectorAll(
63
- '[data-timeline-connector="true"]'
64
- );
65
-
66
- expect(connectors).toHaveLength(2);
67
- });
68
-
69
- it("marks current and previous items active from root active prop", async () => {
70
- const { container } = await render(
71
- <Timeline lineVariant="dashed" active={1}>
72
- <Timeline.Item title="Done" />
73
- <Timeline.Item title="Now" />
74
- </Timeline>
75
- );
76
-
77
- const items = screen.getAllByRole("listitem");
78
- const connector = container.querySelector(
79
- '[data-timeline-connector="true"]'
80
- );
81
-
82
- expect(items[0]).toHaveAttribute("data-active", "true");
83
- expect(items[1]).toHaveAttribute("data-active", "true");
84
- expect(connector).toHaveClass("border-dashed");
85
- });
86
-
87
- it("marks all items active when active exceeds the last index", async () => {
88
- await render(
89
- <Timeline active={10}>
90
- <Timeline.Item title="One" />
91
- <Timeline.Item title="Two" />
92
- </Timeline>
93
- );
94
-
95
- const items = screen.getAllByRole("listitem");
96
-
97
- expect(items[0]).toHaveAttribute("data-active", "true");
98
- expect(items[1]).toHaveAttribute("data-active", "true");
99
- });
100
-
101
- it("marks no items active when active is -1", async () => {
102
- await render(
103
- <Timeline active={-1}>
104
- <Timeline.Item title="One" />
105
- <Timeline.Item title="Two" />
106
- </Timeline>
107
- );
108
-
109
- const items = screen.getAllByRole("listitem");
110
-
111
- expect(items[0]).toHaveAttribute("data-active", "false");
112
- expect(items[1]).toHaveAttribute("data-active", "false");
113
- });
114
-
115
- it("supports root and slot class names", async () => {
116
- const { container } = await render(
117
- <Timeline
118
- className="custom-root"
119
- classNames={{
120
- item: "custom-item",
121
- bullet: "custom-bullet",
122
- connector: "custom-connector",
123
- date: "custom-date",
124
- title: "custom-title"
125
- }}
126
- >
127
- <Timeline.Item date="Date" title="Entry">
128
- Desc
129
- </Timeline.Item>
130
- <Timeline.Item title="Entry 2" />
131
- </Timeline>
132
- );
133
-
134
- const root = container.firstElementChild as HTMLDivElement;
135
- const item = screen.getAllByRole("listitem")[0];
136
- const bullet = container.querySelector('[data-timeline-bullet="true"]');
137
- const connector = container.querySelector(
138
- '[data-timeline-connector="true"]'
139
- );
140
- const date = screen.getByText("Date");
141
- const title = screen.getByText("Entry");
142
-
143
- expect(root).toHaveClass("custom-root");
144
- expect(item).toHaveClass("custom-item");
145
- expect(bullet).toHaveClass("custom-bullet");
146
- expect(connector).toHaveClass("custom-connector");
147
- expect(date).toHaveClass("custom-date");
148
- expect(title).toHaveClass("custom-title");
149
- });
150
- });
@@ -1,124 +0,0 @@
1
- import { useId } from "@refraktor/utils";
2
- import {
3
- Children,
4
- ReactElement,
5
- ReactNode,
6
- cloneElement,
7
- isValidElement,
8
- useCallback,
9
- useMemo
10
- } from "react";
11
- import { useTheme } from "../../theme";
12
- import {
13
- createClassNamesConfig,
14
- createComponentConfig,
15
- factory,
16
- useClassNames,
17
- useProps
18
- } from "../../utils";
19
- import { TimelineProvider } from "./timeline.context";
20
- import { getSize } from "./timeline.styles";
21
- import { TimelineItem } from "./timeline-item";
22
- import {
23
- TimelineClassNames,
24
- TimelineFactoryPayload,
25
- TimelineItemProps,
26
- TimelineProps
27
- } from "./timeline.types";
28
-
29
- const defaultProps = {
30
- orientation: "vertical",
31
- size: "md",
32
- radius: "full",
33
- lineVariant: "solid",
34
- active: -1
35
- } satisfies Partial<TimelineProps>;
36
-
37
- const isTimelineItemElement = (
38
- child: ReactNode
39
- ): child is ReactElement<TimelineItemProps> =>
40
- isValidElement(child) && child.type === TimelineItem;
41
-
42
- const Timeline = factory<TimelineFactoryPayload>((_props, ref) => {
43
- const { cx } = useTheme();
44
- const {
45
- id,
46
- children,
47
- orientation,
48
- size,
49
- radius,
50
- lineVariant,
51
- active,
52
- className,
53
- classNames,
54
- ...props
55
- } = useProps("Timeline", defaultProps, _props);
56
- const classes = useClassNames("Timeline", classNames);
57
- const _id = useId(id);
58
-
59
- const sizeStyles = getSize(size);
60
-
61
- const resolvedChildren = useMemo(() => {
62
- const items = Children.toArray(children);
63
- const itemCount = items.filter(isTimelineItemElement).length;
64
- let itemIndex = 0;
65
-
66
- return items.map((child) => {
67
- if (!isTimelineItemElement(child)) {
68
- return child;
69
- }
70
-
71
- const nextChild = cloneElement(child, {
72
- __timelineIndex: itemIndex,
73
- __timelineCount: itemCount
74
- });
75
-
76
- itemIndex += 1;
77
- return nextChild;
78
- });
79
- }, [children]);
80
-
81
- const getStyles = useCallback(
82
- (part: keyof TimelineClassNames) => classes[part],
83
- [classes]
84
- );
85
-
86
- return (
87
- <TimelineProvider
88
- value={{
89
- orientation,
90
- size,
91
- radius,
92
- lineVariant,
93
- active,
94
- getStyles
95
- }}
96
- >
97
- <div
98
- ref={ref}
99
- id={_id}
100
- role="list"
101
- data-orientation={orientation}
102
- className={cx(
103
- "w-full",
104
- orientation === "horizontal"
105
- ? "flex items-start"
106
- : "flex flex-col",
107
- orientation === "horizontal" && sizeStyles.rootGap,
108
- classes.root,
109
- className
110
- )}
111
- {...props}
112
- >
113
- {resolvedChildren}
114
- </div>
115
- </TimelineProvider>
116
- );
117
- });
118
-
119
- Timeline.displayName = "@refraktor/core/Timeline";
120
- Timeline.configure = createComponentConfig<TimelineProps>();
121
- Timeline.classNames = createClassNamesConfig<TimelineClassNames>();
122
- Timeline.Item = TimelineItem;
123
-
124
- export default Timeline;
@@ -1,91 +0,0 @@
1
- import { ComponentPropsWithoutRef, ReactNode } from "react";
2
- import { RefraktorRadius, RefraktorSize } from "../../theme";
3
- import {
4
- createClassNamesConfig,
5
- createComponentConfig,
6
- FactoryPayload
7
- } from "../../utils";
8
- import { TimelineItem } from "./timeline-item";
9
-
10
- export type TimelineOrientation = "vertical" | "horizontal";
11
- export type TimelineLineVariant = "solid" | "dashed" | "dotted";
12
-
13
- export type TimelineClassNames = {
14
- root?: string;
15
- item?: string;
16
- bulletWrapper?: string;
17
- bullet?: string;
18
- connector?: string;
19
- content?: string;
20
- date?: string;
21
- title?: string;
22
- description?: string;
23
- };
24
-
25
- export interface TimelineProps extends ComponentPropsWithoutRef<"div"> {
26
- /** Children containing timeline items */
27
- children: ReactNode;
28
-
29
- /** Timeline orientation @default `vertical` */
30
- orientation?: TimelineOrientation;
31
-
32
- /** Shared timeline size @default `md` */
33
- size?: RefraktorSize;
34
-
35
- /** Radius used for bullets @default `full` */
36
- radius?: RefraktorRadius;
37
-
38
- /** Connector style @default `solid` */
39
- lineVariant?: TimelineLineVariant;
40
-
41
- /** Active step index. Use `-1` for no active step @default `-1` */
42
- active?: number;
43
-
44
- /** Used for editing root class name */
45
- className?: string;
46
-
47
- /** Used for styling different parts of the component */
48
- classNames?: TimelineClassNames;
49
- }
50
-
51
- export interface TimelineItemProps
52
- extends Omit<ComponentPropsWithoutRef<"div">, "title"> {
53
- /** Item date/timestamp displayed above title */
54
- date?: ReactNode;
55
-
56
- /** Item heading */
57
- title?: ReactNode;
58
-
59
- /** Custom bullet content */
60
- bullet?: ReactNode;
61
-
62
- /** Whether connector should be rendered @default `true` */
63
- line?: boolean;
64
-
65
- /** Item description/body */
66
- children?: ReactNode;
67
-
68
- /** Used for editing root class name */
69
- className?: string;
70
-
71
- /** @internal */
72
- __timelineIndex?: number;
73
-
74
- /** @internal */
75
- __timelineCount?: number;
76
- }
77
-
78
- export interface TimelineFactoryPayload extends FactoryPayload {
79
- props: TimelineProps;
80
- ref: HTMLDivElement;
81
- compound: {
82
- configure: ReturnType<typeof createComponentConfig<TimelineProps>>;
83
- classNames: ReturnType<typeof createClassNamesConfig<TimelineClassNames>>;
84
- Item: typeof TimelineItem;
85
- };
86
- }
87
-
88
- export interface TimelineItemFactoryPayload extends FactoryPayload {
89
- props: TimelineItemProps;
90
- ref: HTMLDivElement;
91
- }
@@ -1,8 +0,0 @@
1
- export { default as Tooltip } from "./tooltip";
2
- export type {
3
- TooltipProps,
4
- TooltipClassNames,
5
- TooltipMiddlewares,
6
- TooltipPositioning,
7
- TooltipTrigger
8
- } from "./tooltip.types";