@grantbii/design-system 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/continuous-delivery.yaml +31 -0
- package/.github/workflows/continuous-integration.yaml +34 -0
- package/.husky/pre-commit +1 -0
- package/README.md +49 -0
- package/app/favicon.ico +0 -0
- package/app/layout.tsx +21 -0
- package/app/page.tsx +3 -0
- package/core/global/GlobalStyle.tsx +68 -0
- package/core/index.ts +3 -0
- package/core/integrations/StyledComponentsRegistry.tsx +27 -0
- package/core/tokens/colors.ts +46 -0
- package/eslint.config.mjs +24 -0
- package/next.config.ts +10 -0
- package/package.json +38 -0
- package/public/fonts/satoshi/README.md +51 -0
- package/public/fonts/satoshi/css/satoshi.css +179 -0
- package/public/fonts/satoshi/fonts/Satoshi-Black.eot +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Black.ttf +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Black.woff +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Black.woff2 +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-BlackItalic.eot +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-BlackItalic.ttf +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-BlackItalic.woff +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-BlackItalic.woff2 +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Bold.eot +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Bold.ttf +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Bold.woff +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Bold.woff2 +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-BoldItalic.eot +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-BoldItalic.ttf +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-BoldItalic.woff +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-BoldItalic.woff2 +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Italic.eot +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Italic.ttf +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Italic.woff +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Italic.woff2 +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Light.eot +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Light.ttf +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Light.woff +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Light.woff2 +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-LightItalic.eot +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-LightItalic.ttf +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-LightItalic.woff +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-LightItalic.woff2 +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Medium.eot +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Medium.ttf +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Medium.woff +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Medium.woff2 +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-MediumItalic.eot +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-MediumItalic.ttf +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-MediumItalic.woff +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-MediumItalic.woff2 +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Regular.eot +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Regular.ttf +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Regular.woff +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Regular.woff2 +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Variable.eot +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Variable.ttf +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Variable.woff +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-Variable.woff2 +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-VariableItalic.eot +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-VariableItalic.ttf +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-VariableItalic.woff +0 -0
- package/public/fonts/satoshi/fonts/Satoshi-VariableItalic.woff2 +0 -0
- package/public/icons/grant_match.webp +0 -0
- package/tsconfig.json +27 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: Continuous Delivery for Design System
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["prod"]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
publish:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- name: Git Checkout
|
|
16
|
+
uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Set up Node 22
|
|
19
|
+
uses: actions/setup-node@v4
|
|
20
|
+
with:
|
|
21
|
+
node-version: 22
|
|
22
|
+
registry-url: "https://registry.npmjs.org"
|
|
23
|
+
cache: "npm"
|
|
24
|
+
|
|
25
|
+
- name: Install dependencies
|
|
26
|
+
run: npm clean-install
|
|
27
|
+
|
|
28
|
+
- name: Publish package to NPM
|
|
29
|
+
run: npm publish --access public
|
|
30
|
+
env:
|
|
31
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Continuous Integration for Design System
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches-ignore: ["prod"]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
checks:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- name: Git Checkout
|
|
16
|
+
uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Set up Node 22
|
|
19
|
+
uses: actions/setup-node@v4
|
|
20
|
+
with:
|
|
21
|
+
node-version: 22
|
|
22
|
+
cache: "npm"
|
|
23
|
+
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: npm clean-install
|
|
26
|
+
|
|
27
|
+
- name: Lint with eslint
|
|
28
|
+
run: npx eslint app/
|
|
29
|
+
|
|
30
|
+
- name: Format with prettier
|
|
31
|
+
run: npx prettier --check app/
|
|
32
|
+
|
|
33
|
+
- name: Ensure build passes
|
|
34
|
+
run: npm run build
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
npx lint-staged
|
package/README.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Grantbii's Design System
|
|
2
|
+
|
|
3
|
+
Based on Grantbii's Global Design Library in Figma.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
Node 22
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
node -v # expected output: v22.14.xx
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Set-up
|
|
14
|
+
|
|
15
|
+
Install dependencies
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm i
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Run
|
|
22
|
+
|
|
23
|
+
First, run the development server:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm run dev
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
|
30
|
+
|
|
31
|
+
The pages auto-updates as you edit the files.
|
|
32
|
+
|
|
33
|
+
## Develop
|
|
34
|
+
|
|
35
|
+
Use the `webp` format for images as it is lossless but more efficient than `png`.
|
|
36
|
+
|
|
37
|
+
Get started by installing [`cwebp`](https://developers.google.com/speed/webp/docs/cwebp).
|
|
38
|
+
|
|
39
|
+
Convert an image from `png` to `webp` like so:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
cwebp -exact -lossless -progress your_image.png -o your_image.webp
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Deploy
|
|
46
|
+
|
|
47
|
+
Deployment is automatic with [AWS Amplify](https://aws.amazon.com/amplify).
|
|
48
|
+
|
|
49
|
+
Once a commit has been made on the `prod` branch, a build would be triggered.
|
package/app/favicon.ico
ADDED
|
Binary file
|
package/app/layout.tsx
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { GlobalStyle, StyledComponentsRegistry } from "@/core";
|
|
2
|
+
import type { Metadata } from "next";
|
|
3
|
+
import { PropsWithChildren } from "react";
|
|
4
|
+
|
|
5
|
+
export const metadata: Metadata = {
|
|
6
|
+
title: "Grantbii's Design System",
|
|
7
|
+
description: "Grantbii's Design System",
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const RootLayout = ({ children }: PropsWithChildren) => (
|
|
11
|
+
<html lang="en">
|
|
12
|
+
<body>
|
|
13
|
+
<StyledComponentsRegistry>
|
|
14
|
+
<GlobalStyle />
|
|
15
|
+
{children}
|
|
16
|
+
</StyledComponentsRegistry>
|
|
17
|
+
</body>
|
|
18
|
+
</html>
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
export default RootLayout;
|
package/app/page.tsx
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { BLACK_WHITE_COLOR, TYPOGRAPHY_COLOR } from "@/core/tokens/colors";
|
|
4
|
+
import "@/public/fonts/satoshi/css/satoshi.css";
|
|
5
|
+
import { createGlobalStyle } from "styled-components";
|
|
6
|
+
|
|
7
|
+
const GlobalStyle = createGlobalStyle`
|
|
8
|
+
html,
|
|
9
|
+
body {
|
|
10
|
+
max-width: 100vw;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
body {
|
|
14
|
+
color: ${TYPOGRAPHY_COLOR.blackHigh};
|
|
15
|
+
background: ${BLACK_WHITE_COLOR.white};
|
|
16
|
+
font-family: Satoshi;
|
|
17
|
+
-webkit-font-smoothing: antialiased;
|
|
18
|
+
-moz-osx-font-smoothing: grayscale;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
button,
|
|
22
|
+
fieldset,
|
|
23
|
+
textarea {
|
|
24
|
+
all: unset;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
* {
|
|
28
|
+
box-sizing: border-box;
|
|
29
|
+
padding: 0;
|
|
30
|
+
margin: 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
a {
|
|
34
|
+
color: inherit;
|
|
35
|
+
text-decoration: none;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
button:hover {
|
|
39
|
+
cursor: pointer;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
button:disabled {
|
|
43
|
+
cursor: not-allowed;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
li {
|
|
47
|
+
list-style-position: inside;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
li * {
|
|
51
|
+
vertical-align: middle;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* number textfield in Chrome, Safari, Edge, Opera */
|
|
55
|
+
input::-webkit-outer-spin-button,
|
|
56
|
+
input::-webkit-inner-spin-button {
|
|
57
|
+
-webkit-appearance: none;
|
|
58
|
+
margin: 0;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* number textfield in Firefox */
|
|
62
|
+
input[type="number"] {
|
|
63
|
+
-moz-appearance: textfield;
|
|
64
|
+
appearance: textfield;
|
|
65
|
+
}
|
|
66
|
+
`;
|
|
67
|
+
|
|
68
|
+
export default GlobalStyle;
|
package/core/index.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useServerInsertedHTML } from "next/navigation";
|
|
4
|
+
import { PropsWithChildren, useState } from "react";
|
|
5
|
+
import { ServerStyleSheet, StyleSheetManager } from "styled-components";
|
|
6
|
+
|
|
7
|
+
const StyledComponentsRegistry = ({ children }: PropsWithChildren) => {
|
|
8
|
+
// Only create stylesheet once with lazy initial state
|
|
9
|
+
// x-ref: https://reactjs.org/docs/hooks-reference.html#lazy-initial-state
|
|
10
|
+
const [styledComponentsStyleSheet] = useState(() => new ServerStyleSheet());
|
|
11
|
+
|
|
12
|
+
useServerInsertedHTML(() => {
|
|
13
|
+
const styles = styledComponentsStyleSheet.getStyleElement();
|
|
14
|
+
styledComponentsStyleSheet.instance.clearTag();
|
|
15
|
+
return <>{styles}</>;
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
return typeof window !== "undefined" ? (
|
|
19
|
+
<>{children}</>
|
|
20
|
+
) : (
|
|
21
|
+
<StyleSheetManager sheet={styledComponentsStyleSheet.instance}>
|
|
22
|
+
{children}
|
|
23
|
+
</StyleSheetManager>
|
|
24
|
+
);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default StyledComponentsRegistry;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export const MAIN_COLOR = {
|
|
2
|
+
primary: "#16538a",
|
|
3
|
+
secondary: "#f3924d",
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
export const BLACK_WHITE_COLOR = {
|
|
7
|
+
black: "#232022",
|
|
8
|
+
white: "#ffffff",
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export const NEUTRAL_COLOR = {
|
|
12
|
+
grey1: "#999999",
|
|
13
|
+
grey2: "#cccccc",
|
|
14
|
+
grey3: "#eeeeee",
|
|
15
|
+
grey4: "#fafafa",
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const ACCENT_COLOR = {
|
|
19
|
+
// usually includes dangerous, wrong or rejected information
|
|
20
|
+
red1: "#c02318",
|
|
21
|
+
red2: "#f88e86",
|
|
22
|
+
red3: "#fcc7c3",
|
|
23
|
+
// usually indicates warning, progressing, etc
|
|
24
|
+
yellow1: "#edab03",
|
|
25
|
+
yellow2: "#f4cc68",
|
|
26
|
+
yellow3: "#fae6b3",
|
|
27
|
+
// usually indicates success, correct, passed, etc
|
|
28
|
+
green1: "#08a45e",
|
|
29
|
+
green2: "#6bc89e",
|
|
30
|
+
green3: "#b5e4cf",
|
|
31
|
+
// usually indicates info, no emotion
|
|
32
|
+
blue1: "#1878e4",
|
|
33
|
+
blue2: "#74aeef",
|
|
34
|
+
blue3: "#bad6f7",
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export const OVERLAY_COLOR = "#13131366";
|
|
38
|
+
|
|
39
|
+
export const TYPOGRAPHY_COLOR = {
|
|
40
|
+
blackHigh: "#000000e5",
|
|
41
|
+
blackMedium: "#00000099",
|
|
42
|
+
blackLow: "#0000004d",
|
|
43
|
+
whiteHigh: "#ffffff",
|
|
44
|
+
whiteMedium: "#ffffff99",
|
|
45
|
+
whiteLow: "#0000001a",
|
|
46
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { FlatCompat } from "@eslint/eslintrc";
|
|
2
|
+
import { dirname } from "path";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = dirname(__filename);
|
|
7
|
+
|
|
8
|
+
const compat = new FlatCompat({
|
|
9
|
+
baseDirectory: __dirname,
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
const eslintConfig = [
|
|
13
|
+
...compat.extends("next/core-web-vitals", "next/typescript"),
|
|
14
|
+
{
|
|
15
|
+
rules: {
|
|
16
|
+
"@typescript-eslint/no-unused-vars": [
|
|
17
|
+
"error",
|
|
18
|
+
{ argsIgnorePattern: "^_" },
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
export default eslintConfig;
|
package/next.config.ts
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@grantbii/design-system",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"scripts": {
|
|
5
|
+
"dev": "next dev --turbopack",
|
|
6
|
+
"build": "next build",
|
|
7
|
+
"start": "next start",
|
|
8
|
+
"lint": "next lint",
|
|
9
|
+
"prepare": "husky"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"next": "15.3.5",
|
|
13
|
+
"react": "^19.0.0",
|
|
14
|
+
"react-dom": "^19.0.0",
|
|
15
|
+
"styled-components": "^6.1.19"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@eslint/eslintrc": "^3",
|
|
19
|
+
"@types/node": "^20",
|
|
20
|
+
"@types/react": "^19",
|
|
21
|
+
"@types/react-dom": "^19",
|
|
22
|
+
"eslint": "^9",
|
|
23
|
+
"eslint-config-next": "15.3.5",
|
|
24
|
+
"husky": "^9.1.7",
|
|
25
|
+
"lint-staged": "^16.1.2",
|
|
26
|
+
"prettier": "^3.6.2",
|
|
27
|
+
"typescript": "^5.8.3"
|
|
28
|
+
},
|
|
29
|
+
"lint-staged": {
|
|
30
|
+
"**/*.{html,css,json,md,yaml}": [
|
|
31
|
+
"prettier --write"
|
|
32
|
+
],
|
|
33
|
+
"**/*.{ts,tsx}": [
|
|
34
|
+
"eslint --fix",
|
|
35
|
+
"prettier --write"
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Installing Webfonts
|
|
2
|
+
|
|
3
|
+
Follow these simple Steps.
|
|
4
|
+
|
|
5
|
+
## 1.
|
|
6
|
+
|
|
7
|
+
Put `satoshi/` Folder into a Folder called `fonts/`.
|
|
8
|
+
|
|
9
|
+
## 2.
|
|
10
|
+
|
|
11
|
+
Put `satoshi.css` into your `css/` Folder.
|
|
12
|
+
|
|
13
|
+
## 3. (Optional)
|
|
14
|
+
|
|
15
|
+
You may adapt the `url('path')` in `satoshi.css` depends on your Website Filesystem.
|
|
16
|
+
|
|
17
|
+
## 4.
|
|
18
|
+
|
|
19
|
+
Import `satoshi.css` at the top of you main Stylesheet.
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
@import url('satoshi.css');
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 5.
|
|
26
|
+
|
|
27
|
+
You are now ready to use the following Rules in your CSS to specify each Font Style:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
font-family: Satoshi-Light;
|
|
31
|
+
font-family: Satoshi-LightItalic;
|
|
32
|
+
font-family: Satoshi-Regular;
|
|
33
|
+
font-family: Satoshi-Italic;
|
|
34
|
+
font-family: Satoshi-Medium;
|
|
35
|
+
font-family: Satoshi-MediumItalic;
|
|
36
|
+
font-family: Satoshi-Bold;
|
|
37
|
+
font-family: Satoshi-BoldItalic;
|
|
38
|
+
font-family: Satoshi-Black;
|
|
39
|
+
font-family: Satoshi-BlackItalic;
|
|
40
|
+
font-family: Satoshi-Variable;
|
|
41
|
+
font-family: Satoshi-VariableItalic;
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 6. (Optional)
|
|
46
|
+
|
|
47
|
+
Use `font-variation-settings` rule to controll axes of variable fonts:
|
|
48
|
+
wght 900.0
|
|
49
|
+
|
|
50
|
+
Available axes:
|
|
51
|
+
'wght' (range from 300.0 to 900.0
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*
|
|
4
|
+
* Font Family: Satoshi
|
|
5
|
+
* Designed by: Deni Anggara
|
|
6
|
+
* URL: https://www.fontshare.com/fonts/satoshi
|
|
7
|
+
* © 2025 Indian Type Foundry
|
|
8
|
+
*
|
|
9
|
+
* Satoshi Light
|
|
10
|
+
* Satoshi LightItalic
|
|
11
|
+
* Satoshi Regular
|
|
12
|
+
* Satoshi Italic
|
|
13
|
+
* Satoshi Medium
|
|
14
|
+
* Satoshi MediumItalic
|
|
15
|
+
* Satoshi Bold
|
|
16
|
+
* Satoshi BoldItalic
|
|
17
|
+
* Satoshi Black
|
|
18
|
+
* Satoshi BlackItalic
|
|
19
|
+
* Satoshi Variable (Variable font)
|
|
20
|
+
* Satoshi VariableItalic (Variable font)
|
|
21
|
+
*
|
|
22
|
+
* Satoshi -> Satoshi Variable (Variable font)
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
@font-face {
|
|
26
|
+
font-family: "Satoshi-Light";
|
|
27
|
+
src:
|
|
28
|
+
url("../fonts/Satoshi-Light.woff2") format("woff2"),
|
|
29
|
+
url("../fonts/Satoshi-Light.woff") format("woff"),
|
|
30
|
+
url("../fonts/Satoshi-Light.ttf") format("truetype");
|
|
31
|
+
font-weight: 300;
|
|
32
|
+
font-display: swap;
|
|
33
|
+
font-style: normal;
|
|
34
|
+
}
|
|
35
|
+
@font-face {
|
|
36
|
+
font-family: "Satoshi-LightItalic";
|
|
37
|
+
src:
|
|
38
|
+
url("../fonts/Satoshi-LightItalic.woff2") format("woff2"),
|
|
39
|
+
url("../fonts/Satoshi-LightItalic.woff") format("woff"),
|
|
40
|
+
url("../fonts/Satoshi-LightItalic.ttf") format("truetype");
|
|
41
|
+
font-weight: 300;
|
|
42
|
+
font-display: swap;
|
|
43
|
+
font-style: italic;
|
|
44
|
+
}
|
|
45
|
+
@font-face {
|
|
46
|
+
font-family: "Satoshi-Regular";
|
|
47
|
+
src:
|
|
48
|
+
url("../fonts/Satoshi-Regular.woff2") format("woff2"),
|
|
49
|
+
url("../fonts/Satoshi-Regular.woff") format("woff"),
|
|
50
|
+
url("../fonts/Satoshi-Regular.ttf") format("truetype");
|
|
51
|
+
font-weight: 400;
|
|
52
|
+
font-display: swap;
|
|
53
|
+
font-style: normal;
|
|
54
|
+
}
|
|
55
|
+
@font-face {
|
|
56
|
+
font-family: "Satoshi-Italic";
|
|
57
|
+
src:
|
|
58
|
+
url("../fonts/Satoshi-Italic.woff2") format("woff2"),
|
|
59
|
+
url("../fonts/Satoshi-Italic.woff") format("woff"),
|
|
60
|
+
url("../fonts/Satoshi-Italic.ttf") format("truetype");
|
|
61
|
+
font-weight: 400;
|
|
62
|
+
font-display: swap;
|
|
63
|
+
font-style: italic;
|
|
64
|
+
}
|
|
65
|
+
@font-face {
|
|
66
|
+
font-family: "Satoshi-Medium";
|
|
67
|
+
src:
|
|
68
|
+
url("../fonts/Satoshi-Medium.woff2") format("woff2"),
|
|
69
|
+
url("../fonts/Satoshi-Medium.woff") format("woff"),
|
|
70
|
+
url("../fonts/Satoshi-Medium.ttf") format("truetype");
|
|
71
|
+
font-weight: 500;
|
|
72
|
+
font-display: swap;
|
|
73
|
+
font-style: normal;
|
|
74
|
+
}
|
|
75
|
+
@font-face {
|
|
76
|
+
font-family: "Satoshi-MediumItalic";
|
|
77
|
+
src:
|
|
78
|
+
url("../fonts/Satoshi-MediumItalic.woff2") format("woff2"),
|
|
79
|
+
url("../fonts/Satoshi-MediumItalic.woff") format("woff"),
|
|
80
|
+
url("../fonts/Satoshi-MediumItalic.ttf") format("truetype");
|
|
81
|
+
font-weight: 500;
|
|
82
|
+
font-display: swap;
|
|
83
|
+
font-style: italic;
|
|
84
|
+
}
|
|
85
|
+
@font-face {
|
|
86
|
+
font-family: "Satoshi-Bold";
|
|
87
|
+
src:
|
|
88
|
+
url("../fonts/Satoshi-Bold.woff2") format("woff2"),
|
|
89
|
+
url("../fonts/Satoshi-Bold.woff") format("woff"),
|
|
90
|
+
url("../fonts/Satoshi-Bold.ttf") format("truetype");
|
|
91
|
+
font-weight: 700;
|
|
92
|
+
font-display: swap;
|
|
93
|
+
font-style: normal;
|
|
94
|
+
}
|
|
95
|
+
@font-face {
|
|
96
|
+
font-family: "Satoshi-BoldItalic";
|
|
97
|
+
src:
|
|
98
|
+
url("../fonts/Satoshi-BoldItalic.woff2") format("woff2"),
|
|
99
|
+
url("../fonts/Satoshi-BoldItalic.woff") format("woff"),
|
|
100
|
+
url("../fonts/Satoshi-BoldItalic.ttf") format("truetype");
|
|
101
|
+
font-weight: 700;
|
|
102
|
+
font-display: swap;
|
|
103
|
+
font-style: italic;
|
|
104
|
+
}
|
|
105
|
+
@font-face {
|
|
106
|
+
font-family: "Satoshi-Black";
|
|
107
|
+
src:
|
|
108
|
+
url("../fonts/Satoshi-Black.woff2") format("woff2"),
|
|
109
|
+
url("../fonts/Satoshi-Black.woff") format("woff"),
|
|
110
|
+
url("../fonts/Satoshi-Black.ttf") format("truetype");
|
|
111
|
+
font-weight: 900;
|
|
112
|
+
font-display: swap;
|
|
113
|
+
font-style: normal;
|
|
114
|
+
}
|
|
115
|
+
@font-face {
|
|
116
|
+
font-family: "Satoshi-BlackItalic";
|
|
117
|
+
src:
|
|
118
|
+
url("../fonts/Satoshi-BlackItalic.woff2") format("woff2"),
|
|
119
|
+
url("../fonts/Satoshi-BlackItalic.woff") format("woff"),
|
|
120
|
+
url("../fonts/Satoshi-BlackItalic.ttf") format("truetype");
|
|
121
|
+
font-weight: 900;
|
|
122
|
+
font-display: swap;
|
|
123
|
+
font-style: italic;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* This is a variable font
|
|
127
|
+
* You can control variable axes as shown below:
|
|
128
|
+
* font-variation-settings: wght 900.0;
|
|
129
|
+
*
|
|
130
|
+
* available axes:
|
|
131
|
+
'wght' (range from 300.0 to 900.0
|
|
132
|
+
*/
|
|
133
|
+
@font-face {
|
|
134
|
+
font-family: "Satoshi-Variable";
|
|
135
|
+
src:
|
|
136
|
+
url("../fonts/Satoshi-Variable.woff2") format("woff2"),
|
|
137
|
+
url("../fonts/Satoshi-Variable.woff") format("woff"),
|
|
138
|
+
url("../fonts/Satoshi-Variable.ttf") format("truetype");
|
|
139
|
+
font-weight: 300 900;
|
|
140
|
+
font-display: swap;
|
|
141
|
+
font-style: normal;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* This is a variable font
|
|
145
|
+
* You can control variable axes as shown below:
|
|
146
|
+
* font-variation-settings: wght 900.0;
|
|
147
|
+
*
|
|
148
|
+
* available axes:
|
|
149
|
+
'wght' (range from 300.0 to 900.0
|
|
150
|
+
*/
|
|
151
|
+
@font-face {
|
|
152
|
+
font-family: "Satoshi-VariableItalic";
|
|
153
|
+
src:
|
|
154
|
+
url("../fonts/Satoshi-VariableItalic.woff2") format("woff2"),
|
|
155
|
+
url("../fonts/Satoshi-VariableItalic.woff") format("woff"),
|
|
156
|
+
url("../fonts/Satoshi-VariableItalic.ttf") format("truetype");
|
|
157
|
+
font-weight: 300 900;
|
|
158
|
+
font-display: swap;
|
|
159
|
+
font-style: italic;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* This is a variable font
|
|
164
|
+
* You can control variable axes as shown below:
|
|
165
|
+
* font-variation-settings: wght 900.0;
|
|
166
|
+
*
|
|
167
|
+
* available axes:
|
|
168
|
+
'wght' (range from 300.0 to 900.0
|
|
169
|
+
*/
|
|
170
|
+
@font-face {
|
|
171
|
+
font-family: "Satoshi"; /* same as Satoshi-Variable */
|
|
172
|
+
src:
|
|
173
|
+
url("../fonts/Satoshi-Variable.woff2") format("woff2"),
|
|
174
|
+
url("../fonts/Satoshi-Variable.woff") format("woff"),
|
|
175
|
+
url("../fonts/Satoshi-Variable.ttf") format("truetype");
|
|
176
|
+
font-weight: 300 900;
|
|
177
|
+
font-display: swap;
|
|
178
|
+
font-style: normal;
|
|
179
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2017",
|
|
4
|
+
"lib": ["dom", "dom.iterable", "esnext"],
|
|
5
|
+
"allowJs": true,
|
|
6
|
+
"skipLibCheck": true,
|
|
7
|
+
"strict": true,
|
|
8
|
+
"noEmit": true,
|
|
9
|
+
"esModuleInterop": true,
|
|
10
|
+
"module": "esnext",
|
|
11
|
+
"moduleResolution": "bundler",
|
|
12
|
+
"resolveJsonModule": true,
|
|
13
|
+
"isolatedModules": true,
|
|
14
|
+
"jsx": "preserve",
|
|
15
|
+
"incremental": true,
|
|
16
|
+
"plugins": [
|
|
17
|
+
{
|
|
18
|
+
"name": "next"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"paths": {
|
|
22
|
+
"@/*": ["./*"]
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
|
|
26
|
+
"exclude": ["node_modules"]
|
|
27
|
+
}
|