mainwp.dev/dox-theme/_layouts/homepage.html
2025-04-02 12:45:07 -04:00

171 lines
6.9 KiB
HTML

<!DOCTYPE html>
<html lang="{{ site.dox.language }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% if page.title %}{{ page.title }}{% else %}{{ site.dox.title }}{% endif %}</title>
<meta name="description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.dox.description }}{% endif %}">
<link rel="canonical" href="{{ page.url | replace: 'index.html', '' | absolute_url }}">
<link rel="shortcut icon" href="{{ '/favicon.ico' | absolute_url }}" type="image/x-icon">
<!-- Theme styles -->
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/style.css">
</head>
<body class="homepage">
{% include header.html %}
{{ content }}
{% include footer.html %}
<!-- Theme scripts -->
<script src="{{ site.baseurl }}/assets/js/vendor/jquery.min.js" defer></script>
<!-- Highlight.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
<!-- Highlight.js language packs -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/php.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/javascript.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/xml.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/css.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/bash.min.js"></script>
<!-- Theme functionality -->
<script src="{{ site.baseurl }}/assets/js/theme-toggle.js" defer></script>
<script src="{{ site.baseurl }}/assets/js/scripts.js" defer></script>
<script src="{{ site.baseurl }}/assets/js/navigation.js" defer></script>
<!-- Code block functionality -->
<script>
document.addEventListener('DOMContentLoaded', function() {
// Initialize Highlight.js
hljs.configure({
ignoreUnescapedHTML: true
});
hljs.highlightAll();
// Find all code blocks
const codeBlocks = document.querySelectorAll('pre:not(.no-copy) > code');
codeBlocks.forEach(codeBlock => {
const pre = codeBlock.parentElement;
// Create wrapper if needed
let wrapper = pre.parentElement;
if (!wrapper.classList.contains('code-block')) {
wrapper = document.createElement('div');
wrapper.className = 'code-block';
pre.parentNode.insertBefore(wrapper, pre);
wrapper.appendChild(pre);
// Add header with language label and copy button
const header = document.createElement('div');
header.className = 'code-header';
// Try to extract language from class
let language = 'code';
const langClass = codeBlock.className.match(/language-(\w+)/) || codeBlock.className.match(/hljs language-(\w+)/);
if (langClass && langClass[1]) {
language = langClass[1].toUpperCase();
}
const langLabel = document.createElement('span');
langLabel.className = 'language-label';
langLabel.textContent = language;
const copyBtn = document.createElement('button');
copyBtn.className = 'copy-button';
copyBtn.textContent = 'Copy';
header.appendChild(langLabel);
header.appendChild(copyBtn);
wrapper.insertBefore(header, pre);
}
});
// Add click event to all copy buttons
document.addEventListener('click', function(event) {
if (event.target.matches('.copy-button')) {
const button = event.target;
const codeBlock = button.closest('.code-block');
const codeElement = codeBlock.querySelector('code');
navigator.clipboard.writeText(codeElement.textContent).then(() => {
button.textContent = 'Copied!';
button.classList.add('copied');
setTimeout(() => {
button.textContent = 'Copy';
button.classList.remove('copied');
}, 2000);
});
}
});
});
</script>
{% if site.dox.google_analytics.tracking_code and jekyll.environment == 'production' %}
<!-- Google Analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', '{{ site.dox.google_analytics.tracking_code }}', 'auto');
ga('send', 'pageview');
</script>
{% endif %}
</body>
</html>
<style>
/* Homepage specific styles */
.homepage {
background-color: var(--mainwp-dark-bg);
color: var(--mainwp-dark-text);
}
.homepage h2 {
font-size: 2rem;
margin: 3rem 0 2rem;
color: var(--mainwp-dark-text);
}
.c-feature-card {
display: block;
padding: 2rem;
background-color: rgba(0, 0, 0, 0.2);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: var(--dox-border-radius);
text-decoration: none;
transition: var(--dox-transition-base);
height: 100%;
}
.c-feature-card:hover {
background-color: rgba(255, 255, 255, 0.05);
transform: translateY(-2px);
}
.c-feature-card h3 {
color: var(--mainwp-primary);
margin-bottom: 1rem;
}
.c-feature-card p {
color: var(--mainwp-dark-text);
opacity: 0.8;
margin: 0;
}
@media (max-width: 768px) {
.homepage h2 {
font-size: 1.5rem;
margin: 2rem 0 1.5rem;
}
.c-feature-card {
margin-bottom: 1rem;
}
}
</style>