@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,125 +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 { CheckboxGroup } from "./checkbox-group";
9
-
10
- export type CheckboxLabelPosition = "left" | "right";
11
- export type CheckboxGroupOrientation = "vertical" | "horizontal";
12
-
13
- export type CheckboxClassNames = {
14
- root?: string;
15
- body?: string;
16
- input?: string;
17
- indicator?: string;
18
- icon?: string;
19
- label?: string;
20
- description?: string;
21
- error?: string;
22
- };
23
-
24
- export type CheckboxGroupClassNames = {
25
- root?: string;
26
- };
27
-
28
- export interface CheckboxProps
29
- extends Omit<ComponentPropsWithoutRef<"input">, "size" | "onChange"> {
30
- /** State of the checkbox (controlled) */
31
- checked?: boolean;
32
-
33
- /** Initial state of the checkbox (uncontrolled) */
34
- defaultChecked?: boolean;
35
-
36
- /** Callback called when the checkbox state changes */
37
- onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
38
-
39
- /** Whether the checkbox should display indeterminate state */
40
- indeterminate?: boolean;
41
-
42
- /** Value used in Checkbox.Group */
43
- value?: string;
44
-
45
- /** The size of the checkbox @default `md` */
46
- size?: RefraktorSize;
47
-
48
- /** The radius of the checkbox @default `sm` */
49
- radius?: RefraktorRadius;
50
-
51
- /** The label of the checkbox */
52
- label?: ReactNode;
53
-
54
- /** The position of the label @default `right` */
55
- labelPosition?: CheckboxLabelPosition;
56
-
57
- /** Error state or message */
58
- error?: ReactNode;
59
-
60
- /** Description below the checkbox */
61
- description?: ReactNode;
62
-
63
- /** Used for editing root class name */
64
- className?: string;
65
-
66
- /** Used for styling different parts of the component */
67
- classNames?: CheckboxClassNames;
68
- }
69
-
70
- export interface CheckboxGroupProps
71
- extends Omit<ComponentPropsWithoutRef<"div">, "onChange"> {
72
- /** Checkbox items to render */
73
- children: ReactNode;
74
-
75
- /** Selected values (controlled) */
76
- value?: string[];
77
-
78
- /** Initial selected values (uncontrolled) */
79
- defaultValue?: string[];
80
-
81
- /** Callback called when group values change */
82
- onChange?: (value: string[]) => void;
83
-
84
- /** Name propagated to checkbox inputs in the group */
85
- name?: string;
86
-
87
- /** Whether all checkboxes in group are disabled */
88
- disabled?: boolean;
89
-
90
- /** Shared checkbox size */
91
- size?: RefraktorSize;
92
-
93
- /** Shared checkbox radius */
94
- radius?: RefraktorRadius;
95
-
96
- /** Layout direction @default `vertical` */
97
- orientation?: CheckboxGroupOrientation;
98
-
99
- /** Used for editing root class name */
100
- className?: string;
101
-
102
- /** Used for styling different parts of the component */
103
- classNames?: CheckboxGroupClassNames;
104
- }
105
-
106
- export interface CheckboxFactoryPayload extends FactoryPayload {
107
- props: CheckboxProps;
108
- ref: HTMLInputElement;
109
- compound: {
110
- configure: ReturnType<typeof createComponentConfig<CheckboxProps>>;
111
- classNames: ReturnType<typeof createClassNamesConfig<CheckboxClassNames>>;
112
- Group: typeof CheckboxGroup;
113
- };
114
- }
115
-
116
- export interface CheckboxGroupFactoryPayload extends FactoryPayload {
117
- props: CheckboxGroupProps;
118
- ref: HTMLDivElement;
119
- compound: {
120
- configure: ReturnType<typeof createComponentConfig<CheckboxGroupProps>>;
121
- classNames: ReturnType<
122
- typeof createClassNamesConfig<CheckboxGroupClassNames>
123
- >;
124
- };
125
- }
@@ -1,10 +0,0 @@
1
- export { default as Checkbox } from "./checkbox";
2
- export { CheckboxGroup } from "./checkbox-group";
3
- export type {
4
- CheckboxProps,
5
- CheckboxClassNames,
6
- CheckboxGroupProps,
7
- CheckboxGroupClassNames,
8
- CheckboxLabelPosition,
9
- CheckboxGroupOrientation
10
- } from "./checkbox.types";
@@ -1,107 +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 { ChipGroupProvider } from "../chip.context";
11
- import {
12
- ChipGroupClassNames,
13
- ChipGroupFactoryPayload,
14
- ChipGroupProps
15
- } from "../chip.types";
16
-
17
- const defaultProps = {
18
- orientation: "horizontal"
19
- } satisfies Partial<ChipGroupProps>;
20
-
21
- const ChipGroup = factory<ChipGroupFactoryPayload>((_props, ref) => {
22
- const { cx } = useTheme();
23
- const {
24
- id,
25
- children,
26
- value,
27
- defaultValue,
28
- onChange,
29
- name,
30
- disabled,
31
- size,
32
- radius,
33
- variant,
34
- orientation,
35
- className,
36
- classNames,
37
- ...props
38
- } = useProps("ChipGroup", defaultProps, _props);
39
- const classes = useClassNames<ChipGroupClassNames>("ChipGroup", classNames);
40
-
41
- const _id = useId(id);
42
-
43
- const [values, setValues] = useUncontrolled<string[]>({
44
- value,
45
- defaultValue,
46
- finalValue: [],
47
- onChange
48
- });
49
-
50
- const handleValueChange = (chipValue: string, selected: boolean) => {
51
- const nextValues = selected
52
- ? values.includes(chipValue)
53
- ? values
54
- : [...values, chipValue]
55
- : values.filter((itemValue) => itemValue !== chipValue);
56
-
57
- setValues(nextValues);
58
- };
59
-
60
- return (
61
- <ChipGroupProvider
62
- value={{
63
- value: values,
64
- onValueChange: handleValueChange,
65
- disabled,
66
- size,
67
- radius,
68
- variant
69
- }}
70
- >
71
- <div
72
- ref={ref}
73
- id={_id}
74
- data-disabled={disabled}
75
- aria-disabled={disabled}
76
- className={cx(
77
- "inline-flex",
78
- orientation === "vertical"
79
- ? "flex-col items-start gap-2"
80
- : "flex-row flex-wrap items-center gap-2",
81
- "data-[disabled=true]:opacity-50",
82
- classes.root,
83
- className
84
- )}
85
- {...props}
86
- >
87
- {children}
88
-
89
- {name &&
90
- values.map((itemValue, index) => (
91
- <input
92
- key={`${itemValue}-${index}`}
93
- type="hidden"
94
- name={name}
95
- value={itemValue}
96
- />
97
- ))}
98
- </div>
99
- </ChipGroupProvider>
100
- );
101
- });
102
-
103
- ChipGroup.displayName = "@refraktor/core/ChipGroup";
104
- ChipGroup.configure = createComponentConfig<ChipGroupProps>();
105
- ChipGroup.classNames = createClassNamesConfig<ChipGroupClassNames>();
106
-
107
- export default ChipGroup;
@@ -1 +0,0 @@
1
- export { default as ChipGroup } from "./chip-group";
@@ -1,15 +0,0 @@
1
- import { createOptionalContext } from "@refraktor/utils";
2
- import { RefraktorRadius, RefraktorSize } from "../../theme";
3
- import { ChipVariant } from "./chip.types";
4
-
5
- export interface ChipGroupContextValue {
6
- value: string[];
7
- onValueChange: (chipValue: string, selected: boolean) => void;
8
- disabled?: boolean;
9
- size?: RefraktorSize;
10
- radius?: RefraktorRadius;
11
- variant?: ChipVariant;
12
- }
13
-
14
- export const [ChipGroupProvider, useChipGroupContext] =
15
- createOptionalContext<ChipGroupContextValue>();
@@ -1,36 +0,0 @@
1
- import { RefraktorSize } from "../../theme";
2
- import { ChipVariant } from "./chip.types";
3
-
4
- const sizes: Record<RefraktorSize, string> = {
5
- xs: "text-xs h-5 px-2 gap-1",
6
- sm: "text-xs h-6 px-2.5 gap-1.5",
7
- md: "text-sm h-7 px-3 gap-1.5",
8
- lg: "text-base h-8 px-3.5 gap-2",
9
- xl: "text-lg h-9 px-4 gap-2"
10
- };
11
-
12
- const variants: Record<
13
- ChipVariant,
14
- {
15
- idle: string;
16
- selected: string;
17
- }
18
- > = {
19
- default: {
20
- idle: "bg-[var(--refraktor-bg)] text-[var(--refraktor-text)] border border-[var(--refraktor-border)] hover:bg-[var(--refraktor-bg-hover)]",
21
- selected:
22
- "bg-[var(--refraktor-primary)] text-[var(--refraktor-primary-text)] border border-[var(--refraktor-primary)]"
23
- },
24
- outline: {
25
- idle: "bg-transparent text-[var(--refraktor-text)] border border-[var(--refraktor-border)] hover:border-[var(--refraktor-border-hover)]",
26
- selected:
27
- "bg-[var(--refraktor-bg-subtle)] text-[var(--refraktor-text)] border border-[var(--refraktor-primary)]"
28
- }
29
- };
30
-
31
- export const getSize = (size: RefraktorSize = "sm") => sizes[size];
32
-
33
- export const getVariant = (
34
- variant: ChipVariant = "default",
35
- selected = false
36
- ) => (selected ? variants[variant].selected : variants[variant].idle);
@@ -1,197 +0,0 @@
1
- import { createRef, useState } from "react";
2
- import { describe, expect, it, vi } from "vitest";
3
- import { render, screen, userEvent } from "../../vitest";
4
- import Chip from "./chip";
5
-
6
- describe("@refraktor/core/Chip", () => {
7
- it("renders correctly", async () => {
8
- await render(<Chip>React</Chip>);
9
-
10
- expect(screen.getByText("React")).toBeInTheDocument();
11
- });
12
-
13
- it("forwards ref correctly", async () => {
14
- const ref = createRef<HTMLDivElement>();
15
-
16
- await render(<Chip ref={ref}>React</Chip>);
17
-
18
- expect(ref.current).toBeInstanceOf(HTMLDivElement);
19
- expect(ref.current?.tagName).toBe("DIV");
20
- });
21
-
22
- it("supports uncontrolled selected state when selectable", async () => {
23
- const user = userEvent.setup();
24
-
25
- await render(<Chip selectable>React</Chip>);
26
-
27
- const chip = screen.getByRole("button", { name: "React" });
28
-
29
- expect(chip).toHaveAttribute("aria-pressed", "false");
30
-
31
- await user.click(chip);
32
-
33
- expect(chip).toHaveAttribute("aria-pressed", "true");
34
- });
35
-
36
- it("supports controlled selected state", async () => {
37
- const user = userEvent.setup();
38
-
39
- function Demo() {
40
- const [selected, setSelected] = useState(false);
41
-
42
- return (
43
- <Chip selectable selected={selected} onSelectedChange={setSelected}>
44
- React
45
- </Chip>
46
- );
47
- }
48
-
49
- await render(<Demo />);
50
-
51
- const chip = screen.getByRole("button", { name: "React" });
52
-
53
- await user.click(chip);
54
-
55
- expect(chip).toHaveAttribute("aria-pressed", "true");
56
- });
57
-
58
- it("handles keyboard toggling", async () => {
59
- const user = userEvent.setup();
60
-
61
- await render(<Chip selectable>Vue</Chip>);
62
-
63
- const chip = screen.getByRole("button", { name: "Vue" });
64
- chip.focus();
65
-
66
- await user.keyboard("{Space}");
67
- expect(chip).toHaveAttribute("aria-pressed", "true");
68
-
69
- await user.keyboard("{Enter}");
70
- expect(chip).toHaveAttribute("aria-pressed", "false");
71
- });
72
-
73
- it("calls onRemove and does not toggle selection", async () => {
74
- const user = userEvent.setup();
75
- const onRemove = vi.fn();
76
-
77
- await render(
78
- <Chip selectable removable onRemove={onRemove} defaultSelected>
79
- Svelte
80
- </Chip>
81
- );
82
-
83
- const chip = screen.getByRole("button", { name: "Svelte" });
84
- const removeButton = screen.getByRole("button", { name: "Remove chip" });
85
-
86
- expect(chip).toHaveAttribute("aria-pressed", "true");
87
-
88
- await user.click(removeButton);
89
-
90
- expect(onRemove).toHaveBeenCalledTimes(1);
91
- expect(chip).toHaveAttribute("aria-pressed", "false");
92
- });
93
-
94
- it("supports group selection", async () => {
95
- const user = userEvent.setup();
96
- const onChange = vi.fn();
97
-
98
- await render(
99
- <Chip.Group defaultValue={["react"]} onChange={onChange}>
100
- <Chip value="react">React</Chip>
101
- <Chip value="vue">Vue</Chip>
102
- </Chip.Group>
103
- );
104
-
105
- const reactChip = screen.getByRole("button", { name: "React" });
106
- const vueChip = screen.getByRole("button", { name: "Vue" });
107
-
108
- expect(reactChip).toHaveAttribute("aria-pressed", "true");
109
- expect(vueChip).toHaveAttribute("aria-pressed", "false");
110
-
111
- await user.click(vueChip);
112
- expect(onChange).toHaveBeenLastCalledWith(["react", "vue"]);
113
-
114
- await user.click(reactChip);
115
- expect(onChange).toHaveBeenLastCalledWith(["vue"]);
116
- });
117
-
118
- it("removes value from group with removable chip", async () => {
119
- const user = userEvent.setup();
120
- const onChange = vi.fn();
121
-
122
- await render(
123
- <Chip.Group defaultValue={["react"]} onChange={onChange}>
124
- <Chip value="react" removable>
125
- React
126
- </Chip>
127
- </Chip.Group>
128
- );
129
-
130
- await user.click(screen.getByRole("button", { name: "Remove chip" }));
131
-
132
- expect(onChange).toHaveBeenLastCalledWith([]);
133
- });
134
-
135
- it("supports disabled state from group", async () => {
136
- const user = userEvent.setup();
137
- const onChange = vi.fn();
138
-
139
- await render(
140
- <Chip.Group disabled onChange={onChange}>
141
- <Chip value="react">React</Chip>
142
- </Chip.Group>
143
- );
144
-
145
- const chip = screen.getByRole("button", { name: "React" });
146
- await user.click(chip);
147
-
148
- expect(chip).toHaveAttribute("aria-disabled", "true");
149
- expect(onChange).not.toHaveBeenCalled();
150
- });
151
-
152
- it("supports hidden inputs from group name", async () => {
153
- const { container } = await render(
154
- <Chip.Group name="frameworks" defaultValue={["react", "vue"]}>
155
- <Chip value="react">React</Chip>
156
- <Chip value="vue">Vue</Chip>
157
- </Chip.Group>
158
- );
159
-
160
- const hiddenInputs = container.querySelectorAll(
161
- 'input[type="hidden"][name="frameworks"]'
162
- );
163
-
164
- expect(hiddenInputs).toHaveLength(2);
165
- expect(
166
- Array.from(hiddenInputs).map(
167
- (item) => (item as HTMLInputElement).value
168
- )
169
- ).toEqual(["react", "vue"]);
170
- });
171
-
172
- it("supports root and slot class names", async () => {
173
- const { container } = await render(
174
- <Chip
175
- className="custom-root"
176
- classNames={{
177
- label: "custom-label",
178
- removeButton: "custom-remove-button",
179
- removeIcon: "custom-remove-icon"
180
- }}
181
- removable
182
- >
183
- React
184
- </Chip>
185
- );
186
-
187
- const root = container.firstElementChild as HTMLDivElement;
188
- const label = screen.getByText("React");
189
- const removeButton = screen.getByRole("button", { name: "Remove chip" });
190
- const removeIcon = removeButton.querySelector("span");
191
-
192
- expect(root).toHaveClass("custom-root");
193
- expect(label).toHaveClass("custom-label");
194
- expect(removeButton).toHaveClass("custom-remove-button");
195
- expect(removeIcon).toHaveClass("custom-remove-icon");
196
- });
197
- });