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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/dist/chunk-2EUACKRH.js +26 -0
  3. package/dist/chunk-3MO37LYW.js +326 -0
  4. package/dist/chunk-4TR3AOMG.js +33 -0
  5. package/dist/chunk-6LOMIKR5.js +69 -0
  6. package/dist/chunk-6ZNR6N2K.js +45 -0
  7. package/dist/chunk-7VSTNV2B.js +53 -0
  8. package/dist/chunk-BCNPBZZK.js +45 -0
  9. package/dist/chunk-CB52LBJK.js +71 -0
  10. package/dist/chunk-CD2JUFI2.js +231 -0
  11. package/dist/chunk-FJFNGSPL.js +23 -0
  12. package/dist/chunk-GGAKUS66.js +141 -0
  13. package/dist/chunk-H6TFEHY4.js +63 -0
  14. package/dist/chunk-HELHPHIQ.js +35 -0
  15. package/dist/chunk-I2RXEKTB.js +38 -0
  16. package/dist/chunk-JGHXJ3PI.js +102 -0
  17. package/dist/chunk-L356FPLY.js +20 -0
  18. package/dist/chunk-LIYUBUOP.js +119 -0
  19. package/dist/chunk-M7FOBCOV.js +184 -0
  20. package/dist/chunk-NSD5HRIP.js +46 -0
  21. package/dist/chunk-Q6SNJJO2.js +63 -0
  22. package/dist/chunk-QSNSWCTM.js +32 -0
  23. package/dist/chunk-S3CQW7GD.js +100 -0
  24. package/dist/chunk-SA3OGTOO.js +23 -0
  25. package/dist/chunk-SKXSBAOS.js +35 -0
  26. package/dist/{components/breadcrumbs/index.js → chunk-TT4C5VXB.js} +6 -7
  27. package/dist/chunk-TZBAM4AD.js +20 -0
  28. package/dist/chunk-UCQ3LZIE.js +43 -0
  29. package/dist/chunk-ULAJ3JEO.js +32 -0
  30. package/dist/chunk-WYLMBMAH.js +22 -0
  31. package/dist/components/app-shell/index.cjs +1 -1
  32. package/dist/components/app-shell/index.d.cts +1 -1
  33. package/dist/components/app-shell/index.d.ts +1 -1
  34. package/dist/components/app-shell/index.js +3 -40
  35. package/dist/components/avatar/index.cjs +69 -0
  36. package/dist/components/avatar/index.d.cts +18 -0
  37. package/dist/components/avatar/index.d.ts +18 -0
  38. package/dist/components/avatar/index.js +10 -0
  39. package/dist/components/{breadcrumbs → breadcrumb}/index.cjs +8 -10
  40. package/dist/components/{breadcrumbs → breadcrumb}/index.d.cts +3 -4
  41. package/dist/components/{breadcrumbs → breadcrumb}/index.d.ts +3 -4
  42. package/dist/components/breadcrumb/index.js +8 -0
  43. package/dist/components/button/index.js +3 -40
  44. package/dist/components/checkbox/index.js +3 -15
  45. package/dist/components/command/index.cjs +1 -1
  46. package/dist/components/command/index.js +3 -28
  47. package/dist/components/dialog/index.cjs +19 -58
  48. package/dist/components/dialog/index.js +4 -67
  49. package/dist/components/drawer/index.cjs +23 -64
  50. package/dist/components/drawer/index.d.cts +2 -2
  51. package/dist/components/drawer/index.d.ts +2 -2
  52. package/dist/components/drawer/index.js +4 -59
  53. package/dist/components/empty-state/index.cjs +48 -0
  54. package/dist/components/empty-state/index.d.cts +11 -0
  55. package/dist/components/empty-state/index.d.ts +11 -0
  56. package/dist/components/empty-state/index.js +8 -0
  57. package/dist/components/grid-list/index.cjs +68 -0
  58. package/dist/components/grid-list/index.d.cts +22 -0
  59. package/dist/components/grid-list/index.d.ts +22 -0
  60. package/dist/components/grid-list/index.js +8 -0
  61. package/dist/components/icon-badge/index.cjs +1 -1
  62. package/dist/components/icon-badge/index.d.cts +1 -1
  63. package/dist/components/icon-badge/index.d.ts +1 -1
  64. package/dist/components/icon-badge/index.js +3 -33
  65. package/dist/components/link/index.js +3 -14
  66. package/dist/components/loading-overlay/index.cjs +42 -1879
  67. package/dist/components/loading-overlay/index.d.cts +19 -6
  68. package/dist/components/loading-overlay/index.d.ts +19 -6
  69. package/dist/components/loading-overlay/index.js +7 -1874
  70. package/dist/components/menu/index.cjs +249 -0
  71. package/dist/components/menu/index.d.cts +39 -0
  72. package/dist/components/menu/index.d.ts +39 -0
  73. package/dist/components/menu/index.js +11 -0
  74. package/dist/components/navbar/index.cjs +61 -15
  75. package/dist/components/navbar/index.d.cts +12 -9
  76. package/dist/components/navbar/index.d.ts +12 -9
  77. package/dist/components/navbar/index.js +5 -38
  78. package/dist/components/number-input/index.js +3 -26
  79. package/dist/components/password-input/index.js +3 -225
  80. package/dist/components/persona/index.cjs +52 -15
  81. package/dist/components/persona/index.d.cts +22 -2
  82. package/dist/components/persona/index.d.ts +22 -2
  83. package/dist/components/persona/index.js +7 -144
  84. package/dist/components/pin-input/index.js +3 -21
  85. package/dist/components/radio/index.js +4 -16
  86. package/dist/components/search-input/index.js +4 -114
  87. package/dist/components/segmented-control/index.cjs +60 -0
  88. package/dist/components/segmented-control/index.d.cts +14 -0
  89. package/dist/components/segmented-control/index.d.ts +14 -0
  90. package/dist/components/segmented-control/index.js +8 -0
  91. package/dist/components/select/index.js +4 -94
  92. package/dist/components/sidebar/index.cjs +64 -32
  93. package/dist/components/sidebar/index.d.cts +24 -23
  94. package/dist/components/sidebar/index.d.ts +24 -23
  95. package/dist/components/sidebar/index.js +7 -101
  96. package/dist/components/steps/index.cjs +7 -9
  97. package/dist/components/steps/index.d.cts +2 -2
  98. package/dist/components/steps/index.d.ts +2 -2
  99. package/dist/components/steps/index.js +6 -67
  100. package/dist/components/switch/index.js +3 -18
  101. package/dist/components/toaster/index.cjs +54 -0
  102. package/dist/components/toaster/index.d.cts +10 -0
  103. package/dist/components/toaster/index.d.ts +10 -0
  104. package/dist/components/toaster/index.js +10 -0
  105. package/dist/components/tooltip/index.cjs +57 -0
  106. package/dist/components/tooltip/index.d.cts +14 -0
  107. package/dist/components/tooltip/index.d.ts +14 -0
  108. package/dist/components/tooltip/index.js +8 -0
  109. package/dist/index.cjs +2357 -220
  110. package/dist/index.d.cts +38 -2
  111. package/dist/index.d.ts +38 -2
  112. package/dist/index.js +515 -276
  113. package/dist/theme/tokens/colors.cjs +349 -0
  114. package/dist/theme/tokens/colors.d.cts +856 -0
  115. package/dist/theme/tokens/colors.d.ts +856 -0
  116. package/dist/theme/tokens/colors.js +8 -0
  117. package/package.json +12 -7
  118. package/dist/chunk-VBIVLREP.js +0 -45
  119. package/src/components/app-shell/app-shell.recipe.ts +0 -52
  120. package/src/components/app-shell/app-shell.stories.tsx +0 -51
  121. package/src/components/app-shell/app-shell.tsx +0 -94
  122. package/src/components/app-shell/index.ts +0 -3
  123. package/src/components/breadcrumbs/breadcrumb.stories.tsx +0 -17
  124. package/src/components/breadcrumbs/breadcrumb.tsx +0 -36
  125. package/src/components/breadcrumbs/index.ts +0 -1
  126. package/src/components/breadcrumbs/namespace.ts +0 -8
  127. package/src/components/button/button.recipe.ts +0 -182
  128. package/src/components/button/button.stories.tsx +0 -99
  129. package/src/components/button/button.tsx +0 -55
  130. package/src/components/button/index.ts +0 -2
  131. package/src/components/checkbox/checkbox.tsx +0 -26
  132. package/src/components/checkbox/index.ts +0 -2
  133. package/src/components/close-button/close-button.stories.tsx +0 -12
  134. package/src/components/close-button/close-button.tsx +0 -18
  135. package/src/components/close-button/index.ts +0 -2
  136. package/src/components/command/command.recipe.ts +0 -17
  137. package/src/components/command/command.stories.tsx +0 -47
  138. package/src/components/command/command.tsx +0 -50
  139. package/src/components/command/index.ts +0 -1
  140. package/src/components/dialog/dialog.tsx +0 -67
  141. package/src/components/dialog/index.ts +0 -1
  142. package/src/components/dialog/namespace.ts +0 -18
  143. package/src/components/drawer/drawer.tsx +0 -57
  144. package/src/components/drawer/index.ts +0 -3
  145. package/src/components/drawer/namespace.ts +0 -19
  146. package/src/components/grid-list/grid-list.recipe.ts +0 -113
  147. package/src/components/icon-badge/icon-badge.recipe.ts +0 -57
  148. package/src/components/icon-badge/icon-badge.stories.tsx +0 -38
  149. package/src/components/icon-badge/icon-badge.tsx +0 -59
  150. package/src/components/icon-badge/index.ts +0 -2
  151. package/src/components/icons/create-icon.tsx +0 -41
  152. package/src/components/icons/icons.tsx +0 -119
  153. package/src/components/icons/index.ts +0 -1
  154. package/src/components/input-group/index.ts +0 -1
  155. package/src/components/input-group/input-group.tsx +0 -46
  156. package/src/components/link/index.ts +0 -2
  157. package/src/components/link/link.stories.tsx +0 -17
  158. package/src/components/link/link.test.tsx +0 -33
  159. package/src/components/link/link.tsx +0 -27
  160. package/src/components/loading-overlay/index.ts +0 -1
  161. package/src/components/loading-overlay/loading-overlay.recipe.ts +0 -61
  162. package/src/components/loading-overlay/loading-overlay.stories.tsx +0 -68
  163. package/src/components/loading-overlay/loading-overlay.tsx +0 -54
  164. package/src/components/loading-overlay/namespace.ts +0 -7
  165. package/src/components/navbar/index.ts +0 -1
  166. package/src/components/navbar/namespace.ts +0 -9
  167. package/src/components/navbar/navbar.recipe.ts +0 -109
  168. package/src/components/navbar/navbar.stories.tsx +0 -435
  169. package/src/components/navbar/navbar.test.tsx +0 -49
  170. package/src/components/navbar/navbar.tsx +0 -39
  171. package/src/components/number-input/index.ts +0 -2
  172. package/src/components/number-input/number-input.tsx +0 -41
  173. package/src/components/password-input/index.ts +0 -2
  174. package/src/components/password-input/password-input.tsx +0 -93
  175. package/src/components/persona/index.ts +0 -2
  176. package/src/components/persona/namespace.ts +0 -18
  177. package/src/components/persona/persona-primitive.tsx +0 -220
  178. package/src/components/persona/persona.recipe.ts +0 -94
  179. package/src/components/persona/persona.stories.tsx +0 -101
  180. package/src/components/persona/persona.tsx +0 -142
  181. package/src/components/pin-input/index.ts +0 -2
  182. package/src/components/pin-input/pin-input.tsx +0 -36
  183. package/src/components/radio/index.ts +0 -2
  184. package/src/components/radio/radio.tsx +0 -27
  185. package/src/components/search-input/index.ts +0 -2
  186. package/src/components/search-input/search-input.stories.tsx +0 -63
  187. package/src/components/search-input/search-input.tsx +0 -134
  188. package/src/components/select/index.ts +0 -1
  189. package/src/components/select/namespace.ts +0 -18
  190. package/src/components/select/select.tsx +0 -135
  191. package/src/components/sidebar/index.ts +0 -7
  192. package/src/components/sidebar/namespace.ts +0 -27
  193. package/src/components/sidebar/sidebar-item.recipe.ts +0 -65
  194. package/src/components/sidebar/sidebar.recipe.ts +0 -237
  195. package/src/components/sidebar/sidebar.stories.tsx +0 -903
  196. package/src/components/sidebar/sidebar.tsx +0 -208
  197. package/src/components/spinner/index.ts +0 -2
  198. package/src/components/spinner/spinner.stories.tsx +0 -19
  199. package/src/components/spinner/spinner.tsx +0 -21
  200. package/src/components/steps/index.ts +0 -1
  201. package/src/components/steps/namespace.ts +0 -16
  202. package/src/components/steps/steps.tsx +0 -82
  203. package/src/components/switch/index.ts +0 -3
  204. package/src/components/switch/switch.tsx +0 -39
  205. package/src/compositions/accordion.tsx +0 -47
  206. package/src/compositions/action-bar.tsx +0 -40
  207. package/src/compositions/alert.tsx +0 -51
  208. package/src/compositions/avatar.tsx +0 -74
  209. package/src/compositions/blockquote.tsx +0 -31
  210. package/src/compositions/checkbox-card.tsx +0 -57
  211. package/src/compositions/checkbox.tsx +0 -25
  212. package/src/compositions/clipboard.tsx +0 -107
  213. package/src/compositions/color-mode.tsx +0 -65
  214. package/src/compositions/data-list.tsx +0 -37
  215. package/src/compositions/empty-state.tsx +0 -34
  216. package/src/compositions/field.tsx +0 -33
  217. package/src/compositions/file-button.tsx +0 -166
  218. package/src/compositions/hover-card.tsx +0 -35
  219. package/src/compositions/link-button.tsx +0 -12
  220. package/src/compositions/menu.tsx +0 -108
  221. package/src/compositions/native-select.tsx +0 -57
  222. package/src/compositions/pagination.tsx +0 -207
  223. package/src/compositions/popover.tsx +0 -58
  224. package/src/compositions/progress-circle.tsx +0 -37
  225. package/src/compositions/progress.tsx +0 -40
  226. package/src/compositions/prose.tsx +0 -264
  227. package/src/compositions/provider.tsx +0 -12
  228. package/src/compositions/radio-card.tsx +0 -57
  229. package/src/compositions/radio.tsx +0 -24
  230. package/src/compositions/rating.tsx +0 -27
  231. package/src/compositions/segmented-control.tsx +0 -47
  232. package/src/compositions/skeleton.tsx +0 -44
  233. package/src/compositions/slider.tsx +0 -53
  234. package/src/compositions/stat.tsx +0 -75
  235. package/src/compositions/status.tsx +0 -29
  236. package/src/compositions/stepper-input.tsx +0 -49
  237. package/src/compositions/tag.tsx +0 -39
  238. package/src/compositions/timeline.tsx +0 -17
  239. package/src/compositions/toaster.tsx +0 -43
  240. package/src/compositions/toggle-tip.tsx +0 -62
  241. package/src/compositions/tooltip.tsx +0 -46
  242. package/src/index.ts +0 -7
  243. package/src/preset.ts +0 -9
  244. package/src/provider/index.ts +0 -4
  245. package/src/provider/sui-provider.tsx +0 -34
  246. package/src/provider/use-link.test.tsx +0 -60
  247. package/src/provider/use-link.tsx +0 -13
  248. package/src/styled-system/create-recipe-context.tsx +0 -91
  249. package/src/styled-system/create-slot-recipe-context.tsx +0 -188
  250. package/src/styled-system/empty.ts +0 -7
  251. package/src/styled-system/factory.types.ts +0 -11
  252. package/src/theme/animation-styles.ts +0 -53
  253. package/src/theme/breakpoints.ts +0 -11
  254. package/src/theme/conditions.ts +0 -26
  255. package/src/theme/fluid-font-sizes.ts +0 -65
  256. package/src/theme/global-css.ts +0 -94
  257. package/src/theme/index.ts +0 -72
  258. package/src/theme/layer-styles.ts +0 -116
  259. package/src/theme/recipes/chakra/accordion.ts +0 -145
  260. package/src/theme/recipes/chakra/action-bar.ts +0 -62
  261. package/src/theme/recipes/chakra/alert.ts +0 -157
  262. package/src/theme/recipes/chakra/avatar.ts +0 -141
  263. package/src/theme/recipes/chakra/badge.ts +0 -67
  264. package/src/theme/recipes/chakra/blockquote.ts +0 -83
  265. package/src/theme/recipes/chakra/breadcrumb.ts +0 -94
  266. package/src/theme/recipes/chakra/card.ts +0 -99
  267. package/src/theme/recipes/chakra/checkbox-card.ts +0 -212
  268. package/src/theme/recipes/chakra/checkbox.ts +0 -70
  269. package/src/theme/recipes/chakra/checkmark.ts +0 -83
  270. package/src/theme/recipes/chakra/code.ts +0 -17
  271. package/src/theme/recipes/chakra/collapsible.ts +0 -20
  272. package/src/theme/recipes/chakra/container.ts +0 -26
  273. package/src/theme/recipes/chakra/data-list.ts +0 -80
  274. package/src/theme/recipes/chakra/dialog.ts +0 -225
  275. package/src/theme/recipes/chakra/drawer.ts +0 -201
  276. package/src/theme/recipes/chakra/editable.ts +0 -88
  277. package/src/theme/recipes/chakra/empty-state.ts +0 -88
  278. package/src/theme/recipes/chakra/field.ts +0 -68
  279. package/src/theme/recipes/chakra/fieldset.ts +0 -62
  280. package/src/theme/recipes/chakra/file-upload.ts +0 -96
  281. package/src/theme/recipes/chakra/heading.ts +0 -27
  282. package/src/theme/recipes/chakra/hover-card.ts +0 -68
  283. package/src/theme/recipes/chakra/icon.ts +0 -30
  284. package/src/theme/recipes/chakra/input-addon.ts +0 -40
  285. package/src/theme/recipes/chakra/input.ts +0 -96
  286. package/src/theme/recipes/chakra/kbd.ts +0 -60
  287. package/src/theme/recipes/chakra/link.ts +0 -37
  288. package/src/theme/recipes/chakra/list.ts +0 -67
  289. package/src/theme/recipes/chakra/mark.ts +0 -27
  290. package/src/theme/recipes/chakra/menu.ts +0 -124
  291. package/src/theme/recipes/chakra/native-select.ts +0 -140
  292. package/src/theme/recipes/chakra/number-input.ts +0 -115
  293. package/src/theme/recipes/chakra/pin-input.ts +0 -27
  294. package/src/theme/recipes/chakra/popover.ts +0 -86
  295. package/src/theme/recipes/chakra/progress-circle.ts +0 -94
  296. package/src/theme/recipes/chakra/progress.ts +0 -127
  297. package/src/theme/recipes/chakra/radio-card.ts +0 -220
  298. package/src/theme/recipes/chakra/radio-group.ts +0 -72
  299. package/src/theme/recipes/chakra/radiomark.ts +0 -107
  300. package/src/theme/recipes/chakra/rating-group.ts +0 -94
  301. package/src/theme/recipes/chakra/segment-group.ts +0 -117
  302. package/src/theme/recipes/chakra/select.ts +0 -282
  303. package/src/theme/recipes/chakra/separator.ts +0 -51
  304. package/src/theme/recipes/chakra/skeleton.ts +0 -53
  305. package/src/theme/recipes/chakra/skip-nav-link.ts +0 -34
  306. package/src/theme/recipes/chakra/slider.ts +0 -178
  307. package/src/theme/recipes/chakra/spinner.ts +0 -32
  308. package/src/theme/recipes/chakra/stat.ts +0 -79
  309. package/src/theme/recipes/chakra/status.ts +0 -48
  310. package/src/theme/recipes/chakra/steps.ts +0 -218
  311. package/src/theme/recipes/chakra/switch.ts +0 -167
  312. package/src/theme/recipes/chakra/table.ts +0 -172
  313. package/src/theme/recipes/chakra/tabs.ts +0 -280
  314. package/src/theme/recipes/chakra/tag.ts +0 -131
  315. package/src/theme/recipes/chakra/textarea.ts +0 -88
  316. package/src/theme/recipes/chakra/timeline.ts +0 -138
  317. package/src/theme/recipes/chakra/toast.ts +0 -96
  318. package/src/theme/recipes/chakra/tooltip.ts +0 -40
  319. package/src/theme/recipes.ts +0 -46
  320. package/src/theme/semantic-tokens/colors.ts +0 -403
  321. package/src/theme/semantic-tokens/radii.ts +0 -7
  322. package/src/theme/semantic-tokens/shadows.ts +0 -52
  323. package/src/theme/slot-recipes.ts +0 -104
  324. package/src/theme/text-styles.ts +0 -39
  325. package/src/theme/tokens/animations.ts +0 -8
  326. package/src/theme/tokens/aspect-ratios.ts +0 -10
  327. package/src/theme/tokens/blurs.ts +0 -12
  328. package/src/theme/tokens/borders.ts +0 -9
  329. package/src/theme/tokens/colors.ts +0 -177
  330. package/src/theme/tokens/cursor.ts +0 -12
  331. package/src/theme/tokens/durations.ts +0 -11
  332. package/src/theme/tokens/easings.ts +0 -10
  333. package/src/theme/tokens/font-sizes.ts +0 -20
  334. package/src/theme/tokens/font-weights.ts +0 -13
  335. package/src/theme/tokens/fonts.ts +0 -15
  336. package/src/theme/tokens/keyframes.ts +0 -173
  337. package/src/theme/tokens/letter-spacing.ts +0 -9
  338. package/src/theme/tokens/line-heights.ts +0 -19
  339. package/src/theme/tokens/radius.ts +0 -18
  340. package/src/theme/tokens/sizes.ts +0 -71
  341. package/src/theme/tokens/spacing.ts +0 -38
  342. package/src/theme/tokens/z-indices.ts +0 -34
  343. package/src/theme/utils.ts +0 -46
  344. /package/dist/{chunk-KHRLZUV4.js → chunk-O2WVT2BP.js} +0 -0
@@ -1,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
- }