@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,57 +0,0 @@
1
- "use client"
2
-
3
- import { NativeSelect as Select } from "@chakra-ui/react"
4
- import { forwardRef, useMemo } from "react"
5
-
6
- interface NativeSelectRootProps extends Select.RootProps {
7
- icon?: React.ReactNode
8
- }
9
-
10
- export const NativeSelectRoot = forwardRef<
11
- HTMLDivElement,
12
- NativeSelectRootProps
13
- >(function NativeSelect(props, ref) {
14
- const { icon, children, ...rest } = props
15
- return (
16
- <Select.Root ref={ref} {...rest}>
17
- {children}
18
- <Select.Indicator>{icon}</Select.Indicator>
19
- </Select.Root>
20
- )
21
- })
22
-
23
- interface NativeSelectItem {
24
- value: string
25
- label: string
26
- disabled?: boolean
27
- }
28
-
29
- interface NativeSelectField extends Select.FieldProps {
30
- items?: Array<string | NativeSelectItem>
31
- }
32
-
33
- export const NativeSelectField = forwardRef<
34
- HTMLSelectElement,
35
- NativeSelectField
36
- >(function NativeSelectField(props, ref) {
37
- const { items: itemsProp, children, ...rest } = props
38
-
39
- const items = useMemo(
40
- () =>
41
- itemsProp?.map((item) =>
42
- typeof item === "string" ? { label: item, value: item } : item,
43
- ),
44
- [itemsProp],
45
- )
46
-
47
- return (
48
- <Select.Field ref={ref} {...rest}>
49
- {children}
50
- {items?.map((item) => (
51
- <option key={item.value} value={item.value} disabled={item.disabled}>
52
- {item.label}
53
- </option>
54
- ))}
55
- </Select.Field>
56
- )
57
- })
@@ -1,207 +0,0 @@
1
- "use client"
2
-
3
- import type { ButtonProps, TextProps } from "@chakra-ui/react"
4
- import {
5
- Button,
6
- Pagination as ChakraPagination,
7
- IconButton,
8
- Text,
9
- createContext,
10
- usePaginationContext,
11
- } from "@chakra-ui/react"
12
- import { forwardRef, useMemo } from "react"
13
- import {
14
- HiChevronLeft,
15
- HiChevronRight,
16
- HiMiniEllipsisHorizontal,
17
- } from "react-icons/hi2"
18
- import { LinkButton } from "./link-button"
19
-
20
- interface ButtonVariantMap {
21
- current: ButtonProps["variant"]
22
- default: ButtonProps["variant"]
23
- ellipsis: ButtonProps["variant"]
24
- }
25
-
26
- type PaginationVariant = "outline" | "solid" | "subtle"
27
-
28
- interface ButtonVariantContext {
29
- size: ButtonProps["size"]
30
- variantMap: ButtonVariantMap
31
- getHref?: (page: number) => string
32
- }
33
-
34
- const [RootPropsProvider, useRootProps] = createContext<ButtonVariantContext>({
35
- name: "RootPropsProvider",
36
- })
37
-
38
- export interface PaginationRootProps
39
- extends Omit<ChakraPagination.RootProps, "type"> {
40
- size?: ButtonProps["size"]
41
- variant?: PaginationVariant
42
- getHref?: (page: number) => string
43
- }
44
-
45
- const variantMap: Record<PaginationVariant, ButtonVariantMap> = {
46
- outline: { default: "ghost", ellipsis: "plain", current: "outline" },
47
- solid: { default: "outline", ellipsis: "outline", current: "solid" },
48
- subtle: { default: "ghost", ellipsis: "plain", current: "subtle" },
49
- }
50
-
51
- export const PaginationRoot = forwardRef<HTMLDivElement, PaginationRootProps>(
52
- function PaginationRoot(props, ref) {
53
- const { size = "sm", variant = "outline", getHref, ...rest } = props
54
- return (
55
- <RootPropsProvider
56
- value={{ size, variantMap: variantMap[variant], getHref }}
57
- >
58
- <ChakraPagination.Root
59
- ref={ref}
60
- type={getHref ? "link" : "button"}
61
- {...rest}
62
- />
63
- </RootPropsProvider>
64
- )
65
- },
66
- )
67
-
68
- export const PaginationEllipsis = forwardRef<
69
- HTMLDivElement,
70
- ChakraPagination.EllipsisProps
71
- >(function PaginationEllipsis(props, ref) {
72
- const { size, variantMap } = useRootProps()
73
- return (
74
- <ChakraPagination.Ellipsis ref={ref} {...props} asChild>
75
- <Button as="span" variant={variantMap.ellipsis} size={size}>
76
- <HiMiniEllipsisHorizontal />
77
- </Button>
78
- </ChakraPagination.Ellipsis>
79
- )
80
- })
81
-
82
- export const PaginationItem = forwardRef<
83
- HTMLButtonElement,
84
- ChakraPagination.ItemProps
85
- >(function PaginationItem(props, ref) {
86
- const { page } = usePaginationContext()
87
- const { size, variantMap, getHref } = useRootProps()
88
-
89
- const current = page === props.value
90
- const variant = current ? variantMap.current : variantMap.default
91
-
92
- if (getHref) {
93
- return (
94
- <LinkButton href={getHref(props.value)} variant={variant} size={size}>
95
- {props.value}
96
- </LinkButton>
97
- )
98
- }
99
-
100
- return (
101
- <ChakraPagination.Item ref={ref} {...props} asChild>
102
- <Button variant={variant} size={size}>
103
- {props.value}
104
- </Button>
105
- </ChakraPagination.Item>
106
- )
107
- })
108
-
109
- export const PaginationPrevTrigger = forwardRef<
110
- HTMLButtonElement,
111
- ChakraPagination.PrevTriggerProps
112
- >(function PaginationPrevTrigger(props, ref) {
113
- const { size, variantMap, getHref } = useRootProps()
114
- const { previousPage } = usePaginationContext()
115
-
116
- if (getHref) {
117
- return (
118
- <LinkButton
119
- href={previousPage != null ? getHref(previousPage) : undefined}
120
- variant={variantMap.default}
121
- size={size}
122
- >
123
- <HiChevronLeft />
124
- </LinkButton>
125
- )
126
- }
127
-
128
- return (
129
- <ChakraPagination.PrevTrigger ref={ref} asChild {...props}>
130
- <IconButton variant={variantMap.default} size={size}>
131
- <HiChevronLeft />
132
- </IconButton>
133
- </ChakraPagination.PrevTrigger>
134
- )
135
- })
136
-
137
- export const PaginationNextTrigger = forwardRef<
138
- HTMLButtonElement,
139
- ChakraPagination.NextTriggerProps
140
- >(function PaginationNextTrigger(props, ref) {
141
- const { size, variantMap, getHref } = useRootProps()
142
- const { nextPage } = usePaginationContext()
143
-
144
- if (getHref) {
145
- return (
146
- <LinkButton
147
- href={nextPage != null ? getHref(nextPage) : undefined}
148
- variant={variantMap.default}
149
- size={size}
150
- >
151
- <HiChevronRight />
152
- </LinkButton>
153
- )
154
- }
155
-
156
- return (
157
- <ChakraPagination.NextTrigger ref={ref} asChild {...props}>
158
- <IconButton variant={variantMap.default} size={size}>
159
- <HiChevronRight />
160
- </IconButton>
161
- </ChakraPagination.NextTrigger>
162
- )
163
- })
164
-
165
- export const PaginationItems = (props: React.HTMLAttributes<HTMLElement>) => {
166
- return (
167
- <ChakraPagination.Context>
168
- {({ pages }) =>
169
- pages.map((page, index) => {
170
- return page.type === "ellipsis" ? (
171
- <PaginationEllipsis key={index} index={index} {...props} />
172
- ) : (
173
- <PaginationItem
174
- key={index}
175
- type="page"
176
- value={page.value}
177
- {...props}
178
- />
179
- )
180
- })
181
- }
182
- </ChakraPagination.Context>
183
- )
184
- }
185
-
186
- interface PageTextProps extends TextProps {
187
- format?: "short" | "compact" | "long"
188
- }
189
-
190
- export const PaginationPageText = forwardRef<
191
- HTMLParagraphElement,
192
- PageTextProps
193
- >(function PaginationPageText(props, ref) {
194
- const { format = "compact", ...rest } = props
195
- const { page, pages, pageRange, count } = usePaginationContext()
196
- const content = useMemo(() => {
197
- if (format === "short") return `${page} / ${pages.length}`
198
- if (format === "compact") return `${page} of ${pages.length}`
199
- return `${pageRange.start + 1} - ${pageRange.end} of ${count}`
200
- }, [format, page, pages.length, pageRange, count])
201
-
202
- return (
203
- <Text fontWeight="medium" ref={ref} {...rest}>
204
- {content}
205
- </Text>
206
- )
207
- })
@@ -1,58 +0,0 @@
1
- import { Popover as ChakraPopover, Portal } from "@chakra-ui/react"
2
- import { CloseButton } from "compositions/ui/close-button"
3
- import { forwardRef } from "react"
4
-
5
- interface PopoverContentProps extends ChakraPopover.ContentProps {
6
- portalled?: boolean
7
- portalRef?: React.RefObject<HTMLElement>
8
- }
9
-
10
- export const PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(
11
- function PopoverContent(props, ref) {
12
- const { portalled = true, portalRef, ...rest } = props
13
- return (
14
- <Portal disabled={!portalled} container={portalRef}>
15
- <ChakraPopover.Positioner>
16
- <ChakraPopover.Content ref={ref} {...rest} />
17
- </ChakraPopover.Positioner>
18
- </Portal>
19
- )
20
- },
21
- )
22
-
23
- export const PopoverArrow = forwardRef<
24
- HTMLDivElement,
25
- ChakraPopover.ArrowProps
26
- >(function PopoverArrow(props, ref) {
27
- return (
28
- <ChakraPopover.Arrow {...props} ref={ref}>
29
- <ChakraPopover.ArrowTip />
30
- </ChakraPopover.Arrow>
31
- )
32
- })
33
-
34
- export const PopoverCloseTrigger = forwardRef<
35
- HTMLButtonElement,
36
- ChakraPopover.CloseTriggerProps
37
- >(function PopoverCloseTrigger(props, ref) {
38
- return (
39
- <ChakraPopover.CloseTrigger
40
- position="absolute"
41
- top="1"
42
- insetEnd="1"
43
- {...props}
44
- asChild
45
- ref={ref}
46
- >
47
- <CloseButton size="sm" />
48
- </ChakraPopover.CloseTrigger>
49
- )
50
- })
51
-
52
- export const PopoverTitle = ChakraPopover.Title
53
- export const PopoverDescription = ChakraPopover.Description
54
- export const PopoverFooter = ChakraPopover.Footer
55
- export const PopoverHeader = ChakraPopover.Header
56
- export const PopoverRoot = ChakraPopover.Root
57
- export const PopoverBody = ChakraPopover.Body
58
- export const PopoverTrigger = ChakraPopover.Trigger
@@ -1,37 +0,0 @@
1
- import type { SystemStyleObject } from "@chakra-ui/react"
2
- import {
3
- AbsoluteCenter,
4
- ProgressCircle as ChakraProgressCircle,
5
- } from "@chakra-ui/react"
6
- import { forwardRef } from "react"
7
-
8
- export const ProgressCircleRoot = ChakraProgressCircle.Root
9
-
10
- interface ProgressCircleRingProps extends ChakraProgressCircle.CircleProps {
11
- trackColor?: SystemStyleObject["stroke"]
12
- cap?: SystemStyleObject["strokeLinecap"]
13
- }
14
-
15
- export const ProgressCircleRing = forwardRef<
16
- SVGSVGElement,
17
- ProgressCircleRingProps
18
- >(function ProgressCircleRing(props, ref) {
19
- const { trackColor, cap, color, ...rest } = props
20
- return (
21
- <ChakraProgressCircle.Circle {...rest} ref={ref}>
22
- <ChakraProgressCircle.Track stroke={trackColor} />
23
- <ChakraProgressCircle.Range stroke={color} strokeLinecap={cap} />
24
- </ChakraProgressCircle.Circle>
25
- )
26
- })
27
-
28
- export const ProgressCircleValueText = forwardRef<
29
- HTMLDivElement,
30
- ChakraProgressCircle.ValueTextProps
31
- >(function ProgressCircleValueText(props, ref) {
32
- return (
33
- <AbsoluteCenter>
34
- <ChakraProgressCircle.ValueText {...props} ref={ref} />
35
- </AbsoluteCenter>
36
- )
37
- })
@@ -1,40 +0,0 @@
1
- import { Progress as ChakraProgress, IconButton } from "@chakra-ui/react"
2
- import { ToggleTip } from "compositions/ui/toggle-tip"
3
- import { forwardRef } from "react"
4
- import { HiOutlineInformationCircle } from "react-icons/hi"
5
-
6
- export const ProgressBar = forwardRef<
7
- HTMLDivElement,
8
- ChakraProgress.TrackProps
9
- >(function ProgressBar(props, ref) {
10
- return (
11
- <ChakraProgress.Track {...props} ref={ref}>
12
- <ChakraProgress.Range />
13
- </ChakraProgress.Track>
14
- )
15
- })
16
-
17
- export const ProgressRoot = ChakraProgress.Root
18
- export const ProgressValueText = ChakraProgress.ValueText
19
-
20
- export interface ProgressLabelProps extends ChakraProgress.LabelProps {
21
- info?: React.ReactNode
22
- }
23
-
24
- export const ProgressLabel = forwardRef<HTMLDivElement, ProgressLabelProps>(
25
- function ProgressLabel(props, ref) {
26
- const { children, info, ...rest } = props
27
- return (
28
- <ChakraProgress.Label {...rest} ref={ref}>
29
- {children}
30
- {info && (
31
- <ToggleTip content={info}>
32
- <IconButton variant="ghost" aria-label="info" size="2xs" ms="1">
33
- <HiOutlineInformationCircle />
34
- </IconButton>
35
- </ToggleTip>
36
- )}
37
- </ChakraProgress.Label>
38
- )
39
- },
40
- )
@@ -1,264 +0,0 @@
1
- "use client"
2
-
3
- import { chakra } from "@chakra-ui/react"
4
-
5
- export const Prose = chakra("div", {
6
- base: {
7
- color: "fg.muted",
8
- maxWidth: "65ch",
9
- fontSize: "sm",
10
- lineHeight: "1.7em",
11
- "& p": {
12
- marginTop: "1em",
13
- marginBottom: "1em",
14
- },
15
- "& blockquote": {
16
- marginTop: "1.285em",
17
- marginBottom: "1.285em",
18
- paddingInline: "1.285em",
19
- borderInlineStartWidth: "0.25em",
20
- },
21
- "& a": {
22
- color: "fg",
23
- textDecoration: "underline",
24
- textUnderlineOffset: "3px",
25
- textDecorationThickness: "2px",
26
- textDecorationColor: "border.muted",
27
- fontWeight: "500",
28
- },
29
- "& strong": {
30
- fontWeight: "600",
31
- },
32
- "& a strong": {
33
- color: "inherit",
34
- },
35
- "& h1": {
36
- fontSize: "2.15em",
37
- letterSpacing: "-0.02em",
38
- marginTop: "0",
39
- marginBottom: "0.8em",
40
- lineHeight: "1.2em",
41
- },
42
- "& h2": {
43
- fontSize: "1.4em",
44
- letterSpacing: "-0.02em",
45
- marginTop: "1.6em",
46
- marginBottom: "0.8em",
47
- lineHeight: "1.4em",
48
- },
49
- "& h3": {
50
- fontSize: "1.285em",
51
- letterSpacing: "-0.01em",
52
- marginTop: "1.5em",
53
- marginBottom: "0.4em",
54
- lineHeight: "1.5em",
55
- },
56
- "& h4": {
57
- marginTop: "1.4em",
58
- marginBottom: "0.5em",
59
- letterSpacing: "-0.01em",
60
- lineHeight: "1.5em",
61
- },
62
- "& img": {
63
- marginTop: "1.7em",
64
- marginBottom: "1.7em",
65
- borderRadius: "lg",
66
- boxShadow: "inset",
67
- },
68
- "& picture": {
69
- marginTop: "1.7em",
70
- marginBottom: "1.7em",
71
- },
72
- "& picture > img": {
73
- marginTop: "0",
74
- marginBottom: "0",
75
- },
76
- "& video": {
77
- marginTop: "1.7em",
78
- marginBottom: "1.7em",
79
- },
80
- "& kbd": {
81
- fontSize: "0.85em",
82
- borderRadius: "xs",
83
- paddingTop: "0.15em",
84
- paddingBottom: "0.15em",
85
- paddingInlineEnd: "0.35em",
86
- paddingInlineStart: "0.35em",
87
- fontFamily: "inherit",
88
- color: "fg.muted",
89
- "--shadow": "colors.border",
90
- boxShadow: "0 0 0 1px var(--shadow),0 1px 0 1px var(--shadow)",
91
- },
92
- "& code": {
93
- fontSize: "0.925em",
94
- letterSpacing: "-0.01em",
95
- borderRadius: "md",
96
- borderWidth: "1px",
97
- padding: "0.25em",
98
- },
99
- "& pre code": {
100
- fontSize: "inherit",
101
- letterSpacing: "inherit",
102
- borderWidth: "inherit",
103
- padding: "0",
104
- },
105
- "& h2 code": {
106
- fontSize: "0.9em",
107
- },
108
- "& h3 code": {
109
- fontSize: "0.8em",
110
- },
111
- "& pre": {
112
- backgroundColor: "bg.subtle",
113
- marginTop: "1.6em",
114
- marginBottom: "1.6em",
115
- borderRadius: "md",
116
- fontSize: "0.9em",
117
- paddingTop: "0.65em",
118
- paddingBottom: "0.65em",
119
- paddingInlineEnd: "1em",
120
- paddingInlineStart: "1em",
121
- overflowX: "auto",
122
- fontWeight: "400",
123
- },
124
- "& ol": {
125
- marginTop: "1em",
126
- marginBottom: "1em",
127
- paddingInlineStart: "1.5em",
128
- },
129
- "& ul": {
130
- marginTop: "1em",
131
- marginBottom: "1em",
132
- paddingInlineStart: "1.5em",
133
- },
134
- "& li": {
135
- marginTop: "0.285em",
136
- marginBottom: "0.285em",
137
- },
138
- "& ol > li": {
139
- paddingInlineStart: "0.4em",
140
- listStyleType: "decimal",
141
- "&::marker": {
142
- color: "fg.muted",
143
- },
144
- },
145
- "& ul > li": {
146
- paddingInlineStart: "0.4em",
147
- listStyleType: "disc",
148
- "&::marker": {
149
- color: "fg.muted",
150
- },
151
- },
152
- "& > ul > li p": {
153
- marginTop: "0.5em",
154
- marginBottom: "0.5em",
155
- },
156
- "& > ul > li > p:first-of-type": {
157
- marginTop: "1em",
158
- },
159
- "& > ul > li > p:last-of-type": {
160
- marginBottom: "1em",
161
- },
162
- "& > ol > li > p:first-of-type": {
163
- marginTop: "1em",
164
- },
165
- "& > ol > li > p:last-of-type": {
166
- marginBottom: "1em",
167
- },
168
- "& ul ul, ul ol, ol ul, ol ol": {
169
- marginTop: "0.5em",
170
- marginBottom: "0.5em",
171
- },
172
- "& dl": {
173
- marginTop: "1em",
174
- marginBottom: "1em",
175
- },
176
- "& dt": {
177
- fontWeight: "600",
178
- marginTop: "1em",
179
- },
180
- "& dd": {
181
- marginTop: "0.285em",
182
- paddingInlineStart: "1.5em",
183
- },
184
- "& hr": {
185
- marginTop: "2.25em",
186
- marginBottom: "2.25em",
187
- },
188
- "& :is(h1,h2,h3,h4,h5,hr) + *": {
189
- marginTop: "0",
190
- },
191
- "& table": {
192
- width: "100%",
193
- tableLayout: "auto",
194
- textAlign: "start",
195
- lineHeight: "1.5em",
196
- marginTop: "2em",
197
- marginBottom: "2em",
198
- },
199
- "& thead": {
200
- borderBottomWidth: "1px",
201
- color: "fg",
202
- },
203
- "& tbody tr": {
204
- borderBottomWidth: "1px",
205
- borderBottomColor: "border",
206
- },
207
- "& thead th": {
208
- paddingInlineEnd: "1em",
209
- paddingBottom: "0.65em",
210
- paddingInlineStart: "1em",
211
- fontWeight: "medium",
212
- textAlign: "start",
213
- },
214
- "& thead th:first-of-type": {
215
- paddingInlineStart: "0",
216
- },
217
- "& thead th:last-of-type": {
218
- paddingInlineEnd: "0",
219
- },
220
- "& tbody td, tfoot td": {
221
- paddingTop: "0.65em",
222
- paddingInlineEnd: "1em",
223
- paddingBottom: "0.65em",
224
- paddingInlineStart: "1em",
225
- },
226
- "& tbody td:first-of-type, tfoot td:first-of-type": {
227
- paddingInlineStart: "0",
228
- },
229
- "& tbody td:last-of-type, tfoot td:last-of-type": {
230
- paddingInlineEnd: "0",
231
- },
232
- "& figure": {
233
- marginTop: "1.625em",
234
- marginBottom: "1.625em",
235
- },
236
- "& figure > *": {
237
- marginTop: "0",
238
- marginBottom: "0",
239
- },
240
- "& figcaption": {
241
- fontSize: "0.85em",
242
- lineHeight: "1.25em",
243
- marginTop: "0.85em",
244
- color: "fg.muted",
245
- },
246
- "& h1, h2, h3, h4": {
247
- color: "fg",
248
- fontWeight: "600",
249
- },
250
- },
251
- variants: {
252
- size: {
253
- md: {
254
- fontSize: "sm",
255
- },
256
- lg: {
257
- fontSize: "md",
258
- },
259
- },
260
- },
261
- defaultVariants: {
262
- size: "md",
263
- },
264
- })
@@ -1,12 +0,0 @@
1
- "use client"
2
-
3
- import { ChakraProvider, defaultSystem } from "@chakra-ui/react"
4
- import { ColorModeProvider } from "compositions/ui/color-mode"
5
-
6
- export function Provider(props: React.PropsWithChildren) {
7
- return (
8
- <ChakraProvider value={defaultSystem}>
9
- <ColorModeProvider>{props.children}</ColorModeProvider>
10
- </ChakraProvider>
11
- )
12
- }