From 64628bf068a290eb7bdad258ef9acfb4559dec9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beatrice=20Dellac=C3=A0?= Date: Mon, 23 Feb 2026 13:54:08 +0100 Subject: [PATCH] add storybook, fix ui, v0.1.6 --- .gitignore | 3 +- .storybook/main.ts | 19 + .storybook/preview.css | 8 + .storybook/preview.tsx | 27 + package.json | 12 +- postcss.config.cjs | 7 + src/components/Button.stories.tsx | 136 +++++ src/components/Chip.stories.tsx | 83 +++ src/components/Chip.tsx | 51 +- src/components/Dropdown.stories.tsx | 153 ++++++ src/components/Dropdown.tsx | 4 +- src/components/Form.stories.tsx | 101 ++++ src/components/InputField.stories.tsx | 215 ++++++++ src/components/InputField.tsx | 2 +- src/components/Label.stories.tsx | 77 +++ src/components/MDXEditorField.stories.tsx | 161 ++++++ src/components/SidebarNavItem.stories.tsx | 76 +++ src/components/Table.stories.tsx | 228 ++++++++ src/styles/components.css | 28 +- tailwind.storybook.config.cjs | 14 + tsconfig.build.json | 3 +- yarn.lock | 639 +++++++++++++++++++++- 22 files changed, 1986 insertions(+), 61 deletions(-) create mode 100644 .storybook/main.ts create mode 100644 .storybook/preview.css create mode 100644 .storybook/preview.tsx create mode 100644 postcss.config.cjs create mode 100644 src/components/Button.stories.tsx create mode 100644 src/components/Chip.stories.tsx create mode 100644 src/components/Dropdown.stories.tsx create mode 100644 src/components/Form.stories.tsx create mode 100644 src/components/InputField.stories.tsx create mode 100644 src/components/Label.stories.tsx create mode 100644 src/components/MDXEditorField.stories.tsx create mode 100644 src/components/SidebarNavItem.stories.tsx create mode 100644 src/components/Table.stories.tsx create mode 100644 tailwind.storybook.config.cjs diff --git a/.gitignore b/.gitignore index 3259942..237322c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ node_modules/ dist/ build/ coverage/ +storybook-static/ # Vite / tooling caches .vite/ @@ -47,4 +48,4 @@ crashlytics-build.properties fabric.properties # Editor-based HTTP Client -http-client.private.env.json \ No newline at end of file +http-client.private.env.json diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 0000000..f22be60 --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,19 @@ +import type { StorybookConfig } from '@storybook/react-vite'; + +const config: StorybookConfig = { + stories: ['../src/**/*.stories.@(ts|tsx|mdx)'], + addons: [ + '@storybook/addon-docs', + '@storybook/addon-a11y', + '@storybook/addon-themes' + ], + framework: { + name: '@storybook/react-vite', + options: {} + }, + docs: { + autodocs: 'tag' + } +}; + +export default config; diff --git a/.storybook/preview.css b/.storybook/preview.css new file mode 100644 index 0000000..f682171 --- /dev/null +++ b/.storybook/preview.css @@ -0,0 +1,8 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +body { + background-color: var(--bg-page); + color: var(--text-primary); +} diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx new file mode 100644 index 0000000..5119fdb --- /dev/null +++ b/.storybook/preview.tsx @@ -0,0 +1,27 @@ +import type { Preview } from '@storybook/react'; +import { MemoryRouter } from 'react-router-dom'; +import '@mdxeditor/editor/style.css'; +import './preview.css'; +import '../src/styles/base.css'; +import '../src/styles/components.css'; + +const preview: Preview = { + decorators: [ + (Story) => ( + + + + ) + ], + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i + } + }, + layout: 'centered' + } +}; + +export default preview; diff --git a/package.json b/package.json index 45b1c55..1d63866 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@panic/web-ui", - "version": "0.1.5", + "version": "0.1.6", "license": "AGPL-3.0-only", "description": "Core components for panic.haus web applications", "type": "module", @@ -27,6 +27,8 @@ "scripts": { "clean": "rm -rf dist", "build": "yarn clean && vite build && tsc -p tsconfig.build.json && mkdir -p dist/styles && cp src/styles/base.css dist/styles/base.css && tailwindcss -c tailwind.build.config.cjs -i src/styles/components.css -o dist/styles/components.css --minify && tailwindcss -c tailwind.build.config.cjs -i src/styles/utilities.css -o dist/styles/utilities.css --minify && cp tailwind-preset.cjs dist/tailwind-preset.cjs", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build", "prepublishOnly": "yarn build", "publish:nexus": "npm publish --registry ${NEXUS_NPM_REGISTRY:-https://nexus.beatrice.wtf/repository/npm-hosted/}" }, @@ -47,16 +49,24 @@ } }, "devDependencies": { + "@storybook/addon-a11y": "^10.2.10", + "@storybook/addon-docs": "^10.2.10", + "@storybook/addon-themes": "^10.2.10", + "@storybook/react": "^10.2.10", + "@storybook/react-vite": "^10.2.10", "@codemirror/language": "^6.11.3", "@heroicons/react": "^2.2.0", "@lezer/highlight": "^1.2.1", "@mdxeditor/editor": "^3.52.4", + "@testing-library/dom": "^10.4.1", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", "@vitejs/plugin-react": "^5.0.0", + "postcss": "^8.4.49", "react": "^19.0.0", "react-dom": "^19.0.0", "react-router-dom": "^7.0.0", + "storybook": "^10.2.10", "tailwindcss": "^3.4.16", "typescript": "^5.6.2", "vite": "^7.0.0", diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 0000000..b1ffc21 --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,7 @@ +module.exports = { + plugins: { + tailwindcss: { + config: './tailwind.storybook.config.cjs' + } + } +}; diff --git a/src/components/Button.stories.tsx b/src/components/Button.stories.tsx new file mode 100644 index 0000000..405ed7d --- /dev/null +++ b/src/components/Button.stories.tsx @@ -0,0 +1,136 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import { PlusIcon } from '@heroicons/react/24/solid'; +import { Button } from './Button'; + +const meta = { + title: 'Components/Button', + component: Button, + tags: ['autodocs'], + parameters: { + docs: { + description: { + component: 'Polymorphic button component: renders a native `