Skip to content

Commit 6070fc2

Browse files
committed
Update mission page
1 parent 7ed84d9 commit 6070fc2

File tree

9 files changed

+279
-170
lines changed

9 files changed

+279
-170
lines changed

src/components/PageHeader.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ import styles from "styles/components/PageHeader.module.scss";
44
export const PageHeader: React.FC<{
55
title: React.ReactNode;
66
subtitle?: React.ReactNode;
7+
center?: boolean;
78
className?: string;
8-
}> = ({ title, subtitle, className }) => {
9+
}> = ({ title, subtitle, center, className }) => {
910
return (
10-
<header className={clsx(styles.page_header, className)}>
11+
<header className={clsx(styles.page_header, center && styles["page_header--center"], className)}>
1112
<h1 className={styles.page_header__title}>{title}</h1>
1213
{subtitle && <h2 className={styles.page_header__subtitle}>{subtitle}</h2>}
1314
<hr className="divider" />

src/pages/_app.tsx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import Router from "next/router";
22
import Script from "next/script";
33
import NProgress from "nprogress";
4-
import smartquotes from 'smartquotes';
4+
import smartquotes from "smartquotes";
55

6-
import { IBM_Plex_Mono, Inter } from "next/font/google";
6+
import { IBM_Plex_Mono, Inter, Noto_Serif } from "next/font/google";
77

88
export const inter = Inter({ subsets: ["latin"], display: "swap" });
9+
export const noto = Noto_Serif({ subsets: ["latin"], display: "swap" });
910
export const mono = IBM_Plex_Mono({
1011
weight: ["400", "700"],
1112
style: ["normal", "italic"],
@@ -31,6 +32,7 @@ export default function MyApp({ Component, pageProps }) {
3132
:root {
3233
--font-inter: ${inter.style.fontFamily};
3334
--font-mono: ${mono.style.fontFamily};
35+
--font-noto: ${noto.style.fontFamily};
3436
}
3537
`}</style>
3638

@@ -40,8 +42,16 @@ export default function MyApp({ Component, pageProps }) {
4042
src="https://plausible.io/js/script.js"
4143
/>
4244

43-
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#2173aa" />
44-
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#2c3e50" />
45+
<meta
46+
name="theme-color"
47+
media="(prefers-color-scheme: light)"
48+
content="#2173aa"
49+
/>
50+
<meta
51+
name="theme-color"
52+
media="(prefers-color-scheme: dark)"
53+
content="#2c3e50"
54+
/>
4555

4656
<div id="wrapper">
4757
<Component {...pageProps} />

src/pages/mission.tsx

Lines changed: 71 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,7 @@ import { SiteLayout } from "components/SiteLayout";
77
import { getPostData, getRandomCta } from "lib/posts";
88
import { Post } from "lib/types";
99
import { NextPage } from "next";
10-
11-
const Disclaimer = () => (
12-
<MarkdownContent
13-
content={`>[!NOTE]\n>This originally appeared as a [blog post](/blog/2015/04/23/work-sustainably/) way back in 2015. We've migrated the content here to make it easier to find, and reaffirm our commitment even a decade on.`}
14-
/>
15-
);
10+
import Link from "next/link";
1611

1712
export async function getStaticProps() {
1813
const content = await getPostData({
@@ -46,21 +41,82 @@ const MissionPage: NextPage<{ cta: CtaProps; content: Post }> = ({
4641
<article className="stack gap-md">
4742
<PageHeader
4843
title="Our Mission"
44+
center
4945
subtitle={
50-
<>
51-
Work <s>hard</s>{" "}
52-
<span className="text-primary">sustainably</span>.
53-
</>
46+
<span className="text-muted">Good code. Sustainable work.</span>
5447
}
5548
/>
5649

57-
<Disclaimer />
58-
5950
<div className="stack gap-lg">
60-
<PostImage post={content} />
61-
6251
<section className="typography">
63-
<MarkdownContent content={content.contentHtml} />
52+
<p>
53+
When we started Apsis Labs,{" "}
54+
<Link href="/blog/2015/04/23/work-sustainably/">
55+
we didn't draw a line between our personal values and the
56+
company's values
57+
</Link>{" "}
58+
— they were one and the same. And for over a decade, that's
59+
worked for us: we strive to build a company where people want to
60+
work: one that prioritizes{" "}
61+
<strong>
62+
quality, sustainability, and respect that life happens away
63+
from the computer.
64+
</strong>
65+
</p>
66+
<p>
67+
When faced with a decision to make, we always come back to one
68+
simple idea:
69+
</p>
70+
71+
<h1 className="text-primary pullquote text-center">
72+
<em>Work sustainably</em>.
73+
</h1>
74+
75+
<p>
76+
This is harder than it sounds, and the{" "}
77+
<Link href="/blog/2025/04/02/burnout-and-recovery/">
78+
burnout rate in software is no joke
79+
</Link>
80+
. Software is creative work, and creativity is hard to come by
81+
when you're exhausted and constantly behind. When thinking about
82+
what kind of company we wanted to be, we started from a very
83+
basic premise:{" "}
84+
<strong>
85+
you can only expect 20 hours of creative output in a week.
86+
</strong>
87+
</p>
88+
<p>
89+
At your typical 40-hours a week gig, once your 20 hours are up,
90+
you've got another 10 of okay work, and then another 10 of bad
91+
work. Then, when you come back on Monday, you spend your 20 good
92+
hours fixing last week's mistakes. At Apsis, we asked ourselves:{" "}
93+
<strong>
94+
what if we just stopped when the good work stops?
95+
</strong>
96+
</p>
97+
<p>
98+
So that's what we do: we ask our team for 20 hours. That's it.
99+
Beyond that, your time is your own. After a decade, we're more
100+
confident than ever that this approach works. Our metrics show
101+
that{" "}
102+
<strong>
103+
our 20-hour approach retains approximately 85% of the
104+
productivity of our 40-hour peers
105+
</strong>
106+
, whether you measure by story points closed, KPIs met, or
107+
features delivered.
108+
</p>
109+
110+
<p>
111+
And as it turns out, what's good for our developers is good for
112+
our clients. Capping development time keeps our team performing
113+
at their peak—and our customers see exceptional results while
114+
saving money by avoiding diminishing returns.
115+
</p>
116+
117+
<p>
118+
Curious? <Link href="/hire">Come see for yourself.</Link>
119+
</p>
64120
</section>
65121
</div>
66122
</article>

src/styles/_global.scss

Lines changed: 13 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@
4040
opacity: 0.75;
4141
}
4242

43+
.text-center {
44+
text-align: center;
45+
}
46+
4347
.overflow-hidden {
4448
overflow: hidden;
4549
}
@@ -80,17 +84,22 @@
8084
}
8185

8286
.link {
83-
color: var(--apsis_blue);
84-
text-decoration: none;
87+
color: var(--link_color);
88+
font-weight: 500;
89+
text-decoration: underline;
90+
text-decoration-color: var(--apsis_blue_light);
91+
text-shadow: 0 0 2px rgba(0,0,0,0.05);
92+
transition: all var(--easing) var(--timing_sm);
8593

8694
&:visited {
87-
color: var(--apsis_blue);
95+
color: var(--link_color);
8896
}
8997

9098
&:hover,
9199
&:visited:hover {
92100
text-decoration: underline;
93-
color: var(--apsis_blue);
101+
color: var(--link_color_hover);
102+
text-decoration-color: var(--apsis_blue_dark);
94103
}
95104
}
96105

@@ -128,140 +137,7 @@
128137
}
129138
}
130139

131-
.typography {
132-
a {
133-
@extend .link;
134-
}
135-
136-
h1,
137-
h2,
138-
h3,
139-
h4,
140-
h5 {
141-
line-height: var(--heading_line_height);
142-
margin-bottom: var(--space);
143-
margin-top: var(--space-m);
144-
font-weight: 700;
145-
}
146-
147-
h1 {
148-
font-size: var(--font_size_h1);
149-
}
150-
151-
h2 {
152-
font-size: var(--font_size_h2);
153-
}
154-
155-
h3 {
156-
font-size: var(--font_size_h3);
157-
}
158-
159-
h4 {
160-
font-size: var(--font_size_h4);
161-
}
162-
163-
h5 {
164-
font-size: var(--font_size_h5);
165-
}
166-
167-
//= BLOCK ELEMENTS
168-
169-
p,
170-
ul,
171-
ol,
172-
pre {
173-
margin-bottom: var(--space);
174-
}
175-
176-
ul,
177-
ol {
178-
ul,
179-
ol {
180-
margin-top: 0;
181-
margin-bottom: 0;
182-
}
183-
184-
li {
185-
margin-bottom: var(--space-xs);
186-
}
187-
}
188-
189-
hr {
190-
width: 20%;
191-
margin: var(--space) 0;
192-
border: 0;
193-
border-top: 1px solid var(--border);
194-
}
195-
196-
sup {
197-
font-weight: normal;
198-
}
199140

200-
strong {
201-
font-weight: 600;
202-
}
203-
204-
iframe {
205-
border: 0;
206-
}
207-
208-
blockquote {
209-
border-left: 2px solid var(--border);
210-
padding-left: var(--space);
211-
padding-top: var(--space-xs);
212-
padding-bottom: var(--space-xs);
213-
margin-bottom: var(--space);
214-
215-
*:last-child {
216-
margin-bottom: 0;
217-
}
218-
}
219-
220-
> *:last-child {
221-
margin-bottom: 0;
222-
}
223-
224-
//= PARAGRAPH ELEMENTS
225-
226-
.lead {
227-
font-size: var(--font_size_lg);
228-
}
229-
230-
p > pre,
231-
p > code {
232-
font-family: var(--mono);
233-
background-color: var(--gray_lightest);
234-
padding: 0 var(--space-2xs);
235-
}
236-
237-
div > pre {
238-
width: 100%;
239-
overflow-x: scroll;
240-
}
241-
242-
p > a {
243-
@media (min-width: var(--tablet)) {
244-
white-space: nowrap;
245-
}
246-
}
247-
248-
p > img,
249-
figure > img {
250-
max-width: 100%;
251-
}
252-
253-
figure > figcaption {
254-
font-size: var(--font_size_xs);
255-
color: var(--apsis_gray);
256-
text-align: center;
257-
max-width: 80%;
258-
margin: 0 auto;
259-
}
260-
261-
#footnote-label {
262-
font-size: var(--font_size_lg);
263-
}
264-
}
265141

266142

267143
.markdown-alert,

src/styles/_theme.scss

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
--section_background: var(--white);
2323
--text_color: var(--apsis_dark);
2424
--text_muted: var(--apsis_gray_dark);
25-
--link_color: var(--apsis_blue);
25+
--link_color: var(--apsis_dark_darker);
26+
--link_color_hover: var(--apsis_dark_darkest);
2627
--link_color_dark: var(--apsis_gray_dark);
2728

2829
--guide_color: var(--border);
@@ -31,19 +32,22 @@
3132
//= FONTS
3233
--sans: var(--font-inter), sans-serif;
3334
--mono: var(--font-mono), monospace;
35+
--serif: Var(--font-noto), serif;
3436

3537
// Steps from Utopia
36-
--step--3: clamp(0.651rem, 0.6259rem + 0.1258vw, 0.7234rem);
37-
--step--2: clamp(0.7813rem, 0.7511rem + 0.151vw, 0.8681rem);
38-
--step--1: clamp(0.9375rem, 0.9013rem + 0.1812vw, 1.0417rem);
39-
--step-0: clamp(1.125rem, 1.0815rem + 0.2174vw, 1.25rem);
40-
--step-1: clamp(1.35rem, 1.2978rem + 0.2609vw, 1.5rem);
41-
--step-2: clamp(1.62rem, 1.5574rem + 0.313vw, 1.8rem);
42-
--step-3: clamp(1.944rem, 1.8689rem + 0.3757vw, 2.16rem);
43-
--step-4: clamp(2.3328rem, 2.2426rem + 0.4508vw, 2.592rem);
44-
--step-5: clamp(2.7994rem, 2.6912rem + 0.5409vw, 3.1104rem);
45-
--step-6: clamp(3.3592rem, 3.2294rem + 0.6491vw, 3.7325rem);
46-
--step-7: clamp(4.0311rem, 3.8753rem + 0.779vw, 4.479rem);
38+
/* @link https://utopia.fyi/type/calculator?c=320,18,1.2,1440,20,1.2,8,3,&s=0.75|0.5|0.25,1.5|2|3|4|6,s-l&g=s,l,xl,12 */
39+
--step--3: clamp(0.651rem, 0.6304rem + 0.1033vw, 0.7234rem);
40+
--step--2: clamp(0.7813rem, 0.7564rem + 0.124vw, 0.8681rem);
41+
--step--1: clamp(0.9375rem, 0.9077rem + 0.1488vw, 1.0417rem);
42+
--step-0: clamp(1.125rem, 1.0893rem + 0.1786vw, 1.25rem);
43+
--step-1: clamp(1.35rem, 1.3071rem + 0.2143vw, 1.5rem);
44+
--step-2: clamp(1.62rem, 1.5686rem + 0.2571vw, 1.8rem);
45+
--step-3: clamp(1.944rem, 1.8823rem + 0.3086vw, 2.16rem);
46+
--step-4: clamp(2.3328rem, 2.2587rem + 0.3703vw, 2.592rem);
47+
--step-5: clamp(2.7994rem, 2.7105rem + 0.4443vw, 3.1104rem);
48+
--step-6: clamp(3.3592rem, 3.2526rem + 0.5332vw, 3.7325rem);
49+
--step-7: clamp(4.0311rem, 3.9031rem + 0.6399vw, 4.479rem);
50+
--step-8: clamp(4.8373rem, 4.6837rem + 0.7678vw, 5.3748rem);
4751

4852
--font_size: var(--font_size_0);
4953
--line_height: 1.6125;
@@ -94,6 +98,8 @@
9498
--text_color: var(--apsis_gray_lightest);
9599
--text_muted: var(--apsis_gray_lighter);
96100
--link_color_dark: var(--apsis_gray_lighter);
101+
--link_color: var(--apsis_gray_lightest);
102+
--link_color_hover: var(--white);
97103

98104
--border: var(--apsis_gray_darker);
99105
--apsis_gray_border: var(--border);

0 commit comments

Comments
 (0)