mainwp.dev/preview-code-blocks.html

337 lines
11 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MainWP.dev Code Block Preview</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<!-- Our custom Highlight.js theme -->
<link href="dox-theme/assets/css/highlightjs-mainwp-dark.css" rel="stylesheet" />
<style>
:root {
--color-primary: #7fb100;
--color-secondary: #446200;
--color-text: #f2f3f2;
--color-text-muted: #aaa;
--color-background: #1c1d1b;
--color-border: #2d2e2c;
--color-code-background: #2a2b29;
--color-code-header-bg: #252624;
--dox-border-radius: 4px;
--font-family-code: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
line-height: 1.6;
color: var(--color-text);
background-color: var(--color-background);
padding: 2rem;
margin: 0;
}
.container {
max-width: 800px;
margin: 0 auto;
}
/* Code block styles from _code.scss */
.code-block {
position: relative;
margin: 1.5rem 0;
border-radius: var(--dox-border-radius);
overflow: hidden;
background-color: var(--color-code-background);
border: 1px solid var(--color-border);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}
.code-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.5rem 1rem;
background-color: var(--color-code-header-bg);
border-bottom: 1px solid var(--color-border);
font-size: 0.875rem;
}
.language-label {
font-family: var(--font-family-code);
color: var(--color-text-muted);
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.copy-button {
background: transparent;
border: 1px solid var(--color-border);
border-radius: 3px;
padding: 0.25rem 0.5rem;
font-size: 0.75rem;
cursor: pointer;
color: var(--color-text-muted);
transition: all 0.2s ease;
}
.copy-button:hover {
background-color: var(--color-primary);
border-color: var(--color-primary);
color: white;
}
.copy-button.copied {
background-color: var(--color-secondary);
border-color: var(--color-secondary);
color: white;
}
/* Override specific hljs styles for our demo page */
pre {
margin: 0;
padding: 1rem !important;
padding-left: 2rem !important;
}
code {
padding: 0 !important;
}
/* Keep mobile adjustments for container/header */
@media (max-width: 768px) {
.code-block {
margin: 1rem 0;
border-radius: 3px;
}
.code-header {
padding: 0.375rem 0.75rem;
}
}
</style>
</head>
<body>
<div class="container">
<h1>MainWP.dev Code Block Preview</h1>
<p>This page shows how code blocks will appear on GitHub Pages. Now using Highlight.js for syntax highlighting.</p>
<h2>PHP Example</h2>
<div class="code-block">
<div class="code-header">
<span class="language-label">PHP</span>
<button class="copy-button">Copy</button>
</div>
<pre><code class="language-php">namespace MainWP\Dashboard;
class MainWP_Extensions_Handler {
public function __construct() {
add_action('admin_init', [$this, 'admin_init']);
}
public function admin_init() {
// Initialize extensions
$this->load_extensions();
}
private function load_extensions() {
// Load installed extensions
$extensions = get_option('mainwp_extensions', []);
foreach ($extensions as $extension) {
if ($this->is_extension_active($extension)) {
$this->activate_extension($extension);
}
}
}
}</code></pre>
</div>
<h2>JavaScript Example</h2>
<div class="code-block">
<div class="code-header">
<span class="language-label">JavaScript</span>
<button class="copy-button">Copy</button>
</div>
<pre><code class="language-javascript">document.addEventListener('DOMContentLoaded', function() {
const copyButtons = document.querySelectorAll('.copy-button');
copyButtons.forEach(button => {
button.addEventListener('click', function() {
const codeBlock = this.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);
});
});
});
});</code></pre>
</div>
<h2>HTML Example</h2>
<div class="code-block">
<div class="code-header">
<span class="language-label">HTML</span>
<button class="copy-button">Copy</button>
</div>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
&lt;meta charset="UTF-8"&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
&lt;title&gt;Example Page&lt;/title&gt;
&lt;link href="styles.css" rel="stylesheet"&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;header&gt;
&lt;h1&gt;MainWP Documentation&lt;/h1&gt;
&lt;nav&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#"&gt;Home&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;Hooks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;/header&gt;
&lt;main&gt;
&lt;section id="content"&gt;
&lt;p&gt;This is a sample HTML document.&lt;/p&gt;
&lt;/section&gt;
&lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
</div>
<h2>CSS Example</h2>
<div class="code-block">
<div class="code-header">
<span class="language-label">CSS</span>
<button class="copy-button">Copy</button>
</div>
<pre><code class="language-css">/* MainWP styles */
:root {
--color-primary: #7fb100;
--color-secondary: #446200;
--color-text: #f2f3f2;
--color-background: #1c1d1b;
}
body {
font-family: 'Inter', sans-serif;
color: var(--color-text);
background-color: var(--color-background);
line-height: 1.6;
margin: 0;
padding: 0;
}
header {
background-color: var(--color-primary);
padding: 1rem;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
nav ul {
display: flex;
list-style: none;
margin: 0;
padding: 0;
}
nav li {
margin-right: 1rem;
}
nav a {
color: white;
text-decoration: none;
font-weight: 500;
}
nav a:hover {
text-decoration: underline;
}</code></pre>
</div>
<h2>Bash Example</h2>
<div class="code-block">
<div class="code-header">
<span class="language-label">Bash</span>
<button class="copy-button">Copy</button>
</div>
<pre><code class="language-bash">#!/bin/bash
# Generate documentation for MainWP
echo "Starting documentation generation..."
# Clone repositories if they don't exist
if [ ! -d "sources/mainwp-dashboard" ]; then
git clone https://github.com/mainwp/mainwp.git sources/mainwp-dashboard
fi
if [ ! -d "sources/mainwp-child" ]; then
git clone https://github.com/mainwp/mainwp-child.git sources/mainwp-child
fi
# Run phpDocumentor
echo "Generating API documentation..."
php vendor/bin/phpdoc -c phpdoc/dashboard.xml
php vendor/bin/phpdoc -c phpdoc/child.xml
echo "Generating hooks documentation..."
cd hooks-generator
./generate-hooks.sh
cd ..
echo "Documentation generation complete!"</code></pre>
</div>
</div>
<!-- Highlight.js core script -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
<!-- Highlight.js language plugins -->
<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>
<script>
// Initialize highlight.js
document.addEventListener('DOMContentLoaded', function() {
// Initialize syntax highlighting
hljs.configure({
ignoreUnescapedHTML: true
});
hljs.highlightAll();
// Initialize copy buttons
const copyButtons = document.querySelectorAll('.copy-button');
copyButtons.forEach(button => {
button.addEventListener('click', function() {
const codeBlock = this.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>
</body>
</html>