mirror of
https://github.com/jambonz/next-static-site.git
synced 2025-12-19 04:47:44 +00:00
YAML data, navi stub, page h1s
This commit is contained in:
10
README.md
10
README.md
@@ -5,9 +5,19 @@ jambonz/next-static-site
|
||||
|
||||
# [Jambonz](https://jambonz.vercel.app)
|
||||
|
||||
## Getting started
|
||||
|
||||
- `yarn install`
|
||||
- `yarn dev`
|
||||
|
||||
## Kit of parts
|
||||
|
||||
- [Design elements](https://jambonz.vercel.app/kit-of-parts)
|
||||
|
||||
## Static data
|
||||
|
||||
Static data is being used to power Next.js pages using `yaml` and [getStaticProps](https://nextjs.org/docs/basic-features/data-fetching#getstaticprops-static-generation). Data files are in `/data/` and a simple JS utility for loading the data for static props is in [/lib/data.js](./lib/data.js).
|
||||
|
||||

|
||||
|
||||
# [Nextra](https://nextra.vercel.app)
|
||||
|
||||
5
components/footer.js
Normal file
5
components/footer.js
Normal file
@@ -0,0 +1,5 @@
|
||||
export default function Footer({ siteData }) {
|
||||
return (
|
||||
<footer className="foot"></footer>
|
||||
);
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
import Link from 'next/link';
|
||||
import Head from 'next/head';
|
||||
import classNames from 'classnames';
|
||||
import * as Icons from 'react-feather';
|
||||
|
||||
@@ -43,8 +42,12 @@ export function MXS({ children }) {
|
||||
return <div className="mxs">{children}</div>;
|
||||
}
|
||||
|
||||
export function Hero({ children }) {
|
||||
return <div className="hero wrap">{children}</div>;
|
||||
}
|
||||
|
||||
// Extra {props} get passed to the <a> element
|
||||
export function Button({ children, href, style = 'fill', subStyle = null, ...props}) {
|
||||
export function Button({ children, href, style = 'fill', subStyle = null, ...props }) {
|
||||
const classes = {
|
||||
'btn': true,
|
||||
[`btn--${style}`]: true,
|
||||
@@ -64,7 +67,7 @@ export function Button({ children, href, style = 'fill', subStyle = null, ...pro
|
||||
// Extra {props} get passed to the feather Component
|
||||
// See react-feather for all 286 icons available
|
||||
// https://github.com/feathericons/react-feather
|
||||
export function Icon({name, style = 'inline', subStyle = null, ...props}) {
|
||||
export function Icon({ name, style = 'inline', subStyle = null, ...props }) {
|
||||
const Component = Icons[name];
|
||||
const classes = {
|
||||
'icon': true,
|
||||
@@ -90,29 +93,4 @@ export function Icon({name, style = 'inline', subStyle = null, ...props}) {
|
||||
|
||||
// Inline icon
|
||||
return <Component {...props} />;
|
||||
}
|
||||
|
||||
export function Layout({children, title = "jambonz"}) {
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>{title}</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta
|
||||
name="description"
|
||||
content="The “bring your own everything” CPaaS"
|
||||
/>
|
||||
<link rel="apple-touch-icon" href="/logo192.png" />
|
||||
{/*
|
||||
manifest.json provides metadata used when your web app is installed on a
|
||||
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
||||
*/}
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
</Head>
|
||||
{children}
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -2,29 +2,13 @@ import Link from 'next/link';
|
||||
import Image from 'next/image';
|
||||
import { P, M, MS, MXS, H1, H2, H3, H4, H5, H6, Button, Icon } from './jambonz-ui';
|
||||
|
||||
export default function Kitofparts() {
|
||||
const text = 'jambonz is a self-hosted, “bring your own everything” open source CPaaS platform, developed by the creator of the drachtio open source sip server.';
|
||||
|
||||
export default function KitOfParts({pageData}) {
|
||||
return (
|
||||
<>
|
||||
{/* High-level design information */}
|
||||
<div className="wrap padr">
|
||||
<div className="pad">
|
||||
<img src="/svg/jambonz.svg" width="128" />
|
||||
<MS>Kit of Parts</MS>
|
||||
</div>
|
||||
<div className="wrap">
|
||||
<div className="pad">
|
||||
<H5>
|
||||
<div><strong>docs</strong></div>
|
||||
<div>
|
||||
<Link href="/docs">
|
||||
<a>
|
||||
<Icon name="Code" />
|
||||
<span>jambonz nextra docs</span>
|
||||
</a>
|
||||
</Link>
|
||||
</div>
|
||||
<div> </div>
|
||||
<div><strong>font</strong></div>
|
||||
<div>Objectivity (free, large family—16 styles)</div>
|
||||
<div>
|
||||
@@ -67,53 +51,53 @@ export default function Kitofparts() {
|
||||
</div>
|
||||
{/* Show black background style */}
|
||||
<div className="pad bg-black">
|
||||
<div className="wrap padr">
|
||||
<div className="wrap">
|
||||
<div className="wrap-text">
|
||||
<H1>{text}</H1>
|
||||
<H1>{pageData.text}</H1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="wrap padr">
|
||||
<div className="wrap">
|
||||
<div className="wrap-text pad">
|
||||
<H2>{text}</H2>
|
||||
<H2>{pageData.text}</H2>
|
||||
</div>
|
||||
</div>
|
||||
{/* Show pink background style */}
|
||||
<div className="pad bg-pink">
|
||||
<div className="wrap padr">
|
||||
<div className="wrap">
|
||||
<div className="wrap-text">
|
||||
<H3>{text}</H3>
|
||||
<H3>{pageData.text}</H3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="wrap padr">
|
||||
<div className="wrap">
|
||||
<div className="wrap-text pad">
|
||||
<H4>{text}</H4>
|
||||
<H4>{pageData.text}</H4>
|
||||
</div>
|
||||
</div>
|
||||
{/* Show grey background style */}
|
||||
<div className="pad bg-grey">
|
||||
<div className="wrap padr">
|
||||
<div className="wrap">
|
||||
<div className="wrap-text">
|
||||
<H5>{text}</H5>
|
||||
<H5>{pageData.text}</H5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="wrap padr">
|
||||
<div className="wrap">
|
||||
<div className="wrap-text pad">
|
||||
<H6>{text}</H6>
|
||||
<H6>{pageData.text}</H6>
|
||||
</div>
|
||||
<div className="wrap-text pad">
|
||||
<P>{text}</P>
|
||||
<P>{pageData.text}</P>
|
||||
</div>
|
||||
<div className="wrap-text pad">
|
||||
<M>{text}</M>
|
||||
<M>{pageData.text}</M>
|
||||
</div>
|
||||
<div className="wrap-text pad">
|
||||
<MS>{text}</MS>
|
||||
<MS>{pageData.text}</MS>
|
||||
</div>
|
||||
<div className="wrap-text pad">
|
||||
<MXS>{text}</MXS>
|
||||
<MXS>{pageData.text}</MXS>
|
||||
</div>
|
||||
<div className="pad">
|
||||
<Image src="/images/Jambonz_app_screenshot.png" width={1280 / 2} height={842 / 2} />
|
||||
@@ -167,7 +151,7 @@ export default function Kitofparts() {
|
||||
</div>
|
||||
{/* Show jambonz background style */}
|
||||
<div className="pad bg-jambonz">
|
||||
<div className="wrap padr">
|
||||
<div className="wrap">
|
||||
<Button href="#" target="_blank" subStyle="light">Footer button...</Button>
|
||||
</div>
|
||||
</div>
|
||||
32
components/layout.js
Normal file
32
components/layout.js
Normal file
@@ -0,0 +1,32 @@
|
||||
import Head from 'next/head';
|
||||
import Navi from './navi';
|
||||
import Footer from './footer';
|
||||
|
||||
export default function Layout({ children, siteData, title = "jambonz" }) {
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>{title}</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta
|
||||
name="description"
|
||||
content="The “bring your own everything” CPaaS"
|
||||
/>
|
||||
<link rel="apple-touch-icon" href="/logo192.png" />
|
||||
{/*
|
||||
manifest.json provides metadata used when your web app is installed on a
|
||||
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
||||
*/}
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
</Head>
|
||||
<Navi siteData={siteData} />
|
||||
<main>
|
||||
{children}
|
||||
</main>
|
||||
<Footer siteData={siteData} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
77
components/navi.js
Normal file
77
components/navi.js
Normal file
@@ -0,0 +1,77 @@
|
||||
import { useState } from 'react';
|
||||
import Link from 'next/link';
|
||||
import { useRouter } from 'next/router';
|
||||
import classNames from 'classnames';
|
||||
import { Button, Icon } from './jambonz-ui';
|
||||
|
||||
function NaviItem({obj}) {
|
||||
const router = useRouter();
|
||||
const classes = {
|
||||
navi__link: true,
|
||||
active: (router.route === obj.link),
|
||||
};
|
||||
|
||||
return (
|
||||
<li>
|
||||
<Link href={obj.link}>
|
||||
<a className={classNames(classes)}>
|
||||
{obj.label}
|
||||
</a>
|
||||
</Link>
|
||||
</li>
|
||||
);
|
||||
}
|
||||
|
||||
function NaviMobile({ active, handler, siteData }) {
|
||||
const classes = {
|
||||
'bg-jambonz': true,
|
||||
'wrap': true,
|
||||
'navi__mobile': true,
|
||||
'active': active,
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={classNames(classes)}>
|
||||
<div className="navi__mobile__head">
|
||||
<div className="navi__mobile__login">
|
||||
<Button href={siteData.navi.login.link} style="login" subStyle="white">{siteData.navi.login.label}</Button>
|
||||
</div>
|
||||
<div className="navi__mobile__icon" onClick={handler}>
|
||||
<Icon style="fill" subStyle="white" name="X" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default function Navi({ siteData }) {
|
||||
const [active, setActive] = useState(false);
|
||||
|
||||
const handleNavi = () => {
|
||||
setActive(!active);
|
||||
};
|
||||
|
||||
return (
|
||||
<nav className="navi">
|
||||
<div className="wrap navi__wrap">
|
||||
<Link href="/">
|
||||
<a className="navi__logo">
|
||||
<img src="/svg/jambonz.svg" width="128" />
|
||||
</a>
|
||||
</Link>
|
||||
<ul className="navi__links">
|
||||
{siteData.navi.links.map((obj) => {
|
||||
return <NaviItem key={obj.id} obj={obj} />
|
||||
})}
|
||||
</ul>
|
||||
<div className="navi__login">
|
||||
<Button href={siteData.navi.login.link} style="login">{siteData.navi.login.label}</Button>
|
||||
</div>
|
||||
<div className="navi__icon" onClick={handleNavi}>
|
||||
<Icon style="fill" name="Menu" />
|
||||
</div>
|
||||
</div>
|
||||
<NaviMobile active={active} handler={handleNavi} siteData={siteData} />
|
||||
</nav>
|
||||
);
|
||||
}
|
||||
2
data/home.yml
Normal file
2
data/home.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
h1: Build unique voice solutions, faster.
|
||||
cta: Sign up for free
|
||||
1
data/kop.yml
Normal file
1
data/kop.yml
Normal file
@@ -0,0 +1 @@
|
||||
text: jambonz is a self-hosted, “bring your own everything” open source CPaaS platform, developed by the creator of the drachtio open source sip server.
|
||||
2
data/pricing.yml
Normal file
2
data/pricing.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
h1: Simple, capacity-based pricing.
|
||||
cta: Contact us to get started
|
||||
36
data/site.yml
Normal file
36
data/site.yml
Normal file
@@ -0,0 +1,36 @@
|
||||
navi:
|
||||
login:
|
||||
label: Log In
|
||||
link: /#
|
||||
links:
|
||||
-
|
||||
label: Why jambonz
|
||||
link: /why
|
||||
id: why
|
||||
-
|
||||
label: For Developers
|
||||
link: /docs
|
||||
id: docs
|
||||
-
|
||||
label: Pricing
|
||||
link: /pricing
|
||||
id: pricing
|
||||
footer:
|
||||
email: support@jambonz.com
|
||||
links:
|
||||
-
|
||||
label: View on Github
|
||||
link: /#
|
||||
id: github
|
||||
-
|
||||
label: Join us on Slack
|
||||
link: /#
|
||||
id: slack
|
||||
-
|
||||
label: Privacy Policy
|
||||
link: /#
|
||||
id: privacy
|
||||
-
|
||||
label: Terms of Service
|
||||
link: /#
|
||||
id: terms
|
||||
2
data/why.yml
Normal file
2
data/why.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
h1: Why choose jambonz?
|
||||
cta: Get started for free
|
||||
17
lib/data.js
Normal file
17
lib/data.js
Normal file
@@ -0,0 +1,17 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const yamljs = require('yamljs');
|
||||
const dataDir = path.join(process.cwd(), 'data');
|
||||
|
||||
function _getData(key) {
|
||||
const fullPath = path.join(dataDir, `${key}.yml`);
|
||||
const fileContents = fs.readFileSync(fullPath, 'utf8');
|
||||
return yamljs.parse(fileContents);
|
||||
}
|
||||
|
||||
export function getData(key) {
|
||||
return {
|
||||
[key]: _getData(key),
|
||||
site: _getData('site'),
|
||||
};
|
||||
}
|
||||
@@ -14,14 +14,14 @@
|
||||
"dependencies": {
|
||||
"classnames": "^2.2.6",
|
||||
"env-cmd": "^10.1.0",
|
||||
"gray-matter": "^4.0.2",
|
||||
"next": "^10.0.8-canary.9",
|
||||
"nextra": "^0.4.1",
|
||||
"nextra-theme-docs": "^1.1.2",
|
||||
"react": "^17.0.1",
|
||||
"react-dom": "^17.0.1",
|
||||
"react-feather": "^2.0.9",
|
||||
"sass": "^1.32.8"
|
||||
"sass": "^1.32.8",
|
||||
"yamljs": "^0.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"prettier": "^2.0.5"
|
||||
|
||||
@@ -1,10 +1,23 @@
|
||||
import { Layout } from '../components/jambonz-ui';
|
||||
import Kitofparts from '../components/kitofparts';
|
||||
import Layout from '../components/layout';
|
||||
import { Hero, H1 } from '../components/jambonz-ui';
|
||||
import { getData } from '../lib/data';
|
||||
|
||||
export default function Home() {
|
||||
export default function Home({ data }) {
|
||||
return (
|
||||
<Layout>
|
||||
<Kitofparts />
|
||||
<Layout siteData={data.site}>
|
||||
<Hero>
|
||||
<H1>{data.home.h1}</H1>
|
||||
</Hero>
|
||||
</Layout>
|
||||
);
|
||||
}
|
||||
|
||||
export async function getStaticProps() {
|
||||
const data = getData('home');
|
||||
|
||||
return {
|
||||
props: {
|
||||
data,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
21
pages/kit-of-parts.js
Normal file
21
pages/kit-of-parts.js
Normal file
@@ -0,0 +1,21 @@
|
||||
import Layout from '../components/layout';
|
||||
import KitOfParts from '../components/kit-of-parts';
|
||||
import { getData } from '../lib/data';
|
||||
|
||||
export default function KOP({ data }) {
|
||||
return (
|
||||
<Layout siteData={data.site}>
|
||||
<KitOfParts pageData={data.kop} />
|
||||
</Layout>
|
||||
);
|
||||
}
|
||||
|
||||
export async function getStaticProps() {
|
||||
const data = getData('kop');
|
||||
|
||||
return {
|
||||
props: {
|
||||
data,
|
||||
},
|
||||
};
|
||||
}
|
||||
23
pages/pricing.js
Normal file
23
pages/pricing.js
Normal file
@@ -0,0 +1,23 @@
|
||||
import Layout from '../components/layout';
|
||||
import { Hero, H1 } from '../components/jambonz-ui';
|
||||
import { getData } from '../lib/data';
|
||||
|
||||
export default function Pricing({ data }) {
|
||||
return (
|
||||
<Layout siteData={data.site}>
|
||||
<Hero>
|
||||
<H1>{data.pricing.h1}</H1>
|
||||
</Hero>
|
||||
</Layout>
|
||||
);
|
||||
}
|
||||
|
||||
export async function getStaticProps() {
|
||||
const data = getData('pricing');
|
||||
|
||||
return {
|
||||
props: {
|
||||
data,
|
||||
},
|
||||
};
|
||||
}
|
||||
23
pages/why.js
Normal file
23
pages/why.js
Normal file
@@ -0,0 +1,23 @@
|
||||
import Layout from '../components/layout';
|
||||
import { Hero, H1 } from '../components/jambonz-ui';
|
||||
import { getData } from '../lib/data';
|
||||
|
||||
export default function Why({ data }) {
|
||||
return (
|
||||
<Layout siteData={data.site}>
|
||||
<Hero>
|
||||
<H1>{data.why.h1}</H1>
|
||||
</Hero>
|
||||
</Layout>
|
||||
);
|
||||
}
|
||||
|
||||
export async function getStaticProps() {
|
||||
const data = getData('why');
|
||||
|
||||
return {
|
||||
props: {
|
||||
data,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -25,6 +25,11 @@
|
||||
color: $jambonz;
|
||||
padding: 10px 26px 8px;
|
||||
|
||||
&--white {
|
||||
color: $white;
|
||||
border-color: $white;
|
||||
}
|
||||
|
||||
@media (max-width: $width-tablet-2) {
|
||||
font-size: $mxs-size;
|
||||
}
|
||||
|
||||
@@ -45,6 +45,14 @@
|
||||
&--teal {
|
||||
background-color: $teal;
|
||||
}
|
||||
|
||||
&--white {
|
||||
background-color: $white;
|
||||
|
||||
svg {
|
||||
stroke: $jambonz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
.wrap {
|
||||
max-width: 1440px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.wrap-text {
|
||||
.h1 {
|
||||
max-width: 1024px;
|
||||
@@ -44,9 +39,4 @@
|
||||
.pad {
|
||||
padding-top: 64px;
|
||||
padding-bottom: 64px;
|
||||
}
|
||||
|
||||
.padr {
|
||||
padding-left: 4.4444444444vw;
|
||||
padding-right: 4.4444444444vw;
|
||||
}
|
||||
13
styles/_layout.scss
Normal file
13
styles/_layout.scss
Normal file
@@ -0,0 +1,13 @@
|
||||
.wrap {
|
||||
max-width: calc(#{$width-max} + #{$width-padding} * 2);
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
padding-left: $width-padding;
|
||||
padding-right: $width-padding;
|
||||
}
|
||||
|
||||
.hero {
|
||||
padding-top: 96px;
|
||||
padding-bottom: 96px;
|
||||
text-align: center;
|
||||
}
|
||||
87
styles/_navi.scss
Normal file
87
styles/_navi.scss
Normal file
@@ -0,0 +1,87 @@
|
||||
.navi {
|
||||
padding: 16px 0;
|
||||
|
||||
.icon {
|
||||
width: $icon-size-3;
|
||||
height: $icon-size-3;
|
||||
|
||||
svg {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
&__wrap,
|
||||
&__links {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
&__links {
|
||||
transform: translateY(-4px);
|
||||
}
|
||||
|
||||
&__link {
|
||||
text-decoration: none;
|
||||
color: $charcoal;
|
||||
margin-left: 32px;
|
||||
|
||||
&.active {
|
||||
color: $jambonz;
|
||||
}
|
||||
}
|
||||
|
||||
&__icon,
|
||||
&__login {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
&__links,
|
||||
&__login {
|
||||
@media (max-width: $width-tablet-2) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
&__icon {
|
||||
display: none;
|
||||
line-height: 0;
|
||||
cursor: pointer;
|
||||
|
||||
@media (max-width: $width-tablet-2) {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&__mobile {
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
z-index: -1;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
transition: opacity $base-dur $base-ease,
|
||||
z-index $base-dur $base-ease;
|
||||
|
||||
&.active {
|
||||
pointer-events: auto;
|
||||
opacity: 1;
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
&__head {
|
||||
padding: 19px 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
&__icon {
|
||||
line-height: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,10 +5,11 @@ body {
|
||||
color: $charcoal;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $jambonz;
|
||||
}
|
||||
/* Buttons have their own inline svg/span styles */
|
||||
a:not(.btn) {
|
||||
color: $jambonz;
|
||||
|
||||
svg, span {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
|
||||
@@ -30,6 +30,7 @@ $mxs-size: 12px;
|
||||
*******************************************************************************/
|
||||
$icon-size-1: 48px;
|
||||
$icon-size-2: 40px;
|
||||
$icon-size-3: 36px;
|
||||
|
||||
/******************************************************************************
|
||||
* Sizes
|
||||
@@ -37,4 +38,11 @@ $icon-size-2: 40px;
|
||||
$width-max: 1440px;
|
||||
$width-tablet-1: 1024px;
|
||||
$width-tablet-2: 768px;
|
||||
$width-mobile: 640px;
|
||||
$width-mobile: 640px;
|
||||
$width-padding: 4.4444444444vw;
|
||||
|
||||
/******************************************************************************
|
||||
* Animation / transitions
|
||||
*******************************************************************************/
|
||||
$base-dur: 200ms;
|
||||
$base-ease: ease;
|
||||
@@ -28,6 +28,16 @@
|
||||
*******************************************************************************/
|
||||
@import 'backgrounds.scss';
|
||||
|
||||
/******************************************************************************
|
||||
* Layout
|
||||
*******************************************************************************/
|
||||
@import 'layout.scss';
|
||||
|
||||
/******************************************************************************
|
||||
* Navi
|
||||
*******************************************************************************/
|
||||
@import 'navi.scss';
|
||||
|
||||
/******************************************************************************
|
||||
* Kit of Parts
|
||||
*******************************************************************************/
|
||||
|
||||
85
yarn.lock
85
yarn.lock
@@ -522,6 +522,11 @@ bail@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776"
|
||||
integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==
|
||||
|
||||
balanced-match@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
||||
|
||||
base64-js@^1.0.2:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
|
||||
@@ -547,6 +552,14 @@ bn.js@^5.1.1:
|
||||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0"
|
||||
integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.11"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
|
||||
braces@~3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
|
||||
@@ -809,6 +822,11 @@ commondir@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
|
||||
integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
|
||||
|
||||
console-browserify@^1.1.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
|
||||
@@ -1104,6 +1122,11 @@ focus-visible@^5.1.0:
|
||||
resolved "https://registry.yarnpkg.com/focus-visible/-/focus-visible-5.1.0.tgz#4b9d40143b865f53eafbd93ca66672b3bf9e7b6a"
|
||||
integrity sha512-nPer0rjtzdZ7csVIu233P2cUm/ks/4aVSI+5KUkYrYpgA7ujgC3p6J7FtFU+AIMWwnwYQOB/yeiOITxFeYIXiw==
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
|
||||
|
||||
fsevents@~2.3.1:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
|
||||
@@ -1145,6 +1168,18 @@ glob-to-regexp@^0.4.1:
|
||||
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
|
||||
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
|
||||
|
||||
glob@^7.0.5:
|
||||
version "7.1.6"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "^3.0.4"
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
globals@^11.1.0:
|
||||
version "11.12.0"
|
||||
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
|
||||
@@ -1311,6 +1346,19 @@ ieee754@^1.1.4:
|
||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
|
||||
integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
|
||||
dependencies:
|
||||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
||||
inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
inherits@2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
|
||||
@@ -1321,11 +1369,6 @@ inherits@2.0.3:
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
||||
inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
inline-style-parser@0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
|
||||
@@ -1660,6 +1703,13 @@ minimalistic-crypto-utils@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
||||
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
|
||||
|
||||
minimatch@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimist@^1.2.0, minimist@^1.2.5:
|
||||
version "1.2.5"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
||||
@@ -1826,6 +1876,13 @@ object-assign@^4.1.1:
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
|
||||
|
||||
once@^1.3.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
|
||||
dependencies:
|
||||
wrappy "1"
|
||||
|
||||
os-browserify@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
|
||||
@@ -1911,6 +1968,11 @@ path-exists@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
|
||||
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
|
||||
|
||||
path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
|
||||
|
||||
path-key@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
||||
@@ -2857,6 +2919,11 @@ which@^2.0.1:
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
|
||||
|
||||
xtend@^4.0.0, xtend@^4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
|
||||
@@ -2867,6 +2934,14 @@ yallist@^2.1.2:
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
|
||||
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
|
||||
|
||||
yamljs@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b"
|
||||
integrity sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==
|
||||
dependencies:
|
||||
argparse "^1.0.7"
|
||||
glob "^7.0.5"
|
||||
|
||||
yocto-queue@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||
|
||||
Reference in New Issue
Block a user