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

Sign up to get free protection for your applications and to get access to all the features.
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
package/dist/index.cjs CHANGED
@@ -860,11 +860,6 @@ var inputRecipe = (0, import_react14.defineRecipe)({
860
860
  },
861
861
  variants: {
862
862
  size: {
863
- "2xs": {
864
- textStyle: "xs",
865
- px: "2",
866
- "--input-height": "sizes.7"
867
- },
868
863
  xs: {
869
864
  textStyle: "xs",
870
865
  px: "2",
@@ -889,11 +884,6 @@ var inputRecipe = (0, import_react14.defineRecipe)({
889
884
  textStyle: "md",
890
885
  px: "4.5",
891
886
  "--input-height": "sizes.12"
892
- },
893
- "2xl": {
894
- textStyle: "lg",
895
- px: "5",
896
- "--input-height": "sizes.16"
897
887
  }
898
888
  },
899
889
  variant: {
@@ -2147,7 +2137,7 @@ var loadingOverlaySlotRecipe = (0, import_react30.defineSlotRecipe)({
2147
2137
  var import_react31 = require("@chakra-ui/react");
2148
2138
  var navbarSlotRecipe = (0, import_react31.defineSlotRecipe)({
2149
2139
  className: "sui-navbar",
2150
- slots: ["root", "content", "brand", "item"],
2140
+ slots: ["root", "content", "brand", "item", "link"],
2151
2141
  base: {
2152
2142
  root: {
2153
2143
  display: "flex",
@@ -2351,7 +2341,7 @@ var personaSlotRecipe = (0, import_react32.defineSlotRecipe)({
2351
2341
  var import_react33 = require("@chakra-ui/react");
2352
2342
  var sidebarNavItemSlotRecipe = (0, import_react33.defineSlotRecipe)({
2353
2343
  className: "sui-sidebar-nav-item",
2354
- slots: ["item", "button"],
2344
+ slots: ["item", "button", "endElement"],
2355
2345
  base: {
2356
2346
  item: {
2357
2347
  position: "relative"
package/dist/index.js CHANGED
@@ -827,11 +827,6 @@ var inputRecipe = defineRecipe10({
827
827
  },
828
828
  variants: {
829
829
  size: {
830
- "2xs": {
831
- textStyle: "xs",
832
- px: "2",
833
- "--input-height": "sizes.7"
834
- },
835
830
  xs: {
836
831
  textStyle: "xs",
837
832
  px: "2",
@@ -856,11 +851,6 @@ var inputRecipe = defineRecipe10({
856
851
  textStyle: "md",
857
852
  px: "4.5",
858
853
  "--input-height": "sizes.12"
859
- },
860
- "2xl": {
861
- textStyle: "lg",
862
- px: "5",
863
- "--input-height": "sizes.16"
864
854
  }
865
855
  },
866
856
  variant: {
@@ -2114,7 +2104,7 @@ var loadingOverlaySlotRecipe = defineSlotRecipe3({
2114
2104
  import { defineSlotRecipe as defineSlotRecipe4 } from "@chakra-ui/react";
2115
2105
  var navbarSlotRecipe = defineSlotRecipe4({
2116
2106
  className: "sui-navbar",
2117
- slots: ["root", "content", "brand", "item"],
2107
+ slots: ["root", "content", "brand", "item", "link"],
2118
2108
  base: {
2119
2109
  root: {
2120
2110
  display: "flex",
@@ -2318,7 +2308,7 @@ var personaSlotRecipe = defineSlotRecipe5({
2318
2308
  import { defineSlotRecipe as defineSlotRecipe6 } from "@chakra-ui/react";
2319
2309
  var sidebarNavItemSlotRecipe = defineSlotRecipe6({
2320
2310
  className: "sui-sidebar-nav-item",
2321
- slots: ["item", "button"],
2311
+ slots: ["item", "button", "endElement"],
2322
2312
  base: {
2323
2313
  item: {
2324
2314
  position: "relative"
package/package.json CHANGED
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "@saas-ui/react",
3
- "version": "3.0.0-alpha.1",
3
+ "version": "3.0.0-alpha.2",
4
4
  "description": "Saas UI - The React component library for startups.",
5
- "source": "src/index.ts",
6
5
  "type": "module",
7
6
  "exports": {
8
7
  ".": {
@@ -33,8 +32,7 @@
33
32
  "typecheck": "tsc --noEmit"
34
33
  },
35
34
  "files": [
36
- "dist",
37
- "src"
35
+ "dist"
38
36
  ],
39
37
  "sideEffects": false,
40
38
  "publishConfig": {
@@ -65,8 +63,8 @@
65
63
  "url": "https://storybook.saas-ui.dev"
66
64
  },
67
65
  "dependencies": {
68
- "@saas-ui/core": "3.0.0-alpha.1",
69
- "@saas-ui/hooks": "3.0.0-alpha.1"
66
+ "@saas-ui/core": "3.0.0-alpha.2",
67
+ "@saas-ui/hooks": "3.0.0-alpha.2"
70
68
  },
71
69
  "peerDependencies": {
72
70
  "@chakra-ui/react": "^3.0.0",
@@ -1,52 +0,0 @@
1
- import { defineSlotRecipe } from '@chakra-ui/react'
2
-
3
- export const appShellSlotRecipe = defineSlotRecipe({
4
- className: 'sui-app-shell',
5
- slots: ['root', 'content', 'main'],
6
- base: {
7
- root: {
8
- display: 'flex',
9
- flexDirection: 'column',
10
- },
11
- content: {
12
- display: 'flex',
13
- flex: 1,
14
- minWidth: 0,
15
- minHeight: 0,
16
- },
17
- main: {
18
- display: 'flex',
19
- flex: 1,
20
- flexDirection: 'column',
21
- minWidth: 0,
22
- },
23
- },
24
- variants: {
25
- position: {
26
- static: {
27
- root: {
28
- height: '100vh',
29
- },
30
- },
31
- fullscreen: {
32
- root: {
33
- position: 'fixed',
34
- inset: 0,
35
- },
36
- },
37
- },
38
- variant: {
39
- plain: {},
40
- raised: {
41
- main: {
42
- boxShadow: 'xs',
43
- zIndex: 'layer-1',
44
- },
45
- },
46
- },
47
- },
48
- defaultVariants: {
49
- position: 'static',
50
- variant: 'raised',
51
- },
52
- })
@@ -1,51 +0,0 @@
1
- import * as React from 'react'
2
-
3
- import { Box } from '@chakra-ui/react'
4
- import type { Meta } from '@storybook/react'
5
-
6
- import { useAppShellStyles } from './app-shell.tsx'
7
- import { AppShell } from './index.ts'
8
-
9
- export default {
10
- title: 'Components/AppShell',
11
- parameters: {
12
- layout: 'fullscreen',
13
- },
14
- } as Meta
15
-
16
- export const FullscreenVariant = {
17
- render: () => (
18
- <AppShell
19
- header={
20
- <Box height="40px" borderBottomWidth="1px" p="2">
21
- Header
22
- </Box>
23
- }
24
- sidebar={
25
- <Box width="200px" borderRightWidth="1px" p="2">
26
- Sidebar
27
- </Box>
28
- }
29
- aside={
30
- <Box width="200px" borderLeftWidth="1px" p="2">
31
- Aside
32
- </Box>
33
- }
34
- footer={
35
- <Box height="40px" borderTopWidth="1px" p="2">
36
- Footer
37
- </Box>
38
- }
39
- >
40
- <Box p="2">Content</Box>
41
- </AppShell>
42
- ),
43
- }
44
-
45
- function Test() {
46
- const styles = useAppShellStyles()
47
-
48
- console.log(styles)
49
-
50
- return null
51
- }
@@ -1,94 +0,0 @@
1
- 'use client'
2
-
3
- import { forwardRef } from 'react'
4
-
5
- import {
6
- type HTMLChakraProps,
7
- type SlotRecipeProps,
8
- createSlotRecipeContext,
9
- } from '@chakra-ui/react'
10
-
11
- ////////////////////////////////////////////////////////////////////////////////////
12
-
13
- const {
14
- withProvider,
15
- withContext,
16
- useStyles: useAppShellStyles,
17
- } = createSlotRecipeContext({
18
- key: 'appShell',
19
- })
20
-
21
- export { useAppShellStyles }
22
-
23
- export interface AppShellProps extends HTMLChakraProps<'div'> {
24
- /**
25
- * The top header navigation
26
- */
27
- header?: React.ReactNode
28
- /**
29
- * Main sidebar, positioned on the left
30
- */
31
- sidebar?: React.ReactElement
32
- /**
33
- * Secondary sidebar, positioned on the right
34
- */
35
- aside?: React.ReactNode
36
- /**
37
- * The footer
38
- */
39
- footer?: React.ReactNode
40
- /**
41
- * The main content
42
- */
43
- children: React.ReactNode
44
- }
45
-
46
- export interface AppShellRootProps
47
- extends AppShellProps,
48
- SlotRecipeProps<'appShell'> {}
49
-
50
- /**
51
- * The App Shell defines the main structure of your app.
52
- *
53
- * @see Docs https://saas-ui.dev/docs/components/layout/app-shell
54
- */
55
- export const AppShellRoot = withProvider<HTMLDivElement, AppShellRootProps>(
56
- 'div',
57
- 'root',
58
- { forwardAsChild: true },
59
- )
60
-
61
- export interface AppShellContentProps extends HTMLChakraProps<'div'> {}
62
-
63
- export const AppShellContent = withContext<
64
- HTMLDivElement,
65
- AppShellContentProps
66
- >('div', 'content', { forwardAsChild: true })
67
-
68
- export interface AppShellMainProps extends HTMLChakraProps<'div'> {}
69
-
70
- export const AppShellMain = withContext<HTMLDivElement, AppShellMainProps>(
71
- 'div',
72
- 'main',
73
- { forwardAsChild: true },
74
- )
75
-
76
- export const AppShell = forwardRef<HTMLDivElement, AppShellRootProps>(
77
- (props, ref) => {
78
- const { header, sidebar, aside, footer, children, ...rootProps } = props
79
-
80
- return (
81
- <AppShellRoot ref={ref} {...rootProps}>
82
- {header}
83
- <AppShellContent>
84
- {sidebar}
85
- <AppShellMain>{children}</AppShellMain>
86
- {aside}
87
- </AppShellContent>
88
- {footer}
89
- </AppShellRoot>
90
- )
91
- },
92
- )
93
-
94
- AppShell.displayName = 'AppShell'
@@ -1,3 +0,0 @@
1
- export { AppShell } from './app-shell'
2
-
3
- export type { AppShellProps } from './app-shell'
@@ -1,17 +0,0 @@
1
- import React from 'react'
2
-
3
- import { Breadcrumb } from './index.ts'
4
-
5
- export default {
6
- title: 'Components/Breadcrumbs',
7
- component: Breadcrumb.Root,
8
- }
9
-
10
- export const Default = {
11
- args: {
12
- children: [
13
- <Breadcrumb.Link href="/">Home</Breadcrumb.Link>,
14
- <Breadcrumb.CurrentLink>Contact</Breadcrumb.CurrentLink>,
15
- ],
16
- },
17
- }
@@ -1,36 +0,0 @@
1
- import { Children, Fragment, forwardRef, isValidElement } from 'react'
2
-
3
- import { Breadcrumb, type SystemStyleObject } from '@chakra-ui/react'
4
-
5
- export interface BreadcrumbRootProps extends Breadcrumb.RootProps {
6
- separator?: React.ReactNode
7
- separatorGap?: SystemStyleObject['gap']
8
- }
9
-
10
- export const BreadcrumbRoot = forwardRef<HTMLDivElement, BreadcrumbRootProps>(
11
- function BreadcrumbRoot(props, ref) {
12
- const { separator = '/', separatorGap, children, ...rest } = props
13
- const validChildren = Children.toArray(children).filter(isValidElement)
14
- return (
15
- <Breadcrumb.Root ref={ref} {...rest}>
16
- <Breadcrumb.List gap={separatorGap}>
17
- {validChildren.map((child, index) => {
18
- const last = index === validChildren.length - 1
19
- return (
20
- <Fragment key={index}>
21
- <Breadcrumb.Item>{child}</Breadcrumb.Item>
22
- {!last && (
23
- <Breadcrumb.Separator>{separator}</Breadcrumb.Separator>
24
- )}
25
- </Fragment>
26
- )
27
- })}
28
- </Breadcrumb.List>
29
- </Breadcrumb.Root>
30
- )
31
- },
32
- )
33
-
34
- export const BreadcrumbLink = Breadcrumb.Link
35
- export const BreadcrumbCurrentLink = Breadcrumb.CurrentLink
36
- export const BreadcrumbEllipsis = Breadcrumb.Ellipsis
@@ -1 +0,0 @@
1
- export * as Breadcrumb from './namespace.ts'
@@ -1,8 +0,0 @@
1
- export {
2
- BreadcrumbRoot as Root,
3
- BreadcrumbLink as Link,
4
- BreadcrumbCurrentLink as CurrentLink,
5
- BreadcrumbEllipsis as Ellipsis,
6
- } from './breadcrumb.tsx'
7
-
8
- export type { BreadcrumbRootProps } from './breadcrumb.tsx'
@@ -1,182 +0,0 @@
1
- import { defineRecipe } from '@chakra-ui/react'
2
-
3
- export const buttonRecipe = defineRecipe({
4
- className: 'chakra-button',
5
- base: {
6
- display: 'inline-flex',
7
- appearance: 'none',
8
- alignItems: 'center',
9
- justifyContent: 'center',
10
- userSelect: 'none',
11
- position: 'relative',
12
- whiteSpace: 'nowrap',
13
- verticalAlign: 'middle',
14
- cursor: 'pointer',
15
- flexShrink: '0',
16
- outline: '0',
17
- lineHeight: '1.2',
18
- isolation: 'isolate',
19
- fontWeight: 'medium',
20
- transitionProperty: 'common',
21
- transitionDuration: 'moderate',
22
- focusVisibleRing: 'outside',
23
- _disabled: {
24
- layerStyle: 'disabled',
25
- },
26
- _icon: {
27
- fontSize: '1em',
28
- flexShrink: 0,
29
- },
30
- },
31
-
32
- variants: {
33
- size: {
34
- xs: {
35
- gap: '1',
36
- h: '6',
37
- minW: '6',
38
- textStyle: 'xs',
39
- borderRadius: 'sm',
40
- px: '2',
41
- },
42
- sm: {
43
- gap: '2',
44
- h: '7',
45
- minW: '8',
46
- textStyle: 'sm',
47
- borderRadius: 'md',
48
- px: '3',
49
- },
50
- md: {
51
- gap: '2',
52
- h: '8',
53
- minW: '8',
54
- borderRadius: 'md',
55
- textStyle: 'sm',
56
- px: '4',
57
- },
58
- lg: {
59
- gap: '3',
60
- h: '10',
61
- minW: '10',
62
- borderRadius: 'lg',
63
- textStyle: 'md',
64
- px: '5',
65
- },
66
- xl: {
67
- gap: '3',
68
- h: '12',
69
- minW: '12',
70
- borderRadius: 'lg',
71
- textStyle: 'lg',
72
- px: '6',
73
- },
74
- },
75
-
76
- variant: {
77
- solid: {
78
- bg: 'colorPalette.solid',
79
- boxShadow: 'sm',
80
- color: 'colorPalette.contrast',
81
- _hover: {
82
- bg: 'colorPalette.solid/90',
83
- },
84
- _expanded: {
85
- bg: 'colorPalette.solid/90',
86
- },
87
- },
88
-
89
- subtle: {
90
- bg: 'colorPalette.muted',
91
- color: 'colorPalette.fg',
92
- _hover: {
93
- bg: 'colorPalette.subtle',
94
- },
95
- _expanded: {
96
- bg: 'colorPalette.subtle',
97
- },
98
- },
99
-
100
- glass: {
101
- bg: 'colorPalette.solid',
102
- color: 'colorPalette.contrast',
103
- '--btn-shadow': 'shadows.sm',
104
- boxShadow:
105
- '0 0 0 1px rgba(0,0,0,0.4) inset, 0px 2px 0px 0px rgba(255,255,255,0.2) inset, var(--btn-shadow)',
106
- textShadow: '0 1px 2px rgba(0,0,0,0.3)',
107
- _after: {
108
- content: '""',
109
- position: 'absolute',
110
- top: '0',
111
- left: '0',
112
- right: '0',
113
- bottom: '0',
114
- background: 'linear-gradient(180deg, white 40%, rgba(0,0,0,0.2))',
115
- opacity: 0.2,
116
- transitionProperty: 'opacity',
117
- transitionDuration: 'moderate',
118
- pointerEvents: 'none',
119
- },
120
- _hover: {
121
- bg: 'colorPalette.solid',
122
- _after: {
123
- opacity: 0.24,
124
- },
125
- },
126
- _expanded: {
127
- bg: 'colorPalette.solid',
128
- _after: {
129
- opacity: 0.24,
130
- },
131
- },
132
- },
133
-
134
- surface: {
135
- bg: 'colorPalette.surface',
136
- borderWidth: '0.5px',
137
- borderColor: 'colorPalette.emphasized',
138
- color: 'colorPalette.fg',
139
- shadow: 'sm',
140
- shadowColor: 'colorPalette.emphasized',
141
- _hover: {
142
- bg: 'colorPalette.muted',
143
- },
144
- _expanded: {
145
- bg: 'colorPalette.muted',
146
- },
147
- },
148
-
149
- outline: {
150
- borderWidth: '0.5px',
151
- borderColor: 'colorPalette.emphasized',
152
- color: 'colorPalette.fg',
153
- _hover: {
154
- bg: 'colorPalette.muted',
155
- },
156
- _expanded: {
157
- bg: 'colorPalette.muted',
158
- },
159
- },
160
-
161
- ghost: {
162
- color: 'colorPalette.fg',
163
- _hover: {
164
- bg: 'colorPalette.muted',
165
- },
166
- _expanded: {
167
- bg: 'colorPalette.muted',
168
- },
169
- },
170
-
171
- plain: {
172
- color: 'colorPalette.fg',
173
- },
174
- },
175
- },
176
-
177
- defaultVariants: {
178
- size: 'md',
179
- variant: 'solid',
180
- colorPalette: 'gray',
181
- },
182
- })
@@ -1,99 +0,0 @@
1
- import React from 'react'
2
-
3
- import { Box, HStack, Stack } from '@chakra-ui/react'
4
-
5
- import { Button } from './button.tsx'
6
-
7
- export default {
8
- title: 'Components/Button',
9
- component: Button,
10
- }
11
-
12
- export const Default = {
13
- args: {
14
- children: 'Default button',
15
- },
16
- }
17
-
18
- export const Variants = {
19
- render: () => (
20
- <Stack gap="4">
21
- <HStack>
22
- <Button variant="glass" colorPalette="indigo">
23
- Primary
24
- </Button>
25
- <Button variant="surface">Secondary</Button>
26
- </HStack>
27
- <HStack>
28
- <Button variant="solid">Solid</Button>
29
- <Button variant="glass">Glass</Button>
30
- <Button variant="surface">Surface</Button>
31
- <Button variant="outline">Outline</Button>
32
- <Button variant="subtle">Subtle</Button>
33
- <Button variant="ghost">Ghost</Button>
34
- </HStack>
35
- <HStack>
36
- <Button variant="solid" colorPalette="neutral">
37
- Solid
38
- </Button>
39
- <Button variant="glass" colorPalette="neutral">
40
- Glass
41
- </Button>
42
- <Button variant="surface" colorPalette="neutral">
43
- Surface
44
- </Button>
45
- <Button variant="outline" colorPalette="neutral">
46
- Outline
47
- </Button>
48
- <Button variant="subtle" colorPalette="neutral">
49
- Subtle
50
- </Button>
51
- <Button variant="ghost" colorPalette="neutral">
52
- Ghost
53
- </Button>
54
- </HStack>
55
- <HStack>
56
- <Button variant="solid" colorPalette="blue">
57
- Solid
58
- </Button>
59
- <Button variant="glass" colorPalette="blue">
60
- Glass
61
- </Button>
62
- <Button variant="surface" colorPalette="blue">
63
- Surface
64
- </Button>
65
- <Button variant="outline" colorPalette="blue">
66
- Outline
67
- </Button>
68
- <Button variant="subtle" colorPalette="blue">
69
- Subtle
70
- </Button>
71
- <Button variant="ghost" colorPalette="blue">
72
- Ghost
73
- </Button>
74
- </HStack>
75
- </Stack>
76
- ),
77
- }
78
-
79
- export const Sizes = {
80
- render: () => (
81
- <HStack>
82
- <Button size="xs" variant="glass">
83
- XSmall
84
- </Button>
85
- <Button size="sm" variant="glass">
86
- Small
87
- </Button>
88
- <Button size="md" variant="glass">
89
- Medium
90
- </Button>
91
- <Button size="lg" variant="glass">
92
- Large
93
- </Button>
94
- <Button size="xl" variant="glass">
95
- XLarge
96
- </Button>
97
- </HStack>
98
- ),
99
- }