fix(theme): load language-specific font and fix font not updating on language change
BIN
src/assets/fonts/eot/IRANYekanWebBlack.eot
Normal file
BIN
src/assets/fonts/eot/IRANYekanWebBold.eot
Normal file
BIN
src/assets/fonts/eot/IRANYekanWebExtraBlack.eot
Normal file
BIN
src/assets/fonts/eot/IRANYekanWebExtraBold.eot
Normal file
BIN
src/assets/fonts/eot/IRANYekanWebLight.eot
Normal file
BIN
src/assets/fonts/eot/IRANYekanWebMedium.eot
Normal file
BIN
src/assets/fonts/eot/IRANYekanWebRegular.eot
Normal file
BIN
src/assets/fonts/eot/IRANYekanWebThin.eot
Normal file
1548
src/assets/fonts/svg/IRANYekanWebRegular.svg
Normal file
|
After Width: | Height: | Size: 216 KiB |
1474
src/assets/fonts/svg/iranyekanwebblack.svg
Normal file
|
After Width: | Height: | Size: 198 KiB |
1569
src/assets/fonts/svg/iranyekanwebbold.svg
Normal file
|
After Width: | Height: | Size: 219 KiB |
1486
src/assets/fonts/svg/iranyekanwebextrablack.svg
Normal file
|
After Width: | Height: | Size: 199 KiB |
1472
src/assets/fonts/svg/iranyekanwebextrabold.svg
Normal file
|
After Width: | Height: | Size: 196 KiB |
1619
src/assets/fonts/svg/iranyekanweblight.svg
Normal file
|
After Width: | Height: | Size: 230 KiB |
1573
src/assets/fonts/svg/iranyekanwebmedium.svg
Normal file
|
After Width: | Height: | Size: 220 KiB |
1639
src/assets/fonts/svg/iranyekanwebthin.svg
Normal file
|
After Width: | Height: | Size: 238 KiB |
BIN
src/assets/fonts/ttf/IRANYekanWebBlack.ttf
Normal file
BIN
src/assets/fonts/ttf/IRANYekanWebBold.ttf
Normal file
BIN
src/assets/fonts/ttf/IRANYekanWebExtraBlack.ttf
Normal file
BIN
src/assets/fonts/ttf/IRANYekanWebExtraBold.ttf
Normal file
BIN
src/assets/fonts/ttf/IRANYekanWebLight.ttf
Normal file
BIN
src/assets/fonts/ttf/IRANYekanWebMedium.ttf
Normal file
BIN
src/assets/fonts/ttf/IRANYekanWebRegular.ttf
Normal file
BIN
src/assets/fonts/ttf/IRANYekanWebThin.ttf
Normal file
BIN
src/assets/fonts/woff/IRANYekanWebBlack.woff
Normal file
BIN
src/assets/fonts/woff/IRANYekanWebBold.woff
Normal file
BIN
src/assets/fonts/woff/IRANYekanWebExtraBlack.woff
Normal file
BIN
src/assets/fonts/woff/IRANYekanWebExtraBold.woff
Normal file
BIN
src/assets/fonts/woff/IRANYekanWebLight.woff
Normal file
BIN
src/assets/fonts/woff/IRANYekanWebMedium.woff
Normal file
BIN
src/assets/fonts/woff/IRANYekanWebRegular.woff
Normal file
BIN
src/assets/fonts/woff/IRANYekanWebThin.woff
Normal file
124
src/index.css
@@ -111,3 +111,127 @@
|
|||||||
url('./assets/fonts/ttf/iranyekanwebextrablackfanum.ttf')
|
url('./assets/fonts/ttf/iranyekanwebextrablackfanum.ttf')
|
||||||
format('truetype');
|
format('truetype');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekanEnNum;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: bold;
|
||||||
|
src: url('./assets/fonts/eot/iranyekanwebbold.eot');
|
||||||
|
src:
|
||||||
|
url('./assets/fonts/eot/iranyekanwebbold.eot?#iefix')
|
||||||
|
format('embedded-opentype'),
|
||||||
|
/* IE6-8 */ url('./assets/fonts/woff/iranyekanwebbold.woff') format('woff'),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url('./assets/fonts/woff2/iranyekanwebbold.woff2') format('woff2'),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/
|
||||||
|
url('./assets/fonts/ttf/iranyekanwebbold.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekanEnNum;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 100;
|
||||||
|
src: url('./assets/fonts/eot/iranyekanwebthin.eot');
|
||||||
|
src:
|
||||||
|
url('./assets/fonts/eot/iranyekanwebthin.eot?#iefix')
|
||||||
|
format('embedded-opentype'),
|
||||||
|
/* IE6-8 */ url('./assets/fonts/woff/iranyekanwebthin.woff') format('woff'),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url('./assets/fonts/woff2/iranyekanwebthin.woff2') format('woff2'),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/
|
||||||
|
url('./assets/fonts/ttf/iranyekanwebthin.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekanEnNum;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 300;
|
||||||
|
src: url('./assets/fonts/eot/iranyekanweblight.eot');
|
||||||
|
src:
|
||||||
|
url('./assets/fonts/eot/iranyekanweblight.eot?#iefix')
|
||||||
|
format('embedded-opentype'),
|
||||||
|
/* IE6-8 */ url('./assets/fonts/woff/iranyekanweblight.woff') format('woff'),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url('./assets/fonts/woff2/iranyekanweblight.woff2') format('woff2'),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/
|
||||||
|
url('./assets/fonts/ttf/iranyekanweblight.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekanEnNum;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
src: url('./assets/fonts/eot/iranyekanwebregular.eot');
|
||||||
|
src:
|
||||||
|
url('./assets/fonts/eot/iranyekanwebregular.eot?#iefix')
|
||||||
|
format('embedded-opentype'),
|
||||||
|
/* IE6-8 */ url('./assets/fonts/woff/iranyekanwebregular.woff')
|
||||||
|
format('woff'),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url('./assets/fonts/woff2/iranyekanwebregular.woff2') format('woff2'),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/
|
||||||
|
url('./assets/fonts/ttf/iranyekanwebregular.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekanEnNum;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 500;
|
||||||
|
src: url('./assets/fonts/eot/iranyekanwebmedium.eot');
|
||||||
|
src:
|
||||||
|
url('./assets/fonts/eot/iranyekanwebmedium.eot?#iefix')
|
||||||
|
format('embedded-opentype'),
|
||||||
|
/* IE6-8 */ url('./assets/fonts/woff/iranyekanwebmedium.woff')
|
||||||
|
format('woff'),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url('./assets/fonts/woff2/iranyekanwebmedium.woff2') format('woff2'),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/
|
||||||
|
url('./assets/fonts/ttf/iranyekanwebmedium.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekanEnNum;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 800;
|
||||||
|
src: url('./assets/fonts/eot/iranyekanwebextrabold.eot');
|
||||||
|
src:
|
||||||
|
url('./assets/fonts/eot/iranyekanwebextrabold.eot?#iefix')
|
||||||
|
format('embedded-opentype'),
|
||||||
|
/* IE6-8 */ url('./assets/fonts/woff/iranyekanwebextrabold.woff')
|
||||||
|
format('woff'),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url('./assets/fonts/woff2/iranyekanwebextrabold.woff2') format('woff2'),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/
|
||||||
|
url('./assets/fonts/ttf/iranyekanwebextrabold.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekanEnNum;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 850;
|
||||||
|
src: url('./assets/fonts/eot/iranyekanwebblack.eot');
|
||||||
|
src:
|
||||||
|
url('./assets/fonts/eot/iranyekanwebblack.eot?#iefix')
|
||||||
|
format('embedded-opentype'),
|
||||||
|
/* IE6-8 */ url('./assets/fonts/woff/iranyekanwebblack.woff') format('woff'),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url('./assets/fonts/woff2/iranyekanwebblack.woff2') format('woff2'),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/
|
||||||
|
url('./assets/fonts/ttf/iranyekanwebblack.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: iranyekanEnNum;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 900;
|
||||||
|
src: url('./assets/fonts/eot/iranyekanwebextrablack.eot');
|
||||||
|
src:
|
||||||
|
url('./assets/fonts/eot/iranyekanwebextrablack.eot?#iefix')
|
||||||
|
format('embedded-opentype'),
|
||||||
|
/* IE6-8 */ url('./assets/fonts/woff/iranyekanwebextrablack.woff')
|
||||||
|
format('woff'),
|
||||||
|
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||||
|
url('./assets/fonts/woff2/iranyekanwebextrablack.woff2') format('woff2'),
|
||||||
|
/* FF39+,Chrome36+, Opera24+*/
|
||||||
|
url('./assets/fonts/ttf/iranyekanwebextrablack.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
|||||||
@@ -10,7 +10,10 @@ export const CustomThemeProvider: React.FC<{ children: React.ReactNode }> = ({
|
|||||||
const { i18n } = useTranslation();
|
const { i18n } = useTranslation();
|
||||||
|
|
||||||
const theme = useMemo(() => {
|
const theme = useMemo(() => {
|
||||||
|
console.log('Theme recalculated, lang:', i18n.language);
|
||||||
const direction = i18n.dir(i18n.language);
|
const direction = i18n.dir(i18n.language);
|
||||||
|
const isEnglish = i18n.language?.startsWith('en');
|
||||||
|
const fontFamily = isEnglish ? 'iranyekanEnNum' : 'iranyekan';
|
||||||
|
|
||||||
return createTheme({
|
return createTheme({
|
||||||
direction: direction,
|
direction: direction,
|
||||||
@@ -29,7 +32,10 @@ export const CustomThemeProvider: React.FC<{ children: React.ReactNode }> = ({
|
|||||||
shape: {
|
shape: {
|
||||||
borderRadius: 8,
|
borderRadius: 8,
|
||||||
},
|
},
|
||||||
typography: typography,
|
typography: {
|
||||||
|
fontFamily: [fontFamily, 'sans-serif'].join(','),
|
||||||
|
...typography,
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
MuiButton: {
|
MuiButton: {
|
||||||
defaultProps: {
|
defaultProps: {
|
||||||
@@ -59,7 +65,7 @@ export const CustomThemeProvider: React.FC<{ children: React.ReactNode }> = ({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}, [i18n]);
|
}, [i18n, i18n.language]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ThemeProvider theme={theme} defaultMode="light">
|
<ThemeProvider theme={theme} defaultMode="light">
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
// No need for a function, just a static object
|
// No need for a function, just a static object
|
||||||
export const typography = {
|
export const typography = {
|
||||||
fontFamily: ['iranyekan', 'sans-serif'].join(','),
|
|
||||||
fontWeightRegular: 400,
|
fontWeightRegular: 400,
|
||||||
fontWeightMedium: 500,
|
fontWeightMedium: 500,
|
||||||
fontWeightBold: 700,
|
fontWeightBold: 700,
|
||||||
|
|||||||