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

Sign up to get free protection for your applications and to get access to all the features.
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
- }