@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.
- package/CHANGELOG.md +12 -0
- package/dist/components/app-shell/index.d.cts +1 -1
- package/dist/components/app-shell/index.d.ts +1 -1
- package/dist/components/navbar/index.d.cts +3 -3
- package/dist/components/navbar/index.d.ts +3 -3
- package/dist/components/persona/index.d.cts +1 -1
- package/dist/components/persona/index.d.ts +1 -1
- package/dist/components/sidebar/index.d.cts +12 -12
- package/dist/components/sidebar/index.d.ts +12 -12
- package/dist/index.cjs +2 -12
- package/dist/index.js +2 -12
- package/package.json +4 -6
- package/src/components/app-shell/app-shell.recipe.ts +0 -52
- package/src/components/app-shell/app-shell.stories.tsx +0 -51
- package/src/components/app-shell/app-shell.tsx +0 -94
- package/src/components/app-shell/index.ts +0 -3
- package/src/components/breadcrumbs/breadcrumb.stories.tsx +0 -17
- package/src/components/breadcrumbs/breadcrumb.tsx +0 -36
- package/src/components/breadcrumbs/index.ts +0 -1
- package/src/components/breadcrumbs/namespace.ts +0 -8
- package/src/components/button/button.recipe.ts +0 -182
- package/src/components/button/button.stories.tsx +0 -99
- package/src/components/button/button.tsx +0 -55
- package/src/components/button/index.ts +0 -2
- package/src/components/checkbox/checkbox.tsx +0 -26
- package/src/components/checkbox/index.ts +0 -2
- package/src/components/close-button/close-button.stories.tsx +0 -12
- package/src/components/close-button/close-button.tsx +0 -18
- package/src/components/close-button/index.ts +0 -2
- package/src/components/command/command.recipe.ts +0 -17
- package/src/components/command/command.stories.tsx +0 -47
- package/src/components/command/command.tsx +0 -50
- package/src/components/command/index.ts +0 -1
- package/src/components/dialog/dialog.tsx +0 -67
- package/src/components/dialog/index.ts +0 -1
- package/src/components/dialog/namespace.ts +0 -18
- package/src/components/drawer/drawer.tsx +0 -57
- package/src/components/drawer/index.ts +0 -3
- package/src/components/drawer/namespace.ts +0 -19
- package/src/components/grid-list/grid-list.recipe.ts +0 -113
- package/src/components/icon-badge/icon-badge.recipe.ts +0 -57
- package/src/components/icon-badge/icon-badge.stories.tsx +0 -38
- package/src/components/icon-badge/icon-badge.tsx +0 -59
- package/src/components/icon-badge/index.ts +0 -2
- package/src/components/icons/create-icon.tsx +0 -41
- package/src/components/icons/icons.tsx +0 -119
- package/src/components/icons/index.ts +0 -1
- package/src/components/input-group/index.ts +0 -1
- package/src/components/input-group/input-group.tsx +0 -46
- package/src/components/link/index.ts +0 -2
- package/src/components/link/link.stories.tsx +0 -17
- package/src/components/link/link.test.tsx +0 -33
- package/src/components/link/link.tsx +0 -27
- package/src/components/loading-overlay/index.ts +0 -1
- package/src/components/loading-overlay/loading-overlay.recipe.ts +0 -61
- package/src/components/loading-overlay/loading-overlay.stories.tsx +0 -68
- package/src/components/loading-overlay/loading-overlay.tsx +0 -54
- package/src/components/loading-overlay/namespace.ts +0 -7
- package/src/components/navbar/index.ts +0 -1
- package/src/components/navbar/namespace.ts +0 -9
- package/src/components/navbar/navbar.recipe.ts +0 -109
- package/src/components/navbar/navbar.stories.tsx +0 -435
- package/src/components/navbar/navbar.test.tsx +0 -49
- package/src/components/navbar/navbar.tsx +0 -39
- package/src/components/number-input/index.ts +0 -2
- package/src/components/number-input/number-input.tsx +0 -41
- package/src/components/password-input/index.ts +0 -2
- package/src/components/password-input/password-input.tsx +0 -93
- package/src/components/persona/index.ts +0 -2
- package/src/components/persona/namespace.ts +0 -18
- package/src/components/persona/persona-primitive.tsx +0 -220
- package/src/components/persona/persona.recipe.ts +0 -94
- package/src/components/persona/persona.stories.tsx +0 -101
- package/src/components/persona/persona.tsx +0 -142
- package/src/components/pin-input/index.ts +0 -2
- package/src/components/pin-input/pin-input.tsx +0 -36
- package/src/components/radio/index.ts +0 -2
- package/src/components/radio/radio.tsx +0 -27
- package/src/components/search-input/index.ts +0 -2
- package/src/components/search-input/search-input.stories.tsx +0 -63
- package/src/components/search-input/search-input.tsx +0 -134
- package/src/components/select/index.ts +0 -1
- package/src/components/select/namespace.ts +0 -18
- package/src/components/select/select.tsx +0 -135
- package/src/components/sidebar/index.ts +0 -7
- package/src/components/sidebar/namespace.ts +0 -27
- package/src/components/sidebar/sidebar-item.recipe.ts +0 -65
- package/src/components/sidebar/sidebar.recipe.ts +0 -237
- package/src/components/sidebar/sidebar.stories.tsx +0 -903
- package/src/components/sidebar/sidebar.tsx +0 -208
- package/src/components/spinner/index.ts +0 -2
- package/src/components/spinner/spinner.stories.tsx +0 -19
- package/src/components/spinner/spinner.tsx +0 -21
- package/src/components/steps/index.ts +0 -1
- package/src/components/steps/namespace.ts +0 -16
- package/src/components/steps/steps.tsx +0 -82
- package/src/components/switch/index.ts +0 -3
- package/src/components/switch/switch.tsx +0 -39
- package/src/compositions/accordion.tsx +0 -47
- package/src/compositions/action-bar.tsx +0 -40
- package/src/compositions/alert.tsx +0 -51
- package/src/compositions/avatar.tsx +0 -74
- package/src/compositions/blockquote.tsx +0 -31
- package/src/compositions/checkbox-card.tsx +0 -57
- package/src/compositions/checkbox.tsx +0 -25
- package/src/compositions/clipboard.tsx +0 -107
- package/src/compositions/color-mode.tsx +0 -65
- package/src/compositions/data-list.tsx +0 -37
- package/src/compositions/empty-state.tsx +0 -34
- package/src/compositions/field.tsx +0 -33
- package/src/compositions/file-button.tsx +0 -166
- package/src/compositions/hover-card.tsx +0 -35
- package/src/compositions/link-button.tsx +0 -12
- package/src/compositions/menu.tsx +0 -108
- package/src/compositions/native-select.tsx +0 -57
- package/src/compositions/pagination.tsx +0 -207
- package/src/compositions/popover.tsx +0 -58
- package/src/compositions/progress-circle.tsx +0 -37
- package/src/compositions/progress.tsx +0 -40
- package/src/compositions/prose.tsx +0 -264
- package/src/compositions/provider.tsx +0 -12
- package/src/compositions/radio-card.tsx +0 -57
- package/src/compositions/radio.tsx +0 -24
- package/src/compositions/rating.tsx +0 -27
- package/src/compositions/segmented-control.tsx +0 -47
- package/src/compositions/skeleton.tsx +0 -44
- package/src/compositions/slider.tsx +0 -53
- package/src/compositions/stat.tsx +0 -75
- package/src/compositions/status.tsx +0 -29
- package/src/compositions/stepper-input.tsx +0 -49
- package/src/compositions/tag.tsx +0 -39
- package/src/compositions/timeline.tsx +0 -17
- package/src/compositions/toaster.tsx +0 -43
- package/src/compositions/toggle-tip.tsx +0 -62
- package/src/compositions/tooltip.tsx +0 -46
- package/src/index.ts +0 -7
- package/src/preset.ts +0 -9
- package/src/provider/index.ts +0 -4
- package/src/provider/sui-provider.tsx +0 -34
- package/src/provider/use-link.test.tsx +0 -60
- package/src/provider/use-link.tsx +0 -13
- package/src/styled-system/create-recipe-context.tsx +0 -91
- package/src/styled-system/create-slot-recipe-context.tsx +0 -188
- package/src/styled-system/empty.ts +0 -7
- package/src/styled-system/factory.types.ts +0 -11
- package/src/theme/animation-styles.ts +0 -53
- package/src/theme/breakpoints.ts +0 -11
- package/src/theme/conditions.ts +0 -26
- package/src/theme/fluid-font-sizes.ts +0 -65
- package/src/theme/global-css.ts +0 -94
- package/src/theme/index.ts +0 -72
- package/src/theme/layer-styles.ts +0 -116
- package/src/theme/recipes/chakra/accordion.ts +0 -145
- package/src/theme/recipes/chakra/action-bar.ts +0 -62
- package/src/theme/recipes/chakra/alert.ts +0 -157
- package/src/theme/recipes/chakra/avatar.ts +0 -141
- package/src/theme/recipes/chakra/badge.ts +0 -67
- package/src/theme/recipes/chakra/blockquote.ts +0 -83
- package/src/theme/recipes/chakra/breadcrumb.ts +0 -94
- package/src/theme/recipes/chakra/card.ts +0 -99
- package/src/theme/recipes/chakra/checkbox-card.ts +0 -212
- package/src/theme/recipes/chakra/checkbox.ts +0 -70
- package/src/theme/recipes/chakra/checkmark.ts +0 -83
- package/src/theme/recipes/chakra/code.ts +0 -17
- package/src/theme/recipes/chakra/collapsible.ts +0 -20
- package/src/theme/recipes/chakra/container.ts +0 -26
- package/src/theme/recipes/chakra/data-list.ts +0 -80
- package/src/theme/recipes/chakra/dialog.ts +0 -225
- package/src/theme/recipes/chakra/drawer.ts +0 -201
- package/src/theme/recipes/chakra/editable.ts +0 -88
- package/src/theme/recipes/chakra/empty-state.ts +0 -88
- package/src/theme/recipes/chakra/field.ts +0 -68
- package/src/theme/recipes/chakra/fieldset.ts +0 -62
- package/src/theme/recipes/chakra/file-upload.ts +0 -96
- package/src/theme/recipes/chakra/heading.ts +0 -27
- package/src/theme/recipes/chakra/hover-card.ts +0 -68
- package/src/theme/recipes/chakra/icon.ts +0 -30
- package/src/theme/recipes/chakra/input-addon.ts +0 -40
- package/src/theme/recipes/chakra/input.ts +0 -96
- package/src/theme/recipes/chakra/kbd.ts +0 -60
- package/src/theme/recipes/chakra/link.ts +0 -37
- package/src/theme/recipes/chakra/list.ts +0 -67
- package/src/theme/recipes/chakra/mark.ts +0 -27
- package/src/theme/recipes/chakra/menu.ts +0 -124
- package/src/theme/recipes/chakra/native-select.ts +0 -140
- package/src/theme/recipes/chakra/number-input.ts +0 -115
- package/src/theme/recipes/chakra/pin-input.ts +0 -27
- package/src/theme/recipes/chakra/popover.ts +0 -86
- package/src/theme/recipes/chakra/progress-circle.ts +0 -94
- package/src/theme/recipes/chakra/progress.ts +0 -127
- package/src/theme/recipes/chakra/radio-card.ts +0 -220
- package/src/theme/recipes/chakra/radio-group.ts +0 -72
- package/src/theme/recipes/chakra/radiomark.ts +0 -107
- package/src/theme/recipes/chakra/rating-group.ts +0 -94
- package/src/theme/recipes/chakra/segment-group.ts +0 -117
- package/src/theme/recipes/chakra/select.ts +0 -282
- package/src/theme/recipes/chakra/separator.ts +0 -51
- package/src/theme/recipes/chakra/skeleton.ts +0 -53
- package/src/theme/recipes/chakra/skip-nav-link.ts +0 -34
- package/src/theme/recipes/chakra/slider.ts +0 -178
- package/src/theme/recipes/chakra/spinner.ts +0 -32
- package/src/theme/recipes/chakra/stat.ts +0 -79
- package/src/theme/recipes/chakra/status.ts +0 -48
- package/src/theme/recipes/chakra/steps.ts +0 -218
- package/src/theme/recipes/chakra/switch.ts +0 -167
- package/src/theme/recipes/chakra/table.ts +0 -172
- package/src/theme/recipes/chakra/tabs.ts +0 -280
- package/src/theme/recipes/chakra/tag.ts +0 -131
- package/src/theme/recipes/chakra/textarea.ts +0 -88
- package/src/theme/recipes/chakra/timeline.ts +0 -138
- package/src/theme/recipes/chakra/toast.ts +0 -96
- package/src/theme/recipes/chakra/tooltip.ts +0 -40
- package/src/theme/recipes.ts +0 -46
- package/src/theme/semantic-tokens/colors.ts +0 -403
- package/src/theme/semantic-tokens/radii.ts +0 -7
- package/src/theme/semantic-tokens/shadows.ts +0 -52
- package/src/theme/slot-recipes.ts +0 -104
- package/src/theme/text-styles.ts +0 -39
- package/src/theme/tokens/animations.ts +0 -8
- package/src/theme/tokens/aspect-ratios.ts +0 -10
- package/src/theme/tokens/blurs.ts +0 -12
- package/src/theme/tokens/borders.ts +0 -9
- package/src/theme/tokens/colors.ts +0 -177
- package/src/theme/tokens/cursor.ts +0 -12
- package/src/theme/tokens/durations.ts +0 -11
- package/src/theme/tokens/easings.ts +0 -10
- package/src/theme/tokens/font-sizes.ts +0 -20
- package/src/theme/tokens/font-weights.ts +0 -13
- package/src/theme/tokens/fonts.ts +0 -15
- package/src/theme/tokens/keyframes.ts +0 -173
- package/src/theme/tokens/letter-spacing.ts +0 -9
- package/src/theme/tokens/line-heights.ts +0 -19
- package/src/theme/tokens/radius.ts +0 -18
- package/src/theme/tokens/sizes.ts +0 -71
- package/src/theme/tokens/spacing.ts +0 -38
- package/src/theme/tokens/z-indices.ts +0 -34
- package/src/theme/utils.ts +0 -46
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { RadioCard } from "@chakra-ui/react"
|
|
2
|
-
import { Fragment, forwardRef } from "react"
|
|
3
|
-
|
|
4
|
-
interface RadioCardItemProps extends RadioCard.ItemProps {
|
|
5
|
-
icon?: React.ReactElement
|
|
6
|
-
label?: React.ReactNode
|
|
7
|
-
description?: React.ReactNode
|
|
8
|
-
addon?: React.ReactNode
|
|
9
|
-
indicator?: React.ReactNode | null
|
|
10
|
-
indicatorPlacement?: "start" | "end" | "inside"
|
|
11
|
-
inputProps?: React.InputHTMLAttributes<HTMLInputElement>
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export const RadioCardItem = forwardRef<HTMLInputElement, RadioCardItemProps>(
|
|
15
|
-
function RadioCardItem(props, ref) {
|
|
16
|
-
const {
|
|
17
|
-
inputProps,
|
|
18
|
-
label,
|
|
19
|
-
description,
|
|
20
|
-
addon,
|
|
21
|
-
icon,
|
|
22
|
-
indicator = <RadioCard.ItemIndicator />,
|
|
23
|
-
indicatorPlacement = "end",
|
|
24
|
-
...rest
|
|
25
|
-
} = props
|
|
26
|
-
|
|
27
|
-
const hasContent = label || description || icon
|
|
28
|
-
const ContentWrapper = indicator ? RadioCard.ItemContent : Fragment
|
|
29
|
-
|
|
30
|
-
return (
|
|
31
|
-
<RadioCard.Item {...rest}>
|
|
32
|
-
<RadioCard.ItemHiddenInput ref={ref} {...inputProps} />
|
|
33
|
-
<RadioCard.ItemControl>
|
|
34
|
-
{indicatorPlacement === "start" && indicator}
|
|
35
|
-
{hasContent && (
|
|
36
|
-
<ContentWrapper>
|
|
37
|
-
{icon}
|
|
38
|
-
{label && <RadioCard.ItemText>{label}</RadioCard.ItemText>}
|
|
39
|
-
{description && (
|
|
40
|
-
<RadioCard.ItemDescription>
|
|
41
|
-
{description}
|
|
42
|
-
</RadioCard.ItemDescription>
|
|
43
|
-
)}
|
|
44
|
-
{indicatorPlacement === "inside" && indicator}
|
|
45
|
-
</ContentWrapper>
|
|
46
|
-
)}
|
|
47
|
-
{indicatorPlacement === "end" && indicator}
|
|
48
|
-
</RadioCard.ItemControl>
|
|
49
|
-
{addon && <RadioCard.ItemAddon>{addon}</RadioCard.ItemAddon>}
|
|
50
|
-
</RadioCard.Item>
|
|
51
|
-
)
|
|
52
|
-
},
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
export const RadioCardRoot = RadioCard.Root
|
|
56
|
-
export const RadioCardLabel = RadioCard.Label
|
|
57
|
-
export const RadioCardItemIndicator = RadioCard.ItemIndicator
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { RadioGroup as ChakraRadioGroup } from "@chakra-ui/react"
|
|
2
|
-
import { forwardRef } from "react"
|
|
3
|
-
|
|
4
|
-
export interface RadioProps extends ChakraRadioGroup.ItemProps {
|
|
5
|
-
rootRef?: React.Ref<HTMLDivElement>
|
|
6
|
-
inputProps?: React.InputHTMLAttributes<HTMLInputElement>
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export const Radio = forwardRef<HTMLInputElement, RadioProps>(
|
|
10
|
-
function Radio(props, ref) {
|
|
11
|
-
const { children, inputProps, rootRef, ...rest } = props
|
|
12
|
-
return (
|
|
13
|
-
<ChakraRadioGroup.Item ref={rootRef} {...rest}>
|
|
14
|
-
<ChakraRadioGroup.ItemHiddenInput ref={ref} {...inputProps} />
|
|
15
|
-
<ChakraRadioGroup.ItemIndicator />
|
|
16
|
-
{children && (
|
|
17
|
-
<ChakraRadioGroup.ItemText>{children}</ChakraRadioGroup.ItemText>
|
|
18
|
-
)}
|
|
19
|
-
</ChakraRadioGroup.Item>
|
|
20
|
-
)
|
|
21
|
-
},
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
export const RadioGroup = ChakraRadioGroup.Root
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { RatingGroup } from "@chakra-ui/react"
|
|
2
|
-
import { forwardRef } from "react"
|
|
3
|
-
|
|
4
|
-
export interface RatingProps extends RatingGroup.RootProps {
|
|
5
|
-
icon?: React.ReactElement
|
|
6
|
-
count?: number
|
|
7
|
-
label?: React.ReactNode
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const Rating = forwardRef<HTMLDivElement, RatingProps>(
|
|
11
|
-
function Rating(props, ref) {
|
|
12
|
-
const { icon, count = 5, label, ...rest } = props
|
|
13
|
-
return (
|
|
14
|
-
<RatingGroup.Root ref={ref} count={count} {...rest}>
|
|
15
|
-
{label && <RatingGroup.Label>{label}</RatingGroup.Label>}
|
|
16
|
-
<RatingGroup.HiddenInput />
|
|
17
|
-
<RatingGroup.Control>
|
|
18
|
-
{Array.from({ length: count }).map((_, index) => (
|
|
19
|
-
<RatingGroup.Item key={index} index={index + 1}>
|
|
20
|
-
<RatingGroup.ItemIndicator icon={icon} />
|
|
21
|
-
</RatingGroup.Item>
|
|
22
|
-
))}
|
|
23
|
-
</RatingGroup.Control>
|
|
24
|
-
</RatingGroup.Root>
|
|
25
|
-
)
|
|
26
|
-
},
|
|
27
|
-
)
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use client"
|
|
2
|
-
|
|
3
|
-
import { For, SegmentGroup } from "@chakra-ui/react"
|
|
4
|
-
import { forwardRef, useMemo } from "react"
|
|
5
|
-
|
|
6
|
-
interface Item {
|
|
7
|
-
value: string
|
|
8
|
-
label: React.ReactNode
|
|
9
|
-
disabled?: boolean
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface SegmentedControlProps extends SegmentGroup.RootProps {
|
|
13
|
-
items: Array<string | Item>
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function normalize(items: Array<string | Item>): Item[] {
|
|
17
|
-
return items.map((item) => {
|
|
18
|
-
if (typeof item === "string") return { value: item, label: item }
|
|
19
|
-
return item
|
|
20
|
-
})
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export const SegmentedControl = forwardRef<
|
|
24
|
-
HTMLDivElement,
|
|
25
|
-
SegmentedControlProps
|
|
26
|
-
>(function SegmentedControl(props, ref) {
|
|
27
|
-
const { items, ...rest } = props
|
|
28
|
-
const data = useMemo(() => normalize(items), [items])
|
|
29
|
-
|
|
30
|
-
return (
|
|
31
|
-
<SegmentGroup.Root ref={ref} {...rest}>
|
|
32
|
-
<SegmentGroup.Indicator />
|
|
33
|
-
<For each={data}>
|
|
34
|
-
{(item) => (
|
|
35
|
-
<SegmentGroup.Item
|
|
36
|
-
key={item.value}
|
|
37
|
-
value={item.value}
|
|
38
|
-
disabled={item.disabled}
|
|
39
|
-
>
|
|
40
|
-
<SegmentGroup.ItemText>{item.label}</SegmentGroup.ItemText>
|
|
41
|
-
<SegmentGroup.ItemHiddenInput />
|
|
42
|
-
</SegmentGroup.Item>
|
|
43
|
-
)}
|
|
44
|
-
</For>
|
|
45
|
-
</SegmentGroup.Root>
|
|
46
|
-
)
|
|
47
|
-
})
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
SkeletonProps as ChakraSkeletonProps,
|
|
3
|
-
CircleProps,
|
|
4
|
-
} from "@chakra-ui/react"
|
|
5
|
-
import { Skeleton as ChakraSkeleton, Circle, Stack } from "@chakra-ui/react"
|
|
6
|
-
import { forwardRef } from "react"
|
|
7
|
-
|
|
8
|
-
export interface SkeletonCircleProps extends ChakraSkeletonProps {
|
|
9
|
-
size?: CircleProps["size"]
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export const SkeletonCircle = (props: SkeletonCircleProps) => {
|
|
13
|
-
const { size, ...rest } = props
|
|
14
|
-
return (
|
|
15
|
-
<Circle size={size} asChild>
|
|
16
|
-
<ChakraSkeleton {...rest} />
|
|
17
|
-
</Circle>
|
|
18
|
-
)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface SkeletonTextProps extends ChakraSkeletonProps {
|
|
22
|
-
noOfLines?: number
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(
|
|
26
|
-
function SkeletonText(props, ref) {
|
|
27
|
-
const { noOfLines = 3, gap, ...rest } = props
|
|
28
|
-
return (
|
|
29
|
-
<Stack gap={gap} width="full" ref={ref}>
|
|
30
|
-
{Array.from({ length: noOfLines }).map((_, index) => (
|
|
31
|
-
<ChakraSkeleton
|
|
32
|
-
height="4"
|
|
33
|
-
key={index}
|
|
34
|
-
{...props}
|
|
35
|
-
_last={{ maxW: "80%" }}
|
|
36
|
-
{...rest}
|
|
37
|
-
/>
|
|
38
|
-
))}
|
|
39
|
-
</Stack>
|
|
40
|
-
)
|
|
41
|
-
},
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
export const Skeleton = ChakraSkeleton
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Slider as ChakraSlider } from "@chakra-ui/react"
|
|
2
|
-
import { forwardRef } from "react"
|
|
3
|
-
|
|
4
|
-
export interface SliderProps extends ChakraSlider.RootProps {
|
|
5
|
-
marks?: Array<number | { value: number; label: React.ReactNode }>
|
|
6
|
-
label?: React.ReactNode
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export const Slider = forwardRef<HTMLDivElement, SliderProps>(
|
|
10
|
-
function Slider(props, ref) {
|
|
11
|
-
const { marks: marksProp, label, ...rest } = props
|
|
12
|
-
const value = props.defaultValue ?? props.value
|
|
13
|
-
|
|
14
|
-
const marks = marksProp?.map((mark) => {
|
|
15
|
-
if (typeof mark === "number") return { value: mark, label: undefined }
|
|
16
|
-
return mark
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
const hasMarkLabel = !!marks?.some((mark) => mark.label)
|
|
20
|
-
|
|
21
|
-
return (
|
|
22
|
-
<ChakraSlider.Root ref={ref} thumbAlignment="center" {...rest}>
|
|
23
|
-
{label && (
|
|
24
|
-
<ChakraSlider.Label fontWeight="medium">{label}</ChakraSlider.Label>
|
|
25
|
-
)}
|
|
26
|
-
<ChakraSlider.Control mb={hasMarkLabel ? "4" : undefined}>
|
|
27
|
-
<ChakraSlider.Track>
|
|
28
|
-
<ChakraSlider.Range />
|
|
29
|
-
</ChakraSlider.Track>
|
|
30
|
-
{value?.map((_, index) => (
|
|
31
|
-
<ChakraSlider.Thumb key={index} index={index}>
|
|
32
|
-
<ChakraSlider.HiddenInput />
|
|
33
|
-
</ChakraSlider.Thumb>
|
|
34
|
-
))}
|
|
35
|
-
</ChakraSlider.Control>
|
|
36
|
-
{marks?.length && (
|
|
37
|
-
<ChakraSlider.MarkerGroup>
|
|
38
|
-
{marks.map((mark, index) => {
|
|
39
|
-
const value = typeof mark === "number" ? mark : mark.value
|
|
40
|
-
const label = typeof mark === "number" ? undefined : mark.label
|
|
41
|
-
return (
|
|
42
|
-
<ChakraSlider.Marker key={index} value={value}>
|
|
43
|
-
<ChakraSlider.MarkerIndicator />
|
|
44
|
-
{label}
|
|
45
|
-
</ChakraSlider.Marker>
|
|
46
|
-
)
|
|
47
|
-
})}
|
|
48
|
-
</ChakraSlider.MarkerGroup>
|
|
49
|
-
)}
|
|
50
|
-
</ChakraSlider.Root>
|
|
51
|
-
)
|
|
52
|
-
},
|
|
53
|
-
)
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Badge,
|
|
3
|
-
type BadgeProps,
|
|
4
|
-
Stat as ChakraStat,
|
|
5
|
-
FormatNumber,
|
|
6
|
-
IconButton,
|
|
7
|
-
} from "@chakra-ui/react"
|
|
8
|
-
import { ToggleTip } from "compositions/ui/toggle-tip"
|
|
9
|
-
import { forwardRef } from "react"
|
|
10
|
-
import { HiOutlineInformationCircle } from "react-icons/hi"
|
|
11
|
-
|
|
12
|
-
interface StatLabelProps extends ChakraStat.LabelProps {
|
|
13
|
-
info?: React.ReactNode
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export const StatLabel = forwardRef<HTMLDivElement, StatLabelProps>(
|
|
17
|
-
function StatLabel(props, ref) {
|
|
18
|
-
const { info, children, ...rest } = props
|
|
19
|
-
return (
|
|
20
|
-
<ChakraStat.Label {...rest} ref={ref}>
|
|
21
|
-
{children}
|
|
22
|
-
{info && (
|
|
23
|
-
<ToggleTip content={info}>
|
|
24
|
-
<IconButton variant="ghost" aria-label="info" size="2xs">
|
|
25
|
-
<HiOutlineInformationCircle />
|
|
26
|
-
</IconButton>
|
|
27
|
-
</ToggleTip>
|
|
28
|
-
)}
|
|
29
|
-
</ChakraStat.Label>
|
|
30
|
-
)
|
|
31
|
-
},
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
interface StatValueTextProps extends ChakraStat.ValueTextProps {
|
|
35
|
-
value?: number
|
|
36
|
-
formatOptions?: Intl.NumberFormatOptions
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export const StatValueText = forwardRef<HTMLDivElement, StatValueTextProps>(
|
|
40
|
-
function StatValueText(props, ref) {
|
|
41
|
-
const { value, formatOptions, children, ...rest } = props
|
|
42
|
-
return (
|
|
43
|
-
<ChakraStat.ValueText {...rest} ref={ref}>
|
|
44
|
-
{children ||
|
|
45
|
-
(value != null && <FormatNumber value={value} {...formatOptions} />)}
|
|
46
|
-
</ChakraStat.ValueText>
|
|
47
|
-
)
|
|
48
|
-
},
|
|
49
|
-
)
|
|
50
|
-
|
|
51
|
-
export const StatUpTrend = forwardRef<HTMLDivElement, BadgeProps>(
|
|
52
|
-
function StatUpTrend(props, ref) {
|
|
53
|
-
return (
|
|
54
|
-
<Badge colorPalette="green" gap="0" {...props} ref={ref}>
|
|
55
|
-
<ChakraStat.UpIndicator />
|
|
56
|
-
{props.children}
|
|
57
|
-
</Badge>
|
|
58
|
-
)
|
|
59
|
-
},
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
export const StatDownTrend = forwardRef<HTMLDivElement, BadgeProps>(
|
|
63
|
-
function StatDownTrend(props, ref) {
|
|
64
|
-
return (
|
|
65
|
-
<Badge colorPalette="red" gap="0" {...props} ref={ref}>
|
|
66
|
-
<ChakraStat.DownIndicator />
|
|
67
|
-
{props.children}
|
|
68
|
-
</Badge>
|
|
69
|
-
)
|
|
70
|
-
},
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
export const StatRoot = ChakraStat.Root
|
|
74
|
-
export const StatHelpText = ChakraStat.HelpText
|
|
75
|
-
export const StatValueUnit = ChakraStat.ValueUnit
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { ColorPalette } from "@chakra-ui/react"
|
|
2
|
-
import { Status as ChakraStatus } from "@chakra-ui/react"
|
|
3
|
-
import { forwardRef } from "react"
|
|
4
|
-
|
|
5
|
-
type StatusValue = "success" | "error" | "warning" | "info"
|
|
6
|
-
|
|
7
|
-
export interface StatusProps extends ChakraStatus.RootProps {
|
|
8
|
-
value?: StatusValue
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const statusMap: Record<StatusValue, ColorPalette> = {
|
|
12
|
-
success: "green",
|
|
13
|
-
error: "red",
|
|
14
|
-
warning: "orange",
|
|
15
|
-
info: "blue",
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export const Status = forwardRef<HTMLDivElement, StatusProps>(
|
|
19
|
-
function Status(props, ref) {
|
|
20
|
-
const { children, value = "info", ...rest } = props
|
|
21
|
-
const colorPalette = rest.colorPalette ?? statusMap[value]
|
|
22
|
-
return (
|
|
23
|
-
<ChakraStatus.Root ref={ref} {...rest} colorPalette={colorPalette}>
|
|
24
|
-
<ChakraStatus.Indicator />
|
|
25
|
-
{children}
|
|
26
|
-
</ChakraStatus.Root>
|
|
27
|
-
)
|
|
28
|
-
},
|
|
29
|
-
)
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { HStack, IconButton, NumberInput } from "@chakra-ui/react"
|
|
2
|
-
import { forwardRef } from "react"
|
|
3
|
-
import { LuMinus, LuPlus } from "react-icons/lu"
|
|
4
|
-
|
|
5
|
-
export interface StepperInputProps extends NumberInput.RootProps {
|
|
6
|
-
label?: React.ReactNode
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export const StepperInput = forwardRef<HTMLDivElement, StepperInputProps>(
|
|
10
|
-
function StepperInput(props, ref) {
|
|
11
|
-
const { label, ...rest } = props
|
|
12
|
-
return (
|
|
13
|
-
<NumberInput.Root {...rest} unstyled ref={ref}>
|
|
14
|
-
{label && <NumberInput.Label>{label}</NumberInput.Label>}
|
|
15
|
-
<HStack gap="2">
|
|
16
|
-
<DecrementTrigger />
|
|
17
|
-
<NumberInput.ValueText textAlign="center" fontSize="lg" minW="3ch" />
|
|
18
|
-
<IncrementTrigger />
|
|
19
|
-
</HStack>
|
|
20
|
-
</NumberInput.Root>
|
|
21
|
-
)
|
|
22
|
-
},
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
const DecrementTrigger = forwardRef<
|
|
26
|
-
HTMLButtonElement,
|
|
27
|
-
NumberInput.DecrementTriggerProps
|
|
28
|
-
>(function DecrementTrigger(props, ref) {
|
|
29
|
-
return (
|
|
30
|
-
<NumberInput.DecrementTrigger {...props} asChild ref={ref}>
|
|
31
|
-
<IconButton variant="outline" size="sm">
|
|
32
|
-
<LuMinus />
|
|
33
|
-
</IconButton>
|
|
34
|
-
</NumberInput.DecrementTrigger>
|
|
35
|
-
)
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
const IncrementTrigger = forwardRef<
|
|
39
|
-
HTMLButtonElement,
|
|
40
|
-
NumberInput.IncrementTriggerProps
|
|
41
|
-
>(function IncrementTrigger(props, ref) {
|
|
42
|
-
return (
|
|
43
|
-
<NumberInput.IncrementTrigger {...props} asChild ref={ref}>
|
|
44
|
-
<IconButton variant="outline" size="sm">
|
|
45
|
-
<LuPlus />
|
|
46
|
-
</IconButton>
|
|
47
|
-
</NumberInput.IncrementTrigger>
|
|
48
|
-
)
|
|
49
|
-
})
|
package/src/compositions/tag.tsx
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { Tag as ChakraTag } from "@chakra-ui/react"
|
|
2
|
-
import { forwardRef } from "react"
|
|
3
|
-
|
|
4
|
-
export interface TagProps extends ChakraTag.RootProps {
|
|
5
|
-
startElement?: React.ReactNode
|
|
6
|
-
endElement?: React.ReactNode
|
|
7
|
-
onClose?: VoidFunction
|
|
8
|
-
closable?: boolean
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export const Tag = forwardRef<HTMLSpanElement, TagProps>(
|
|
12
|
-
function Tag(props, ref) {
|
|
13
|
-
const {
|
|
14
|
-
startElement,
|
|
15
|
-
endElement,
|
|
16
|
-
onClose,
|
|
17
|
-
closable = !!onClose,
|
|
18
|
-
children,
|
|
19
|
-
...rest
|
|
20
|
-
} = props
|
|
21
|
-
|
|
22
|
-
return (
|
|
23
|
-
<ChakraTag.Root ref={ref} {...rest}>
|
|
24
|
-
{startElement && (
|
|
25
|
-
<ChakraTag.StartElement>{startElement}</ChakraTag.StartElement>
|
|
26
|
-
)}
|
|
27
|
-
<ChakraTag.Label>{children}</ChakraTag.Label>
|
|
28
|
-
{endElement && (
|
|
29
|
-
<ChakraTag.EndElement>{endElement}</ChakraTag.EndElement>
|
|
30
|
-
)}
|
|
31
|
-
{closable && (
|
|
32
|
-
<ChakraTag.EndElement>
|
|
33
|
-
<ChakraTag.CloseTrigger onClick={onClose} />
|
|
34
|
-
</ChakraTag.EndElement>
|
|
35
|
-
)}
|
|
36
|
-
</ChakraTag.Root>
|
|
37
|
-
)
|
|
38
|
-
},
|
|
39
|
-
)
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Timeline as ChakraTimeline } from "@chakra-ui/react"
|
|
2
|
-
|
|
3
|
-
export const TimelineRoot = ChakraTimeline.Root
|
|
4
|
-
export const TimelineContent = ChakraTimeline.Content
|
|
5
|
-
export const TimelineItem = ChakraTimeline.Item
|
|
6
|
-
export const TimelineIndicator = ChakraTimeline.Indicator
|
|
7
|
-
export const TimelineTitle = ChakraTimeline.Title
|
|
8
|
-
export const TimelineDescription = ChakraTimeline.Description
|
|
9
|
-
|
|
10
|
-
export const TimelineConnector = (props: ChakraTimeline.IndicatorProps) => {
|
|
11
|
-
return (
|
|
12
|
-
<ChakraTimeline.Connector>
|
|
13
|
-
<ChakraTimeline.Separator />
|
|
14
|
-
<ChakraTimeline.Indicator {...props} />
|
|
15
|
-
</ChakraTimeline.Connector>
|
|
16
|
-
)
|
|
17
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use client"
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
Toaster as ChakraToaster,
|
|
5
|
-
Portal,
|
|
6
|
-
Spinner,
|
|
7
|
-
Stack,
|
|
8
|
-
Toast,
|
|
9
|
-
createToaster,
|
|
10
|
-
} from "@chakra-ui/react"
|
|
11
|
-
|
|
12
|
-
export const toaster = createToaster({
|
|
13
|
-
placement: "bottom-end",
|
|
14
|
-
pauseOnPageIdle: true,
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
export const Toaster = () => {
|
|
18
|
-
return (
|
|
19
|
-
<Portal>
|
|
20
|
-
<ChakraToaster toaster={toaster} insetInline={{ mdDown: "4" }}>
|
|
21
|
-
{(toast) => (
|
|
22
|
-
<Toast.Root width={{ md: "sm" }}>
|
|
23
|
-
{toast.type === "loading" ? (
|
|
24
|
-
<Spinner size="sm" color="blue.solid" />
|
|
25
|
-
) : (
|
|
26
|
-
<Toast.Indicator />
|
|
27
|
-
)}
|
|
28
|
-
<Stack gap="1" flex="1" maxWidth="100%">
|
|
29
|
-
{toast.title && <Toast.Title>{toast.title}</Toast.Title>}
|
|
30
|
-
{toast.description && (
|
|
31
|
-
<Toast.Description>{toast.description}</Toast.Description>
|
|
32
|
-
)}
|
|
33
|
-
</Stack>
|
|
34
|
-
{toast.action && (
|
|
35
|
-
<Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>
|
|
36
|
-
)}
|
|
37
|
-
{toast.meta?.closable && <Toast.CloseTrigger />}
|
|
38
|
-
</Toast.Root>
|
|
39
|
-
)}
|
|
40
|
-
</ChakraToaster>
|
|
41
|
-
</Portal>
|
|
42
|
-
)
|
|
43
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { Popover as ChakraPopover, IconButton, Portal } from "@chakra-ui/react"
|
|
2
|
-
import { forwardRef } from "react"
|
|
3
|
-
import { HiOutlineInformationCircle } from "react-icons/hi"
|
|
4
|
-
|
|
5
|
-
export interface ToggleTipProps extends ChakraPopover.RootProps {
|
|
6
|
-
showArrow?: boolean
|
|
7
|
-
portalled?: boolean
|
|
8
|
-
portalRef?: React.RefObject<HTMLElement>
|
|
9
|
-
content?: React.ReactNode
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export const ToggleTip = forwardRef<HTMLDivElement, ToggleTipProps>(
|
|
13
|
-
function ToggleTip(props, ref) {
|
|
14
|
-
const {
|
|
15
|
-
showArrow,
|
|
16
|
-
children,
|
|
17
|
-
portalled = true,
|
|
18
|
-
content,
|
|
19
|
-
portalRef,
|
|
20
|
-
...rest
|
|
21
|
-
} = props
|
|
22
|
-
|
|
23
|
-
return (
|
|
24
|
-
<ChakraPopover.Root
|
|
25
|
-
{...rest}
|
|
26
|
-
positioning={{ ...rest.positioning, gutter: 4 }}
|
|
27
|
-
>
|
|
28
|
-
<ChakraPopover.Trigger asChild>{children}</ChakraPopover.Trigger>
|
|
29
|
-
<Portal disabled={!portalled} container={portalRef}>
|
|
30
|
-
<ChakraPopover.Positioner>
|
|
31
|
-
<ChakraPopover.Content
|
|
32
|
-
width="auto"
|
|
33
|
-
px="2"
|
|
34
|
-
py="1"
|
|
35
|
-
textStyle="xs"
|
|
36
|
-
rounded="sm"
|
|
37
|
-
ref={ref}
|
|
38
|
-
>
|
|
39
|
-
{showArrow && (
|
|
40
|
-
<ChakraPopover.Arrow>
|
|
41
|
-
<ChakraPopover.ArrowTip />
|
|
42
|
-
</ChakraPopover.Arrow>
|
|
43
|
-
)}
|
|
44
|
-
{content}
|
|
45
|
-
</ChakraPopover.Content>
|
|
46
|
-
</ChakraPopover.Positioner>
|
|
47
|
-
</Portal>
|
|
48
|
-
</ChakraPopover.Root>
|
|
49
|
-
)
|
|
50
|
-
},
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
export const InfoTip = (props: Partial<ToggleTipProps>) => {
|
|
54
|
-
const { children, ...rest } = props
|
|
55
|
-
return (
|
|
56
|
-
<ToggleTip content={children} {...rest}>
|
|
57
|
-
<IconButton variant="ghost" aria-label="info" size="2xs">
|
|
58
|
-
<HiOutlineInformationCircle />
|
|
59
|
-
</IconButton>
|
|
60
|
-
</ToggleTip>
|
|
61
|
-
)
|
|
62
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Tooltip as ChakraTooltip, Portal } from "@chakra-ui/react"
|
|
2
|
-
import { forwardRef } from "react"
|
|
3
|
-
|
|
4
|
-
export interface TooltipProps extends ChakraTooltip.RootProps {
|
|
5
|
-
showArrow?: boolean
|
|
6
|
-
portalled?: boolean
|
|
7
|
-
portalRef?: React.RefObject<HTMLElement>
|
|
8
|
-
content: React.ReactNode
|
|
9
|
-
contentProps?: ChakraTooltip.ContentProps
|
|
10
|
-
disabled?: boolean
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(
|
|
14
|
-
function Tooltip(props, ref) {
|
|
15
|
-
const {
|
|
16
|
-
showArrow,
|
|
17
|
-
children,
|
|
18
|
-
disabled,
|
|
19
|
-
portalled,
|
|
20
|
-
content,
|
|
21
|
-
contentProps,
|
|
22
|
-
portalRef,
|
|
23
|
-
...rest
|
|
24
|
-
} = props
|
|
25
|
-
|
|
26
|
-
if (disabled) return children
|
|
27
|
-
|
|
28
|
-
return (
|
|
29
|
-
<ChakraTooltip.Root {...rest}>
|
|
30
|
-
<ChakraTooltip.Trigger asChild>{children}</ChakraTooltip.Trigger>
|
|
31
|
-
<Portal disabled={!portalled} container={portalRef}>
|
|
32
|
-
<ChakraTooltip.Positioner>
|
|
33
|
-
<ChakraTooltip.Content ref={ref} {...contentProps}>
|
|
34
|
-
{showArrow && (
|
|
35
|
-
<ChakraTooltip.Arrow>
|
|
36
|
-
<ChakraTooltip.ArrowTip />
|
|
37
|
-
</ChakraTooltip.Arrow>
|
|
38
|
-
)}
|
|
39
|
-
{content}
|
|
40
|
-
</ChakraTooltip.Content>
|
|
41
|
-
</ChakraTooltip.Positioner>
|
|
42
|
-
</Portal>
|
|
43
|
-
</ChakraTooltip.Root>
|
|
44
|
-
)
|
|
45
|
-
},
|
|
46
|
-
)
|
package/src/index.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export * from '@saas-ui/core'
|
|
2
|
-
|
|
3
|
-
export { defaultSystem, defaultConfig } from './preset.ts'
|
|
4
|
-
export { createSystem } from '@chakra-ui/react'
|
|
5
|
-
|
|
6
|
-
export { SuiProvider, SuiContext, useLink, useSui } from './provider/index.ts'
|
|
7
|
-
export type { SuiContextValue, SuiProviderProps } from './provider/index.ts'
|
package/src/preset.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { createSystem, defaultBaseConfig, mergeConfigs } from '@chakra-ui/react'
|
|
2
|
-
|
|
3
|
-
import { defaultThemeConfig } from './theme'
|
|
4
|
-
|
|
5
|
-
export const defaultConfig = mergeConfigs(defaultBaseConfig, defaultThemeConfig)
|
|
6
|
-
|
|
7
|
-
export const defaultSystem = createSystem(defaultConfig)
|
|
8
|
-
|
|
9
|
-
export { defaultSystem as system }
|
package/src/provider/index.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import * as React from 'react'
|
|
2
|
-
|
|
3
|
-
import { ChakraProvider, ChakraProviderProps } from '@chakra-ui/react'
|
|
4
|
-
|
|
5
|
-
export interface SuiContextValue {
|
|
6
|
-
linkComponent?: React.ElementType<any>
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export const SuiContext = React.createContext<SuiContextValue>({})
|
|
10
|
-
|
|
11
|
-
export interface SuiProviderProps extends ChakraProviderProps {
|
|
12
|
-
linkComponent?: React.ElementType<any>
|
|
13
|
-
children: React.ReactNode
|
|
14
|
-
onError?: (error: Error, errorInfo: React.ErrorInfo) => void
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export function SuiProvider(props: SuiProviderProps) {
|
|
18
|
-
const { linkComponent, onError, children, ...rest } = props
|
|
19
|
-
|
|
20
|
-
const context = React.useMemo(
|
|
21
|
-
() => ({
|
|
22
|
-
linkComponent,
|
|
23
|
-
}),
|
|
24
|
-
[],
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
<SuiContext.Provider value={context}>
|
|
29
|
-
<ChakraProvider {...rest}>{children}</ChakraProvider>
|
|
30
|
-
</SuiContext.Provider>
|
|
31
|
-
)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export const useSui = (): SuiContextValue => React.useContext(SuiContext)
|