@commercetools/nimbus 0.0.2 → 0.0.3-alpha.3

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 +11183 -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 +42 -11
  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,29 +0,0 @@
1
- import { forwardRef } from "react";
2
- import {
3
- Grid as ChakraGrid,
4
- GridItem,
5
- type GridProps as ChakraGridProps,
6
- } from "@chakra-ui/react";
7
-
8
- /**
9
- * Grid
10
- * ============================================================
11
- * The Grid Layout Component provides a flexible and responsive way to structure content using a two-dimensional grid system. It allows elements to be arranged in rows and columns, enabling dynamic and efficient layouts for different screen sizes.
12
- *
13
- * Features:
14
- *
15
- * - allows forwarding refs to the underlying DOM element
16
- */
17
- export interface GridProps extends ChakraGridProps {
18
- children?: React.ReactNode;
19
- }
20
-
21
- const GridComponent = forwardRef<HTMLDivElement, GridProps>((props, ref) => {
22
- return <ChakraGrid ref={ref} {...props} />;
23
- });
24
-
25
- GridComponent.displayName = "Grid";
26
-
27
- export const Grid = Object.assign(GridComponent, {
28
- Item: GridItem,
29
- });
@@ -1 +0,0 @@
1
- export { Grid, type GridProps } from "./grid";
@@ -1,23 +0,0 @@
1
- ---
2
- id: Heading
3
- title: Heading
4
- description: renders a heading
5
- documentState: InitialDraft
6
- order: 2
7
- menu:
8
- - Components
9
- - Typography
10
- - Heading
11
- tags:
12
- - heading
13
- ---
14
-
15
- # Heading
16
-
17
- Like Text, but with predefined styles for a heading/title look and semantic
18
- meaning, which makes source code easier to scan by clearly highlighting the
19
- content's hierarchy and purpose.
20
-
21
- > [!NOTE]
22
- > Checkout the [Text component](/components/typography/text) for configuration
23
- > options.
@@ -1,49 +0,0 @@
1
- import { defineRecipe } from "@chakra-ui/react";
2
-
3
- export const headingRecipe = defineRecipe({
4
- className: "nimbus-heading",
5
- base: {
6
- fontFamily: "heading",
7
- fontWeight: "600",
8
- },
9
- variants: {
10
- size: {
11
- xs: {
12
- textStyle: "xs",
13
- },
14
- sm: {
15
- textStyle: "sm",
16
- },
17
- md: {
18
- textStyle: "md",
19
- },
20
- lg: {
21
- textStyle: "lg",
22
- },
23
- xl: {
24
- textStyle: "xl",
25
- },
26
- "2xl": {
27
- textStyle: "2xl",
28
- },
29
- "3xl": {
30
- textStyle: "3xl",
31
- },
32
- "4xl": {
33
- textStyle: "4xl",
34
- },
35
- "5xl": {
36
- textStyle: "5xl",
37
- },
38
- "6xl": {
39
- textStyle: "6xl",
40
- },
41
- "7xl": {
42
- textStyle: "7xl",
43
- },
44
- },
45
- },
46
- defaultVariants: {
47
- size: "xl",
48
- },
49
- });
@@ -1 +0,0 @@
1
- export { Heading } from "@chakra-ui/react";
@@ -1 +0,0 @@
1
- export * from "./heading.tsx";
@@ -1,18 +0,0 @@
1
- ---
2
- id: Highlight
3
- title: Highlight
4
- description: highlights a substring in a string
5
- documentState: InitialDraft
6
- order: 999
7
- menu:
8
- - Components
9
- - Typography
10
- - Highlight
11
- tags:
12
- - highlight
13
- - mark
14
- ---
15
-
16
- # Highlight
17
-
18
- Add description later.rr
@@ -1 +0,0 @@
1
- export { Highlight } from "@chakra-ui/react";
@@ -1 +0,0 @@
1
- export * from "./highlight.tsx";
@@ -1,98 +0,0 @@
1
- ---
2
- id: Components-IconButton
3
- title: IconButton
4
- description: displays a button with an icon only as child
5
- documentState: InitialDraft
6
- order: 999
7
- menu:
8
- - Components
9
- - Inputs
10
- - IconButton
11
- tags:
12
- - component
13
- figmaLink: >-
14
- https://www.figma.com/design/AvtPX6g7OGGCRvNlatGOIY/New-Design-System?node-id=58-132&m=dev
15
- ---
16
-
17
- # IconButton
18
-
19
- displays a button with an icon only as child.
20
-
21
- ## Basic Usage
22
-
23
- If unconfigured `IconButton` will default to a neutral state. It is important to
24
- configure `IconButton` properly to ensure it displays as intended.
25
-
26
- ```jsx-live
27
- const App = () => <IconButton><Icons.ArrowForward/></IconButton>
28
- ```
29
-
30
- ### Sizes
31
-
32
- Available sizes.
33
-
34
- ```jsx-live
35
- const App = () => {
36
- const sizes = ['md', 'xs', '2xs'];
37
-
38
- return (
39
- <Stack direction="horizontal" alignItems="center">
40
- {sizes.map(size => (
41
- <IconButton tone="primary" variant="solid" key={size} size={size}>
42
- <Icons.AutoFixHigh/>
43
- </IconButton>
44
- ))}
45
- </Stack>
46
- )
47
- }
48
- ```
49
-
50
- ### Variants
51
-
52
- Available variants.
53
-
54
- ```jsx-live
55
- const App = () => {
56
-
57
- const variants = ['solid', 'outline', 'ghost', 'link'];
58
-
59
- return (
60
- <Stack direction="horizontal">
61
- {variants.map(variant => (
62
- <IconButton tone="primary" key={variant} variant={variant}>
63
- <Icons.AutoFixHigh/>
64
- </IconButton>
65
- ))}
66
- </Stack>
67
- )
68
- }
69
- ```
70
-
71
- ### Tones
72
-
73
- Available tones.
74
-
75
- ```jsx-live
76
- const App = () => {
77
- const variants = ["solid", "outline", "ghost", "link"];
78
- const colors = ["primary", "error"];
79
-
80
- return (
81
- <Stack>
82
- {colors.map((color) => (
83
- <Stack key={color} direction="horizontal">
84
- {variants.map((variant) => (
85
- <IconButton colorPalette={color} key={variant} variant={variant}>
86
- <Icons.AutoFixHigh/>
87
- </IconButton>
88
- ))}
89
- </Stack>
90
- ))}
91
- </Stack>
92
- );
93
- };
94
- ```
95
-
96
- ## Props
97
-
98
- <PropTable id="IconButton" />
@@ -1,188 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import { IconButton } from "./icon-button";
3
- import { Stack } from "./../stack";
4
- import { Apps as DemoIcon } from "@commercetools/nimbus-icons";
5
- import type { IconButtonProps } from "./icon-button.types";
6
- import { createRef } from "react";
7
- import { expect, fn, within, userEvent } from "@storybook/test";
8
-
9
- const meta: Meta<typeof IconButton> = {
10
- title: "components/IconButton",
11
- component: IconButton,
12
- };
13
-
14
- export default meta;
15
-
16
- const sizes: IconButtonProps["size"][] = [
17
- //"2xl",
18
- //"xl",
19
- //"lg",
20
- "md",
21
- //"sm",
22
- "xs",
23
- "2xs",
24
- ];
25
-
26
- const variants: IconButtonProps["variant"][] = [
27
- "solid",
28
- "subtle",
29
- "outline",
30
- "ghost",
31
- "link",
32
- ];
33
-
34
- const tones: IconButtonProps["tone"][] = ["primary", "neutral", "critical"];
35
-
36
- /**
37
- * Story type for TypeScript support
38
- * StoryObj provides type checking for our story configurations
39
- */
40
- type Story = StoryObj<typeof IconButton>;
41
-
42
- /**
43
- * Base story
44
- * Demonstrates the most basic implementation
45
- * Uses the args pattern for dynamic control panel inputs
46
- */
47
- export const Base: Story = {
48
- args: {
49
- children: <DemoIcon />,
50
- onPress: fn(),
51
- ["data-testid"]: "test",
52
- ["aria-label"]: "test-button",
53
- },
54
- play: async ({ canvasElement, args, step }) => {
55
- const canvas = within(canvasElement);
56
- const button = canvas.getByTestId("test");
57
- const onPress = args.onPress;
58
-
59
- await step("Uses a <button> element by default", async () => {
60
- await expect(button.tagName).toBe("BUTTON");
61
- });
62
-
63
- await step("Forwards data- & aria-attributes", async () => {
64
- await expect(button).toHaveAttribute("data-testid", "test");
65
- await expect(button).toHaveAttribute("aria-label", "test-button");
66
- });
67
-
68
- // ATTENTION: react-aria does some complicated science,
69
- // if there is a **KEYSTROKE** before the click (like a tab-key aiming to focus the button),
70
- // the first click is not counted as a valid click
71
- await step("Is clickable", async () => {
72
- button.click();
73
- await expect(onPress).toHaveBeenCalledTimes(1);
74
- button.blur();
75
- });
76
-
77
- await step("Is focusable with <tab> key", async () => {
78
- await userEvent.tab();
79
- await expect(button).toHaveFocus();
80
- });
81
-
82
- await step("Can be triggered with enter", async () => {
83
- await userEvent.keyboard("{enter}");
84
- await expect(onPress).toHaveBeenCalledTimes(2);
85
- });
86
-
87
- await step("Can be triggered with space-bar", async () => {
88
- await expect(button).toHaveFocus();
89
- await userEvent.keyboard(" ");
90
- await expect(onPress).toHaveBeenCalledTimes(3);
91
- });
92
- },
93
- };
94
-
95
- /**
96
- * Showcase Sizes
97
- */
98
- export const Sizes: Story = {
99
- args: {
100
- children: <DemoIcon />,
101
- ["aria-label"]: "test-button",
102
- },
103
- render: (args) => {
104
- return (
105
- <Stack direction="row" gap="400" alignItems="center">
106
- {sizes.map((size) => (
107
- <IconButton key={size as string} size={size} {...args} />
108
- ))}
109
- </Stack>
110
- );
111
- },
112
- };
113
-
114
- /**
115
- * Showcase Variants
116
- */
117
- export const Variants: Story = {
118
- args: {
119
- children: <DemoIcon />,
120
- ["aria-label"]: "test-button",
121
- },
122
- render: (args) => {
123
- return (
124
- <Stack direction="row" gap="400" alignItems="center">
125
- {variants.map((variant) => (
126
- <IconButton key={variant as string} {...args} variant={variant} />
127
- ))}
128
- </Stack>
129
- );
130
- },
131
- };
132
-
133
- /**
134
- * Showcase Tones
135
- */
136
- export const Tones: Story = {
137
- args: {
138
- children: <DemoIcon />,
139
- ["aria-label"]: "test-button",
140
- },
141
- render: (args) => {
142
- return (
143
- <Stack>
144
- {tones.map((tone) => (
145
- <Stack
146
- key={tone as string}
147
- direction="row"
148
- gap="400"
149
- alignItems="center"
150
- >
151
- {variants.map((variant) => (
152
- <IconButton
153
- key={variant as string}
154
- {...args}
155
- variant={variant}
156
- tone={tone}
157
- />
158
- ))}
159
- </Stack>
160
- ))}
161
- </Stack>
162
- );
163
- },
164
- };
165
-
166
- const buttonRef = createRef<HTMLButtonElement>();
167
-
168
- export const WithRef: Story = {
169
- args: {
170
- children: <DemoIcon />,
171
- ["aria-label"]: "test-button",
172
- },
173
- render: (args) => {
174
- return (
175
- <IconButton ref={buttonRef} {...args}>
176
- {args.children}
177
- </IconButton>
178
- );
179
- },
180
- play: async ({ canvasElement, step }) => {
181
- const canvas = within(canvasElement);
182
- const button = canvas.getByRole("button");
183
-
184
- await step("Does accept ref's", async () => {
185
- await expect(buttonRef.current).toBe(button);
186
- });
187
- },
188
- };
@@ -1,21 +0,0 @@
1
- import { forwardRef } from "react";
2
- import type { IconButtonProps } from "./icon-button.types";
3
- import { Button } from "@/components";
4
-
5
- /**
6
- * IconButton
7
- * ============================================================
8
- * displays a button with only an icon as child. It is based
9
- * on the regular `Button` component, but with a few adjustments.
10
- */
11
- export const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(
12
- ({ children, ...props }, ref) => {
13
- return (
14
- <Button px={0} py={0} ref={ref} {...props}>
15
- {children}
16
- </Button>
17
- );
18
- }
19
- );
20
-
21
- IconButton.displayName = "IconButton";
@@ -1,10 +0,0 @@
1
- import { type ButtonProps } from "@/components";
2
-
3
- /**
4
- * Main props interface for the IconButton component.
5
- */
6
-
7
- export interface IconButtonProps extends ButtonProps {
8
- /** explains the intended action, required for accessibility */
9
- "aria-label": string;
10
- }
@@ -1,2 +0,0 @@
1
- export * from "./icon-button";
2
- export * from "./icon-button.types";
@@ -1,33 +0,0 @@
1
- export * from "./avatar";
2
- export * from "./box";
3
- export * from "./bleed";
4
- export * from "./button";
5
- export * from "./code";
6
- export * from "./dialog";
7
- export * from "./em";
8
- export * from "./flex";
9
- export * from "./heading";
10
- export * from "./highlight";
11
- export * from "./icon-button";
12
- export * from "./input";
13
- export * from "./input-group";
14
- export * from "./kbd";
15
- export * from "./link";
16
- export * from "./list";
17
- export * from "./simple-grid";
18
- export * from "./table";
19
- export * from "./text";
20
- export * from "./tooltip";
21
- export * from "./nimbus-provider";
22
- export * from "./checkbox";
23
- export * from "./stack";
24
- export * from "./visually-hidden";
25
- export * from "./text-input";
26
- export * from "./grid";
27
- export * from "./select";
28
- export * from "./accordion";
29
- export * from "./loading-spinner";
30
- export * from "./card";
31
- export * from "./badge";
32
- export * from "./alert";
33
- export * from "./toggle-button-group";
@@ -1 +0,0 @@
1
- export * from "./input.tsx";
@@ -1,20 +0,0 @@
1
- ---
2
- id: Input
3
- title: Input
4
- description: displays a Input field
5
- documentState: InitialDraft
6
- order: 999
7
- menu:
8
- - Components
9
- - Inputs
10
- - Input
11
- tags:
12
- - text
13
- - input
14
- ---
15
-
16
- # Input
17
-
18
- add description here.
19
-
20
- <PropTable id="Input" />
@@ -1,95 +0,0 @@
1
- import { defineRecipe } from "@chakra-ui/react";
2
-
3
- export const inputRecipe = defineRecipe({
4
- className: "nimbus-input",
5
- base: {
6
- width: "full",
7
- minWidth: "0",
8
- outline: "0",
9
- position: "relative",
10
- appearance: "none",
11
- textAlign: "start",
12
- _disabled: {
13
- layerStyle: "disabled",
14
- },
15
- height: "var(--input-height)",
16
- minW: "var(--input-height)",
17
- "--focus-color": "colors.colorPalette.focusRing",
18
- "--error-color": "colors.border.error",
19
- "&::placeholder": {
20
- color: "colorPalette.11",
21
- opacity: 3 / 4,
22
- },
23
- _invalid: {
24
- focusRingColor: "var(--error-color)",
25
- borderColor: "var(--error-color)",
26
- },
27
- },
28
- variants: {
29
- size: {
30
- "2xs": {
31
- textStyle: "xs",
32
- px: "200",
33
- "--input-height": "sizes.700",
34
- },
35
- xs: {
36
- textStyle: "xs",
37
- px: "200",
38
- "--input-height": "sizes.800",
39
- },
40
- sm: {
41
- textStyle: "sm",
42
- px: "250",
43
- "--input-height": "sizes.900",
44
- },
45
- md: {
46
- textStyle: "sm",
47
- px: "300",
48
- "--input-height": "sizes.1000",
49
- },
50
- lg: {
51
- textStyle: "md",
52
- px: "400",
53
- "--input-height": "sizes.1100",
54
- },
55
- xl: {
56
- textStyle: "md",
57
- px: "450",
58
- "--input-height": "sizes.1200",
59
- },
60
- "2xl": {
61
- textStyle: "lg",
62
- px: "500",
63
- "--input-height": "sizes.1600",
64
- },
65
- },
66
- variant: {
67
- outline: {
68
- bg: "transparent",
69
- borderWidth: "1px",
70
- borderColor: "border",
71
- focusVisibleRing: "inside",
72
- },
73
- subtle: {
74
- borderWidth: "1px",
75
- borderColor: "transparent",
76
- bg: "bg.muted",
77
- focusVisibleRing: "inside",
78
- },
79
- flushed: {
80
- bg: "transparent",
81
- borderBottomWidth: "1px",
82
- borderBottomColor: "border",
83
- px: "0",
84
- _focusVisible: {
85
- borderColor: "var(--focus-color)",
86
- boxShadow: "0px 1px 0px 0px var(--focus-color)",
87
- },
88
- },
89
- },
90
- },
91
- defaultVariants: {
92
- size: "md",
93
- variant: "outline",
94
- },
95
- });
@@ -1 +0,0 @@
1
- export { Input } from "@chakra-ui/react";
@@ -1 +0,0 @@
1
- export * from "./input-group.tsx";
@@ -1,20 +0,0 @@
1
- ---
2
- id: InputGroup
3
- title: InputGroup
4
- description: displays an InputGroup
5
- documentState: InitialDraft
6
- order: 999
7
- menu:
8
- - Components
9
- - Inputs
10
- - InputGroup
11
- tags:
12
- - input
13
- - grouping
14
- ---
15
-
16
- # InputGroup
17
-
18
- add description here.
19
-
20
- <PropTable id="InputGroup" />
@@ -1,44 +0,0 @@
1
- import type { BoxProps, InputElementProps } from "@chakra-ui/react";
2
- import { Group, InputElement } from "@chakra-ui/react";
3
- import { cloneElement, forwardRef } from "react";
4
-
5
- export interface InputGroupProps extends BoxProps {
6
- startElementProps?: InputElementProps;
7
- endElementProps?: InputElementProps;
8
- startElement?: React.ReactNode;
9
- endElement?: React.ReactNode;
10
- children: React.ReactElement;
11
- }
12
-
13
- export const InputGroup = forwardRef<HTMLDivElement, InputGroupProps>(
14
- function InputGroup(props, ref) {
15
- const {
16
- startElement,
17
- startElementProps,
18
- endElement,
19
- endElementProps,
20
- children,
21
- ...rest
22
- } = props;
23
-
24
- return (
25
- <Group ref={ref} {...rest}>
26
- {startElement && (
27
- <InputElement pointerEvents="none" {...startElementProps}>
28
- {startElement}
29
- </InputElement>
30
- )}
31
- {cloneElement(children, {
32
- ...(startElement && { ps: "calc(var(--input-height) - 6px)" }),
33
- ...(endElement && { pe: "calc(var(--input-height) - 6px)" }),
34
- ...children.props,
35
- })}
36
- {endElement && (
37
- <InputElement placement="end" {...endElementProps}>
38
- {endElement}
39
- </InputElement>
40
- )}
41
- </Group>
42
- );
43
- }
44
- );
@@ -1 +0,0 @@
1
- export * from "./kbd.tsx";