oscailte 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +175 -0
  4. data/_includes/comments.html +21 -0
  5. data/_includes/footer.html +10 -0
  6. data/_includes/google-analytics.html +11 -0
  7. data/_includes/head.html +12 -0
  8. data/_includes/header.html +17 -0
  9. data/_includes/hero.html +17 -0
  10. data/_includes/icon.html +2 -0
  11. data/_includes/navigation.html +18 -0
  12. data/_includes/social.html +17 -0
  13. data/_includes/strings.html +9 -0
  14. data/_layouts/core.html +28 -0
  15. data/_layouts/default.html +7 -0
  16. data/_layouts/home.html +44 -0
  17. data/_layouts/page.html +5 -0
  18. data/_layouts/post.html +38 -0
  19. data/_sass/_oscailte.scss +147 -0
  20. data/_sass/oscailte/components/_button.scss +11 -0
  21. data/_sass/oscailte/components/_card.scss +19 -0
  22. data/_sass/oscailte/components/_footer.scss +22 -0
  23. data/_sass/oscailte/components/_header.scss +51 -0
  24. data/_sass/oscailte/components/_hero.scss +85 -0
  25. data/_sass/oscailte/components/_icon.scss +7 -0
  26. data/_sass/oscailte/components/_navigation.scss +32 -0
  27. data/_sass/oscailte/components/_recentposts.scss +59 -0
  28. data/_sass/oscailte/components/_skipnav.scss +11 -0
  29. data/_sass/oscailte/components/_social.scss +55 -0
  30. data/_sass/oscailte/components/_syntax.scss +72 -0
  31. data/_sass/oscailte/elements/_blockquote.scss +6 -0
  32. data/_sass/oscailte/elements/_body.scss +6 -0
  33. data/_sass/oscailte/elements/_code.scss +19 -0
  34. data/_sass/oscailte/elements/_headings.scss +15 -0
  35. data/_sass/oscailte/elements/_hr.scss +4 -0
  36. data/_sass/oscailte/elements/_html.scss +9 -0
  37. data/_sass/oscailte/elements/_img.scss +3 -0
  38. data/_sass/oscailte/elements/_links.scss +3 -0
  39. data/_sass/oscailte/generic/_font-face.scss +63 -0
  40. data/_sass/oscailte/generic/_lobotomised-owl.scss +3 -0
  41. data/_sass/oscailte/generic/_modern-normalize.scss +273 -0
  42. data/_sass/oscailte/layout/_container.scss +5 -0
  43. data/_sass/oscailte/layout/_home.scss +0 -0
  44. data/_sass/oscailte/layout/_post.scss +14 -0
  45. data/_sass/oscailte/layout/_stickyfooter.scss +11 -0
  46. data/_sass/oscailte/objects/_circuited.scss +6 -0
  47. data/_sass/oscailte/objects/_lists.scss +11 -0
  48. data/_sass/oscailte/objects/_muted.scss +3 -0
  49. data/_sass/oscailte/objects/_no-owl.scss +3 -0
  50. data/_sass/oscailte/tools/_functions.scss +27 -0
  51. data/_sass/oscailte/tools/_mixins.scss +29 -0
  52. data/assets/css/main.scss +5 -0
  53. data/assets/oscailte/fonts/lato-v16-latin-regular.eot +0 -0
  54. data/assets/oscailte/fonts/lato-v16-latin-regular.svg +435 -0
  55. data/assets/oscailte/fonts/lato-v16-latin-regular.ttf +0 -0
  56. data/assets/oscailte/fonts/lato-v16-latin-regular.woff +0 -0
  57. data/assets/oscailte/fonts/lato-v16-latin-regular.woff2 +0 -0
  58. data/assets/oscailte/fonts/merriweather-v21-latin-700.eot +0 -0
  59. data/assets/oscailte/fonts/merriweather-v21-latin-700.svg +375 -0
  60. data/assets/oscailte/fonts/merriweather-v21-latin-700.ttf +0 -0
  61. data/assets/oscailte/fonts/merriweather-v21-latin-700.woff +0 -0
  62. data/assets/oscailte/fonts/merriweather-v21-latin-700.woff2 +0 -0
  63. data/assets/oscailte/fonts/merriweather-v21-latin-italic.eot +0 -0
  64. data/assets/oscailte/fonts/merriweather-v21-latin-italic.svg +390 -0
  65. data/assets/oscailte/fonts/merriweather-v21-latin-italic.ttf +0 -0
  66. data/assets/oscailte/fonts/merriweather-v21-latin-italic.woff +0 -0
  67. data/assets/oscailte/fonts/merriweather-v21-latin-italic.woff2 +0 -0
  68. data/assets/oscailte/fonts/merriweather-v21-latin-regular.eot +0 -0
  69. data/assets/oscailte/fonts/merriweather-v21-latin-regular.svg +374 -0
  70. data/assets/oscailte/fonts/merriweather-v21-latin-regular.ttf +0 -0
  71. data/assets/oscailte/fonts/merriweather-v21-latin-regular.woff +0 -0
  72. data/assets/oscailte/fonts/merriweather-v21-latin-regular.woff2 +0 -0
  73. data/assets/oscailte/img/avatar.png +0 -0
  74. data/assets/oscailte/img/hero_matrix.png +0 -0
  75. data/assets/oscailte/img/icons.svg +62 -0
  76. metadata +202 -0
@@ -0,0 +1,38 @@
1
+ ---
2
+ layout: core
3
+ ---
4
+ {%- include strings.html -%}
5
+
6
+ {%- assign date_iso = page.date | date: "%Y-%m-%d" -%}
7
+ {%- assign date_formatted = page.date | date_to_string -%}
8
+
9
+ {%- assign upper_minutes = page.content | number_of_words | divided_by: 160 -%}
10
+ {%- assign lower_minutes = page.content | number_of_words | divided_by: 180 -%}
11
+
12
+ {%- capture ttr -%}
13
+ {%- if upper_minutes == 0 -%}
14
+ {{ x_minute_read | replace: "$x$", "<1" }}
15
+ {%- elsif upper_minutes == lower_minutes -%}
16
+ {%- capture val -%}~{{ upper_minutes }}{%- endcapture -%}
17
+ {{ x_minute_read | replace: "$x$", val }}
18
+ {%- else -%}
19
+ {%- capture val -%}{{ lower_minutes }}-{{ upper_minutes }}{%- endcapture -%}
20
+ {{ x_minute_read | replace: "$x$", val }}
21
+ {%- endif -%}
22
+ {%- endcapture -%}
23
+
24
+ {%- capture meta -%}
25
+ <time class="Date" datetime="{{ date_iso }}">{{ date_formatted }}</time> &mdash; {{ ttr }}
26
+ {%- endcapture -%}
27
+
28
+ <header>
29
+ {% include hero.html title=page.title meta=meta %}
30
+ </header>
31
+
32
+ <div class="Container">
33
+ <article>
34
+ {{ page.content }}
35
+ </article>
36
+
37
+ {%- include comments.html -%}
38
+ </div>
@@ -0,0 +1,147 @@
1
+ // Tools
2
+ @import "oscailte/tools/functions.scss";
3
+ @import "oscailte/tools/mixins.scss";
4
+
5
+ $typography-config: (
6
+ 'small': (
7
+ 'base': (100%, 1.42),
8
+ 'h1': (2em, 1.25),
9
+ 'h2': (1.625em, 1.15384615),
10
+ 'h3': (1.375em, 1.13636364),
11
+ 'h4': (1.125em, 1.11),
12
+ 'h5': (1.075em, 1.11),
13
+ 'h6': (.925em, 1.11)
14
+ ),
15
+ 'medium': (
16
+ 'base': (125%, 1.5),
17
+ ),
18
+ 'large': (
19
+ 'base': (150%, 1.62),
20
+ ),
21
+ );
22
+
23
+ $social-map: (
24
+ 'dribbble': #EA4C89,
25
+ 'facebook': #4172B8,
26
+ 'flickr': #0063DC,
27
+ 'github': #181717,
28
+ 'instagram': #E4405F,
29
+ 'keybase': #33A0FF,
30
+ 'linkedin': #0077B5,
31
+ 'pinterest': #BD081C,
32
+ 'telegram': #2CA5E0,
33
+ 'twitter': #1DA1F2,
34
+ 'rss': #FFA500,
35
+ );
36
+
37
+
38
+ @include generate-typography-properties($typography-config);
39
+
40
+ :root {
41
+ --theme-background: #f5f6fa;
42
+ --theme-color: #282828;
43
+
44
+ /**
45
+ * Root properties, typically colour declarations, but contains other things too.
46
+ */
47
+ --color-primary: #00a6ed;
48
+ --color-secondary: #bf1ca9;
49
+ --color-positive: #5ad42f;
50
+ --color-negative: #d4372f;
51
+ --site-container-width: 90%;
52
+ --site-content-max-width: 81.25em;
53
+ --site-owl-spacing: 1rem;
54
+ --site-clip: polygon(
55
+ calc(100% - var(--clip-notch)) 0,
56
+ 100% var(--clip-notch),
57
+ 100% 100%,
58
+ var(--clip-notch) 100%,
59
+ 0 calc(100% - var(--clip-notch)),
60
+ 0 0
61
+ );
62
+
63
+ /**
64
+ * Base typography settings.
65
+ * Other typography settings will inherit/extend upon these.
66
+ */
67
+ --typography-body-family: "Merriweather", serif;
68
+ --typography-heading-family: "Lato", serif;
69
+ --typography-link-text-shadow-color: var(--theme-background);
70
+
71
+ /**
72
+ * General shared properties.
73
+ */
74
+ --box-shadow: 0 0 7px rgba(0, 0, 0, 0.05);
75
+ --box-shadow_hover: 0 0 15px rgba(0, 0, 0, 0.15);
76
+
77
+ /**
78
+ * Component declarations
79
+ */
80
+ --hero-matrix-url: #{url("/assets/oscailte/img/hero_matrix.png")};
81
+
82
+ --clip-notch: 10%;
83
+ }
84
+
85
+ // @media (prefers-color-scheme: dark) {
86
+ // :root {
87
+ // --theme-background: #282828;
88
+ // --theme-color: #e5e5e5;
89
+ // --header-background: var(--theme-background);
90
+ // --header-link-color: var(--theme-color);
91
+ // --post-preview-background: rgba(255, 255, 255, 0.035);
92
+ // }
93
+ // }
94
+
95
+
96
+ @include breakpoint("medium") {
97
+ .Site:not(.Site--home) .Site__main {
98
+ --site-container-width: 75%;
99
+ }
100
+ }
101
+ @include breakpoint("large") {
102
+ .Site:not(.Site--home) .Site__main {
103
+ --site-container-width: auto;
104
+ --site-content-max-width: 60rem
105
+ }
106
+ }
107
+
108
+
109
+ // Generic
110
+ @import "oscailte/generic/font-face.scss";
111
+ @import "oscailte/generic/modern-normalize.scss";
112
+ @import "oscailte/generic/lobotomised-owl.scss";
113
+
114
+ // Elements
115
+ @import "oscailte/elements/html.scss";
116
+ @import "oscailte/elements/body.scss";
117
+ @import "oscailte/elements/blockquote.scss";
118
+ @import "oscailte/elements/code.scss";
119
+ @import "oscailte/elements/headings.scss";
120
+ @import "oscailte/elements/hr.scss";
121
+ @import "oscailte/elements/img.scss";
122
+ @import "oscailte/elements/links.scss";
123
+
124
+ // Objects
125
+ @import "oscailte/objects/circuited.scss";
126
+ @import "oscailte/objects/lists.scss";
127
+ @import "oscailte/objects/muted.scss";
128
+ @import "oscailte/objects/no-owl.scss";
129
+
130
+ // Components
131
+ @import "oscailte/components/button.scss";
132
+ @import "oscailte/components/card.scss";
133
+ @import "oscailte/components/footer.scss";
134
+ @import "oscailte/components/header.scss";
135
+ @import "oscailte/components/hero.scss";
136
+ @import "oscailte/components/icon.scss";
137
+ @import "oscailte/components/navigation.scss";
138
+ @import "oscailte/components/recentposts.scss";
139
+ @import "oscailte/components/skipnav.scss";
140
+ @import "oscailte/components/social.scss";
141
+ @import "oscailte/components/syntax.scss";
142
+
143
+ // Layout
144
+ @import "oscailte/layout/stickyfooter.scss";
145
+ @import "oscailte/layout/container.scss";
146
+ @import "oscailte/layout/home.scss";
147
+ @import "oscailte/layout/post.scss";
@@ -0,0 +1,11 @@
1
+ .Button {
2
+ background-color: var(--color-primary);
3
+ border-radius: 4px;
4
+ box-shadow: inset 0px -3px 0 rgba(#000, .2);
5
+ color: #fff;
6
+ display: inline-block;
7
+ padding: .5em .75em;
8
+ text-align: center;
9
+ text-decoration: none;
10
+ text-shadow: 1px 1px 0 rgba(#000, .1);
11
+ }
@@ -0,0 +1,19 @@
1
+ .Card {
2
+ background: #fff;
3
+ border-radius: 3px;
4
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.15);
5
+ padding: 1rem;
6
+
7
+ &__title {
8
+ font-size: 1em;
9
+ margin: 0;
10
+ }
11
+
12
+ &__meta {
13
+ color: #666;
14
+
15
+ .Icon {
16
+ margin-right: 5px;
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,22 @@
1
+ .Site__footer {
2
+ background-color: #222;
3
+ color: #aaa;
4
+ padding: calc(var(--site-owl-spacing) * 2) 0;
5
+ text-align: center;
6
+ text-shadow: 1px 1px 0 #000;
7
+
8
+ br,
9
+ p {
10
+ margin: 0;
11
+ }
12
+ }
13
+
14
+ @include breakpoint("medium") {
15
+ .Site__footer .Container {
16
+ display: flex;
17
+ justify-content: space-between;
18
+ }
19
+ .Site__footer {
20
+ text-align: left;
21
+ }
22
+ }
@@ -0,0 +1,51 @@
1
+ .Header {
2
+ background-color: var(--header-background, #fff);
3
+ border-top: 5px solid var(--color-primary);
4
+ box-shadow: var(--box-shadow);
5
+ margin: 0;
6
+ padding: 1em 0;
7
+
8
+ .Container {
9
+ display: flex;
10
+ flex-direction: column;
11
+ justify-content: space-between;
12
+ }
13
+
14
+ a {
15
+ color: var(--header-link-color, var(--color-primary));
16
+ }
17
+
18
+ &__title {
19
+ line-height: 1;
20
+ margin: 0;
21
+ text-align: center;
22
+ text-shadow: 1px 1px 0 rgba(#000, .1);
23
+
24
+ a {
25
+ display: flex;
26
+ flex-direction: column;
27
+ text-decoration: none;
28
+ }
29
+ }
30
+
31
+ &__subtitle {
32
+ font-size: .55em;
33
+ }
34
+ }
35
+
36
+ @include breakpoint("medium") {
37
+ .Header {
38
+ .Container {
39
+ flex-direction: row;
40
+ }
41
+
42
+ &__title {
43
+ text-align: left;
44
+ }
45
+
46
+
47
+ &__subtitle {
48
+ margin-top: 0;
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,85 @@
1
+ .Hero {
2
+ padding: 3.5em 0;
3
+ text-align: center;
4
+
5
+ .avatar {
6
+ border: 0.75rem solid var(--color-primary);
7
+ border-radius: 50%;
8
+ height: auto;
9
+ }
10
+
11
+ &__content {
12
+ color: #fff;
13
+ position: relative;
14
+ z-index: 1;
15
+ }
16
+
17
+ &__title {
18
+ margin: 0;
19
+ text-shadow: 1px 1px 0 #000;
20
+ }
21
+
22
+ &.o-circuited {
23
+ background-color: #222;
24
+ }
25
+ }
26
+
27
+ .Site--default,
28
+ .Site--home {
29
+ .Hero {
30
+ position: relative;
31
+
32
+ &::after {
33
+ background-color: rgba(#000, .1);
34
+ background-image: var(--hero-matrix-url);
35
+ content: "";
36
+ display: block;
37
+ position: absolute;
38
+ top: 0;
39
+ right: 0;
40
+ bottom: 0;
41
+ left: 0;
42
+ }
43
+ }
44
+
45
+ .Hero__title {
46
+ max-width: 58rem;
47
+ }
48
+ }
49
+
50
+ .Site--post {
51
+ .Hero__title {
52
+ text-align: center;
53
+ }
54
+
55
+ .Hero__content {
56
+ flex-direction: column;
57
+ justify-content: center;
58
+ }
59
+ }
60
+
61
+ @include breakpoint("medium") {
62
+ .Hero {
63
+ .avatar {
64
+ max-width: 100%;
65
+ }
66
+
67
+ &__content {
68
+ align-items: center;
69
+ display: flex;
70
+ }
71
+
72
+ &__title {
73
+ padding: 0 1em;
74
+ text-align: left;
75
+ }
76
+ }
77
+ }
78
+
79
+ @include breakpoint("large") {
80
+ .Hero {
81
+ .avatar {
82
+ margin: 0 5%;
83
+ }
84
+ }
85
+ }
@@ -0,0 +1,7 @@
1
+ .Icon {
2
+ fill: currentColor;
3
+ line-height: 1;
4
+ height: 1em;
5
+ vertical-align: middle;
6
+ width: 1em;
7
+ }
@@ -0,0 +1,32 @@
1
+ .Navigation {
2
+ &__items,
3
+ &__item {
4
+ height: 100%;
5
+ }
6
+
7
+ &__items {
8
+ display: flex;
9
+ flex-direction: row;
10
+ justify-content: center;
11
+ }
12
+
13
+ &__item {
14
+ align-items: center;
15
+ display: flex;
16
+ margin: 0;
17
+ }
18
+
19
+ &__link {
20
+ display: block;
21
+ padding: .5em 1em;
22
+ text-align: center;
23
+ text-decoration: none;
24
+ width: 100%;
25
+ }
26
+ }
27
+
28
+ @include breakpoint("medium") {
29
+ .Navigation {
30
+ margin-top: 0;
31
+ }
32
+ }
@@ -0,0 +1,59 @@
1
+ .RecentPosts {
2
+ &__title {
3
+ display: inline-block;
4
+ }
5
+
6
+ &__list {
7
+ display: grid;
8
+ grid-template: auto;
9
+ gap: var(--site-owl-spacing);
10
+ }
11
+
12
+ &__item {
13
+ display: flex;
14
+ flex-direction: column;
15
+ max-height: 20rem;
16
+ }
17
+
18
+ &__excerpt {
19
+ flex: 1;
20
+ overflow: hidden;
21
+ position: relative;
22
+
23
+ &::before {
24
+ background-image: linear-gradient(to top, #fff, transparent);
25
+ content: "";
26
+ display: block;
27
+ height: 3rem;
28
+ position: absolute;
29
+ bottom: 0;
30
+ width: 100%;
31
+ }
32
+
33
+ > p {
34
+ margin: 0;
35
+ }
36
+ }
37
+
38
+ .Button {
39
+ align-self: flex-end;
40
+ display: block;
41
+ width: 100%;
42
+ }
43
+ }
44
+
45
+ @include breakpoint("medium") {
46
+ .RecentPosts__list {
47
+ grid-template: auto / repeat(2, 1fr);
48
+ }
49
+ .RecentPosts .Button {
50
+ font-size: 1rem;
51
+ width: auto;
52
+ }
53
+ }
54
+
55
+ @include breakpoint("large") {
56
+ .RecentPosts__list {
57
+ grid-template: auto / repeat(3, 1fr);
58
+ }
59
+ }