├── www ├── shared │ ├── media │ │ ├── fonts │ │ │ └── .gitkeep │ │ └── images │ │ │ └── .gitkeep │ ├── react │ │ ├── main-layout │ │ │ ├── index.js │ │ │ ├── footer │ │ │ │ ├── index.js │ │ │ │ ├── Footer.module.css │ │ │ │ ├── Footer.test.js │ │ │ │ └── Footer.js │ │ │ ├── header │ │ │ │ ├── index.js │ │ │ │ ├── Header.module.css │ │ │ │ ├── Header.test.js │ │ │ │ └── Header.js │ │ │ ├── MainLayout.module.css │ │ │ ├── MainLayout.test.js │ │ │ └── MainLayout.js │ │ ├── page-swapper │ │ │ ├── index.js │ │ │ ├── page-transition │ │ │ │ ├── index.js │ │ │ │ ├── PageTransition.module.css │ │ │ │ ├── PageTransition.js │ │ │ │ └── PageTransition.test.js │ │ │ ├── PageSwapper.test.js │ │ │ └── PageSwapper.js │ │ ├── testing-library │ │ │ ├── app-tree │ │ │ │ ├── index.js │ │ │ │ ├── AppTree.test.js │ │ │ │ └── AppTree.js │ │ │ ├── custom-queries │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── grid │ │ │ ├── index.js │ │ │ ├── Debug.test.js │ │ │ ├── Container.js │ │ │ ├── Container.test.js │ │ │ ├── util.js │ │ │ ├── Col.js │ │ │ ├── Debug.module.css │ │ │ ├── Col.test.js │ │ │ ├── Row.test.js │ │ │ ├── Row.js │ │ │ ├── Debug.js │ │ │ └── grid.module.css │ │ └── next-router │ │ │ ├── index.js │ │ │ ├── use-page-key.test.js │ │ │ ├── with-page-router.js │ │ │ ├── use-page-key.js │ │ │ ├── use-page-router.js │ │ │ ├── with-page-router.test.js │ │ │ └── use-page-router.test.js │ ├── modules │ │ ├── google-tag-manager │ │ │ ├── index.js │ │ │ ├── google-tag-manager.js │ │ │ └── google-tag-manager.test.js │ │ └── nprogress │ │ │ ├── index.js │ │ │ ├── nprogress.js │ │ │ └── nprogress.test.js │ └── styles │ │ ├── imports │ │ ├── index.css │ │ ├── mixins │ │ │ ├── unstyled-list.css │ │ │ ├── index.css │ │ │ ├── unstyled-button.css │ │ │ ├── position.css │ │ │ └── text.css │ │ ├── custom-medias.css │ │ └── variables.css │ │ └── global │ │ ├── index.css │ │ ├── font-faces.css │ │ ├── nprogress.css │ │ ├── typography.css │ │ └── layout.css ├── app │ ├── index.js │ ├── cookie-banner │ │ ├── index.js │ │ ├── CookieBanner.module.css │ │ ├── CookieBanner.js │ │ └── CookieBanner.test.js │ ├── images │ │ └── seo.jpg │ ├── App.module.css │ ├── App.data.js │ ├── App.test.js │ └── use-fouc-fix.js ├── document │ ├── index.js │ └── Document.js └── pages │ ├── home │ ├── index.js │ ├── Home.test.js │ ├── Home.module.css │ └── Home.js │ ├── error │ ├── index.js │ ├── Error.module.css │ ├── Error.test.js │ └── Error.js │ ├── terms │ ├── index.js │ ├── Terms.module.css │ ├── Terms.test.js │ ├── Terms.js │ └── Terms.data.js │ └── contacts │ ├── index.js │ ├── project-info │ ├── index.js │ ├── ProjectInfo.test.js │ └── ProjectInfo.js │ ├── Contacts.module.css │ ├── Contacts.test.js │ ├── Contacts.data.js │ └── Contacts.js ├── docusaurus ├── static │ ├── CNAME │ ├── recipes-assets │ │ ├── react-splash-screen │ │ │ ├── index.js │ │ │ ├── SplashScreen.js │ │ │ ├── SplashScreen.module.css │ │ │ └── SplashScreen.test.js │ │ ├── dato-cms │ │ │ ├── next-with-apollo │ │ │ │ ├── index.js │ │ │ │ ├── apollo-client.js │ │ │ │ ├── next-with-apollo.js │ │ │ │ └── next-with-apollo.test.js │ │ │ └── graphql │ │ │ │ └── graphql.js │ │ └── setting-up-redux │ │ │ ├── redux-home-with-state.png │ │ │ ├── redux-no-reducers-devtools.png │ │ │ ├── redux-store-with-tickets-reducer.png │ │ │ └── redux-logo.svg │ └── img │ │ ├── favicon.ico │ │ ├── logo-nwm.png │ │ ├── contentful-seo-content-model.jpg │ │ └── logo-moxy.svg ├── .gitignore ├── src │ ├── pages │ │ └── index.js │ └── css │ │ └── custom.css ├── docs │ ├── what-is-included │ │ ├── eslint-stylelint.md │ │ ├── browser-support.md │ │ ├── css-modules.md │ │ ├── node-modules-compiling.md │ │ ├── webpack-one-of-rules.md │ │ ├── breakpoints.md │ │ ├── jest-rtl.md │ │ ├── everything-else.md │ │ ├── top-progress-bar.md │ │ ├── customizable-page-transitions.md │ │ ├── webpack-file-loaders.md │ │ ├── internationalization.md │ │ ├── customizable-layout-support.md │ │ ├── docker.md │ │ ├── sitemap.md │ │ ├── grid-system.md │ │ └── available-scripts.md │ ├── this-document.md │ ├── welcome │ │ ├── what-is-this.md │ │ ├── instructions.md │ │ └── conventions.md │ └── recipes │ │ ├── rest-api.md │ │ ├── inner-vh.md │ │ ├── favicon-os-theme.md │ │ └── video-player.md ├── README.md ├── package.json ├── .eslintrc.json ├── docusaurus.config.js └── sidebars.js ├── pages ├── _document.js ├── index.js ├── terms.js ├── contacts.js ├── _app.js ├── 404.js ├── _error.js └── api │ └── sitemap.xml.js ├── .lintstagedrc ├── public ├── robots.txt └── favicons │ ├── favicon.ico │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── apple-touch-icon.png │ ├── mstile-150x150.png │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── browserconfig.xml │ └── site.webmanifest ├── .commitlintrc.json ├── .dockerignore ├── .gitignore ├── .stylelintrc.json ├── .huskyrc ├── postcss.config.js ├── .editorconfig ├── .env.sample ├── intl ├── index.js └── en-US.json5 ├── babel.config.js ├── .github └── workflows │ ├── deploy-docs.yml │ ├── docker-ci.yml │ ├── node-ci.yml │ └── deploy-vercel.yml ├── jest.config.js ├── LICENSE ├── jest.setup.js ├── README.md ├── Dockerfile ├── .eslintrc.json ├── package.json └── next.config.js /www/shared/media/fonts/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /www/shared/media/images/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docusaurus/static/CNAME: -------------------------------------------------------------------------------- 1 | next-with.moxy.tech 2 | -------------------------------------------------------------------------------- /www/app/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './App'; 2 | -------------------------------------------------------------------------------- /www/document/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Document'; 2 | -------------------------------------------------------------------------------- /pages/_document.js: -------------------------------------------------------------------------------- 1 | export { default } from '../www/document'; 2 | -------------------------------------------------------------------------------- /www/app/cookie-banner/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './CookieBanner'; 2 | -------------------------------------------------------------------------------- /www/pages/home/index.js: -------------------------------------------------------------------------------- 1 | export { default, getStaticProps } from './Home'; 2 | -------------------------------------------------------------------------------- /.lintstagedrc: -------------------------------------------------------------------------------- 1 | { 2 | "*.js": "eslint", 3 | "*.css": "stylelint" 4 | } 5 | -------------------------------------------------------------------------------- /pages/index.js: -------------------------------------------------------------------------------- 1 | export { default, getStaticProps } from '../www/pages/home'; 2 | -------------------------------------------------------------------------------- /pages/terms.js: -------------------------------------------------------------------------------- 1 | export { default, getStaticProps } from '../www/pages/terms'; 2 | -------------------------------------------------------------------------------- /www/pages/error/index.js: -------------------------------------------------------------------------------- 1 | export { default, getStaticProps } from './Error'; 2 | -------------------------------------------------------------------------------- /www/pages/terms/index.js: -------------------------------------------------------------------------------- 1 | export { default, getStaticProps } from './Terms'; 2 | -------------------------------------------------------------------------------- /www/shared/react/main-layout/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './MainLayout'; 2 | -------------------------------------------------------------------------------- /www/shared/react/page-swapper/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './PageSwapper'; 2 | -------------------------------------------------------------------------------- /pages/contacts.js: -------------------------------------------------------------------------------- 1 | export { default, getStaticProps } from '../www/pages/contacts'; 2 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | Sitemap: ${siteUrl}/api/sitemap.xml 2 | 3 | User-agent:* 4 | Disallow: -------------------------------------------------------------------------------- /www/pages/contacts/index.js: -------------------------------------------------------------------------------- 1 | export { default, getStaticProps } from './Contacts'; 2 | -------------------------------------------------------------------------------- /www/pages/contacts/project-info/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './ProjectInfo'; 2 | -------------------------------------------------------------------------------- /www/shared/modules/google-tag-manager/index.js: -------------------------------------------------------------------------------- 1 | export * from './google-tag-manager'; 2 | -------------------------------------------------------------------------------- /www/shared/react/main-layout/footer/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Footer'; 2 | -------------------------------------------------------------------------------- /www/shared/react/main-layout/header/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Header'; 2 | -------------------------------------------------------------------------------- /www/shared/react/page-swapper/page-transition/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './PageTransition'; 2 | -------------------------------------------------------------------------------- /.commitlintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "@commitlint/config-conventional" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /docusaurus/static/recipes-assets/react-splash-screen/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './SplashScreen'; 2 | -------------------------------------------------------------------------------- /www/app/images/seo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/www/app/images/seo.jpg -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log* 3 | .git 4 | /.env* 5 | /.next 6 | /coverage 7 | /docusaurus 8 | -------------------------------------------------------------------------------- /pages/_app.js: -------------------------------------------------------------------------------- 1 | import '../www/shared/styles/global/index.css'; 2 | 3 | export { default } from '../www/app'; 4 | -------------------------------------------------------------------------------- /www/shared/modules/nprogress/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './nprogress'; 2 | export * from './nprogress'; 3 | -------------------------------------------------------------------------------- /public/favicons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/public/favicons/favicon.ico -------------------------------------------------------------------------------- /www/shared/styles/imports/index.css: -------------------------------------------------------------------------------- 1 | @import "./variables"; 2 | @import "./custom-medias"; 3 | @import "./mixins"; 4 | -------------------------------------------------------------------------------- /www/shared/react/testing-library/app-tree/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AppTree'; 2 | export * from './AppTree'; 3 | -------------------------------------------------------------------------------- /docusaurus/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/docusaurus/static/img/favicon.ico -------------------------------------------------------------------------------- /public/favicons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/public/favicons/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/public/favicons/favicon-32x32.png -------------------------------------------------------------------------------- /www/pages/error/Error.module.css: -------------------------------------------------------------------------------- 1 | @import "../../shared/styles/imports"; 2 | 3 | .error { 4 | padding: 2.5rem 0; 5 | } 6 | -------------------------------------------------------------------------------- /www/pages/terms/Terms.module.css: -------------------------------------------------------------------------------- 1 | @import "../../shared/styles/imports"; 2 | 3 | .terms { 4 | padding: 2.5rem 0; 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log* 3 | /.env 4 | /.next 5 | /coverage 6 | /docusaurus/.docusaurus 7 | /docusaurus/build 8 | -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@moxy/stylelint-config", 3 | "ignoreFiles": [ 4 | "!**/*.css" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /docusaurus/static/img/logo-nwm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/docusaurus/static/img/logo-nwm.png -------------------------------------------------------------------------------- /docusaurus/static/recipes-assets/dato-cms/next-with-apollo/index.js: -------------------------------------------------------------------------------- 1 | export { default as withApollo } from './next-with-apollo'; 2 | -------------------------------------------------------------------------------- /public/favicons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/public/favicons/apple-touch-icon.png -------------------------------------------------------------------------------- /public/favicons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/public/favicons/mstile-150x150.png -------------------------------------------------------------------------------- /www/app/App.module.css: -------------------------------------------------------------------------------- 1 | .pageSwapper { 2 | height: 100%; 3 | 4 | & .pageTransition { 5 | height: 100%; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /public/favicons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/public/favicons/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/favicons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/public/favicons/android-chrome-512x512.png -------------------------------------------------------------------------------- /.huskyrc: -------------------------------------------------------------------------------- 1 | { 2 | "hooks": { 3 | "pre-commit": "lint-staged", 4 | "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /www/shared/styles/imports/mixins/unstyled-list.css: -------------------------------------------------------------------------------- 1 | @define-mixin unstyled-list { 2 | margin: 0; 3 | padding: 0; 4 | list-style: none; 5 | } 6 | -------------------------------------------------------------------------------- /docusaurus/static/img/contentful-seo-content-model.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/docusaurus/static/img/contentful-seo-content-model.jpg -------------------------------------------------------------------------------- /www/shared/styles/global/index.css: -------------------------------------------------------------------------------- 1 | @import "normalize.css"; 2 | @import "./layout"; 3 | @import "./typography"; 4 | @import "./font-faces"; 5 | @import "./nprogress"; 6 | -------------------------------------------------------------------------------- /www/shared/styles/imports/mixins/index.css: -------------------------------------------------------------------------------- 1 | @import "./position"; 2 | @import "./text"; 3 | @import "./typography"; 4 | @import "./unstyled-button"; 5 | @import "./unstyled-list"; 6 | -------------------------------------------------------------------------------- /www/pages/contacts/Contacts.module.css: -------------------------------------------------------------------------------- 1 | @import "../../shared/styles/imports"; 2 | 3 | .contacts { 4 | min-height: 200vh; /* Just to simulate scroll */ 5 | padding: 2.5rem 0; 6 | } 7 | -------------------------------------------------------------------------------- /docusaurus/static/recipes-assets/setting-up-redux/redux-home-with-state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/docusaurus/static/recipes-assets/setting-up-redux/redux-home-with-state.png -------------------------------------------------------------------------------- /docusaurus/static/recipes-assets/setting-up-redux/redux-no-reducers-devtools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/docusaurus/static/recipes-assets/setting-up-redux/redux-no-reducers-devtools.png -------------------------------------------------------------------------------- /www/shared/react/grid/index.js: -------------------------------------------------------------------------------- 1 | export { default as Container } from './Container'; 2 | export { default as Row } from './Row'; 3 | export { default as Col } from './Col'; 4 | export { default as Debug } from './Debug'; 5 | -------------------------------------------------------------------------------- /www/shared/react/testing-library/custom-queries/index.js: -------------------------------------------------------------------------------- 1 | // import { queryHelpers, buildQueries } from '@testing-library/react'; 2 | 3 | // You may define here your custom RTL queries. 4 | 5 | export { 6 | 7 | }; 8 | -------------------------------------------------------------------------------- /docusaurus/static/recipes-assets/setting-up-redux/redux-store-with-tickets-reducer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moxystudio/next-with-moxy/HEAD/docusaurus/static/recipes-assets/setting-up-redux/redux-store-with-tickets-reducer.png -------------------------------------------------------------------------------- /pages/404.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Error, { getStaticProps } from '../www/pages/error'; 3 | 4 | const Error404 = () => ; 5 | 6 | export { getStaticProps }; 7 | 8 | export default Error404; 9 | -------------------------------------------------------------------------------- /www/shared/react/next-router/index.js: -------------------------------------------------------------------------------- 1 | export { default as usePageKey } from './use-page-key'; 2 | export { default as usePageRouter } from './use-page-router'; 3 | export { default as withPageRouter } from './with-page-router'; 4 | -------------------------------------------------------------------------------- /pages/_error.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Error, { getStaticProps } from '../www/pages/error'; 3 | 4 | const Error500 = () => ; 5 | 6 | export { getStaticProps }; 7 | 8 | export default Error500; 9 | -------------------------------------------------------------------------------- /www/shared/styles/imports/mixins/unstyled-button.css: -------------------------------------------------------------------------------- 1 | @define-mixin unstyled-button { 2 | padding: 0; 3 | border: none; 4 | background: transparent; 5 | border-radius: 0; 6 | color: inherit; 7 | cursor: pointer; 8 | appearance: none; 9 | } 10 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('@moxy/postcss-preset')({ 4 | browsers: require('./package.json').browserslist, 5 | url: [ 6 | { filter: /\.data-url\./, url: 'inline' }, 7 | { filter: '**/*', url: 'rebase' }, 8 | ], 9 | }); 10 | -------------------------------------------------------------------------------- /www/shared/react/main-layout/footer/Footer.module.css: -------------------------------------------------------------------------------- 1 | @import "../../../styles/imports"; 2 | 3 | .footer { 4 | height: 5rem; 5 | display: flex; 6 | align-items: center; 7 | background-color: color(var(--color-black) alpha(0.2)); 8 | color: var(--color-black); 9 | } 10 | -------------------------------------------------------------------------------- /pages/api/sitemap.xml.js: -------------------------------------------------------------------------------- 1 | import createSitemapApiHandler from '@moxy/next-sitemaps'; 2 | 3 | export default createSitemapApiHandler({ 4 | mapDynamicRoutes: { 5 | // ... map the dynamic routes here. See step 2 of the docs, usage section: https://www.npmjs.com/package/@moxy/next-sitemaps#usage 6 | }, 7 | }); 8 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 4 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [package.json] 13 | indent_size = 2 14 | 15 | [{*.md,*.snap}] 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /public/favicons/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #ffffff 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docusaurus/.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | /node_modules 3 | 4 | # production 5 | /build 6 | 7 | # generated files 8 | .docusaurus 9 | .cache-loader 10 | 11 | # misc 12 | .DS_Store 13 | .env.local 14 | .env.development.local 15 | .env.test.local 16 | .env.production.local 17 | 18 | npm-debug.log* 19 | yarn-debug.log* 20 | yarn-error.log* 21 | -------------------------------------------------------------------------------- /.env.sample: -------------------------------------------------------------------------------- 1 | # These env variables may be configured for the development environment 2 | 3 | # Enable or disable compressed responses 4 | #COMPRESSION=1 5 | 6 | # Google Tag Manager container ID used for analytics 7 | #GTM_CONTAINER_ID= 8 | 9 | # Fully qualified site URL, without trailing slash 10 | # This variable is to have absolute paths in SEO images 11 | SITE_URL=http://localhost:3000 12 | -------------------------------------------------------------------------------- /www/pages/contacts/project-info/ProjectInfo.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render, screen } from '../../../shared/react/testing-library'; 3 | import ProjectInfo from './ProjectInfo'; 4 | 5 | it('should render correctly', () => { 6 | render(); 7 | 8 | screen.getByText('contacts.name'); 9 | screen.getByText('contacts.email'); 10 | }); 11 | -------------------------------------------------------------------------------- /intl/index.js: -------------------------------------------------------------------------------- 1 | const locales = [ 2 | { tag: 'en-US', label: 'English', dir: 'ltr' }, 3 | ]; 4 | 5 | const defaultLocale = 'en-US'; 6 | 7 | const localesMap = locales.reduce((localesMap, locale) => { 8 | localesMap[locale.tag] = locale; 9 | 10 | return localesMap; 11 | }, {}); 12 | 13 | // eslint-disable-next-line import/no-commonjs 14 | module.exports = { 15 | locales, 16 | localesMap, 17 | defaultLocale, 18 | }; 19 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = (api) => { 4 | api.cache(true); 5 | 6 | return require('@moxy/babel-preset/end-project')(api, { 7 | modules: process.env.NODE_ENV === 'test' ? 'commonjs' : false, 8 | react: true, 9 | loose: false, 10 | targets: { 11 | node: 'current', 12 | browsers: require('./package.json').browserslist, 13 | }, 14 | }); 15 | }; 16 | -------------------------------------------------------------------------------- /www/shared/react/page-swapper/page-transition/PageTransition.module.css: -------------------------------------------------------------------------------- 1 | .fade { 2 | &.enter { 3 | opacity: 0; 4 | } 5 | 6 | &.enterActive, 7 | &.enterDone { 8 | opacity: 1; 9 | transition: opacity 0.6s; 10 | } 11 | 12 | &.exit { 13 | opacity: 1; 14 | } 15 | 16 | &.exitActive, 17 | &.exitDone { 18 | opacity: 0; 19 | transition: opacity 0.3s; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /docusaurus/src/pages/index.js: -------------------------------------------------------------------------------- 1 | import { useEffect } from 'react'; 2 | import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; 3 | 4 | const Home = () => { 5 | const context = useDocusaurusContext(); 6 | const { siteConfig } = context; 7 | 8 | useEffect(() => { 9 | window.location = `${siteConfig.baseUrl}docs/welcome/what-is-this`; 10 | }, [siteConfig]); 11 | 12 | return null; 13 | }; 14 | 15 | export default Home; 16 | -------------------------------------------------------------------------------- /www/shared/react/main-layout/header/Header.module.css: -------------------------------------------------------------------------------- 1 | @import "../../../styles/imports"; 2 | 3 | .header { 4 | height: 5rem; 5 | display: flex; 6 | align-items: center; 7 | background-color: color(var(--color-black) alpha(0.2)); 8 | color: var(--color-black); 9 | 10 | & ul { 11 | padding: 0; 12 | display: flex; 13 | list-style-type: none; 14 | 15 | & li { 16 | padding-right: 1.5rem; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /www/shared/react/main-layout/footer/Footer.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '../../testing-library'; 3 | import Footer from './Footer'; 4 | 5 | it('should render correctly', () => { 6 | const { container } = render(