@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,7 +0,0 @@
1
- export { default as Slider } from "./slider";
2
- export type {
3
- SliderProps,
4
- SliderClassNames,
5
- SliderMark,
6
- SliderFactoryPayload
7
- } from "./slider.types";
@@ -1,37 +0,0 @@
1
- import { RefraktorSize } from "../../theme";
2
-
3
- type SliderSizeStyles = {
4
- track: string;
5
- thumb: string;
6
- label: string;
7
- };
8
-
9
- const sizes: Record<RefraktorSize, SliderSizeStyles> = {
10
- xs: {
11
- track: "h-1",
12
- thumb: "w-3 h-3",
13
- label: "text-[8px] px-1 py-0.5"
14
- },
15
- sm: {
16
- track: "h-1.5",
17
- thumb: "w-3.5 h-3.5",
18
- label: "text-[10px] px-1.5 py-0.5"
19
- },
20
- md: {
21
- track: "h-2",
22
- thumb: "w-4 h-4",
23
- label: "text-xs px-2 py-1"
24
- },
25
- lg: {
26
- track: "h-2.5",
27
- thumb: "w-5 h-5",
28
- label: "text-sm px-2.5 py-1"
29
- },
30
- xl: {
31
- track: "h-3",
32
- thumb: "w-6 h-6",
33
- label: "text-base px-3 py-1.5"
34
- }
35
- };
36
-
37
- export const getSize = (size: RefraktorSize = "md") => sizes[size];
@@ -1,275 +0,0 @@
1
- import {
2
- clamp,
3
- getChangeValue,
4
- useId,
5
- useUncontrolled
6
- } from "@refraktor/utils";
7
- import { useTheme } from "../../theme";
8
- import {
9
- createClassNamesConfig,
10
- createComponentConfig,
11
- factory,
12
- useClassNames,
13
- useProps
14
- } from "../../utils";
15
- import {
16
- SliderClassNames,
17
- SliderFactoryPayload,
18
- SliderProps
19
- } from "./slider.types";
20
- import { ReactNode, useCallback, useRef, useState } from "react";
21
- import { getSize } from "./slider.styles";
22
-
23
- const defaultProps = {
24
- min: 0,
25
- max: 100,
26
- step: 1,
27
- size: "md",
28
- radius: "full",
29
- showLabelOnHover: false
30
- } satisfies Partial<SliderProps>;
31
-
32
- const Slider = factory<SliderFactoryPayload>((_props, ref) => {
33
- const { cx, getRadius } = useTheme();
34
- const {
35
- id,
36
- value,
37
- defaultValue,
38
- onChange,
39
- onChangeEnd,
40
- min,
41
- max,
42
- step,
43
- precision,
44
- size,
45
- radius,
46
- disabled,
47
- label,
48
- showLabelOnHover,
49
- marks,
50
- className,
51
- classNames,
52
- ...props
53
- } = useProps("Slider", defaultProps, _props);
54
- const classes = useClassNames("Slider", classNames);
55
-
56
- const [_value, handleChange] = useUncontrolled({
57
- value,
58
- defaultValue,
59
- finalValue: min,
60
- onChange
61
- });
62
-
63
- const [isDragging, setIsDragging] = useState(false);
64
- const [isHovered, setIsHovered] = useState(false);
65
- const trackRef = useRef<HTMLDivElement>(null);
66
-
67
- const _id = useId(id);
68
- const sizeStyles = getSize(size);
69
-
70
- const getPositionFromValue = (val: number) => {
71
- return ((val - min!) / (max! - min!)) * 100;
72
- };
73
-
74
- const getValueFromPosition = useCallback(
75
- (position: number) => {
76
- return getChangeValue({
77
- value: position,
78
- min: min!,
79
- max: max!,
80
- step: step!,
81
- precision
82
- });
83
- },
84
- [min, max, step, precision]
85
- );
86
-
87
- const getPositionFromEvent = useCallback(
88
- (
89
- event: MouseEvent | TouchEvent | React.MouseEvent | React.TouchEvent
90
- ) => {
91
- if (!trackRef.current) return 0;
92
-
93
- const rect = trackRef.current.getBoundingClientRect();
94
- const clientX =
95
- "touches" in event ? event.touches[0].clientX : event.clientX;
96
-
97
- const position = (clientX - rect.left) / rect.width;
98
- return clamp(position, 0, 1);
99
- },
100
- []
101
- );
102
-
103
- const handleMove = useCallback(
104
- (event: MouseEvent | TouchEvent) => {
105
- if (disabled) return;
106
-
107
- const position = getPositionFromEvent(event);
108
- const newValue = getValueFromPosition(position);
109
- handleChange(newValue);
110
- },
111
- [disabled, getPositionFromEvent, getValueFromPosition, handleChange]
112
- );
113
-
114
- const handleEnd = useCallback(() => {
115
- setIsDragging(false);
116
- onChangeEnd?.(_value);
117
-
118
- document.removeEventListener("mousemove", handleMove);
119
- document.removeEventListener("mouseup", handleEnd);
120
- document.removeEventListener("touchmove", handleMove);
121
- document.removeEventListener("touchend", handleEnd);
122
- }, [handleMove, onChangeEnd, _value]);
123
-
124
- const handleStart = useCallback(
125
- (event: React.MouseEvent | React.TouchEvent) => {
126
- if (disabled) return;
127
-
128
- event.preventDefault();
129
- setIsDragging(true);
130
-
131
- const position = getPositionFromEvent(event);
132
- const newValue = getValueFromPosition(position);
133
- handleChange(newValue);
134
-
135
- document.addEventListener("mousemove", handleMove);
136
- document.addEventListener("mouseup", handleEnd);
137
- document.addEventListener("touchmove", handleMove);
138
- document.addEventListener("touchend", handleEnd);
139
- },
140
- [
141
- disabled,
142
- getPositionFromEvent,
143
- getValueFromPosition,
144
- handleChange,
145
- handleMove,
146
- handleEnd
147
- ]
148
- );
149
-
150
- const position = getPositionFromValue(_value);
151
- const showLabel =
152
- label !== undefined && (isDragging || (showLabelOnHover && isHovered));
153
-
154
- return (
155
- <div
156
- {...props}
157
- ref={ref}
158
- id={_id}
159
- className={cx(
160
- "relative w-full",
161
- disabled && "opacity-50 cursor-not-allowed",
162
- classes.root,
163
- className
164
- )}
165
- >
166
- <div
167
- ref={trackRef}
168
- className={cx(
169
- "relative w-full bg-[var(--refraktor-bg)] cursor-pointer",
170
- sizeStyles.track,
171
- getRadius(radius),
172
- disabled && "cursor-not-allowed",
173
- classes.track
174
- )}
175
- onMouseDown={handleStart}
176
- onTouchStart={handleStart}
177
- >
178
- <div
179
- className={cx(
180
- "absolute h-full bg-[var(--refraktor-primary)]",
181
- getRadius(radius),
182
- classes.bar
183
- )}
184
- style={{ width: `${position}%` }}
185
- />
186
-
187
- {marks && marks.length > 0 && (
188
- <div
189
- className={cx("absolute inset-0", classes.markWrapper)}
190
- >
191
- {marks.map((mark, index) => {
192
- const markPosition = getPositionFromValue(
193
- mark.value
194
- );
195
- const isActive = mark.value <= _value;
196
-
197
- return (
198
- <div
199
- key={index}
200
- className="absolute top-1/2 -translate-x-1/2 -translate-y-1/2 flex flex-col items-center"
201
- style={{ left: `${markPosition}%` }}
202
- >
203
- <div
204
- className={cx(
205
- "w-1 h-1 rounded-full",
206
- isActive
207
- ? "bg-[var(--refraktor-colors-white)]"
208
- : "bg-[var(--refraktor-text-tertiary)]",
209
- classes.mark
210
- )}
211
- />
212
- {mark.label && (
213
- <span
214
- className={cx(
215
- "absolute top-4 text-xs text-[var(--refraktor-text-secondary)] whitespace-nowrap",
216
- classes.markLabel
217
- )}
218
- >
219
- {mark.label}
220
- </span>
221
- )}
222
- </div>
223
- );
224
- })}
225
- </div>
226
- )}
227
-
228
- <div
229
- role="slider"
230
- tabIndex={disabled ? -1 : 0}
231
- aria-valuemin={min}
232
- aria-valuemax={max}
233
- aria-valuenow={_value}
234
- aria-disabled={disabled}
235
- className={cx(
236
- "absolute top-1/2 -translate-x-1/2 -translate-y-1/2",
237
- "bg-[var(--refraktor-colors-white)] shadow-md border border-[var(--refraktor-border)]",
238
- "cursor-grab active:cursor-grabbing transition-transform hover:scale-110 focus:outline-none",
239
- sizeStyles.thumb,
240
- getRadius(radius),
241
- disabled && "cursor-not-allowed hover:scale-100",
242
- classes.thumb
243
- )}
244
- style={{ left: `${position}%` }}
245
- onMouseEnter={() => setIsHovered(true)}
246
- onMouseLeave={() => setIsHovered(false)}
247
- >
248
- {showLabel && (
249
- <div
250
- className={cx(
251
- "absolute bottom-full left-1/2 -translate-x-1/2 mb-2",
252
- "bg-[var(--refraktor-bg)] text-[var(--refraktor-text)] rounded",
253
- "whitespace-nowrap pointer-events-none",
254
- sizeStyles.label,
255
- classes.label
256
- )}
257
- >
258
- {typeof label === "function"
259
- ? (label as (value: number) => ReactNode)(
260
- _value
261
- )
262
- : (label ?? _value)}
263
- </div>
264
- )}
265
- </div>
266
- </div>
267
- </div>
268
- );
269
- });
270
-
271
- Slider.displayName = "@refraktor/core/Slider";
272
- Slider.configure = createComponentConfig<SliderProps>();
273
- Slider.classNames = createClassNamesConfig<SliderClassNames>();
274
-
275
- export default Slider;
@@ -1,82 +0,0 @@
1
- import { ComponentPropsWithoutRef, ReactNode } from "react";
2
- import { RefraktorRadius, RefraktorSize } from "../../theme/types";
3
- import { FactoryPayload } from "../../utils/factory";
4
- import { createClassNamesConfig, createComponentConfig } from "../../utils";
5
-
6
- export type SliderClassNames = {
7
- root?: string;
8
- track?: string;
9
- bar?: string;
10
- thumb?: string;
11
- label?: string;
12
- markWrapper?: string;
13
- mark?: string;
14
- markLabel?: string;
15
- };
16
-
17
- export interface SliderMark {
18
- value: number;
19
- label?: ReactNode;
20
- }
21
-
22
- export interface SliderProps extends Omit<
23
- ComponentPropsWithoutRef<"div">,
24
- "onChange" | "defaultValue" | "value"
25
- > {
26
- /** Current value (controlled) */
27
- value?: number;
28
-
29
- /** Default value (uncontrolled) */
30
- defaultValue?: number;
31
-
32
- /** Callback called when value changes */
33
- onChange?: (value: number) => void;
34
-
35
- /** Callback called when user stops dragging */
36
- onChangeEnd?: (value: number) => void;
37
-
38
- /** Minimum value @default `0` */
39
- min?: number;
40
-
41
- /** Maximum value @default `100` */
42
- max?: number;
43
-
44
- /** Step value @default `1` */
45
- step?: number;
46
-
47
- /** Number of decimal places for the value */
48
- precision?: number;
49
-
50
- /** The size of the slider @default `md` */
51
- size?: RefraktorSize;
52
-
53
- /** The radius of the slider @default `full` */
54
- radius?: RefraktorRadius;
55
-
56
- /** Whether the slider is disabled @default `false` */
57
- disabled?: boolean;
58
-
59
- /** Label displayed above the slider */
60
- label?: ReactNode;
61
-
62
- /** Whether to show the label on hover/drag @default `false` */
63
- showLabelOnHover?: boolean;
64
-
65
- /** Marks to display on the slider track */
66
- marks?: SliderMark[];
67
-
68
- /** Used for editing root class name */
69
- className?: string;
70
-
71
- /** Used for styling different parts of the component */
72
- classNames?: SliderClassNames;
73
- }
74
-
75
- export interface SliderFactoryPayload extends FactoryPayload {
76
- props: SliderProps;
77
- ref: HTMLDivElement;
78
- compound: {
79
- configure: ReturnType<typeof createComponentConfig<SliderProps>>;
80
- classNames: ReturnType<typeof createClassNamesConfig<SliderClassNames>>;
81
- };
82
- }
@@ -1,2 +0,0 @@
1
- export { default as Switch } from "./switch";
2
- export type { SwitchProps, SwitchClassNames } from "./switch.types";
@@ -1,31 +0,0 @@
1
- import { RefraktorSize } from "../../theme";
2
-
3
- const sizes: Record<RefraktorSize, Record<string, string>> = {
4
- xs: {
5
- track: "w-7 h-3.5",
6
- thumb: "w-2.5 h-2.5 group-data-[checked=true]:translate-x-3.5",
7
- label: "text-[10px]"
8
- },
9
- sm: {
10
- track: "w-8 h-4",
11
- thumb: "w-3 h-3 group-data-[checked=true]:translate-x-4",
12
- label: "text-xs"
13
- },
14
- md: {
15
- track: "w-10 h-5",
16
- thumb: "w-4 h-4 group-data-[checked=true]:translate-x-5",
17
- label: "text-sm"
18
- },
19
- lg: {
20
- track: "w-12 h-6",
21
- thumb: "w-4.5 h-4.5 group-data-[checked=true]:translate-x-6",
22
- label: "text-base"
23
- },
24
- xl: {
25
- track: "w-14 h-7",
26
- thumb: "w-5.5 h-5.5 group-data-[checked=true]:translate-x-7",
27
- label: "text-lg"
28
- }
29
- };
30
-
31
- export const getSize = (size: RefraktorSize = "md") => sizes[size];
@@ -1,132 +0,0 @@
1
- import { useId, useUncontrolled } 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
- SwitchClassNames,
12
- SwitchFactoryPayload,
13
- SwitchProps
14
- } from "./switch.types";
15
- import { getSize } from "./switch.styles";
16
-
17
- const defaultProps = {
18
- size: "md",
19
- radius: "full",
20
- labelPosition: "right"
21
- } satisfies Partial<SwitchProps>;
22
-
23
- const Switch = factory<SwitchFactoryPayload>((_props, ref) => {
24
- const { cx, getRadius } = useTheme();
25
- const {
26
- id,
27
- checked,
28
- defaultChecked,
29
- onChange,
30
- size,
31
- radius,
32
- disabled,
33
- label,
34
- labelPosition,
35
- description,
36
- error,
37
- className,
38
- classNames,
39
- ...props
40
- } = useProps("Switch", defaultProps, _props);
41
- const classes = useClassNames("Switch", classNames);
42
-
43
- const [value, handleChange] = useUncontrolled({
44
- value: checked,
45
- defaultValue: defaultChecked,
46
- finalValue: false
47
- });
48
-
49
- const _id = useId(id);
50
- const sizeClass = getSize(size);
51
-
52
- const handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {
53
- handleChange(event.currentTarget.checked);
54
- onChange?.(event);
55
- };
56
-
57
- return (
58
- <div className={cx("inline-flex flex-col", classes.root, className)}>
59
- <label
60
- className={cx(
61
- "inline-flex items-center cursor-pointer select-none",
62
- disabled && "opacity-50 cursor-not-allowed",
63
- labelPosition === "left" ? "flex-row-reverse" : "flex-row"
64
- )}
65
- htmlFor={_id}
66
- >
67
- <input
68
- {...props}
69
- id={_id}
70
- ref={ref}
71
- type="checkbox"
72
- className={cx("sr-only", classes.input)}
73
- checked={value}
74
- onChange={handleOnChange}
75
- disabled={disabled}
76
- />
77
-
78
- <div
79
- className={cx(
80
- "relative bg-[var(--refraktor-bg)] transition-all shrink-0 group",
81
- "data-[checked=true]:bg-[var(--refraktor-primary)]",
82
- "flex items-center p-0.5",
83
- sizeClass.track,
84
- getRadius(radius),
85
- classes.track
86
- )}
87
- data-checked={value}
88
- >
89
- <span
90
- className={cx(
91
- "bg-[var(--refraktor-colors-white)] group-data-[checked=true]:bg-[var(--refraktor-primary-text)] shadow-sm transition-all pointer-events-none",
92
- sizeClass.thumb,
93
- getRadius(radius),
94
- classes.thumb
95
- )}
96
- />
97
- </div>
98
-
99
- {label && (
100
- <span
101
- className={cx(
102
- "text-[var(--refraktor-text)]",
103
- labelPosition === "left" ? "mr-2" : "ml-2",
104
- sizeClass.label,
105
- classes.label
106
- )}
107
- >
108
- {label}
109
- </span>
110
- )}
111
- </label>
112
-
113
- {description && (
114
- <p className="text-[var(--refraktor-text-tertiary)] text-xs mt-1">
115
- {description}
116
- </p>
117
- )}
118
-
119
- {error && error !== true && (
120
- <p className="text-[var(--refraktor-colors-red-5)] text-xs mt-1">
121
- {error}
122
- </p>
123
- )}
124
- </div>
125
- );
126
- });
127
-
128
- Switch.displayName = "@refraktor/core/Switch";
129
- Switch.configure = createComponentConfig<SwitchProps>();
130
- Switch.classNames = createClassNamesConfig<SwitchClassNames>();
131
-
132
- export default Switch;
@@ -1,62 +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
-
9
- export type SwitchLabelPosition = "left" | "right";
10
-
11
- export type SwitchClassNames = {
12
- root?: string;
13
- input?: string;
14
- track?: string;
15
- thumb?: string;
16
- label?: string;
17
- };
18
-
19
- export interface SwitchProps
20
- extends Omit<ComponentPropsWithoutRef<"input">, "size"> {
21
- /** State of the switch (controlled) */
22
- checked?: boolean;
23
-
24
- /** Initial state of the switch (uncontrolled) */
25
- defaultChecked?: boolean;
26
-
27
- /** Callback called when the switch state changes */
28
- onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
29
-
30
- /** The size of the switch @default `md` */
31
- size?: RefraktorSize;
32
-
33
- /** The radius of the switch @default `full` */
34
- radius?: RefraktorRadius;
35
-
36
- /** The label of the switch */
37
- label?: ReactNode;
38
-
39
- /** The position of the label @default `right` */
40
- labelPosition?: SwitchLabelPosition;
41
-
42
- /** Error state or message */
43
- error?: ReactNode;
44
-
45
- /** Description below the switch */
46
- description?: ReactNode;
47
-
48
- /** Used for editing root class name */
49
- className?: string;
50
-
51
- /** Used for styling different parts of the component */
52
- classNames?: SwitchClassNames;
53
- }
54
-
55
- export interface SwitchFactoryPayload extends FactoryPayload {
56
- props: SwitchProps;
57
- ref: HTMLInputElement;
58
- compound: {
59
- configure: ReturnType<typeof createComponentConfig<SwitchProps>>;
60
- classNames: ReturnType<typeof createClassNamesConfig<SwitchClassNames>>;
61
- };
62
- }
@@ -1,24 +0,0 @@
1
- export { default as Table } from "./table";
2
- export { TableHead } from "./table-head";
3
- export { TableBody } from "./table-body";
4
- export { TableRow } from "./table-row";
5
- export { TableHeaderCell } from "./table-header-cell";
6
- export { TableCell } from "./table-cell";
7
- export { TableCaption } from "./table-caption";
8
- export type {
9
- TableProps,
10
- TableHeadProps,
11
- TableBodyProps,
12
- TableRowProps,
13
- TableHeaderCellProps,
14
- TableCellProps,
15
- TableCaptionProps,
16
- TableClassNames,
17
- TableFactoryPayload,
18
- TableHeadFactoryPayload,
19
- TableBodyFactoryPayload,
20
- TableRowFactoryPayload,
21
- TableHeaderCellFactoryPayload,
22
- TableCellFactoryPayload,
23
- TableCaptionFactoryPayload
24
- } from "./table.types";
@@ -1 +0,0 @@
1
- export { default as TableBody } from "./table-body";
@@ -1,37 +0,0 @@
1
- import { useTheme } from "../../../theme";
2
- import { factory } from "../../../utils";
3
- import { useTableContext } from "../table.context";
4
- import { getBodyStyles } from "../table.styles";
5
- import { TableBodyFactoryPayload } from "../table.types";
6
-
7
- const TableBody = factory<TableBodyFactoryPayload>(
8
- ({ children, className, ...props }, ref) => {
9
- const { cx } = useTheme();
10
- const {
11
- striped,
12
- highlightOnHover,
13
- withRowBorders,
14
- getStyles
15
- } = useTableContext();
16
-
17
- const bodyStyles = getBodyStyles({
18
- striped,
19
- highlightOnHover,
20
- withRowBorders
21
- });
22
-
23
- return (
24
- <tbody
25
- ref={ref}
26
- className={cx("align-top", bodyStyles, getStyles("body"), className)}
27
- {...props}
28
- >
29
- {children}
30
- </tbody>
31
- );
32
- }
33
- );
34
-
35
- TableBody.displayName = "@refraktor/core/Table.Body";
36
-
37
- export default TableBody;