diff options
-rw-r--r-- | assets/css/_basics.scss | 11 | ||||
-rw-r--r-- | assets/css/_vars.scss | 2 | ||||
-rw-r--r-- | assets/css/components/_header.scss | 48 | ||||
-rw-r--r-- | assets/css/components/_landing-banner.scss | 49 | ||||
-rw-r--r-- | assets/css/components/_outer-button.scss | 89 | ||||
-rw-r--r-- | assets/css/components/_post-list.scss | 17 | ||||
-rw-r--r-- | assets/css/components/_project.scss | 68 | ||||
-rw-r--r-- | assets/css/layouts/_card-grid.scss | 22 | ||||
-rw-r--r-- | assets/css/layouts/_landing.scss | 54 | ||||
-rw-r--r-- | assets/css/layouts/_project-grid.scss | 22 | ||||
-rw-r--r-- | assets/css/layouts/_section.scss | 74 | ||||
-rw-r--r-- | assets/css/style.scss | 8 | ||||
-rw-r--r-- | content/index.md | 5 | ||||
-rw-r--r-- | content/symbols.svg | 51 | ||||
-rw-r--r-- | templates/base.html | 24 | ||||
-rw-r--r-- | templates/layouts/categorized_list.html | 84 | ||||
-rw-r--r-- | templates/layouts/index.html | 88 | ||||
-rw-r--r-- | templates/layouts/list.html | 68 | ||||
-rw-r--r-- | templates/layouts/page.html | 16 |
19 files changed, 164 insertions, 636 deletions
diff --git a/assets/css/_basics.scss b/assets/css/_basics.scss index 4fe73a2..71beceb 100644 --- a/assets/css/_basics.scss +++ b/assets/css/_basics.scss | |||
@@ -32,12 +32,6 @@ body { | |||
32 | padding: 0; | 32 | padding: 0; |
33 | } | 33 | } |
34 | 34 | ||
35 | main { | ||
36 | display: flex; | ||
37 | flex-direction: column; | ||
38 | min-height: 100vh; | ||
39 | } | ||
40 | |||
41 | pre, | 35 | pre, |
42 | code { | 36 | code { |
43 | font-family: $font-fam--mono; | 37 | font-family: $font-fam--mono; |
@@ -156,6 +150,11 @@ h6 { | |||
156 | & + & { | 150 | & + & { |
157 | margin-top: $line-height * 1rem; | 151 | margin-top: $line-height * 1rem; |
158 | } | 152 | } |
153 | |||
154 | strong { | ||
155 | color: prop(--colors --accent --color, $global: true); | ||
156 | font-weight: 550; | ||
157 | } | ||
159 | } | 158 | } |
160 | 159 | ||
161 | p { | 160 | p { |
diff --git a/assets/css/_vars.scss b/assets/css/_vars.scss index 4b60518..ebbefad 100644 --- a/assets/css/_vars.scss +++ b/assets/css/_vars.scss | |||
@@ -22,7 +22,7 @@ $font-fam--large: 'Garet', $font-fam--text; | |||
22 | $font-fam--mono: 'Iosevka Term SS09', 'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace; | 22 | $font-fam--mono: 'Iosevka Term SS09', 'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace; |
23 | $font-size: 16px; | 23 | $font-size: 16px; |
24 | $line-height: 1.7; | 24 | $line-height: 1.7; |
25 | $content--width: 42rem; | 25 | $content--width: 46rem; |
26 | 26 | ||
27 | @include iro-execute { | 27 | @include iro-execute { |
28 | $gray0: hsl(220, 5%, 7%); | 28 | $gray0: hsl(220, 5%, 7%); |
diff --git a/assets/css/components/_header.scss b/assets/css/components/_header.scss index e74780b..81e4d4f 100644 --- a/assets/css/components/_header.scss +++ b/assets/css/components/_header.scss | |||
@@ -1,23 +1,53 @@ | |||
1 | @include namespace('header') { | 1 | @include namespace('header') { |
2 | @include store(( | 2 | @include store(( |
3 | --colors: ( | 3 | --colors: ( |
4 | --fg: prop(--colors --fg-lo, $global: true), | 4 | --fg: prop(--colors --fg-hi, $global: true), |
5 | --bg: prop(--colors --bg-hi, $global: true), | ||
6 | --hover: ( | 5 | --hover: ( |
7 | --fg: prop(--colors --bg-hi, $global: true), | 6 | --fg: prop(--colors --fg-lo, $global: true), |
8 | --bg: prop(--colors --accent --color, $global: true), | 7 | ), |
8 | --active: ( | ||
9 | --fg: prop(--colors --fg-lo, $global: true), | ||
9 | ) | 10 | ) |
11 | ), | ||
12 | --dims: ( | ||
13 | --height: 4rem, | ||
14 | --pad-x: .6rem, | ||
10 | ) | 15 | ) |
11 | )); | 16 | )); |
12 | 17 | ||
13 | @include component(namespace()) { | 18 | @include component(namespace()) { |
14 | display: flex; | 19 | display: flex; |
15 | position: fixed; | ||
16 | z-index: 10000; | ||
17 | top: 0; | ||
18 | left: 0; | ||
19 | flex-direction: row; | 20 | flex-direction: row; |
20 | justify-content: flex-start; | 21 | justify-content: flex-start; |
21 | box-shadow: prop(--dims --obj-shadow, $global: true) prop(--colors --obj-shadow, $global: true); | 22 | height: prop(--dims --height); |
23 | |||
24 | @include element('item') { | ||
25 | padding: 0 prop(--dims --pad-x); | ||
26 | line-height: prop(--dims --height); | ||
27 | color: prop(--colors --fg); | ||
28 | text-decoration: none; | ||
29 | |||
30 | &:hover { | ||
31 | color: prop(--colors --hover --fg); | ||
32 | } | ||
33 | |||
34 | @include modifier('icon') { | ||
35 | display: flex; | ||
36 | align-items: center; | ||
37 | justify-content: center; | ||
38 | padding: 0; | ||
39 | width: prop(--dims --height); | ||
40 | } | ||
41 | |||
42 | @include modifier('active') { | ||
43 | font-weight: bold; | ||
44 | color: prop(--colors --active --fg); | ||
45 | } | ||
46 | } | ||
47 | |||
48 | @include element('icon') { | ||
49 | width: 1.5em; | ||
50 | height: 1.5em; | ||
51 | } | ||
22 | } | 52 | } |
23 | } | 53 | } |
diff --git a/assets/css/components/_landing-banner.scss b/assets/css/components/_landing-banner.scss deleted file mode 100644 index f1b8595..0000000 --- a/assets/css/components/_landing-banner.scss +++ /dev/null | |||
@@ -1,49 +0,0 @@ | |||
1 | @include namespace('landing-banner') { | ||
2 | @include store(( | ||
3 | --colors: ( | ||
4 | --emph: ( | ||
5 | --fg: prop(--colors --accent --color, $global: true), | ||
6 | --bg: prop(--colors --bg-hi, $global: true) | ||
7 | ) | ||
8 | ) | ||
9 | )); | ||
10 | |||
11 | @include component(namespace()) { | ||
12 | @include element('title') { | ||
13 | max-width: 7em; | ||
14 | margin-top: 0; | ||
15 | transform: translateX(-.06em); | ||
16 | font-family: $font-fam--large; | ||
17 | font-weight: 350; | ||
18 | line-height: 1.2; | ||
19 | text-transform: none; | ||
20 | } | ||
21 | |||
22 | @include element('title-inner') { | ||
23 | background-image: linear-gradient( | ||
24 | to top, | ||
25 | transparent .15em, | ||
26 | #{prop(--colors --emph --bg)} .15em, | ||
27 | #{prop(--colors --emph --bg)} .6em, | ||
28 | transparent .6em | ||
29 | ); | ||
30 | } | ||
31 | |||
32 | @include element('emph') { | ||
33 | color: prop(--colors --emph --fg); | ||
34 | font-weight: 550; | ||
35 | } | ||
36 | |||
37 | @include media('<=md') { | ||
38 | @include element('title') { | ||
39 | max-width: none; | ||
40 | } | ||
41 | } | ||
42 | |||
43 | @include iro-responsive-env(('md', 'lg')) { | ||
44 | @include element('title') { | ||
45 | font-size: iro-responsive-set((2.6rem, 3.4rem)); | ||
46 | } | ||
47 | } | ||
48 | } | ||
49 | } | ||
diff --git a/assets/css/components/_outer-button.scss b/assets/css/components/_outer-button.scss deleted file mode 100644 index fb3a51e..0000000 --- a/assets/css/components/_outer-button.scss +++ /dev/null | |||
@@ -1,89 +0,0 @@ | |||
1 | @include namespace('outer-button') { | ||
2 | @include store(( | ||
3 | --colors: ( | ||
4 | --fg: prop(--colors --bg-hi, $global: true), | ||
5 | --bg: prop(--colors --fg-lo, $global: true), | ||
6 | --border: prop(--colors --fg, $global: true), | ||
7 | --hover: ( | ||
8 | --bg: prop(--colors --accent --color, $global: true), | ||
9 | --fg: prop(--colors --bg-hi, $global: true), | ||
10 | ), | ||
11 | --inverted: ( | ||
12 | --fg: prop(--colors --fg-lo, $global: true), | ||
13 | --bg: prop(--colors --bg-hi, $global: true), | ||
14 | ) | ||
15 | ), | ||
16 | --dims: ( | ||
17 | --pad-x: 1.7rem, | ||
18 | ) | ||
19 | )); | ||
20 | |||
21 | @include component(namespace()) { | ||
22 | display: flex; | ||
23 | height: prop(--dims --outer, $global: true); | ||
24 | transition: background-color .2s, color .2s; | ||
25 | background-color: prop(--colors --bg); | ||
26 | color: prop(--colors --fg); | ||
27 | font-size: 1rem; | ||
28 | font-weight: 700; | ||
29 | letter-spacing: .5px; | ||
30 | text-decoration: none; | ||
31 | text-transform: uppercase; | ||
32 | |||
33 | @include modifier('inverted') { | ||
34 | background-color: prop(--colors --inverted --bg); | ||
35 | color: prop(--colors --inverted --fg); | ||
36 | } | ||
37 | |||
38 | @include modifier('scroll-top') { | ||
39 | position: absolute; | ||
40 | right: 0; | ||
41 | bottom: 0; | ||
42 | } | ||
43 | |||
44 | @include element('icon') { | ||
45 | display: flex; | ||
46 | position: relative; | ||
47 | flex: 0 0 auto; | ||
48 | align-items: center; | ||
49 | justify-content: center; | ||
50 | width: prop(--dims --outer, $global: true); | ||
51 | height: 100%; | ||
52 | |||
53 | @include next-element('content') { | ||
54 | margin-left: -1px; | ||
55 | border-left: 1px solid prop(--colors --border); | ||
56 | } | ||
57 | } | ||
58 | |||
59 | @include element('icon-symbol') { | ||
60 | display: block; | ||
61 | width: 1.5em; | ||
62 | height: 1.5em; | ||
63 | } | ||
64 | |||
65 | @include element('content') { | ||
66 | height: 100%; | ||
67 | padding-right: prop(--dims --pad-x); | ||
68 | padding-left: prop(--dims --pad-x); | ||
69 | transition: border-left-color .2s; | ||
70 | font-size: 1 / 16 * 14em; | ||
71 | line-height: prop(--dims --outer, $global: true); | ||
72 | white-space: nowrap; | ||
73 | } | ||
74 | |||
75 | &:link, | ||
76 | &:visited { | ||
77 | &:hover { | ||
78 | background-color: prop(--colors --hover --bg); | ||
79 | color: prop(--colors --hover --fg); | ||
80 | |||
81 | @include element('icon') { | ||
82 | @include next-element('content') { | ||
83 | border-left-color: transparent; | ||
84 | } | ||
85 | } | ||
86 | } | ||
87 | } | ||
88 | } | ||
89 | } | ||
diff --git a/assets/css/components/_post-list.scss b/assets/css/components/_post-list.scss index 7a3b8a0..5126589 100644 --- a/assets/css/components/_post-list.scss +++ b/assets/css/components/_post-list.scss | |||
@@ -7,6 +7,9 @@ | |||
7 | --meta: ( | 7 | --meta: ( |
8 | --fg: prop(--colors --fg-hi, $global: true), | 8 | --fg: prop(--colors --fg-hi, $global: true), |
9 | ) | 9 | ) |
10 | ), | ||
11 | --dims: ( | ||
12 | --col-width: 17em | ||
10 | ) | 13 | ) |
11 | )); | 14 | )); |
12 | 15 | ||
@@ -39,5 +42,19 @@ | |||
39 | margin-top: 1px; | 42 | margin-top: 1px; |
40 | } | 43 | } |
41 | } | 44 | } |
45 | |||
46 | @include modifier('grid') { | ||
47 | @include element('category-content') { | ||
48 | display: grid; | ||
49 | grid-template-columns: repeat(auto-fill, minmax(#{prop(--dims --col-width)}, 1fr)); | ||
50 | gap: $line-height * .5rem; | ||
51 | } | ||
52 | |||
53 | @include element('post') { | ||
54 | @include next-twin-element { | ||
55 | margin-top: 0; | ||
56 | } | ||
57 | } | ||
58 | } | ||
42 | } | 59 | } |
43 | } | 60 | } |
diff --git a/assets/css/components/_project.scss b/assets/css/components/_project.scss deleted file mode 100644 index 5248e32..0000000 --- a/assets/css/components/_project.scss +++ /dev/null | |||
@@ -1,68 +0,0 @@ | |||
1 | @include namespace('project') { | ||
2 | @include store(( | ||
3 | --colors: ( | ||
4 | --bg: prop(--colors --bg-hi, $global: true), | ||
5 | ) | ||
6 | )); | ||
7 | |||
8 | @include component(namespace()) { | ||
9 | position: relative; | ||
10 | overflow: hidden; | ||
11 | box-shadow: prop(--dims --obj-shadow, $global: true) prop(--colors --obj-shadow, $global: true); | ||
12 | |||
13 | &::before { | ||
14 | content: ''; | ||
15 | display: block; | ||
16 | padding-top: 12em; | ||
17 | padding-bottom: 5vw; | ||
18 | background-color: prop(--colors --bg); | ||
19 | } | ||
20 | |||
21 | &:link, | ||
22 | &:visited { | ||
23 | color: currentColor; | ||
24 | text-decoration: none; | ||
25 | |||
26 | &:hover, | ||
27 | &:focus { | ||
28 | @include element('picture') { | ||
29 | opacity: .75; | ||
30 | filter: blur(0); | ||
31 | } | ||
32 | |||
33 | @include element('card') { | ||
34 | transform: translateY(#{prop(--card --dims --hover-offset, $global: true)}); | ||
35 | background-color: prop(--card --colors --hover --bg, $global: true); | ||
36 | color: prop(--card --colors --hover --fg, $global: true); | ||
37 | |||
38 | * { | ||
39 | color: currentColor; | ||
40 | } | ||
41 | } | ||
42 | } | ||
43 | } | ||
44 | |||
45 | @include element('picture') { | ||
46 | display: block; | ||
47 | position: absolute; | ||
48 | z-index: 10; | ||
49 | top: 0; | ||
50 | left: 0; | ||
51 | width: 100%; | ||
52 | height: 100%; | ||
53 | object-fit: cover; | ||
54 | object-position: center center; | ||
55 | transition: opacity .2s; | ||
56 | mask-image: iro-easing-gradient(linear, 340deg, rgba(#000, .75) 7em, ease, #000 26em); | ||
57 | } | ||
58 | |||
59 | @include element('card') { | ||
60 | position: absolute; | ||
61 | z-index: 20; | ||
62 | right: 1em; | ||
63 | bottom: 1em; | ||
64 | min-width: 15em; | ||
65 | max-width: calc(100% - 2em); | ||
66 | } | ||
67 | } | ||
68 | } | ||
diff --git a/assets/css/layouts/_card-grid.scss b/assets/css/layouts/_card-grid.scss deleted file mode 100644 index c9d927a..0000000 --- a/assets/css/layouts/_card-grid.scss +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | @include namespace('card-grid') { | ||
2 | @include store(( | ||
3 | --dims: ( | ||
4 | --col-width: 17em | ||
5 | ) | ||
6 | )); | ||
7 | |||
8 | @include layout(namespace()) { | ||
9 | display: grid; | ||
10 | grid-template-columns: repeat(auto-fill, minmax(#{prop(--dims --col-width)}, 1fr)); | ||
11 | gap: .6rem; | ||
12 | filter: drop-shadow(#{prop(--dims --obj-shadow, $global: true)} #{prop(--colors --obj-shadow, $global: true)}); | ||
13 | |||
14 | @include element('card') { | ||
15 | box-shadow: none; | ||
16 | } | ||
17 | |||
18 | @include media('<=sm') { | ||
19 | grid-template-columns: 1fr; | ||
20 | } | ||
21 | } | ||
22 | } | ||
diff --git a/assets/css/layouts/_landing.scss b/assets/css/layouts/_landing.scss deleted file mode 100644 index a81b105..0000000 --- a/assets/css/layouts/_landing.scss +++ /dev/null | |||
@@ -1,54 +0,0 @@ | |||
1 | @include namespace('landing') { | ||
2 | @include store(( | ||
3 | --dims: ( | ||
4 | --banner-width: 30rem, | ||
5 | ), | ||
6 | --colors: ( | ||
7 | --banner-bg: prop(--colors --bg, $global: true) | ||
8 | ) | ||
9 | )); | ||
10 | |||
11 | @include layout(namespace()) { | ||
12 | display: flex; | ||
13 | flex-direction: row; | ||
14 | align-items: center; | ||
15 | margin-top: auto; | ||
16 | margin-bottom: auto; | ||
17 | |||
18 | @include element('banner') { | ||
19 | width: 70%; | ||
20 | max-width: prop(--dims --banner-width); | ||
21 | background-color: prop(--colors --banner-bg); | ||
22 | } | ||
23 | |||
24 | @include element('content') { | ||
25 | width: 100%; | ||
26 | } | ||
27 | |||
28 | @include iro-responsive-env(('md', 'lg')) { | ||
29 | padding-right: iro-responsive-set((0, 3rem)); | ||
30 | padding-left: iro-responsive-set((0, 6rem)); | ||
31 | } | ||
32 | |||
33 | @include media('<=md') { | ||
34 | display: block; | ||
35 | |||
36 | @include element('side') { | ||
37 | display: none; | ||
38 | |||
39 | @include sibling-element('side') { | ||
40 | display: block; | ||
41 | } | ||
42 | } | ||
43 | |||
44 | @include element('banner', 'content') { | ||
45 | width: auto; | ||
46 | padding: 0; | ||
47 | } | ||
48 | |||
49 | @include element('banner') { | ||
50 | max-width: none; | ||
51 | } | ||
52 | } | ||
53 | } | ||
54 | } | ||
diff --git a/assets/css/layouts/_project-grid.scss b/assets/css/layouts/_project-grid.scss deleted file mode 100644 index 5ed983c..0000000 --- a/assets/css/layouts/_project-grid.scss +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | @include namespace('project-grid') { | ||
2 | @include store(( | ||
3 | --dims: ( | ||
4 | --col-width: 20em | ||
5 | ) | ||
6 | )); | ||
7 | |||
8 | @include layout(namespace()) { | ||
9 | display: grid; | ||
10 | grid-template-columns: repeat(auto-fill, minmax(#{prop(--dims --col-width)}, 1fr)); | ||
11 | gap: 2rem; | ||
12 | filter: drop-shadow(#{prop(--dims --obj-shadow, $global: true)} #{prop(--colors --obj-shadow, $global: true)}); | ||
13 | |||
14 | @include element('project') { | ||
15 | box-shadow: none; | ||
16 | } | ||
17 | |||
18 | @include media('<=sm') { | ||
19 | grid-template-columns: 1fr; | ||
20 | } | ||
21 | } | ||
22 | } | ||
diff --git a/assets/css/layouts/_section.scss b/assets/css/layouts/_section.scss deleted file mode 100644 index 80b8ca9..0000000 --- a/assets/css/layouts/_section.scss +++ /dev/null | |||
@@ -1,74 +0,0 @@ | |||
1 | @include namespace('section') { | ||
2 | @include store(( | ||
3 | --colors: ( | ||
4 | --border: prop(--colors --obj-hi, $global: true), | ||
5 | --body-bg: transparent, | ||
6 | ) | ||
7 | )); | ||
8 | |||
9 | @include store(( | ||
10 | --colors: ( | ||
11 | --body-bg: prop(--colors --bg-hi, $global: true), | ||
12 | ) | ||
13 | ), 'light'); | ||
14 | |||
15 | @include layout(namespace()) { | ||
16 | position: relative; | ||
17 | |||
18 | @include modifier('flex') { | ||
19 | display: flex; | ||
20 | flex-direction: column; | ||
21 | align-items: stretch; | ||
22 | justify-content: flex-start; | ||
23 | } | ||
24 | |||
25 | @include modifier('fullscreen') { | ||
26 | box-sizing: border-box; | ||
27 | min-height: 100vh; | ||
28 | margin-bottom: calc(-1 * #{prop(--dims --outer, $global: true)}); | ||
29 | padding-bottom: prop(--dims --outer, $global: true); | ||
30 | } | ||
31 | |||
32 | @include modifier('body') { | ||
33 | background-color: prop(--colors --body-bg); | ||
34 | } | ||
35 | |||
36 | @include modifier('no-header') { | ||
37 | padding-top: prop(--dims --outer, $global: true); | ||
38 | } | ||
39 | |||
40 | @include element('header') { | ||
41 | display: flex; | ||
42 | flex-direction: row; | ||
43 | align-items: center; | ||
44 | height: prop(--dims --outer, $global: true); | ||
45 | font-size: 1 / 16 * 15em; | ||
46 | |||
47 | @include modifier('sticky') { | ||
48 | position: sticky; | ||
49 | z-index: 9000; | ||
50 | top: 0; | ||
51 | left: 0; | ||
52 | } | ||
53 | } | ||
54 | |||
55 | /*@include element('footer') { | ||
56 | position: absolute; | ||
57 | z-index: 10000; | ||
58 | right: 0; | ||
59 | bottom: 0; | ||
60 | height: prop(--dims --outer, $global: true); | ||
61 | font-size: 1 / 16 * 15em; | ||
62 | }*/ | ||
63 | |||
64 | @include element('header-separator') { | ||
65 | flex: 1 1 auto; | ||
66 | width: 100%; | ||
67 | height: 100%; | ||
68 | margin-top: -1px; | ||
69 | margin-right: prop(--container --dims --pad-x, $global: true); | ||
70 | margin-left: prop(--container --dims --pad-x, $global: true); | ||
71 | border-top: 1px solid prop(--colors --border); | ||
72 | } | ||
73 | } | ||
74 | } | ||
diff --git a/assets/css/style.scss b/assets/css/style.scss index cd27f35..99d52c1 100644 --- a/assets/css/style.scss +++ b/assets/css/style.scss | |||
@@ -10,22 +10,14 @@ | |||
10 | @import 'basics'; | 10 | @import 'basics'; |
11 | 11 | ||
12 | @import 'layouts/container'; | 12 | @import 'layouts/container'; |
13 | @import 'layouts/section'; | ||
14 | @import 'layouts/landing'; | ||
15 | 13 | ||
16 | @import 'objects/icon'; | 14 | @import 'objects/icon'; |
17 | 15 | ||
18 | @import 'components/outer-button'; | ||
19 | @import 'components/header'; | 16 | @import 'components/header'; |
20 | @import 'components/landing-banner'; | ||
21 | @import 'components/footer'; | 17 | @import 'components/footer'; |
22 | @import 'components/card'; | 18 | @import 'components/card'; |
23 | @import 'components/project'; | ||
24 | @import 'components/post-list'; | 19 | @import 'components/post-list'; |
25 | 20 | ||
26 | @import 'layouts/card-grid'; | ||
27 | @import 'layouts/project-grid'; | ||
28 | |||
29 | @import 'scopes/colored-links'; | 21 | @import 'scopes/colored-links'; |
30 | @import 'scopes/headlines'; | 22 | @import 'scopes/headlines'; |
31 | @import 'scopes/body'; | 23 | @import 'scopes/body'; |
diff --git a/content/index.md b/content/index.md index e144d39..c9ce120 100644 --- a/content/index.md +++ b/content/index.md | |||
@@ -1,3 +1,8 @@ | |||
1 | --- | 1 | --- |
2 | title: Home | 2 | title: Home |
3 | --- | 3 | --- |
4 | |||
5 | # I'm a **red fox** in disguise. {.u-mt0} | ||
6 | |||
7 | Hi, I'm Volpeon. I enjoy programming, creating vector art and designing user interfaces. | ||
8 | You can find me on the [Fediverse](https://mk.vulpes.one/@volpeon). | ||
diff --git a/content/symbols.svg b/content/symbols.svg index 6964327..f633664 100644 --- a/content/symbols.svg +++ b/content/symbols.svg | |||
@@ -6,61 +6,10 @@ | |||
6 | <path fill="currentColor" stroke="none" d="M 9.915975,13 H 12.08401 L 15.584018,3 h -2.168036 z" /> | 6 | <path fill="currentColor" stroke="none" d="M 9.915975,13 H 12.08401 L 15.584018,3 h -2.168036 z" /> |
7 | </symbol> | 7 | </symbol> |
8 | 8 | ||
9 | <symbol id="icon-arrow-down-right" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | ||
10 | <path d="m5.25 11.75h6.5v-6.5m0 6.5-7.5-7.5" fill="none" stroke="currentColor" /> | ||
11 | </symbol> | ||
12 | |||
13 | <symbol id="icon-arrow-up" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | ||
14 | <path d="m12.25 7.25-4.5-4.5-4.5 4.5m4.5-4.5v10.5" fill="none" stroke="currentColor" /> | ||
15 | </symbol> | ||
16 | |||
17 | <symbol id="icon-arrow-right" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 9 | <symbol id="icon-arrow-right" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> |
18 | <path d="m8.75 3.75 4.5 4.5-4.5 4.5m-6-4.5h10.5" fill="none" stroke="currentColor" /> | 10 | <path d="m8.75 3.75 4.5 4.5-4.5 4.5m-6-4.5h10.5" fill="none" stroke="currentColor" /> |
19 | </symbol> | 11 | </symbol> |
20 | 12 | ||
21 | <symbol id="icon-envelope" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | ||
22 | <path | ||
23 | d="m1.25 3.5c0-0.4155 0.3345-0.75 0.75-0.75h12c0.4155 0 0.75 0.3345 0.75 0.75v8.5c0 0.4155-0.3345 0.75-0.75 0.75h-12c-0.4155 0-0.75-0.3345-0.75-0.75zm0 0.25 5.2845 4.3681c1.0065 0.83198 1.9181 0.82912 2.9676-0.03704l5.2479-4.3311" | ||
24 | fill="none" stroke="currentColor" /> | ||
25 | </symbol> | ||
26 | |||
27 | <symbol id="icon-hash" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | ||
28 | <path d="m4.7501 14.25 0.99984-12m4 12 1.0002-12m-8.5001 3.5h11m-11 5h11" fill="none" stroke="currentColor" /> | ||
29 | </symbol> | ||
30 | |||
31 | <symbol id="icon-messages" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | ||
32 | <path | ||
33 | d="m1.5 1.25h9c0.4155 0 0.75 0.3345 0.75 0.75v6.9999c0 0.4155-0.3345 0.75-0.75 0.75h-7.25l-2.5 2.5001v-10.25c0-0.4155 0.3345-0.75 0.75-0.75z" | ||
34 | fill="none" stroke="currentColor" /> | ||
35 | <path d="m5.25 12.75h7.5l2.5 2.5001v-10.25c0-0.4155-0.3345-0.75-0.75-0.75h-0.25" fill="none" | ||
36 | stroke="currentColor" /> | ||
37 | </symbol> | ||
38 | |||
39 | <symbol id="icon-arrow-up-right" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | ||
40 | <path d="m5.25 4.25h6.5v6.5m0-6.5-7.5 7.5" fill="none" stroke="currentColor" /> | ||
41 | </symbol> | ||
42 | |||
43 | <symbol id="icon-parallelogram" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | ||
44 | <path d="m15.25 4.25-5 7.5h-9.5l5-7.5z" fill="none" stroke="currentColor" /> | ||
45 | </symbol> | ||
46 | |||
47 | <symbol id="icon-video" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | ||
48 | <path d="m6.75 6.25 2.5 2-2.5 2z" fill="currentColor" stroke="currentColor" /> | ||
49 | <rect x=".75" y="2.25" width="14.5" height="12" ry=".75" fill="none" stroke="currentColor" /> | ||
50 | </symbol> | ||
51 | |||
52 | <symbol id="icon-graph" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | ||
53 | <path | ||
54 | d="m7.25 12.5c0 0.9665-0.7835 1.75-1.75 1.75s-1.75-0.7835-1.75-1.75 0.7835-1.75 1.75-1.75 1.75 0.7835 1.75 1.75zm8-3c0 0.9665-0.7835 1.75-1.75 1.75s-1.75-0.7835-1.75-1.75c0-0.9665 0.7835-1.75 1.75-1.75s1.75 0.7835 1.75 1.75zm-6-6.5c0 0.9665-0.7835 1.75-1.75 1.75s-1.75-0.7835-1.75-1.75 0.7835-1.75 1.75-1.75 1.75 0.7835 1.75 1.75zm2 12.25 1.6219-4.1121m-8.331-0.13789-3.7909-5.25m6.4058 6.1626 4.6868-1.8235m-3.163-5.7868 3.5859 3.9307m-5.0863-3.5029-1.3496 6.043" | ||
55 | fill="none" stroke="currentColor" /> | ||
56 | </symbol> | ||
57 | |||
58 | <symbol id="icon-git-branch" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | ||
59 | <path | ||
60 | d="m12.25 5.75c0 3.5899-2.9101 6.5-6.5 6.5m3e-7 0c0 1.1046-0.89543 2-2 2s-2-0.89543-2-2 0.89543-2 2-2 2 0.89543 2 2zm8.5-8.5c0 1.1046-0.89543 2-2 2s-2-0.89543-2-2 0.89543-2 2-2 2 0.89543 2 2zm-10.5 6.4998v-7.9998" | ||
61 | fill="none" stroke="currentColor" /> | ||
62 | </symbol> | ||
63 | |||
64 | <symbol id="icon-smile" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> | 13 | <symbol id="icon-smile" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid"> |
65 | <path d="m11.309 9.7658c-0.63143 1.1808-1.8764 1.9842-3.3091 1.9842-1.4381 0-2.6872-0.80955-3.3163-1.9978" | 14 | <path d="m11.309 9.7658c-0.63143 1.1808-1.8764 1.9842-3.3091 1.9842-1.4381 0-2.6872-0.80955-3.3163-1.9978" |
66 | fill="none" stroke="currentColor" /> | 15 | fill="none" stroke="currentColor" /> |
diff --git a/templates/base.html b/templates/base.html index 5542401..554651d 100644 --- a/templates/base.html +++ b/templates/base.html | |||
@@ -45,21 +45,17 @@ | |||
45 | 45 | ||
46 | <body> | 46 | <body> |
47 | <nav class="c-header"> | 47 | <nav class="c-header"> |
48 | <a class="c-outer-button c-outer-button--inverted" href="/" title="$site.title$"> | 48 | <a class="c-header__item c-header__item--icon" href="/" title="$site.title$"> |
49 | <span class="c-outer-button__icon"> | 49 | <svg class="c-header__icon"> |
50 | <svg class="c-outer-button__icon-symbol"> | 50 | <use href="/symbols.svg#logo"></use> |
51 | <use href="/symbols.svg#logo"></use> | 51 | </svg> |
52 | </svg> | ||
53 | </span> | ||
54 | </a> | 52 | </a> |
55 | $if(namespace.root.is_index)$ | 53 | $if(namespace.root.is_index)$ |
56 | $else$ | 54 | $else$ |
57 | $for(menus.main.items)$ | 55 | $for(menus.main.items)$ |
58 | $if(it.active)$ | 56 | $if(it.active)$ |
59 | <a class="c-outer-button" href="$it.url$"> | 57 | <a class="c-header__item" href="$it.url$"> |
60 | <span class="c-outer-button__content"> | 58 | $it.label$ |
61 | $it.label$ | ||
62 | </span> | ||
63 | </a> | 59 | </a> |
64 | $endif$ | 60 | $endif$ |
65 | $endfor$ | 61 | $endfor$ |
@@ -82,14 +78,6 @@ ${layouts/page()} | |||
82 | <pre class="c-footer__ascii u-dn@sm-lo">${layouts/ascii_fox()}</pre> | 78 | <pre class="c-footer__ascii u-dn@sm-lo">${layouts/ascii_fox()}</pre> |
83 | <pre class="c-footer__ascii u-dn@sm-hi">${layouts/ascii_fox_small()}</pre> | 79 | <pre class="c-footer__ascii u-dn@sm-hi">${layouts/ascii_fox_small()}</pre> |
84 | </div> | 80 | </div> |
85 | |||
86 | <a class="c-outer-button c-outer-button--scroll-top" href="#" title="To the top"> | ||
87 | <span class="c-outer-button__icon"> | ||
88 | <svg class="c-outer-button__icon-symbol o-icon"> | ||
89 | <use href="/symbols.svg#icon-arrow-up"></use> | ||
90 | </svg> | ||
91 | </span> | ||
92 | </a> | ||
93 | </footer> | 81 | </footer> |
94 | </main> | 82 | </main> |
95 | </body> | 83 | </body> |
diff --git a/templates/layouts/categorized_list.html b/templates/layouts/categorized_list.html index f841fff..d5dafaf 100644 --- a/templates/layouts/categorized_list.html +++ b/templates/layouts/categorized_list.html | |||
@@ -1,49 +1,47 @@ | |||
1 | <section class="l-section l-section--no-header"> | 1 | <section class="l-container l-container--pad-x l-container--pad-y l-container--content"> |
2 | <div class="l-container l-container--pad-x l-container--pad-y l-container--content"> | 2 | <div class="s-headlines s-body s-colored-links"> |
3 | <div class="s-headlines s-colored-links"> | 3 | <h1 class="u-mt0"><span class="s-headlines__title-inner">$title$</span></h1> |
4 | <h1 class="u-mt0"><span class="s-headlines__title-inner">$title$</span></h1> | ||
5 | 4 | ||
6 | $body$ | 5 | $body$ |
7 | </div> | 6 | </div> |
8 | 7 | ||
9 | <div class="c-post-list"> | 8 | <div class="c-post-list"> |
10 | $for(pages.asc_title)$ | 9 | $for(pages.asc_title)$ |
11 | $if(it.pages)$ | 10 | $if(it.pages)$ |
12 | <h2 class="c-post-list__category-header"> | 11 | <h2 class="c-post-list__category-header"> |
13 | <a href="$it.url.rel$">$it.title$</a> | 12 | <a href="$it.url.rel$">$it.title$</a> |
14 | </h2> | 13 | </h2> |
15 | <div class="c-post-list__category-content"> | 14 | <div class="c-post-list__category-content"> |
16 | $if(pages.asc_title.show_dates)$ | 15 | $if(pages.asc_title.show_dates)$ |
17 | $for(it.pages.desc_date)$ | 16 | $for(it.pages.desc_date)$ |
18 | <a href="$it.url.rel$" class="c-post-list__post c-card"> | 17 | <a href="$it.url.rel$" class="c-post-list__post c-card"> |
19 | <div class="c-card__block c-card__block--indicator"></div> | 18 | <div class="c-card__block c-card__block--indicator"></div> |
20 | <div class="c-card__block c-card__block--main"> | 19 | <div class="c-card__block c-card__block--main"> |
21 | $it.title$ | 20 | $it.title$ |
22 | </div> | 21 | </div> |
23 | <time datetime="$it.date.yyyy_mm_dd$" class="c-card__block u-fs0"> | 22 | <time datetime="$it.date.yyyy_mm_dd$" class="c-card__block u-fs0"> |
24 | <small class="u-dn@sm-hi"> | 23 | <small class="u-dn@sm-hi"> |
25 | $it.date.short$ | 24 | $it.date.short$ |
26 | </small> | 25 | </small> |
27 | <small class="u-dn@sm-lo"> | 26 | <small class="u-dn@sm-lo"> |
28 | $it.date.long$ | 27 | $it.date.long$ |
29 | </small> | 28 | </small> |
30 | </time> | 29 | </time> |
31 | </a> | 30 | </a> |
32 | $endfor$ | 31 | $endfor$ |
33 | $else$ | 32 | $else$ |
34 | $for(it.pages.asc_title)$ | 33 | $for(it.pages.asc_title)$ |
35 | <a href="$it.url.rel$" class="c-post-list__post c-card"> | 34 | <a href="$it.url.rel$" class="c-post-list__post c-card"> |
36 | <div class="c-card__block c-card__block--indicator"></div> | 35 | <div class="c-card__block c-card__block--indicator"></div> |
37 | <div class="c-card__block c-card__block--main"> | 36 | <div class="c-card__block c-card__block--main"> |
38 | $it.title$ | 37 | $it.title$ |
39 | </div> | 38 | </div> |
40 | </a> | 39 | </a> |
41 | $endfor$ | 40 | $endfor$ |
42 | $endif$ | 41 | $endif$ |
43 | </div> | 42 | </div> |
44 | $endif$ | 43 | $endif$ |
45 | $endfor$ | 44 | $endfor$ |
46 | </div> | ||
47 | </div> | 45 | </div> |
48 | </section> | 46 | </section> |
49 | 47 | ||
diff --git a/templates/layouts/index.html b/templates/layouts/index.html index 1f1a092..b76c606 100644 --- a/templates/layouts/index.html +++ b/templates/layouts/index.html | |||
@@ -1,81 +1,13 @@ | |||
1 | <section class="l-section l-section--fullscreen l-section--no-header l-section--flex"> | 1 | <section class="l-container l-container--pad-x l-container--pad-y l-container--content"> |
2 | <div class="l-landing"> | 2 | <div class="s-headlines s-body"> |
3 | <header class="l-landing__banner"> | ||
4 | <div class="c-landing-banner l-container l-container--pad-x l-container--pad-y l-container--content"> | ||
5 | <h1 class="c-landing-banner__title"> | ||
6 | <span class="c-landing-banner__title-inner"> | ||
7 | I'm a <strong class="c-landing-banner__emph">red fox</strong> in disguise. | ||
8 | </span> | ||
9 | </h1> | ||
10 | <p class="c-landing-banner__text s-body"> | ||
11 | Hi, I'm Volpeon. I enjoy programming, creating vector art and designing user interfaces. | ||
12 | </p> | ||
13 | </div> | ||
14 | </header> | ||
15 | |||
16 | <section class="l-landing__content"> | ||
17 | <div class="l-container l-container--pad-x l-container--pad-y l-container--content u-pt0@md-lo"> | ||
18 | <div class="l-card-grid"> | ||
19 | $for(profiles)$ | ||
20 | $if(it.featured)$ | ||
21 | $if(it.url)$ | ||
22 | <a class="l-card-grid__card c-card" href="$it.url$"> | ||
23 | $else$ | ||
24 | <div class="l-card-grid__card c-card"> | ||
25 | $endif$ | ||
26 | $if(it.icon)$ | ||
27 | <svg class="c-card__block o-icon"> | ||
28 | <use href="/symbols.svg#icon-$it.icon$"></use> | ||
29 | </svg> | ||
30 | $endif$ | ||
31 | <div class="c-card__block c-card__block--main"> | ||
32 | <strong class="u-db">$it.platform$</strong> | ||
33 | <small class="u-db">$it.username$</small> | ||
34 | </div> | ||
35 | $if(it.url)$ | ||
36 | <svg class="c-card__block o-icon"> | ||
37 | <use href="/symbols.svg#icon-arrow-up-right"></use> | ||
38 | </svg> | ||
39 | $endif$ | ||
40 | $if(it.url)$ | ||
41 | </a> | ||
42 | $else$ | ||
43 | </div> | ||
44 | $endif$ | ||
45 | $endif$ | ||
46 | $endfor$ | ||
47 | </div> | ||
48 | |||
49 | $body$ | 3 | $body$ |
50 | </div> | ||
51 | </section> | ||
52 | </div> | 4 | </div> |
53 | </section> | ||
54 | |||
55 | <section class="l-section" id="projects"> | ||
56 | <header class="l-section__header l-section__header--sticky"> | ||
57 | <a class="c-outer-button" href="#projects"> | ||
58 | <span class="c-outer-button__icon"> | ||
59 | <svg class="c-outer-button__icon-symbol o-icon"> | ||
60 | <use href="/symbols.svg#icon-arrow-down-right"></use> | ||
61 | </svg> | ||
62 | </span> | ||
63 | <span class="c-outer-button__content"> | ||
64 | $pages.by_id.projects.title$ | ||
65 | </span> | ||
66 | </a> | ||
67 | |||
68 | <div class="l-section__header-separator"></div> | ||
69 | </header> | ||
70 | 5 | ||
71 | <div class="l-container l-container--pad-x l-container--pad-y l-project-grid"> | 6 | <div id="projects" class="c-post-list c-post-list--grid"> |
72 | $for(pages.by_id.projects.pages.all)$ | 7 | <div class="c-post-list__category-content"> |
73 | $for(it.pages.all)$ | 8 | $for(pages.by_id.projects.pages.all)$ |
74 | <a class="l-project-grid__project c-project" href="$it.url.rel$"> | 9 | $for(it.pages.all)$ |
75 | $if(it.preview)$ | 10 | <a href="$it.url.rel$" class="c-post-list__post c-card"> |
76 | <img class="c-project__picture" src="$it.preview.rel$" /> | ||
77 | $endif$ | ||
78 | <div class="c-project__card c-card"> | ||
79 | $if(pages.by_id.projects.pages.all.icon)$ | 11 | $if(pages.by_id.projects.pages.all.icon)$ |
80 | <svg class="c-card__block o-icon"> | 12 | <svg class="c-card__block o-icon"> |
81 | <use href="/symbols.svg#icon-$pages.by_id.projects.pages.all.icon$"></use> | 13 | <use href="/symbols.svg#icon-$pages.by_id.projects.pages.all.icon$"></use> |
@@ -88,9 +20,9 @@ $body$ | |||
88 | <svg class="c-card__block o-icon"> | 20 | <svg class="c-card__block o-icon"> |
89 | <use href="/symbols.svg#icon-arrow-right"></use> | 21 | <use href="/symbols.svg#icon-arrow-right"></use> |
90 | </svg> | 22 | </svg> |
91 | </div> | 23 | </a> |
92 | </a> | 24 | $endfor$ |
93 | $endfor$ | 25 | $endfor$ |
94 | $endfor$ | 26 | </div> |
95 | </div> | 27 | </div> |
96 | </section> | 28 | </section> |
diff --git a/templates/layouts/list.html b/templates/layouts/list.html index f269d10..4831228 100644 --- a/templates/layouts/list.html +++ b/templates/layouts/list.html | |||
@@ -1,41 +1,39 @@ | |||
1 | <section class="l-section l-section--no-header"> | 1 | <section class="l-container l-container--pad-x l-container--pad-y l-container--content"> |
2 | <div class="l-container l-container--pad-x l-container--pad-y l-container--content"> | 2 | <div class="s-headlines s-colored-links"> |
3 | <div class="s-headlines s-colored-links"> | 3 | <h1 class="u-mt0"><span class="s-headlines__title-inner">$title$</span></h1> |
4 | <h1 class="u-mt0"><span class="s-headlines__title-inner">$title$</span></h1> | ||
5 | 4 | ||
6 | $body$ | 5 | $body$ |
7 | </div> | 6 | </div> |
8 | 7 | ||
9 | <div class="c-post-list"> | 8 | <div class="c-post-list"> |
10 | <div class="c-post-list__category-content"> | 9 | <div class="c-post-list__category-content"> |
11 | $if(show_dates)$ | 10 | $if(show_dates)$ |
12 | $for(pages.desc_date)$ | 11 | $for(pages.desc_date)$ |
13 | <a href="$it.url.rel$" class="c-post-list__post c-card"> | 12 | <a href="$it.url.rel$" class="c-post-list__post c-card"> |
14 | <div class="c-card__block c-card__block--indicator"></div> | 13 | <div class="c-card__block c-card__block--indicator"></div> |
15 | <div class="c-card__block c-card__block--main"> | 14 | <div class="c-card__block c-card__block--main"> |
16 | $it.title$ | 15 | $it.title$ |
17 | </div> | 16 | </div> |
18 | <time datetime="$it.date.yyyy_mm_dd$" class="c-card__block u-fs0"> | 17 | <time datetime="$it.date.yyyy_mm_dd$" class="c-card__block u-fs0"> |
19 | <small class="u-dn@sm-hi"> | 18 | <small class="u-dn@sm-hi"> |
20 | $it.date.short$ | 19 | $it.date.short$ |
21 | </small> | 20 | </small> |
22 | <small class="u-dn@sm-lo"> | 21 | <small class="u-dn@sm-lo"> |
23 | $it.date.long$ | 22 | $it.date.long$ |
24 | </small> | 23 | </small> |
25 | </time> | 24 | </time> |
26 | </a> | 25 | </a> |
27 | $endfor$ | 26 | $endfor$ |
28 | $else$ | 27 | $else$ |
29 | $for(pages.asc_title)$ | 28 | $for(pages.asc_title)$ |
30 | <a href="$it.url.rel$" class="c-post-list__post c-card"> | 29 | <a href="$it.url.rel$" class="c-post-list__post c-card"> |
31 | <div class="c-card__block c-card__block--indicator"></div> | 30 | <div class="c-card__block c-card__block--indicator"></div> |
32 | <div class="c-card__block c-card__block--main"> | 31 | <div class="c-card__block c-card__block--main"> |
33 | $it.title$ | 32 | $it.title$ |
34 | </div> | 33 | </div> |
35 | </a> | 34 | </a> |
36 | $endfor$ | 35 | $endfor$ |
37 | $endif$ | 36 | $endif$ |
38 | </div> | ||
39 | </div> | 37 | </div> |
40 | </div> | 38 | </div> |
41 | </section> | 39 | </section> |
diff --git a/templates/layouts/page.html b/templates/layouts/page.html index 70f645b..978f7f6 100644 --- a/templates/layouts/page.html +++ b/templates/layouts/page.html | |||
@@ -1,13 +1,11 @@ | |||
1 | <section class="l-section l-section--no-header l-section--body"> | 1 | <section class="l-container l-container--pad-x l-container--pad-y l-container--content s-colored-links s-headlines s-headlines--body s-body"> |
2 | <div class="l-container l-container--pad-x l-container--pad-y l-container--content s-colored-links s-headlines s-headlines--body s-body"> | 2 | $if(show_date)$ |
3 | $if(show_date)$ | 3 | <div class="s-body__meta"> |
4 | <div class="s-body__meta"> | 4 | $date.long$ |
5 | $date.long$ | 5 | </div> |
6 | </div> | 6 | $endif$ |
7 | $endif$ | ||
8 | 7 | ||
9 | <h1 class="u-mt0"><span class="s-headlines__title-inner">$title$</span></h1> | 8 | <h1 class="u-mt0"><span class="s-headlines__title-inner">$title$</span></h1> |
10 | 9 | ||
11 | $body$ | 10 | $body$ |
12 | </div> | ||
13 | </section> | 11 | </section> |