mirror of
https://github.com/jakejarvis/jarv.is.git
synced 2025-10-30 03:56:01 -04:00
static header and footer were being re-rendered on every route change
This commit is contained in:
@@ -1,5 +0,0 @@
|
|||||||
.container {
|
|
||||||
max-width: 865px;
|
|
||||||
margin: 0 auto;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
import { NextSeo } from "next-seo";
|
|
||||||
|
|
||||||
import styles from "./Container.module.scss";
|
|
||||||
|
|
||||||
type Props = {
|
|
||||||
title?: string;
|
|
||||||
description?: string;
|
|
||||||
children: unknown;
|
|
||||||
};
|
|
||||||
|
|
||||||
const Container = ({ title, description, children }: Props) => {
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<NextSeo
|
|
||||||
title={title}
|
|
||||||
description={description}
|
|
||||||
openGraph={{
|
|
||||||
title: title,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<div className={styles.container}>{children}</div>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Container;
|
|
||||||
@@ -5,6 +5,12 @@
|
|||||||
background-color: var(--background-inner);
|
background-color: var(--background-inner);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 865px;
|
||||||
|
margin: 0 auto;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 768px) {
|
@media screen and (max-width: 768px) {
|
||||||
.main {
|
.main {
|
||||||
padding: 1.25em;
|
padding: 1.25em;
|
||||||
|
|||||||
@@ -1,13 +1,26 @@
|
|||||||
import Header from "./page-header/Header";
|
import { NextSeo } from "next-seo";
|
||||||
import Footer from "./page-footer/Footer";
|
|
||||||
|
|
||||||
import styles from "./Layout.module.scss";
|
import styles from "./Layout.module.scss";
|
||||||
|
|
||||||
const Layout = ({ children }) => (
|
type Props = {
|
||||||
|
title?: string;
|
||||||
|
description?: string;
|
||||||
|
children: unknown;
|
||||||
|
};
|
||||||
|
|
||||||
|
const Layout = ({ title, description, children }: Props) => (
|
||||||
<>
|
<>
|
||||||
<Header />
|
<NextSeo
|
||||||
<main className={styles.main}>{children}</main>
|
title={title}
|
||||||
<Footer />
|
description={description}
|
||||||
|
openGraph={{
|
||||||
|
title: title,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<main className={styles.main}>
|
||||||
|
<div className={styles.container}>{children}</div>
|
||||||
|
</main>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ const ThemeToggle = ({ className = "" }) => {
|
|||||||
// avoid hydration mismatch:
|
// avoid hydration mismatch:
|
||||||
// https://github.com/pacocoursey/next-themes#avoid-hydration-mismatch
|
// https://github.com/pacocoursey/next-themes#avoid-hydration-mismatch
|
||||||
useEffect(() => setMounted(true), []);
|
useEffect(() => setMounted(true), []);
|
||||||
if (!mounted) return null;
|
if (!mounted) {
|
||||||
|
// always return one of the bulbs just so there are never flashing layout shifts
|
||||||
|
return <BulbOffIcon className={`icon ${className}`} />;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ import { useRouter } from "next/router";
|
|||||||
import { ThemeProvider } from "next-themes";
|
import { ThemeProvider } from "next-themes";
|
||||||
import { DefaultSeo, SocialProfileJsonLd } from "next-seo";
|
import { DefaultSeo, SocialProfileJsonLd } from "next-seo";
|
||||||
import * as Fathom from "fathom-client";
|
import * as Fathom from "fathom-client";
|
||||||
|
import Header from "../components/page-header/Header";
|
||||||
|
import Footer from "../components/page-footer/Footer";
|
||||||
import * as config from "../lib/config";
|
import * as config from "../lib/config";
|
||||||
import type { AppProps } from "next/app";
|
import type { AppProps } from "next/app";
|
||||||
|
|
||||||
@@ -182,7 +184,9 @@ const App = ({ Component, pageProps }: AppProps) => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<ThemeProvider>
|
<ThemeProvider>
|
||||||
|
<Header />
|
||||||
<Component {...pageProps} />
|
<Component {...pageProps} />
|
||||||
|
<Footer />
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import Layout from "../components/Layout";
|
import Layout from "../components/Layout";
|
||||||
import Container from "../components/Container";
|
|
||||||
import Content from "../components/Content";
|
import Content from "../components/Content";
|
||||||
import PageTitle from "../components/page/PageTitle";
|
import PageTitle from "../components/page/PageTitle";
|
||||||
import Video from "../components/video/Video";
|
import Video from "../components/video/Video";
|
||||||
@@ -8,8 +7,7 @@ import { TapeIcon } from "../components/icons";
|
|||||||
import thumbnail from "../public/static/images/birthday/thumb.png";
|
import thumbnail from "../public/static/images/birthday/thumb.png";
|
||||||
|
|
||||||
const Birthday = () => (
|
const Birthday = () => (
|
||||||
<Layout>
|
<Layout
|
||||||
<Container
|
|
||||||
title="🎉 Cranky Birthday Boy on VHS Tape 📼"
|
title="🎉 Cranky Birthday Boy on VHS Tape 📼"
|
||||||
description="The origin of my hatred for the Happy Birthday song."
|
description="The origin of my hatred for the Happy Birthday song."
|
||||||
>
|
>
|
||||||
@@ -40,7 +38,6 @@ const Birthday = () => (
|
|||||||
controls={true}
|
controls={true}
|
||||||
/>
|
/>
|
||||||
</Content>
|
</Content>
|
||||||
</Container>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import Layout from "../components/Layout";
|
import Layout from "../components/Layout";
|
||||||
import Container from "../components/Container";
|
|
||||||
import Content from "../components/Content";
|
import Content from "../components/Content";
|
||||||
import PageTitle from "../components/page/PageTitle";
|
import PageTitle from "../components/page/PageTitle";
|
||||||
import { BotIcon } from "../components/icons";
|
import { BotIcon } from "../components/icons";
|
||||||
@@ -8,8 +7,7 @@ import { BotIcon } from "../components/icons";
|
|||||||
import cliImg from "../public/static/images/cli/screenshot.png";
|
import cliImg from "../public/static/images/cli/screenshot.png";
|
||||||
|
|
||||||
const CLI = () => (
|
const CLI = () => (
|
||||||
<Layout>
|
<Layout title="CLI" description="AKA, the most useless Node module ever published, in history, by anyone, ever.">
|
||||||
<Container title="CLI" description="AKA, the most useless Node module ever published, in history, by anyone, ever.">
|
|
||||||
<PageTitle
|
<PageTitle
|
||||||
title={
|
title={
|
||||||
<>
|
<>
|
||||||
@@ -84,7 +82,6 @@ const CLI = () => (
|
|||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</Content>
|
</Content>
|
||||||
</Container>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
import Layout from "../components/Layout";
|
import Layout from "../components/Layout";
|
||||||
import Container from "../components/Container";
|
|
||||||
import PageTitle from "../components/page/PageTitle";
|
import PageTitle from "../components/page/PageTitle";
|
||||||
import ContactForm from "../components/contact/ContactForm";
|
import ContactForm from "../components/contact/ContactForm";
|
||||||
import { MailIcon, LockIcon } from "../components/icons";
|
import { MailIcon, LockIcon } from "../components/icons";
|
||||||
|
|
||||||
const Contact = () => (
|
const Contact = () => (
|
||||||
<Layout>
|
<Layout title="Contact Me">
|
||||||
<Container title="Contact Me">
|
|
||||||
<PageTitle
|
<PageTitle
|
||||||
title={
|
title={
|
||||||
<>
|
<>
|
||||||
@@ -52,7 +50,6 @@ const Contact = () => (
|
|||||||
white-space: normal;
|
white-space: normal;
|
||||||
}
|
}
|
||||||
`}</style>
|
`}</style>
|
||||||
</Container>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import Layout from "../components/Layout";
|
import Layout from "../components/Layout";
|
||||||
import Container from "../components/Container";
|
|
||||||
import Content from "../components/Content";
|
import Content from "../components/Content";
|
||||||
import PageTitle from "../components/page/PageTitle";
|
import PageTitle from "../components/page/PageTitle";
|
||||||
import Video from "../components/video/Video";
|
import Video from "../components/video/Video";
|
||||||
@@ -7,8 +6,7 @@ import Video from "../components/video/Video";
|
|||||||
import thumbnail from "../public/static/images/hillary/thumb.png";
|
import thumbnail from "../public/static/images/hillary/thumb.png";
|
||||||
|
|
||||||
const Hillary = () => (
|
const Hillary = () => (
|
||||||
<Layout>
|
<Layout
|
||||||
<Container
|
|
||||||
title="My Brief Apperance in Hillary Clinton's DNC Video"
|
title="My Brief Apperance in Hillary Clinton's DNC Video"
|
||||||
description="My brief apperance in one of Hillary Clinton's 2016 DNC convention videos on substance abuse."
|
description="My brief apperance in one of Hillary Clinton's 2016 DNC convention videos on substance abuse."
|
||||||
>
|
>
|
||||||
@@ -70,7 +68,6 @@ const Hillary = () => (
|
|||||||
}
|
}
|
||||||
`}</style>
|
`}</style>
|
||||||
</Content>
|
</Content>
|
||||||
</Container>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import Link from "next/link";
|
|||||||
import isAbsoluteUrl from "is-absolute-url";
|
import isAbsoluteUrl from "is-absolute-url";
|
||||||
import { colord } from "colord";
|
import { colord } from "colord";
|
||||||
import Layout from "../components/Layout";
|
import Layout from "../components/Layout";
|
||||||
import Container from "../components/Container";
|
|
||||||
import { WaveIcon, LockIcon } from "../components/icons";
|
import { WaveIcon, LockIcon } from "../components/icons";
|
||||||
|
|
||||||
type ColorLinkProps = {
|
type ColorLinkProps = {
|
||||||
@@ -42,7 +41,6 @@ const ColorLink = ({ href, title, lightColor, darkColor, external = false, child
|
|||||||
|
|
||||||
const Index = () => (
|
const Index = () => (
|
||||||
<Layout>
|
<Layout>
|
||||||
<Container>
|
|
||||||
<h1>
|
<h1>
|
||||||
Hi there! I'm Jake.{" "}
|
Hi there! I'm Jake.{" "}
|
||||||
<span className="wave">
|
<span className="wave">
|
||||||
@@ -378,7 +376,6 @@ const Index = () => (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
`}</style>
|
`}</style>
|
||||||
</Container>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import Layout from "../components/Layout";
|
import Layout from "../components/Layout";
|
||||||
import Container from "../components/Container";
|
|
||||||
import Content from "../components/Content";
|
import Content from "../components/Content";
|
||||||
import PageTitle from "../components/page/PageTitle";
|
import PageTitle from "../components/page/PageTitle";
|
||||||
import Video from "../components/video/Video";
|
import Video from "../components/video/Video";
|
||||||
@@ -8,8 +7,7 @@ import thumbnail from "../public/static/images/leo/thumb.png";
|
|||||||
|
|
||||||
const Leo = () => (
|
const Leo = () => (
|
||||||
<>
|
<>
|
||||||
<Layout>
|
<Layout
|
||||||
<Container
|
|
||||||
title='Facebook App on "The Lab with Leo Laporte"'
|
title='Facebook App on "The Lab with Leo Laporte"'
|
||||||
description="Powncer app featured in Leo Laporte's TechTV show."
|
description="Powncer app featured in Leo Laporte's TechTV show."
|
||||||
>
|
>
|
||||||
@@ -71,7 +69,6 @@ const Leo = () => (
|
|||||||
}
|
}
|
||||||
`}</style>
|
`}</style>
|
||||||
</Content>
|
</Content>
|
||||||
</Container>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
import Layout from "../components/Layout";
|
import Layout from "../components/Layout";
|
||||||
import Container from "../components/Container";
|
|
||||||
import Content from "../components/Content";
|
import Content from "../components/Content";
|
||||||
import PageTitle from "../components/page/PageTitle";
|
import PageTitle from "../components/page/PageTitle";
|
||||||
import { LicenseIcon } from "../components/icons";
|
import { LicenseIcon } from "../components/icons";
|
||||||
|
|
||||||
const License = () => (
|
const License = () => (
|
||||||
<Layout>
|
<Layout title="License">
|
||||||
<Container title="License">
|
|
||||||
<PageTitle
|
<PageTitle
|
||||||
title={
|
title={
|
||||||
<>
|
<>
|
||||||
@@ -68,28 +66,28 @@ const License = () => (
|
|||||||
legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other
|
legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other
|
||||||
relationship. Creative Commons makes its licenses and related information available on an "as-is" basis.
|
relationship. Creative Commons makes its licenses and related information available on an "as-is" basis.
|
||||||
Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and
|
Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and
|
||||||
conditions, or any related information. Creative Commons disclaims all liability for damages resulting
|
conditions, or any related information. Creative Commons disclaims all liability for damages resulting from
|
||||||
from their use to the fullest extent possible.
|
their use to the fullest extent possible.
|
||||||
</em>
|
</em>
|
||||||
</p>
|
</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<h3>Using Creative Commons Public Licenses</h3>
|
<h3>Using Creative Commons Public Licenses</h3>
|
||||||
<p>
|
<p>
|
||||||
Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights
|
Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights
|
||||||
holders may use to share original works of authorship and other material subject to copyright and certain
|
holders may use to share original works of authorship and other material subject to copyright and certain other
|
||||||
other rights specified in the public license below. The following considerations are for informational
|
rights specified in the public license below. The following considerations are for informational purposes only,
|
||||||
purposes only, are not exhaustive, and do not form part of our licenses.
|
are not exhaustive, and do not form part of our licenses.
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
<strong>Considerations for licensors:</strong> Our public licenses are intended for use by those
|
<strong>Considerations for licensors:</strong> Our public licenses are intended for use by those authorized
|
||||||
authorized to give the public permission to use material in ways otherwise restricted by copyright and
|
to give the public permission to use material in ways otherwise restricted by copyright and certain other
|
||||||
certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and
|
rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the
|
||||||
conditions of the license they choose before applying it. Licensors should also secure all rights
|
license they choose before applying it. Licensors should also secure all rights necessary before applying
|
||||||
necessary before applying our licenses so that the public can reuse the material as expected. Licensors
|
our licenses so that the public can reuse the material as expected. Licensors should clearly mark any
|
||||||
should clearly mark any material not subject to the license. This includes other CC-licensed material, or
|
material not subject to the license. This includes other CC-licensed material, or material used under an
|
||||||
material used under an exception or limitation to copyright.{" "}
|
exception or limitation to copyright.{" "}
|
||||||
<a
|
<a
|
||||||
href="https://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors"
|
href="https://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
@@ -104,12 +102,12 @@ const License = () => (
|
|||||||
<p>
|
<p>
|
||||||
<strong>Considerations for the public:</strong> By using one of our public licenses, a licensor grants the
|
<strong>Considerations for the public:</strong> By using one of our public licenses, a licensor grants the
|
||||||
public permission to use the licensed material under specified terms and conditions. If the licensor's
|
public permission to use the licensed material under specified terms and conditions. If the licensor's
|
||||||
permission is not necessary for any reason–for example, because of any applicable exception or limitation
|
permission is not necessary for any reason–for example, because of any applicable exception or limitation to
|
||||||
to copyright–then that use is not regulated by the license. Our licenses grant only permissions under
|
copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright
|
||||||
copyright and certain other rights that a licensor has authority to grant. Use of the licensed material
|
and certain other rights that a licensor has authority to grant. Use of the licensed material may still be
|
||||||
may still be restricted for other reasons, including because others have copyright or other rights in the
|
restricted for other reasons, including because others have copyright or other rights in the material. A
|
||||||
material. A licensor may make special requests, such as asking that all changes be marked or described.
|
licensor may make special requests, such as asking that all changes be marked or described. Although not
|
||||||
Although not required by our licenses, you are encouraged to respect those requests where reasonable.{" "}
|
required by our licenses, you are encouraged to respect those requests where reasonable.{" "}
|
||||||
<a
|
<a
|
||||||
href="https://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees"
|
href="https://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
@@ -123,19 +121,18 @@ const License = () => (
|
|||||||
</ul>
|
</ul>
|
||||||
<h3>Licensed Rights</h3>
|
<h3>Licensed Rights</h3>
|
||||||
<p>
|
<p>
|
||||||
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and
|
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions
|
||||||
conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the
|
of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this
|
||||||
extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in
|
Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your
|
||||||
consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in
|
acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits
|
||||||
consideration of benefits the Licensor receives from making the Licensed Material available under these terms
|
the Licensor receives from making the Licensed Material available under these terms and conditions.
|
||||||
and conditions.
|
|
||||||
</p>
|
</p>
|
||||||
<h3>Section 1 – Definitions.</h3>
|
<h3>Section 1 – Definitions.</h3>
|
||||||
<p>
|
<p>
|
||||||
a. <strong>Adapted Material</strong> means material subject to Copyright and Similar Rights that is derived
|
a. <strong>Adapted Material</strong> means material subject to Copyright and Similar Rights that is derived from
|
||||||
from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged,
|
or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged,
|
||||||
transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights
|
transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held
|
||||||
held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work,
|
by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work,
|
||||||
performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in
|
performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in
|
||||||
timed relation with a moving image.
|
timed relation with a moving image.
|
||||||
</p>
|
</p>
|
||||||
@@ -159,13 +156,13 @@ const License = () => (
|
|||||||
limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
|
limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
f. <strong>Licensed Material</strong> means the artistic or literary work, database, or other material to
|
f. <strong>Licensed Material</strong> means the artistic or literary work, database, or other material to which
|
||||||
which the Licensor applied this Public License.
|
the Licensor applied this Public License.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
g. <strong>Licensed Rights</strong> means the rights granted to You subject to the terms and conditions of
|
g. <strong>Licensed Rights</strong> means the rights granted to You subject to the terms and conditions of this
|
||||||
this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the
|
Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed
|
||||||
Licensed Material and that the Licensor has authority to license.
|
Material and that the Licensor has authority to license.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
h. <strong>Licensor</strong> means the individual(s) or entity(ies) granting rights under this Public License.
|
h. <strong>Licensor</strong> means the individual(s) or entity(ies) granting rights under this Public License.
|
||||||
@@ -178,12 +175,12 @@ const License = () => (
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
j. <strong>Sui Generis Database Rights</strong> means rights other than copyright resulting from Directive
|
j. <strong>Sui Generis Database Rights</strong> means rights other than copyright resulting from Directive
|
||||||
96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases,
|
96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as
|
||||||
as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
|
amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
k. <strong>You</strong> means the individual or entity exercising the Licensed Rights under this Public
|
k. <strong>You</strong> means the individual or entity exercising the Licensed Rights under this Public License.{" "}
|
||||||
License. <strong>Your</strong> has a corresponding meaning.
|
<strong>Your</strong> has a corresponding meaning.
|
||||||
</p>
|
</p>
|
||||||
<h3>Section 2 – Scope.</h3>
|
<h3>Section 2 – Scope.</h3>
|
||||||
<p>
|
<p>
|
||||||
@@ -216,13 +213,13 @@ const License = () => (
|
|||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
<strong>Media and formats; technical modifications allowed.</strong> The Licensor authorizes You to
|
<strong>Media and formats; technical modifications allowed.</strong> The Licensor authorizes You to exercise
|
||||||
exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make
|
the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical
|
||||||
technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or
|
modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to
|
||||||
authority to forbid You from making technical modifications necessary to exercise the Licensed Rights,
|
forbid You from making technical modifications necessary to exercise the Licensed Rights, including
|
||||||
including technical modifications necessary to circumvent Effective Technological Measures. For purposes
|
technical modifications necessary to circumvent Effective Technological Measures. For purposes of this
|
||||||
of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces
|
Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted
|
||||||
Adapted Material.
|
Material.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
@@ -236,16 +233,16 @@ const License = () => (
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
B. <strong>No downstream restrictions.</strong> You may not offer or impose any additional or different
|
B. <strong>No downstream restrictions.</strong> You may not offer or impose any additional or different
|
||||||
terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing
|
terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so
|
||||||
so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
|
restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
<strong>No endorsement.</strong> Nothing in this Public License constitutes or may be construed as
|
<strong>No endorsement.</strong> Nothing in this Public License constitutes or may be construed as
|
||||||
permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with,
|
permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or
|
||||||
or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive
|
sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution
|
||||||
attribution as provided in Section 3(a)(1)(A)(i).
|
as provided in Section 3(a)(1)(A)(i).
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
@@ -258,10 +255,10 @@ const License = () => (
|
|||||||
<ol>
|
<ol>
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
Moral rights, such as the right of integrity, are not licensed under this Public License, nor are
|
Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity,
|
||||||
publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor
|
privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives
|
||||||
waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to
|
and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow
|
||||||
allow You to exercise the Licensed Rights, but not otherwise.
|
You to exercise the Licensed Rights, but not otherwise.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
@@ -269,10 +266,10 @@ const License = () => (
|
|||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of
|
To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the
|
||||||
the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable
|
Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory
|
||||||
statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to
|
or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such
|
||||||
collect such royalties.
|
royalties.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
@@ -301,8 +298,8 @@ const License = () => (
|
|||||||
and
|
and
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the
|
C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI
|
||||||
URI or hyperlink to, this Public License.
|
or hyperlink to, this Public License.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
@@ -330,17 +327,17 @@ const License = () => (
|
|||||||
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
|
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share
|
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all
|
||||||
all or a substantial portion of the contents of the database;
|
or a substantial portion of the contents of the database;
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
b. if You include all or a substantial portion of the database contents in a database in which You have Sui
|
b. if You include all or a substantial portion of the database contents in a database in which You have Sui
|
||||||
Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its
|
Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual
|
||||||
individual contents) is Adapted Material; and
|
contents) is Adapted Material; and
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the
|
c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents
|
||||||
contents of the database.
|
of the database.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public
|
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public
|
||||||
@@ -353,20 +350,20 @@ const License = () => (
|
|||||||
Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the
|
Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the
|
||||||
Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning
|
Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning
|
||||||
the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation,
|
the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation,
|
||||||
warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent
|
warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or
|
||||||
or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable.
|
other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where
|
||||||
Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
|
disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
|
||||||
</strong>
|
</strong>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
b.{" "}
|
b.{" "}
|
||||||
<strong>
|
<strong>
|
||||||
To the extent possible, in no event will the Licensor be liable to You on any legal theory (including,
|
To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without
|
||||||
without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential,
|
limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive,
|
||||||
punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use
|
exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the
|
||||||
of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs,
|
Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses,
|
||||||
expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may
|
or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply
|
||||||
not apply to You.
|
to You.
|
||||||
</strong>
|
</strong>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@@ -402,8 +399,8 @@ const License = () => (
|
|||||||
<p>d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.</p>
|
<p>d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.</p>
|
||||||
<h3>Section 7 – Other Terms and Conditions.</h3>
|
<h3>Section 7 – Other Terms and Conditions.</h3>
|
||||||
<p>
|
<p>
|
||||||
a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You
|
a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless
|
||||||
unless expressly agreed.
|
expressly agreed.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are
|
b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are
|
||||||
@@ -433,8 +430,8 @@ const License = () => (
|
|||||||
<blockquote>
|
<blockquote>
|
||||||
<p>
|
<p>
|
||||||
Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply
|
Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply
|
||||||
one of its public licenses to material it publishes and in those instances will be considered the
|
one of its public licenses to material it publishes and in those instances will be considered the "Licensor."
|
||||||
"Licensor." The text of the Creative Commons public licenses is dedicated to the public domain under the{" "}
|
The text of the Creative Commons public licenses is dedicated to the public domain under the{" "}
|
||||||
<a
|
<a
|
||||||
href="https://creativecommons.org/publicdomain/zero/1.0/legalcode"
|
href="https://creativecommons.org/publicdomain/zero/1.0/legalcode"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
@@ -442,16 +439,16 @@ const License = () => (
|
|||||||
>
|
>
|
||||||
<em>CC0 Public Domain Dedication</em>
|
<em>CC0 Public Domain Dedication</em>
|
||||||
</a>
|
</a>
|
||||||
. Except for the limited purpose of indicating that material is shared under a Creative Commons public
|
. Except for the limited purpose of indicating that material is shared under a Creative Commons public license
|
||||||
license or as otherwise permitted by the Creative Commons policies published at{" "}
|
or as otherwise permitted by the Creative Commons policies published at{" "}
|
||||||
<a href="https://creativecommons.org/policies" target="_blank" rel="noopener noreferrer">
|
<a href="https://creativecommons.org/policies" target="_blank" rel="noopener noreferrer">
|
||||||
creativecommons.org/policies
|
creativecommons.org/policies
|
||||||
</a>
|
</a>
|
||||||
, Creative Commons does not authorize the use of the trademark "Creative Commons" or any other trademark or
|
, Creative Commons does not authorize the use of the trademark "Creative Commons" or any other trademark or
|
||||||
logo of Creative Commons without its prior written consent including, without limitation, in connection with
|
logo of Creative Commons without its prior written consent including, without limitation, in connection with
|
||||||
any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or
|
any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or
|
||||||
agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form
|
agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part
|
||||||
part of the public licenses.
|
of the public licenses.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Creative Commons may be contacted at{" "}
|
Creative Commons may be contacted at{" "}
|
||||||
@@ -462,7 +459,6 @@ const License = () => (
|
|||||||
</p>
|
</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</Content>
|
</Content>
|
||||||
</Container>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import { MDXRemote } from "next-mdx-remote";
|
|||||||
import { serialize } from "next-mdx-remote/serialize";
|
import { serialize } from "next-mdx-remote/serialize";
|
||||||
import { NextSeo, ArticleJsonLd } from "next-seo";
|
import { NextSeo, ArticleJsonLd } from "next-seo";
|
||||||
import Layout from "../../components/Layout";
|
import Layout from "../../components/Layout";
|
||||||
import Container from "../../components/Container";
|
|
||||||
import Content from "../../components/Content";
|
import Content from "../../components/Content";
|
||||||
import Meta from "../../components/notes/Meta";
|
import Meta from "../../components/notes/Meta";
|
||||||
import mdxComponents from "../../components/mdxComponents";
|
import mdxComponents from "../../components/mdxComponents";
|
||||||
@@ -55,14 +54,12 @@ const Note = ({ frontMatter, source }) => (
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<Layout>
|
<Layout>
|
||||||
<Container>
|
|
||||||
<Meta {...frontMatter} />
|
<Meta {...frontMatter} />
|
||||||
<Content>
|
<Content>
|
||||||
<div className="markdown">
|
<div className="markdown">
|
||||||
<MDXRemote {...source} components={mdxComponents} />
|
<MDXRemote {...source} components={mdxComponents} />
|
||||||
</div>
|
</div>
|
||||||
</Content>
|
</Content>
|
||||||
</Container>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,15 +1,12 @@
|
|||||||
import { format } from "date-fns";
|
import { format } from "date-fns";
|
||||||
import Layout from "../../components/Layout";
|
import Layout from "../../components/Layout";
|
||||||
import Container from "../../components/Container";
|
|
||||||
import List from "../../components/notes/List";
|
import List from "../../components/notes/List";
|
||||||
import { getAllNotes } from "../../lib/parse-notes";
|
import { getAllNotes } from "../../lib/parse-notes";
|
||||||
import type { GetStaticProps } from "next";
|
import type { GetStaticProps } from "next";
|
||||||
|
|
||||||
const Notes = ({ notesByYear }) => (
|
const Notes = ({ notesByYear }) => (
|
||||||
<Layout>
|
<Layout title="Notes" description="Recent posts by Jake Jarvis.">
|
||||||
<Container title="Notes" description="Recent posts by Jake Jarvis.">
|
|
||||||
<List notesByYear={notesByYear} />
|
<List notesByYear={notesByYear} />
|
||||||
</Container>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import Layout from "../components/Layout";
|
import Layout from "../components/Layout";
|
||||||
import Container from "../components/Container";
|
|
||||||
import Content from "../components/Content";
|
import Content from "../components/Content";
|
||||||
import PageTitle from "../components/page/PageTitle";
|
import PageTitle from "../components/page/PageTitle";
|
||||||
import { FloppyIcon, SirenIcon } from "../components/icons";
|
import { FloppyIcon, SirenIcon } from "../components/icons";
|
||||||
@@ -23,8 +22,7 @@ import img_2018_04 from "../public/static/images/previously/2018_04.png";
|
|||||||
|
|
||||||
const Previously = () => (
|
const Previously = () => (
|
||||||
<>
|
<>
|
||||||
<Layout>
|
<Layout
|
||||||
<Container
|
|
||||||
title="Previously on..."
|
title="Previously on..."
|
||||||
description="An incredibly embarrassing and somewhat painful down of this site's memory lane..."
|
description="An incredibly embarrassing and somewhat painful down of this site's memory lane..."
|
||||||
>
|
>
|
||||||
@@ -199,7 +197,6 @@ const Previously = () => (
|
|||||||
</figcaption>
|
</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</Content>
|
</Content>
|
||||||
</Container>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
<style jsx global>{`
|
<style jsx global>{`
|
||||||
body {
|
body {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import Layout from "../components/Layout";
|
import Layout from "../components/Layout";
|
||||||
import Container from "../components/Container";
|
|
||||||
import Content from "../components/Content";
|
import Content from "../components/Content";
|
||||||
import PageTitle from "../components/page/PageTitle";
|
import PageTitle from "../components/page/PageTitle";
|
||||||
import { PrivacyIcon } from "../components/icons";
|
import { PrivacyIcon } from "../components/icons";
|
||||||
@@ -9,8 +8,7 @@ import { PrivacyIcon } from "../components/icons";
|
|||||||
import faunaImg from "../public/static/images/privacy/fauna_hits.png";
|
import faunaImg from "../public/static/images/privacy/fauna_hits.png";
|
||||||
|
|
||||||
const Privacy = () => (
|
const Privacy = () => (
|
||||||
<Layout>
|
<Layout title="Privacy">
|
||||||
<Container title="Privacy">
|
|
||||||
<PageTitle
|
<PageTitle
|
||||||
title={
|
title={
|
||||||
<>
|
<>
|
||||||
@@ -213,7 +211,6 @@ const Privacy = () => (
|
|||||||
, for what it's worth. (A few cents, probably... 💰)
|
, for what it's worth. (A few cents, probably... 💰)
|
||||||
</p>
|
</p>
|
||||||
</Content>
|
</Content>
|
||||||
</Container>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,12 @@
|
|||||||
import { graphql } from "@octokit/graphql";
|
import { graphql } from "@octokit/graphql";
|
||||||
import Layout from "../components/Layout";
|
import Layout from "../components/Layout";
|
||||||
import Container from "../components/Container";
|
|
||||||
import PageTitle from "../components/page/PageTitle";
|
import PageTitle from "../components/page/PageTitle";
|
||||||
import RepoCard from "../components/projects/RepoCard";
|
import RepoCard from "../components/projects/RepoCard";
|
||||||
import { ProjectsIcon } from "../components/icons";
|
import { ProjectsIcon } from "../components/icons";
|
||||||
import type { GetStaticProps } from "next";
|
import type { GetStaticProps } from "next";
|
||||||
|
|
||||||
const Projects = ({ repos }) => (
|
const Projects = ({ repos }) => (
|
||||||
<Layout>
|
<Layout title="Projects">
|
||||||
<Container title="Projects">
|
|
||||||
<PageTitle
|
<PageTitle
|
||||||
title={
|
title={
|
||||||
<>
|
<>
|
||||||
@@ -52,7 +50,6 @@ const Projects = ({ repos }) => (
|
|||||||
}
|
}
|
||||||
`}</style>
|
`}</style>
|
||||||
</p>
|
</p>
|
||||||
</Container>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import Layout from "../components/Layout";
|
import Layout from "../components/Layout";
|
||||||
import Container from "../components/Container";
|
|
||||||
import Content from "../components/Content";
|
import Content from "../components/Content";
|
||||||
import PageTitle from "../components/page/PageTitle";
|
import PageTitle from "../components/page/PageTitle";
|
||||||
import { LaptopIcon } from "../components/icons";
|
import { LaptopIcon } from "../components/icons";
|
||||||
@@ -9,8 +8,7 @@ import { LaptopIcon } from "../components/icons";
|
|||||||
import desktopImg from "../public/static/images/uses/bigsur.png";
|
import desktopImg from "../public/static/images/uses/bigsur.png";
|
||||||
|
|
||||||
const Uses = () => (
|
const Uses = () => (
|
||||||
<Layout>
|
<Layout title="/uses" description="Things I use daily.">
|
||||||
<Container title="/uses" description="Things I use daily.">
|
|
||||||
<PageTitle
|
<PageTitle
|
||||||
title={
|
title={
|
||||||
<>
|
<>
|
||||||
@@ -191,11 +189,7 @@ const Uses = () => (
|
|||||||
</a>
|
</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a href="https://github.com/zsh-users/zsh-autosuggestions" target="_blank" rel="noopener noreferrer">
|
||||||
href="https://github.com/zsh-users/zsh-autosuggestions"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>
|
|
||||||
zsh-autosuggestions
|
zsh-autosuggestions
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -417,11 +411,7 @@ const Uses = () => (
|
|||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
Switched from VMware Fusion when Parallels beat them to the punch with{" "}
|
Switched from VMware Fusion when Parallels beat them to the punch with{" "}
|
||||||
<a
|
<a href="https://www.parallels.com/blogs/parallels-desktop-m1/" target="_blank" rel="noopener noreferrer">
|
||||||
href="https://www.parallels.com/blogs/parallels-desktop-m1/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>
|
|
||||||
M1 support
|
M1 support
|
||||||
</a>
|
</a>
|
||||||
.
|
.
|
||||||
@@ -434,8 +424,8 @@ const Uses = () => (
|
|||||||
</a>
|
</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
For connecting to remote servers and my <a href="#home">"homelab"</a> without exposing ports to the
|
For connecting to remote servers and my <a href="#home">"homelab"</a> without exposing ports to the world.
|
||||||
world. Highly recommended!
|
Highly recommended!
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -451,11 +441,7 @@ const Uses = () => (
|
|||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
Still on the $20/month{" "}
|
Still on the $20/month{" "}
|
||||||
<a
|
<a href="https://www.adobe.com/creativecloud/buy/students.html" target="_blank" rel="noopener noreferrer">
|
||||||
href="https://www.adobe.com/creativecloud/buy/students.html"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>
|
|
||||||
Student Plan
|
Student Plan
|
||||||
</a>
|
</a>
|
||||||
, somehow. 🤫 Will need to re-evaulate once I'm kicked off; it's hard to justify spending almost 3x
|
, somehow. 🤫 Will need to re-evaulate once I'm kicked off; it's hard to justify spending almost 3x
|
||||||
@@ -1084,7 +1070,6 @@ const Uses = () => (
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</Content>
|
</Content>
|
||||||
</Container>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user