Skip to content

Commit c29b615

Browse files
Use css modules
1 parent 62a182c commit c29b615

File tree

6 files changed

+107
-37
lines changed

6 files changed

+107
-37
lines changed

.storybook/main.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,38 @@ const config: StorybookConfig = {
1212
name: "@storybook/nextjs",
1313
options: {},
1414
},
15+
webpackFinal: (config: any = { module: { rules: [] } }) => {
16+
if (!config.module?.rules) {
17+
config.module = { rules: [] };
18+
}
19+
20+
const cssRule = config.module.rules.find((rule: any) =>
21+
rule?.test?.toString().includes("css")
22+
);
23+
24+
if (cssRule) {
25+
cssRule.test = /\.css$/;
26+
cssRule.exclude = /\.module\.css$/;
27+
}
28+
29+
// Add specific rule for CSS Modules
30+
config.module.rules.push({
31+
test: /\.module\.css$/,
32+
use: [
33+
"style-loader",
34+
{
35+
loader: "css-loader",
36+
options: {
37+
modules: {
38+
localIdentName: "[name]__[local]___[hash:base64:5]",
39+
},
40+
},
41+
},
42+
],
43+
});
44+
45+
return config;
46+
},
1547
};
1648

1749
export default config;

components/TimeSpanBar/TimeSpanBar.css

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
.component {
2+
border: 1px solid #fae6c6;
3+
padding: 12px 16px;
4+
border-radius: 4px;
5+
display: flex;
6+
flex-direction: column;
7+
gap: 8px;
8+
}
9+
10+
.header {
11+
font-size: 16px;
12+
font-weight: 600;
13+
}
14+
15+
.content {
16+
display: flex;
17+
flex-direction: row;
18+
gap: 8px;
19+
}
20+
21+
.start {
22+
display: flex;
23+
flex-direction: column;
24+
gap: 4px;
25+
}
26+
27+
.end {
28+
display: flex;
29+
flex-direction: column;
30+
gap: 4px;
31+
}
32+
33+
.image {
34+
width: 64px;
35+
height: 64px;
36+
}
37+
38+
.label {
39+
font-size: 14px;
40+
font-weight: 400;
41+
}
42+
43+
.date {
44+
font-size: 14px;
45+
font-weight: 400;
46+
}
47+
48+
.events {
49+
display: flex;
50+
flex-direction: column;
51+
gap: 4px;
52+
}
53+
54+
.event {
55+
font-size: 14px;
56+
font-weight: 400;
57+
}

components/TimeSpanBar/TimeSpanBar.tsx

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from "react";
22

3-
import "./TimeSpanBar.css";
3+
import classes from "./TimeSpanBar.module.css";
44

55
type TimeSpanBarProps = {
66
startDate: Date;
@@ -21,32 +21,23 @@ const TimeSpanBar = ({
2121
image,
2222
}: TimeSpanBarProps) => {
2323
return (
24-
<div className="time-span-bar">
25-
<div className="time-span-bar__header">{header}</div>
26-
<div className="time-span-bar__content">
27-
<div className="time-span-bar__start-date">
28-
<div className="time-span-bar__label">Дата рождения</div>
29-
<div className="time-span-bar__date">
30-
{startDate.toLocaleDateString()}
31-
</div>
24+
<div className={classes.component}>
25+
<div className={classes.header}>{header}</div>
26+
<div className={classes.content}>
27+
<div className={classes.start}>
28+
<div className={classes.label}>Дата рождения</div>
29+
<div className={classes.date}>{startDate.toLocaleDateString()}</div>
3230
</div>
33-
<img
34-
width={64}
35-
src={image}
36-
alt={header}
37-
className="time-span-bar__image"
38-
/>
39-
<div className="time-span-bar__events">
31+
<img width={64} src={image} alt={header} className={classes.image} />
32+
<div className={classes.events}>
4033
{events.map((event) => (
41-
<div className="time-span-bar__event">{event.name}</div>
34+
<div className={classes.event}>{event.name}</div>
4235
))}
4336
</div>
4437
{endDate && (
45-
<div className="time-span-bar__end-date">
46-
<div className="time-span-bar__label">Дата смерти</div>
47-
<div className="time-span-bar__date">
48-
{endDate.toLocaleDateString()}
49-
</div>
38+
<div className={classes.end}>
39+
<div className={classes.label}>Дата смерти</div>
40+
<div className={classes.date}>{endDate.toLocaleDateString()}</div>
5041
</div>
5142
)}
5243
</div>

tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@
1515
"jsx": "preserve",
1616
"incremental": true
1717
},
18-
"include": ["**/*.ts", "**/*.tsx"],
18+
"include": ["**/*.ts", "**/*.tsx", "types/**/*.d.ts"],
1919
"exclude": ["node_modules"]
2020
}

types/css.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
declare module "*.module.css" {
2+
const classes: { [key: string]: string };
3+
export default classes;
4+
}

0 commit comments

Comments
 (0)