Add new theme

Based on Tailwind Starter Blog theme, see https://github.com/timlrx/tailwind-nextjs-starter-blog
This commit is contained in:
danpros 2024-11-20 13:01:17 +07:00
commit 4abd8b29f4
30 changed files with 4494 additions and 36 deletions

View file

@ -199,7 +199,7 @@ autosave.enable = "true"
show.version = "true"
; Set the theme here
views.root = "themes/twentysixteen"
views.root = "themes/tailwind"
; Framework config. No need to edit.
views.layout = "layout"

View file

@ -397,9 +397,9 @@ span.required {
<input name="blog_copyright" value="" placeholder="(c) Your name.">
<br/>
<br/>
<label for="social_bluesky">Bluesky Link:</label>
<input name="social_bluesky" type="url" value="" placeholder="https://bsky.app/profile/username.bsky.social">
<br/>
<label for="social_bluesky">Bluesky Link:</label>
<input name="social_bluesky" type="url" value="" placeholder="https://bsky.app/profile/username.bsky.social">
<br/>
<label for="social_twitter">Twitter Link:</label>
<input name="social_twitter" type="url" value="" placeholder="https://twitter.com/gohtmly">
<br/>

View file

@ -18,31 +18,19 @@
User-agent: *
# Allow directories
Allow: /system/resources/
# Disallow directories
Disallow: /config/
Disallow: /system/
Disallow: /themes/
Disallow: /vendor/
Disallow: /cache/
Disallow: /lang/
# Disallow files
Disallow: /changelog.txt
Disallow: /composer.json
Disallow: /composer.lock
Disallow: /composer.phar
# Disallow paths
Disallow: /search/
Disallow: /admin/
# Allow themes
Allow: /themes/*/css/
Allow: /themes/*/images/
Allow: /themes/*/img/
Allow: /themes/*/js/
Allow: /themes/*/fonts/
# Allow content images
Allow: /content/images/*.jpg
Allow: /content/images/*.png
Allow: /content/images/*.gif

View file

@ -7,7 +7,7 @@ $CSRF = get_csrf();
$updater = new HubUpdater(array(
'name' => 'danpros/htmly',
'prerelease' => !!config("prerelease"),
'prerelease' => config("prerelease"),
));
$dir = 'cache/';

View file

@ -3,6 +3,9 @@ if (!defined('HTMLY')) die('HTMLy');
use PragmaRX\Google2FA\Google2FA;
// Get search query. Redir to /search/
get_search_query();
// Load the configuration file
config('source', $config_file);
@ -19,9 +22,6 @@ if (config('timezone')) {
// Publish scheduled post
publish_scheduled();
// Get search query. Redir to /search/
get_search_query();
// The front page of the blog
get('/index', function () {

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 B

View file

@ -745,15 +745,11 @@ aside .copyright p {
}
.share a.twitter {
background: url(../../readable/img/share-twitter.png) left top no-repeat;
background: url(../../../system/resources/images/share-twitter.png) left top no-repeat;
}
.share a.facebook {
background: url(../../readable/img/share-facebook.png) left top no-repeat;
}
.share a.googleplus {
background: url(../../readable/img/share-googleplus.png) left top no-repeat;
background: url(../../../system/resources/images/share-facebook.png) left top no-repeat;
}
.share a:hover {

View file

@ -553,15 +553,11 @@ ul li, ol li {
}
.share a.twitter {
background: url(../../readable/img/share-twitter.png) left top no-repeat;
background: url(../../../system/resources/images/share-twitter.png) left top no-repeat;
}
.share a.facebook {
background: url(../../readable/img/share-facebook.png) left top no-repeat;
}
.share a.googleplus {
background: url(../../readable/img/share-googleplus.png) left top no-repeat;
background: url(../../../system/resources/images/share-facebook.png) left top no-repeat;
}
.share a:hover {

View file

@ -0,0 +1,21 @@
<?php if (!defined('HTMLY')) die('HTMLy'); ?>
<div class="divide-y divide-gray-200 dark:divide-gray-700">
<div class="space-y-2 pb-8 pt-6 md:space-y-5">
<h1 class="text-3xl font-extrabold leading-9 tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl sm:leading-10 md:text-6xl md:leading-14">Search results not found!</h1>
</div>
<div class="items-start space-y-2 xl:grid xl:gap-x-8 xl:space-y-0">
<div class="prose max-w-none pb-8 pt-8 dark:prose-invert">
<p>Please search to find what you're looking for or visit our <a href="<?php echo site_url() ?>">homepage</a> instead.</p>
</div>
<div class="relative max-w-lg">
<label>
<span class="sr-only">Search articles</span>
<form><input aria-label="Search articles" name="search" placeholder="Search articles" class="block w-full rounded-md border border-gray-300 bg-white px-4 py-2 text-gray-900 focus:border-primary-500 focus:ring-primary-500 dark:border-gray-900 dark:bg-gray-800 dark:text-gray-100" type="text"></form>
</label>
<svg class="absolute right-3 top-3 h-5 w-5 text-gray-400 dark:text-gray-300" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg>
</div>
</div>
</div>

View file

@ -0,0 +1,20 @@
<?php if (!defined('HTMLY')) die('HTMLy'); ?>
<div class="divide-y divide-gray-200 dark:divide-gray-700">
<div class="space-y-2 pb-8 pt-6 md:space-y-5">
<h1 class="text-3xl font-extrabold leading-9 tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl sm:leading-10 md:text-6xl md:leading-14">This page doesn't exist!</h1>
</div>
<div class="items-start space-y-2 xl:grid xl:gap-x-8 xl:space-y-0">
<div class="prose max-w-none pb-8 pt-8 dark:prose-invert">
<p>Please search to find what you're looking for or visit our <a href="<?php echo site_url() ?>">homepage</a> instead.</p>
</div>
<div class="relative max-w-lg">
<label>
<span class="sr-only">Search articles</span>
<form><input aria-label="Search articles" name="search" placeholder="Search articles" class="block w-full rounded-md border border-gray-300 bg-white px-4 py-2 text-gray-900 focus:border-primary-500 focus:ring-primary-500 dark:border-gray-900 dark:bg-gray-800 dark:text-gray-100" type="text"></form>
</label>
<svg class="absolute right-3 top-3 h-5 w-5 text-gray-400 dark:text-gray-300" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg>
</div>
</div>
</div>

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 Timothy Lin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

12
themes/tailwind/README.md Normal file
View file

@ -0,0 +1,12 @@
# HTMLy Theme Tailwind
Tailwind CSS blogging starter template ported to HTMLy.
## Installations
- Upload and extract the zip file into themes directory.
- Activate it from HTMLy panel.
## License
See the LICENSE.txt

View file

@ -0,0 +1,144 @@
.pr-6 {
padding-right:1.5rem
}
.anchor svg {
display:inline;
}
.dark .toc-wrapper {
background-color: var(--tw-prose-pre-bg)!important;
border-color: rgb(55 65 81/var(--tw-divide-opacity))!important;
}
.light .toc-wrapper {
border-color: rgb(229 231 235/var(--tw-divide-opacity))!important;
}
.toc-wrapper a, .related-posts a {
text-decoration: none;
}
.toc-link a {
display:none;
}
.toc-link:hover a{
display:inline-block;
}
.tags a {
margin-right: .75rem;
}
.category a {
margin-right: .1rem;
}
.category {
line-height:3.2rem;
}
.read-more {
text-decoration:inherit;
}
.nav-top li {
display:inline-block;
margin-left: 1.5rem;
font-weight: 500;
}
.nav-mobile li{
outline-width: 0;
outline-style: solid;
letter-spacing: .1em;
font-weight: 700;
font-size: 1.5rem;
line-height: 2rem;
padding-right: 1rem;
padding-top: .5rem;
padding-bottom: .5rem;
margin-bottom: 1rem;
}
.menu-mobile {
display:none;
}
@media (max-width: 640px) {
.nav-top {
display:none;
}
.is-menu-open .menu-mobile {
display:block!important;
}
}
.search-form {
display:none;
}
.is-search-open .search-form {
display: flex;
}
.tags a:hover {
color:rgb(190 24 93);
}
.dark .tags a:hover {
color:rgb(244 114 182);
}
.thumbnail {
position:relative;
display:block;
}
.nav li > ul {
display:none;
}
.footnotes {
margin-top:0;
border:none;
}
.footnotes ol {
margin-bottom:0;
padding-top: 1.5em;
}
.footnotes > hr {
margin:0;
}
.thumb-icon {
background: rgba(0,0,0,0.7);
color: #fff;
text-align: center;
display: block;
width: 32px;
height: 32px;
position: absolute;
bottom: 50%;
left: 50%;
margin-left: -16px;
margin-bottom: -16px;
-webkit-border-radius: 4px;
border-radius: 4px;
-moz-transition: all 0.7s ease;
-webkit-transition: all 0.7s ease;
transition: all 0.7s ease;
}
.thumb-icon svg {
margin: 1px 0 0 2px;
}
.thumbnail:hover .thumb-icon {
background: #fff;
color: #333;
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,866 @@
@font-face {
font-family:Space Grotesk;
font-style:normal;
font-weight:300 700;
font-display:swap;
src:url(../fonts/62328fecf9e80426-s.woff2) format("woff2");
unicode-range:u+0102-0103,
u+0110-0111,
u+0128-0129,
u+0168-0169,
u+01a0-01a1,
u+01af-01b0,
u+0300-0301,
u+0303-0304,
u+0308-0309,
u+0323,
u+0329,
u+1ea0-1ef9,
u+20ab
}
@font-face {
font-family:Space Grotesk;
font-style:normal;
font-weight:300 700;
font-display:swap;
src:url(../fonts/c7eb187887c48af6-s.woff2) format("woff2");
unicode-range:u+0100-02ba,
u+02bd-02c5,
u+02c7-02cc,
u+02ce-02d7,
u+02dd-02ff,
u+0304,
u+0308,
u+0329,
u+1d00-1dbf,
u+1e00-1e9f,
u+1ef2-1eff,
u+2020,
u+20a0-20ab,
u+20ad-20c0,
u+2113,
u+2c60-2c7f,
u+a720-a7ff
}
@font-face {
font-family:Space Grotesk;
font-style:normal;
font-weight:300 700;
font-display:swap;
src:url(../fonts/2d141e1a38819612-s.p.woff2) format("woff2");
unicode-range:u+00??,
u+0131,
u+0152-0153,
u+02bb-02bc,
u+02c6,
u+02da,
u+02dc,
u+0304,
u+0308,
u+0329,
u+2000-206f,
u+20ac,
u+2122,
u+2191,
u+2193,
u+2212,
u+2215,
u+feff,
u+fffd
}
@font-face {
font-family:Space Grotesk Fallback;
src:local("Arial");
ascent-override:89.71%;
descent-override:26.62%;
line-gap-override:0.00%;
size-adjust:109.69%
}
.__className_space {
font-family:Space Grotesk,Space Grotesk Fallback;
font-style:normal
}
.__variable_space {
--font-space-grotesk:"Space Grotesk","Space Grotesk Fallback"
}
:root {
--docsearch-primary-color:#5468ff;
--docsearch-text-color:#1c1e21;
--docsearch-spacing:12px;
--docsearch-icon-stroke-width:1.4;
--docsearch-highlight-color:var(--docsearch-primary-color);
--docsearch-muted-color:#969faf;
--docsearch-container-background:rgba(101,108,133,.8);
--docsearch-logo-color:#5468ff;
--docsearch-modal-width:560px;
--docsearch-modal-height:600px;
--docsearch-modal-background:#f5f6f7;
--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;
--docsearch-searchbox-height:56px;
--docsearch-searchbox-background:#ebedf0;
--docsearch-searchbox-focus-background:#fff;
--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);
--docsearch-hit-height:56px;
--docsearch-hit-color:#444950;
--docsearch-hit-active-color:#fff;
--docsearch-hit-background:#fff;
--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;
--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);
--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);
--docsearch-footer-height:44px;
--docsearch-footer-background:#fff;
--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)
}
html[data-theme=dark] {
--docsearch-text-color:#f5f6f7;
--docsearch-container-background:rgba(9,10,17,.8);
--docsearch-modal-background:#15172a;
--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;
--docsearch-searchbox-background:#090a11;
--docsearch-searchbox-focus-background:#000;
--docsearch-hit-color:#bec3c9;
--docsearch-hit-shadow:none;
--docsearch-hit-background:#090a11;
--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);
--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);
--docsearch-footer-background:#1e2136;
--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);
--docsearch-logo-color:#fff;
--docsearch-muted-color:#7f8497
}
.DocSearch-Button {
align-items:center;
background:var(--docsearch-searchbox-background);
border:0;
border-radius:40px;
color:var(--docsearch-muted-color);
cursor:pointer;
display:flex;
font-weight:500;
height:36px;
justify-content:space-between;
margin:0 0 0 16px;
padding:0 8px;
-webkit-user-select:none;
-moz-user-select:none;
user-select:none
}
.DocSearch-Button:active,
.DocSearch-Button:focus,
.DocSearch-Button:hover {
background:var(--docsearch-searchbox-focus-background);
box-shadow:var(--docsearch-searchbox-shadow);
color:var(--docsearch-text-color);
outline:none
}
.DocSearch-Button-Container {
align-items:center;
display:flex
}
.DocSearch-Search-Icon {
stroke-width:1.6
}
.DocSearch-Button .DocSearch-Search-Icon {
color:var(--docsearch-text-color)
}
.DocSearch-Button-Placeholder {
font-size:1rem;
padding:0 12px 0 6px
}
.DocSearch-Button-Keys {
display:flex;
min-width:calc(40px + .8em)
}
.DocSearch-Button-Key {
align-items:center;
background:var(--docsearch-key-gradient);
border-radius:3px;
box-shadow:var(--docsearch-key-shadow);
color:var(--docsearch-muted-color);
display:flex;
height:18px;
justify-content:center;
margin-right:.4em;
position:relative;
padding:0 0 2px;
border:0;
top:-1px;
width:20px
}
@media (max-width:768px) {
.DocSearch-Button-Keys,
.DocSearch-Button-Placeholder {
display:none
}
}
.DocSearch--active {
overflow:hidden!important
}
.DocSearch-Container,
.DocSearch-Container * {
box-sizing:border-box
}
.DocSearch-Container {
background-color:var(--docsearch-container-background);
height:100vh;
left:0;
position:fixed;
top:0;
width:100vw;
z-index:200
}
.DocSearch-Container a {
text-decoration:none
}
.DocSearch-Link {
-webkit-appearance:none;
-moz-appearance:none;
appearance:none;
background:none;
border:0;
color:var(--docsearch-highlight-color);
cursor:pointer;
font:inherit;
margin:0;
padding:0
}
.DocSearch-Modal {
background:var(--docsearch-modal-background);
border-radius:6px;
box-shadow:var(--docsearch-modal-shadow);
flex-direction:column;
margin:60px auto auto;
max-width:var(--docsearch-modal-width);
position:relative
}
.DocSearch-SearchBar {
display:flex;
padding:var(--docsearch-spacing) var(--docsearch-spacing) 0
}
.DocSearch-Form {
align-items:center;
background:var(--docsearch-searchbox-focus-background);
border-radius:4px;
box-shadow:var(--docsearch-searchbox-shadow);
display:flex;
height:var(--docsearch-searchbox-height);
margin:0;
padding:0 var(--docsearch-spacing);
position:relative;
width:100%
}
.DocSearch-Input {
-webkit-appearance:none;
-moz-appearance:none;
appearance:none;
background:transparent;
border:0;
color:var(--docsearch-text-color);
flex:1;
font:inherit;
font-size:1.2em;
height:100%;
outline:none;
padding:0 0 0 8px;
width:80%
}
.DocSearch-Input::-moz-placeholder {
color:var(--docsearch-muted-color);
opacity:1
}
.DocSearch-Input::placeholder {
color:var(--docsearch-muted-color);
opacity:1
}
.DocSearch-Input::-webkit-search-cancel-button,
.DocSearch-Input::-webkit-search-decoration,
.DocSearch-Input::-webkit-search-results-button,
.DocSearch-Input::-webkit-search-results-decoration {
display:none
}
.DocSearch-LoadingIndicator,
.DocSearch-MagnifierLabel,
.DocSearch-Reset {
margin:0;
padding:0
}
.DocSearch-MagnifierLabel,
.DocSearch-Reset {
align-items:center;
color:var(--docsearch-highlight-color);
display:flex;
justify-content:center
}
.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,
.DocSearch-LoadingIndicator {
display:none
}
.DocSearch-Container--Stalled .DocSearch-LoadingIndicator {
align-items:center;
color:var(--docsearch-highlight-color);
display:flex;
justify-content:center
}
@media screen and (prefers-reduced-motion:reduce) {
.DocSearch-Reset {
animation:none;
-webkit-appearance:none;
-moz-appearance:none;
appearance:none;
background:none;
border:0;
border-radius:50%;
color:var(--docsearch-icon-color);
cursor:pointer;
right:0;
stroke-width:var(--docsearch-icon-stroke-width)
}
}
.DocSearch-Reset {
animation:fade-in .1s ease-in forwards;
-webkit-appearance:none;
-moz-appearance:none;
appearance:none;
background:none;
border:0;
border-radius:50%;
color:var(--docsearch-icon-color);
cursor:pointer;
padding:2px;
right:0;
stroke-width:var(--docsearch-icon-stroke-width)
}
.DocSearch-Reset[hidden] {
display:none
}
.DocSearch-Reset:hover {
color:var(--docsearch-highlight-color)
}
.DocSearch-LoadingIndicator svg,
.DocSearch-MagnifierLabel svg {
height:24px;
width:24px
}
.DocSearch-Cancel {
display:none
}
.DocSearch-Dropdown {
max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));
min-height:var(--docsearch-spacing);
overflow-y:auto;
overflow-y:overlay;
padding:0 var(--docsearch-spacing);
scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);
scrollbar-width:thin
}
.DocSearch-Dropdown::-webkit-scrollbar {
width:12px
}
.DocSearch-Dropdown::-webkit-scrollbar-track {
background:transparent
}
.DocSearch-Dropdown::-webkit-scrollbar-thumb {
background-color:var(--docsearch-muted-color);
border:3px solid var(--docsearch-modal-background);
border-radius:20px
}
.DocSearch-Dropdown ul {
list-style:none;
margin:0;
padding:0
}
.DocSearch-Label {
font-size:.75em;
line-height:1.6em
}
.DocSearch-Help,
.DocSearch-Label {
color:var(--docsearch-muted-color)
}
.DocSearch-Help {
font-size:.9em;
margin:0;
-webkit-user-select:none;
-moz-user-select:none;
user-select:none
}
.DocSearch-Title {
font-size:1.2em
}
.DocSearch-Logo a {
display:flex
}
.DocSearch-Logo svg {
color:var(--docsearch-logo-color);
margin-left:8px
}
.DocSearch-Hits:last-of-type {
margin-bottom:24px
}
.DocSearch-Hits mark {
background:none;
color:var(--docsearch-highlight-color)
}
.DocSearch-HitsFooter {
color:var(--docsearch-muted-color);
display:flex;
font-size:.85em;
justify-content:center;
margin-bottom:var(--docsearch-spacing);
padding:var(--docsearch-spacing)
}
.DocSearch-HitsFooter a {
border-bottom:1px solid;
color:inherit
}
.DocSearch-Hit {
border-radius:4px;
display:flex;
padding-bottom:4px;
position:relative
}
@media screen and (prefers-reduced-motion:reduce) {
.DocSearch-Hit--deleting {
transition:none
}
}
.DocSearch-Hit--deleting {
opacity:0;
transition:all .25s linear
}
@media screen and (prefers-reduced-motion:reduce) {
.DocSearch-Hit--favoriting {
transition:none
}
}
.DocSearch-Hit--favoriting {
transform:scale(0);
transform-origin:top center;
transition:all .25s linear;
transition-delay:.25s
}
.DocSearch-Hit a {
background:var(--docsearch-hit-background);
border-radius:4px;
box-shadow:var(--docsearch-hit-shadow);
display:block;
padding-left:var(--docsearch-spacing);
width:100%
}
.DocSearch-Hit-source {
background:var(--docsearch-modal-background);
color:var(--docsearch-highlight-color);
font-size:.85em;
font-weight:600;
line-height:32px;
margin:0 -4px;
padding:8px 4px 0;
position:sticky;
top:0;
z-index:10
}
.DocSearch-Hit-Tree {
color:var(--docsearch-muted-color);
height:var(--docsearch-hit-height);
opacity:.5;
stroke-width:var(--docsearch-icon-stroke-width);
width:24px
}
.DocSearch-Hit[aria-selected=true] a {
background-color:var(--docsearch-highlight-color)
}
.DocSearch-Hit[aria-selected=true] mark {
text-decoration:underline
}
.DocSearch-Hit-Container {
align-items:center;
color:var(--docsearch-hit-color);
display:flex;
flex-direction:row;
height:var(--docsearch-hit-height);
padding:0 var(--docsearch-spacing) 0 0
}
.DocSearch-Hit-icon {
height:20px;
width:20px
}
.DocSearch-Hit-action,
.DocSearch-Hit-icon {
color:var(--docsearch-muted-color);
stroke-width:var(--docsearch-icon-stroke-width)
}
.DocSearch-Hit-action {
align-items:center;
display:flex;
height:22px;
width:22px
}
.DocSearch-Hit-action svg {
display:block;
height:18px;
width:18px
}
.DocSearch-Hit-action+.DocSearch-Hit-action {
margin-left:6px
}
.DocSearch-Hit-action-button {
-webkit-appearance:none;
-moz-appearance:none;
appearance:none;
background:none;
border:0;
border-radius:50%;
color:inherit;
cursor:pointer;
padding:2px
}
svg.DocSearch-Hit-Select-Icon {
display:none
}
.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon {
display:block
}
.DocSearch-Hit-action-button:focus,
.DocSearch-Hit-action-button:hover {
background:rgba(0,0,0,.2);
transition:background-color .1s ease-in
}
@media screen and (prefers-reduced-motion:reduce) {
.DocSearch-Hit-action-button:focus,
.DocSearch-Hit-action-button:hover {
transition:none
}
}
.DocSearch-Hit-action-button:focus path,
.DocSearch-Hit-action-button:hover path {
fill:#fff
}
.DocSearch-Hit-content-wrapper {
display:flex;
flex:1 1 auto;
flex-direction:column;
font-weight:500;
justify-content:center;
line-height:1.2em;
margin:0 8px;
overflow-x:hidden;
position:relative;
text-overflow:ellipsis;
white-space:nowrap;
width:80%
}
.DocSearch-Hit-title {
font-size:.9em
}
.DocSearch-Hit-path {
color:var(--docsearch-muted-color);
font-size:.75em
}
.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,
.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,
.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,
.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,
.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,
.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,
.DocSearch-Hit[aria-selected=true] mark {
color:var(--docsearch-hit-active-color)!important
}
@media screen and (prefers-reduced-motion:reduce) {
.DocSearch-Hit-action-button:focus,
.DocSearch-Hit-action-button:hover {
background:rgba(0,0,0,.2);
transition:none
}
}
.DocSearch-ErrorScreen,
.DocSearch-NoResults,
.DocSearch-StartScreen {
font-size:.9em;
margin:0 auto;
padding:36px 0;
text-align:center;
width:80%
}
.DocSearch-Screen-Icon {
color:var(--docsearch-muted-color);
padding-bottom:12px
}
.DocSearch-NoResults-Prefill-List {
display:inline-block;
padding-bottom:24px;
text-align:left
}
.DocSearch-NoResults-Prefill-List ul {
display:inline-block;
padding:8px 0 0
}
.DocSearch-NoResults-Prefill-List li {
list-style-position:inside;
list-style-type:"» "
}
.DocSearch-Prefill {
-webkit-appearance:none;
-moz-appearance:none;
appearance:none;
background:none;
border:0;
border-radius:1em;
color:var(--docsearch-highlight-color);
cursor:pointer;
display:inline-block;
font-size:1em;
font-weight:700;
padding:0
}
.DocSearch-Prefill:focus,
.DocSearch-Prefill:hover {
outline:none;
text-decoration:underline
}
.DocSearch-Footer {
align-items:center;
background:var(--docsearch-footer-background);
border-radius:0 0 8px 8px;
box-shadow:var(--docsearch-footer-shadow);
display:flex;
flex-direction:row-reverse;
flex-shrink:0;
height:var(--docsearch-footer-height);
justify-content:space-between;
padding:0 var(--docsearch-spacing);
position:relative;
-webkit-user-select:none;
-moz-user-select:none;
user-select:none;
width:100%;
z-index:300
}
.DocSearch-Commands {
color:var(--docsearch-muted-color);
display:flex;
list-style:none;
margin:0;
padding:0
}
.DocSearch-Commands li {
align-items:center;
display:flex
}
.DocSearch-Commands li:not(:last-of-type) {
margin-right:.8em
}
.DocSearch-Commands-Key {
align-items:center;
background:var(--docsearch-key-gradient);
border-radius:2px;
box-shadow:var(--docsearch-key-shadow);
display:flex;
height:18px;
justify-content:center;
margin-right:.4em;
padding:0 0 1px;
color:var(--docsearch-muted-color);
border:0;
width:20px
}
@media (max-width:768px) {
:root {
--docsearch-spacing:10px;
--docsearch-footer-height:40px
}
.DocSearch-Dropdown {
height:100%
}
.DocSearch-Container {
height:100vh;
height:-webkit-fill-available;
height:calc(var(--docsearch-vh, 1vh) * 100);
position:absolute
}
.DocSearch-Footer {
border-radius:0;
bottom:0;
position:absolute
}
.DocSearch-Hit-content-wrapper {
display:flex;
position:relative;
width:80%
}
.DocSearch-Modal {
border-radius:0;
box-shadow:none;
height:100vh;
height:-webkit-fill-available;
height:calc(var(--docsearch-vh, 1vh) * 100);
margin:0;
max-width:100%;
width:100%
}
.DocSearch-Dropdown {
max-height:calc(var(--docsearch-vh, 1vh) * 100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))
}
.DocSearch-Cancel {
-webkit-appearance:none;
-moz-appearance:none;
appearance:none;
background:none;
border:0;
color:var(--docsearch-highlight-color);
cursor:pointer;
display:inline-block;
flex:none;
font:inherit;
font-size:1em;
font-weight:500;
margin-left:var(--docsearch-spacing);
outline:none;
overflow:hidden;
padding:0;
-webkit-user-select:none;
-moz-user-select:none;
user-select:none;
white-space:nowrap
}
.DocSearch-Commands,
.DocSearch-Hit-Tree {
display:none
}
}
@keyframes fade-in {
0% {
opacity:0
}
to {
opacity:1
}
}
.light .DocSearch {
--docsearch-primary-color:#db2777;
--docsearch-highlight-color:#db2777;
--docsearch-searchbox-shadow:inset 0 0 0 2px #db2777;
--docsearch-muted-color:#6b7280;
--docsearch-container-background:rgba(156,163,175,.8);
--docsearch-modal-background:#e5e7eb;
--docsearch-searchbox-background:#f3f4f6;
--docsearch-searchbox-focus-background:#f3f4f6;
--docsearch-hit-color:#374151;
--docsearch-hit-shadow:none;
--docsearch-hit-active-color:#1f2937;
--docsearch-hit-background:#f3f4f6;
--docsearch-footer-background:#f3f4f6
}
.dark .DocSearch {
--docsearch-primary-color:#db2777;
--docsearch-highlight-color:#db2777;
--docsearch-searchbox-shadow:inset 0 0 0 2px #db2777;
--docsearch-text-color:#d1d5db;
--docsearch-muted-color:#9ca3af;
--docsearch-container-background:rgba(17,24,39,.8);
--docsearch-modal-background:#111827;
--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;
--docsearch-searchbox-background:#1f2937;
--docsearch-searchbox-focus-background:#1f2937;
--docsearch-hit-color:#e5e7eb;
--docsearch-hit-shadow:none;
--docsearch-hit-active-color:#f3f4f6;
--docsearch-hit-background:#1f2937;
--docsearch-footer-background:#111827;
--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);
--docsearch-key-gradient:linear-gradient(-26.5deg,#1f2937,#111827);
--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);
--docsearch-logo-color:#d1d5db
}
.dark .DocSearch-Input,
.dark .DocSearch-Input:focus,
.light .DocSearch-Input,
.light .DocSearch-Input:focus {
box-shadow:0 0 #0000;
background:transparent
}
@media (prefers-color-scheme:dark) {
.markdown-alert {
--color-border-default:#30363d;
--color-accent-fg:#58a6ff;
--color-accent-emphasis:#1f6feb;
--color-danger-fg:#f85149;
--color-danger-emphasis:#da3633;
--color-attention-fg:#d29922;
--color-attention-emphasis:#9e6a03;
--color-done-fg:#a371f7;
--color-done-emphasis:#8957e5;
--color-success-fg:#3fb950;
--color-success-emphasis:#238636
}
}
@media (prefers-color-scheme:light) {
.markdown-alert {
--color-border-default:#d0d7de;
--color-accent-fg:#0969da;
--color-accent-emphasis:#0969da;
--color-danger-fg:#d1242f;
--color-danger-emphasis:#cf222e;
--color-attention-fg:#9a6700;
--color-attention-emphasis:#9a6700;
--color-done-fg:#8250df;
--color-done-emphasis:#8250df;
--color-success-fg:#1a7f37;
--color-success-emphasis:#1f883d
}
}
.markdown-alert {
border-left:.25em solid var(--borderColor-default,var(--color-border-default));
color:inherit;
margin-bottom:16px;
padding:.5rem 1em
}
.markdown-alert>:last-child {
margin-bottom:0!important
}
.markdown-alert .markdown-alert-title {
align-items:center;
display:flex;
font-size:14px;
font-weight:500;
line-height:1
}
.markdown-alert .markdown-alert-title svg.octicon {
margin-right:8px!important;
margin-right:var(--base-size-8,8px)!important;
fill:currentColor
}
.markdown-alert.markdown-alert-note {
border-left-color:var(--borderColor-accent-emphasis,var(--color-accent-emphasis))
}
.markdown-alert.markdown-alert-note .markdown-alert-title {
color:var(--color-accent-fg);
color:var(--fgColor-accent,var(--color-accent-fg))
}
.markdown-alert.markdown-alert-tip {
border-left-color:var(--borderColor-success-emphasis,var(--color-success-emphasis))
}
.markdown-alert.markdown-alert-tip .markdown-alert-title {
color:var(--color-success-fg);
color:var(--fgColor-success,var(--color-success-fg))
}
.markdown-alert.markdown-alert-important {
border-left-color:var(--borderColor-done-emphasis,var(--color-done-emphasis))
}
.markdown-alert.markdown-alert-important .markdown-alert-title {
color:var(--color-done-fg);
color:var(--fgColor-done,var(--color-done-fg))
}
.markdown-alert.markdown-alert-warning {
border-left-color:var(--borderColor-attention-emphasis,var(--color-attention-emphasis))
}
.markdown-alert.markdown-alert-warning .markdown-alert-title {
color:var(--color-attention-fg);
color:var(--fgColor-attention,var(--color-attention-fg))
}
.markdown-alert.markdown-alert-caution {
border-left-color:var(--borderColor-danger-emphasis,var(--color-danger-emphasis))
}
.markdown-alert.markdown-alert-caution .markdown-alert-title {
color:var(--color-danger-fg);
color:var(--fgColor-danger,var(--color-danger-fg))
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,93 @@
Copyright 2020 The Space Grotesk Project Authors (https://github.com/floriankarsten/space-grotesk)
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:
http://scripts.sil.org/OFL
-----------------------------------------------------------
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.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View file

@ -0,0 +1,26 @@
(function () {
var e = document.querySelector(".menu-open");
e &&
e.addEventListener("click", function () {
document.body.classList.contains("is-menu-open") ? document.body.classList.remove("is-menu-open") : document.body.classList.add("is-menu-open");
});
var c = document.querySelector(".menu-close");
c &&
c.addEventListener("click", function () {
document.body.classList.contains("is-menu-open") ? document.body.classList.remove("is-menu-open") : document.body.classList.add("is-menu-open");
});
var s = document.querySelector(".search-open");
s &&
s.addEventListener("click", function () {
document.body.classList.contains("is-search-open") ? document.body.classList.remove("is-search-open") : document.body.classList.add("is-search-open");
});
var sc = document.querySelector(".search-close");
sc &&
sc.addEventListener("click", function () {
document.body.classList.contains("is-search-open") ? document.body.classList.remove("is-search-open") : document.body.classList.add("is-search-open");
});
})();

View file

@ -0,0 +1,164 @@
<?php if (!defined('HTMLY')) die('HTMLy'); ?>
<!DOCTYPE html>
<html lang="<?php echo blog_language();?>" class="__variable_space scroll-smooth dark" id="html-id">
<head>
<?php echo head_contents();?>
<title><?php echo $title;?></title>
<meta name="description" content="<?php echo $description; ?>"/>
<link rel="canonical" href="<?php echo $canonical; ?>" />
<?php echo $metatags;?>
<link rel="stylesheet" href="<?php echo theme_path();?>css/typography.css" data-precedence="next" />
<link rel="stylesheet" href="<?php echo theme_path();?>css/tailwind.css" data-precedence="next" />
<link rel="stylesheet" href="<?php echo theme_path();?>css/style.css" data-precedence="next" />
</head>
<body class="bg-white pl-[calc(100vw-100%)] text-black antialiased dark:bg-gray-950 dark:text-white">
<?php if (facebook()) { echo facebook(); } ?>
<?php if (login()) { toolbar(); } ?>
<script>
var html = document.getElementById("html-id");
if (localStorage.getItem("tw-theme") === "dark") {
html.classList.remove('light');
html.classList.add('dark');
} else if (localStorage.getItem("tw-theme") === "light") {
html.classList.remove('dark');
html.classList.add('light');
}
</script>
<section class="mx-auto max-w-3xl px-4 sm:px-6 xl:max-w-5xl xl:px-0">
<div class="flex h-screen flex-col justify-between font-sans">
<header class="flex items-center justify-between py-10">
<div>
<a aria-label="Quasilinear Musings" href="<?php echo site_url();?>">
<div class="flex items-center justify-between">
<div class="mr-3">
<img width="45" src="<?php echo theme_path();?>logo.png" alt="<?php echo blog_title();?>"/>
</div>
<div class="hidden h-6 text-2xl font-semibold sm:block"><?php echo blog_title();?></div>
</div>
</a>
</div>
<div class="flex items-center space-x-4 leading-5 sm:space-x-6">
<?php echo menu('nav-top');?>
<button aria-label="Search" class="search-open">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-6 w-6 text-gray-900 dark:text-gray-100">
<path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"></path>
</svg>
</button>
<div class="mr-5">
<div class="relative inline-block text-left">
<div>
<button id="theme-toggle" type="button" aria-haspopup="menu" aria-expanded="false">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="h-6 w-6 text-gray-900 dark:text-gray-100">
<path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path>
</svg>
</button>
</div>
</div>
</div>
<button aria-label="Toggle Menu" class="sm:hidden menu-open" id="menu-toggle">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="h-8 w-8 text-gray-900 dark:text-gray-100">
<path fill-rule="evenodd" d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z" clip-rule="evenodd"></path>
</svg>
</button>
<div class="menu-mobile" role="dialog" tabindex="-1">
<div class="fixed inset-0 z-60 bg-black/25"></div>
<div class="fixed left-0 top-0 z-70 h-full w-full bg-white opacity-95 duration-300 dark:bg-gray-950 dark:opacity-[0.98]">
<nav class="mt-8 flex h-full basis-0 flex-col items-start overflow-y-auto pl-12 pt-2 text-left">
<?php echo menu('nav-mobile');?>
</nav>
<button class="fixed right-4 top-7 z-80 h-16 w-16 p-4 text-gray-900 hover:text-primary-500 dark:text-gray-100 dark:hover:text-primary-400 menu-close" aria-label="Toggle Menu">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
<path
fill-rule="evenodd"
d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z"
clip-rule="evenodd"
></path>
</svg>
</button>
</div>
</div>
</div>
</header>
<main class="mb-auto">
<?php if (is_index() || isset($is_profile)) {?>
<div class="divide-y divide-gray-200 dark:divide-gray-700">
<?php echo content();?>
</div>
<?php } else {?>
<?php echo content();?>
<?php } ?>
</main>
<footer>
<div class="mt-16 flex flex-col items-center">
<div class="mb-3 flex space-x-4">
<?php echo social();?>
</div>
<div class="mb-2 flex space-x-2 text-sm text-gray-500 dark:text-gray-400">
<div><?php echo copyright();?></div>
</div>
<div class="mb-8 text-sm text-gray-500 dark:text-gray-400">Based on <a style="te" target="_blank" rel="nofollow" href="https://github.com/timlrx/tailwind-nextjs-starter-blog">Tailwind Starter</a></div>
</div>
</footer>
</div>
</section>
<div style="position: fixed; align-items: flex-start; justify-content: center; width: 100%; inset: 0px; padding: 14vh 16px 16px;" class="z-50 bg-gray-300/50 p-4 backdrop-blur backdrop-filter dark:bg-black/50 search-form">
<div style="opacity: 1; transform: scale(0.99); pointer-events: auto;" class="w-full max-w-xl">
<div>
<div class="overflow-hidden rounded-2xl border border-gray-100 bg-gray-50 dark:border-gray-800 dark:bg-gray-900">
<div class="flex items-center space-x-4 p-4">
<span class="block w-5">
<svg class="text-gray-400 dark:text-gray-300" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg>
</span>
<form role="search" class="w-full"><input name="search" class="h-8 w-full bg-transparent text-gray-600 placeholder-gray-400 focus:outline-none dark:text-gray-200 dark:placeholder-gray-500" autocomplete="off" role="combobox" spellcheck="false" aria-expanded="true" aria-controls="kbar-listbox" aria-activedescendant="kbar-listbox-item-1" placeholder="<?php echo i18n('type_to_search');?>" value=""></form>
<button class="z-80 h-16 w-16 p-4 text-gray-900 hover:text-primary-500 dark:text-gray-100 dark:hover:text-primary-400 search-close" aria-label="Toggle Menu">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
<path
fill-rule="evenodd"
d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z"
clip-rule="evenodd"
></path>
</svg>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="fixed bottom-8 right-8 hidden flex-col gap-3" id="scroll-up">
<button aria-label="Scroll To Top" class="rounded-full bg-gray-200 p-2 text-gray-500 transition-all hover:bg-gray-300 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600">
<a href="#"><svg class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
<path fill-rule="evenodd" d="M3.293 9.707a1 1 0 010-1.414l6-6a1 1 0 011.414 0l6 6a1 1 0 01-1.414 1.414L11 5.414V17a1 1 0 11-2 0V5.414L4.707 9.707a1 1 0 01-1.414 0z" clip-rule="evenodd"></path>
</svg></a>
</button>
</div>
<script>
var mybutton = document.getElementById("scroll-up");
window.onscroll = function () {
if (document.body.scrollTop > 200 || document.documentElement.scrollTop > 200) {
mybutton.style.display = "flex";
mybutton.style.opacity = "1";
} else {
mybutton.style.display = "none";
mybutton.style.opacity = "0";
}
};
</script>
<script>
var html = document.getElementById("html-id");
document.getElementById("theme-toggle").addEventListener("click", () => {
if (html.className.includes("dark")) {
html.classList.remove('dark');
html.classList.add('light');
localStorage.setItem("tw-theme", 'light');
} else {
html.classList.remove('light');
html.classList.add('dark');
localStorage.setItem("tw-theme", 'dark');
}
})
</script>
<script src="<?php echo theme_path();?>js/functions.js"></script>
<?php if (analytics()): ?><?php echo analytics() ?><?php endif; ?>
</body>
</html>

BIN
themes/tailwind/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,139 @@
<?php if (!defined('HTMLY')) die('HTMLy'); ?>
<?php if (isset($is_taxonomy)):?>
<div class="space-y-2 pb-8 pt-6 md:space-y-5">
<h1 class="text-3xl font-extrabold leading-9 tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl sm:leading-10 md:text-6xl md:leading-14"><?php echo $taxonomy->title;?>
<a class="inline-block" href="<?php echo $taxonomy->rss;?>">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" class="bi bi-rss" viewBox="0 0 16 16"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1m0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1"/></svg>
</a>
</h1>
<div class="prose max-w-none text-lg leading-7 text-gray-500 dark:text-gray-400 dark:prose-invert">
<?php echo $taxonomy->body;?>
</div>
<?php if (isset($is_blog)):?>
<div class="category">
<?php $categories = category_list(true);?>
<?php foreach ($categories as $k => $v):?>
<?php if ($v['2'] !== 0):?>
<a class="bg-gray-700 w-full rounded-md py-2 px-4 font-medium text-white sm:py-2 hover:bg-gray-100 dark:hover:bg-gray-100 focus:ring-primary-400 focus:outline-none focus:ring-2 focus:ring-offset-2 dark:ring-offset-black" href="<?php echo site_url() . 'category/' . $v[0] ?>"><?php echo $v[1];?></a>
<?php endif;?>
<?php endforeach;?>
</div>
<?php endif;?>
</div>
<?php endif;?>
<?php $teaserType = config('teaser.type'); $readMore = config('read.more');?>
<ul class="divide-y divide-gray-200 dark:divide-gray-700">
<?php foreach ($posts as $p):?>
<?php $img = get_image($p->body);?>
<li class="py-12">
<article>
<div class="space-y-2 xl:grid xl:grid-cols-4 xl:items-baseline xl:space-y-0">
<dl>
<dt class="sr-only"><?php echo i18n('posted_on');?></dt>
<dd class="text-base font-medium leading-6 text-gray-500 dark:text-gray-400"><time><?php echo format_date($p->date);?></time>
<?php if (authorized($p)):?> • <span><a href="<?php echo $p->url;?>/edit?destination=post"><?php echo i18n('edit');?></a></span><?php endif;?>
</dd>
<?php if ($teaserType === 'trimmed') :?>
<div class="pt-4 pr-6">
<?php if (!empty($p->image)) {?>
<a class="thumbnail" href="<?php echo $p->url;?>"><img src="<?php echo $p->image;?>" width="100%" alt="<?php echo $p->title;?>"></a>
<?php } elseif (!empty($p->video)) {?>
<a class="thumbnail" href="<?php echo $p->url;?>"><img src="//img.youtube.com/vi/<?php echo get_video_id($p->video);?>/sddefault.jpg" width="100%" alt="<?php echo $p->title;?>">
<span class="thumb-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="currentColor" class="bi bi-play" viewBox="0 0 16 16"><path d="M10.804 8 5 4.633v6.734zm.792-.696a.802.802 0 0 1 0 1.392l-6.363 3.692C4.713 12.69 4 12.345 4 11.692V4.308c0-.653.713-.998 1.233-.696z"/></svg>
</span>
</a>
<?php } elseif (!empty($p->audio)) {?>
<a class="thumbnail" href="<?php echo $p->url;?>">
<img src="<?php echo theme_path();?>img/soundcloud.jpg" width="100%" alt="<?php echo $p->title;?>">
<span class="thumb-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="currentColor" class="bi bi-volume-up" viewBox="0 0 16 16"><path d="M11.536 14.01A8.47 8.47 0 0 0 14.026 8a8.47 8.47 0 0 0-2.49-6.01l-.708.707A7.48 7.48 0 0 1 13.025 8c0 2.071-.84 3.946-2.197 5.303z"/><path d="M10.121 12.596A6.48 6.48 0 0 0 12.025 8a6.48 6.48 0 0 0-1.904-4.596l-.707.707A5.48 5.48 0 0 1 11.025 8a5.48 5.48 0 0 1-1.61 3.89z"/><path d="M10.025 8a4.5 4.5 0 0 1-1.318 3.182L8 10.475A3.5 3.5 0 0 0 9.025 8c0-.966-.392-1.841-1.025-2.475l.707-.707A4.5 4.5 0 0 1 10.025 8M7 4a.5.5 0 0 0-.812-.39L3.825 5.5H1.5A.5.5 0 0 0 1 6v4a.5.5 0 0 0 .5.5h2.325l2.363 1.89A.5.5 0 0 0 7 12zM4.312 6.39 6 5.04v5.92L4.312 9.61A.5.5 0 0 0 4 9.5H2v-3h2a.5.5 0 0 0 .312-.11"/></svg>
</span>
</a>
<?php } elseif (!empty($img)) {?>
<a class="thumbnail" href="<?php echo $p->url;?>"><img src="<?php echo $img;?>" width="100%" alt="<?php echo $p->title;?>"></a>
<?php } ?>
</div>
<?php endif;?>
</dl>
<div class="space-y-5 xl:col-span-3">
<div class="space-y-6">
<div>
<?php if (!empty($p->link)) {?>
<h2 class="text-2xl font-bold leading-8 tracking-tight">
<a class="text-gray-900 dark:text-gray-100" href="<?php echo $p->link;?>" target="_blank"><?php echo $p->title;?>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" style="display:inline-block;margin-left: 3px;" class=" bi bi-link-45deg" viewBox="0 0 16 16">
<path d="M4.715 6.542 3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 5.5L8 6.086a1 1 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4 4 0 0 1-.128-1.287z"/>
<path d="M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 1 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 1 0-4.243-4.243z"/>
</svg>
</a>
</h2>
<?php } else { ?>
<h2 class="text-2xl font-bold leading-8 tracking-tight">
<a class="text-gray-900 dark:text-gray-100" href="<?php echo $p->url;?>"><?php echo $p->title;?></a>
</h2>
<?php } ?>
<div class="flex flex-wrap">
<span class="mr-3 text-sm font-medium uppercase text-primary-500"><span class="tags"><?php echo $p->tag;?></span></span>
</div>
</div>
<div class="prose max-w-none text-gray-500 dark:text-gray-400 dark:prose-invert">
<?php if ($teaserType !== 'trimmed') :?>
<?php if (!empty($p->image)) {?>
<img src="<?php echo $p->image;?>" width="100%" alt="<?php echo $p->title;?>">
<?php } elseif (!empty($p->video)) {?>
<div class="relative" style="padding-top: 56.25%">
<iframe class="absolute inset-0 w-full h-full" src="https://www.youtube.com/embed/<?php echo get_video_id($p->video); ?>" frameborder="0" allowfullscreen></iframe>
</div>
<?php } elseif (!empty($p->audio)) {?>
<iframe width="100%" height="100%" class="embed-responsive-item" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=<?php echo $p->audio;?>&amp;auto_play=false&amp;visual=true"></iframe>
<?php } elseif (!empty($p->quote)) {?>
<blockquote class="text-2xl italic font-bold leading-8 tracking-tight">
<?php echo $p->quote;?>
</blockquote>
<?php } ?>
<?php endif;?>
<?php if (!empty($p->quote) && $teaserType === 'trimmed'):?>
<blockquote class="text-2xl italic font-bold leading-8 tracking-tight" style="margin: 1.6em 0;">
<?php echo $p->quote;?>
</blockquote>
<?php endif; ?>
<?php echo get_teaser($p->body, $p->url);?>
</div>
</div>
<?php if ($teaserType === 'trimmed'):?>
<div class="text-base font-medium leading-6">
<a class="text-primary-500 hover:text-primary-600 dark:hover:text-primary-400" aria-label="<?php echo $p->title;?>" href="<?php echo $p->url;?>"><?php echo $readMore;?></a>
</div>
<?php endif;?>
</div>
</div>
</article>
</li>
<?php endforeach;?>
</ul>
<?php if (!empty($pagination['prev']) || !empty($pagination['next'])): ?>
<div class="space-y-2 pb-8 pt-6 md:space-y-5">
<nav class="flex justify-between">
<?php if (!empty($pagination['prev'])): ?>
<a class="break-words" rel="next" href="?page=<?php echo $page - 1 ?>"><?php echo i18n('next');?></a>
<?php endif; ?>
<?php if (empty($pagination['prev'])): ?>
<button class="cursor-auto disabled:opacity-50" disabled=""><?php echo i18n('next');?></button>
<?php endif; ?>
<span class="page-numbers"><?php echo $pagination['pagenum'];?></span>
<?php if (!empty($pagination['next'])): ?>
<a class="break-words" rel="prev" href="?page=<?php echo $page + 1 ?>"><?php echo i18n('prev');?></a>
<?php endif; ?>
<?php if (empty($pagination['next'])): ?>
<button class="cursor-auto disabled:opacity-50" disabled=""><?php echo i18n('prev');?></button>
<?php endif; ?>
</nav>
</div>
<?php endif; ?>

View file

@ -0,0 +1,6 @@
<?php if (!defined('HTMLY')) die('HTMLy'); ?>
<div class="divide-y divide-gray-200 dark:divide-gray-700">
<div class="space-y-2 pb-8 pt-6 md:space-y-5">
<h1 class="text-3xl font-extrabold leading-9 tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl sm:leading-10 md:text-6xl md:leading-14">No post found!</h1>
</div>
</div>

View file

@ -0,0 +1,121 @@
<?php if (!defined('HTMLY')) die('HTMLy'); ?>
<section class="mx-auto max-w-3xl sm:px-6 xl:max-w-5xl xl:px-0">
<article>
<div class="xl:divide-y xl:divide-gray-200 xl:dark:divide-gray-700">
<header class="pt-6 xl:pb-6">
<div class="space-y-1 text-center">
<dl class="space-y-10">
<div>
<dt class="sr-only"><?php echo i18n('posted_on');?></dt>
<dd class="text-base font-medium leading-6 text-gray-500 dark:text-gray-400"><time><?php echo format_date($p->date);?></time> • <span class="text-primary-500"><?php echo $p->category;?></span>
<?php if (authorized($p)):?> • <span><a href="<?php echo $p->url;?>/edit?destination=post"><?php echo i18n('edit');?></a></span><?php endif;?>
</dd>
</div>
</dl>
<div>
<?php if (!empty($p->link)) {?>
<h1 class="text-3xl font-extrabold leading-9 tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl sm:leading-10 md:text-5xl md:leading-14">
<a href="<?php echo $p->link;?>" target="_blank"><?php echo $p->title;?>
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" style="display:inline-block;margin-left: 3px;" class=" bi bi-link-45deg" viewBox="0 0 16 16">
<path d="M4.715 6.542 3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 5.5L8 6.086a1 1 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4 4 0 0 1-.128-1.287z"/>
<path d="M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 1 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 1 0-4.243-4.243z"/>
</svg>
</a>
</h1>
<?php } else { ?>
<h1 class="text-3xl font-extrabold leading-9 tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl sm:leading-10 md:text-5xl md:leading-14"><?php echo $p->title;?></h1>
<?php } ?>
</div>
</div>
</header>
<div class="grid-rows-[auto_1fr] divide-y divide-gray-200 pb-8 dark:divide-gray-700 xl:grid xl:grid-cols-4 xl:gap-x-6 xl:divide-y-0">
<dl class="pb-10 pt-6 xl:border-b xl:border-gray-200 xl:pt-11 xl:dark:border-gray-700">
<dt class="sr-only"><?php echo i18n('author');?></dt>
<dd>
<ul class="flex flex-wrap justify-center gap-4 sm:space-x-12 xl:block xl:space-x-0 xl:space-y-8">
<li class="flex items-center space-x-2">
<img src="<?php echo $p->authorAvatar;?>" width="40" height="40"/>
<dl class="whitespace-nowrap text-sm font-medium leading-5">
<dt class="sr-only"><?php echo i18n('user');?></dt>
<dd class="text-gray-900 dark:text-gray-100"><?php echo $p->authorName;?></dd>
<dt class="sr-only"><?php echo i18n('post_by_author');?></dt>
<dd><a class="text-primary-500 hover:text-primary-600 dark:hover:text-primary-400" href="<?php echo $p->authorUrl;?>"><?php echo i18n('post_by_author');?></a></dd>
</dl>
</li>
</ul>
</dd>
</dl>
<div class="divide-y divide-gray-200 dark:divide-gray-700 xl:col-span-3 xl:row-span-2 xl:pb-0">
<div class="prose max-w-none pb-8 pt-10 dark:prose-invert">
<?php if (!empty($p->image)) {?>
<img src="<?php echo $p->image;?>" width="100%" alt="<?php echo $p->title;?>">
<?php } elseif (!empty($p->video)) {?>
<div class="relative" style="padding-top: 56.25%">
<iframe class="absolute inset-0 w-full h-full" src="https://www.youtube.com/embed/<?php echo get_video_id($p->video); ?>" frameborder="0" allowfullscreen></iframe>
</div>
<?php } elseif (!empty($p->audio)) {?>
<iframe width="100%" height="100%" class="embed-responsive-item" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=<?php echo $p->audio;?>&amp;auto_play=false&amp;visual=true"></iframe>
<?php } elseif (!empty($p->quote)) {?>
<blockquote class="text-2xl italic font-bold leading-8 tracking-tight">
<?php echo $p->quote;?>
</blockquote>
<?php } ?>
<?php echo $p->body;?>
</div>
<div class="prose max-w-none pb-6 pt-6 text-sm text-gray-700 dark:text-gray-300 related-posts">
<h2 class="text-xl text-gray-700 dark:text-gray-300"><?php echo i18n('related_posts');?></h2>
<?php echo get_related($p->related);?>
</div>
<?php if (facebook() || disqus()): ?>
<div class="pb-6 pt-6 text-center text-gray-700 dark:text-gray-300" id="comment">
<?php if (facebook()): ?>
<div class="fb-comments" data-href="<?php echo $p->url ?>" data-numposts="<?php echo config('fb.num') ?>" data-colorscheme="<?php echo config('fb.color') ?>"></div>
<?php endif; ?>
<?php if (disqus()): ?>
<?php echo disqus($p->title, $p->url) ?>
<div id="disqus_thread"></div>
<?php endif; ?>
</div>
<?php endif;?>
</div>
<footer>
<div class="divide-gray-200 text-sm font-medium leading-5 dark:divide-gray-700 xl:col-start-1 xl:row-start-2 xl:divide-y">
<div class="py-4 xl:py-8">
<h2 class="text-xs uppercase tracking-wide text-gray-500 dark:text-gray-400"><?php echo i18n('tags');?></h2>
<div class="flex flex-wrap">
<span class="mr-3 text-sm font-medium uppercase text-primary-500" ><span class="tags"><?php echo $p->tag;?></span></span>
</div>
</div>
<div class="flex justify-between py-4 xl:block xl:space-y-8 xl:py-8">
<?php if (!empty($prev)): ?>
<div>
<h2 class="text-xs uppercase tracking-wide text-gray-500 dark:text-gray-400"><?php echo i18n('prev_post');?></h2>
<div class="text-primary-500 hover:text-primary-600 dark:hover:text-primary-400"><a class="break-words" href="<?php echo($prev['url']); ?>"><?php echo($prev['title']); ?></a></div>
</div>
<?php endif;?>
<?php if (!empty($next)): ?>
<div>
<h2 class="text-xs uppercase tracking-wide text-gray-500 dark:text-gray-400"><?php echo i18n('next_post');?></h2>
<div class="text-primary-500 hover:text-primary-600 dark:hover:text-primary-400"><a class="break-words" href="<?php echo($next['url']); ?>"><?php echo($next['title']); ?></a></div>
</div>
<?php endif;?>
</div>
<div class="py-4 xl:py-8">
<h2 class="text-xs uppercase tracking-wide text-gray-500 dark:text-gray-400">Tag Cloud</h2>
<div class="flex flex-wrap">
<span class="mr-3 text-sm font-medium uppercase text-primary-500"><span class="tags"><?php echo tag_cloud();?></span></span>
</div>
</div>
</div>
<?php if (config('blog.enable') === 'true') {?>
<div class="pt-4 xl:pt-8"><a class="text-primary-500 hover:text-primary-600 dark:hover:text-primary-400" aria-label="Back to the blog" href="<?php echo site_url() . blog_path();?>"> <?php echo i18n('back_to');?> <?php echo blog_string();?></a></div>
<?php } else {?>
<div class="pt-4 xl:pt-8"><a class="text-primary-500 hover:text-primary-600 dark:hover:text-primary-400" aria-label="Back to homepage" href="<?php echo site_url();?>"> <?php echo i18n('back_to');?> <?php echo i18n('homepage');?></a></div>
<?php } ?>
</footer>
</div>
</div>
</article>
</section>

View file

@ -0,0 +1,127 @@
<?php if (!defined('HTMLY')) die('HTMLy'); ?>
<div class="space-y-2 pb-8 pt-6 md:space-y-5">
<h1 class="text-3xl font-extrabold leading-9 tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl sm:leading-10 md:text-6xl md:leading-14"><?php echo $author->title;?>
<a class="inline-block" href="<?php echo $author->rss;?>">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" class="bi bi-rss" viewBox="0 0 16 16"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1m0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1"/></svg>
</a>
</h1>
<div class="prose max-w-none text-lg leading-7 text-gray-500 dark:text-gray-400 dark:prose-invert">
<?php echo $author->body;?>
</div>
</div>
<?php $teaserType = config('teaser.type'); $readMore = config('read.more');?>
<ul class="divide-y divide-gray-200 dark:divide-gray-700">
<?php foreach ($posts as $p):?>
<?php $img = get_image($p->body);?>
<li class="py-12">
<article>
<div class="space-y-2 xl:grid xl:grid-cols-4 xl:items-baseline xl:space-y-0">
<dl>
<dt class="sr-only"><?php echo i18n('posted_on');?></dt>
<dd class="text-base font-medium leading-6 text-gray-500 dark:text-gray-400"><time><?php echo format_date($p->date);?></time>
<?php if (authorized($p)):?> • <span><a href="<?php echo $p->url;?>/edit?destination=post"><?php echo i18n('edit');?></a></span><?php endif;?>
</dd>
<?php if ($teaserType === 'trimmed') :?>
<div class="pt-4 pr-6">
<?php if (!empty($p->image)) {?>
<a class="thumbnail" href="<?php echo $p->url;?>"><img src="<?php echo $p->image;?>" width="100%" alt="<?php echo $p->title;?>"></a>
<?php } elseif (!empty($p->video)) {?>
<a class="thumbnail" href="<?php echo $p->url;?>"><img src="//img.youtube.com/vi/<?php echo get_video_id($p->video);?>/sddefault.jpg" width="100%" alt="<?php echo $p->title;?>">
<span class="thumb-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="currentColor" class="bi bi-play" viewBox="0 0 16 16"><path d="M10.804 8 5 4.633v6.734zm.792-.696a.802.802 0 0 1 0 1.392l-6.363 3.692C4.713 12.69 4 12.345 4 11.692V4.308c0-.653.713-.998 1.233-.696z"/></svg>
</span>
</a>
<?php } elseif (!empty($p->audio)) {?>
<a class="thumbnail" href="<?php echo $p->url;?>">
<img src="<?php echo theme_path();?>img/soundcloud.jpg" width="100%" alt="<?php echo $p->title;?>">
<span class="thumb-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="currentColor" class="bi bi-volume-up" viewBox="0 0 16 16"><path d="M11.536 14.01A8.47 8.47 0 0 0 14.026 8a8.47 8.47 0 0 0-2.49-6.01l-.708.707A7.48 7.48 0 0 1 13.025 8c0 2.071-.84 3.946-2.197 5.303z"/><path d="M10.121 12.596A6.48 6.48 0 0 0 12.025 8a6.48 6.48 0 0 0-1.904-4.596l-.707.707A5.48 5.48 0 0 1 11.025 8a5.48 5.48 0 0 1-1.61 3.89z"/><path d="M10.025 8a4.5 4.5 0 0 1-1.318 3.182L8 10.475A3.5 3.5 0 0 0 9.025 8c0-.966-.392-1.841-1.025-2.475l.707-.707A4.5 4.5 0 0 1 10.025 8M7 4a.5.5 0 0 0-.812-.39L3.825 5.5H1.5A.5.5 0 0 0 1 6v4a.5.5 0 0 0 .5.5h2.325l2.363 1.89A.5.5 0 0 0 7 12zM4.312 6.39 6 5.04v5.92L4.312 9.61A.5.5 0 0 0 4 9.5H2v-3h2a.5.5 0 0 0 .312-.11"/></svg>
</span>
</a>
<?php } elseif (!empty($img)) {?>
<a class="thumbnail" href="<?php echo $p->url;?>"><img src="<?php echo $img;?>" width="100%" alt="<?php echo $p->title;?>"></a>
<?php } ?>
</div>
<?php endif;?>
</dl>
<div class="space-y-5 xl:col-span-3">
<div class="space-y-6">
<div>
<?php if (!empty($p->link)) {?>
<h2 class="text-2xl font-bold leading-8 tracking-tight">
<a class="text-gray-900 dark:text-gray-100" href="<?php echo $p->link;?>" target="_blank"><?php echo $p->title;?>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" style="display:inline-block;margin-left: 3px;" class=" bi bi-link-45deg" viewBox="0 0 16 16">
<path d="M4.715 6.542 3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 5.5L8 6.086a1 1 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4 4 0 0 1-.128-1.287z"/>
<path d="M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 1 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 1 0-4.243-4.243z"/>
</svg>
</a>
</h2>
<?php } else { ?>
<h2 class="text-2xl font-bold leading-8 tracking-tight">
<a class="text-gray-900 dark:text-gray-100" href="<?php echo $p->url;?>"><?php echo $p->title;?></a>
</h2>
<?php } ?>
<div class="flex flex-wrap">
<span class="mr-3 text-sm font-medium uppercase text-primary-500"><span class="tags"><?php echo $p->tag;?></span></span>
</div>
</div>
<div class="prose max-w-none text-gray-500 dark:text-gray-400 dark:prose-invert">
<?php if ($teaserType !== 'trimmed') :?>
<?php if (!empty($p->image)) {?>
<img src="<?php echo $p->image;?>" width="100%" alt="<?php echo $p->title;?>">
<?php } elseif (!empty($p->video)) {?>
<div class="relative" style="padding-top: 56.25%">
<iframe class="absolute inset-0 w-full h-full" src="https://www.youtube.com/embed/<?php echo get_video_id($p->video); ?>" frameborder="0" allowfullscreen></iframe>
</div>
<?php } elseif (!empty($p->audio)) {?>
<iframe width="100%" height="100%" class="embed-responsive-item" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=<?php echo $p->audio;?>&amp;auto_play=false&amp;visual=true"></iframe>
<span class="thumb-icon"><i class="fas fa-volume-up"></i></span>
<?php } elseif (!empty($p->quote)) {?>
<blockquote class="text-2xl italic font-bold leading-8 tracking-tight">
<?php echo $p->quote;?>
</blockquote>
<?php } ?>
<?php endif;?>
<?php if (!empty($p->quote) && $teaserType === 'trimmed'):?>
<blockquote class="text-2xl italic font-bold leading-8 tracking-tight" style="margin: 1.6em 0;">
<?php echo $p->quote;?>
</blockquote>
<?php endif; ?>
<?php echo get_teaser($p->body, $p->url);?>
</div>
</div>
<?php if ($teaserType === 'trimmed'):?>
<div class="text-base font-medium leading-6">
<a class="text-primary-500 hover:text-primary-600 dark:hover:text-primary-400" aria-label="<?php echo $p->title;?>" href="<?php echo $p->url;?>"><?php echo $readMore;?></a>
</div>
<?php endif;?>
</div>
</div>
</article>
</li>
<?php endforeach;?>
</ul>
<?php if (!empty($pagination['prev']) || !empty($pagination['next'])): ?>
<div class="space-y-2 pb-8 pt-6 md:space-y-5">
<nav class="flex justify-between">
<?php if (!empty($pagination['prev'])): ?>
<a class="break-words" rel="next" href="?page=<?php echo $page - 1 ?>"><?php echo i18n('next');?></a>
<?php endif; ?>
<?php if (empty($pagination['prev'])): ?>
<button class="cursor-auto disabled:opacity-50" disabled=""><?php echo i18n('next');?></button>
<?php endif; ?>
<span class="page-numbers"><?php echo $pagination['pagenum'];?></span>
<?php if (!empty($pagination['next'])): ?>
<a class="break-words" rel="prev" href="?page=<?php echo $page + 1 ?>"><?php echo i18n('prev');?></a>
<?php endif; ?>
<?php if (empty($pagination['next'])): ?>
<button class="cursor-auto disabled:opacity-50" disabled=""><?php echo i18n('prev');?></button>
<?php endif; ?>
</nav>
</div>
<?php endif; ?>

View file

@ -0,0 +1,110 @@
<?php if (!defined('HTMLY')) die('HTMLy'); ?>
<div class="space-y-2 pb-6 pt-6 md:space-y-5">
<h1 class="text-3xl font-extrabold leading-9 tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl sm:leading-10 md:text-6xl md:leading-14"><?php echo $static->title;?></h1>
<?php if (authorized($p)):?><span><a href="<?php echo $p->url;?>/edit?destination=post"><?php echo i18n('edit');?></a></span><?php endif;?>
<div class="prose max-w-none text-lg leading-7 pb-6 text-gray-500 dark:text-gray-400 dark:prose-invert">
<?php echo $static->body;?>
</div>
<div class="space-y-2 md:space-y-5">
<h2 class="text-2xl font-extrabold leading-9 tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl sm:leading-10 md:text-4xl md:leading-14"><?php echo i18n('recent_posts');?></h2>
</div>
</div>
<?php $posts = recent_posts(true);?>
<?php $teaserType = config('teaser.type'); $readMore = config('read.more');?>
<ul class="divide-y divide-gray-200 dark:divide-gray-700">
<?php foreach ($posts as $p):?>
<?php $img = get_image($p->body);?>
<li class="py-12">
<article>
<div class="space-y-2 xl:grid xl:grid-cols-4 xl:items-baseline xl:space-y-0">
<dl>
<dt class="sr-only"><?php echo i18n('posted_on');?></dt>
<dd class="text-base font-medium leading-6 text-gray-500 dark:text-gray-400"><time><?php echo format_date($p->date);?></time>
<?php if (authorized($p)):?> • <span><a href="<?php echo $p->url;?>/edit?destination=post"><?php echo i18n('edit');?></a></span><?php endif;?>
</dd>
<?php if ($teaserType === 'trimmed') :?>
<div class="pt-4 pr-6">
<?php if (!empty($p->image)) {?>
<a class="thumbnail" href="<?php echo $p->url;?>"><img src="<?php echo $p->image;?>" width="100%" alt="<?php echo $p->title;?>"></a>
<?php } elseif (!empty($p->video)) {?>
<a class="thumbnail" href="<?php echo $p->url;?>"><img src="//img.youtube.com/vi/<?php echo get_video_id($p->video);?>/sddefault.jpg" width="100%" alt="<?php echo $p->title;?>">
<span class="thumb-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="currentColor" class="bi bi-play" viewBox="0 0 16 16"><path d="M10.804 8 5 4.633v6.734zm.792-.696a.802.802 0 0 1 0 1.392l-6.363 3.692C4.713 12.69 4 12.345 4 11.692V4.308c0-.653.713-.998 1.233-.696z"/></svg>
</span>
</a>
<?php } elseif (!empty($p->audio)) {?>
<a class="thumbnail" href="<?php echo $p->url;?>">
<img src="<?php echo theme_path();?>img/soundcloud.jpg" width="100%" alt="<?php echo $p->title;?>">
<span class="thumb-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="currentColor" class="bi bi-volume-up" viewBox="0 0 16 16"><path d="M11.536 14.01A8.47 8.47 0 0 0 14.026 8a8.47 8.47 0 0 0-2.49-6.01l-.708.707A7.48 7.48 0 0 1 13.025 8c0 2.071-.84 3.946-2.197 5.303z"/><path d="M10.121 12.596A6.48 6.48 0 0 0 12.025 8a6.48 6.48 0 0 0-1.904-4.596l-.707.707A5.48 5.48 0 0 1 11.025 8a5.48 5.48 0 0 1-1.61 3.89z"/><path d="M10.025 8a4.5 4.5 0 0 1-1.318 3.182L8 10.475A3.5 3.5 0 0 0 9.025 8c0-.966-.392-1.841-1.025-2.475l.707-.707A4.5 4.5 0 0 1 10.025 8M7 4a.5.5 0 0 0-.812-.39L3.825 5.5H1.5A.5.5 0 0 0 1 6v4a.5.5 0 0 0 .5.5h2.325l2.363 1.89A.5.5 0 0 0 7 12zM4.312 6.39 6 5.04v5.92L4.312 9.61A.5.5 0 0 0 4 9.5H2v-3h2a.5.5 0 0 0 .312-.11"/></svg>
</span>
</a>
<?php } elseif (!empty($img)) {?>
<a class="thumbnail" href="<?php echo $p->url;?>"><img src="<?php echo $img;?>" width="100%" alt="<?php echo $p->title;?>"></a>
<?php } ?>
</div>
<?php endif;?>
</dl>
<div class="space-y-5 xl:col-span-3">
<div class="space-y-6">
<div>
<?php if (!empty($p->link)) {?>
<h2 class="text-2xl font-bold leading-8 tracking-tight">
<a class="text-gray-900 dark:text-gray-100" href="<?php echo $p->link;?>" target="_blank"><?php echo $p->title;?>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" style="display:inline-block;margin-left: 3px;" class=" bi bi-link-45deg" viewBox="0 0 16 16">
<path d="M4.715 6.542 3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 5.5L8 6.086a1 1 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4 4 0 0 1-.128-1.287z"/>
<path d="M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 1 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 1 0-4.243-4.243z"/>
</svg>
</a>
</h2>
<?php } else { ?>
<h2 class="text-2xl font-bold leading-8 tracking-tight">
<a class="text-gray-900 dark:text-gray-100" href="<?php echo $p->url;?>"><?php echo $p->title;?></a>
</h2>
<?php } ?>
<div class="flex flex-wrap">
<span class="mr-3 text-sm font-medium uppercase text-primary-500"><span class="tags"><?php echo $p->tag;?></span></span>
</div>
</div>
<div class="prose max-w-none text-gray-500 dark:text-gray-400 dark:prose-invert">
<?php if ($teaserType !== 'trimmed') :?>
<?php if (!empty($p->image)) {?>
<img src="<?php echo $p->image;?>" width="100%" alt="<?php echo $p->title;?>">
<?php } elseif (!empty($p->video)) {?>
<div class="relative" style="padding-top: 56.25%">
<iframe class="absolute inset-0 w-full h-full" src="https://www.youtube.com/embed/<?php echo get_video_id($p->video); ?>" frameborder="0" allowfullscreen></iframe>
</div>
<?php } elseif (!empty($p->audio)) {?>
<iframe width="100%" height="100%" class="embed-responsive-item" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=<?php echo $p->audio;?>&amp;auto_play=false&amp;visual=true"></iframe>
<?php } elseif (!empty($p->quote)) {?>
<blockquote class="text-2xl italic font-bold leading-8 tracking-tight">
<?php echo $p->quote;?>
</blockquote>
<?php } ?>
<?php endif;?>
<?php if (!empty($p->quote) && $teaserType === 'trimmed'):?>
<blockquote class="text-2xl italic font-bold leading-8 tracking-tight" style="margin: 1.6em 0;">
<?php echo $p->quote;?>
</blockquote>
<?php endif; ?>
<?php echo get_teaser($p->body, $p->url);?>
</div>
</div>
<?php if ($teaserType === 'trimmed'):?>
<div class="text-base font-medium leading-6">
<a class="text-primary-500 hover:text-primary-600 dark:hover:text-primary-400" aria-label="<?php echo $p->title;?>" href="<?php echo $p->url;?>"><?php echo $readMore;?></a>
</div>
<?php endif;?>
</div>
</div>
</article>
</li>
<?php endforeach;?>
</ul>
<?php if (config('blog.enable') === 'true'):?>
<div style="border:none;text-align:right;"><a class="text-primary-500 hover:text-primary-600 dark:hover:text-primary-400" aria-label="<?php echo i18n('all_blog_posts');?>" href="<?php echo site_url() . blog_path();?>"><?php echo i18n('all_blog_posts');?> →</a></div>
<?php endif;?>

View file

@ -0,0 +1,12 @@
<?php if (!defined('HTMLY')) die('HTMLy'); ?>
<div class="divide-y divide-gray-200 dark:divide-gray-700">
<div class="space-y-2 pb-8 pt-6 md:space-y-5">
<h1 class="text-3xl font-extrabold leading-9 tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl sm:leading-10 md:text-6xl md:leading-14"><?php echo $static->title;?></h1>
<?php if (authorized($p)):?><span><a href="<?php echo $p->url;?>/edit?destination=post"><?php echo i18n('edit');?></a></span><?php endif;?>
</div>
<div class="items-start space-y-2 xl:grid xl:gap-x-8 xl:space-y-0">
<div class="prose max-w-none pb-8 pt-8 dark:prose-invert">
<?php echo $static->body;?>
</div>
</div>
</div>