Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2818b3c

Browse files
author
G r e y
authored
feat(site): configure global fonts (#503)
* feat(site): configure global fonts Summary: Installs fira code and Inter Impact: A more pleasant dashboard experience in v2 that matches our prefer font families from v1
1 parent 43d433c commit 2818b3c

File tree

7 files changed

+544
-23
lines changed

7 files changed

+544
-23
lines changed

site/.storybook/preview.js

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { light, dark } from "../src/theme"
44
import { addDecorator } from "node_modules/@storybook/react"
55
import { createMemoryHistory } from "history"
66
import { unstable_HistoryRouter as HistoryRouter } from "react-router-dom"
7+
import "../src/theme/global-fonts"
78

89
addDecorator(withThemes(ThemeProvider, [light, dark]))
910

site/package.json

+11-5
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,20 @@
2323
"typegen": "xstate typegen 'src/**/*.ts'"
2424
},
2525
"dependencies": {
26+
"@fontsource/fira-code": "4.5.5",
27+
"@fontsource/inter": "4.5.4",
2628
"@material-ui/core": "4.9.4",
2729
"@material-ui/icons": "4.5.1",
2830
"@material-ui/lab": "4.0.0-alpha.42",
29-
"@xstate/react": "^2.0.1",
31+
"@xstate/react": "2.0.1",
3032
"axios": "0.26.1",
3133
"formik": "2.2.9",
3234
"history": "5.3.0",
3335
"react": "17.0.2",
3436
"react-dom": "17.0.2",
3537
"react-router-dom": "6.2.2",
3638
"swr": "1.2.2",
37-
"xstate": "^4.30.6",
39+
"xstate": "4.30.6",
3840
"yup": "0.32.11"
3941
},
4042
"devDependencies": {
@@ -47,15 +49,17 @@
4749
"@storybook/react": "6.4.19",
4850
"@testing-library/react": "12.1.4",
4951
"@types/express": "4.17.13",
50-
"@types/jest": "^27.4.1",
52+
"@types/jest": "27.4.1",
5153
"@types/node": "14.18.12",
5254
"@types/react": "17.0.40",
5355
"@types/react-dom": "17.0.13",
5456
"@types/superagent": "4.1.15",
5557
"@typescript-eslint/eslint-plugin": "5.15.0",
5658
"@typescript-eslint/parser": "5.15.0",
57-
"@xstate/cli": "^0.1.4",
59+
"@xstate/cli": "0.1.4",
5860
"copy-webpack-plugin": "10.2.4",
61+
"css-loader": "6.7.1",
62+
"css-minimizer-webpack-plugin": "3.4.1",
5963
"eslint": "8.11.0",
6064
"eslint-config-prettier": "8.5.0",
6165
"eslint-import-resolver-alias": "1.1.2",
@@ -71,10 +75,12 @@
7175
"jest": "27.5.1",
7276
"jest-junit": "13.0.0",
7377
"jest-runner-eslint": "1.0.0",
74-
"msw": "^0.39.2",
78+
"mini-css-extract-plugin": "2.6.0",
79+
"msw": "0.39.2",
7580
"prettier": "2.6.0",
7681
"react-hot-loader": "4.13.0",
7782
"sql-formatter": "4.0.2",
83+
"style-loader": "3.3.1",
7884
"ts-jest": "27.1.3",
7985
"ts-loader": "9.2.8",
8086
"ts-node": "10.7.0",

site/src/app.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { WorkspacePage } from "./pages/workspaces/[workspace]"
1616
import { HealthzPage } from "./pages/healthz"
1717
import { AuthAndNav, RequireAuth } from "./components/Page"
1818
import { XServiceProvider } from "./xServices/StateContext"
19+
import "./theme/global-fonts"
1920

2021
export const App: React.FC = () => {
2122
return (

site/src/theme/global-fonts.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Monospace fonts used for code, button styles, and banners
2+
import "@fontsource/fira-code/400.css"
3+
import "@fontsource/fira-code/600.css"
4+
// Main body copy font
5+
import "@fontsource/inter/300.css"
6+
import "@fontsource/inter/400.css"
7+
import "@fontsource/inter/600.css"

site/webpack.dev.ts

+16
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import { commonWebpackConfig } from "./webpack.common"
1010

1111
const commonPlugins = commonWebpackConfig.plugins || []
1212

13+
const commonRules = commonWebpackConfig.module?.rules || []
14+
1315
const config: Configuration = {
1416
...commonWebpackConfig,
1517

@@ -68,6 +70,20 @@ const config: Configuration = {
6870
// https://webpack.js.org/configuration/mode/#mode-development
6971
mode: "development",
7072

73+
module: {
74+
rules: [
75+
...commonRules,
76+
77+
{
78+
test: /\.css$/i,
79+
// Use simple style-loader for CSS modules. This places styles directly
80+
// in <style> tags which is great for development, but poor for loading
81+
// in production
82+
use: ["style-loader", "css-loader"],
83+
},
84+
],
85+
},
86+
7187
output: {
7288
...commonWebpackConfig.output,
7389

site/webpack.prod.ts

+31-2
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,46 @@
22
* @fileoverview This file contains a production configuration for webpack
33
* meant for producing optimized builds.
44
*/
5-
65
import CopyWebpackPlugin from "copy-webpack-plugin"
6+
import CSSMinimizerPlugin from "css-minimizer-webpack-plugin"
7+
import MiniCSSExtractPlugin from "mini-css-extract-plugin"
78
import { Configuration } from "webpack"
89
import { commonWebpackConfig } from "./webpack.common"
910

1011
const commonPlugins = commonWebpackConfig.plugins || []
1112

13+
const commonRules = commonWebpackConfig.module?.rules || []
14+
1215
export const config: Configuration = {
1316
...commonWebpackConfig,
17+
1418
mode: "production",
1519

1620
// Don't produce sourcemaps in production, to minmize bundle size
1721
devtool: false,
1822

23+
module: {
24+
rules: [
25+
...commonRules,
26+
// CSS files -> optimized
27+
{
28+
test: /\.css$/i,
29+
use: [MiniCSSExtractPlugin.loader, "css-loader"],
30+
},
31+
],
32+
},
33+
34+
optimization: {
35+
minimizer: [
36+
`...`, // This extends the 'default'/'existing' minimizers
37+
new CSSMinimizerPlugin(),
38+
],
39+
},
40+
1941
output: {
2042
...commonWebpackConfig.output,
2143

22-
// regenerate the entire out/ directory when producing production builds
44+
// regenerate the entire dist/ directory when producing production builds
2345
clean: true,
2446
},
2547

@@ -30,6 +52,13 @@ export const config: Configuration = {
3052
new CopyWebpackPlugin({
3153
patterns: [{ from: "static", to: "." }],
3254
}),
55+
56+
// MiniCSSExtractPlugin optimizes CSS
57+
new MiniCSSExtractPlugin({
58+
// REMARK: It's important to use [contenthash] here to invalidate caches.
59+
filename: "[name].[contenthash].css",
60+
chunkFilename: "[id].css",
61+
}),
3362
],
3463
}
3564

0 commit comments

Comments
 (0)