рд╢реБрдн рджрд┐рди, рд╣реЗрдмреНрд░!рддреЛ рд╕рд╛рдордЧреНрд░реА-ui рд╣реИ reactJS рдХреЗ рдврд╛рдВрдЪреЗ рддреЗрдЬреА рд╕реЗ рдФрд░ рдХрд╛рдлреА рд╕рд░рд▓ рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдЧреВрдЧрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВредрд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдПрдХ рдХрд╛рдлреА рдмрдбрд╝реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдХрд╛ рдкреНрд░рдореБрдЦ рд╣рд┐рд╕реНрд╕рд╛ @ рдореИрдЯреЗрд░рд┐рдпрд▓-рдпреВрдЖрдИ / рдХреЛрд░ рд╣реИ (рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд▓рдХреНрд╖реНрдп рдПрдХ рдмрдбрд╝рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)редрдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдХрд╛ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдореИрдиреБрдЕрд▓ рд╣реИредрд╕рд╛рдордЧреНрд░реА рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдЯрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАредрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдзрдпрд╛рди рдореЗ рд░рдЦрддреЗ рд╣реБрдП
- JSS рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛;
- рдХрдХреНрд╖рд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХреЛрдВ рдХрд╛ рд╕реНрдерд┐рд░реАрдХрд░рдг;
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХреЛрдВ рдХреЗ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╛ рд╕реНрдерд┐рд░реАрдХрд░рдг;
- рд╕реНрдЯрд╛рдЗрд▓рдХрдореНрдкреЛрдиреЗрдВрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ;
- рдереАрдо рдкреНрд░рджрд╛рддрд╛;
- рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛;
рдЬрд╛рдУ рдмрд┐рд▓реНрд▓реА!
1. JSS рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛
JSS (рдкреБрд╕реНрддрдХрд╛рд▓рдп) - рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рдореЗрдВ 6kb рдХрд╛ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рд╕реАрдПрд╕рдПрд╕ред JSS рдХреЛ рдЗрдирд▓рд╛рдЗрди-рд╢реИрд▓реА рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрдирдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрджреНрд╡рд┐рддреАрдп рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдкреИрджрд╛ рдХрд░рдХреЗ, рдЯрдХрд░рд╛рд╡ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдиреЛрдбрдЬ рдореЗрдВ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди [.js] рд╣реЛрддрд╛ рд╣реИред рдЫрджреНрдо рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдпрд╛ рдЫрджреНрдо рддрддреНрд╡реЛрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП jss рдореЗрдВ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИред рдКрдВрдЯ рдХреА рд╢реИрд▓реА рдореЗрдВ jss рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рддред Jss рдХреА рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИредрд╣рд╛рдВ, рдФрд░ рдЗрд╕ рдЪреАрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдореЗрдВ рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредJss рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реИрд▓рд┐рдпреЛрдВ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд▓рдЯ рдЧрдИ рд╣реИ, рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓реМрдЯрд╛рдПрдЧреА, рдЬрд┐рд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ рд╣рдо jss рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдПрдХ рдЬрдирд░реЗрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:/ src / Components / JssComponent
JssComponent.jsimport React from "react";
import useStyles from "./style";
export default function JssComponent() {
// jss
const classes = useStyles();
return (
<div className={classes.root}>
<h1>That's JssComponent</h1>
<h2 className="basic_h2">I use JSS</h2>
<div className={classes.content_div}>
Any Text
</div>
</div>
);
}
style.js
import { createUseStyles } from "react-jss";
const rootStyle = {
width: 400,
border: "1px solid grey",
margin: "0px auto",
padding: 15
};
const fontStyle = {
fontWeight: "bold",
fontStyle: "italic"
};
const useStyles = createUseStyles({
root: {
...rootStyle,
"& h1": {
textAlign: "center",
color: "purple"
},
"& .basic_h2": {
textAlign: "right",
color: "green",
cursor: "pointer",
"&:hover": {
color: "purple"
}
}
},
content_div: {
textAlign: "justify",
...fontStyle
}
});
export default useStyles;
2. рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдХреНрд▓рд╛рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХ
рд░рд┐рдПрдХреНрдЯ рдиреЗ рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдХреНрд╖рд╛ рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:/ src / Components / ClassComponent
ClassComponent.jsimport React from "react";
import { withStyles } from "@material-ui/core/styles";
import Button from "@material-ui/core/Button";
import styles from "./style";
class ClassComponent extends React.Component {
render() {
const { classes } = this.props;
return <Button className={classes.button}>ClassComponent</Button>;
}
}
//
export default withStyles(styles)(ClassComponent);
style.js
const styles = {
button: {
backgroundColor: "grey",
border: 0,
borderRadius: 3,
boxShadow: "0 3px 5px 2px",
color: "black",
height: 48,
padding: "0 30px",
margin: 10
}
};
export default styles;
3. рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХреЛрдВ рдХреЗ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╛ рд╕реНрдерд┐рд░реАрдХрд░рдг
16.8 рд░рд┐рдПрдХреНрдЯ рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдПрдХ рдирдпрд╛ рдЕрд╡рд╕рд░ рд╣реБрдХ рдкрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ:/ src / Components / HookComponent
HookComponent.jsimport React from "react";
import Button from "@material-ui/core/Button";
import useStyles from "./style";
const HookComponent = props => {
//
const classes = useStyles();
return <Button className={classes.button}>HookComponent</Button>;
};
export default HookComponent;
style.js
import { makeStyles } from "@material-ui/core/styles";
const useStyles = makeStyles({
button: {
backgroundColor: "grey",
border: 0,
borderRadius: 3,
boxShadow: "0 3px 5px 2px",
color: "black",
height: 48,
padding: "0 30px",
margin: 10
}
});
export default useStyles;
4. рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧрдХрдореНрдкреЛрдиреЗрдВрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдЯрд╛рдЗрд▓
рд╕реНрдЯрд╛рдЗрд▓рдбреАрдХрдВрдкреЛрдиреЗрдВрдЯ - рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рдмрд┐рдирд╛ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдШрдЯрдХреЛрдВ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдЬреЛ рдХрдХреНрд╖рд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИред/ src / Components / StyledComponent
StyledComponent.jsimport React from "react";
//
import { styled } from "@material-ui/core/styles";
//
import Button from "@material-ui/core/Button";
import styles from './style';
//
const ButtonComponent = styled(Button)({ ...styles });
export default function StyledComponent() {
return <ButtonComponent>StyledComponent</ButtonComponent>;
}
style.js
const styles = {
backgroundColor: "grey",
border: 0,
borderRadius: 3,
boxShadow: "0 3px 5px 2px",
color: "black",
height: 48,
padding: "0 30px",
margin: 10
};
export default styles;
5. рдереАрдо рдкреНрд░рджрд╛рддрд╛ред
рдпрд╣ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рд╛рд╡рдзрд╛рди рд╣реИ, рдпрд╛ рдЗрд╕рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдШрдЯрдХреЛрдВ рдХреЗ рдШреЛрдВрд╕рд▓реЗ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рдорд╛рди рд╣реИред рдореИрдЯреЗрд░рд┐рдпрд▓-рдпреВрдЖрдИ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдереАрдо рд░реЗрдбреА-рдореЗрдб рд╡рд╕реНрддреБ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рдЗрд╕реЗ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╡рд╛рддреЗ рд╣реИрдВ, рдЗрд╕ рддрд░рд╣ рдЖрдк рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдереАрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдлрдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗ, рдЬреИрд╕реЗ рд░рд╛рдЗрдЯрд┐рдВрдЧ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рдХреЗ рддрд░реАрдХреЗред :/ src / рдШрдЯрдХреЛрдВ
App.jsimport React from 'react';
import { ThemeProvider } from "@material-ui/core/styles";
import ThemedComponent from './ThemedComponent/ThemedComponent';
import theme from './theme';
function App() {
return (
<ThemeProvider theme={theme}>
< ThemedComponent />
</ThemeProvider>
);
}
export default App;
theme.js
const theme = {
button: {
backgroundColor: "grey",
border: 0,
borderRadius: 3,
boxShadow: "0 3px 5px 2px",
color: "black",
height: 48,
padding: "0 30px"
}
};
export default theme;
/ src / Components / ThemedComponent
ThemedComponent.jsimport React from "react";
import useStyles from "./style";
const ThemedComponent = props => {
//
const classes = useStyles();
return <button className={classes.button}>ThemedComponent</button>;
};
export default ThemedComponent;
style.js
import { makeStyles } from "@material-ui/core/styles";
const useStyles = makeStyles(theme => {
return {
button: { ...theme.button, margin: 10 }
};
});
export default useStyles;
6. рдЕрдзрд┐рднрд╛рд╡реА рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХ
рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреА рдЕрдкрдиреА рд╢реИрд▓реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдЕрд░реНрдерд╛рдд, рдХрд┐рд╕реА рднреА рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХ рдХрд╛ рдЖрдпрд╛рдд рдЙрдкрд▓рдмреНрдз рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рд╡рд┐рд╢реЗрд╖ рд╕рд╛рдордЧреНрд░реА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдереАрдо рдмрдирд╛рдирд╛ - createMuiTheme рди рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╖рдп рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╡рд┐рд╢реЗрд╖ рдУрд╡рд░рд░рд╛рдЗрдб рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХреЛрдВ рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд░реНрдЧреЛрдВ рдХреЛ рднреА рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:/ src /
Components App.jsimport React from 'react';
import { ThemeProvider } from "@material-ui/core/styles";
import CreatedThemeComponent from './CreatedThemeComponent/CreatedThemeComponent';
import createdTheme from './createdTheme';
function App() {
return (
<ThemeProvider theme={createdTheme}>
<CreatedThemeComponent />
</ThemeProvider>
);
}
export default App;
/ src / рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛
рдирд┐рд░реНрдорд┐рдд theme.js
import { createMuiTheme } from "@material-ui/core/styles";
const createdTheme = createMuiTheme({
overrides: {
MuiButton: {
root: {
color: "red",
border: "1px solid grey",
margin: 10
}
}
}
});
export default createdTheme;
/ src / Components / CreatedThemeComponent
CreatedThemeComponent.jsimport React from "react";
import { Button } from "@material-ui/core";
const CreatedThemeComponent = props => {
return <Button>CreatedThemeComponent</Button>;
};
export default CreatedThemeComponent;
рд╕рд╛рд░рд╛рдВрд╢:- рдЬреЗрдПрд╕рдПрд╕ рдФрд░ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ;
- рдЬреЗрдПрд╕рдПрд╕ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдЖрдкреА рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХ;
рд╕реНрд░реЛрдд рдХреЛрдб: https://gitlab.com/ImaGadzhiev/material-style-compenders