@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,134 +0,0 @@
1
- import React, { forwardRef } from 'react'
2
-
3
- import {
4
- Group,
5
- IconButton,
6
- type IconButtonProps,
7
- Input,
8
- InputElement,
9
- InputProps,
10
- mergeRefs,
11
- useControllableState,
12
- } from '@chakra-ui/react'
13
- import { callAll } from '@saas-ui/core/utils'
14
-
15
- import { CloseIcon, SearchIcon } from '#components/icons/index.ts'
16
-
17
- export interface SearchInputProps extends InputProps {
18
- value?: string
19
- defaultValue?: string
20
- placeholder?: string
21
- icon?: React.ReactElement
22
- resetIcon?: React.ReactElement
23
- endElement?: React.ReactElement
24
- onReset?: () => void
25
- }
26
-
27
- export const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(
28
- (props, ref) => {
29
- const {
30
- placeholder = 'Search',
31
- value: valueProp,
32
- defaultValue: defaultValueProp,
33
- size,
34
- variant,
35
- width = 'full',
36
- icon = <SearchIcon />,
37
- resetIcon,
38
- endElement: endElementProp,
39
- onChange: onChangeProp,
40
- onReset: onResetProp,
41
- onKeyDown: onKeyDownProp,
42
- disabled,
43
- ...inputProps
44
- } = props
45
-
46
- const inputRef = React.useRef<HTMLInputElement>(null)
47
-
48
- const [value, setValue] = useControllableState({
49
- value: valueProp,
50
- defaultValue: defaultValueProp,
51
- })
52
-
53
- const onChange = React.useCallback(
54
- (e: React.ChangeEvent<HTMLInputElement>) => {
55
- setValue(e.target.value)
56
- },
57
- [setValue],
58
- )
59
-
60
- const onKeyDown = React.useCallback(
61
- (event: React.KeyboardEvent) => {
62
- if (event.key === 'Escape') {
63
- setValue('')
64
- onReset()
65
- }
66
- },
67
- [onResetProp, setValue],
68
- )
69
-
70
- const onReset = () => {
71
- setValue('')
72
- onResetProp?.()
73
- inputRef.current?.focus()
74
- }
75
-
76
- const showReset = value && !props.disabled
77
-
78
- const endElement = showReset ? (
79
- <SearchInputResetButton size={size}>{resetIcon}</SearchInputResetButton>
80
- ) : (
81
- endElementProp
82
- )
83
-
84
- return (
85
- <Group width={width}>
86
- <InputElement
87
- placement="start"
88
- px="0"
89
- aspectRatio="9/10"
90
- fontSize={size}
91
- >
92
- {icon}
93
- </InputElement>
94
- <Input
95
- type="text"
96
- placeholder={placeholder}
97
- variant={variant}
98
- size={size}
99
- value={value}
100
- disabled={disabled}
101
- ref={mergeRefs(ref, inputRef)}
102
- onChange={callAll(onChange, onChangeProp)}
103
- onKeyDown={callAll(onKeyDown, onKeyDownProp)}
104
- ps="calc(var(--input-height) - var(--input-height) / 10)"
105
- pe="calc(var(--input-height) - var(--input-height) / 10)"
106
- {...inputProps}
107
- />
108
- <InputElement placement="end">{endElement}</InputElement>
109
- </Group>
110
- )
111
- },
112
- )
113
-
114
- const SearchInputResetButton = forwardRef<HTMLButtonElement, IconButtonProps>(
115
- (props, ref) => {
116
- const { children = <CloseIcon />, ...rest } = props
117
-
118
- return (
119
- <IconButton
120
- ref={ref}
121
- variant="ghost"
122
- aria-label="Reset search"
123
- me="-2"
124
- aspectRatio="square"
125
- height="calc(100% - {spacing.2})"
126
- {...rest}
127
- >
128
- {children}
129
- </IconButton>
130
- )
131
- },
132
- )
133
-
134
- SearchInput.displayName = 'SearchInput'
@@ -1 +0,0 @@
1
- export * as Select from './namespace'
@@ -1,18 +0,0 @@
1
- export {
2
- SelectRoot as Root,
3
- SelectTrigger as Trigger,
4
- SelectContent as Content,
5
- SelectItem as Item,
6
- SelectLabel as Label,
7
- SelectItemGroup as ItemGroup,
8
- SelectItemText as ItemText,
9
- SelectValueText as ValueText,
10
- } from './select.tsx'
11
-
12
- export type {
13
- SelectRootProps as RootProps,
14
- SelectTriggerProps as TriggerProps,
15
- SelectContentProps as ContentProps,
16
- SelectItemGroupProps as ItemGroupProps,
17
- SelectValueTextProps as ValueTextProps,
18
- } from './select.tsx'
@@ -1,135 +0,0 @@
1
- 'use client'
2
-
3
- import { forwardRef } from 'react'
4
-
5
- import type { CollectionItem } from '@chakra-ui/react'
6
- import { Portal, Select as SelectPrimitive } from '@chakra-ui/react'
7
-
8
- import { CloseButton } from '#components/close-button'
9
-
10
- export interface SelectTriggerProps extends SelectPrimitive.ControlProps {
11
- clearable?: boolean
12
- }
13
-
14
- export const SelectTrigger = forwardRef<HTMLButtonElement, SelectTriggerProps>(
15
- function SelectTrigger(props, ref) {
16
- const { children, clearable, ...rest } = props
17
- return (
18
- <SelectPrimitive.Control {...rest}>
19
- <SelectPrimitive.Trigger ref={ref}>{children}</SelectPrimitive.Trigger>
20
- <SelectPrimitive.IndicatorGroup>
21
- {clearable && <SelectClearTrigger />}
22
- <SelectPrimitive.Indicator />
23
- </SelectPrimitive.IndicatorGroup>
24
- </SelectPrimitive.Control>
25
- )
26
- },
27
- )
28
-
29
- const SelectClearTrigger = forwardRef<
30
- HTMLButtonElement,
31
- SelectPrimitive.ClearTriggerProps
32
- >(function SelectClearTrigger(props, ref) {
33
- return (
34
- <SelectPrimitive.ClearTrigger asChild {...props} ref={ref}>
35
- <CloseButton
36
- size="xs"
37
- variant="plain"
38
- focusVisibleRing="inside"
39
- focusRingWidth="2px"
40
- pointerEvents="auto"
41
- />
42
- </SelectPrimitive.ClearTrigger>
43
- )
44
- })
45
-
46
- export interface SelectContentProps extends SelectPrimitive.ContentProps {
47
- portalled?: boolean
48
- portalRef?: React.RefObject<HTMLElement>
49
- }
50
-
51
- export const SelectContent = forwardRef<HTMLDivElement, SelectContentProps>(
52
- function SelectContent(props, ref) {
53
- const { portalled = true, portalRef, ...rest } = props
54
- return (
55
- <Portal disabled={!portalled} container={portalRef}>
56
- <SelectPrimitive.Positioner>
57
- <SelectPrimitive.Content {...rest} ref={ref} />
58
- </SelectPrimitive.Positioner>
59
- </Portal>
60
- )
61
- },
62
- )
63
-
64
- export const SelectItem = forwardRef<HTMLDivElement, SelectPrimitive.ItemProps>(
65
- function SelectItem(props, ref) {
66
- const { item, children, ...rest } = props
67
- return (
68
- <SelectPrimitive.Item key={item.value} item={item} {...rest} ref={ref}>
69
- {children}
70
- <SelectPrimitive.ItemIndicator />
71
- </SelectPrimitive.Item>
72
- )
73
- },
74
- )
75
-
76
- export interface SelectValueTextProps
77
- extends Omit<SelectPrimitive.ValueTextProps, 'children'> {
78
- children?(items: CollectionItem[]): React.ReactNode
79
- }
80
-
81
- export const SelectValueText = forwardRef<
82
- HTMLSpanElement,
83
- SelectValueTextProps
84
- >(function SelectValueText(props, ref) {
85
- const { children, ...rest } = props
86
- return (
87
- <SelectPrimitive.ValueText {...rest} ref={ref}>
88
- <SelectPrimitive.Context>
89
- {(select) => {
90
- const items = select.selectedItems
91
- if (items.length === 0) return props.placeholder
92
- if (children) return children(items)
93
- if (items.length === 1)
94
- return select.collection.stringifyItem(items[0])
95
- return `${items.length} selected`
96
- }}
97
- </SelectPrimitive.Context>
98
- </SelectPrimitive.ValueText>
99
- )
100
- })
101
-
102
- export interface SelectRootProps<T> extends SelectPrimitive.RootProps<T> {}
103
-
104
- export const SelectRoot = forwardRef(function SelectRoot<
105
- T extends CollectionItem,
106
- >(props: SelectRootProps<T>, ref: React.Ref<HTMLDivElement>) {
107
- return (
108
- <SelectPrimitive.Root
109
- {...props}
110
- ref={ref}
111
- positioning={{ sameWidth: true, ...props.positioning }}
112
- />
113
- )
114
- }) as <T extends CollectionItem>(
115
- props: SelectRootProps<T> & React.RefAttributes<HTMLDivElement>,
116
- ) => React.ReactElement
117
-
118
- export interface SelectItemGroupProps extends SelectPrimitive.ItemGroupProps {
119
- label: React.ReactNode
120
- }
121
-
122
- export const SelectItemGroup = forwardRef<HTMLDivElement, SelectItemGroupProps>(
123
- function SelectItemGroup(props, ref) {
124
- const { children, label, ...rest } = props
125
- return (
126
- <SelectPrimitive.ItemGroup {...rest} ref={ref}>
127
- <SelectPrimitive.ItemGroupLabel>{label}</SelectPrimitive.ItemGroupLabel>
128
- {children}
129
- </SelectPrimitive.ItemGroup>
130
- )
131
- },
132
- )
133
-
134
- export const SelectLabel = SelectPrimitive.Label
135
- export const SelectItemText = SelectPrimitive.ItemText
@@ -1,7 +0,0 @@
1
- export * as Sidebar from './namespace'
2
-
3
- export {
4
- useSidebar,
5
- useSidebarStyles,
6
- useSidebarItemStyles,
7
- } from './sidebar.tsx'
@@ -1,27 +0,0 @@
1
- export {
2
- SidebarProvider as Provider,
3
- SidebarRoot as Root,
4
- SidebarTrigger as Trigger,
5
- SidebarFlyoutTrigger as FlyoutTrigger,
6
- SidebarBackdrop as Backdrop,
7
- SidebarHeader as Header,
8
- SidebarBody as Body,
9
- SidebarFooter as Footer,
10
- SidebarTrack as Track,
11
- SidebarGroup as Group,
12
- SidebarGroupHeader as GroupHeader,
13
- SidebarGroupTitle as GroupTitle,
14
- SidebarGroupEndElement as GroupEndElement,
15
- SidebarGroupContent as GroupContent,
16
- SidebarNavItem as NavItem,
17
- SidebarNavButton as NavButton,
18
- SidebarNavItemEndElement as NavItemEndElement,
19
- } from './sidebar.tsx'
20
-
21
- export type {
22
- SidebarRootProps as RootProps,
23
- SidebarNavButtonProps as NavButtonProps,
24
- SidebarFlyoutTriggerProps as FlyoutTriggerProps,
25
- SidebarProviderProps as ProviderProps,
26
- SidebarTriggerProps as TriggerProps,
27
- } from './sidebar.tsx'
@@ -1,65 +0,0 @@
1
- import { defineSlotRecipe } from '@chakra-ui/react'
2
-
3
- export const sidebarNavItemSlotRecipe = defineSlotRecipe({
4
- className: 'sui-sidebar-nav-item',
5
- slots: ['item', 'button'],
6
- base: {
7
- item: {
8
- position: 'relative',
9
- },
10
- button: {
11
- display: 'flex',
12
- alignItems: 'center',
13
- gap: 2,
14
- isolation: 'isolate',
15
- width: '100%',
16
- textOverflow: 'ellipsis',
17
- overflow: 'hidden',
18
- whiteSpace: 'nowrap',
19
- cursor: 'button',
20
- transitionProperty: 'common',
21
- transitionDuration: 'fast',
22
- focusVisibleRing: 'outside',
23
- '& > svg': {
24
- boxSize: 4,
25
- },
26
- },
27
- },
28
- variants: {
29
- variant: {
30
- muted: {
31
- button: {
32
- bg: 'transparent',
33
- color: 'sidebar.accent.fg/85',
34
- _hover: {
35
- bg: 'sidebar.accent.bg/90',
36
- color: 'sidebar.accent.fg',
37
- },
38
- _active: {
39
- bg: 'sidebar.accent.bg',
40
- color: 'sidebar.accent.fg',
41
- },
42
- },
43
- },
44
- },
45
- size: {
46
- md: {
47
- item: {
48
- fontSize: 'sm',
49
- },
50
- button: {
51
- borderRadius: 'md',
52
- px: 2,
53
- height: 8,
54
- '&:has(:nth-child(3))': {
55
- pe: 0,
56
- },
57
- },
58
- },
59
- },
60
- },
61
- defaultVariants: {
62
- variant: 'muted',
63
- size: 'md',
64
- },
65
- })
@@ -1,237 +0,0 @@
1
- import { defineSlotRecipe } from '@chakra-ui/react'
2
-
3
- export const sidebarSlotRecipe = defineSlotRecipe({
4
- className: 'sui-sidebar',
5
- slots: [
6
- 'root',
7
- 'backdrop',
8
- 'header',
9
- 'body',
10
- 'footer',
11
- 'trigger',
12
- 'flyoutTrigger',
13
- 'group',
14
- 'groupHeader',
15
- 'groupTitle',
16
- 'groupEndElement',
17
- 'groupContent',
18
- 'item',
19
- 'itemEndElement',
20
- 'track',
21
- ],
22
- base: {
23
- root: {
24
- '--sidebar-z-index': 'zIndex.layer-3',
25
- position: 'relative',
26
- display: 'flex',
27
- flexDirection: 'column',
28
- },
29
- backdrop: {
30
- bg: 'blackAlpha.200',
31
- position: 'fixed',
32
- inset: 0,
33
- '--sidebar-backdrop-z-index': 'zIndex.layer-3',
34
- zIndex: 'calc(var(--sidebar-backdrop-z-index) - 2)',
35
- _open: {
36
- animationName: 'fade-in',
37
- animationDuration: 'slow',
38
- },
39
- _closed: {
40
- animationName: 'fade-out',
41
- animationDuration: 'moderate',
42
- },
43
- },
44
- trigger: {
45
- display: 'inline-flex',
46
- appearance: 'none',
47
- alignItems: 'center',
48
- justifyContent: 'center',
49
- userSelect: 'none',
50
- whiteSpace: 'nowrap',
51
- verticalAlign: 'middle',
52
- outline: 'none',
53
- },
54
- header: {
55
- display: 'flex',
56
- flexDirection: 'row',
57
- py: 2,
58
- },
59
- body: {
60
- display: 'flex',
61
- flexDirection: 'column',
62
- gap: 4,
63
- flex: 1,
64
- py: 3,
65
- overflowY: 'auto',
66
- },
67
- footer: {
68
- display: 'flex',
69
- flexDirection: 'column',
70
- py: 2,
71
- },
72
- group: {
73
- position: 'relative',
74
- },
75
- groupHeader: {
76
- display: 'flex',
77
- flexDirection: 'row',
78
- gap: 1,
79
- height: 6,
80
- borderRadius: 'md',
81
- fontSize: 'xs',
82
- transitionProperty: 'common',
83
- transitionDuration: 'fast',
84
- _groupCollapsible: {
85
- cursor: 'button',
86
- userSelect: 'none',
87
- _hover: {
88
- bg: 'sidebar.accent.bg/80',
89
- },
90
- },
91
- },
92
- groupTitle: {
93
- display: 'flex',
94
- alignItems: 'center',
95
- flex: 1,
96
- px: 2,
97
- fontWeight: 'medium',
98
- color: 'sidebar.fg/70',
99
- },
100
- groupEndElement: {
101
- '& > button': {
102
- boxSize: 6,
103
- },
104
- },
105
- groupContent: {
106
- display: 'flex',
107
- flexDirection: 'column',
108
- gap: '1',
109
- },
110
- track: {
111
- display: 'flex',
112
- justifyContent: 'center',
113
- position: 'absolute',
114
- top: 0,
115
- right: '-4px',
116
- bottom: 0,
117
- width: '7px',
118
- cursor: 'button',
119
- _after: {
120
- content: '""',
121
- display: 'block',
122
- height: '100%',
123
- width: '2px',
124
- opacity: 0,
125
- transitionProperty: 'opacity',
126
- transitionDuration: 'fast',
127
- transitionDelay: '0.2s',
128
- bg: 'sidebar.accent.fg/60',
129
- pointerEvents: 'none',
130
- },
131
- _hover: {
132
- _after: {
133
- opacity: 1,
134
- },
135
- },
136
- },
137
- flyoutTrigger: {
138
- display: 'none',
139
- },
140
- },
141
- variants: {
142
- mode: {
143
- collapsible: {
144
- root: {
145
- base: {
146
- position: 'fixed',
147
- height: '100dvh',
148
- zIndex: 'layer-3',
149
- },
150
- md: {
151
- position: 'relative',
152
- height: 'auto',
153
- zIndex: 'unset',
154
- },
155
- width: 'var(--sidebar-width, 280px)',
156
- maxWidth: ['100vw', 'var(--sidebar-max-width, 320px)'],
157
- minWidth: 'var(--sidebar-min-width, 220px)',
158
- bg: 'sidebar.bg',
159
- transitionProperty: 'margin-left',
160
- _open: {
161
- marginLeft: 0,
162
- transitionDuration: 'moderate',
163
- transitionTimingFunction: 'bounce-in',
164
- },
165
- _closed: {
166
- marginLeft: 'calc(var(--sidebar-width, 280px) * -1)',
167
- transitionDuration: 'fast',
168
- transitionTimingFunction: 'bounce-out',
169
- },
170
- },
171
- },
172
- flyout: {
173
- root: {
174
- position: 'fixed',
175
- top: 2,
176
- left: 2,
177
- bottom: 2,
178
- zIndex: 'var(--sidebar-z-index)',
179
- width: 'var(--sidebar-width, 280px)',
180
- maxWidth: ['100vw', 'var(--sidebar-max-width, 320px)'],
181
- minWidth: 'var(--sidebar-min-width, 220px)',
182
- bg: 'sidebar.bg',
183
- borderColor: 'sidebar.border',
184
- boxShadow: 'none',
185
- borderWidth: '1px',
186
- borderRadius: 'lg',
187
- _open: {
188
- transitionDuration: 'moderate',
189
- transitionTimingFunction: 'ease-out',
190
- boxShadow: 'lg',
191
- },
192
- _closed: {
193
- left: 'calc(var(--sidebar-width, 280px) * -1)',
194
- transitionDuration: 'fast',
195
- transitionTimingFunction: 'ease-in-out',
196
- },
197
- },
198
- flyoutTrigger: {
199
- display: 'block',
200
- position: 'absolute',
201
- '--sidebar-flyout-trigger-z-index': 'zIndex.layer-3',
202
- zIndex: 'calc(var(--sidebar-flyout-trigger-z-index) - 1)',
203
- height: '100%',
204
- width: '8px',
205
- },
206
- track: {
207
- top: '8px',
208
- bottom: '8px',
209
- },
210
- },
211
- compact: {},
212
- },
213
- variant: {
214
- muted: {},
215
- solid: {},
216
- subtle: {},
217
- },
218
- size: {
219
- md: {
220
- header: {
221
- px: 3,
222
- },
223
- body: {
224
- px: 3,
225
- },
226
- footer: {
227
- px: 3,
228
- },
229
- },
230
- },
231
- },
232
- defaultVariants: {
233
- mode: 'collapsible',
234
- variant: 'muted',
235
- size: 'md',
236
- },
237
- })