@commercetools/nimbus 0.0.1

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 (298) hide show
  1. package/.storybook/apca-check/index.ts +150 -0
  2. package/.storybook/main.ts +64 -0
  3. package/.storybook/preview.tsx +92 -0
  4. package/.storybook/vitest.setup.ts +13 -0
  5. package/README.md +13 -0
  6. package/docs/architecture-decisions/adr-0001-consumer-component-apis.md +177 -0
  7. package/docs/architecture-decisions/adr-0002-compound-component-extraction.md +82 -0
  8. package/package.json +64 -0
  9. package/src/components/accordion/accordion-context.tsx +17 -0
  10. package/src/components/accordion/accordion.mdx +172 -0
  11. package/src/components/accordion/accordion.recipe.tsx +98 -0
  12. package/src/components/accordion/accordion.slots.tsx +39 -0
  13. package/src/components/accordion/accordion.stories.tsx +188 -0
  14. package/src/components/accordion/accordion.tsx +16 -0
  15. package/src/components/accordion/accordion.types.tsx +54 -0
  16. package/src/components/accordion/components/accordion-content.tsx +28 -0
  17. package/src/components/accordion/components/accordion-group.tsx +27 -0
  18. package/src/components/accordion/components/accordion-header.tsx +63 -0
  19. package/src/components/accordion/components/accordion-item.tsx +87 -0
  20. package/src/components/accordion/index.ts +2 -0
  21. package/src/components/alert/alert.mdx +92 -0
  22. package/src/components/alert/alert.recipe.tsx +65 -0
  23. package/src/components/alert/alert.slots.tsx +46 -0
  24. package/src/components/alert/alert.stories.tsx +308 -0
  25. package/src/components/alert/alert.tsx +18 -0
  26. package/src/components/alert/alert.types.tsx +70 -0
  27. package/src/components/alert/components/alert.actions.tsx +27 -0
  28. package/src/components/alert/components/alert.description.tsx +27 -0
  29. package/src/components/alert/components/alert.dismiss-button.tsx +41 -0
  30. package/src/components/alert/components/alert.root.tsx +92 -0
  31. package/src/components/alert/components/alert.title.tsx +29 -0
  32. package/src/components/alert/index.ts +2 -0
  33. package/src/components/avatar/avatar.mdx +80 -0
  34. package/src/components/avatar/avatar.recipe.tsx +36 -0
  35. package/src/components/avatar/avatar.slots.tsx +16 -0
  36. package/src/components/avatar/avatar.stories.tsx +136 -0
  37. package/src/components/avatar/avatar.tsx +34 -0
  38. package/src/components/avatar/avatar.types.ts +33 -0
  39. package/src/components/avatar/index.ts +2 -0
  40. package/src/components/badge/badge.mdx +91 -0
  41. package/src/components/badge/badge.recipe.tsx +72 -0
  42. package/src/components/badge/badge.slots.tsx +8 -0
  43. package/src/components/badge/badge.stories.tsx +124 -0
  44. package/src/components/badge/badge.tsx +35 -0
  45. package/src/components/badge/badge.types.tsx +40 -0
  46. package/src/components/badge/index.ts +2 -0
  47. package/src/components/bleed/bleed.tsx +1 -0
  48. package/src/components/bleed/index.ts +1 -0
  49. package/src/components/box/box.mdx +115 -0
  50. package/src/components/box/box.stories.tsx +71 -0
  51. package/src/components/box/box.tsx +11 -0
  52. package/src/components/box/index.ts +1 -0
  53. package/src/components/button/button.mdx +169 -0
  54. package/src/components/button/button.recipe.ts +185 -0
  55. package/src/components/button/button.slots.tsx +45 -0
  56. package/src/components/button/button.stories.tsx +369 -0
  57. package/src/components/button/button.tsx +37 -0
  58. package/src/components/button/button.types.ts +14 -0
  59. package/src/components/button/index.ts +2 -0
  60. package/src/components/card/card.mdx +92 -0
  61. package/src/components/card/card.recipe.tsx +71 -0
  62. package/src/components/card/card.slots.tsx +50 -0
  63. package/src/components/card/card.stories.tsx +175 -0
  64. package/src/components/card/card.tsx +9 -0
  65. package/src/components/card/card.types.ts +22 -0
  66. package/src/components/card/components/card.content.tsx +29 -0
  67. package/src/components/card/components/card.header.tsx +28 -0
  68. package/src/components/card/components/card.root.tsx +62 -0
  69. package/src/components/card/index.ts +2 -0
  70. package/src/components/checkbox/checkbox.mdx +78 -0
  71. package/src/components/checkbox/checkbox.recipe.tsx +116 -0
  72. package/src/components/checkbox/checkbox.slots.tsx +33 -0
  73. package/src/components/checkbox/checkbox.stories.tsx +200 -0
  74. package/src/components/checkbox/checkbox.tsx +77 -0
  75. package/src/components/checkbox/checkbox.types.tsx +22 -0
  76. package/src/components/checkbox/index.ts +2 -0
  77. package/src/components/code/code.mdx +17 -0
  78. package/src/components/code/code.recipe.ts +63 -0
  79. package/src/components/code/code.tsx +1 -0
  80. package/src/components/code/index.ts +1 -0
  81. package/src/components/dialog/dialog.mdx +20 -0
  82. package/src/components/dialog/dialog.recipe.ts +254 -0
  83. package/src/components/dialog/dialog.tsx +61 -0
  84. package/src/components/dialog/index.ts +1 -0
  85. package/src/components/em/em.mdx +17 -0
  86. package/src/components/em/em.tsx +1 -0
  87. package/src/components/em/index.ts +1 -0
  88. package/src/components/flex/flex.mdx +41 -0
  89. package/src/components/flex/flex.tsx +1 -0
  90. package/src/components/flex/index.ts +1 -0
  91. package/src/components/grid/grid.mdx +156 -0
  92. package/src/components/grid/grid.stories.tsx +151 -0
  93. package/src/components/grid/grid.tsx +29 -0
  94. package/src/components/grid/index.ts +1 -0
  95. package/src/components/heading/heading.mdx +23 -0
  96. package/src/components/heading/heading.recipe.ts +49 -0
  97. package/src/components/heading/heading.tsx +1 -0
  98. package/src/components/heading/index.ts +1 -0
  99. package/src/components/highlight/highlight.mdx +18 -0
  100. package/src/components/highlight/highlight.tsx +1 -0
  101. package/src/components/highlight/index.ts +1 -0
  102. package/src/components/icon-button/icon-button.mdx +98 -0
  103. package/src/components/icon-button/icon-button.stories.tsx +188 -0
  104. package/src/components/icon-button/icon-button.tsx +21 -0
  105. package/src/components/icon-button/icon-button.types.tsx +10 -0
  106. package/src/components/icon-button/index.ts +2 -0
  107. package/src/components/index.ts +33 -0
  108. package/src/components/input/index.ts +1 -0
  109. package/src/components/input/input.mdx +20 -0
  110. package/src/components/input/input.recipe.ts +95 -0
  111. package/src/components/input/input.tsx +1 -0
  112. package/src/components/input-group/index.ts +1 -0
  113. package/src/components/input-group/input-group.mdx +20 -0
  114. package/src/components/input-group/input-group.tsx +44 -0
  115. package/src/components/kbd/index.ts +1 -0
  116. package/src/components/kbd/kbd.mdx +18 -0
  117. package/src/components/kbd/kbd.recipe.ts +57 -0
  118. package/src/components/kbd/kbd.tsx +1 -0
  119. package/src/components/link/index.ts +2 -0
  120. package/src/components/link/link.mdx +77 -0
  121. package/src/components/link/link.recipe.ts +52 -0
  122. package/src/components/link/link.slots.tsx +29 -0
  123. package/src/components/link/link.stories.tsx +204 -0
  124. package/src/components/link/link.tsx +38 -0
  125. package/src/components/link/link.types.tsx +26 -0
  126. package/src/components/list/index.ts +1 -0
  127. package/src/components/list/list.mdx +18 -0
  128. package/src/components/list/list.recipe.ts +68 -0
  129. package/src/components/list/list.tsx +9 -0
  130. package/src/components/loading-spinner/index.ts +2 -0
  131. package/src/components/loading-spinner/loading-spinner.mdx +92 -0
  132. package/src/components/loading-spinner/loading-spinner.recipe.tsx +70 -0
  133. package/src/components/loading-spinner/loading-spinner.slots.tsx +38 -0
  134. package/src/components/loading-spinner/loading-spinner.stories.tsx +97 -0
  135. package/src/components/loading-spinner/loading-spinner.tsx +50 -0
  136. package/src/components/loading-spinner/loading-spinner.types.tsx +21 -0
  137. package/src/components/nimbus-provider/color-mode.tsx +32 -0
  138. package/src/components/nimbus-provider/index.ts +2 -0
  139. package/src/components/nimbus-provider/nimbus-provider.mdx +21 -0
  140. package/src/components/nimbus-provider/nimbus-provider.tsx +51 -0
  141. package/src/components/select/components/select.clear-button.tsx +31 -0
  142. package/src/components/select/components/select.option-group.tsx +48 -0
  143. package/src/components/select/components/select.option.tsx +21 -0
  144. package/src/components/select/components/select.options.tsx +23 -0
  145. package/src/components/select/components/select.root.tsx +81 -0
  146. package/src/components/select/index.ts +2 -0
  147. package/src/components/select/select.mdx +170 -0
  148. package/src/components/select/select.recipe.tsx +216 -0
  149. package/src/components/select/select.slots.tsx +58 -0
  150. package/src/components/select/select.stories.tsx +841 -0
  151. package/src/components/select/select.tsx +18 -0
  152. package/src/components/select/select.types.tsx +37 -0
  153. package/src/components/simple-grid/index.ts +1 -0
  154. package/src/components/simple-grid/simple-grid.mdx +133 -0
  155. package/src/components/simple-grid/simple-grid.stories.tsx +143 -0
  156. package/src/components/simple-grid/simple-grid.tsx +31 -0
  157. package/src/components/stack/index.ts +1 -0
  158. package/src/components/stack/stack.mdx +88 -0
  159. package/src/components/stack/stack.stories.tsx +82 -0
  160. package/src/components/stack/stack.tsx +15 -0
  161. package/src/components/table/index.ts +1 -0
  162. package/src/components/table/table.mdx +23 -0
  163. package/src/components/table/table.recipe.ts +170 -0
  164. package/src/components/table/table.tsx +43 -0
  165. package/src/components/text/index.ts +1 -0
  166. package/src/components/text/text.mdx +244 -0
  167. package/src/components/text/text.tsx +23 -0
  168. package/src/components/text-input/index.ts +2 -0
  169. package/src/components/text-input/text-input.mdx +118 -0
  170. package/src/components/text-input/text-input.recipe.tsx +68 -0
  171. package/src/components/text-input/text-input.slots.tsx +24 -0
  172. package/src/components/text-input/text-input.stories.tsx +282 -0
  173. package/src/components/text-input/text-input.tsx +39 -0
  174. package/src/components/text-input/text-input.types.ts +7 -0
  175. package/src/components/toggle-button-group/components/toggle-button-group.button.tsx +14 -0
  176. package/src/components/toggle-button-group/components/toggle-button-group.root.tsx +15 -0
  177. package/src/components/toggle-button-group/index.ts +2 -0
  178. package/src/components/toggle-button-group/toggle-button-group.mdx +94 -0
  179. package/src/components/toggle-button-group/toggle-button-group.recipe.tsx +64 -0
  180. package/src/components/toggle-button-group/toggle-button-group.slots.tsx +26 -0
  181. package/src/components/toggle-button-group/toggle-button-group.stories.tsx +311 -0
  182. package/src/components/toggle-button-group/toggle-button-group.tsx +12 -0
  183. package/src/components/toggle-button-group/toggle-button-group.types.tsx +62 -0
  184. package/src/components/tooltip/index.ts +4 -0
  185. package/src/components/tooltip/make-element-focusable.stories.tsx +56 -0
  186. package/src/components/tooltip/make-element-focusable.tsx +57 -0
  187. package/src/components/tooltip/tooltip-trigger.stories.tsx +157 -0
  188. package/src/components/tooltip/tooltip-trigger.tsx +15 -0
  189. package/src/components/tooltip/tooltip.mdx +48 -0
  190. package/src/components/tooltip/tooltip.recipe.ts +26 -0
  191. package/src/components/tooltip/tooltip.slots.ts +35 -0
  192. package/src/components/tooltip/tooltip.stories.tsx +139 -0
  193. package/src/components/tooltip/tooltip.tsx +31 -0
  194. package/src/components/tooltip/tooltip.types.ts +44 -0
  195. package/src/components/visually-hidden/index.ts +1 -0
  196. package/src/components/visually-hidden/visually-hidden.mdx +61 -0
  197. package/src/components/visually-hidden/visually-hidden.stories.tsx +124 -0
  198. package/src/components/visually-hidden/visually-hidden.tsx +18 -0
  199. package/src/docs/accessibility.mdx +21 -0
  200. package/src/docs/background.mdx +154 -0
  201. package/src/docs/border.mdx +226 -0
  202. package/src/docs/changelog.mdx +17 -0
  203. package/src/docs/components-layout.mdx +22 -0
  204. package/src/docs/components.mdx +17 -0
  205. package/src/docs/data-display.mdx +23 -0
  206. package/src/docs/display.mdx +55 -0
  207. package/src/docs/effects.mdx +73 -0
  208. package/src/docs/feedback.mdx +22 -0
  209. package/src/docs/filters.mdx +268 -0
  210. package/src/docs/flex-and-grid.mdx +445 -0
  211. package/src/docs/forms.mdx +22 -0
  212. package/src/docs/generated/index.mdx +16 -0
  213. package/src/docs/getting-started.mdx +17 -0
  214. package/src/docs/home.mdx +56 -0
  215. package/src/docs/hooks.mdx +16 -0
  216. package/src/docs/inputs.mdx +21 -0
  217. package/src/docs/installation.mdx +60 -0
  218. package/src/docs/interactivity.mdx +278 -0
  219. package/src/docs/known-issues.mdx +19 -0
  220. package/src/docs/layout.mdx +301 -0
  221. package/src/docs/list.mdx +82 -0
  222. package/src/docs/markdown.mdx +234 -0
  223. package/src/docs/media.mdx +22 -0
  224. package/src/docs/naivgation.mdx +22 -0
  225. package/src/docs/playground.mdx +16 -0
  226. package/src/docs/rfcs-component-structure-rfcs.mdx +17 -0
  227. package/src/docs/rfcs-component-structure.mdx +74 -0
  228. package/src/docs/rfcs-hook-structure.mdx +59 -0
  229. package/src/docs/sizing.mdx +210 -0
  230. package/src/docs/spacing.mdx +193 -0
  231. package/src/docs/style-props-typography.mdx +373 -0
  232. package/src/docs/style-props.mdx +15 -0
  233. package/src/docs/svg.mdx +58 -0
  234. package/src/docs/tables.mdx +95 -0
  235. package/src/docs/toc.mdx +39 -0
  236. package/src/docs/tokens/animations.mdx +68 -0
  237. package/src/docs/tokens/aspect-ratios.mdx +21 -0
  238. package/src/docs/tokens/blurs.mdx +20 -0
  239. package/src/docs/tokens/borders.mdx +25 -0
  240. package/src/docs/tokens/breakpoints.mdx +35 -0
  241. package/src/docs/tokens/colors.mdx +86 -0
  242. package/src/docs/tokens/cursors.mdx +21 -0
  243. package/src/docs/tokens/radii.mdx +23 -0
  244. package/src/docs/tokens/shadows.mdx +21 -0
  245. package/src/docs/tokens/sizes.mdx +54 -0
  246. package/src/docs/tokens/spacing.mdx +35 -0
  247. package/src/docs/tokens/typography.mdx +61 -0
  248. package/src/docs/tokens/z-indices.mdx +23 -0
  249. package/src/docs/tokens-other.mdx +17 -0
  250. package/src/docs/tokens.mdx +16 -0
  251. package/src/docs/transforms.mdx +150 -0
  252. package/src/docs/transitions.mdx +164 -0
  253. package/src/docs/typography.mdx +17 -0
  254. package/src/docs/utilities.mdx +17 -0
  255. package/src/hooks/index.ts +2 -0
  256. package/src/hooks/use-copy-to-clipboard/use-copy-to-clipboard.mdx +54 -0
  257. package/src/hooks/use-copy-to-clipboard/use-copy-to-clipboard.ts +1 -0
  258. package/src/hooks/use-hotkeys/use-hotkeys.mdx +48 -0
  259. package/src/hooks/use-hotkeys/use-hotkeys.stories.tsx +69 -0
  260. package/src/hooks/use-hotkeys/use-hotkeys.ts +1 -0
  261. package/src/index.ts +3 -0
  262. package/src/test/utils.tsx +20 -0
  263. package/src/theme/animation-styles.ts +52 -0
  264. package/src/theme/breakpoints.ts +32 -0
  265. package/src/theme/global-css.ts +53 -0
  266. package/src/theme/index.ts +35 -0
  267. package/src/theme/keyframes.ts +192 -0
  268. package/src/theme/layer-styles.ts +12 -0
  269. package/src/theme/recipes/index.ts +21 -0
  270. package/src/theme/semantic-tokens/colors.ts +55 -0
  271. package/src/theme/semantic-tokens/index.ts +9 -0
  272. package/src/theme/semantic-tokens/radii.ts +3 -0
  273. package/src/theme/semantic-tokens/shadows.ts +4 -0
  274. package/src/theme/slot-recipes/index.ts +15 -0
  275. package/src/theme/text-styles.ts +8 -0
  276. package/src/theme/tokens/animations.ts +4 -0
  277. package/src/theme/tokens/aspect-ratios.ts +5 -0
  278. package/src/theme/tokens/blurs.ts +5 -0
  279. package/src/theme/tokens/borders.ts +4 -0
  280. package/src/theme/tokens/colors.ts +8 -0
  281. package/src/theme/tokens/cursor.ts +4 -0
  282. package/src/theme/tokens/durations.ts +4 -0
  283. package/src/theme/tokens/easings.ts +4 -0
  284. package/src/theme/tokens/font-sizes.ts +4 -0
  285. package/src/theme/tokens/font-weights.ts +4 -0
  286. package/src/theme/tokens/fonts.ts +4 -0
  287. package/src/theme/tokens/index.ts +57 -0
  288. package/src/theme/tokens/letter-spacings.ts +24 -0
  289. package/src/theme/tokens/line-heights.ts +4 -0
  290. package/src/theme/tokens/radii.ts +4 -0
  291. package/src/theme/tokens/sizes.ts +120 -0
  292. package/src/theme/tokens/spacing.ts +4 -0
  293. package/src/theme/tokens/z-index.ts +4 -0
  294. package/src/utils/extractStyleProps.ts +26 -0
  295. package/src/utils/fixedForwardRef.ts +17 -0
  296. package/tsconfig.json +38 -0
  297. package/vite.config.ts +54 -0
  298. package/vitest.config.ts +50 -0
package/tsconfig.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "compilerOptions": {
3
+ // Enable latest features
4
+ "lib": ["ESNext", "DOM"],
5
+ "target": "ESNext",
6
+ "module": "ESNext",
7
+ "moduleDetection": "force",
8
+ "jsx": "react-jsx",
9
+ "allowJs": true,
10
+
11
+ // Bundler mode
12
+ "moduleResolution": "Bundler",
13
+ "allowImportingTsExtensions": true,
14
+ "verbatimModuleSyntax": true,
15
+ "noEmit": true,
16
+
17
+ // Best practices
18
+ "strict": true,
19
+ "skipLibCheck": true,
20
+ "noFallthroughCasesInSwitch": true,
21
+
22
+ // Some stricter flags (disabled by default)
23
+ "noUnusedLocals": false,
24
+ "noUnusedParameters": false,
25
+ "noPropertyAccessFromIndexSignature": false,
26
+ "paths": {
27
+ "@/*": ["./src/*"]
28
+ },
29
+
30
+ // Custom
31
+ "esModuleInterop": true,
32
+ "typeRoots": [
33
+ "@types",
34
+ // "@types-extensions",
35
+ "node_modules/@types"
36
+ ]
37
+ }
38
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,54 @@
1
+ import { dirname, resolve } from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ import optimizeLocales from "@react-aria/optimize-locales-plugin";
4
+ import { defineConfig } from "vite";
5
+ import react from "@vitejs/plugin-react";
6
+ import viteTsconfigPaths from "vite-tsconfig-paths";
7
+ import dts from "vite-plugin-dts";
8
+
9
+ const __dirname = dirname(fileURLToPath(import.meta.url));
10
+
11
+ export const baseConfig = {
12
+ plugins: [
13
+ viteTsconfigPaths(),
14
+ react(),
15
+
16
+ // https://react-spectrum.adobe.com/react-aria/internationalization.html#vite
17
+ optimizeLocales.vite({
18
+ locales: ["en-US", "fr-FR", "pt-BR", "es-ES", "de-DE"],
19
+ }),
20
+ ],
21
+ build: {
22
+ lib: {
23
+ entry: resolve(__dirname, "./src/index.ts"),
24
+ name: "nimbus",
25
+ fileName: "index",
26
+ },
27
+ rollupOptions: {
28
+ // make sure to externalize deps that shouldn't be bundled
29
+ // into your library
30
+ external: ["react", "react-dom"],
31
+ output: {
32
+ // Provide global variables to use in the UMD build
33
+ // for externalized deps
34
+ globals: {
35
+ react: "React",
36
+ "react-dom": "ReactDOM",
37
+ },
38
+ },
39
+ },
40
+ },
41
+ assetsInclude: ["/sb-preview/runtime.js"],
42
+ };
43
+
44
+ export default defineConfig((/* config */) => {
45
+ const isWatchMode = process.argv.includes("--watch");
46
+
47
+ const config = baseConfig;
48
+
49
+ if (!isWatchMode) {
50
+ config.plugins.push(dts({ rollupTypes: true }));
51
+ }
52
+
53
+ return config;
54
+ });
@@ -0,0 +1,50 @@
1
+ import {
2
+ coverageConfigDefaults,
3
+ defineConfig,
4
+ mergeConfig,
5
+ } from "vitest/config";
6
+ import { baseConfig } from "./vite.config";
7
+ import { storybookTest } from "@storybook/experimental-addon-test/vitest-plugin";
8
+ import path from "path";
9
+
10
+ export default mergeConfig(
11
+ baseConfig,
12
+ defineConfig({
13
+ plugins: [
14
+ storybookTest({
15
+ // The location of your Storybook config, main.js|ts
16
+ configDir: path.join(__dirname, ".storybook"),
17
+ // This should match your package.json script to run Storybook
18
+ // The --ci flag will skip prompts and not open a browser
19
+ storybookScript: "pnpm storybook --ci",
20
+ }),
21
+ ],
22
+ test: {
23
+ setupFiles: ["./.storybook/vitest.setup.ts"],
24
+ // make vitest fn's available globally (no need to import them)
25
+ globals: true,
26
+ // config for running tests in one or multiple *real* browsers
27
+ browser: {
28
+ enabled: true,
29
+ // ... use playwright to run tests
30
+ provider: "playwright",
31
+ // ... only in chromium
32
+ instances: [{ browser: "chromium" }],
33
+ // ... do not open the browser-ui
34
+ headless: true,
35
+ // ... do not capture screenshots on failure
36
+ screenshotFailures: false,
37
+ },
38
+ coverage: {
39
+ exclude: [
40
+ ...coverageConfigDefaults.exclude,
41
+ "**/.storybook/**",
42
+ // 👇 This pattern must align with the `stories` property of your `.storybook/main.ts` config
43
+ "./src/**/*.stories.*",
44
+ // 👇 This pattern must align with the output directory of `storybook build`
45
+ "**/storybook-static/**",
46
+ ],
47
+ },
48
+ },
49
+ })
50
+ );