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

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 (237) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/components/app-shell/index.d.cts +1 -1
  3. package/dist/components/app-shell/index.d.ts +1 -1
  4. package/dist/components/navbar/index.d.cts +3 -3
  5. package/dist/components/navbar/index.d.ts +3 -3
  6. package/dist/components/persona/index.d.cts +1 -1
  7. package/dist/components/persona/index.d.ts +1 -1
  8. package/dist/components/sidebar/index.d.cts +12 -12
  9. package/dist/components/sidebar/index.d.ts +12 -12
  10. package/dist/index.cjs +2 -12
  11. package/dist/index.js +2 -12
  12. package/package.json +4 -6
  13. package/src/components/app-shell/app-shell.recipe.ts +0 -52
  14. package/src/components/app-shell/app-shell.stories.tsx +0 -51
  15. package/src/components/app-shell/app-shell.tsx +0 -94
  16. package/src/components/app-shell/index.ts +0 -3
  17. package/src/components/breadcrumbs/breadcrumb.stories.tsx +0 -17
  18. package/src/components/breadcrumbs/breadcrumb.tsx +0 -36
  19. package/src/components/breadcrumbs/index.ts +0 -1
  20. package/src/components/breadcrumbs/namespace.ts +0 -8
  21. package/src/components/button/button.recipe.ts +0 -182
  22. package/src/components/button/button.stories.tsx +0 -99
  23. package/src/components/button/button.tsx +0 -55
  24. package/src/components/button/index.ts +0 -2
  25. package/src/components/checkbox/checkbox.tsx +0 -26
  26. package/src/components/checkbox/index.ts +0 -2
  27. package/src/components/close-button/close-button.stories.tsx +0 -12
  28. package/src/components/close-button/close-button.tsx +0 -18
  29. package/src/components/close-button/index.ts +0 -2
  30. package/src/components/command/command.recipe.ts +0 -17
  31. package/src/components/command/command.stories.tsx +0 -47
  32. package/src/components/command/command.tsx +0 -50
  33. package/src/components/command/index.ts +0 -1
  34. package/src/components/dialog/dialog.tsx +0 -67
  35. package/src/components/dialog/index.ts +0 -1
  36. package/src/components/dialog/namespace.ts +0 -18
  37. package/src/components/drawer/drawer.tsx +0 -57
  38. package/src/components/drawer/index.ts +0 -3
  39. package/src/components/drawer/namespace.ts +0 -19
  40. package/src/components/grid-list/grid-list.recipe.ts +0 -113
  41. package/src/components/icon-badge/icon-badge.recipe.ts +0 -57
  42. package/src/components/icon-badge/icon-badge.stories.tsx +0 -38
  43. package/src/components/icon-badge/icon-badge.tsx +0 -59
  44. package/src/components/icon-badge/index.ts +0 -2
  45. package/src/components/icons/create-icon.tsx +0 -41
  46. package/src/components/icons/icons.tsx +0 -119
  47. package/src/components/icons/index.ts +0 -1
  48. package/src/components/input-group/index.ts +0 -1
  49. package/src/components/input-group/input-group.tsx +0 -46
  50. package/src/components/link/index.ts +0 -2
  51. package/src/components/link/link.stories.tsx +0 -17
  52. package/src/components/link/link.test.tsx +0 -33
  53. package/src/components/link/link.tsx +0 -27
  54. package/src/components/loading-overlay/index.ts +0 -1
  55. package/src/components/loading-overlay/loading-overlay.recipe.ts +0 -61
  56. package/src/components/loading-overlay/loading-overlay.stories.tsx +0 -68
  57. package/src/components/loading-overlay/loading-overlay.tsx +0 -54
  58. package/src/components/loading-overlay/namespace.ts +0 -7
  59. package/src/components/navbar/index.ts +0 -1
  60. package/src/components/navbar/namespace.ts +0 -9
  61. package/src/components/navbar/navbar.recipe.ts +0 -109
  62. package/src/components/navbar/navbar.stories.tsx +0 -435
  63. package/src/components/navbar/navbar.test.tsx +0 -49
  64. package/src/components/navbar/navbar.tsx +0 -39
  65. package/src/components/number-input/index.ts +0 -2
  66. package/src/components/number-input/number-input.tsx +0 -41
  67. package/src/components/password-input/index.ts +0 -2
  68. package/src/components/password-input/password-input.tsx +0 -93
  69. package/src/components/persona/index.ts +0 -2
  70. package/src/components/persona/namespace.ts +0 -18
  71. package/src/components/persona/persona-primitive.tsx +0 -220
  72. package/src/components/persona/persona.recipe.ts +0 -94
  73. package/src/components/persona/persona.stories.tsx +0 -101
  74. package/src/components/persona/persona.tsx +0 -142
  75. package/src/components/pin-input/index.ts +0 -2
  76. package/src/components/pin-input/pin-input.tsx +0 -36
  77. package/src/components/radio/index.ts +0 -2
  78. package/src/components/radio/radio.tsx +0 -27
  79. package/src/components/search-input/index.ts +0 -2
  80. package/src/components/search-input/search-input.stories.tsx +0 -63
  81. package/src/components/search-input/search-input.tsx +0 -134
  82. package/src/components/select/index.ts +0 -1
  83. package/src/components/select/namespace.ts +0 -18
  84. package/src/components/select/select.tsx +0 -135
  85. package/src/components/sidebar/index.ts +0 -7
  86. package/src/components/sidebar/namespace.ts +0 -27
  87. package/src/components/sidebar/sidebar-item.recipe.ts +0 -65
  88. package/src/components/sidebar/sidebar.recipe.ts +0 -237
  89. package/src/components/sidebar/sidebar.stories.tsx +0 -903
  90. package/src/components/sidebar/sidebar.tsx +0 -208
  91. package/src/components/spinner/index.ts +0 -2
  92. package/src/components/spinner/spinner.stories.tsx +0 -19
  93. package/src/components/spinner/spinner.tsx +0 -21
  94. package/src/components/steps/index.ts +0 -1
  95. package/src/components/steps/namespace.ts +0 -16
  96. package/src/components/steps/steps.tsx +0 -82
  97. package/src/components/switch/index.ts +0 -3
  98. package/src/components/switch/switch.tsx +0 -39
  99. package/src/compositions/accordion.tsx +0 -47
  100. package/src/compositions/action-bar.tsx +0 -40
  101. package/src/compositions/alert.tsx +0 -51
  102. package/src/compositions/avatar.tsx +0 -74
  103. package/src/compositions/blockquote.tsx +0 -31
  104. package/src/compositions/checkbox-card.tsx +0 -57
  105. package/src/compositions/checkbox.tsx +0 -25
  106. package/src/compositions/clipboard.tsx +0 -107
  107. package/src/compositions/color-mode.tsx +0 -65
  108. package/src/compositions/data-list.tsx +0 -37
  109. package/src/compositions/empty-state.tsx +0 -34
  110. package/src/compositions/field.tsx +0 -33
  111. package/src/compositions/file-button.tsx +0 -166
  112. package/src/compositions/hover-card.tsx +0 -35
  113. package/src/compositions/link-button.tsx +0 -12
  114. package/src/compositions/menu.tsx +0 -108
  115. package/src/compositions/native-select.tsx +0 -57
  116. package/src/compositions/pagination.tsx +0 -207
  117. package/src/compositions/popover.tsx +0 -58
  118. package/src/compositions/progress-circle.tsx +0 -37
  119. package/src/compositions/progress.tsx +0 -40
  120. package/src/compositions/prose.tsx +0 -264
  121. package/src/compositions/provider.tsx +0 -12
  122. package/src/compositions/radio-card.tsx +0 -57
  123. package/src/compositions/radio.tsx +0 -24
  124. package/src/compositions/rating.tsx +0 -27
  125. package/src/compositions/segmented-control.tsx +0 -47
  126. package/src/compositions/skeleton.tsx +0 -44
  127. package/src/compositions/slider.tsx +0 -53
  128. package/src/compositions/stat.tsx +0 -75
  129. package/src/compositions/status.tsx +0 -29
  130. package/src/compositions/stepper-input.tsx +0 -49
  131. package/src/compositions/tag.tsx +0 -39
  132. package/src/compositions/timeline.tsx +0 -17
  133. package/src/compositions/toaster.tsx +0 -43
  134. package/src/compositions/toggle-tip.tsx +0 -62
  135. package/src/compositions/tooltip.tsx +0 -46
  136. package/src/index.ts +0 -7
  137. package/src/preset.ts +0 -9
  138. package/src/provider/index.ts +0 -4
  139. package/src/provider/sui-provider.tsx +0 -34
  140. package/src/provider/use-link.test.tsx +0 -60
  141. package/src/provider/use-link.tsx +0 -13
  142. package/src/styled-system/create-recipe-context.tsx +0 -91
  143. package/src/styled-system/create-slot-recipe-context.tsx +0 -188
  144. package/src/styled-system/empty.ts +0 -7
  145. package/src/styled-system/factory.types.ts +0 -11
  146. package/src/theme/animation-styles.ts +0 -53
  147. package/src/theme/breakpoints.ts +0 -11
  148. package/src/theme/conditions.ts +0 -26
  149. package/src/theme/fluid-font-sizes.ts +0 -65
  150. package/src/theme/global-css.ts +0 -94
  151. package/src/theme/index.ts +0 -72
  152. package/src/theme/layer-styles.ts +0 -116
  153. package/src/theme/recipes/chakra/accordion.ts +0 -145
  154. package/src/theme/recipes/chakra/action-bar.ts +0 -62
  155. package/src/theme/recipes/chakra/alert.ts +0 -157
  156. package/src/theme/recipes/chakra/avatar.ts +0 -141
  157. package/src/theme/recipes/chakra/badge.ts +0 -67
  158. package/src/theme/recipes/chakra/blockquote.ts +0 -83
  159. package/src/theme/recipes/chakra/breadcrumb.ts +0 -94
  160. package/src/theme/recipes/chakra/card.ts +0 -99
  161. package/src/theme/recipes/chakra/checkbox-card.ts +0 -212
  162. package/src/theme/recipes/chakra/checkbox.ts +0 -70
  163. package/src/theme/recipes/chakra/checkmark.ts +0 -83
  164. package/src/theme/recipes/chakra/code.ts +0 -17
  165. package/src/theme/recipes/chakra/collapsible.ts +0 -20
  166. package/src/theme/recipes/chakra/container.ts +0 -26
  167. package/src/theme/recipes/chakra/data-list.ts +0 -80
  168. package/src/theme/recipes/chakra/dialog.ts +0 -225
  169. package/src/theme/recipes/chakra/drawer.ts +0 -201
  170. package/src/theme/recipes/chakra/editable.ts +0 -88
  171. package/src/theme/recipes/chakra/empty-state.ts +0 -88
  172. package/src/theme/recipes/chakra/field.ts +0 -68
  173. package/src/theme/recipes/chakra/fieldset.ts +0 -62
  174. package/src/theme/recipes/chakra/file-upload.ts +0 -96
  175. package/src/theme/recipes/chakra/heading.ts +0 -27
  176. package/src/theme/recipes/chakra/hover-card.ts +0 -68
  177. package/src/theme/recipes/chakra/icon.ts +0 -30
  178. package/src/theme/recipes/chakra/input-addon.ts +0 -40
  179. package/src/theme/recipes/chakra/input.ts +0 -96
  180. package/src/theme/recipes/chakra/kbd.ts +0 -60
  181. package/src/theme/recipes/chakra/link.ts +0 -37
  182. package/src/theme/recipes/chakra/list.ts +0 -67
  183. package/src/theme/recipes/chakra/mark.ts +0 -27
  184. package/src/theme/recipes/chakra/menu.ts +0 -124
  185. package/src/theme/recipes/chakra/native-select.ts +0 -140
  186. package/src/theme/recipes/chakra/number-input.ts +0 -115
  187. package/src/theme/recipes/chakra/pin-input.ts +0 -27
  188. package/src/theme/recipes/chakra/popover.ts +0 -86
  189. package/src/theme/recipes/chakra/progress-circle.ts +0 -94
  190. package/src/theme/recipes/chakra/progress.ts +0 -127
  191. package/src/theme/recipes/chakra/radio-card.ts +0 -220
  192. package/src/theme/recipes/chakra/radio-group.ts +0 -72
  193. package/src/theme/recipes/chakra/radiomark.ts +0 -107
  194. package/src/theme/recipes/chakra/rating-group.ts +0 -94
  195. package/src/theme/recipes/chakra/segment-group.ts +0 -117
  196. package/src/theme/recipes/chakra/select.ts +0 -282
  197. package/src/theme/recipes/chakra/separator.ts +0 -51
  198. package/src/theme/recipes/chakra/skeleton.ts +0 -53
  199. package/src/theme/recipes/chakra/skip-nav-link.ts +0 -34
  200. package/src/theme/recipes/chakra/slider.ts +0 -178
  201. package/src/theme/recipes/chakra/spinner.ts +0 -32
  202. package/src/theme/recipes/chakra/stat.ts +0 -79
  203. package/src/theme/recipes/chakra/status.ts +0 -48
  204. package/src/theme/recipes/chakra/steps.ts +0 -218
  205. package/src/theme/recipes/chakra/switch.ts +0 -167
  206. package/src/theme/recipes/chakra/table.ts +0 -172
  207. package/src/theme/recipes/chakra/tabs.ts +0 -280
  208. package/src/theme/recipes/chakra/tag.ts +0 -131
  209. package/src/theme/recipes/chakra/textarea.ts +0 -88
  210. package/src/theme/recipes/chakra/timeline.ts +0 -138
  211. package/src/theme/recipes/chakra/toast.ts +0 -96
  212. package/src/theme/recipes/chakra/tooltip.ts +0 -40
  213. package/src/theme/recipes.ts +0 -46
  214. package/src/theme/semantic-tokens/colors.ts +0 -403
  215. package/src/theme/semantic-tokens/radii.ts +0 -7
  216. package/src/theme/semantic-tokens/shadows.ts +0 -52
  217. package/src/theme/slot-recipes.ts +0 -104
  218. package/src/theme/text-styles.ts +0 -39
  219. package/src/theme/tokens/animations.ts +0 -8
  220. package/src/theme/tokens/aspect-ratios.ts +0 -10
  221. package/src/theme/tokens/blurs.ts +0 -12
  222. package/src/theme/tokens/borders.ts +0 -9
  223. package/src/theme/tokens/colors.ts +0 -177
  224. package/src/theme/tokens/cursor.ts +0 -12
  225. package/src/theme/tokens/durations.ts +0 -11
  226. package/src/theme/tokens/easings.ts +0 -10
  227. package/src/theme/tokens/font-sizes.ts +0 -20
  228. package/src/theme/tokens/font-weights.ts +0 -13
  229. package/src/theme/tokens/fonts.ts +0 -15
  230. package/src/theme/tokens/keyframes.ts +0 -173
  231. package/src/theme/tokens/letter-spacing.ts +0 -9
  232. package/src/theme/tokens/line-heights.ts +0 -19
  233. package/src/theme/tokens/radius.ts +0 -18
  234. package/src/theme/tokens/sizes.ts +0 -71
  235. package/src/theme/tokens/spacing.ts +0 -38
  236. package/src/theme/tokens/z-indices.ts +0 -34
  237. package/src/theme/utils.ts +0 -46
@@ -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'