@saas-ui/react 3.0.0-alpha.1 → 3.0.0-alpha.10

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 (344) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/dist/chunk-2EUACKRH.js +26 -0
  3. package/dist/chunk-3MO37LYW.js +326 -0
  4. package/dist/chunk-4TR3AOMG.js +33 -0
  5. package/dist/chunk-6LOMIKR5.js +69 -0
  6. package/dist/chunk-6ZNR6N2K.js +45 -0
  7. package/dist/chunk-7VSTNV2B.js +53 -0
  8. package/dist/chunk-BCNPBZZK.js +45 -0
  9. package/dist/chunk-CB52LBJK.js +71 -0
  10. package/dist/chunk-CD2JUFI2.js +231 -0
  11. package/dist/chunk-FJFNGSPL.js +23 -0
  12. package/dist/chunk-GGAKUS66.js +141 -0
  13. package/dist/chunk-H6TFEHY4.js +63 -0
  14. package/dist/chunk-HELHPHIQ.js +35 -0
  15. package/dist/chunk-I2RXEKTB.js +38 -0
  16. package/dist/chunk-JGHXJ3PI.js +102 -0
  17. package/dist/chunk-L356FPLY.js +20 -0
  18. package/dist/chunk-LIYUBUOP.js +119 -0
  19. package/dist/chunk-M7FOBCOV.js +184 -0
  20. package/dist/chunk-NSD5HRIP.js +46 -0
  21. package/dist/chunk-Q6SNJJO2.js +63 -0
  22. package/dist/chunk-QSNSWCTM.js +32 -0
  23. package/dist/chunk-S3CQW7GD.js +100 -0
  24. package/dist/chunk-SA3OGTOO.js +23 -0
  25. package/dist/chunk-SKXSBAOS.js +35 -0
  26. package/dist/{components/breadcrumbs/index.js → chunk-TT4C5VXB.js} +6 -7
  27. package/dist/chunk-TZBAM4AD.js +20 -0
  28. package/dist/chunk-UCQ3LZIE.js +43 -0
  29. package/dist/chunk-ULAJ3JEO.js +32 -0
  30. package/dist/chunk-WYLMBMAH.js +22 -0
  31. package/dist/components/app-shell/index.cjs +1 -1
  32. package/dist/components/app-shell/index.d.cts +1 -1
  33. package/dist/components/app-shell/index.d.ts +1 -1
  34. package/dist/components/app-shell/index.js +3 -40
  35. package/dist/components/avatar/index.cjs +69 -0
  36. package/dist/components/avatar/index.d.cts +18 -0
  37. package/dist/components/avatar/index.d.ts +18 -0
  38. package/dist/components/avatar/index.js +10 -0
  39. package/dist/components/{breadcrumbs → breadcrumb}/index.cjs +8 -10
  40. package/dist/components/{breadcrumbs → breadcrumb}/index.d.cts +3 -4
  41. package/dist/components/{breadcrumbs → breadcrumb}/index.d.ts +3 -4
  42. package/dist/components/breadcrumb/index.js +8 -0
  43. package/dist/components/button/index.js +3 -40
  44. package/dist/components/checkbox/index.js +3 -15
  45. package/dist/components/command/index.cjs +1 -1
  46. package/dist/components/command/index.js +3 -28
  47. package/dist/components/dialog/index.cjs +19 -58
  48. package/dist/components/dialog/index.js +4 -67
  49. package/dist/components/drawer/index.cjs +23 -64
  50. package/dist/components/drawer/index.d.cts +2 -2
  51. package/dist/components/drawer/index.d.ts +2 -2
  52. package/dist/components/drawer/index.js +4 -59
  53. package/dist/components/empty-state/index.cjs +48 -0
  54. package/dist/components/empty-state/index.d.cts +11 -0
  55. package/dist/components/empty-state/index.d.ts +11 -0
  56. package/dist/components/empty-state/index.js +8 -0
  57. package/dist/components/grid-list/index.cjs +68 -0
  58. package/dist/components/grid-list/index.d.cts +22 -0
  59. package/dist/components/grid-list/index.d.ts +22 -0
  60. package/dist/components/grid-list/index.js +8 -0
  61. package/dist/components/icon-badge/index.cjs +1 -1
  62. package/dist/components/icon-badge/index.d.cts +1 -1
  63. package/dist/components/icon-badge/index.d.ts +1 -1
  64. package/dist/components/icon-badge/index.js +3 -33
  65. package/dist/components/link/index.js +3 -14
  66. package/dist/components/loading-overlay/index.cjs +42 -1879
  67. package/dist/components/loading-overlay/index.d.cts +19 -6
  68. package/dist/components/loading-overlay/index.d.ts +19 -6
  69. package/dist/components/loading-overlay/index.js +7 -1874
  70. package/dist/components/menu/index.cjs +249 -0
  71. package/dist/components/menu/index.d.cts +39 -0
  72. package/dist/components/menu/index.d.ts +39 -0
  73. package/dist/components/menu/index.js +11 -0
  74. package/dist/components/navbar/index.cjs +61 -15
  75. package/dist/components/navbar/index.d.cts +12 -9
  76. package/dist/components/navbar/index.d.ts +12 -9
  77. package/dist/components/navbar/index.js +5 -38
  78. package/dist/components/number-input/index.js +3 -26
  79. package/dist/components/password-input/index.js +3 -225
  80. package/dist/components/persona/index.cjs +52 -15
  81. package/dist/components/persona/index.d.cts +22 -2
  82. package/dist/components/persona/index.d.ts +22 -2
  83. package/dist/components/persona/index.js +7 -144
  84. package/dist/components/pin-input/index.js +3 -21
  85. package/dist/components/radio/index.js +4 -16
  86. package/dist/components/search-input/index.js +4 -114
  87. package/dist/components/segmented-control/index.cjs +60 -0
  88. package/dist/components/segmented-control/index.d.cts +14 -0
  89. package/dist/components/segmented-control/index.d.ts +14 -0
  90. package/dist/components/segmented-control/index.js +8 -0
  91. package/dist/components/select/index.js +4 -94
  92. package/dist/components/sidebar/index.cjs +64 -32
  93. package/dist/components/sidebar/index.d.cts +24 -23
  94. package/dist/components/sidebar/index.d.ts +24 -23
  95. package/dist/components/sidebar/index.js +7 -101
  96. package/dist/components/steps/index.cjs +7 -9
  97. package/dist/components/steps/index.d.cts +2 -2
  98. package/dist/components/steps/index.d.ts +2 -2
  99. package/dist/components/steps/index.js +6 -67
  100. package/dist/components/switch/index.js +3 -18
  101. package/dist/components/toaster/index.cjs +54 -0
  102. package/dist/components/toaster/index.d.cts +10 -0
  103. package/dist/components/toaster/index.d.ts +10 -0
  104. package/dist/components/toaster/index.js +10 -0
  105. package/dist/components/tooltip/index.cjs +57 -0
  106. package/dist/components/tooltip/index.d.cts +14 -0
  107. package/dist/components/tooltip/index.d.ts +14 -0
  108. package/dist/components/tooltip/index.js +8 -0
  109. package/dist/index.cjs +2357 -220
  110. package/dist/index.d.cts +38 -2
  111. package/dist/index.d.ts +38 -2
  112. package/dist/index.js +515 -276
  113. package/dist/theme/tokens/colors.cjs +349 -0
  114. package/dist/theme/tokens/colors.d.cts +856 -0
  115. package/dist/theme/tokens/colors.d.ts +856 -0
  116. package/dist/theme/tokens/colors.js +8 -0
  117. package/package.json +12 -7
  118. package/dist/chunk-VBIVLREP.js +0 -45
  119. package/src/components/app-shell/app-shell.recipe.ts +0 -52
  120. package/src/components/app-shell/app-shell.stories.tsx +0 -51
  121. package/src/components/app-shell/app-shell.tsx +0 -94
  122. package/src/components/app-shell/index.ts +0 -3
  123. package/src/components/breadcrumbs/breadcrumb.stories.tsx +0 -17
  124. package/src/components/breadcrumbs/breadcrumb.tsx +0 -36
  125. package/src/components/breadcrumbs/index.ts +0 -1
  126. package/src/components/breadcrumbs/namespace.ts +0 -8
  127. package/src/components/button/button.recipe.ts +0 -182
  128. package/src/components/button/button.stories.tsx +0 -99
  129. package/src/components/button/button.tsx +0 -55
  130. package/src/components/button/index.ts +0 -2
  131. package/src/components/checkbox/checkbox.tsx +0 -26
  132. package/src/components/checkbox/index.ts +0 -2
  133. package/src/components/close-button/close-button.stories.tsx +0 -12
  134. package/src/components/close-button/close-button.tsx +0 -18
  135. package/src/components/close-button/index.ts +0 -2
  136. package/src/components/command/command.recipe.ts +0 -17
  137. package/src/components/command/command.stories.tsx +0 -47
  138. package/src/components/command/command.tsx +0 -50
  139. package/src/components/command/index.ts +0 -1
  140. package/src/components/dialog/dialog.tsx +0 -67
  141. package/src/components/dialog/index.ts +0 -1
  142. package/src/components/dialog/namespace.ts +0 -18
  143. package/src/components/drawer/drawer.tsx +0 -57
  144. package/src/components/drawer/index.ts +0 -3
  145. package/src/components/drawer/namespace.ts +0 -19
  146. package/src/components/grid-list/grid-list.recipe.ts +0 -113
  147. package/src/components/icon-badge/icon-badge.recipe.ts +0 -57
  148. package/src/components/icon-badge/icon-badge.stories.tsx +0 -38
  149. package/src/components/icon-badge/icon-badge.tsx +0 -59
  150. package/src/components/icon-badge/index.ts +0 -2
  151. package/src/components/icons/create-icon.tsx +0 -41
  152. package/src/components/icons/icons.tsx +0 -119
  153. package/src/components/icons/index.ts +0 -1
  154. package/src/components/input-group/index.ts +0 -1
  155. package/src/components/input-group/input-group.tsx +0 -46
  156. package/src/components/link/index.ts +0 -2
  157. package/src/components/link/link.stories.tsx +0 -17
  158. package/src/components/link/link.test.tsx +0 -33
  159. package/src/components/link/link.tsx +0 -27
  160. package/src/components/loading-overlay/index.ts +0 -1
  161. package/src/components/loading-overlay/loading-overlay.recipe.ts +0 -61
  162. package/src/components/loading-overlay/loading-overlay.stories.tsx +0 -68
  163. package/src/components/loading-overlay/loading-overlay.tsx +0 -54
  164. package/src/components/loading-overlay/namespace.ts +0 -7
  165. package/src/components/navbar/index.ts +0 -1
  166. package/src/components/navbar/namespace.ts +0 -9
  167. package/src/components/navbar/navbar.recipe.ts +0 -109
  168. package/src/components/navbar/navbar.stories.tsx +0 -435
  169. package/src/components/navbar/navbar.test.tsx +0 -49
  170. package/src/components/navbar/navbar.tsx +0 -39
  171. package/src/components/number-input/index.ts +0 -2
  172. package/src/components/number-input/number-input.tsx +0 -41
  173. package/src/components/password-input/index.ts +0 -2
  174. package/src/components/password-input/password-input.tsx +0 -93
  175. package/src/components/persona/index.ts +0 -2
  176. package/src/components/persona/namespace.ts +0 -18
  177. package/src/components/persona/persona-primitive.tsx +0 -220
  178. package/src/components/persona/persona.recipe.ts +0 -94
  179. package/src/components/persona/persona.stories.tsx +0 -101
  180. package/src/components/persona/persona.tsx +0 -142
  181. package/src/components/pin-input/index.ts +0 -2
  182. package/src/components/pin-input/pin-input.tsx +0 -36
  183. package/src/components/radio/index.ts +0 -2
  184. package/src/components/radio/radio.tsx +0 -27
  185. package/src/components/search-input/index.ts +0 -2
  186. package/src/components/search-input/search-input.stories.tsx +0 -63
  187. package/src/components/search-input/search-input.tsx +0 -134
  188. package/src/components/select/index.ts +0 -1
  189. package/src/components/select/namespace.ts +0 -18
  190. package/src/components/select/select.tsx +0 -135
  191. package/src/components/sidebar/index.ts +0 -7
  192. package/src/components/sidebar/namespace.ts +0 -27
  193. package/src/components/sidebar/sidebar-item.recipe.ts +0 -65
  194. package/src/components/sidebar/sidebar.recipe.ts +0 -237
  195. package/src/components/sidebar/sidebar.stories.tsx +0 -903
  196. package/src/components/sidebar/sidebar.tsx +0 -208
  197. package/src/components/spinner/index.ts +0 -2
  198. package/src/components/spinner/spinner.stories.tsx +0 -19
  199. package/src/components/spinner/spinner.tsx +0 -21
  200. package/src/components/steps/index.ts +0 -1
  201. package/src/components/steps/namespace.ts +0 -16
  202. package/src/components/steps/steps.tsx +0 -82
  203. package/src/components/switch/index.ts +0 -3
  204. package/src/components/switch/switch.tsx +0 -39
  205. package/src/compositions/accordion.tsx +0 -47
  206. package/src/compositions/action-bar.tsx +0 -40
  207. package/src/compositions/alert.tsx +0 -51
  208. package/src/compositions/avatar.tsx +0 -74
  209. package/src/compositions/blockquote.tsx +0 -31
  210. package/src/compositions/checkbox-card.tsx +0 -57
  211. package/src/compositions/checkbox.tsx +0 -25
  212. package/src/compositions/clipboard.tsx +0 -107
  213. package/src/compositions/color-mode.tsx +0 -65
  214. package/src/compositions/data-list.tsx +0 -37
  215. package/src/compositions/empty-state.tsx +0 -34
  216. package/src/compositions/field.tsx +0 -33
  217. package/src/compositions/file-button.tsx +0 -166
  218. package/src/compositions/hover-card.tsx +0 -35
  219. package/src/compositions/link-button.tsx +0 -12
  220. package/src/compositions/menu.tsx +0 -108
  221. package/src/compositions/native-select.tsx +0 -57
  222. package/src/compositions/pagination.tsx +0 -207
  223. package/src/compositions/popover.tsx +0 -58
  224. package/src/compositions/progress-circle.tsx +0 -37
  225. package/src/compositions/progress.tsx +0 -40
  226. package/src/compositions/prose.tsx +0 -264
  227. package/src/compositions/provider.tsx +0 -12
  228. package/src/compositions/radio-card.tsx +0 -57
  229. package/src/compositions/radio.tsx +0 -24
  230. package/src/compositions/rating.tsx +0 -27
  231. package/src/compositions/segmented-control.tsx +0 -47
  232. package/src/compositions/skeleton.tsx +0 -44
  233. package/src/compositions/slider.tsx +0 -53
  234. package/src/compositions/stat.tsx +0 -75
  235. package/src/compositions/status.tsx +0 -29
  236. package/src/compositions/stepper-input.tsx +0 -49
  237. package/src/compositions/tag.tsx +0 -39
  238. package/src/compositions/timeline.tsx +0 -17
  239. package/src/compositions/toaster.tsx +0 -43
  240. package/src/compositions/toggle-tip.tsx +0 -62
  241. package/src/compositions/tooltip.tsx +0 -46
  242. package/src/index.ts +0 -7
  243. package/src/preset.ts +0 -9
  244. package/src/provider/index.ts +0 -4
  245. package/src/provider/sui-provider.tsx +0 -34
  246. package/src/provider/use-link.test.tsx +0 -60
  247. package/src/provider/use-link.tsx +0 -13
  248. package/src/styled-system/create-recipe-context.tsx +0 -91
  249. package/src/styled-system/create-slot-recipe-context.tsx +0 -188
  250. package/src/styled-system/empty.ts +0 -7
  251. package/src/styled-system/factory.types.ts +0 -11
  252. package/src/theme/animation-styles.ts +0 -53
  253. package/src/theme/breakpoints.ts +0 -11
  254. package/src/theme/conditions.ts +0 -26
  255. package/src/theme/fluid-font-sizes.ts +0 -65
  256. package/src/theme/global-css.ts +0 -94
  257. package/src/theme/index.ts +0 -72
  258. package/src/theme/layer-styles.ts +0 -116
  259. package/src/theme/recipes/chakra/accordion.ts +0 -145
  260. package/src/theme/recipes/chakra/action-bar.ts +0 -62
  261. package/src/theme/recipes/chakra/alert.ts +0 -157
  262. package/src/theme/recipes/chakra/avatar.ts +0 -141
  263. package/src/theme/recipes/chakra/badge.ts +0 -67
  264. package/src/theme/recipes/chakra/blockquote.ts +0 -83
  265. package/src/theme/recipes/chakra/breadcrumb.ts +0 -94
  266. package/src/theme/recipes/chakra/card.ts +0 -99
  267. package/src/theme/recipes/chakra/checkbox-card.ts +0 -212
  268. package/src/theme/recipes/chakra/checkbox.ts +0 -70
  269. package/src/theme/recipes/chakra/checkmark.ts +0 -83
  270. package/src/theme/recipes/chakra/code.ts +0 -17
  271. package/src/theme/recipes/chakra/collapsible.ts +0 -20
  272. package/src/theme/recipes/chakra/container.ts +0 -26
  273. package/src/theme/recipes/chakra/data-list.ts +0 -80
  274. package/src/theme/recipes/chakra/dialog.ts +0 -225
  275. package/src/theme/recipes/chakra/drawer.ts +0 -201
  276. package/src/theme/recipes/chakra/editable.ts +0 -88
  277. package/src/theme/recipes/chakra/empty-state.ts +0 -88
  278. package/src/theme/recipes/chakra/field.ts +0 -68
  279. package/src/theme/recipes/chakra/fieldset.ts +0 -62
  280. package/src/theme/recipes/chakra/file-upload.ts +0 -96
  281. package/src/theme/recipes/chakra/heading.ts +0 -27
  282. package/src/theme/recipes/chakra/hover-card.ts +0 -68
  283. package/src/theme/recipes/chakra/icon.ts +0 -30
  284. package/src/theme/recipes/chakra/input-addon.ts +0 -40
  285. package/src/theme/recipes/chakra/input.ts +0 -96
  286. package/src/theme/recipes/chakra/kbd.ts +0 -60
  287. package/src/theme/recipes/chakra/link.ts +0 -37
  288. package/src/theme/recipes/chakra/list.ts +0 -67
  289. package/src/theme/recipes/chakra/mark.ts +0 -27
  290. package/src/theme/recipes/chakra/menu.ts +0 -124
  291. package/src/theme/recipes/chakra/native-select.ts +0 -140
  292. package/src/theme/recipes/chakra/number-input.ts +0 -115
  293. package/src/theme/recipes/chakra/pin-input.ts +0 -27
  294. package/src/theme/recipes/chakra/popover.ts +0 -86
  295. package/src/theme/recipes/chakra/progress-circle.ts +0 -94
  296. package/src/theme/recipes/chakra/progress.ts +0 -127
  297. package/src/theme/recipes/chakra/radio-card.ts +0 -220
  298. package/src/theme/recipes/chakra/radio-group.ts +0 -72
  299. package/src/theme/recipes/chakra/radiomark.ts +0 -107
  300. package/src/theme/recipes/chakra/rating-group.ts +0 -94
  301. package/src/theme/recipes/chakra/segment-group.ts +0 -117
  302. package/src/theme/recipes/chakra/select.ts +0 -282
  303. package/src/theme/recipes/chakra/separator.ts +0 -51
  304. package/src/theme/recipes/chakra/skeleton.ts +0 -53
  305. package/src/theme/recipes/chakra/skip-nav-link.ts +0 -34
  306. package/src/theme/recipes/chakra/slider.ts +0 -178
  307. package/src/theme/recipes/chakra/spinner.ts +0 -32
  308. package/src/theme/recipes/chakra/stat.ts +0 -79
  309. package/src/theme/recipes/chakra/status.ts +0 -48
  310. package/src/theme/recipes/chakra/steps.ts +0 -218
  311. package/src/theme/recipes/chakra/switch.ts +0 -167
  312. package/src/theme/recipes/chakra/table.ts +0 -172
  313. package/src/theme/recipes/chakra/tabs.ts +0 -280
  314. package/src/theme/recipes/chakra/tag.ts +0 -131
  315. package/src/theme/recipes/chakra/textarea.ts +0 -88
  316. package/src/theme/recipes/chakra/timeline.ts +0 -138
  317. package/src/theme/recipes/chakra/toast.ts +0 -96
  318. package/src/theme/recipes/chakra/tooltip.ts +0 -40
  319. package/src/theme/recipes.ts +0 -46
  320. package/src/theme/semantic-tokens/colors.ts +0 -403
  321. package/src/theme/semantic-tokens/radii.ts +0 -7
  322. package/src/theme/semantic-tokens/shadows.ts +0 -52
  323. package/src/theme/slot-recipes.ts +0 -104
  324. package/src/theme/text-styles.ts +0 -39
  325. package/src/theme/tokens/animations.ts +0 -8
  326. package/src/theme/tokens/aspect-ratios.ts +0 -10
  327. package/src/theme/tokens/blurs.ts +0 -12
  328. package/src/theme/tokens/borders.ts +0 -9
  329. package/src/theme/tokens/colors.ts +0 -177
  330. package/src/theme/tokens/cursor.ts +0 -12
  331. package/src/theme/tokens/durations.ts +0 -11
  332. package/src/theme/tokens/easings.ts +0 -10
  333. package/src/theme/tokens/font-sizes.ts +0 -20
  334. package/src/theme/tokens/font-weights.ts +0 -13
  335. package/src/theme/tokens/fonts.ts +0 -15
  336. package/src/theme/tokens/keyframes.ts +0 -173
  337. package/src/theme/tokens/letter-spacing.ts +0 -9
  338. package/src/theme/tokens/line-heights.ts +0 -19
  339. package/src/theme/tokens/radius.ts +0 -18
  340. package/src/theme/tokens/sizes.ts +0 -71
  341. package/src/theme/tokens/spacing.ts +0 -38
  342. package/src/theme/tokens/z-indices.ts +0 -34
  343. package/src/theme/utils.ts +0 -46
  344. /package/dist/{chunk-KHRLZUV4.js → chunk-O2WVT2BP.js} +0 -0
@@ -1,55 +0,0 @@
1
- import { forwardRef } from 'react'
2
-
3
- import type { ButtonProps as ButtonPrimitiveProps } from '@chakra-ui/react'
4
- import {
5
- AbsoluteCenter,
6
- Button as ButtonPrimitive,
7
- Span,
8
- Spinner,
9
- } from '@chakra-ui/react'
10
-
11
- interface ButtonLoadingProps {
12
- loading?: boolean
13
- loadingText?: React.ReactNode
14
- }
15
-
16
- export interface ButtonProps extends ButtonPrimitiveProps, ButtonLoadingProps {}
17
-
18
- export const Button = forwardRef<HTMLButtonElement, ButtonProps>(
19
- function Button(props, ref) {
20
- const {
21
- loading,
22
- disabled,
23
- loadingText,
24
- children,
25
- variant = 'glass',
26
- colorPalette = variant === 'glass' ? 'accent' : 'gray',
27
- ...rest
28
- } = props
29
- return (
30
- <ButtonPrimitive
31
- colorPalette={colorPalette}
32
- disabled={loading || disabled}
33
- variant={variant as any}
34
- ref={ref}
35
- {...rest}
36
- >
37
- {loading && !loadingText ? (
38
- <>
39
- <AbsoluteCenter display="inline-flex">
40
- <Spinner size="inherit" color="inherit" />
41
- </AbsoluteCenter>
42
- <Span opacity={0}>{children}</Span>
43
- </>
44
- ) : loading && loadingText ? (
45
- <>
46
- <Spinner size="inherit" color="inherit" />
47
- {loadingText}
48
- </>
49
- ) : (
50
- children
51
- )}
52
- </ButtonPrimitive>
53
- )
54
- },
55
- )
@@ -1,2 +0,0 @@
1
- export { Button } from './button.tsx'
2
- export type { ButtonProps } from './button.tsx'
@@ -1,26 +0,0 @@
1
- import { forwardRef } from 'react'
2
-
3
- import { Checkbox as ChakraCheckbox } from '@chakra-ui/react'
4
-
5
- export interface CheckboxProps extends ChakraCheckbox.RootProps {
6
- icon?: React.ReactNode
7
- inputProps?: React.InputHTMLAttributes<HTMLInputElement>
8
- rootRef?: React.Ref<HTMLLabelElement>
9
- }
10
-
11
- export const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(
12
- function Checkbox(props, ref) {
13
- const { icon, children, inputProps, rootRef, ...rest } = props
14
- return (
15
- <ChakraCheckbox.Root ref={rootRef} {...rest}>
16
- <ChakraCheckbox.HiddenInput ref={ref} {...inputProps} />
17
- <ChakraCheckbox.Control>
18
- {icon || <ChakraCheckbox.Indicator />}
19
- </ChakraCheckbox.Control>
20
- {children != null && (
21
- <ChakraCheckbox.Label>{children}</ChakraCheckbox.Label>
22
- )}
23
- </ChakraCheckbox.Root>
24
- )
25
- },
26
- )
@@ -1,2 +0,0 @@
1
- export { Checkbox } from './checkbox.tsx'
2
- export type { CheckboxProps } from './checkbox.tsx'
@@ -1,12 +0,0 @@
1
- import React from 'react'
2
-
3
- import { CloseButton } from './close-button.tsx'
4
-
5
- export default {
6
- title: 'Components/CloseButton',
7
- component: CloseButton,
8
- }
9
-
10
- export const Default = {
11
- args: {},
12
- }
@@ -1,18 +0,0 @@
1
- import { forwardRef } from 'react'
2
-
3
- import type { ButtonProps } from '@chakra-ui/react'
4
- import { IconButton as ChakraIconButton } from '@chakra-ui/react'
5
-
6
- import { CloseIcon } from '../icons/icons.tsx'
7
-
8
- export interface CloseButtonProps extends ButtonProps {}
9
-
10
- export const CloseButton = forwardRef<HTMLButtonElement, CloseButtonProps>(
11
- function CloseButton(props, ref) {
12
- return (
13
- <ChakraIconButton variant="ghost" aria-label="Close" ref={ref} {...props}>
14
- {props.children ?? <CloseIcon />}
15
- </ChakraIconButton>
16
- )
17
- },
18
- )
@@ -1,2 +0,0 @@
1
- export { CloseButton } from './close-button.tsx'
2
- export type { CloseButtonProps } from './close-button.tsx'
@@ -1,17 +0,0 @@
1
- import { defineRecipe } from '@chakra-ui/react'
2
-
3
- export const commandRecipe = defineRecipe({
4
- className: 'sui-command',
5
- base: {
6
- display: 'inline-flex',
7
- gap: 1,
8
- '[role=tooltip] > &': {
9
- ms: 1,
10
- _before: {
11
- content: '"•"',
12
- me: 1,
13
- fontSize: 'xs',
14
- },
15
- },
16
- },
17
- })
@@ -1,47 +0,0 @@
1
- import React from 'react'
2
-
3
- import { Button, Center, Tooltip, VStack } from '@chakra-ui/react'
4
-
5
- import { Command } from './command'
6
-
7
- export default {
8
- title: 'Components/Command',
9
- decorators: [
10
- (Story: any) => (
11
- <Center height="100%">
12
- <Story />
13
- </Center>
14
- ),
15
- ],
16
- }
17
-
18
- export const Basic = {
19
- render: () => (
20
- <VStack>
21
- <Command>shift+X</Command>
22
- <Command>A then B</Command>
23
- <Command>alt or option</Command>
24
- </VStack>
25
- ),
26
- }
27
-
28
- export const TooltipCommand = {
29
- render: () => (
30
- <Tooltip.Root>
31
- <Tooltip.Trigger>
32
- <Button>Inbox</Button>
33
- </Tooltip.Trigger>
34
- <Tooltip.Positioner>
35
- <Tooltip.Content>
36
- <Tooltip.Arrow>
37
- <Tooltip.ArrowTip />
38
- </Tooltip.Arrow>
39
-
40
- <>
41
- Inbox <Command>G then I</Command>
42
- </>
43
- </Tooltip.Content>
44
- </Tooltip.Positioner>
45
- </Tooltip.Root>
46
- ),
47
- }
@@ -1,50 +0,0 @@
1
- import * as React from 'react'
2
-
3
- import { Kbd } from '@chakra-ui/react'
4
- import {
5
- type HTMLChakraProps,
6
- type RecipeProps,
7
- UnstyledProp,
8
- createRecipeContext,
9
- } from '@chakra-ui/react'
10
-
11
- const { withContext } = createRecipeContext({
12
- key: 'command',
13
- })
14
-
15
- export interface CommandBaseProps extends RecipeProps<'span'>, UnstyledProp {}
16
-
17
- export interface CommandProps
18
- extends HTMLChakraProps<'span', CommandBaseProps> {}
19
-
20
- const Key: React.FC<HTMLChakraProps<'span'>> = ({ children }) => {
21
- if (typeof children !== 'string') {
22
- return <>{children}</>
23
- }
24
-
25
- if (['then', 'or', '+'].includes(children)) {
26
- return <span>{children}</span>
27
- }
28
-
29
- return <Kbd>{children}</Kbd>
30
- }
31
-
32
- export const Command: React.FC<HTMLChakraProps<'span'>> = (props) => {
33
- const { children, ...rest } = props
34
-
35
- if (typeof children !== 'string') {
36
- return <>{children}</>
37
- }
38
-
39
- const keys = children.split(/\s|\+/)
40
-
41
- return (
42
- <CommandRoot {...rest}>
43
- {keys.map((key) => (
44
- <Key key={key}>{key}</Key>
45
- ))}
46
- </CommandRoot>
47
- )
48
- }
49
-
50
- const CommandRoot = withContext('span')
@@ -1 +0,0 @@
1
- export { Command } from './command'
@@ -1,67 +0,0 @@
1
- import { forwardRef } from 'react'
2
-
3
- import { Dialog as ChakraDialog, Portal } from '@chakra-ui/react'
4
-
5
- import { CloseButton } from '#components/close-button'
6
-
7
- export { DialogContext } from '@ark-ui/react/dialog'
8
-
9
- export interface DialogContentProps extends ChakraDialog.ContentProps {
10
- portalled?: boolean
11
- portalRef?: React.RefObject<HTMLElement>
12
- backdrop?: boolean
13
- }
14
-
15
- export const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(
16
- function DialogContent(props, ref) {
17
- const {
18
- children,
19
- portalled = true,
20
- portalRef,
21
- backdrop = true,
22
- ...rest
23
- } = props
24
-
25
- return (
26
- <Portal disabled={!portalled} container={portalRef}>
27
- {backdrop && <ChakraDialog.Backdrop />}
28
- <ChakraDialog.Positioner>
29
- <ChakraDialog.Content ref={ref} {...rest} asChild={false}>
30
- {children}
31
- </ChakraDialog.Content>
32
- </ChakraDialog.Positioner>
33
- </Portal>
34
- )
35
- },
36
- )
37
-
38
- export const DialogCloseTrigger = forwardRef<
39
- HTMLButtonElement,
40
- ChakraDialog.CloseTriggerProps
41
- >(function DialogCloseTrigger(props, ref) {
42
- return (
43
- <ChakraDialog.CloseTrigger
44
- position="absolute"
45
- top="2"
46
- insetEnd="2"
47
- {...props}
48
- asChild
49
- >
50
- <CloseButton size="sm" ref={ref}>
51
- {props.children}
52
- </CloseButton>
53
- </ChakraDialog.CloseTrigger>
54
- )
55
- })
56
-
57
- export type DialogRootProps = ChakraDialog.RootProps
58
-
59
- export const DialogRoot = ChakraDialog.Root
60
- export const DialogFooter = ChakraDialog.Footer
61
- export const DialogHeader = ChakraDialog.Header
62
- export const DialogBody = ChakraDialog.Body
63
- export const DialogBackdrop = ChakraDialog.Backdrop
64
- export const DialogTitle = ChakraDialog.Title
65
- export const DialogDescription = ChakraDialog.Description
66
- export const DialogTrigger = ChakraDialog.Trigger
67
- export const DialogActionTrigger = ChakraDialog.ActionTrigger
@@ -1 +0,0 @@
1
- export * as Dialog from './namespace.ts'
@@ -1,18 +0,0 @@
1
- export {
2
- DialogRoot as Root,
3
- DialogContent as Content,
4
- DialogCloseTrigger as CloseTrigger,
5
- DialogHeader as Header,
6
- DialogBody as Body,
7
- DialogFooter as Footer,
8
- DialogActionTrigger as ActionTrigger,
9
- DialogBackdrop as Backdrop,
10
- DialogDescription as Description,
11
- DialogTitle as Title,
12
- DialogTrigger as Trigger,
13
- DialogContext as Context,
14
- } from './dialog.tsx'
15
- export type {
16
- DialogContentProps as ContentProps,
17
- DialogRootProps as RootProps,
18
- } from './dialog.tsx'
@@ -1,57 +0,0 @@
1
- import { forwardRef } from 'react'
2
-
3
- import { DialogContext } from '@ark-ui/react/dialog'
4
- import { Drawer as ChakraDrawer, Portal } from '@chakra-ui/react'
5
-
6
- import { CloseButton } from '#components/close-button'
7
-
8
- export interface DrawerContentProps extends ChakraDrawer.ContentProps {
9
- portalled?: boolean
10
- portalRef?: React.RefObject<HTMLElement>
11
- offset?: ChakraDrawer.ContentProps['padding']
12
- }
13
-
14
- export const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(
15
- function DrawerContent(props, ref) {
16
- const { children, portalled = true, portalRef, offset, ...rest } = props
17
- return (
18
- <Portal disabled={!portalled} container={portalRef}>
19
- <ChakraDrawer.Positioner padding={offset}>
20
- <ChakraDrawer.Content ref={ref} {...rest} asChild={false}>
21
- {children}
22
- </ChakraDrawer.Content>
23
- </ChakraDrawer.Positioner>
24
- </Portal>
25
- )
26
- },
27
- )
28
-
29
- export const DrawerCloseTrigger = forwardRef<
30
- HTMLButtonElement,
31
- ChakraDrawer.CloseTriggerProps
32
- >(function DrawerCloseTrigger(props, ref) {
33
- return (
34
- <ChakraDrawer.CloseTrigger
35
- position="absolute"
36
- top="2"
37
- insetEnd="2"
38
- {...props}
39
- asChild
40
- >
41
- <CloseButton size="sm" ref={ref} />
42
- </ChakraDrawer.CloseTrigger>
43
- )
44
- })
45
-
46
- export const DrawerTrigger = ChakraDrawer.Trigger
47
- export const DrawerRoot = ChakraDrawer.Root
48
- export const DrawerFooter = ChakraDrawer.Footer
49
- export const DrawerHeader = ChakraDrawer.Header
50
- export const DrawerBody = ChakraDrawer.Body
51
- export const DrawerBackdrop = ChakraDrawer.Backdrop
52
- export const DrawerDescription = ChakraDrawer.Description
53
- export const DrawerTitle = ChakraDrawer.Title
54
- export const DrawerActionTrigger = ChakraDrawer.ActionTrigger
55
- export const DrawerContext = DialogContext
56
-
57
- export type DrawerRootProps = ChakraDrawer.RootProps
@@ -1,3 +0,0 @@
1
- import * as Drawer from './namespace.ts'
2
-
3
- export { Drawer }
@@ -1,19 +0,0 @@
1
- export {
2
- DrawerRoot as Root,
3
- DrawerContent as Content,
4
- DrawerCloseTrigger as CloseTrigger,
5
- DrawerHeader as Header,
6
- DrawerBody as Body,
7
- DrawerFooter as Footer,
8
- DrawerActionTrigger as ActionTrigger,
9
- DrawerBackdrop as Backdrop,
10
- DrawerDescription as Description,
11
- DrawerTitle as Title,
12
- DrawerTrigger as Trigger,
13
- DrawerContext as Context,
14
- } from './drawer.tsx'
15
-
16
- export type {
17
- DrawerContentProps as ContentProps,
18
- DrawerRootProps as RootProps,
19
- } from './drawer.tsx'
@@ -1,113 +0,0 @@
1
- import { defineSlotRecipe } from '@chakra-ui/react'
2
-
3
- export const gridListSlotRecipe = defineSlotRecipe({
4
- className: 'sui-grid-list',
5
- slots: ['root', 'item', 'header', 'icon'],
6
- base: {
7
- root: {
8
- py: 2,
9
- position: 'relative',
10
- },
11
- item: {
12
- display: 'flex',
13
- flexDirection: 'row',
14
- alignItems: 'center',
15
- justifyContent: 'space-between',
16
- flex: 1,
17
- cursor: 'pointer',
18
- userSelect: 'none',
19
- transitionProperty: 'common',
20
- transitionDuration: 'normal',
21
- borderRadius: 'inherit',
22
- outline: 'none',
23
- _hover: {
24
- bg: 'blackAlpha.50',
25
- _dark: {
26
- bg: 'whiteAlpha.50',
27
- },
28
- },
29
- _focusVisible: {
30
- boxShadow: 'outline',
31
- },
32
- _focus: {
33
- bg: 'blackAlpha.50',
34
- _dark: {
35
- bg: 'whiteAlpha.50',
36
- },
37
- },
38
- _active: {
39
- bg: 'blackAlpha.100',
40
- _dark: {
41
- bg: 'whiteAlpha.100',
42
- },
43
- },
44
- _disabled: {
45
- cursor: 'inherit',
46
- opacity: 0.5,
47
- _hover: {
48
- bg: 'transparent',
49
- _dark: {
50
- bg: 'transparent',
51
- },
52
- },
53
- _active: {
54
- bg: 'transparent',
55
- _dark: {
56
- bg: 'transparent',
57
- },
58
- },
59
- },
60
- },
61
- header: {
62
- display: 'flex',
63
- flexDirection: 'row',
64
- position: 'sticky',
65
- fontSize: 'md',
66
- fontWeight: 'semibold',
67
- color: 'muted',
68
- },
69
- icon: {
70
- display: 'flex',
71
- flexShrink: 0,
72
- },
73
- },
74
- variants: {
75
- size: {
76
- sm: {
77
- root: {
78
- fontSize: 'sm',
79
- },
80
- item: {
81
- py: 1,
82
- px: 1,
83
- },
84
- header: {
85
- py: 1,
86
- px: 1,
87
- },
88
- cell: {
89
- px: 1,
90
- },
91
- },
92
- md: {
93
- root: {
94
- fontSize: 'md',
95
- },
96
- item: {
97
- py: 2,
98
- px: 2,
99
- },
100
- header: {
101
- py: 2,
102
- px: 2,
103
- },
104
- cell: {
105
- px: 2,
106
- },
107
- },
108
- },
109
- },
110
- defaultVariants: {
111
- size: 'md',
112
- },
113
- })
@@ -1,57 +0,0 @@
1
- import { defineRecipe } from '@chakra-ui/react'
2
-
3
- export const iconBadgeRecipe = defineRecipe({
4
- className: 'sui-icon-badge',
5
- base: {
6
- display: 'inline-flex',
7
- alignItems: 'center',
8
- justifyContent: 'center',
9
- },
10
- variants: {
11
- variant: {
12
- outline: {
13
- borderWidth: '1px',
14
- borderColor: 'colorPalette.subtle',
15
- color: 'colorPalette.fg',
16
- },
17
- solid: {
18
- bg: 'colorPalette.solid',
19
- color: 'white',
20
- },
21
- subtle: {
22
- bg: 'colorPalette.subtle',
23
- color: 'colorPalette.fg',
24
- },
25
- },
26
- size: {
27
- sm: {
28
- borderRadius: 'sm',
29
- fontSize: '0.9em',
30
- w: 6,
31
- h: 6,
32
- },
33
- md: {
34
- borderRadius: 'md',
35
- fontSize: '1.1em',
36
- w: 8,
37
- h: 8,
38
- },
39
- lg: {
40
- borderRadius: 'md',
41
- fontSize: '1.3em',
42
- w: 10,
43
- h: 10,
44
- },
45
- xl: {
46
- borderRadius: 'md',
47
- fontSize: '1.5em',
48
- w: 12,
49
- h: 12,
50
- },
51
- },
52
- },
53
- defaultVariants: {
54
- variant: 'outline',
55
- size: 'md',
56
- },
57
- })
@@ -1,38 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/react'
2
- import { LuUser } from 'react-icons/lu'
3
-
4
- import { IconBadge } from './index.ts'
5
-
6
- export default {
7
- title: 'Components/IconBadge',
8
- component: IconBadge,
9
- } as Meta
10
-
11
- type Story = StoryObj<typeof IconBadge>
12
-
13
- export const Default: Story = {
14
- args: {
15
- icon: <LuUser />,
16
- },
17
- }
18
-
19
- export const SolidVariant: Story = {
20
- args: {
21
- variant: 'solid',
22
- icon: <LuUser />,
23
- },
24
- }
25
-
26
- export const SubtleVariant: Story = {
27
- args: {
28
- variant: 'subtle',
29
- icon: <LuUser />,
30
- },
31
- }
32
-
33
- export const Rounded: Story = {
34
- args: {
35
- borderRadius: 'full',
36
- icon: <LuUser />,
37
- },
38
- }
@@ -1,59 +0,0 @@
1
- 'use client'
2
-
3
- import * as React from 'react'
4
- import { cloneElement, isValidElement } from 'react'
5
-
6
- import {
7
- type HTMLChakraProps,
8
- RecipeProps,
9
- chakra,
10
- useRecipe,
11
- } from '@chakra-ui/react'
12
- import { cx } from '@saas-ui/core/utils'
13
-
14
- ////////////////////////////////////////////////////////////////////////////////////
15
-
16
- export interface IconBadgeProps
17
- extends HTMLChakraProps<'div'>,
18
- RecipeProps<'iconBadge'> {
19
- /**
20
- * The icon to display
21
- */
22
- icon: React.ReactNode
23
-
24
- /**
25
- * A11y: A label that describes the icon
26
- */
27
- 'aria-label'?: string
28
- }
29
-
30
- export const IconBadge = React.forwardRef<HTMLDivElement, IconBadgeProps>(
31
- (props, ref) => {
32
- const { icon, children, ...rest } = props
33
- const recipe = useRecipe({ key: 'iconBadge', recipe: props.recipe })
34
- const [variantProps, localProps] = recipe.splitVariantProps(rest)
35
- const styles = recipe(variantProps)
36
-
37
- /**
38
- * Passing the icon as prop or children should work
39
- */
40
- const element = icon || children
41
- const _children = isValidElement(element)
42
- ? cloneElement(element as any, {
43
- 'aria-hidden': true,
44
- focusable: false,
45
- })
46
- : null
47
-
48
- return (
49
- <chakra.div
50
- ref={ref}
51
- {...localProps}
52
- css={[styles, props.css]}
53
- className={cx(recipe.className, props.className)}
54
- >
55
- {_children}
56
- </chakra.div>
57
- )
58
- },
59
- )
@@ -1,2 +0,0 @@
1
- export { IconBadge } from './icon-badge'
2
- export type { IconBadgeProps } from './icon-badge'