Initial commit.
This commit is contained in:
commit
b2e2fde818
36 changed files with 1475 additions and 0 deletions
17
brief.md
Normal file
17
brief.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
Thank you for asking. I’ve chosen the following fonts and colour palette for the blog:
|
||||
|
||||
Typography
|
||||
|
||||
- Headings: Merriweather — elegant, warm, and literary, which I think suits the nature of our stories.
|
||||
- Body text: Inter — clean, modern, and easy to read, especially for longer stories and on mobile devices.
|
||||
|
||||
Colour Palette
|
||||
|
||||
- Background: Off-White / Light Gray — #F9F9F9
|
||||
- Text: Charcoal Black — #222222
|
||||
- Primary Accent: Olive Green — for the main branding elements and highlights.
|
||||
- Secondary Accent: Deep Burgundy / Dark Red — used sparingly for buttons and important calls to action.
|
||||
|
||||
I’d like the overall design to feel warm, calm, human, and dignified, while keeping the stories themselves at the heart of the blog.
|
||||
|
||||
I hope this works well. Thank you again for your wonderful work.
|
||||
8
content/asc/pages/adoc-page.asc
Normal file
8
content/asc/pages/adoc-page.asc
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{:title "Adoc Page"
|
||||
:layout :page
|
||||
:page-index 0
|
||||
:navbar? true}
|
||||
|
||||
== Adoc Page ==
|
||||
|
||||
We support http://asciidoc.org/[asciidoc] too!
|
||||
44
content/asc/posts/2014-10-10-adoc-post.asc
Normal file
44
content/asc/posts/2014-10-10-adoc-post.asc
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
{:title "Adoc Post"
|
||||
:layout :post
|
||||
:tags ["cryogen" "asciidoc"]
|
||||
:toc false
|
||||
}
|
||||
|
||||
:toc: macro
|
||||
|
||||
== Example Asciidoc Post ==
|
||||
This is an example asciidoc post.
|
||||
|
||||
You can use a manually placed table of contents by setting `:toc false` in the front matter, but use `:toc: macro` at the top of the post, and `toc::[]` where the table of contents is supposed to be, like here:
|
||||
|
||||
toc::[]
|
||||
|
||||
=== Section 1 ===
|
||||
|
||||
.Heading
|
||||
|
||||
With some text and maybe even a bulleted list:
|
||||
|
||||
- Thing 1
|
||||
- Thing 2
|
||||
|
||||
Or how about some *bold* or _italicized_ text?
|
||||
|
||||
=== Section 2 ===
|
||||
|
||||
Will a code snippet work?
|
||||
|
||||
.bash
|
||||
[source,bash]
|
||||
----
|
||||
$ echo "foo"
|
||||
----
|
||||
|
||||
.clojure
|
||||
[source,clojure]
|
||||
----
|
||||
(defn echo [s]
|
||||
(println s))
|
||||
----
|
||||
|
||||
|
||||
38
content/config.edn
Normal file
38
content/config.edn
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{:archive-group-format "yyyy MMMM",
|
||||
:appeal-uri "https://chuffed.org/project/178629-noorhans-gaza-family-rebuild-hope-restore-dignity"
|
||||
:author "Nourhan Mousa",
|
||||
:author-root-uri "authors-output",
|
||||
:blocks-per-preview 2,
|
||||
:blog-prefix "/voices-from-gaza",
|
||||
:clean-urls :trailing-slash,
|
||||
:collapse-subdirs? false,
|
||||
:debug? false,
|
||||
:description "News from behind the yellow line in Gaza",
|
||||
:description-include-elements #{:h5 :h4 :h6 :h2 :h1 :h3 :p},
|
||||
:disqus-shortname "",
|
||||
:disqus? false,
|
||||
:hide-future-posts? true,
|
||||
:ignored-files [#"\.#.*" #".*\.swp$"],
|
||||
:keep-files [".git"],
|
||||
:klipse {},
|
||||
:mastodon {:host "ieji.de", :acct NourGazaS},
|
||||
:page-root "pages",
|
||||
:page-root-uri "pages-output",
|
||||
:post-date-format "yyyy-MM-dd",
|
||||
:post-root "posts",
|
||||
:post-root-uri "posts-output",
|
||||
:posts-per-page 5,
|
||||
:previews? true,
|
||||
:public-dest "public",
|
||||
:recent-posts 5,
|
||||
:resources ["css" "fonts" "img" "video"],
|
||||
:rss-filters ["cryogen"],
|
||||
:rss-name "feed.xml",
|
||||
:sass-path "sass",
|
||||
:sass-src [],
|
||||
:site-title "Voices, Stories and Hope from Gaza",
|
||||
:site-url "http://www.journeyman.cc/",
|
||||
:tag-root-uri "tags-output",
|
||||
:theme "blue",
|
||||
:twitter-acct nil,
|
||||
:write-back-inferred-meta? true}
|
||||
3
content/css/example.css
Normal file
3
content/css/example.css
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
a {
|
||||
text-decoration-style: dashed;
|
||||
}
|
||||
5
content/css/sassexample.scss
Normal file
5
content/css/sassexample.scss
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
body {
|
||||
a {
|
||||
text-decoration-style: dashed;
|
||||
}
|
||||
}
|
||||
BIN
content/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf
Normal file
BIN
content/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf
Normal file
Binary file not shown.
BIN
content/fonts/Inter/Inter-VariableFont_opsz,wght.ttf
Normal file
BIN
content/fonts/Inter/Inter-VariableFont_opsz,wght.ttf
Normal file
Binary file not shown.
93
content/fonts/Inter/OFL.txt
Normal file
93
content/fonts/Inter/OFL.txt
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
118
content/fonts/Inter/README.txt
Normal file
118
content/fonts/Inter/README.txt
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
Inter Variable Font
|
||||
===================
|
||||
|
||||
This download contains Inter as both variable fonts and static fonts.
|
||||
|
||||
Inter is a variable font with these axes:
|
||||
opsz
|
||||
wght
|
||||
|
||||
This means all the styles are contained in these files:
|
||||
Inter/Inter-VariableFont_opsz,wght.ttf
|
||||
Inter/Inter-Italic-VariableFont_opsz,wght.ttf
|
||||
|
||||
If your app fully supports variable fonts, you can now pick intermediate styles
|
||||
that aren’t available as static fonts. Not all apps support variable fonts, and
|
||||
in those cases you can use the static font files for Inter:
|
||||
Inter/static/Inter_18pt-Thin.ttf
|
||||
Inter/static/Inter_18pt-ExtraLight.ttf
|
||||
Inter/static/Inter_18pt-Light.ttf
|
||||
Inter/static/Inter_18pt-Regular.ttf
|
||||
Inter/static/Inter_18pt-Medium.ttf
|
||||
Inter/static/Inter_18pt-SemiBold.ttf
|
||||
Inter/static/Inter_18pt-Bold.ttf
|
||||
Inter/static/Inter_18pt-ExtraBold.ttf
|
||||
Inter/static/Inter_18pt-Black.ttf
|
||||
Inter/static/Inter_24pt-Thin.ttf
|
||||
Inter/static/Inter_24pt-ExtraLight.ttf
|
||||
Inter/static/Inter_24pt-Light.ttf
|
||||
Inter/static/Inter_24pt-Regular.ttf
|
||||
Inter/static/Inter_24pt-Medium.ttf
|
||||
Inter/static/Inter_24pt-SemiBold.ttf
|
||||
Inter/static/Inter_24pt-Bold.ttf
|
||||
Inter/static/Inter_24pt-ExtraBold.ttf
|
||||
Inter/static/Inter_24pt-Black.ttf
|
||||
Inter/static/Inter_28pt-Thin.ttf
|
||||
Inter/static/Inter_28pt-ExtraLight.ttf
|
||||
Inter/static/Inter_28pt-Light.ttf
|
||||
Inter/static/Inter_28pt-Regular.ttf
|
||||
Inter/static/Inter_28pt-Medium.ttf
|
||||
Inter/static/Inter_28pt-SemiBold.ttf
|
||||
Inter/static/Inter_28pt-Bold.ttf
|
||||
Inter/static/Inter_28pt-ExtraBold.ttf
|
||||
Inter/static/Inter_28pt-Black.ttf
|
||||
Inter/static/Inter_18pt-ThinItalic.ttf
|
||||
Inter/static/Inter_18pt-ExtraLightItalic.ttf
|
||||
Inter/static/Inter_18pt-LightItalic.ttf
|
||||
Inter/static/Inter_18pt-Italic.ttf
|
||||
Inter/static/Inter_18pt-MediumItalic.ttf
|
||||
Inter/static/Inter_18pt-SemiBoldItalic.ttf
|
||||
Inter/static/Inter_18pt-BoldItalic.ttf
|
||||
Inter/static/Inter_18pt-ExtraBoldItalic.ttf
|
||||
Inter/static/Inter_18pt-BlackItalic.ttf
|
||||
Inter/static/Inter_24pt-ThinItalic.ttf
|
||||
Inter/static/Inter_24pt-ExtraLightItalic.ttf
|
||||
Inter/static/Inter_24pt-LightItalic.ttf
|
||||
Inter/static/Inter_24pt-Italic.ttf
|
||||
Inter/static/Inter_24pt-MediumItalic.ttf
|
||||
Inter/static/Inter_24pt-SemiBoldItalic.ttf
|
||||
Inter/static/Inter_24pt-BoldItalic.ttf
|
||||
Inter/static/Inter_24pt-ExtraBoldItalic.ttf
|
||||
Inter/static/Inter_24pt-BlackItalic.ttf
|
||||
Inter/static/Inter_28pt-ThinItalic.ttf
|
||||
Inter/static/Inter_28pt-ExtraLightItalic.ttf
|
||||
Inter/static/Inter_28pt-LightItalic.ttf
|
||||
Inter/static/Inter_28pt-Italic.ttf
|
||||
Inter/static/Inter_28pt-MediumItalic.ttf
|
||||
Inter/static/Inter_28pt-SemiBoldItalic.ttf
|
||||
Inter/static/Inter_28pt-BoldItalic.ttf
|
||||
Inter/static/Inter_28pt-ExtraBoldItalic.ttf
|
||||
Inter/static/Inter_28pt-BlackItalic.ttf
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
1. Install the font files you want to use
|
||||
|
||||
2. Use your app's font picker to view the font family and all the
|
||||
available styles
|
||||
|
||||
Learn more about variable fonts
|
||||
-------------------------------
|
||||
|
||||
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
|
||||
https://variablefonts.typenetwork.com
|
||||
https://medium.com/variable-fonts
|
||||
|
||||
In desktop apps
|
||||
|
||||
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
|
||||
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
|
||||
|
||||
Online
|
||||
|
||||
https://developers.google.com/fonts/docs/getting_started
|
||||
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
|
||||
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
|
||||
|
||||
Installing fonts
|
||||
|
||||
MacOS: https://support.apple.com/en-us/HT201749
|
||||
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
|
||||
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
|
||||
|
||||
Android Apps
|
||||
|
||||
https://developers.google.com/fonts/docs/android
|
||||
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
|
||||
|
||||
License
|
||||
-------
|
||||
Please read the full license text (OFL.txt) to understand the permissions,
|
||||
restrictions and requirements for usage, redistribution, and modification.
|
||||
|
||||
You can use them in your products & projects – print or digital,
|
||||
commercial or otherwise.
|
||||
|
||||
This isn't legal advice, please consider consulting a lawyer and see the full
|
||||
license for all details.
|
||||
Binary file not shown.
Binary file not shown.
93
content/fonts/Merriweather/OFL.txt
Normal file
93
content/fonts/Merriweather/OFL.txt
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
Copyright 2020 The Merriweather Project Authors (https://github.com/EbenSorkin/Merriweather4) with Reserved Font Name "Merriweather".
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
205
content/fonts/Merriweather/README.txt
Normal file
205
content/fonts/Merriweather/README.txt
Normal file
|
|
@ -0,0 +1,205 @@
|
|||
Merriweather Variable Font
|
||||
==========================
|
||||
|
||||
This download contains Merriweather as both variable fonts and static fonts.
|
||||
|
||||
Merriweather is a variable font with these axes:
|
||||
opsz
|
||||
wdth
|
||||
wght
|
||||
|
||||
This means all the styles are contained in these files:
|
||||
Merriweather/Merriweather-VariableFont_opsz,wdth,wght.ttf
|
||||
Merriweather/Merriweather-Italic-VariableFont_opsz,wdth,wght.ttf
|
||||
|
||||
If your app fully supports variable fonts, you can now pick intermediate styles
|
||||
that aren’t available as static fonts. Not all apps support variable fonts, and
|
||||
in those cases you can use the static font files for Merriweather:
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-Light.ttf
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-Regular.ttf
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-Medium.ttf
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-SemiBold.ttf
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-Bold.ttf
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-ExtraBold.ttf
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-Black.ttf
|
||||
Merriweather/static/Merriweather_24pt-Light.ttf
|
||||
Merriweather/static/Merriweather_24pt-Regular.ttf
|
||||
Merriweather/static/Merriweather_24pt-Medium.ttf
|
||||
Merriweather/static/Merriweather_24pt-SemiBold.ttf
|
||||
Merriweather/static/Merriweather_24pt-Bold.ttf
|
||||
Merriweather/static/Merriweather_24pt-ExtraBold.ttf
|
||||
Merriweather/static/Merriweather_24pt-Black.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-Light.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-Regular.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-Medium.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-SemiBold.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-Bold.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-ExtraBold.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-Black.ttf
|
||||
Merriweather/static/Merriweather_36pt-Light.ttf
|
||||
Merriweather/static/Merriweather_36pt-Regular.ttf
|
||||
Merriweather/static/Merriweather_36pt-Medium.ttf
|
||||
Merriweather/static/Merriweather_36pt-SemiBold.ttf
|
||||
Merriweather/static/Merriweather_36pt-Bold.ttf
|
||||
Merriweather/static/Merriweather_36pt-ExtraBold.ttf
|
||||
Merriweather/static/Merriweather_36pt-Black.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-Light.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-Regular.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-Medium.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-SemiBold.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-Bold.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-ExtraBold.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-Black.ttf
|
||||
Merriweather/static/Merriweather_48pt-Light.ttf
|
||||
Merriweather/static/Merriweather_48pt-Regular.ttf
|
||||
Merriweather/static/Merriweather_48pt-Medium.ttf
|
||||
Merriweather/static/Merriweather_48pt-SemiBold.ttf
|
||||
Merriweather/static/Merriweather_48pt-Bold.ttf
|
||||
Merriweather/static/Merriweather_48pt-ExtraBold.ttf
|
||||
Merriweather/static/Merriweather_48pt-Black.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-Light.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-Regular.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-Medium.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-SemiBold.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-Bold.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-ExtraBold.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-Black.ttf
|
||||
Merriweather/static/Merriweather_96pt-Light.ttf
|
||||
Merriweather/static/Merriweather_96pt-Regular.ttf
|
||||
Merriweather/static/Merriweather_96pt-Medium.ttf
|
||||
Merriweather/static/Merriweather_96pt-SemiBold.ttf
|
||||
Merriweather/static/Merriweather_96pt-Bold.ttf
|
||||
Merriweather/static/Merriweather_96pt-ExtraBold.ttf
|
||||
Merriweather/static/Merriweather_96pt-Black.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-Light.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-Regular.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-Medium.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-SemiBold.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-Bold.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-ExtraBold.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-Black.ttf
|
||||
Merriweather/static/Merriweather_120pt-Light.ttf
|
||||
Merriweather/static/Merriweather_120pt-Regular.ttf
|
||||
Merriweather/static/Merriweather_120pt-Medium.ttf
|
||||
Merriweather/static/Merriweather_120pt-SemiBold.ttf
|
||||
Merriweather/static/Merriweather_120pt-Bold.ttf
|
||||
Merriweather/static/Merriweather_120pt-ExtraBold.ttf
|
||||
Merriweather/static/Merriweather_120pt-Black.ttf
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-LightItalic.ttf
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-Italic.ttf
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-MediumItalic.ttf
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-SemiBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-BoldItalic.ttf
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-ExtraBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_24pt_SemiCondensed-BlackItalic.ttf
|
||||
Merriweather/static/Merriweather_24pt-LightItalic.ttf
|
||||
Merriweather/static/Merriweather_24pt-Italic.ttf
|
||||
Merriweather/static/Merriweather_24pt-MediumItalic.ttf
|
||||
Merriweather/static/Merriweather_24pt-SemiBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_24pt-BoldItalic.ttf
|
||||
Merriweather/static/Merriweather_24pt-ExtraBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_24pt-BlackItalic.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-LightItalic.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-Italic.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-MediumItalic.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-SemiBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-BoldItalic.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-ExtraBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_36pt_SemiCondensed-BlackItalic.ttf
|
||||
Merriweather/static/Merriweather_36pt-LightItalic.ttf
|
||||
Merriweather/static/Merriweather_36pt-Italic.ttf
|
||||
Merriweather/static/Merriweather_36pt-MediumItalic.ttf
|
||||
Merriweather/static/Merriweather_36pt-SemiBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_36pt-BoldItalic.ttf
|
||||
Merriweather/static/Merriweather_36pt-ExtraBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_36pt-BlackItalic.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-LightItalic.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-Italic.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-MediumItalic.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-SemiBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-BoldItalic.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-ExtraBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_48pt_SemiCondensed-BlackItalic.ttf
|
||||
Merriweather/static/Merriweather_48pt-LightItalic.ttf
|
||||
Merriweather/static/Merriweather_48pt-Italic.ttf
|
||||
Merriweather/static/Merriweather_48pt-MediumItalic.ttf
|
||||
Merriweather/static/Merriweather_48pt-SemiBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_48pt-BoldItalic.ttf
|
||||
Merriweather/static/Merriweather_48pt-ExtraBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_48pt-BlackItalic.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-LightItalic.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-Italic.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-MediumItalic.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-SemiBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-BoldItalic.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-ExtraBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_96pt_SemiCondensed-BlackItalic.ttf
|
||||
Merriweather/static/Merriweather_96pt-LightItalic.ttf
|
||||
Merriweather/static/Merriweather_96pt-Italic.ttf
|
||||
Merriweather/static/Merriweather_96pt-MediumItalic.ttf
|
||||
Merriweather/static/Merriweather_96pt-SemiBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_96pt-BoldItalic.ttf
|
||||
Merriweather/static/Merriweather_96pt-ExtraBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_96pt-BlackItalic.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-LightItalic.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-Italic.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-MediumItalic.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-SemiBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-BoldItalic.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-ExtraBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_120pt_SemiCondensed-BlackItalic.ttf
|
||||
Merriweather/static/Merriweather_120pt-LightItalic.ttf
|
||||
Merriweather/static/Merriweather_120pt-Italic.ttf
|
||||
Merriweather/static/Merriweather_120pt-MediumItalic.ttf
|
||||
Merriweather/static/Merriweather_120pt-SemiBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_120pt-BoldItalic.ttf
|
||||
Merriweather/static/Merriweather_120pt-ExtraBoldItalic.ttf
|
||||
Merriweather/static/Merriweather_120pt-BlackItalic.ttf
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
1. Install the font files you want to use
|
||||
|
||||
2. Use your app's font picker to view the font family and all the
|
||||
available styles
|
||||
|
||||
Learn more about variable fonts
|
||||
-------------------------------
|
||||
|
||||
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
|
||||
https://variablefonts.typenetwork.com
|
||||
https://medium.com/variable-fonts
|
||||
|
||||
In desktop apps
|
||||
|
||||
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
|
||||
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
|
||||
|
||||
Online
|
||||
|
||||
https://developers.google.com/fonts/docs/getting_started
|
||||
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
|
||||
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
|
||||
|
||||
Installing fonts
|
||||
|
||||
MacOS: https://support.apple.com/en-us/HT201749
|
||||
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
|
||||
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
|
||||
|
||||
Android Apps
|
||||
|
||||
https://developers.google.com/fonts/docs/android
|
||||
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
|
||||
|
||||
License
|
||||
-------
|
||||
Please read the full license text (OFL.txt) to understand the permissions,
|
||||
restrictions and requirements for usage, redistribution, and modification.
|
||||
|
||||
You can use them in your products & projects – print or digital,
|
||||
commercial or otherwise.
|
||||
|
||||
This isn't legal advice, please consider consulting a lawyer and see the full
|
||||
license for all details.
|
||||
BIN
content/img/ben-gvir.jpg
Normal file
BIN
content/img/ben-gvir.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 124 KiB |
BIN
content/img/cryogen.png
Normal file
BIN
content/img/cryogen.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
BIN
content/img/favicon.png
Normal file
BIN
content/img/favicon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 565 B |
33
content/md/pages/about.md
Normal file
33
content/md/pages/about.md
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{:author "Nour Gaza",
|
||||
:title "About"
|
||||
:layout :page
|
||||
:page-index 0
|
||||
:navbar? true}
|
||||
|
||||
## About Me
|
||||
|
||||
My name is Nourhan, a mother of six wonderful children, a university graduate with a Bachelor’s degree in Arabic Language and Teaching Methods, and a woman who once believed that education could open the door to a brighter future.
|
||||
|
||||
I dreamed of building a meaningful career and giving my children a safe and beautiful life. But high unemployment left me unable to find work, and the future I had imagined slowly became harder to reach.
|
||||
|
||||
Then my life changed in another way. After a traumatic experience involving my child falling from a relative’s elevator, I developed chronic health problems, including an underactive thyroid, adrenal insufficiency, and abnormal cortisol levels. I now need regular medical care, examinations, and treatment—needs that have become painfully difficult to afford during the war.
|
||||
|
||||
My husband worked in teaching through a temporary employment program. He tried to provide for our family despite already struggling with a vision problem. But after developing severe joint and cartilage problems, he became unable to work.
|
||||
|
||||
Then the war took what remained.
|
||||
|
||||
We lost our home, our stability, and our source of income. Today, my six children and I live in a torn and fragile tent, with no reliable income and no real protection from the harshness around us.
|
||||
|
||||
Two months before the war began, I gave birth to my little daughter, Sandy. I had waited for her with immense love and anticipation. She was the only girl among my six children, surrounded by five brothers, and I dreamed of giving her the gentle childhood she deserved.
|
||||
|
||||
But the war took even the simplest moments of motherhood from me.
|
||||
|
||||
Fear, hunger, and the unbearable stress caused my breast milk to dry up. I could not even continue breastfeeding my newborn daughter. A mother should never have to choose between feeding her baby and surviving another day.
|
||||
|
||||
I am not writing these words to ask for pity. I am writing because behind every number and every headline is a family, a mother, and six children trying to hold on to life.
|
||||
|
||||
I still dream of a future where my children can grow up safely, where I can care for my health, where my husband can work again, and where Sandy can know what a peaceful childhood feels like.
|
||||
|
||||
I lost almost everything, but I have not lost hope.
|
||||
|
||||
If you choose to stand beside us, your kindness will not simply help a family survive—it will remind us that we have not been forgotten. 🤍🍉
|
||||
22
content/md/posts/2026-08-20-Condemnation-of-ben-gvir.md
Normal file
22
content/md/posts/2026-08-20-Condemnation-of-ben-gvir.md
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{:author "Nourhan Mousa",
|
||||
:date "2026-08-20",
|
||||
:description "There has been widespread European condemnation of Israeli National Security Minister Itamar Ben-Gvir’s remarks, in which he described Palestinians as “not human” and called for the killing of 30–40 Palestinians from Gaza every night.",
|
||||
:image
|
||||
{:path "/img/ben-gvir.jpg",
|
||||
:alt "Itamar Ben Gvir",
|
||||
:width 1244,
|
||||
:height 1555,
|
||||
:type "image/jpeg"},
|
||||
:inferred-meta true,
|
||||
:tags ["Ben-Gvir"],
|
||||
:title "Condemnation of Ben-Gvir"}
|
||||
|
||||

|
||||
|
||||
There has been widespread European condemnation of Israeli National Security Minister Itamar Ben-Gvir’s remarks, in which he described Palestinians as “not human” and called for the killing of 30–40 Palestinians from Gaza every night.
|
||||
|
||||
Germany and Sweden are among the countries that have condemned these remarks, amid calls for European sanctions against extremist Israeli ministers.
|
||||
|
||||
As Palestinians, we do not want more statements of condemnation alone. We want real and meaningful action to stop incitement to kill us and protect civilian lives.
|
||||
|
||||
We are human. Our children are human. Our blood is not a number. 💔
|
||||
14
deps.edn
Normal file
14
deps.edn
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{:deps {org.clojure/clojure {:mvn/version "1.11.3"}
|
||||
ring/ring-devel {:mvn/version "1.12.1"}
|
||||
compojure/compojure {:mvn/version "1.7.1"}
|
||||
ring-server/ring-server {:mvn/version "0.5.0"}
|
||||
cryogen-flexmark/cryogen-flexmark {:mvn/version "0.1.5"}
|
||||
cryogen-core/cryogen-core {:mvn/version "0.4.9"}}
|
||||
:aliases {;; Run with `clojure -M:build`
|
||||
:build {:main-opts ["-m" "cryogen.core"]}
|
||||
;; Start a server serving the blog: `clojure -X:serve`
|
||||
;; Requires tools.deps.alpha 0.9.810+
|
||||
:serve {:exec-fn cryogen.server/serve
|
||||
:exec-args {:port 3000}}
|
||||
:fast {:exec-fn cryogen.server/serve
|
||||
:exec-args {:fast true}}}}
|
||||
21
project.clj
Normal file
21
project.clj
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
(defproject cryogen "0.1.0"
|
||||
:description "Simple static site generator"
|
||||
:url "https://github.com/cryogen-project/cryogen"
|
||||
:license {:name "Eclipse Public License"
|
||||
:url "http://www.eclipse.org/legal/epl-v10.html"}
|
||||
:dependencies [[org.clojure/clojure "1.12.1"]
|
||||
[ring/ring-devel "1.12.1"]
|
||||
[compojure "1.7.1"]
|
||||
[ring-server "0.5.0"]
|
||||
[cryogen-flexmark "0.1.5"]
|
||||
[cryogen-core "0.4.7a-simon-brooke"]]
|
||||
:plugins [[lein-ring "0.12.5"]]
|
||||
:managed-dependencies [[org.bouncycastle/bcpkix-jdk18on "1.81.1"]
|
||||
[org.bouncycastle/bcutil-jdk18on "1.81.1"]
|
||||
[org.bouncycastle/bcprov-jdk18on "1.81.1"]
|
||||
[commons-io/commons-io "2.18.0"]]
|
||||
:main cryogen.core
|
||||
:ring {:init cryogen.server/init
|
||||
:handler cryogen.server/handler}
|
||||
:aliases {"serve" ["run" "-m" "cryogen.server"]
|
||||
"serve:fast" ["run" "-m" "cryogen.server" "fast"]})
|
||||
8
src/cryogen/core.clj
Normal file
8
src/cryogen/core.clj
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
(ns cryogen.core
|
||||
(:require [cryogen-core.compiler :refer [compile-assets-timed]]
|
||||
[cryogen-core.plugins :refer [load-plugins]]))
|
||||
|
||||
(defn -main []
|
||||
(load-plugins)
|
||||
(compile-assets-timed)
|
||||
(System/exit 0))
|
||||
95
src/cryogen/server.clj
Normal file
95
src/cryogen/server.clj
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
(ns cryogen.server
|
||||
(:require
|
||||
[compojure.core :refer [GET defroutes]]
|
||||
[compojure.route :as route]
|
||||
[ring.util.response :refer [redirect file-response]]
|
||||
[ring.util.codec :refer [url-decode]]
|
||||
[ring.server.standalone :as ring-server]
|
||||
[cryogen-core.watcher :refer [start-watcher! start-watcher-for-changes!]]
|
||||
[cryogen-core.plugins :refer [load-plugins]]
|
||||
[cryogen-core.compiler :refer [compile-assets-timed]]
|
||||
[cryogen-core.config :refer [resolve-config]]
|
||||
[cryogen-core.io :refer [path]]
|
||||
[clojure.string :as string])
|
||||
(:import (java.io File)))
|
||||
|
||||
(def resolved-config (delay (resolve-config)))
|
||||
|
||||
(def extra-config-dev
|
||||
"Add dev-time configuration overrides here, such as `:hide-future-posts? false`"
|
||||
{})
|
||||
|
||||
(defn init [& [fast?]]
|
||||
(load-plugins)
|
||||
(compile-assets-timed extra-config-dev)
|
||||
(let [ignored-files (-> @resolved-config :ignored-files)]
|
||||
(run!
|
||||
#(if fast?
|
||||
(start-watcher-for-changes! % ignored-files compile-assets-timed extra-config-dev)
|
||||
(start-watcher! % ignored-files compile-assets-timed))
|
||||
["content" "themes"])))
|
||||
|
||||
(defn wrap-subdirectories
|
||||
[handler]
|
||||
(fn [request]
|
||||
(let [{:keys [clean-urls blog-prefix public-dest]} @resolved-config
|
||||
req-uri (.substring (url-decode (:uri request)) 1)
|
||||
res-path (if (or (.endsWith req-uri "/")
|
||||
(.endsWith req-uri ".html")
|
||||
(-> (string/split req-uri #"/")
|
||||
last
|
||||
(string/includes? ".")
|
||||
not))
|
||||
(condp = clean-urls
|
||||
:trailing-slash (path req-uri "index.html")
|
||||
:no-trailing-slash (if (or (= req-uri "")
|
||||
(= req-uri "/")
|
||||
(= req-uri
|
||||
(if (string/blank? blog-prefix)
|
||||
blog-prefix
|
||||
(.substring blog-prefix 1))))
|
||||
(path req-uri "index.html")
|
||||
(path (str req-uri ".html")))
|
||||
:dirty (path (str req-uri ".html")))
|
||||
req-uri)]
|
||||
(or (let [rsp (file-response res-path {:root public-dest})
|
||||
body (:body rsp)]
|
||||
;; Add content-type; it cannot be derived from the extension if `:[no-]trailing-slash`
|
||||
(cond-> rsp
|
||||
(and body
|
||||
(instance? File body)
|
||||
(string/ends-with? (.getName body) ".html"))
|
||||
(assoc-in [:headers "Content-Type"] "text/html; charset=utf-8")))
|
||||
(handler request)))))
|
||||
|
||||
(defroutes routes
|
||||
(GET "/" [] (redirect (let [config (resolve-config)]
|
||||
(path (:blog-prefix config)
|
||||
(when (= (:clean-urls config) :dirty)
|
||||
"index.html")))))
|
||||
(route/files "/")
|
||||
(route/not-found "Page not found"))
|
||||
|
||||
(def handler (wrap-subdirectories routes))
|
||||
|
||||
(defn serve
|
||||
"Entrypoint for running via tools-deps (clojure)"
|
||||
[{:keys [fast join?] :as opts}]
|
||||
(ring-server/serve
|
||||
handler
|
||||
(merge
|
||||
{:join? (if (some? join?) join? true)
|
||||
:init (partial init fast)
|
||||
:open-browser? true
|
||||
:auto-refresh? fast ; w/o fast it would often try to reload the page before it has been fully compiled
|
||||
:refresh-paths [(:public-dest @resolved-config)]}
|
||||
opts)))
|
||||
|
||||
(defn -main [& args]
|
||||
(serve {:port 3000 :fast ((set args) "fast")}))
|
||||
|
||||
(comment
|
||||
(def srv (serve {:join? false, :fast true}))
|
||||
(.stop srv)
|
||||
|
||||
,)
|
||||
225
themes/blue/css/screen.css
Normal file
225
themes/blue/css/screen.css
Normal file
|
|
@ -0,0 +1,225 @@
|
|||
@font-face {
|
||||
font-family: "Merriweather";
|
||||
src: url("../fonts/Merriweather/Merriweather-VariableFont_opsz,wdth,wght.ttf");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Inter";
|
||||
src: url("../fonts/Inter/Inter-VariableFont_opsz,wght.ttf");
|
||||
}
|
||||
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: 'Merriweather', Helvetica, Arial, sans-serif;;
|
||||
}
|
||||
|
||||
body {
|
||||
color: #333;
|
||||
background-color: #f2f2f2;
|
||||
font-family: 'Inter', Helvetica, Arial, sans-serif;
|
||||
font-size: normal;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1000px;
|
||||
}
|
||||
|
||||
.right {
|
||||
float: right;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
#navbar-button {
|
||||
float: left !important;
|
||||
padding: 0.25em;
|
||||
position:absolute;
|
||||
top: 0.25em;
|
||||
left: 0.25em;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
border-radius: 0;
|
||||
box-shadow: 0 0 0 0,0 6px 12px rgba(34,34,34,0.3);
|
||||
font-family: 'Merriweather', Helvetica, Arial, sans-serif;;
|
||||
}
|
||||
|
||||
.navbar-default {
|
||||
background-color: olive;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-brand {
|
||||
color: #F9F9F9;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-brand:hover {
|
||||
color: #F9F9F9;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav li a, .navbar-default .navbar-nav li a:visited {
|
||||
color: #F9F9F9;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav li a:hover {
|
||||
color: #F9F9F9;
|
||||
background-color: darkolivegreen;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav .active a {
|
||||
color: #F9F9F9;
|
||||
background-color: darkolivegreen;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-toggle:hover{
|
||||
background-color: darkolivegreen;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-toggle .icon-bar {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
margin-left: 15px;
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
#content {
|
||||
background-color: #F9F9F9;
|
||||
border-radius: 3px;
|
||||
box-shadow: 0 0 0 0,0 6px 12px rgba(34,34,34,0.1);
|
||||
}
|
||||
|
||||
#content img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
footer {
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
padding-top: 75px;
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
|
||||
blockquote footer {
|
||||
text-align: left;
|
||||
padding-top: 0px;
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
|
||||
#appeal, #phone-appeal a {
|
||||
color: #800020;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#phone-appeal {
|
||||
display: none;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
#appeal a {
|
||||
color: #a2022a;
|
||||
}
|
||||
|
||||
#post-tags {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
#prev-next {
|
||||
padding: 15px 0;
|
||||
}
|
||||
|
||||
.post-header {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.post-header h2 {
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
#post-meta {
|
||||
font-size: smaller;
|
||||
color: rgba(0,0,0,0.4)
|
||||
}
|
||||
|
||||
#page-header {
|
||||
border-bottom: 1px solid silver;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
#page-header h2 {
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
a {
|
||||
color: olive;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #800020;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: darkolivegreen;
|
||||
}
|
||||
|
||||
hr {
|
||||
color: darkolivegreen !important;
|
||||
border-top: thin solid darkolivegreen !important;
|
||||
}
|
||||
|
||||
pre {
|
||||
overflow-x: auto;
|
||||
}
|
||||
pre code {
|
||||
display: block;
|
||||
padding: 0.5em;
|
||||
overflow-wrap: normal;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
code {
|
||||
color: olive;
|
||||
}
|
||||
|
||||
pre, code, .hljs {
|
||||
background-color: #f7f9fd;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
/* .navbar {
|
||||
min-height: 70px;
|
||||
} */
|
||||
.navbar-nav>li>a {
|
||||
padding: 30px 20px;
|
||||
}
|
||||
.navbar-default .navbar-brand {
|
||||
font-size: large;
|
||||
padding: 25px 15px;
|
||||
}
|
||||
#content{
|
||||
margin-top: 30px;
|
||||
padding: 30px 40px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
body{
|
||||
font-size: normal;
|
||||
}
|
||||
.navbar-default .navbar-brand {
|
||||
font-size: larger;
|
||||
padding-left: 3em;
|
||||
}
|
||||
#appeal {
|
||||
display: none;
|
||||
}
|
||||
#phone-appeal {
|
||||
display: block;
|
||||
}
|
||||
#content{
|
||||
padding: 15px;
|
||||
}
|
||||
#post-meta .right {
|
||||
float:left;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
40
themes/blue/html/404.html
Normal file
40
themes/blue/html/404.html
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<html>
|
||||
<head>
|
||||
<style>
|
||||
#message{
|
||||
display:block;
|
||||
width:100%;
|
||||
padding:150px 0;
|
||||
line-height:1.6em;
|
||||
text-align:center;
|
||||
}
|
||||
h1, h2 {
|
||||
color: rgb(151, 151, 151);
|
||||
float: left;
|
||||
margin:0 0 0 40px;
|
||||
padding:0;
|
||||
float:left;
|
||||
font-family: Georgia, 'Times New Roman', Times, serif;
|
||||
font-weight: normal;
|
||||
line-height: normal;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
#message .aside{display:block; width:80%; margin:0 auto; padding:0;}
|
||||
#message .aside h2 span{display:block; font-size:30px;}
|
||||
#message p:first-child{margin-top:0;}
|
||||
h1 {margin-top:-90px; font-size:200px;}
|
||||
h2 {font-size: 60px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="content">
|
||||
<section id="message">
|
||||
<div class="aside">
|
||||
<h1>404</h1>
|
||||
<h2>Error ! <span>Page Not Found</span></h2>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
20
themes/blue/html/archives.html
Normal file
20
themes/blue/html/archives.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{% extends "/html/base.html" %}
|
||||
{%block subtitle %}: Archives{% endblock %}
|
||||
{% block content %}
|
||||
<div id="posts">
|
||||
<div id="page-header">
|
||||
<h2>Archives</h2>
|
||||
</div>
|
||||
{% for group in groups %}
|
||||
<h4>{{group.group}}</h4>
|
||||
<ul>
|
||||
{% for post in group.posts %}
|
||||
<li>
|
||||
{{post.date|date:"MMM dd"}} - <a href="{{post.uri}}">{{post.title}}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
19
themes/blue/html/author.html
Normal file
19
themes/blue/html/author.html
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{% extends "/html/base.html" %}
|
||||
{%block subtitle %}: Posts by {{author}} {% endblock %}
|
||||
{% block content %}
|
||||
<div id="posts">
|
||||
<div id="page-header" class="post-header">
|
||||
<h2>Posts by {{author}}</h2>
|
||||
</div>
|
||||
{% for group in groups %}
|
||||
<h4>{{group.group}}</h4>
|
||||
<ul>
|
||||
{% for post in group.posts %}
|
||||
<li>
|
||||
{{post.date|date:"MMM dd"}} - <a href="{{post.uri}}">{{post.title}}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
130
themes/blue/html/base.html
Normal file
130
themes/blue/html/base.html
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
<!doctype html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
{% if mastodon.host %}
|
||||
<link rel="me" href="https://{{mastodon.host}}/@{{mastodon.acct}}"/>
|
||||
{% endif %}
|
||||
<title>{{title}}{% block subtitle %}{% endblock %}</title>
|
||||
{% block meta %}
|
||||
<meta name="description" content="{{description}}" />
|
||||
<meta name="keywords" content="{% for tag in tags %} {{tag.name}}, {% endfor %}" />
|
||||
{% endblock %}
|
||||
<link rel="canonical" href="{{site-url}}{{uri}}" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="icon" type="image/png" href="{{blog-prefix}}/img/favicon.png" />
|
||||
<link href="//fonts.googleapis.com/css?family=Alegreya:400italic,700italic,400,700" rel="stylesheet"
|
||||
type="text/css" />
|
||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" />
|
||||
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" />
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.7.0/styles/default.min.css" />
|
||||
{% style "css/screen.css" %}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default">
|
||||
<div class="container">
|
||||
<div id="nav" class="navbar-header">
|
||||
<button type="button" id="navbar-button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="{{index-uri}}">{{title}}</a>
|
||||
</div>
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li {% if home %} class="active" {% endif %}>
|
||||
<a href="{{index-uri}}">Home</a>
|
||||
</li>
|
||||
<li {% if archives %} class="active" {% endif %}>
|
||||
<a href="{{archives-uri}}">Archives</a>
|
||||
</li>
|
||||
{% for nav-page in navbar-pages %}
|
||||
<li {%ifequal page.uri nav-page.uri %} class="active" {% endifequal %}>
|
||||
<a href="{{nav-page.uri}}">{{nav-page.title}}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
<li><a href="{{rss-uri}}">RSS</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!--/.nav-collapse -->
|
||||
</div>
|
||||
<!--/.container-fluid -->
|
||||
</nav>
|
||||
|
||||
<div class="container">
|
||||
{% if appeal-uri %}
|
||||
<div id="phone-appeal" class="appeal"><a href="{{appeal-uri}}">Please support me!</a></div>
|
||||
{% endif %}
|
||||
<div class="row">
|
||||
<div class="col-lg-9">
|
||||
<div id="content">{% block content %} {% endblock %}</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<div id="sidebar">
|
||||
{% if appeal-uri %}
|
||||
<div id="appeal" class="appeal">
|
||||
<h3>Please support me!</h3>
|
||||
<p>
|
||||
<b>You can support me to continue writing this
|
||||
blog
|
||||
<a href="{{appeal-uri}}">here</a>.</b>
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if verification-uri %}
|
||||
<div id="verification">
|
||||
<p>
|
||||
My identity is verified by the
|
||||
<a href="https://gaza-verified.org/people/@NOUR_GAZA_s2@mastodon.social/">Gaza Verified
|
||||
project</a>.
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if latest-posts|not-empty %}
|
||||
<div id="recent">
|
||||
<h3>Recent Posts</h3>
|
||||
<ul>
|
||||
{% for post in latest-posts %}
|
||||
<li>
|
||||
<a href="{{post.uri}}">{{post.title}}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %} {% if tags|not-empty %}
|
||||
<div id="tags">
|
||||
<h3>Tags</h3>
|
||||
<ul>
|
||||
{% for tag in tags|sort-by:name %}
|
||||
<li><a href="{{tag.uri}}">{{tag.name}}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
Copyright © {{today|date:yyyy}} {{author}}
|
||||
<p style="text-align: center">
|
||||
Powered by <a href="http://cryogenweb.org">Cryogen</a>
|
||||
</p>
|
||||
</footer>
|
||||
</div>
|
||||
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
|
||||
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
|
||||
{% script "js/highlight.pack.js" %}
|
||||
<script>
|
||||
hljs.initHighlightingOnLoad();
|
||||
</script>
|
||||
{% if post.klipse %} {{post.klipse|safe}} {% endif %} {% if page.klipse
|
||||
%} {{page.klipse|safe}} {% endif %}
|
||||
</body>
|
||||
|
||||
</html>
|
||||
20
themes/blue/html/home.html
Normal file
20
themes/blue/html/home.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{% extends "/html/base.html" %}
|
||||
{% block content %}
|
||||
<div id="post">
|
||||
{% include "/html/post-content.html" %}
|
||||
{% if disqus? %}
|
||||
<div id="comments">
|
||||
<a href="{{post.uri}}#disqus_thread">View Comments</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div id="prev-next">
|
||||
{% if post.prev %}
|
||||
<a href="{{post.prev.uri}}">« {{post.prev.title}}</a>
|
||||
{% endif %}
|
||||
{% if post.next %}
|
||||
<a class="right" href="{{post.next.uri}}">{{post.next.title}} »</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
56
themes/blue/html/page.html
Normal file
56
themes/blue/html/page.html
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
{% extends "/html/base.html" %}
|
||||
{%block subtitle %}: {{page.title}}{% endblock %}
|
||||
{% block meta %}
|
||||
{% if page.description %}
|
||||
<meta name="description" content="{{page.description}}">
|
||||
{% comment %} OpenGraph tags {% endcomment %}
|
||||
<meta property="og:description" content="{{page.description}}">
|
||||
{% endif %}
|
||||
{% if page.image %}
|
||||
{% if page.image.path %}
|
||||
<meta property="og:image" content="{{site-url}}{{blog-prefix}}{{page.image.path}}" />
|
||||
{% if page.image.type %}
|
||||
<meta property="og:image:type" content="{{page.image.type}}" />{% endif %}
|
||||
{% if page.image.width %}
|
||||
<meta property="og:image:width" content="{{page.image.width}}" />{% endif %}
|
||||
{% if page.image.height %}
|
||||
<meta property="og:image:height" content="{{page.image.height}}" />{% endif %}
|
||||
{% if page.image.alt %}
|
||||
<meta property="og:image:alt" content="{{page.image.alt}}" />{% endif %}
|
||||
{% else %}
|
||||
<meta property="og:image" content="{{site-url}}{{blog-prefix}}{{page.image}}" />{% endif %}
|
||||
{% endif %}
|
||||
<meta property="og:url" content="{{site-url}}{{uri}}" />
|
||||
<meta property="og:title" content="{{page.title}}" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:url" content="{{site-url}}{{uri}}" />
|
||||
<meta name="twitter:title" content="{{page.title}}" />
|
||||
<meta name="twitter:description" content="{{page.description}}" />
|
||||
{% if page.image %}
|
||||
<meta name="twitter:image"
|
||||
content="{{site-url}}{{blog-prefix}}{% if page.image.path %}{{page.image.path}}{% else %}{{page.image}}{% endif %}" />
|
||||
{% endif %}
|
||||
<meta name="twitter:creator" content="{{twitter-acct}}" />
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<div id="custom-page">
|
||||
<div id="page-header">
|
||||
<h2>{{page.title}}</h2>
|
||||
</div>
|
||||
{% if page.toc %}{{page.toc|safe}}{% endif %}
|
||||
{{page.content|safe}}
|
||||
|
||||
<div id="prev-next">
|
||||
{% if page.prev %}
|
||||
<a href="{{page.prev.uri}}">« {{page.prev.title}}</a>
|
||||
{% endif %}
|
||||
{% if all page.prev page.next %}
|
||||
||
|
||||
{% endif %}
|
||||
{% if page.next %}
|
||||
<a href="{{page.next.uri}}">{{page.next.title}} »</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
21
themes/blue/html/post-content.html
Normal file
21
themes/blue/html/post-content.html
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<div class="post-header">
|
||||
<div id="post-meta" class="row">
|
||||
<div class="col-lg-6">{{post.date|date:longDate}}</div>
|
||||
{% if post.author %}
|
||||
<span class="col-lg-6 right">By: {{post.author}}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<h1>{{post.title}}</h1>
|
||||
</div>
|
||||
<div>
|
||||
{% if post.toc %}{{post.toc|safe}}{% endif %}
|
||||
{{post.content|safe}}
|
||||
</div>
|
||||
{% if post.tags|not-empty %}
|
||||
<div id="post-tags">
|
||||
<b>Tags: </b>
|
||||
{% for tag in post.tags|sort-by:name %}
|
||||
<a href="{{tag.uri}}">| {{tag.name}} </a>
|
||||
{% endfor %}|
|
||||
</div>
|
||||
{% endif %}
|
||||
66
themes/blue/html/post.html
Normal file
66
themes/blue/html/post.html
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
{% extends "/html/base.html" %}
|
||||
{%block subtitle %}: {{post.title}}{% endblock %}
|
||||
{% block meta %}
|
||||
<meta name="keywords" content="{% for tag in tags %}{{tag.name}}{% if not forloop.last %},{% endif %}{% endfor %}">
|
||||
{% if post.description %}
|
||||
<meta name="description" content="{{post.description}}">
|
||||
{% comment %} OpenGraph tags {% endcomment %}
|
||||
<meta property="og:description" content="{{post.description}}">
|
||||
{% endif %}
|
||||
{% if post.image %}
|
||||
{% if post.image.path %}
|
||||
<meta property="og:image" content="{{site-url}}{{blog-prefix}}{{post.image.path}}" />
|
||||
{% if post.image.type %}
|
||||
<meta property="og:image:type" content="{{post.image.type}}" />{% endif %}
|
||||
{% if post.image.width %}
|
||||
<meta property="og:image:width" content="{{post.image.width}}" />{% endif %}
|
||||
{% if post.image.height %}
|
||||
<meta property="og:image:height" content="{{post.image.height}}" />{% endif %}
|
||||
{% if post.image.alt %}
|
||||
<meta property="og:image:alt" content="{{post.image.alt}}" />{% endif %}
|
||||
{% else %}
|
||||
<meta property="og:image" content="{{site-url}}{{blog-prefix}}{{post.image}}" />{% endif %}
|
||||
{% endif %}
|
||||
<meta property="og:url" content="{{site-url}}{{uri}}" />
|
||||
<meta property="og:title" content="{{post.title}}" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:url" content="{{site-url}}{{uri}}" />
|
||||
<meta name="twitter:title" content="{{post.title}}" />
|
||||
<meta name="twitter:description" content="{{post.description}}" />
|
||||
{% if post.image %}
|
||||
<meta name="twitter:image"
|
||||
content="{{site-url}}{{blog-prefix}}{% if post.image.path %}{{post.image.path}}{% else %}{{post.image}}{% endif %}" />
|
||||
{% endif %}
|
||||
<meta name="twitter:creator" content="{{twitter-acct}}" />
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<div id="post">
|
||||
{% include "/html/post-content.html" %}
|
||||
<div id="prev-next">
|
||||
{% if post.prev %}
|
||||
<a href="{{post.prev.uri}}">« {{post.prev.title}}</a>
|
||||
{% endif %}
|
||||
{% if post.next %}
|
||||
<a class="right" href="{{post.next.uri}}">{{post.next.title}} »</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if disqus-shortname %}
|
||||
<div id="disqus_thread"></div>
|
||||
<script type="text/javascript">
|
||||
var disqus_config = function () {
|
||||
this.page.url = "{{site-url}}{{uri}}";
|
||||
this.page.identifier = "{{post.title}}";
|
||||
};
|
||||
(function() {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||
dsq.src = '//{{disqus-shortname}}.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
28
themes/blue/html/previews.html
Normal file
28
themes/blue/html/previews.html
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{% extends "/html/base.html" %}
|
||||
{% block content %}
|
||||
<div id="post">
|
||||
{% for post in posts %}
|
||||
<div class="post-header">
|
||||
<a href="{{post.uri}}"><h2>{{post.title}}</h2></a>
|
||||
<div id="post-meta">
|
||||
{% if post.author %}
|
||||
<div class="author">{{post.author}}</div>
|
||||
{% endif %}
|
||||
<div class="date">{{post.date|date:longDate}}</div>
|
||||
</div>
|
||||
</div>
|
||||
{{post.content|safe}}
|
||||
<a href="{{post.uri}}">Continue reading →</a>
|
||||
<hr>
|
||||
{% endfor %}
|
||||
|
||||
<div id="prev-next">
|
||||
{% if prev-uri %}
|
||||
<a class="left" href="{{prev-uri}}">« Prev</a>
|
||||
{% endif %}
|
||||
{% if next-uri %}
|
||||
<a class="right" href="{{next-uri}}">Next »</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
16
themes/blue/html/tag.html
Normal file
16
themes/blue/html/tag.html
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{% extends "/html/base.html" %}
|
||||
{%block subtitle %}: Posts Tagged "{{name}}"{% endblock %}
|
||||
{% block content %}
|
||||
<div id="posts-by-tag">
|
||||
<div id="page-header">
|
||||
<h2>Posts Tagged "{{name}}"</h2>
|
||||
</div>
|
||||
<ul>
|
||||
{% for post in posts %}
|
||||
<li>
|
||||
<a href="{{post.uri}}">{{post.title}}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endblock %}
|
||||
15
themes/blue/html/tags.html
Normal file
15
themes/blue/html/tags.html
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{% extends "/html/base.html" %}
|
||||
{%block subtitle %}: Tags{% endblock %}
|
||||
{% block content %}
|
||||
<div id="tags-page">
|
||||
<div id="page-header">
|
||||
<h2>Tags</h2>
|
||||
</div>
|
||||
|
||||
<ul>
|
||||
{% for tag in tags %}
|
||||
<li><a href="{{tag.uri}}">{{tag.name}}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endblock %}
|
||||
2
themes/blue/js/highlight.pack.js
Normal file
2
themes/blue/js/highlight.pack.js
Normal file
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue