Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
ignorePatterns: ['lib/**/*', 'dist/**/*'],
ignorePatterns: [
'lib/**/*',
'dist/**/*',
'node_modules/**/*',
'storybook-static/**/*'
],
plugins: ['@typescript-eslint'],
extends: [
'eslint:recommended',
Expand All @@ -18,7 +23,7 @@ module.exports = {
files: ['*.ts', '*.tsx', '*.js'],
rules: {
'@typescript-eslint/explicit-module-boundary-types': 'off',
'no-restricted-imports': ['error', 'semantic-ui-react']
'no-restricted-imports': 'off'
}
},
{
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Use Node.js 18.x
- name: Use Node.js 20.x
uses: actions/[email protected]
with:
node-version: 18.x
node-version: 20.x
- name: Cache node modules
id: cache-npm
uses: actions/cache@v3
Expand Down Expand Up @@ -48,10 +48,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Use Node.js 18.x
- name: Use Node.js 20.x
uses: actions/[email protected]
with:
node-version: 18.x
node-version: 20.x
- name: Cache node modules
id: cache-npm
uses: actions/cache@v3
Expand Down Expand Up @@ -97,10 +97,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Use Node.js 18.x
- name: Use Node.js 20.x
uses: actions/[email protected]
with:
node-version: 18.x
node-version: 20.x
- name: Cache node modules
id: cache-npm
uses: actions/cache@v3
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Use Node.js 18.x
- name: Use Node.js 20.x
uses: actions/[email protected]
with:
node-version: 18.x
node-version: 20.x
- name: Cache node modules
id: cache-npm
uses: actions/cache@v3
Expand Down
123 changes: 99 additions & 24 deletions .storybook/main.ts
Original file line number Diff line number Diff line change
@@ -1,32 +1,107 @@
const webpackConfig = require('../webpack.config.js');
const cssRule = webpackConfig.module.rules[0]
import type { StorybookConfig } from '@storybook/react-webpack5'

module.exports = {
webpackFinal: async (config) => {
config.externals = ["react-dom/client"]
config.module.rules = [
{
test: [/\.stories\.(jsx?$|tsx?$)/],
enforce: "pre",
use:[{ loader: require.resolve('@storybook/source-loader')}]
},
// replace mini-css-extract-plugin with style-loader
{
test: /\.css$/,
use: ['style-loader', ...cssRule.use.slice(1)]
},
...webpackConfig.module.rules.slice(1)
]
return { ...config, module: { ...config.module, rules: config.module.rules } };
},
stories: [
"../src/**/*.stories.@(js|jsx|ts|tsx)"
],
const config: StorybookConfig = {
stories: ['../src/**/*.stories.@(js|jsx|ts|tsx)'],
addons: [
'@storybook/addon-storysource',
'@storybook/addon-a11y',
'@storybook/addon-essentials'
],
framework: "@storybook/react"
framework: {
name: '@storybook/react-webpack5',
options: {}
},
typescript: {
reactDocgen: false
},
webpackFinal: async (config) => {
// Don't externalize react-dom/client - it's needed for Storybook 8
// config.externals = ["react-dom/client"];

// Ensure module and rules exist
if (!config.module) {
config.module = { rules: [] }
}
if (!config.module.rules) {
config.module.rules = []
}

// Add resolve configuration
if (!config.resolve) {
config.resolve = {}
}
if (!config.resolve.alias) {
config.resolve.alias = {}
}

// Add alias for semantic-ui-react
config.resolve.alias['semantic-ui-react'] =
require.resolve('semantic-ui-react')

// Add fallback for node modules
if (!config.resolve.fallback) {
config.resolve.fallback = {}
}
config.resolve.fallback['fs'] = false
config.resolve.fallback['path'] = false

// Add ts-loader for TypeScript files
config.module.rules.push({
test: /\.(ts|tsx)$/,
exclude: /node_modules/,
use: [
{
loader: 'ts-loader',
options: {
transpileOnly: true,
configFile: 'tsconfig.json'
}
}
]
})

// Add file-loader for images with unique names
config.module.rules.push({
test: /\.(png|jpe?g|gif|svg)$/i,
type: 'asset/resource',
generator: {
filename: 'assets/[name].[hash][ext]'
}
})

// Override CSS rules to prevent postcss conflicts
const cssRuleIndex = config.module.rules.findIndex(
(rule) =>
rule &&
typeof rule === 'object' &&
'test' in rule &&
rule.test &&
rule.test.toString().includes('css')
)

if (cssRuleIndex !== -1) {
config.module.rules[cssRuleIndex] = {
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
importLoaders: 1,
url: {
filter: (url: string) => {
// Allow all URLs to be processed
return true
}
}
}
}
]
}
}

return config
}
}

export default config
2 changes: 1 addition & 1 deletion .storybook/manager.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { addons } from '@storybook/addons'
import { addons } from '@storybook/manager-api'
import { create } from '@storybook/theming'

addons.setConfig({
Expand Down
32 changes: 32 additions & 0 deletions .storybook/preview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,38 @@ import '../src/themes/base-theme.css'
import '../src/themes/alternative/light-theme.css'
import '../src/themes/alternative/dark-theme.css'

// Add custom CSS for Semantic UI icons
const iconStyles = `
@font-face {
font-family: 'Icons';
src: url('https://cdn.jsdelivr.net/npm/[email protected]/dist/themes/default/assets/fonts/icons.eot');
src: url('https://cdn.jsdelivr.net/npm/[email protected]/dist/themes/default/assets/fonts/icons.eot?#iefix') format('embedded-opentype'),
url('https://cdn.jsdelivr.net/npm/[email protected]/dist/themes/default/assets/fonts/icons.woff2') format('woff2'),
url('https://cdn.jsdelivr.net/npm/[email protected]/dist/themes/default/assets/fonts/icons.woff') format('woff'),
url('https://cdn.jsdelivr.net/npm/[email protected]/dist/themes/default/assets/fonts/icons.ttf') format('truetype'),
url('https://cdn.jsdelivr.net/npm/[email protected]/dist/themes/default/assets/fonts/icons.svg#icons') format('svg');
font-weight: normal;
font-style: normal;
}
`

// Inject the styles
if (typeof document !== 'undefined') {
const style = document.createElement('style')
style.textContent = iconStyles
document.head.appendChild(style)
}

// Mock environment variables for Storybook
if (typeof window !== 'undefined') {
;(window as any).ENV = {
TRANSAK: 'transak',
MOON_PAY: 'moonPay',
NETWORK: 'ethereum'
// Add other environment variables as needed
}
}

export const decorators = [
(Story) => (
<>
Expand Down
4 changes: 2 additions & 2 deletions .storybook/theme.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from 'react'
import { Radio } from '../src/components/Radio/Radio'
import Icon from 'semantic-ui-react/dist/commonjs/elements/Icon/Icon'
import { Radio } from 'semantic-ui-react'
import { Icon } from 'semantic-ui-react'
import './theme.css'

const { useState, useCallback, useEffect } = React
Expand Down
6 changes: 5 additions & 1 deletion jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,9 @@ module.exports = {
'\\.(css|less)$': '<rootDir>/test/__mocks__/styleMock.ts'
},
setupFilesAfterEnv: ['<rootDir>/test/setup.ts'],
collectCoverageFrom: ['src/components/**/*.(ts|tsx|js)']
collectCoverageFrom: ['src/components/**/*.(ts|tsx|js)'],
// React 18 configurations
testEnvironmentOptions: {
customExportConditions: ['node', 'node-addons']
}
}
Loading
Loading