feat: Add Storybook configuration and motion tokens implementation

- Introduced Storybook configuration files (`main.ts`, `preview.ts`, `tsconfig.json`) for Angular components.
- Created motion tokens in `motion-tokens.ts` to define durations, easing functions, and transforms.
- Developed a Storybook story for motion tokens showcasing their usage and reduced motion fallback.
- Added SCSS variables for motion durations, easing, and transforms in `_motion.scss`.
- Implemented accessibility smoke tests using Playwright and Axe for automated accessibility checks.
- Created portable and sealed bundle structures with corresponding JSON files for evidence locker.
- Added shell script for verifying notify kit determinism.
This commit is contained in:
StellaOps Bot
2025-12-04 21:36:06 +02:00
parent 600f3a7a3c
commit f214edff82
68 changed files with 1742 additions and 18 deletions

View File

@@ -0,0 +1,19 @@
import type { StorybookConfig } from '@storybook/angular';
const config: StorybookConfig = {
stories: ['../src/stories/**/*.stories.@(ts|mdx)'],
addons: [
'@storybook/addon-essentials',
'@storybook/addon-a11y',
'@storybook/addon-interactions',
],
framework: {
name: '@storybook/angular',
options: {},
},
docs: {
autodocs: 'tag',
},
};
export default config;

View File

@@ -0,0 +1,53 @@
import type { Preview } from '@storybook/angular';
import '../src/styles.scss';
export const globalTypes = {
reduceMotion: {
name: 'Reduced Motion',
description: 'Toggle reduced-motion mode for motion tokens',
defaultValue: false,
toolbar: {
icon: 'contrast',
items: [
{ value: false, title: 'Motion enabled' },
{ value: true, title: 'Reduce motion' },
],
},
},
};
const preview: Preview = {
parameters: {
actions: { argTypesRegex: '^on[A-Z].*' },
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
a11y: {
// Keep enabled; violations surface in the Storybook panel
disable: false,
},
backgrounds: {
default: 'light',
values: [
{ name: 'light', value: '#f6f8fb' },
{ name: 'dark', value: '#0f172a' },
],
},
},
decorators: [
(story, context) => {
const root = document.documentElement;
if (context.globals.reduceMotion) {
root.dataset.reduceMotion = '1';
} else {
root.dataset.reduceMotion = '0';
}
return story();
},
],
};
export default preview;

View File

@@ -0,0 +1,11 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"types": ["storybook__angular", "node"]
},
"include": [
"../src/**/*.ts",
"../.storybook/**/*.ts",
"../src/**/*.stories.ts"
]
}