@commercetools/nimbus 0.0.1 → 0.0.3-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/dist/index.d.ts +1412 -0
  2. package/dist/index.js +22451 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/index.umd.cjs +27 -0
  5. package/dist/index.umd.cjs.map +1 -0
  6. package/package.json +74 -40
  7. package/.storybook/apca-check/index.ts +0 -150
  8. package/.storybook/main.ts +0 -64
  9. package/.storybook/preview.tsx +0 -92
  10. package/.storybook/vitest.setup.ts +0 -13
  11. package/docs/architecture-decisions/adr-0001-consumer-component-apis.md +0 -177
  12. package/docs/architecture-decisions/adr-0002-compound-component-extraction.md +0 -82
  13. package/src/components/accordion/accordion-context.tsx +0 -17
  14. package/src/components/accordion/accordion.mdx +0 -172
  15. package/src/components/accordion/accordion.recipe.tsx +0 -98
  16. package/src/components/accordion/accordion.slots.tsx +0 -39
  17. package/src/components/accordion/accordion.stories.tsx +0 -188
  18. package/src/components/accordion/accordion.tsx +0 -16
  19. package/src/components/accordion/accordion.types.tsx +0 -54
  20. package/src/components/accordion/components/accordion-content.tsx +0 -28
  21. package/src/components/accordion/components/accordion-group.tsx +0 -27
  22. package/src/components/accordion/components/accordion-header.tsx +0 -63
  23. package/src/components/accordion/components/accordion-item.tsx +0 -87
  24. package/src/components/accordion/index.ts +0 -2
  25. package/src/components/alert/alert.mdx +0 -92
  26. package/src/components/alert/alert.recipe.tsx +0 -65
  27. package/src/components/alert/alert.slots.tsx +0 -46
  28. package/src/components/alert/alert.stories.tsx +0 -308
  29. package/src/components/alert/alert.tsx +0 -18
  30. package/src/components/alert/alert.types.tsx +0 -70
  31. package/src/components/alert/components/alert.actions.tsx +0 -27
  32. package/src/components/alert/components/alert.description.tsx +0 -27
  33. package/src/components/alert/components/alert.dismiss-button.tsx +0 -41
  34. package/src/components/alert/components/alert.root.tsx +0 -92
  35. package/src/components/alert/components/alert.title.tsx +0 -29
  36. package/src/components/alert/index.ts +0 -2
  37. package/src/components/avatar/avatar.mdx +0 -80
  38. package/src/components/avatar/avatar.recipe.tsx +0 -36
  39. package/src/components/avatar/avatar.slots.tsx +0 -16
  40. package/src/components/avatar/avatar.stories.tsx +0 -136
  41. package/src/components/avatar/avatar.tsx +0 -34
  42. package/src/components/avatar/avatar.types.ts +0 -33
  43. package/src/components/avatar/index.ts +0 -2
  44. package/src/components/badge/badge.mdx +0 -91
  45. package/src/components/badge/badge.recipe.tsx +0 -72
  46. package/src/components/badge/badge.slots.tsx +0 -8
  47. package/src/components/badge/badge.stories.tsx +0 -124
  48. package/src/components/badge/badge.tsx +0 -35
  49. package/src/components/badge/badge.types.tsx +0 -40
  50. package/src/components/badge/index.ts +0 -2
  51. package/src/components/bleed/bleed.tsx +0 -1
  52. package/src/components/bleed/index.ts +0 -1
  53. package/src/components/box/box.mdx +0 -115
  54. package/src/components/box/box.stories.tsx +0 -71
  55. package/src/components/box/box.tsx +0 -11
  56. package/src/components/box/index.ts +0 -1
  57. package/src/components/button/button.mdx +0 -169
  58. package/src/components/button/button.recipe.ts +0 -185
  59. package/src/components/button/button.slots.tsx +0 -45
  60. package/src/components/button/button.stories.tsx +0 -369
  61. package/src/components/button/button.tsx +0 -37
  62. package/src/components/button/button.types.ts +0 -14
  63. package/src/components/button/index.ts +0 -2
  64. package/src/components/card/card.mdx +0 -92
  65. package/src/components/card/card.recipe.tsx +0 -71
  66. package/src/components/card/card.slots.tsx +0 -50
  67. package/src/components/card/card.stories.tsx +0 -175
  68. package/src/components/card/card.tsx +0 -9
  69. package/src/components/card/card.types.ts +0 -22
  70. package/src/components/card/components/card.content.tsx +0 -29
  71. package/src/components/card/components/card.header.tsx +0 -28
  72. package/src/components/card/components/card.root.tsx +0 -62
  73. package/src/components/card/index.ts +0 -2
  74. package/src/components/checkbox/checkbox.mdx +0 -78
  75. package/src/components/checkbox/checkbox.recipe.tsx +0 -116
  76. package/src/components/checkbox/checkbox.slots.tsx +0 -33
  77. package/src/components/checkbox/checkbox.stories.tsx +0 -200
  78. package/src/components/checkbox/checkbox.tsx +0 -77
  79. package/src/components/checkbox/checkbox.types.tsx +0 -22
  80. package/src/components/checkbox/index.ts +0 -2
  81. package/src/components/code/code.mdx +0 -17
  82. package/src/components/code/code.recipe.ts +0 -63
  83. package/src/components/code/code.tsx +0 -1
  84. package/src/components/code/index.ts +0 -1
  85. package/src/components/dialog/dialog.mdx +0 -20
  86. package/src/components/dialog/dialog.recipe.ts +0 -254
  87. package/src/components/dialog/dialog.tsx +0 -61
  88. package/src/components/dialog/index.ts +0 -1
  89. package/src/components/em/em.mdx +0 -17
  90. package/src/components/em/em.tsx +0 -1
  91. package/src/components/em/index.ts +0 -1
  92. package/src/components/flex/flex.mdx +0 -41
  93. package/src/components/flex/flex.tsx +0 -1
  94. package/src/components/flex/index.ts +0 -1
  95. package/src/components/grid/grid.mdx +0 -156
  96. package/src/components/grid/grid.stories.tsx +0 -151
  97. package/src/components/grid/grid.tsx +0 -29
  98. package/src/components/grid/index.ts +0 -1
  99. package/src/components/heading/heading.mdx +0 -23
  100. package/src/components/heading/heading.recipe.ts +0 -49
  101. package/src/components/heading/heading.tsx +0 -1
  102. package/src/components/heading/index.ts +0 -1
  103. package/src/components/highlight/highlight.mdx +0 -18
  104. package/src/components/highlight/highlight.tsx +0 -1
  105. package/src/components/highlight/index.ts +0 -1
  106. package/src/components/icon-button/icon-button.mdx +0 -98
  107. package/src/components/icon-button/icon-button.stories.tsx +0 -188
  108. package/src/components/icon-button/icon-button.tsx +0 -21
  109. package/src/components/icon-button/icon-button.types.tsx +0 -10
  110. package/src/components/icon-button/index.ts +0 -2
  111. package/src/components/index.ts +0 -33
  112. package/src/components/input/index.ts +0 -1
  113. package/src/components/input/input.mdx +0 -20
  114. package/src/components/input/input.recipe.ts +0 -95
  115. package/src/components/input/input.tsx +0 -1
  116. package/src/components/input-group/index.ts +0 -1
  117. package/src/components/input-group/input-group.mdx +0 -20
  118. package/src/components/input-group/input-group.tsx +0 -44
  119. package/src/components/kbd/index.ts +0 -1
  120. package/src/components/kbd/kbd.mdx +0 -18
  121. package/src/components/kbd/kbd.recipe.ts +0 -57
  122. package/src/components/kbd/kbd.tsx +0 -1
  123. package/src/components/link/index.ts +0 -2
  124. package/src/components/link/link.mdx +0 -77
  125. package/src/components/link/link.recipe.ts +0 -52
  126. package/src/components/link/link.slots.tsx +0 -29
  127. package/src/components/link/link.stories.tsx +0 -204
  128. package/src/components/link/link.tsx +0 -38
  129. package/src/components/link/link.types.tsx +0 -26
  130. package/src/components/list/index.ts +0 -1
  131. package/src/components/list/list.mdx +0 -18
  132. package/src/components/list/list.recipe.ts +0 -68
  133. package/src/components/list/list.tsx +0 -9
  134. package/src/components/loading-spinner/index.ts +0 -2
  135. package/src/components/loading-spinner/loading-spinner.mdx +0 -92
  136. package/src/components/loading-spinner/loading-spinner.recipe.tsx +0 -70
  137. package/src/components/loading-spinner/loading-spinner.slots.tsx +0 -38
  138. package/src/components/loading-spinner/loading-spinner.stories.tsx +0 -97
  139. package/src/components/loading-spinner/loading-spinner.tsx +0 -50
  140. package/src/components/loading-spinner/loading-spinner.types.tsx +0 -21
  141. package/src/components/nimbus-provider/color-mode.tsx +0 -32
  142. package/src/components/nimbus-provider/index.ts +0 -2
  143. package/src/components/nimbus-provider/nimbus-provider.mdx +0 -21
  144. package/src/components/nimbus-provider/nimbus-provider.tsx +0 -51
  145. package/src/components/select/components/select.clear-button.tsx +0 -31
  146. package/src/components/select/components/select.option-group.tsx +0 -48
  147. package/src/components/select/components/select.option.tsx +0 -21
  148. package/src/components/select/components/select.options.tsx +0 -23
  149. package/src/components/select/components/select.root.tsx +0 -81
  150. package/src/components/select/index.ts +0 -2
  151. package/src/components/select/select.mdx +0 -170
  152. package/src/components/select/select.recipe.tsx +0 -216
  153. package/src/components/select/select.slots.tsx +0 -58
  154. package/src/components/select/select.stories.tsx +0 -841
  155. package/src/components/select/select.tsx +0 -18
  156. package/src/components/select/select.types.tsx +0 -37
  157. package/src/components/simple-grid/index.ts +0 -1
  158. package/src/components/simple-grid/simple-grid.mdx +0 -133
  159. package/src/components/simple-grid/simple-grid.stories.tsx +0 -143
  160. package/src/components/simple-grid/simple-grid.tsx +0 -31
  161. package/src/components/stack/index.ts +0 -1
  162. package/src/components/stack/stack.mdx +0 -88
  163. package/src/components/stack/stack.stories.tsx +0 -82
  164. package/src/components/stack/stack.tsx +0 -15
  165. package/src/components/table/index.ts +0 -1
  166. package/src/components/table/table.mdx +0 -23
  167. package/src/components/table/table.recipe.ts +0 -170
  168. package/src/components/table/table.tsx +0 -43
  169. package/src/components/text/index.ts +0 -1
  170. package/src/components/text/text.mdx +0 -244
  171. package/src/components/text/text.tsx +0 -23
  172. package/src/components/text-input/index.ts +0 -2
  173. package/src/components/text-input/text-input.mdx +0 -118
  174. package/src/components/text-input/text-input.recipe.tsx +0 -68
  175. package/src/components/text-input/text-input.slots.tsx +0 -24
  176. package/src/components/text-input/text-input.stories.tsx +0 -282
  177. package/src/components/text-input/text-input.tsx +0 -39
  178. package/src/components/text-input/text-input.types.ts +0 -7
  179. package/src/components/toggle-button-group/components/toggle-button-group.button.tsx +0 -14
  180. package/src/components/toggle-button-group/components/toggle-button-group.root.tsx +0 -15
  181. package/src/components/toggle-button-group/index.ts +0 -2
  182. package/src/components/toggle-button-group/toggle-button-group.mdx +0 -94
  183. package/src/components/toggle-button-group/toggle-button-group.recipe.tsx +0 -64
  184. package/src/components/toggle-button-group/toggle-button-group.slots.tsx +0 -26
  185. package/src/components/toggle-button-group/toggle-button-group.stories.tsx +0 -311
  186. package/src/components/toggle-button-group/toggle-button-group.tsx +0 -12
  187. package/src/components/toggle-button-group/toggle-button-group.types.tsx +0 -62
  188. package/src/components/tooltip/index.ts +0 -4
  189. package/src/components/tooltip/make-element-focusable.stories.tsx +0 -56
  190. package/src/components/tooltip/make-element-focusable.tsx +0 -57
  191. package/src/components/tooltip/tooltip-trigger.stories.tsx +0 -157
  192. package/src/components/tooltip/tooltip-trigger.tsx +0 -15
  193. package/src/components/tooltip/tooltip.mdx +0 -48
  194. package/src/components/tooltip/tooltip.recipe.ts +0 -26
  195. package/src/components/tooltip/tooltip.slots.ts +0 -35
  196. package/src/components/tooltip/tooltip.stories.tsx +0 -139
  197. package/src/components/tooltip/tooltip.tsx +0 -31
  198. package/src/components/tooltip/tooltip.types.ts +0 -44
  199. package/src/components/visually-hidden/index.ts +0 -1
  200. package/src/components/visually-hidden/visually-hidden.mdx +0 -61
  201. package/src/components/visually-hidden/visually-hidden.stories.tsx +0 -124
  202. package/src/components/visually-hidden/visually-hidden.tsx +0 -18
  203. package/src/docs/accessibility.mdx +0 -21
  204. package/src/docs/background.mdx +0 -154
  205. package/src/docs/border.mdx +0 -226
  206. package/src/docs/changelog.mdx +0 -17
  207. package/src/docs/components-layout.mdx +0 -22
  208. package/src/docs/components.mdx +0 -17
  209. package/src/docs/data-display.mdx +0 -23
  210. package/src/docs/display.mdx +0 -55
  211. package/src/docs/effects.mdx +0 -73
  212. package/src/docs/feedback.mdx +0 -22
  213. package/src/docs/filters.mdx +0 -268
  214. package/src/docs/flex-and-grid.mdx +0 -445
  215. package/src/docs/forms.mdx +0 -22
  216. package/src/docs/generated/index.mdx +0 -16
  217. package/src/docs/getting-started.mdx +0 -17
  218. package/src/docs/home.mdx +0 -56
  219. package/src/docs/hooks.mdx +0 -16
  220. package/src/docs/inputs.mdx +0 -21
  221. package/src/docs/installation.mdx +0 -60
  222. package/src/docs/interactivity.mdx +0 -278
  223. package/src/docs/known-issues.mdx +0 -19
  224. package/src/docs/layout.mdx +0 -301
  225. package/src/docs/list.mdx +0 -82
  226. package/src/docs/markdown.mdx +0 -234
  227. package/src/docs/media.mdx +0 -22
  228. package/src/docs/naivgation.mdx +0 -22
  229. package/src/docs/playground.mdx +0 -16
  230. package/src/docs/rfcs-component-structure-rfcs.mdx +0 -17
  231. package/src/docs/rfcs-component-structure.mdx +0 -74
  232. package/src/docs/rfcs-hook-structure.mdx +0 -59
  233. package/src/docs/sizing.mdx +0 -210
  234. package/src/docs/spacing.mdx +0 -193
  235. package/src/docs/style-props-typography.mdx +0 -373
  236. package/src/docs/style-props.mdx +0 -15
  237. package/src/docs/svg.mdx +0 -58
  238. package/src/docs/tables.mdx +0 -95
  239. package/src/docs/toc.mdx +0 -39
  240. package/src/docs/tokens/animations.mdx +0 -68
  241. package/src/docs/tokens/aspect-ratios.mdx +0 -21
  242. package/src/docs/tokens/blurs.mdx +0 -20
  243. package/src/docs/tokens/borders.mdx +0 -25
  244. package/src/docs/tokens/breakpoints.mdx +0 -35
  245. package/src/docs/tokens/colors.mdx +0 -86
  246. package/src/docs/tokens/cursors.mdx +0 -21
  247. package/src/docs/tokens/radii.mdx +0 -23
  248. package/src/docs/tokens/shadows.mdx +0 -21
  249. package/src/docs/tokens/sizes.mdx +0 -54
  250. package/src/docs/tokens/spacing.mdx +0 -35
  251. package/src/docs/tokens/typography.mdx +0 -61
  252. package/src/docs/tokens/z-indices.mdx +0 -23
  253. package/src/docs/tokens-other.mdx +0 -17
  254. package/src/docs/tokens.mdx +0 -16
  255. package/src/docs/transforms.mdx +0 -150
  256. package/src/docs/transitions.mdx +0 -164
  257. package/src/docs/typography.mdx +0 -17
  258. package/src/docs/utilities.mdx +0 -17
  259. package/src/hooks/index.ts +0 -2
  260. package/src/hooks/use-copy-to-clipboard/use-copy-to-clipboard.mdx +0 -54
  261. package/src/hooks/use-copy-to-clipboard/use-copy-to-clipboard.ts +0 -1
  262. package/src/hooks/use-hotkeys/use-hotkeys.mdx +0 -48
  263. package/src/hooks/use-hotkeys/use-hotkeys.stories.tsx +0 -69
  264. package/src/hooks/use-hotkeys/use-hotkeys.ts +0 -1
  265. package/src/index.ts +0 -3
  266. package/src/test/utils.tsx +0 -20
  267. package/src/theme/animation-styles.ts +0 -52
  268. package/src/theme/breakpoints.ts +0 -32
  269. package/src/theme/global-css.ts +0 -53
  270. package/src/theme/index.ts +0 -35
  271. package/src/theme/keyframes.ts +0 -192
  272. package/src/theme/layer-styles.ts +0 -12
  273. package/src/theme/recipes/index.ts +0 -21
  274. package/src/theme/semantic-tokens/colors.ts +0 -55
  275. package/src/theme/semantic-tokens/index.ts +0 -9
  276. package/src/theme/semantic-tokens/radii.ts +0 -3
  277. package/src/theme/semantic-tokens/shadows.ts +0 -4
  278. package/src/theme/slot-recipes/index.ts +0 -15
  279. package/src/theme/text-styles.ts +0 -8
  280. package/src/theme/tokens/animations.ts +0 -4
  281. package/src/theme/tokens/aspect-ratios.ts +0 -5
  282. package/src/theme/tokens/blurs.ts +0 -5
  283. package/src/theme/tokens/borders.ts +0 -4
  284. package/src/theme/tokens/colors.ts +0 -8
  285. package/src/theme/tokens/cursor.ts +0 -4
  286. package/src/theme/tokens/durations.ts +0 -4
  287. package/src/theme/tokens/easings.ts +0 -4
  288. package/src/theme/tokens/font-sizes.ts +0 -4
  289. package/src/theme/tokens/font-weights.ts +0 -4
  290. package/src/theme/tokens/fonts.ts +0 -4
  291. package/src/theme/tokens/index.ts +0 -57
  292. package/src/theme/tokens/letter-spacings.ts +0 -24
  293. package/src/theme/tokens/line-heights.ts +0 -4
  294. package/src/theme/tokens/radii.ts +0 -4
  295. package/src/theme/tokens/sizes.ts +0 -120
  296. package/src/theme/tokens/spacing.ts +0 -4
  297. package/src/theme/tokens/z-index.ts +0 -4
  298. package/src/utils/extractStyleProps.ts +0 -26
  299. package/src/utils/fixedForwardRef.ts +0 -17
  300. package/tsconfig.json +0 -38
  301. package/vite.config.ts +0 -54
  302. package/vitest.config.ts +0 -50
@@ -1,91 +0,0 @@
1
- ---
2
- id: Components-Badge
3
- title: Badge
4
- description: To display small status indicators or labels.
5
- documentState: InitialDraft
6
- order: 999
7
- menu:
8
- - Components
9
- - Badge
10
- tags:
11
- - component
12
- ---
13
-
14
- # Badge
15
-
16
- To display small status indicators or labels.
17
-
18
- ## Basic Usage
19
-
20
- [Explain the basic usage / usecase of the component].
21
-
22
- ```jsx-live
23
- const App = () => <Badge>I am Badge!</Badge>
24
- ```
25
-
26
- ### Sizes
27
-
28
- Available sizes.
29
-
30
- ```jsx-live
31
- const App = () => {
32
-
33
- const sizes = ['md', 'xs', '2xs'];
34
-
35
- return (
36
- <Stack direction="horizontal" alignItems="center">
37
- {sizes.map(size => (
38
- <Badge key={size} size={size}>'{size}' Badge</Badge>
39
- ))}
40
- </Stack>
41
- )
42
- }
43
- ```
44
-
45
- ### Variants
46
-
47
- Available variants.
48
-
49
- ```jsx-live
50
- const App = () => {
51
-
52
- const variants = ['solid', 'subtle', 'outline', 'ghost', 'plain'];
53
-
54
- return (
55
- <Stack direction="horizontal">
56
- {variants.map(variant => (
57
- <Badge key={variant} variant={variant}>'{variant}' Badge</Badge>
58
- ))}
59
- </Stack>
60
- )
61
- }
62
- ```
63
-
64
- ### Colors
65
-
66
- [Explain usage with different colors/semantics.]
67
-
68
- ```jsx-live
69
- const App = () => {
70
- const variants = ["solid", "subtle", "outline", "ghost", "link", "plain"];
71
- const colors = ["neutral", "primary", "info", "success", "danger", "error"];
72
-
73
- return (
74
- <Stack>
75
- {colors.map((color) => (
76
- <Stack key={color} direction="horizontal">
77
- {variants.map((variant) => (
78
- <Badge colorPalette={color} key={variant} variant={variant}>
79
- '{variant}' Badge
80
- </Badge>
81
- ))}
82
- </Stack>
83
- ))}
84
- </Stack>
85
- );
86
- };
87
- ```
88
-
89
- ## Props
90
-
91
- <PropTable id="Badge" />
@@ -1,72 +0,0 @@
1
- import { defineRecipe } from "@chakra-ui/react";
2
-
3
- /**
4
- * Recipe configuration for the Badge component.
5
- * Defines the styling variants and base styles using Chakra UI's recipe system.
6
- */
7
- export const badgeRecipe = defineRecipe({
8
- className: "nimbus-badge",
9
-
10
- // Base styles applied to all instances of the component
11
- base: {
12
- display: "inline-flex",
13
- alignItems: "center",
14
- borderRadius: "200",
15
- justifyContent: "center",
16
- whiteSpace: "nowrap",
17
- verticalAlign: "middle",
18
- py: "25",
19
- fontWeight: "500",
20
- backgroundColor: "colorPalette.3",
21
- color: "colorPalette.11",
22
- w: "auto",
23
- userSelect: "none",
24
- _icon: {
25
- flexShrink: "0",
26
- },
27
- },
28
-
29
- // Available variants for customizing the component's appearance
30
- variants: {
31
- size: {
32
- "2xs": {
33
- fontSize: "300",
34
- gap: "100",
35
- h: "600",
36
- lineHeight: "350",
37
- px: "200",
38
- _icon: {
39
- width: "400",
40
- height: "400",
41
- },
42
- },
43
- xs: {
44
- fontSize: "350",
45
- gap: "100",
46
- h: "800",
47
- lineHeight: "400",
48
- px: "300",
49
- _icon: {
50
- width: "500",
51
- height: "500",
52
- },
53
- },
54
- md: {
55
- fontSize: "400",
56
- gap: "200",
57
- h: "1000",
58
- lineHeight: "500",
59
- px: "400",
60
- _icon: {
61
- width: "600",
62
- height: "600",
63
- },
64
- },
65
- },
66
- },
67
-
68
- // Default variant values when not explicitly specified
69
- defaultVariants: {
70
- size: "md",
71
- },
72
- });
@@ -1,8 +0,0 @@
1
- import { createRecipeContext } from "@chakra-ui/react";
2
-
3
- import { badgeRecipe } from "./badge.recipe";
4
- import type { BadgeRootProps } from "./badge.types";
5
-
6
- const { withContext } = createRecipeContext({ recipe: badgeRecipe });
7
-
8
- export const BadgeRoot = withContext<HTMLSpanElement, BadgeRootProps>("span");
@@ -1,124 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import { Badge } from "./badge";
3
- import { Stack } from "./../stack";
4
- import type { BadgeProps } from "./badge.types";
5
- import { SentimentSatisfied as DemoIcon } from "@commercetools/nimbus-icons";
6
- import { within, expect } from "@storybook/test";
7
-
8
- const sizes: BadgeProps["size"][] = ["2xs", "xs", "md"];
9
- const colors: Array<
10
- "amber" | "blue" | "grass" | "slate" | "tomato" | "primary"
11
- > = ["primary", "tomato", "grass", "amber", "blue", "slate"];
12
-
13
- /**
14
- * Storybook metadata configuration
15
- * - title: determines the location in the sidebar
16
- * - component: references the component being documented
17
- */
18
- const meta: Meta<typeof Badge> = {
19
- title: "components/Badge",
20
- component: Badge,
21
- };
22
-
23
- export default meta;
24
-
25
- /**
26
- * Story type for TypeScript support
27
- * StoryObj provides type checking for our story configurations
28
- */
29
- type Story = StoryObj<typeof Badge>;
30
- /**
31
- * Base story
32
- * Demonstrates the most basic implementation
33
- * Uses the args pattern for dynamic control panel inputs
34
- */
35
-
36
- export const Base: Story = {
37
- args: {
38
- children: "Demo Badge",
39
- size: "md",
40
- colorPalette: "grass",
41
- ["data-testid"]: "badge-test",
42
- ["aria-label"]: "badge",
43
- },
44
- play: async ({ canvasElement, step }) => {
45
- const canvas = within(canvasElement);
46
- const link = canvas.getByTestId("badge-test");
47
-
48
- await step("Uses a <span> element by default", async () => {
49
- await expect(link.tagName).toBe("SPAN");
50
- });
51
- await step("Forwards data- & aria-attributes", async () => {
52
- await expect(link).toHaveAttribute("data-testid", "badge-test");
53
- await expect(link).toHaveAttribute("aria-label", "badge");
54
- });
55
-
56
- await step("Renders children", async () => {
57
- await expect(link).toHaveTextContent("Demo Badge");
58
- });
59
- },
60
- };
61
-
62
- /**
63
- * Showcase Sizes
64
- */
65
- export const Sizes: Story = {
66
- args: {},
67
- render: (args) => {
68
- return (
69
- <Stack direction="row" gap="400" alignItems="center">
70
- {sizes.map((size) => (
71
- <Badge key={size as string} {...args} size={size}>
72
- {String(size)}
73
- </Badge>
74
- ))}
75
- </Stack>
76
- );
77
- },
78
- };
79
-
80
- /**
81
- * Showcase Possible Colors
82
- */
83
- export const Colors: Story = {
84
- args: {
85
- children: "Demo Badge",
86
- size: "xs",
87
- },
88
- render: (args) => {
89
- return (
90
- <Stack direction="row" gap="400" alignItems="center">
91
- {colors.map((color) => (
92
- <Badge key={color as string} {...args} colorPalette={color} />
93
- ))}
94
- </Stack>
95
- );
96
- },
97
- };
98
-
99
- /**
100
- * Showcase Icons
101
- */
102
- export const WithIcons: Story = {
103
- args: {
104
- size: "md",
105
- },
106
- render: (args) => {
107
- const demoText = "Demo Badge";
108
- return (
109
- <Stack direction="row" gap="400" alignItems="center">
110
- <Badge {...args}>
111
- {demoText} <DemoIcon />
112
- </Badge>
113
-
114
- <Badge {...args}>
115
- <DemoIcon /> {demoText}
116
- </Badge>
117
-
118
- <Badge {...args}>
119
- <DemoIcon /> {demoText} <DemoIcon />
120
- </Badge>
121
- </Stack>
122
- );
123
- },
124
- };
@@ -1,35 +0,0 @@
1
- import { forwardRef, useRef } from "react";
2
- import { BadgeRoot } from "./badge.slots";
3
- import type { BadgeProps } from "./badge.types";
4
- import { mergeRefs } from "@chakra-ui/react";
5
- import { useObjectRef, mergeProps } from "react-aria";
6
- /**
7
- * Badge
8
- * ============================================================
9
- * badge
10
- *
11
- * Features:
12
- *
13
- * - allows forwarding refs to the underlying DOM element
14
- * - accepts all native html 'HTMLSpanElement' attributes (including aria- & data-attributes)
15
- * - supports 'variants', 'sizes', etc. configured in the recipe
16
- * - allows overriding styles by using style-props
17
- * - supports 'asChild' and 'as' to modify the underlying html-element (polymorphic)
18
- */
19
-
20
- export const Badge = forwardRef<HTMLSpanElement, BadgeProps>(
21
- (props, forwardedRef) => {
22
- const { as, asChild, children, ...rest } = props;
23
-
24
- const localRef = useRef<HTMLSpanElement>(null);
25
- const ref = useObjectRef(mergeRefs(localRef, forwardedRef));
26
-
27
- const elementType = as || "span";
28
-
29
- return (
30
- <BadgeRoot as={elementType} {...mergeProps(rest, { ref })}>
31
- {children}
32
- </BadgeRoot>
33
- );
34
- }
35
- );
@@ -1,40 +0,0 @@
1
- import type {
2
- RecipeProps,
3
- UnstyledProp,
4
- HTMLChakraProps,
5
- RecipeVariantProps,
6
- } from "@chakra-ui/react";
7
- import { badgeRecipe } from "./badge.recipe";
8
-
9
- /**
10
- * Base recipe props interface that combines Chakra UI's recipe props
11
- * with the unstyled prop option for the span element.
12
- */
13
- export interface BadgeRecipeProps extends RecipeProps<"span">, UnstyledProp {}
14
-
15
- /**
16
- * Root props interface that extends Chakra's HTML props with our recipe props.
17
- * This creates a complete set of props for the root element, combining
18
- * HTML attributes, Chakra's styling system, and our custom recipe props.
19
- */
20
- export interface BadgeRootProps
21
- extends HTMLChakraProps<"span", BadgeRecipeProps> {}
22
-
23
- /**
24
- * Combines the root props with Chakra UI's recipe variant props.
25
- * This allows the component to accept both structural props from Root
26
- * and styling variants from the recipe.
27
- */
28
- type BadgeVariantProps = BadgeRootProps &
29
- RecipeVariantProps<typeof badgeRecipe> & {
30
- [key: `data-${string}`]: string;
31
- };
32
-
33
- /**
34
- * Main props interface for the Badge component.
35
- * Extends BadgeVariantProps to include both root props and variant props,
36
- * while adding support for React children.
37
- */
38
- export interface BadgeProps extends BadgeVariantProps {
39
- children?: React.ReactNode;
40
- }
@@ -1,2 +0,0 @@
1
- export * from "./badge";
2
- export * from "./badge.types";
@@ -1 +0,0 @@
1
- export { Bleed } from "@chakra-ui/react";
@@ -1 +0,0 @@
1
- export * from "./bleed";
@@ -1,115 +0,0 @@
1
- ---
2
- id: Components-Box
3
- title: Box
4
- description: A basic layout component that serves as a wrapper or container.
5
- documentState: InitialDraft
6
- order: 999
7
- menu:
8
- - Components
9
- - Layout
10
- - Box
11
- tags:
12
- - component
13
- ---
14
-
15
- # Box
16
-
17
- Box is a basic layout component that serves as a wrapper or container. It's
18
- based on the
19
- [Chakra UI Box component](https://chakra-ui.com/docs/components/box) and
20
- supports all style props for rapid UI development.
21
-
22
- ## Import
23
-
24
- ```jsx
25
- import { Box } from "@commercetools/nimbus";
26
- ```
27
-
28
- ## Usage
29
-
30
- ### Basic Usage
31
-
32
- ```jsx-live
33
- const App = () => (
34
- <Box p="100" bg="primary.3">
35
- Basic Box
36
- </Box>
37
- );
38
- ```
39
-
40
- ### As Flex Container
41
-
42
- ```jsx-live
43
- const App = () => (
44
- <Box display="flex" gap="100">
45
- <Box p="100" bg="primary.3">
46
- Item 1
47
- </Box>
48
- <Box p="100" bg="primary.3">
49
- Item 2
50
- </Box>
51
- </Box>
52
- );
53
- ```
54
-
55
- ### With Border
56
-
57
- ```jsx-live
58
- const App = () => (
59
- <Box p="100" border="solid-50" borderColor="primary.3">
60
- Box with border
61
- </Box>
62
- );
63
- ```
64
-
65
- ### With Shadow
66
-
67
- ```jsx-live
68
- const App = () => (
69
- <Box p="100" boxShadow="6">
70
- Box with shadow
71
- </Box>
72
- );
73
- ```
74
-
75
- ### With asChild
76
-
77
- Use the `asChild` prop to apply Box styles to any child element while
78
- maintaining the child's functionality:
79
-
80
- ```jsx-live
81
- const App = () => (
82
- <Box p="100" bg="primary.3" asChild>
83
- <button onClick={() => alert("Clicked!")}>
84
- I am a button with Box styles
85
- </button>
86
- </Box>
87
- );
88
- ```
89
-
90
- ## Props
91
-
92
- The Box component accepts all system props from Chakra UI, including:
93
-
94
- - Space props (margin, padding)
95
- - Color props (background, color)
96
- - Typography props (fontSize, fontWeight)
97
- - Layout props (width, height, display)
98
- - Flexbox props
99
- - Grid props
100
- - Border props
101
- - Position props
102
- - Shadow props
103
-
104
- ## Accessibility
105
-
106
- Box renders a `div` by default but can be changed to any other HTML element
107
- using the `as` prop.
108
-
109
- ```jsx-live
110
- const App = () => (
111
- <Box as="section" p="100">
112
- Section content
113
- </Box>
114
- );
115
- ```
@@ -1,71 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import { Box } from "./box";
3
-
4
- const meta: Meta<typeof Box> = {
5
- title: "Components/Box",
6
- component: Box,
7
- tags: ["autodocs"],
8
- };
9
-
10
- export default meta;
11
-
12
- type Story = StoryObj<typeof Box>;
13
-
14
- export const Base: Story = {
15
- args: {
16
- p: "100",
17
- bg: "primary.3",
18
- children: "Basic Box",
19
- },
20
- };
21
-
22
- export const WithBorder: Story = {
23
- args: {
24
- p: "100",
25
- border: "solid-50",
26
- borderColor: "primary.3",
27
- children: "Box with border",
28
- },
29
- };
30
-
31
- export const AsFlexContainer: Story = {
32
- args: {
33
- display: "grid",
34
- children: (
35
- <>
36
- <Box p="100" bg="primary.3">
37
- Item 1
38
- </Box>
39
- <Box p="100" bg="primary.3">
40
- Item 2
41
- </Box>
42
- <Box p="100" bg="primary.3">
43
- Item 3
44
- </Box>
45
- </>
46
- ),
47
- },
48
- };
49
-
50
- export const WithShadow: Story = {
51
- args: {
52
- p: "100",
53
- shadow: "6",
54
- borderRadius: "100",
55
- children: "Box with shadow",
56
- },
57
- };
58
-
59
- export const AsChild: Story = {
60
- args: {
61
- p: "100",
62
- bg: "primary.3",
63
- color: "primary.11",
64
- asChild: true,
65
- children: (
66
- <button onClick={() => alert("Clicked!")}>
67
- Click me! I am a button with Box styles
68
- </button>
69
- ),
70
- },
71
- };
@@ -1,11 +0,0 @@
1
- import { forwardRef } from "react";
2
- import { Box as ChakraBox, type HTMLChakraProps } from "@chakra-ui/react";
3
- export interface BoxProps extends HTMLChakraProps<"div"> {
4
- children?: React.ReactNode;
5
- }
6
-
7
- export const Box = forwardRef<HTMLDivElement, BoxProps>((props, ref) => {
8
- return <ChakraBox ref={ref} {...props} />;
9
- });
10
-
11
- Box.displayName = "Box";
@@ -1 +0,0 @@
1
- export { Box, type BoxProps } from "./box";