ci: Fix CI issues after rspack migration

This commit is contained in:
deytenit committed 2026-02-13 00:20:45 +03:00
1 parent 4628c043ce
commit 9ed7409dc8
16 files changed
+375 -122

No files matched your search

@@ -88,7 +88,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Lint STL package
run: pnpm --filter @ermnvldmr/stl lint
@@ -112,7 +112,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Typecheck STL package
run: pnpm --filter @ermnvldmr/stl typecheck
@@ -136,7 +136,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Test STL package
run: pnpm --filter @ermnvldmr/stl test:coverage
- name: Upload coverage to Codecov
@@ -167,6 +167,6 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Build STL package
run: pnpm --filter @ermnvldmr/stl build
@@ -92,7 +92,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Lint STL package
run: pnpm --filter @ermnvldmr/stl lint
- name: Lint UI package
@@ -118,7 +118,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Typecheck STL package
run: pnpm --filter @ermnvldmr/stl typecheck
- name: Typecheck UI package
@@ -144,7 +144,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Test UI package
run: pnpm --filter @ermnvldmr/ui test:coverage
- name: Upload coverage to Codecov
@@ -175,7 +175,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Build UI package
run: pnpm --filter @ermnvldmr/ui build
- name: Build UI Storybook
@@ -201,7 +201,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Install Playwright browsers
run: pnpm --filter @ermnvldmr/ui exec playwright install --with-deps chromium
- name: Build UI Storybook
@@ -236,6 +236,6 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Build UI package
run: pnpm --filter @ermnvldmr/ui build
@@ -43,8 +43,8 @@ jobs:
- name: Install dependencies
run: pnpm install --frozen-lockfile
lint-static:
name: Lint - Static
build-configs:
name: Build - Configs
needs: setup-stage
runs-on: ubuntu-latest
steps:
@@ -59,12 +59,43 @@ jobs:
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build Rsbuild config
run: pnpm --filter @ermnvldmr/rsbuild-config build
- name: Upload Config Artifacts
uses: actions/upload-artifact@v4
with:
name: config-artifacts
path: |
packages/rsbuild-config/dist
retention-days: 1
lint-static:
name: Lint - Static
needs: build-configs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9.12.3
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Download Config Artifacts
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: .
- name: Lint static service
run: pnpm --filter @ermnvldmr/static lint
typecheck-static:
name: Typecheck - Static
needs: setup-stage
needs: build-configs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -78,12 +109,17 @@ jobs:
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Download Config Artifacts
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: .
- name: Typecheck static service
run: pnpm --filter @ermnvldmr/static typecheck
build-static:
name: Build - Static Site
needs: setup-stage
needs: build-configs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -97,6 +133,11 @@ jobs:
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Download Config Artifacts
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: .
- name: Build static service
run: pnpm --filter @ermnvldmr/static build
- name: Upload build artifacts
@@ -93,7 +93,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Lint STL package
run: pnpm --filter @ermnvldmr/stl lint
- name: Lint UI package
@@ -121,7 +121,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Typecheck STL package
run: pnpm --filter @ermnvldmr/stl typecheck
- name: Typecheck UI package
@@ -149,7 +149,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Build WWW Storybook
run: pnpm --filter @ermnvldmr/www build-storybook
- name: Upload Storybook build
@@ -179,7 +179,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Test STL package
run: pnpm --filter @ermnvldmr/stl test:coverage
- name: Test UI package
@@ -214,7 +214,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Install Playwright browsers
run: pnpm --filter @ermnvldmr/www exec playwright install --with-deps chromium
- name: Download Storybook build
@@ -252,7 +252,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: packages
path: .
- name: Build WWW service
run: pnpm --filter @ermnvldmr/www build
+8 -3
View File
@@ -9,13 +9,13 @@ WORKDIR /app
# Copy monorepo configuration
COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./
# Copy all package.json files to allow pnpm to fetch dependencies
COPY packages/eslint-config/package.json ./packages/eslint-config/
COPY packages/jest-config/package.json ./packages/jest-config/
COPY packages/rsbuild-config/package.json ./packages/rsbuild-config/
COPY packages/stl/package.json ./packages/stl/
COPY packages/storybook-config/package.json ./packages/storybook-config/
COPY packages/ui/package.json ./packages/ui/
COPY packages/vite-config/package.json ./packages/vite-config/
COPY services/www/package.json ./services/www/
# Install dependencies
@@ -24,6 +24,11 @@ RUN pnpm install --frozen-lockfile
# Copy source code
COPY . .
# Build dependencies
RUN pnpm --filter @ermnvldmr/rsbuild-config build
RUN pnpm --filter @ermnvldmr/stl build
RUN pnpm --filter @ermnvldmr/ui build
# Build the website
RUN pnpm --filter @ermnvldmr/www build
@@ -34,4 +39,4 @@ COPY --from=builder /app/services/www/dist /usr/share/nginx/html
COPY ci/config/nginx/default.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
CMD ["nginx", "-g", "daemon off;"]
@@ -1 +0,0 @@
{"fileNames":["../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/liLine truncated
+3 -3
View File
@@ -24,11 +24,11 @@
"@storybook/addon-themes": "^8.6.15",
"@storybook/react": "^8.6.15",
"@storybook/react-vite": "^8.6.15",
"@storybook/test": "^8.6.15",
"@tailwindcss/vite": "^4.1.4",
"vite-plugin-istanbul": "^7.2.1"
"@storybook/test": "^8.6.15"
},
"devDependencies": {
"@rsbuild/plugin-babel": "^1.1.0",
"babel-plugin-istanbul": "^7.0.1",
"typescript": "^5.8.3",
"vite": "^7.2.2"
}
+23 -26
View File
@@ -1,5 +1,5 @@
import { mergeConfig } from 'vite';
import type { StorybookConfig } from '@storybook/react-vite';
import { pluginBabel } from '@rsbuild/plugin-babel';
import type { StorybookConfig } from 'storybook-react-rsbuild';
export const baseStorybookConfig: Partial<StorybookConfig> = {
addons: [
@@ -10,7 +10,7 @@ export const baseStorybookConfig: Partial<StorybookConfig> = {
'@storybook/addon-coverage',
],
framework: {
name: '@storybook/react-vite',
name: 'storybook-react-rsbuild',
options: {},
},
typescript: {
@@ -21,28 +21,25 @@ export const baseStorybookConfig: Partial<StorybookConfig> = {
propFilter: (prop) => (prop.parent ? !/node_modules/.test(prop.parent.fileName) : true),
},
},
viteFinal: async (config) => {
try {
const tailwindcss = (await import('@tailwindcss/vite')).default;
const istanbul = (await import('vite-plugin-istanbul')).default;
return mergeConfig(config, {
plugins: [
tailwindcss(),
istanbul({
include: 'src/**/*',
exclude: ['node_modules', 'test/', '**/*.stories.tsx', '**/*.test.tsx'],
extension: ['.js', '.jsx', '.ts', '.tsx'],
requireEnv: false,
cypress: false,
forceBuildInstrument: true,
}),
],
});
} catch (error) {
// Fallback if plugins can't be loaded
console.warn('Failed to load Storybook plugins:', error);
return config;
}
rsbuildFinal: async (config) => {
// Add Babel plugin with istanbul for coverage
config.plugins = config.plugins || [];
config.plugins.push(
pluginBabel({
include: /\.(?:jsx|tsx)$/,
exclude: /[\\/]node_modules[\\/]/,
babelLoaderOptions: (opts) => {
opts.plugins = opts.plugins || [];
opts.plugins.push([
'babel-plugin-istanbul',
{
exclude: ['**/*.stories.tsx', '**/*.test.tsx', 'node_modules/**'],
extension: ['.js', '.jsx', '.ts', '.tsx'],
},
]);
},
})
);
return config;
},
};
+23 -2
View File
@@ -1,5 +1,6 @@
import type { StorybookConfig } from 'storybook-react-rsbuild';
import { pluginBabel } from '@rsbuild/plugin-babel';
import { resolve } from 'path';
import type { StorybookConfig } from 'storybook-react-rsbuild';
const config: StorybookConfig = {
stories: ['../src/**/*.stories.@(js|jsx|ts|tsx|mdx)'],
@@ -28,8 +29,28 @@ const config: StorybookConfig = {
...config.resolve.alias,
'@ermnvldmr/stl': resolve(__dirname, '../../stl/src'),
};
// Add Babel plugin with istanbul for coverage
config.plugins = config.plugins || [];
config.plugins.push(
pluginBabel({
include: /\.(?:jsx|tsx)$/,
exclude: /[\\/]node_modules[\\/]/,
babelLoaderOptions: (opts) => {
opts.plugins = opts.plugins || [];
opts.plugins.push([
'babel-plugin-istanbul',
{
exclude: ['**/*.stories.tsx', '**/*.test.tsx', 'node_modules/**'],
extension: ['.js', '.jsx', '.ts', '.tsx'],
},
]);
},
})
);
return config;
},
};
export default config;
export default config;
+2
View File
@@ -46,6 +46,7 @@
"@ermnvldmr/rsbuild-config": "workspace:*",
"@ermnvldmr/storybook-config": "workspace:*",
"@rsbuild/core": "^1.2.11",
"@rsbuild/plugin-babel": "^1.1.0",
"@storybook/addon-a11y": "^8.6.15",
"@storybook/addon-coverage": "^3.0.0",
"@storybook/addon-essentials": "^8.6.15",
@@ -62,6 +63,7 @@
"@types/react": "^19.1.2",
"@types/react-dom": "^19.1.2",
"@vitest/coverage-v8": "^4.0.18",
"babel-plugin-istanbul": "^7.0.1",
"concurrently": "^9.1.2",
"http-server": "^14.1.1",
"jsdom": "^28.0.0",
+1 -1
View File
@@ -4,9 +4,9 @@ import { useLink } from 'react-aria';
import { Text } from '../Text/Text';
import type { TextColor, TextSize, TextType } from '../Text/Text';
import type { ClassNameProps } from '@ermnvldmr/stl';
import type { AriaLinkOptions } from 'react-aria';
import type { TextColor, TextSize, TextType } from '../Text/Text';
/**
* Props for the Link component.
+228 -65
View File
@@ -159,13 +159,13 @@ importers:
'@storybook/test':
specifier: ^8.6.15
version: 8.6.15(storybook@10.2.8(@testing-library/dom@10.4.0)(prettier@3.5.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))
'@tailwindcss/vite':
specifier: ^4.1.4
version: 4.1.18(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2))
vite-plugin-istanbul:
specifier: ^7.2.1
version: 7.2.1(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2))
devDependencies:
'@rsbuild/plugin-babel':
specifier: ^1.1.0
version: 1.1.0(@rsbuild/core@1.7.3)
babel-plugin-istanbul:
specifier: ^7.0.1
version: 7.0.1
typescript:
specifier: ^5.8.3
version: 5.8.3
@@ -227,6 +227,9 @@ importers:
'@rsbuild/core':
specifier: ^1.2.11
version: 1.7.3
'@rsbuild/plugin-babel':
specifier: ^1.1.0
version: 1.1.0(@rsbuild/core@1.7.3)
'@storybook/addon-a11y':
specifier: ^8.6.15
version: 8.6.15(storybook@8.6.15(prettier@3.5.3))
@@ -275,6 +278,9 @@ importers:
'@vitest/coverage-v8':
specifier: ^4.0.18
version: 4.0.18(vitest@4.0.18(@types/node@25.0.10)(jiti@2.6.1)(jsdom@28.0.0)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2))
babel-plugin-istanbul:
specifier: ^7.0.1
version: 7.0.1
concurrently:
specifier: ^9.1.2
version: 9.2.1
@@ -400,6 +406,9 @@ importers:
'@rsbuild/core':
specifier: ^1.2.11
version: 1.7.3
'@rsbuild/plugin-babel':
specifier: ^1.1.0
version: 1.1.0(@rsbuild/core@1.7.3)
'@rsbuild/plugin-mdx':
specifier: ^1.1.1
version: 1.1.1(@rsbuild/core@1.7.3)(webpack@5.105.1(@swc/core@1.15.10(@swc/helpers@0.5.18)))
@@ -454,6 +463,9 @@ importers:
'@vitest/coverage-v8':
specifier: ^4.0.18
version: 4.0.18(vitest@4.0.18(@types/node@25.0.10)(jiti@2.6.1)(jsdom@28.0.0)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2))
babel-plugin-istanbul:
specifier: ^7.0.1
version: 7.0.1
concurrently:
specifier: ^9.1.2
version: 9.2.1
@@ -601,14 +613,28 @@ packages:
resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==}
engines: {node: '>=6.9.0'}
'@babel/helper-annotate-as-pure@7.27.3':
resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==}
engines: {node: '>=6.9.0'}
'@babel/helper-compilation-targets@7.28.6':
resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==}
engines: {node: '>=6.9.0'}
'@babel/helper-create-class-features-plugin@7.28.6':
resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-globals@7.28.0':
resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
engines: {node: '>=6.9.0'}
'@babel/helper-member-expression-to-functions@7.28.5':
resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==}
engines: {node: '>=6.9.0'}
'@babel/helper-module-imports@7.28.6':
resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==}
engines: {node: '>=6.9.0'}
@@ -619,10 +645,24 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-optimise-call-expression@7.27.1':
resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==}
engines: {node: '>=6.9.0'}
'@babel/helper-plugin-utils@7.28.6':
resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==}
engines: {node: '>=6.9.0'}
'@babel/helper-replace-supers@7.28.6':
resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-skip-transparent-expression-wrappers@7.27.1':
resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==}
engines: {node: '>=6.9.0'}
'@babel/helper-string-parser@7.27.1':
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
@@ -649,6 +689,12 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/plugin-proposal-decorators@7.29.0':
resolution: {integrity: sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-async-generators@7.8.4':
resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
peerDependencies:
@@ -670,6 +716,12 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-decorators@7.28.6':
resolution: {integrity: sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-import-attributes@7.28.6':
resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==}
engines: {node: '>=6.9.0'}
@@ -740,6 +792,30 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-class-properties@7.28.6':
resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-modules-commonjs@7.28.6':
resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-typescript@7.28.6':
resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/preset-typescript@7.28.5':
resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/runtime@7.28.6':
resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==}
engines: {node: '>=6.9.0'}
@@ -2590,6 +2666,11 @@ packages:
engines: {node: '>=18.12.0'}
hasBin: true
'@rsbuild/plugin-babel@1.1.0':
resolution: {integrity: sha512-stkd2Gc9ruXDNKnPt75BORteuMFZz3s3GzuDprbldOzU0r0+56seQ2JhWGd4NhJMnJvviKxNkiTISsYU+LlVEg==}
peerDependencies:
'@rsbuild/core': ^1.0.0 || ^2.0.0-0
'@rsbuild/plugin-mdx@1.1.1':
resolution: {integrity: sha512-w+8uC0mQObdO9C8gEYQAex8tQOnHKnd1SyE11CcWzlNi7+vGeo4kQfX7ftlUSIs7Fym69nJ9Jnyme6iaKBMjWw==}
peerDependencies:
@@ -3131,11 +3212,6 @@ packages:
peerDependencies:
tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1'
'@tailwindcss/vite@4.1.18':
resolution: {integrity: sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==}
peerDependencies:
vite: ^7.0.0
'@testing-library/dom@10.4.0':
resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==}
engines: {node: '>=18'}
@@ -3202,9 +3278,6 @@ packages:
'@types/babel__generator@7.27.0':
resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
'@types/babel__generator@7.6.8':
resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
'@types/babel__template@7.4.4':
resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
@@ -3723,6 +3796,10 @@ packages:
resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
engines: {node: '>=8'}
babel-plugin-istanbul@7.0.1:
resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==}
engines: {node: '>=12'}
babel-plugin-jest-hoist@29.6.3:
resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -6805,10 +6882,6 @@ packages:
resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
engines: {node: '>=8'}
test-exclude@7.0.1:
resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==}
engines: {node: '>=18'}
thingies@2.5.0:
resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==}
engines: {node: '>=10.18'}
@@ -7050,6 +7123,10 @@ packages:
resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==}
engines: {node: '>=14.0.0'}
upath@2.0.1:
resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==}
engines: {node: '>=4'}
update-browserslist-db@1.2.3:
resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
hasBin: true
@@ -7123,11 +7200,6 @@ packages:
peerDependencies:
vite: ^7.0.0
vite-plugin-istanbul@7.2.1:
resolution: {integrity: sha512-DSPi4ulvYsjnP44sTI5oriNosbM0E6m3uoCxjdxboTtVzxSkFwcDy3/JnSYKebjr+ZToJwVLTms+2CM0rmbbzQ==}
peerDependencies:
vite: ^7.0.0
vite@7.3.1:
resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -7478,10 +7550,10 @@ snapshots:
'@babel/helper-compilation-targets': 7.28.6
'@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6)
'@babel/helpers': 7.28.6
'@babel/parser': 7.28.6
'@babel/parser': 7.29.0
'@babel/template': 7.28.6
'@babel/traverse': 7.28.6
'@babel/types': 7.28.6
'@babel/types': 7.29.0
'@jridgewell/remapping': 2.3.5
convert-source-map: 2.0.0
debug: 4.4.3
@@ -7499,6 +7571,10 @@ snapshots:
'@jridgewell/trace-mapping': 0.3.31
jsesc: 3.1.0
'@babel/helper-annotate-as-pure@7.27.3':
dependencies:
'@babel/types': 7.29.0
'@babel/helper-compilation-targets@7.28.6':
dependencies:
'@babel/compat-data': 7.28.6
@@ -7507,12 +7583,32 @@ snapshots:
lru-cache: 5.1.1
semver: 6.3.1
'@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.28.6)':
dependencies:
'@babel/core': 7.28.6
'@babel/helper-annotate-as-pure': 7.27.3
'@babel/helper-member-expression-to-functions': 7.28.5
'@babel/helper-optimise-call-expression': 7.27.1
'@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.6)
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
'@babel/traverse': 7.28.6
semver: 6.3.1
transitivePeerDependencies:
- supports-color
'@babel/helper-globals@7.28.0': {}
'@babel/helper-member-expression-to-functions@7.28.5':
dependencies:
'@babel/traverse': 7.28.6
'@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
'@babel/helper-module-imports@7.28.6':
dependencies:
'@babel/traverse': 7.28.6
'@babel/types': 7.28.6
'@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
@@ -7525,8 +7621,28 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@babel/helper-optimise-call-expression@7.27.1':
dependencies:
'@babel/types': 7.29.0
'@babel/helper-plugin-utils@7.28.6': {}
'@babel/helper-replace-supers@7.28.6(@babel/core@7.28.6)':
dependencies:
'@babel/core': 7.28.6
'@babel/helper-member-expression-to-functions': 7.28.5
'@babel/helper-optimise-call-expression': 7.27.1
'@babel/traverse': 7.28.6
transitivePeerDependencies:
- supports-color
'@babel/helper-skip-transparent-expression-wrappers@7.27.1':
dependencies:
'@babel/traverse': 7.28.6
'@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
'@babel/helper-string-parser@7.27.1': {}
'@babel/helper-validator-identifier@7.28.5': {}
@@ -7536,7 +7652,7 @@ snapshots:
'@babel/helpers@7.28.6':
dependencies:
'@babel/template': 7.28.6
'@babel/types': 7.28.6
'@babel/types': 7.29.0
'@babel/parser@7.28.6':
dependencies:
@@ -7546,6 +7662,15 @@ snapshots:
dependencies:
'@babel/types': 7.29.0
'@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.28.6)':
dependencies:
'@babel/core': 7.28.6
'@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6)
'@babel/helper-plugin-utils': 7.28.6
'@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.28.6)
transitivePeerDependencies:
- supports-color
'@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.6)':
dependencies:
'@babel/core': 7.28.6
@@ -7566,6 +7691,11 @@ snapshots:
'@babel/core': 7.28.6
'@babel/helper-plugin-utils': 7.28.6
'@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.28.6)':
dependencies:
'@babel/core': 7.28.6
'@babel/helper-plugin-utils': 7.28.6
'@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.6)':
dependencies:
'@babel/core': 7.28.6
@@ -7631,6 +7761,44 @@ snapshots:
'@babel/core': 7.28.6
'@babel/helper-plugin-utils': 7.28.6
'@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.28.6)':
dependencies:
'@babel/core': 7.28.6
'@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6)
'@babel/helper-plugin-utils': 7.28.6
transitivePeerDependencies:
- supports-color
'@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.28.6)':
dependencies:
'@babel/core': 7.28.6
'@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6)
'@babel/helper-plugin-utils': 7.28.6
transitivePeerDependencies:
- supports-color
'@babel/plugin-transform-typescript@7.28.6(@babel/core@7.28.6)':
dependencies:
'@babel/core': 7.28.6
'@babel/helper-annotate-as-pure': 7.27.3
'@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6)
'@babel/helper-plugin-utils': 7.28.6
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
'@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.28.6)
transitivePeerDependencies:
- supports-color
'@babel/preset-typescript@7.28.5(@babel/core@7.28.6)':
dependencies:
'@babel/core': 7.28.6
'@babel/helper-plugin-utils': 7.28.6
'@babel/helper-validator-option': 7.27.1
'@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6)
'@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.28.6)
'@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.28.6)
transitivePeerDependencies:
- supports-color
'@babel/runtime@7.28.6': {}
'@babel/template@7.28.6':
@@ -9891,6 +10059,20 @@ snapshots:
core-js: 3.47.0
jiti: 2.6.1
'@rsbuild/plugin-babel@1.1.0(@rsbuild/core@1.7.3)':
dependencies:
'@babel/core': 7.28.6
'@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.28.6)
'@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.28.6)
'@babel/preset-typescript': 7.28.5(@babel/core@7.28.6)
'@rsbuild/core': 1.7.3
'@types/babel__core': 7.20.5
deepmerge: 4.3.1
reduce-configs: 1.1.1
upath: 2.0.1
transitivePeerDependencies:
- supports-color
'@rsbuild/plugin-mdx@1.1.1(@rsbuild/core@1.7.3)(webpack@5.105.1(@swc/core@1.15.10(@swc/helpers@0.5.18)))':
dependencies:
'@mdx-js/loader': 3.1.1(webpack@5.105.1(@swc/core@1.15.10(@swc/helpers@0.5.18)))
@@ -10711,13 +10893,6 @@ snapshots:
dependencies:
postcss-selector-parser: 6.0.10
'@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2))':
dependencies:
'@tailwindcss/node': 4.1.18
'@tailwindcss/oxide': 4.1.18
tailwindcss: 4.1.18
vite: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2)
'@testing-library/dom@10.4.0':
dependencies:
'@babel/code-frame': 7.28.6
@@ -10786,24 +10961,20 @@ snapshots:
'@types/babel__core@7.20.5':
dependencies:
'@babel/parser': 7.28.6
'@babel/types': 7.28.6
'@babel/parser': 7.29.0
'@babel/types': 7.29.0
'@types/babel__generator': 7.27.0
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.28.0
'@types/babel__generator@7.27.0':
dependencies:
'@babel/types': 7.28.6
'@types/babel__generator@7.6.8':
dependencies:
'@babel/types': 7.28.6
'@babel/types': 7.29.0
'@types/babel__template@7.4.4':
dependencies:
'@babel/parser': 7.28.6
'@babel/types': 7.28.6
'@babel/parser': 7.29.0
'@babel/types': 7.29.0
'@types/babel__traverse@7.28.0':
dependencies:
@@ -11457,10 +11628,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
babel-plugin-istanbul@7.0.1:
dependencies:
'@babel/helper-plugin-utils': 7.28.6
'@istanbuljs/load-nyc-config': 1.1.0
'@istanbuljs/schema': 0.1.3
istanbul-lib-instrument: 6.0.3
test-exclude: 6.0.0
transitivePeerDependencies:
- supports-color
babel-plugin-jest-hoist@29.6.3:
dependencies:
'@babel/template': 7.28.6
'@babel/types': 7.28.6
'@babel/types': 7.29.0
'@types/babel__core': 7.20.5
'@types/babel__traverse': 7.28.0
@@ -13105,7 +13286,7 @@ snapshots:
istanbul-lib-instrument@5.2.1:
dependencies:
'@babel/core': 7.28.6
'@babel/parser': 7.28.6
'@babel/parser': 7.29.0
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
semver: 6.3.1
@@ -15411,12 +15592,6 @@ snapshots:
glob: 7.2.3
minimatch: 3.1.2
test-exclude@7.0.1:
dependencies:
'@istanbuljs/schema': 0.1.3
glob: 10.5.0
minimatch: 9.0.5
thingies@2.5.0(tslib@2.8.1):
dependencies:
tslib: 2.8.1
@@ -15675,6 +15850,8 @@ snapshots:
acorn: 8.15.0
webpack-virtual-modules: 0.6.2
upath@2.0.1: {}
update-browserslist-db@1.2.3(browserslist@4.28.1):
dependencies:
browserslist: 4.28.1
@@ -15755,20 +15932,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
vite-plugin-istanbul@7.2.1(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2)):
dependencies:
'@babel/generator': 7.28.6
'@istanbuljs/load-nyc-config': 1.1.0
'@types/babel__generator': 7.6.8
espree: 10.4.0
istanbul-lib-instrument: 6.0.3
picocolors: 1.1.1
source-map: 0.7.6
test-exclude: 7.0.1
vite: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2)
transitivePeerDependencies:
- supports-color
vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2):
dependencies:
esbuild: 0.27.2
+22 -1
View File
@@ -1,4 +1,5 @@
import path from 'path';
import { pluginBabel } from '@rsbuild/plugin-babel';
import type { StorybookConfig } from 'storybook-react-rsbuild';
const config: StorybookConfig = {
@@ -22,8 +23,28 @@ const config: StorybookConfig = {
'@ermnvldmr/stl': path.resolve(__dirname, '../../../packages/stl/src'),
'@ermnvldmr/ui': path.resolve(__dirname, '../../../packages/ui/src'),
};
// Add Babel plugin with istanbul for coverage
config.plugins = config.plugins || [];
config.plugins.push(
pluginBabel({
include: /\.(?:jsx|tsx)$/,
exclude: /[\\/]node_modules[\\/]/,
babelLoaderOptions: (opts) => {
opts.plugins = opts.plugins || [];
opts.plugins.push([
'babel-plugin-istanbul',
{
exclude: ['**/*.stories.tsx', '**/*.test.tsx', 'node_modules/**'],
extension: ['.js', '.jsx', '.ts', '.tsx'],
},
]);
},
})
);
return config;
},
};
export default config;
export default config;
+2
View File
@@ -35,6 +35,7 @@
"@ermnvldmr/rsbuild-config": "workspace:*",
"@ermnvldmr/storybook-config": "workspace:*",
"@rsbuild/core": "^1.2.11",
"@rsbuild/plugin-babel": "^1.1.0",
"@rsbuild/plugin-mdx": "^1.1.1",
"@storybook/addon-a11y": "^8.6.15",
"@storybook/addon-coverage": "^3.0.0",
@@ -53,6 +54,7 @@
"@types/react-dom": "^19.1.2",
"@types/suncalc": "^1.9.2",
"@vitest/coverage-v8": "^4.0.18",
"babel-plugin-istanbul": "^7.0.1",
"concurrently": "^9.1.2",
"eslint": "^9.25.1",
"http-server": "^14.1.1",
@@ -8,6 +8,7 @@ import {
Container,
Text,
} from '@ermnvldmr/ui';
import React from 'react';
import { ArticleLayout } from './ArticleLayout';
@@ -1,3 +1,4 @@
import React from 'react';
import { Welcome } from './Welcome';
import type { Meta, StoryObj } from '@storybook/react';