Port the content styles (easier than I thought!)
This commit is contained in:
parent
379ad520de
commit
38a2979f82
147
public/style.css
147
public/style.css
|
@ -7182,6 +7182,7 @@ code {
|
|||
--notice-success-color: #43a52f;
|
||||
--notice-warn-color: #aa7d30;
|
||||
--notice-failure-color: #b42222;
|
||||
--spoiler-border: #aaa;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
|
@ -7211,6 +7212,7 @@ code {
|
|||
--notice-success-color: #2a681d;
|
||||
--notice-warn-color: #876327;
|
||||
--notice-failure-color: #7a2020;
|
||||
--spoiler-border: #777;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7241,9 +7243,14 @@ a.external::after,
|
|||
vertical-align: middle;
|
||||
}
|
||||
code,
|
||||
pre,
|
||||
.mono {
|
||||
font-family: "Fira Mono", monospace;
|
||||
}
|
||||
b,
|
||||
strong {
|
||||
font-weight: 500;
|
||||
}
|
||||
.bg--main {
|
||||
background-color: var(--main-background-color);
|
||||
}
|
||||
|
@ -7745,6 +7752,146 @@ code,
|
|||
background-color: var(--theme-color-dimmest);
|
||||
}
|
||||
|
||||
/* src/rawdata/scss/content.css */
|
||||
.post-content *:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
.post-content *:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.post-content h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
.post-content h2 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
.post-content h3 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
.post-content h4 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
.post-content h5 {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
.post-content h1,
|
||||
.post-content h2,
|
||||
.post-content h3,
|
||||
.post-content h4,
|
||||
.post-content h5 {
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
.post-content li:not(:last-child) {
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
.post-content img {
|
||||
max-width: 100%;
|
||||
}
|
||||
.post-content hr {
|
||||
margin-left: var(--spacing-medium);
|
||||
margin-right: var(--spacing-medium);
|
||||
}
|
||||
.post-content div.code {
|
||||
border-color: var(--dimmer-color);
|
||||
max-width: 100%;
|
||||
max-height: 20em;
|
||||
max-height: 80vh;
|
||||
overflow: auto;
|
||||
-moz-tab-size: 4;
|
||||
tab-size: 4;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
}
|
||||
.post-content div + br,
|
||||
.post-content blockquote + br,
|
||||
.post-content ul + br,
|
||||
.post-content ol + br {
|
||||
display: none;
|
||||
}
|
||||
.post-content table {
|
||||
margin-top: var(--spacing-small);
|
||||
margin-bottom: var(--spacing-small);
|
||||
}
|
||||
.post-content th,
|
||||
.post-content td {
|
||||
padding: var(--spacing-extra-small) var(--spacing-small);
|
||||
border: 1px solid var(--dimmest-color);
|
||||
}
|
||||
.post-content code {
|
||||
background-color: var(--dim-background);
|
||||
border-radius: var(--border-radius-2);
|
||||
padding: .2em 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.post-content code::before,
|
||||
.post-content code::after {
|
||||
content: "\a0";
|
||||
letter-spacing: -0.2em;
|
||||
display: inline-block;
|
||||
}
|
||||
.post-content pre > code,
|
||||
.post-content pre.hmn-code {
|
||||
background-color: var(--dim-background);
|
||||
border-radius: var(--border-radius-2);
|
||||
padding: 0.7em;
|
||||
overflow-x: auto;
|
||||
}
|
||||
.post-content blockquote {
|
||||
border-color: var(--dimmest-color);
|
||||
margin-left: var(--spacing-small);
|
||||
padding-left: var(--spacing-small);
|
||||
margin-right: 0;
|
||||
border-left-style: solid;
|
||||
border-left-width: 1px;
|
||||
}
|
||||
.post-content blockquote .quotewho {
|
||||
line-height: 2em;
|
||||
}
|
||||
.post-content blockquote .quotewho::after {
|
||||
content: " said:";
|
||||
}
|
||||
.post-content figure {
|
||||
margin: var(--spacing-small) 0;
|
||||
padding: var(--spacing-small) var(--spacing-small) 0;
|
||||
background-color: var(--dim-background);
|
||||
border-radius: var(--border-radius-3);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
@media screen and (min-width: 35em) {
|
||||
.post-content figure {
|
||||
margin-top: var(--spacing-medium);
|
||||
margin-bottom: var(--spacing-medium);
|
||||
padding: var(--spacing-medium) var(--spacing-medium) 0;
|
||||
}
|
||||
}
|
||||
.post-content figure figcaption {
|
||||
margin: var(--spacing-extra-small) 0;
|
||||
}
|
||||
@media screen and (min-width: 35em) {
|
||||
.post-content figure figcaption {
|
||||
margin: var(--spacing-small) 0;
|
||||
}
|
||||
}
|
||||
.post-content table {
|
||||
border-collapse: collapse;
|
||||
table-layout: fixed;
|
||||
}
|
||||
.post-content td {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
.post-content .spoiler {
|
||||
border-color: var(--spoiler-border);
|
||||
border-width: 1px;
|
||||
border-style: dashed;
|
||||
color: transparent;
|
||||
}
|
||||
.post-content .spoiler::selection {
|
||||
color: white;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
/* src/rawdata/scss/editor.css */
|
||||
#preview:empty::after {
|
||||
content: "A preview of your post will appear here.";
|
||||
|
|
|
@ -333,24 +333,6 @@ func BuildConferences() string {
|
|||
return Url("/conferences", nil)
|
||||
}
|
||||
|
||||
/*
|
||||
* Volunteer/Staff Roles
|
||||
*/
|
||||
|
||||
var RegexStaffRolesIndex = regexp.MustCompile(`^/roles$`)
|
||||
|
||||
func BuildStaffRolesIndex() string {
|
||||
defer CatchPanic()
|
||||
return Url("/roles", nil)
|
||||
}
|
||||
|
||||
var RegexStaffRole = regexp.MustCompile(`^/roles/(?P<slug>[^/]+)$`)
|
||||
|
||||
func BuildStaffRole(slug string) string {
|
||||
defer CatchPanic()
|
||||
return Url(fmt.Sprintf("/roles/%s", slug), nil)
|
||||
}
|
||||
|
||||
/*
|
||||
* User
|
||||
*/
|
||||
|
|
|
@ -1,186 +0,0 @@
|
|||
strong {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.text {
|
||||
@include usevar(background-color, text-background);
|
||||
}
|
||||
|
||||
.underline {
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
.monospace {
|
||||
font-family: $monospace-fonts;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
padding: 0.2em 0 0.05em;
|
||||
border-radius: 3px;
|
||||
|
||||
&::before, &::after {
|
||||
content: "\00a0";
|
||||
letter-spacing: -0.2em;
|
||||
}
|
||||
}
|
||||
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.justify {
|
||||
text-align:justify;
|
||||
-webkit-hyphens:manual;
|
||||
-moz-hyphens:manual;
|
||||
-ms-hyphens:manual;
|
||||
hyphens:manual;
|
||||
}
|
||||
|
||||
.spoiler {
|
||||
@include usevar(border-color, spoiler-border);
|
||||
|
||||
border-width: 1px;
|
||||
border-style: dashed;
|
||||
color: transparent;
|
||||
|
||||
&::selection {
|
||||
color: white;
|
||||
background-color: black;
|
||||
}
|
||||
}
|
||||
|
||||
blockquote {
|
||||
@extend .b--dimmest;
|
||||
@extend .ml2, .pl2, .mr0;
|
||||
@extend .bl;
|
||||
|
||||
.quotewho {
|
||||
line-height: 2em;
|
||||
|
||||
&::after {
|
||||
content: " said:";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pre {
|
||||
font-family: $monospace-fonts;
|
||||
}
|
||||
|
||||
.post-content {
|
||||
* {
|
||||
&:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5 {
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
li:not(:last-child) {
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
hr {
|
||||
@extend .mh3;
|
||||
}
|
||||
|
||||
div.code {
|
||||
@extend .b--dimmer;
|
||||
|
||||
max-width: 100%;
|
||||
max-height: 20em;
|
||||
max-height: 80vh;
|
||||
overflow: auto;
|
||||
-moz-tab-size: 4;
|
||||
tab-size: 4;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
div + br,
|
||||
blockquote + br,
|
||||
ul + br,
|
||||
ol + br,
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
|
||||
table {
|
||||
@extend .mv2;
|
||||
}
|
||||
|
||||
th, td {
|
||||
@extend .ph2, .pv1;
|
||||
@extend .ba, .b--dimmest;
|
||||
}
|
||||
|
||||
code {
|
||||
@extend .bg--dim;
|
||||
@extend .br2;
|
||||
|
||||
padding: .2em 0;
|
||||
white-space: nowrap;
|
||||
|
||||
&::before, &::after {
|
||||
content: "\00a0";
|
||||
letter-spacing: -0.2em;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
pre > code, pre.hmn-code {
|
||||
@extend .bg--dim;
|
||||
@extend .br2;
|
||||
|
||||
padding: 0.7em;
|
||||
overflow-x: auto;
|
||||
}
|
||||
}
|
||||
|
||||
figure {
|
||||
@extend .mh0, .mv2, .mv3-ns, .pa2, .pa3-ns, .bg--dim, .br3;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-bottom: 0;
|
||||
|
||||
figcaption {
|
||||
@extend .pv1, .pv2-ns;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,170 @@
|
|||
.post-content {
|
||||
* {
|
||||
&:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5 {
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
li:not(:last-child) {
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
hr {
|
||||
margin-left: var(--spacing-medium);
|
||||
margin-right: var(--spacing-medium);
|
||||
}
|
||||
|
||||
div.code {
|
||||
border-color: var(--dimmer-color);
|
||||
|
||||
max-width: 100%;
|
||||
max-height: 20em;
|
||||
max-height: 80vh;
|
||||
overflow: auto;
|
||||
-moz-tab-size: 4;
|
||||
tab-size: 4;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
div+br,
|
||||
blockquote+br,
|
||||
ul+br,
|
||||
ol+br {
|
||||
display: none;
|
||||
}
|
||||
|
||||
table {
|
||||
margin-top: var(--spacing-small);
|
||||
margin-bottom: var(--spacing-small);
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
padding: var(--spacing-extra-small) var(--spacing-small);
|
||||
border: 1px solid var(--dimmest-color);
|
||||
}
|
||||
|
||||
code {
|
||||
background-color: var(--dim-background);
|
||||
border-radius: var(--border-radius-2);
|
||||
|
||||
padding: .2em 0;
|
||||
white-space: nowrap;
|
||||
|
||||
&::before,
|
||||
&::after {
|
||||
content: "\00a0";
|
||||
letter-spacing: -0.2em;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
pre>code,
|
||||
pre.hmn-code {
|
||||
background-color: var(--dim-background);
|
||||
border-radius: var(--border-radius-2);
|
||||
|
||||
padding: 0.7em;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-color: var(--dimmest-color);
|
||||
margin-left: var(--spacing-small);
|
||||
padding-left: var(--spacing-small);
|
||||
margin-right: 0;
|
||||
border-left-style: solid;
|
||||
border-left-width: 1px;
|
||||
|
||||
.quotewho {
|
||||
line-height: 2em;
|
||||
|
||||
&::after {
|
||||
content: " said:";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: var(--spacing-small) 0;
|
||||
padding: var(--spacing-small) var(--spacing-small) 0;
|
||||
background-color: var(--dim-background);
|
||||
border-radius: var(--border-radius-3);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@media screen and (min-width: 35em) {
|
||||
margin-top: var(--spacing-medium);
|
||||
margin-bottom: var(--spacing-medium);
|
||||
padding: var(--spacing-medium) var(--spacing-medium) 0;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
margin: var(--spacing-extra-small) 0;
|
||||
|
||||
@media screen and (min-width: 35em) {
|
||||
margin: var(--spacing-small) 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
td {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
.spoiler {
|
||||
border-color: var(--spoiler-border);
|
||||
|
||||
border-width: 1px;
|
||||
border-style: dashed;
|
||||
color: transparent;
|
||||
|
||||
&::selection {
|
||||
color: white;
|
||||
background-color: black;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -32,10 +32,16 @@ a,
|
|||
}
|
||||
|
||||
code,
|
||||
pre,
|
||||
.mono {
|
||||
font-family: "Fira Mono", monospace;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* Utility */
|
||||
|
||||
.bg--main {
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
@import "core.css";
|
||||
|
||||
@import "carousel.css";
|
||||
@import "content.css";
|
||||
@import "editor.css";
|
||||
@import "education.css";
|
||||
@import "forum.css";
|
||||
|
|
|
@ -45,6 +45,8 @@ $breakpoint-large: screen and (min-width: 60em)
|
|||
--notice-success-color: #43a52f;
|
||||
--notice-warn-color: #aa7d30;
|
||||
--notice-failure-color: #b42222;
|
||||
|
||||
--spoiler-border: #aaa;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
|
@ -83,5 +85,7 @@ $breakpoint-large: screen and (min-width: 60em)
|
|||
--notice-success-color: #2a681d;
|
||||
--notice-warn-color: #876327;
|
||||
--notice-failure-color: #7a2020;
|
||||
|
||||
--spoiler-border: #777;
|
||||
}
|
||||
}
|
|
@ -16,7 +16,7 @@
|
|||
The Handmade Network's activities are funded by the <a href="{{ .FoundationUrl }}">Handmade Software Foundation</a>, a (soon-to-be) 501(c)(3) nonprofit corporation.
|
||||
</p> -->
|
||||
<p>
|
||||
We can teach programmers how things actually work. We can teach users to expect better. We can build the best software you've ever seen. <a href="{{ .RolesUrl }}"><b>Join us.</b></a>
|
||||
We can teach programmers how things actually work. We can teach users to expect better. We can build the best software you've ever seen. <b>Join us.</b>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -69,32 +69,9 @@
|
|||
<div class="flex flex-column flex-row-ns g3">
|
||||
<div class="flex-fair pa3 bg--dim br3">
|
||||
<h3>Martin Fouilleul</h3>
|
||||
<h4>[Secret Project] Lead</h4>
|
||||
<p>Martin is a PhD student at <a href="https://www.ircam.fr/">Ircam</a>, researching programming languages and models for distributed temporal interactions in music and performing arts software. He is also a former sound engineer and computer music designer.</p>
|
||||
<p>Right now he is working behind the scenes on a secret Handmade Network project, to be revealed at a later date.</p>
|
||||
</div>
|
||||
<div class="flex-fair pa3 bg--dim br3">
|
||||
<h3>???</h3>
|
||||
<h4>Education Lead</h4>
|
||||
<p>
|
||||
<strong>This could be you!</strong> Education is one of our flagship initiatives, and we are looking for someone to lead it. If you are excited about programming education and want to help out, please <a href="{{ .EducationLeadUrl }}">learn more and get in touch!</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-column flex-row-ns g3 mt3">
|
||||
<div class="flex-fair pa3 bg--dim br3">
|
||||
<h3>???</h3>
|
||||
<h4>Advocacy Lead</h4>
|
||||
<p>
|
||||
<strong>This could be you!</strong> We want to go out into the world and advocate for better software and better programming practices. We need a strong communicator who can lead this for us. If this excites you, please <a href="{{ .AdvocacyLeadUrl }}">learn more and get in touch!</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex-fair pa3 bg--dim br3">
|
||||
<h3>???</h3>
|
||||
<h4>Design Lead</h4>
|
||||
<p>
|
||||
<strong>This could be you!</strong> Building software for people means designing software for people. We are looking for someone with visual and UX design skills to design website features, event art, livestreaming assets, educational graphics, and more. If any of this sounds interesting to you, <a href="{{ .DesignLeadUrl }}">learn more and get in touch!</a>
|
||||
</p>
|
||||
<h4>Orca Lead</h4>
|
||||
<p>Martin is a systems programmer, researcher, and PhD with experience in programming languages and models for distributed temporal interactions in music and performing arts software. He is also a former sound engineer and computer music designer.</p>
|
||||
<p>He is the project lead on <a href="https://orca-app.dev/">Orca</a>, a new platform for WebAssembly applications outside the browser.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -16,10 +16,6 @@
|
|||
<a href="{{ .Footer.AboutUrl }}">About</a>
|
||||
<span class="c--dimmer dn di-ns"> / </span>
|
||||
</li>
|
||||
<li class="{{ $footerClasses }}">
|
||||
<a href="{{ .Footer.RolesUrl }}">Roles</a>
|
||||
<span class="c--dimmer dn di-ns"> / </span>
|
||||
</li>
|
||||
<li class="{{ $footerClasses }}">
|
||||
<a href="{{ .Footer.ProjectIndexUrl }}">Projects</a>
|
||||
<span class="c--dimmer dn di-ns"> / </span>
|
||||
|
|
|
@ -236,7 +236,7 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<div class="left white">
|
||||
<div class="white">
|
||||
<div class="mt4-ns mw8 m--center ph3-m ph4-l">
|
||||
{{ template "header.html" . }}
|
||||
</div>
|
||||
|
@ -245,7 +245,7 @@
|
|||
<img id="logo" src="{{ static "wheeljam2021/logo.svg" }}">
|
||||
<h1 id="title">Wheel Reinvention Jam</h1>
|
||||
<h2 id="dates">September 27 - October 3, 2O21</h2>
|
||||
<div id="tagline" class="center">
|
||||
<div id="tagline" class="tc">
|
||||
A one-week jam to bring a fresh perspective to old ideas.
|
||||
</div>
|
||||
<div id="actions" class="flex justify-center">
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<div id="top-container" class="flex flex-column items-center ph3">
|
||||
<h1 id="title">Wheel Reinvention Jam</h1>
|
||||
<h2 id="dates">August 15 - 21, 2O22</h2>
|
||||
<div id="tagline" class="center">
|
||||
<div id="tagline" class="tc">
|
||||
A one-week jam to change the status quo.
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
<img id="logo" src="{{ static "wheeljam2022/logo.svg" }}">
|
||||
<h1 id="title">Wheel Reinvention Jam</h1>
|
||||
<h2 id="dates">August 15 - 21, 2O22</h2>
|
||||
<div id="tagline" class="center">
|
||||
<div id="tagline" class="tc">
|
||||
A one-week jam to change the status quo.
|
||||
{{ if gt .DaysUntilEnd 0 }}
|
||||
{{ if eq .DaysUntilStart 0 }}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<div id="top-container" class="flex flex-column items-center ph3">
|
||||
<a href="{{ .JamUrl }}"><h1 id="title">Visibility Jam</h1></a>
|
||||
<h2 id="dates">April 14 - 16, 2O23</h2>
|
||||
<div id="tagline" class="center">See things in a new way.</div>
|
||||
<div id="tagline" class="tc">See things in a new way.</div>
|
||||
</div>
|
||||
|
||||
<div class="section pt4 pb3 pb4-ns">
|
||||
|
|
|
@ -21,7 +21,7 @@ $discordInviteURL := "https://discord.gg/hmn" }}
|
|||
<img id="logo" src="{{ static "visjam2023/logo.svg" }}">
|
||||
<h1 id="title">Visibility Jam</h1>
|
||||
<h2 id="dates">April 14 - 16, 2O23</h2>
|
||||
<div id="tagline" class="center">
|
||||
<div id="tagline" class="tc">
|
||||
See things in a new way.
|
||||
{{ if gt .DaysUntilEnd 0 }}
|
||||
{{ if eq .DaysUntilStart 0 }}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<h1 id="title">Visibility Jam</h1>
|
||||
</a>
|
||||
<h2 id="dates">April 14 - 16, 2O23</h2>
|
||||
<div id="tagline" class="center">See things in a new way.</div>
|
||||
<div id="tagline" class="tc">See things in a new way.</div>
|
||||
</div>
|
||||
|
||||
<div class="section pt4 pb3 pb4-ns">
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<div id="top-container" class="flex flex-column items-center ph3">
|
||||
<h1 id="title">Wheel Reinvention Jam</h1>
|
||||
<h2 id="dates">September 25 - October 1, 2023</h2>
|
||||
<div id="tagline" class="center">
|
||||
<div id="tagline" class="tc">
|
||||
A one-week jam to change the status quo.
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
<img id="logo" src="{{ static "wheeljam2023/logo.svg" }}">
|
||||
<h1 id="title">Wheel Reinvention Jam</h1>
|
||||
<h2 id="dates">September 25 - October 1, 2023</h2>
|
||||
<div id="tagline" class="center">
|
||||
<div id="tagline" class="tc">
|
||||
A one-week jam where you start from scratch.
|
||||
{{ if gt .DaysUntilEnd 0 }}
|
||||
{{ if eq .DaysUntilStart 0 }}
|
||||
|
|
|
@ -346,7 +346,7 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<div class="left white">
|
||||
<div class="white">
|
||||
<div class="mt4-ns mw8 m--center ph3-m ph4-l">
|
||||
{{ template "header.html" . }}
|
||||
</div>
|
||||
|
|
|
@ -1,54 +0,0 @@
|
|||
{{/*
|
||||
This is a copy-paste from base.html because we want to preserve the unique
|
||||
style of landing pages if we change base.html in the future.
|
||||
*/}}
|
||||
<!DOCTYPE html{{ if .OpenGraphItems }} prefix="og: http://ogp.me/ns#"{{ end }}>
|
||||
<html lang="en-US">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="{{ static "visjam2023/favicon-16x16.png" }}">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="{{ static "visjam2023/favicon-32x32.png" }}">
|
||||
|
||||
{{ if .CanonicalLink }}<link rel="canonical" href="{{ .CanonicalLink }}">{{ end }}
|
||||
{{ range .OpenGraphItems }}
|
||||
{{ if .Property }}
|
||||
<meta property="{{ .Property }}" content="{{ .Value }}" />
|
||||
{{ else }}
|
||||
<meta name="{{ .Name }}" content="{{ .Value }}" />
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if .Title }}
|
||||
<title>{{ .Title }} | Handmade Network</title>
|
||||
{{ else }}
|
||||
<title>Handmade Network</title>
|
||||
{{ end }}
|
||||
<meta name="theme-color" content="#346ba6">
|
||||
|
||||
<script src="{{ static "js/templates.js" }}"></script>
|
||||
|
||||
<link rel="stylesheet" href="{{ static "fonts/mohave/stylesheet.css" }}">
|
||||
<link href='https://fonts.googleapis.com/css?family=Fira+Sans:300,400,500,600' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Fira+Mono:300,400,500,700' rel='stylesheet' type='text/css'>
|
||||
<link rel="stylesheet" type="text/css" href="{{ static "style.css" }}">
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="left white">
|
||||
<div class="mt4-ns mw8 m--center ph3-m ph4-l">
|
||||
{{ template "header.html" . }}
|
||||
</div>
|
||||
|
||||
<div class="jam-sections">
|
||||
{{ block "content" . }}{{ end }}
|
||||
</div>
|
||||
|
||||
<div class="mw8 m--center ph3-m ph4-l">
|
||||
{{ template "footer.html" . }}
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -1,13 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>{{ block "title" . }}Handmade Network{{ end }}</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
{{ block "content" . }}{{ end }}
|
||||
{{ template "footer.html" . }}
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -197,7 +197,7 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<div class="left white">
|
||||
<div class="white">
|
||||
<div class="mt4-ns mw7 m--center ph3-ns">
|
||||
{{ template "header.html" . }}
|
||||
</div>
|
||||
|
|
|
@ -339,7 +339,7 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<div class="left white">
|
||||
<div class="white">
|
||||
<div class="mt4-ns mw8 m--center ph3-m ph4-l">
|
||||
{{ template "header.html" . }}
|
||||
</div>
|
||||
|
|
|
@ -342,7 +342,7 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<div class="left white">
|
||||
<div class="white">
|
||||
<div class="mt4-ns mw8 m--center ph3-m ph4-l">
|
||||
{{ template "header.html" . }}
|
||||
</div>
|
||||
|
|
|
@ -78,7 +78,6 @@ type Footer struct {
|
|||
CodeOfConductUrl string
|
||||
CommunicationGuidelinesUrl string
|
||||
ProjectIndexUrl string
|
||||
RolesUrl string
|
||||
ContactUrl string
|
||||
SearchActionUrl string
|
||||
}
|
||||
|
|
|
@ -87,7 +87,6 @@ func getBaseData(c *RequestContext, title string, breadcrumbs []templates.Breadc
|
|||
ManifestoUrl: hmnurl.BuildManifesto(),
|
||||
CommunicationGuidelinesUrl: hmnurl.BuildCommunicationGuidelines(),
|
||||
ProjectIndexUrl: hmnurl.BuildProjectIndex(1, ""),
|
||||
RolesUrl: hmnurl.BuildStaffRolesIndex(),
|
||||
ContactUrl: hmnurl.BuildContactPage(),
|
||||
SearchActionUrl: "https://duckduckgo.com",
|
||||
},
|
||||
|
|
|
@ -1,107 +0,0 @@
|
|||
package website
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"git.handmade.network/hmn/hmn/src/hmnurl"
|
||||
"git.handmade.network/hmn/hmn/src/templates"
|
||||
)
|
||||
|
||||
type Role struct {
|
||||
Slug string
|
||||
Name string
|
||||
Description string
|
||||
Template string
|
||||
Url string // weird and redundant
|
||||
|
||||
RedirectSlug string
|
||||
}
|
||||
|
||||
var roles = []Role{
|
||||
{
|
||||
Slug: "education",
|
||||
Name: "Education Lead",
|
||||
Description: "Lead our flagship education initiative and make sure we're putting out a steady stream of content.",
|
||||
Template: "role_education.html",
|
||||
Url: hmnurl.BuildStaffRole("education"),
|
||||
},
|
||||
{
|
||||
Slug: "advocacy",
|
||||
Name: "Advocacy Lead",
|
||||
Description: "Put the Handmade ethos into the world by advocating for better software and better programming practices.",
|
||||
Template: "role_advocacy.html",
|
||||
Url: hmnurl.BuildStaffRole("advocacy"),
|
||||
},
|
||||
{
|
||||
Slug: "design",
|
||||
Name: "Design Lead",
|
||||
Description: "Set the visual direction for everything we do. Make key art, design website features, and more.",
|
||||
Template: "role_design.html",
|
||||
Url: hmnurl.BuildStaffRole("design"),
|
||||
},
|
||||
}
|
||||
|
||||
const StaffRolesIndexName = "Roles"
|
||||
|
||||
func StaffRolesIndex(c *RequestContext) ResponseData {
|
||||
type TemplateData struct {
|
||||
templates.BaseData
|
||||
Roles []Role
|
||||
}
|
||||
|
||||
var res ResponseData
|
||||
res.MustWriteTemplate("roles.html", TemplateData{
|
||||
BaseData: getBaseDataAutocrumb(c, StaffRolesIndexName),
|
||||
Roles: roles,
|
||||
}, c.Perf)
|
||||
return res
|
||||
}
|
||||
|
||||
func StaffRole(c *RequestContext) ResponseData {
|
||||
type TemplateData struct {
|
||||
templates.BaseData
|
||||
Role Role
|
||||
OtherRoles []Role
|
||||
}
|
||||
|
||||
slug := c.PathParams["slug"]
|
||||
role, ok := getRole(slug)
|
||||
if !ok {
|
||||
return FourOhFour(c) // TODO: Volunteering-specific 404
|
||||
}
|
||||
|
||||
if role.RedirectSlug != "" {
|
||||
return c.Redirect(hmnurl.BuildStaffRole(role.RedirectSlug), http.StatusSeeOther)
|
||||
}
|
||||
|
||||
var otherRoles []Role
|
||||
for _, otherRole := range roles {
|
||||
if otherRole.Slug == role.Slug {
|
||||
continue
|
||||
}
|
||||
otherRoles = append(otherRoles, otherRole)
|
||||
if len(otherRoles) >= 3 {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
var res ResponseData
|
||||
res.MustWriteTemplate(role.Template, TemplateData{
|
||||
BaseData: getBaseData(c, role.Name, []templates.Breadcrumb{
|
||||
{Name: StaffRolesIndexName, Url: hmnurl.BuildStaffRolesIndex()},
|
||||
{Name: role.Name, Url: ""},
|
||||
}),
|
||||
Role: role,
|
||||
OtherRoles: otherRoles,
|
||||
}, c.Perf)
|
||||
return res
|
||||
}
|
||||
|
||||
func getRole(slug string) (Role, bool) {
|
||||
for _, role := range roles {
|
||||
if role.Slug == slug {
|
||||
return role, true
|
||||
}
|
||||
}
|
||||
return Role{}, false
|
||||
}
|
|
@ -82,9 +82,6 @@ func NewWebsiteRoutes(conn *pgxpool.Pool) http.Handler {
|
|||
hmnOnly.GET(hmnurl.RegexCalendarIndex, CalendarIndex)
|
||||
hmnOnly.GET(hmnurl.RegexCalendarICal, CalendarICal)
|
||||
|
||||
hmnOnly.GET(hmnurl.RegexStaffRolesIndex, StaffRolesIndex)
|
||||
hmnOnly.GET(hmnurl.RegexStaffRole, StaffRole)
|
||||
|
||||
hmnOnly.GET(hmnurl.RegexOldHome, Index)
|
||||
|
||||
hmnOnly.POST(hmnurl.RegexLoginAction, securityTimerMiddleware(time.Millisecond*100, Login))
|
||||
|
|
|
@ -27,21 +27,13 @@ func Manifesto(c *RequestContext) ResponseData {
|
|||
func About(c *RequestContext) ResponseData {
|
||||
type TemplateData struct {
|
||||
templates.BaseData
|
||||
FoundationUrl string
|
||||
RolesUrl string
|
||||
EducationLeadUrl string
|
||||
AdvocacyLeadUrl string
|
||||
DesignLeadUrl string
|
||||
FoundationUrl string
|
||||
}
|
||||
|
||||
var res ResponseData
|
||||
res.MustWriteTemplate("about.html", TemplateData{
|
||||
BaseData: getBaseDataAutocrumb(c, "About"),
|
||||
FoundationUrl: hmnurl.BuildFoundation(),
|
||||
RolesUrl: hmnurl.BuildStaffRolesIndex(),
|
||||
EducationLeadUrl: hmnurl.BuildStaffRole("education"),
|
||||
AdvocacyLeadUrl: hmnurl.BuildStaffRole("advocacy"),
|
||||
DesignLeadUrl: hmnurl.BuildStaffRole("design"),
|
||||
BaseData: getBaseDataAutocrumb(c, "About"),
|
||||
FoundationUrl: hmnurl.BuildFoundation(),
|
||||
}, c.Perf)
|
||||
return res
|
||||
}
|
||||
|
|
|
@ -40,4 +40,5 @@ nodemon --exec "esbuild src\rawdata\scss\style.css --bundle --loader:.ttf=file -
|
|||
- [ ] Reduce saturation of --background-even-background
|
||||
- [ ] Update blog styles to not use `post` and other garbage
|
||||
- [ ] Remove from forum.css
|
||||
- [ ] Remove all uses of .content-block
|
||||
- [ ] Remove all uses of .content-block
|
||||
- [ ] Figure out what's up with the projects on the jam pages
|
Loading…
Reference in New Issue