diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 3ebe9d18e0..b6af0074f9 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -1,201 +1,194 @@ // @ts-check // Note: type annotations allow type checking and IDEs autocompletion -const lightCodeTheme = require('prism-react-renderer/themes/github'); -const darkCodeTheme = require('prism-react-renderer/themes/palenight'); -const math = require('remark-math'); -const katex = require('rehype-katex'); +const lightCodeTheme = require('prism-react-renderer/themes/github') +const darkCodeTheme = require('prism-react-renderer/themes/palenight') +const math = require('remark-math') +const katex = require('rehype-katex') /** @type {import('@docusaurus/types').Config} */ const config = { - title: 'Formance Developer Docs', - tagline: 'The open source foundation you need to build and scale money-movements within your app', - url: 'https://docs.formance.com/', - baseUrl: '/', - onBrokenLinks: 'warn', - onBrokenMarkdownLinks: 'warn', - favicon: 'img/f-shape.ico', - organizationName: 'formancehq', // Usually your GitHub org/user name. - projectName: 'docs', // Usually your repo name. + title: 'Formance Developer Docs', + tagline: 'The open source foundation you need to build and scale money-movements within your app', + url: 'https://docs.formance.com/', + baseUrl: '/', + onBrokenLinks: 'warn', + onBrokenMarkdownLinks: 'warn', + favicon: 'img/f-shape.ico', + organizationName: 'formancehq', // Usually your GitHub org/user name. + projectName: 'docs', // Usually your repo name. - stylesheets: [ - 'https://fonts.googleapis.com/icon?family=Material+Icons', - 'https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@200;300;400;500;600&display=swap', - 'https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;500;600&display=swap', - { - href: 'https://cdn.jsdelivr.net/npm/katex@0.13.24/dist/katex.min.css', - type: 'text/css', - integrity: - 'sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM', - crossorigin: 'anonymous', - }, - ], + stylesheets: [], - plugins: [ - // 'posthog-docusaurus', - ], + plugins: [ + // 'posthog-docusaurus', + ], - presets: [ - [ - '@docusaurus/preset-classic', - /** @type {import('@docusaurus/preset-classic').Options} */ - ({ - sitemap: { - filename: 'sitemap.xml', - }, - docs: { - routeBasePath: '/', - sidebarPath: require.resolve('./sidebars.js'), - remarkPlugins: [math], - rehypePlugins: [katex], - }, - theme: { - customCss: require.resolve('./src/css/custom.css'), - }, - blog: false, - pages: false, - }), - ], - [ - 'redocusaurus', - { - debug: Boolean(process.env.DEBUG || process.env.CI), - specs: [ - { - spec: './openapi/v1.json', -// spec: './../openapi/build/generate.json', - route: '/api/stack/v1.0', - id: 'stack', - } - ], - } - ], - ], + presets: [ + [ + '@docusaurus/preset-classic', + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + sitemap: { + filename: 'sitemap.xml', + }, + docs: { + routeBasePath: '/', + sidebarPath: require.resolve('./sidebars.js'), + remarkPlugins: [math], + rehypePlugins: [katex], + }, + theme: { + customCss: require.resolve('./src/css/custom.css'), + }, + blog: false, + pages: false, + }), + ], + [ + 'redocusaurus', + { + debug: Boolean(process.env.DEBUG || process.env.CI), + specs: [ + { + spec: './openapi/v1.json', + // spec: './../openapi/build/generate.json', + route: '/api/stack/v1.0', + id: 'stack', + }, + ], + }, + ], + ], - themeConfig: - /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ - ({ - docs: { - sidebar: { - autoCollapseCategories: true, - } - }, - colorMode: { - defaultMode: 'light', - disableSwitch: true, - }, - navbar: { - // style: 'light', - logo: { - alt: 'Formance Logo', - src: 'img/logo.svg', - href: '/', - }, - items: [ - { - label: '⚡️ API Reference', - position: 'right', - items: [ - { - label: 'v1.0', - to: '/api/stack/v1.0', - } - ], - }, - { - label: 'Use-cases Library', - position: 'right', - href: 'https://www.formance.com/use-cases', - }, - { - href: 'https://github.com/formancehq/stack', - label: 'GitHub', - position: 'right', - }, - { - label: 'Go to Website', - position: 'right', - href: 'https://www.formance.com/', - }, - ], - }, - footer: { - style: 'light', - links: [ - { - title: 'Documentation', - items: [ - { - label: 'Ledger', - to: '/ledger', - }, - { - label: 'Payments', - to: '/payments', - }, - { - label: 'Wallets', - to: '/wallets', - }, - ], - }, - { - title: 'Community', - items: [ - { - label: 'Slack', - href: 'https://bit.ly/formance-slack', - }, - { - label: 'Twitter', - href: 'https://twitter.com/formancehq', - }, - ], - }, - { - title: 'More', - items: [ - { - label: 'GitHub', - href: 'https://github.com/formancehq/stack', - }, - { - label: 'Cloud Status', - href: 'https://status.formance.com', - }, - ], - }, - ], - copyright: `Copyright © 2021-2023 Formance, Inc`, - }, - prism: { - theme: darkCodeTheme, - }, - posthog: { - apiKey: 'phc_hRDv01yOHJNUM7l5SmXPUtSQUuNw4r5am9FtV83Z9om', - appUrl: 'https://app.posthog.com', // optional - enableInDevelopment: false, // optional - }, - algolia: { - appId: 'IHGRMFJIIG', - apiKey: '7864304f16ea5f9d27b7a553c83ad17a', - indexName: 'numary', + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + docs: { + sidebar: { + autoCollapseCategories: true, + }, + }, + colorMode: { + defaultMode: 'light', + disableSwitch: true, + }, + navbar: { + // style: 'light', + logo: { + alt: 'Formance Logo', + src: 'img/logo.svg', + href: '/', + }, + items: [ + { + label: '⚡️ API Reference', + position: 'right', + items: [ + { + label: 'v1.0', + to: '/api/stack/v1.0', + }, + ], + }, + { + label: 'Use-cases Library', + position: 'right', + href: 'https://www.formance.com/use-cases', + }, + { + href: 'https://github.com/formancehq/stack', + label: 'GitHub', + position: 'right', + }, + { + label: 'Go to Website', + position: 'right', + href: 'https://www.formance.com/', + }, + ], + }, + footer: { + style: 'light', + links: [ + { + title: 'Documentation', + items: [ + { + label: 'Ledger', + to: '/ledger', + }, + { + label: 'Payments', + to: '/payments', + }, + { + label: 'Wallets (beta)', + to: '/wallets', + }, + { + label: 'Flows (beta)', + to: '/flows', + }, + ], + }, + { + title: 'Community', + items: [ + { + label: 'Slack', + href: 'https://www.formance.com/slack', + }, + { + label: 'Twitter', + href: 'https://www.formance.com/twitter', + }, + ], + }, + { + title: 'More', + items: [ + { + label: 'GitHub', + href: 'https://www.formance.com/stack', + }, + { + label: 'Cloud Status', + href: 'https://status.formance.com', + }, + ], + }, + ], + copyright: `Copyright © 2021-2023 Formance, Inc`, + }, + prism: { + theme: darkCodeTheme, + }, + posthog: { + apiKey: 'phc_hRDv01yOHJNUM7l5SmXPUtSQUuNw4r5am9FtV83Z9om', + appUrl: 'https://app.posthog.com', // optional + enableInDevelopment: false, // optional + }, + algolia: { + appId: 'IHGRMFJIIG', + apiKey: '7864304f16ea5f9d27b7a553c83ad17a', + indexName: 'numary', - // Optional: see doc section below - contextualSearch: true, + // Optional: see doc section below + contextualSearch: true, - // Optional: Specify domains where the navigation should occur through window.location instead on history.push. Useful when our Algolia config crawls multiple documentation sites and we want to navigate with window.location.href to them. - externalUrlRegex: 'docs\\.formance\\.com', + // Optional: Specify domains where the navigation should occur through window.location instead on history.push. Useful when our Algolia config crawls multiple documentation sites and we want to navigate with window.location.href to them. + externalUrlRegex: 'docs\\.formance\\.com', - // Optional: Algolia search parameters - searchParameters: {}, + // Optional: Algolia search parameters + searchParameters: {}, - // Optional: path for search page that enabled by default (`false` to disable it) - searchPagePath: 'search', + // Optional: path for search page that enabled by default (`false` to disable it) + searchPagePath: 'search', - //... other Algolia params - }, - }) -}; + //... other Algolia params + }, + }), +} -module.exports = config; +module.exports = config diff --git a/docs/src/components/DocCard.js b/docs/src/components/DocCard.js index 3b10381850..86bcb1ab57 100644 --- a/docs/src/components/DocCard.js +++ b/docs/src/components/DocCard.js @@ -1,113 +1,123 @@ -import React from 'react'; -import Box from '@mui/material/Box'; -import Grid from '@mui/material/Grid'; +import React from 'react' +import Box from '@mui/material/Box' +import Grid from '@mui/material/Grid' -import {findFirstCategoryLink, useDocById} from '@docusaurus/theme-common/internal'; +import { findFirstCategoryLink, useDocById } from '@docusaurus/theme-common/internal' - -export function DocCardGrid({children}) { - return ( - - {children} - - ); +export function DocCardGrid({ children }) { + return ( + + {children} + + ) } -function Card({title, icon, cta, children}) { - return ( - - - {icon && - - } -

{title}

-
-
{children}
- {cta && ( -
- {cta.text} -
- )} -
- ); +function Card({ title, icon, cta, children }) { + return ( + + + {icon && ( + + + + )} + +

{title}

+
+
+
{children}
+ {cta && ( +
+ + {cta.text} + +
+ )} +
+ ) } -export function DocCard({children, headline, icon, link, cta, highlight}) { - var title = headline; - cta = cta || "Read more"; +export function DocCard({ children, headline, icon, link, cta, highlight }) { + var title = headline + cta = cta || 'Read more' - let buttonstyle = 'outlined' - if(!!highlight) { - buttonstyle = 'contained' - } + let buttonstyle = 'outlined' + if (!!highlight) { + buttonstyle = 'contained' + } - let card = ( - - {children} - - ); + let card = ( + + {children} + + ) - if(!cta) { - card = - {card} - - } + if (!cta) { + card = {card} + } - return ( - - {card} - - ); + return ( + + {card} + + ) } // Filter categories that don't have a link. function filterItems(items) { - return items.filter((item) => { - if (item.type === 'category') { - return !!findFirstCategoryLink(item); - } - return true; - }); + return items.filter((item) => { + if (item.type === 'category') { + return !!findFirstCategoryLink(item) + } + return true + }) } -export function DocCardList({items}) { - return ( - - {filterItems(items).map((item, index) => { - const doc = useDocById(item.docId ?? undefined); +export function DocCardList({ items }) { + return ( + + {filterItems(items).map((item, index) => { + const doc = useDocById(item.docId ?? undefined) - // Category descriptions and any CTAs and icons can only be added in sidebarsLedger.js as a customProp.description item. WHY!? - let desc = doc ? doc.description : ''; - if(item.type == "category") { - desc = item.customProps ? item.customProps.description : ''; - } + // Category descriptions and any CTAs and icons can only be added in sidebarsLedger.js as a customProp.description item. WHY!? + let desc = doc ? doc.description : '' + if (item.type == 'category') { + desc = item.customProps ? item.customProps.description : '' + } - return ( - - {desc} - - ); - })} - - ); + return ( + + {desc} + + ) + })} + + ) } diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index b6e9824fb3..3331f9e298 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -9,55 +9,73 @@ /* You can override the default Infima variables here. */ :root { - --ifm-font-color-base: hsla(220, 22%, 26%, 1); - --ifm-font-family-base: 'Inter', sans-serif; - --ifm-heading-font-family: 'Machina'; - --ifm-breadcrumb-font-family: 'Machina'; - --ifm-heading-font-weight: 500; - /* --ifm-color-primary: hsla(160, 40%, 50%, 1); */ - /* --ifm-color-primary: #6FE385; + --ifm-font-color-base: hsla(220, 22%, 26%, 1); + --ifm-font-family-base: 'Object Sans', sans-serif; + --ifm-heading-font-family: var(--ifm-font-family-base); + --ifm-breadcrumb-font-family: var(--ifm-font-family-base); + --ifm-heading-font-weight: var(--ifm-font-weight-normal); + --ifm-heading-font-weight: var(--ifm-font-weight-normal); + --ifm-menu-font-weight: var(--ifm-font-weight-normal); + --ifm-navbar-font-weight: var(--ifm-font-weight-normal); + --ifm-table-head-font-weight: var(--ifm-font-weight-semibold); + + --ifm-font-weight-base: var(--ifm-font-weight-normal); + + --yellow-darker: #92400e; + --yellow-normal: #ffe353; + --yellow-bright: #fff1a8; + --yellow-light: #fffbe4; + + --pink-darker: #c087ca; + --pink-normal: #f5d0fe; + --pink-bright: #f8e2ff; + --pink-light: #fdf4ff; + + --ifm-box-border-color: var(--ifm-color-gray-300); + + --ifm-button-font-weight: 400; + + /* --ifm-color-primary: hsla(160, 40%, 50%, 1); */ + /* --ifm-color-primary: #6FE385; --ifm-color-primary-dark: rgb(33, 175, 144); --ifm-color-primary-darker: rgb(31, 165, 136); --ifm-color-primary-darkest: rgb(26, 136, 112); --ifm-color-primary-light: rgb(70, 203, 174); --ifm-color-primary-lighter: rgb(102, 212, 189); --ifm-color-primary-lightest: rgb(146, 224, 208); */ - --ifm-code-font-size: 95%; - --ifm-h1-font-size: 1rem; + --ifm-code-font-size: 95%; + --ifm-h1-font-size: 1rem; +} + +* { + font-weight: var(--ifm-font-weight-light); } .markdown h1:first-child { - font-size: 2rem; + font-size: 2rem; } .markdown h2 { - font-size: 1.75rem; + font-size: 1.75rem; } .markdown h3 { - font-size: 1.4rem; + font-size: 1.4rem; } -html:not([data-theme="dark"]) - .redocusaurus - .redoc-wrap - .api-content - > div - > div:nth-child(1) - > div:nth-child(2) - h3 { - color: var(--ifm-font-color-base-inverse); +html:not([data-theme='dark']) .redocusaurus .redoc-wrap .api-content > div > div:nth-child(1) > div:nth-child(2) h3 { + color: var(--ifm-font-color-base-inverse); } .docusaurus-highlight-code-line { - background-color: rgba(0, 0, 0, 0.1); - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); + background-color: rgba(0, 0, 0, 0.1); + display: block; + margin: 0 calc(-1 * var(--ifm-pre-padding)); + padding: 0 var(--ifm-pre-padding); } html[data-theme='dark'] .docusaurus-highlight-code-line { - background-color: rgba(0, 0, 0, 0.3); + background-color: rgba(0, 0, 0, 0.3); } /* html[data-theme='light'] footer { @@ -65,17 +83,17 @@ html[data-theme='dark'] .docusaurus-highlight-code-line { } */ .header-github-logo:before { - content: ''; - width: 24px; - height: 24px; - display: flex; - background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") - no-repeat; + content: ''; + width: 24px; + height: 24px; + display: flex; + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") + no-repeat; } html[data-theme='dark'] .header-github-logo:before { - background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='white' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") - no-repeat; + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='white' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") + no-repeat; } /* Graph */ @@ -108,3 +126,40 @@ html[data-theme='dark'] .header-github-logo:before { font-size: 12px; fill: hsl(218deg 13% 82%); } + +.menu__link { + font-weight: var(--ifm-menu-font-weight); +} + +.navbar__link { + font-weight: var(--ifm-navbar-font-weight); +} + +.button--yellow { + background-color: var(--yellow-bright); + color: var(--ifm-font-color-base); +} + +.button--yellow:hover { + background-color: var(--yellow-normal); + color: var(--ifm-font-color-base); +} + +.card__title { + font-weight: var(--ifm-font-weight-normal); + color: var(--ifm-font-color-base); + margin: 0; +} + +.card__title:hover { + color: var(--ifm-font-color-base); + text-decoration: none; +} + +.card__title h3 { + margin: 0; +} + +.footer__title { + font-weight: var(--ifm-font-weight-semibold); +} diff --git a/docs/src/css/fonts.css b/docs/src/css/fonts.css index fbb510a601..c7017a3dbc 100644 --- a/docs/src/css/fonts.css +++ b/docs/src/css/fonts.css @@ -1,27 +1,9 @@ @font-face { - font-family: 'Machina'; - src: url('../../static/fonts/machina-plain-semibold.woff2'); - font-weight: 600; - font-style: normal; + font-family: 'Object Sans'; + src: url('../../static/fonts/Object-Sans/PPObjectSans-Variable.woff2'); } @font-face { - font-family: 'Machina'; - src: url('../../static/fonts/machina-plain-medium.woff2'); - font-weight: 500; - font-style: normal; -} - -@font-face { - font-family: 'Machina'; - src: url('../../static/fonts/machina-plain-regular.woff2'); - font-weight: 400; - font-style: normal; -} - -@font-face { - font-family: 'Machina'; - src: url('../../static/fonts/machina-plain-light.woff2'); - font-weight: 300; - font-style: normal; + font-family: 'Machina'; + src: url('../../static/fonts/Machina/PPNeueMachina-PlainVariable.woff2'); } diff --git a/docs/src/pages/index.module.css b/docs/src/pages/index.module.css index 666feb6a17..df02ba517f 100644 --- a/docs/src/pages/index.module.css +++ b/docs/src/pages/index.module.css @@ -4,20 +4,20 @@ */ .heroBanner { - padding: 4rem 0; - text-align: center; - position: relative; - overflow: hidden; + padding: 4rem 0; + text-align: center; + position: relative; + overflow: hidden; } @media screen and (max-width: 966px) { - .heroBanner { - padding: 2rem; - } + .heroBanner { + padding: 2rem; + } } .buttons { - display: flex; - align-items: center; - justify-content: center; + display: flex; + align-items: center; + justify-content: center; } diff --git a/docs/static/fonts/Machina/PPNeueMachina-PlainVariable.woff2 b/docs/static/fonts/Machina/PPNeueMachina-PlainVariable.woff2 new file mode 100644 index 0000000000..9a7faa028b Binary files /dev/null and b/docs/static/fonts/Machina/PPNeueMachina-PlainVariable.woff2 differ diff --git a/docs/static/fonts/Object-Sans/PPObjectSans-Variable.woff2 b/docs/static/fonts/Object-Sans/PPObjectSans-Variable.woff2 new file mode 100644 index 0000000000..a515c46ce6 Binary files /dev/null and b/docs/static/fonts/Object-Sans/PPObjectSans-Variable.woff2 differ