Scaffold Aurora Admin marketing theme (Home, Features, Blog)

This commit is contained in:
NixReaper
2026-07-26 17:05:06 -05:00
commit e62bfce047
30 changed files with 1036 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
.DS_Store
Thumbs.db
+11
View File
@@ -0,0 +1,11 @@
<?php
defined('ABSPATH') || exit;
get_header();
?>
<div class="container not-found">
<h1><?php esc_html_e('Page not found', 'aurora-admin-theme'); ?></h1>
<p><?php esc_html_e("The page you're looking for doesn't exist.", 'aurora-admin-theme'); ?></p>
<a class="btn btn-outline" href="<?php echo esc_url(home_url('/')); ?>"><?php esc_html_e('Back to home', 'aurora-admin-theme'); ?></a>
</div>
<?php
get_footer();
+468
View File
@@ -0,0 +1,468 @@
/* Layout ------------------------------------------------------------- */
.container {
max-width: 1100px;
margin: 0 auto;
padding: 0 24px;
}
.site-wrap {
min-height: 100vh;
display: flex;
flex-direction: column;
}
.site-main {
flex: 1;
}
/* Buttons ------------------------------------------------------------ */
.btn {
display: inline-block;
padding: 12px 24px;
border-radius: var(--aurora-radius-md);
font-weight: 600;
font-size: 16px;
border: 1px solid transparent;
cursor: pointer;
}
.btn-primary {
background: var(--aurora-accent);
color: #fff;
}
.btn-primary:hover {
filter: brightness(1.1);
}
.btn-outline {
background: transparent;
border-color: var(--aurora-border);
color: var(--aurora-text);
}
.btn-outline:hover {
background: var(--aurora-bg-subtle);
}
/* Header / nav -------------------------------------------------------- */
.site-header {
padding: 20px 0;
}
.site-header-inner {
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
}
.site-logo img,
.site-logo .custom-logo {
display: block;
height: 48px;
width: auto;
}
.footer-logo img {
height: 36px;
width: auto;
opacity: 0.85;
}
.site-nav {
display: flex;
}
.nav-menu {
list-style: none;
display: flex;
gap: 32px;
margin: 0;
padding: 0;
}
.nav-menu a {
color: var(--aurora-text);
font-weight: 500;
}
.nav-menu a:hover {
color: var(--aurora-accent);
}
.nav-toggle {
display: none;
flex-direction: column;
justify-content: center;
gap: 5px;
width: 40px;
height: 40px;
background: transparent;
border: 1px solid var(--aurora-border);
border-radius: var(--aurora-radius-sm);
cursor: pointer;
}
.nav-toggle-bar {
display: block;
width: 20px;
height: 2px;
margin: 0 auto;
background: var(--aurora-text);
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
/* Hero ----------------------------------------------------------------- */
.hero {
padding: 96px 0 64px;
text-align: center;
}
.hero-inner {
max-width: 760px;
}
.hero h1 {
font-size: 44px;
line-height: 1.15;
margin: 0 0 20px;
}
.hero-sub {
font-size: 19px;
color: var(--aurora-text-muted);
margin: 0 0 32px;
}
.hero-actions {
display: flex;
gap: 16px;
justify-content: center;
flex-wrap: wrap;
}
/* Feature cards ---------------------------------------------------------- */
.feature-teaser,
.feature-section {
padding: 48px 0;
}
.feature-section h2 {
font-size: 28px;
margin: 0 0 24px;
}
.feature-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 20px;
}
.feature-card {
background: var(--aurora-card-bg);
border: 1px solid var(--aurora-card-border);
border-radius: var(--aurora-radius-xl);
box-shadow: var(--aurora-card-shadow);
padding: 28px;
}
.feature-icon {
font-size: 28px;
margin-bottom: 12px;
}
.feature-card h3 {
margin: 0 0 8px;
font-size: 18px;
}
.feature-card p {
margin: 0;
color: var(--aurora-text-muted);
font-size: 15px;
line-height: 1.5;
}
/* Free band -------------------------------------------------------------- */
.free-band {
padding: 48px 0;
}
.free-band-inner {
text-align: center;
background: var(--aurora-card-bg);
border: 1px solid var(--aurora-card-border);
border-radius: var(--aurora-radius-xl);
box-shadow: var(--aurora-card-shadow);
padding: 40px;
}
.free-band-inner h2 {
margin: 0 0 8px;
}
.free-band-inner p {
margin: 0;
color: var(--aurora-text-muted);
}
/* Screenshots -------------------------------------------------------------- */
.screenshots {
padding: 48px 0 80px;
}
.screenshots h2 {
text-align: center;
margin: 0 0 32px;
}
.screenshot-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 20px;
}
.screenshot-grid img {
border-radius: var(--aurora-radius-lg);
border: 1px solid var(--aurora-card-border);
box-shadow: var(--aurora-card-shadow);
}
/* CTA band ------------------------------------------------------------------ */
.cta-band {
padding: 64px 0;
text-align: center;
}
.cta-band-inner h2 {
margin: 0 0 8px;
}
.cta-band-inner p {
margin: 0 0 24px;
color: var(--aurora-text-muted);
}
/* Page header (Features/other static pages) ---------------------------------- */
.page-header {
padding: 64px 0 24px;
text-align: center;
}
.page-header p {
color: var(--aurora-text-muted);
}
/* Privacy / FAQ ---------------------------------------------------------------- */
.privacy-section p {
color: var(--aurora-text-muted);
line-height: 1.6;
max-width: 760px;
}
.faq-item {
background: var(--aurora-card-bg);
border: 1px solid var(--aurora-card-border);
border-radius: var(--aurora-radius-md);
padding: 16px 20px;
margin-bottom: 12px;
}
.faq-item summary {
cursor: pointer;
font-weight: 600;
}
.faq-answer {
margin-top: 12px;
color: var(--aurora-text-muted);
line-height: 1.6;
}
/* Blog --------------------------------------------------------------------------- */
.blog-header {
padding: 64px 0 24px;
text-align: center;
}
.blog-header p {
color: var(--aurora-text-muted);
}
.post-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 24px;
padding: 24px 0 48px;
}
.post-card {
background: var(--aurora-card-bg);
border: 1px solid var(--aurora-card-border);
border-radius: var(--aurora-radius-xl);
box-shadow: var(--aurora-card-shadow);
overflow: hidden;
}
.post-card-thumb img {
width: 100%;
}
.post-card-body {
padding: 20px;
}
.post-card-body h3 {
margin: 0 0 8px;
font-size: 18px;
}
.post-card-body h3 a {
color: var(--aurora-text);
}
.post-card-date {
color: var(--aurora-text-muted);
font-size: 13px;
margin: 0 0 12px;
}
.post-card-excerpt {
color: var(--aurora-text-muted);
font-size: 15px;
line-height: 1.5;
margin: 0 0 12px;
}
.post-card-link {
color: var(--aurora-accent);
font-weight: 600;
font-size: 14px;
}
.single-post,
.single-page {
padding: 48px 0;
max-width: 760px;
margin: 0 auto;
}
.single-post-header h1,
.single-page h1 {
margin: 0 0 8px;
}
.single-post-thumb {
margin: 24px 0;
}
.single-post-thumb img {
border-radius: var(--aurora-radius-lg);
}
.single-post-content,
.single-page-content {
line-height: 1.7;
}
.single-post-nav {
display: flex;
justify-content: space-between;
max-width: 760px;
margin: 0 auto 48px;
}
.single-post-nav a {
color: var(--aurora-accent);
}
.not-found {
padding: 96px 0;
text-align: center;
}
/* Footer ------------------------------------------------------------------------- */
.site-footer {
padding: 40px 0;
border-top: 1px solid var(--aurora-border);
}
.site-footer-inner {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
text-align: center;
}
.footer-nav {
display: flex;
gap: 24px;
}
.footer-nav a {
color: var(--aurora-text-muted);
font-size: 14px;
}
.footer-copy {
color: var(--aurora-text-muted);
font-size: 13px;
margin: 0;
}
/* Responsive ----------------------------------------------------------------------- */
@media (max-width: 768px) {
.hero h1 {
font-size: 32px;
}
.nav-toggle {
display: flex;
}
.site-nav {
position: absolute;
top: 100%;
left: 0;
right: 0;
background: var(--aurora-card-bg);
border-bottom: 1px solid var(--aurora-border);
display: none;
}
.site-nav.is-open {
display: block;
}
.site-header-inner {
position: relative;
}
.nav-menu {
flex-direction: column;
gap: 0;
padding: 8px 24px;
}
.nav-menu li {
padding: 12px 0;
border-bottom: 1px solid var(--aurora-border);
}
.nav-menu li:last-child {
border-bottom: none;
}
}
+45
View File
@@ -0,0 +1,45 @@
/*
* Design tokens ported by hand from the Aurora Admin plugin's own theme
* system (app/src/pages/settings/themePresets.js buildPalette(), fixed to
* hue 235 = indigo — the plugin's own default accent before any preset is
* picked) and its rounded-card treatment (app/src/shell/shell-frame.css).
* These two projects are separate repos with no shared code, so if the
* plugin's palette formula ever changes, these values need recomputing by
* hand for hue 235 to stay in sync.
*/
:root {
--aurora-app-bg: linear-gradient(135deg, hsl(235 78% 48%) 0%, hsl(270 78% 45%) 55%, hsl(235 32% 9%) 100%);
--aurora-app-bg-solid: hsl(235 45% 16%);
--aurora-bg: hsl(235 40% 20%);
--aurora-card-bg: hsl(235 36% 24%);
--aurora-card-bg-deep: hsl(235 38% 14%);
--aurora-bg-subtle: hsl(235 32% 28%);
--aurora-text: hsl(235 20% 97%);
--aurora-text-muted: hsl(235 14% 74%);
--aurora-border: hsl(235 28% 30%);
--aurora-card-border: hsl(235 26% 33%);
--aurora-frame-bg: hsl(235 34% 22%);
--aurora-frame-border: hsl(235 26% 33%);
--aurora-accent: hsl(235 85% 62%);
--aurora-accent-soft: hsl(235 85% 62% / 0.16);
--aurora-radius-sm: 10px;
--aurora-radius-md: 14px;
--aurora-radius-lg: 20px;
--aurora-radius-xl: 28px;
--aurora-card-shadow: 0 6px 24px rgba(0, 0, 0, 0.4);
/* Same system-font fallback the plugin itself uses when no Google Font is
chosen — keeps the "no external requests by default" story true on the
marketing site too, with zero <link>/enqueue for a webfont. */
--aurora-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
body {
background: var(--aurora-app-bg-solid);
background-image: var(--aurora-app-bg);
background-attachment: fixed;
color: var(--aurora-text);
font-family: var(--aurora-font-family);
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 KiB

+11
View File
@@ -0,0 +1,11 @@
(function () {
var toggle = document.querySelector('.nav-toggle');
var nav = document.getElementById('site-nav-menu');
if (!toggle || !nav) return;
toggle.addEventListener('click', function () {
var isOpen = nav.classList.toggle('is-open');
toggle.classList.toggle('is-open', isOpen);
toggle.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
});
})();
+29
View File
@@ -0,0 +1,29 @@
<?php
defined('ABSPATH') || exit;
?>
</main>
<?php get_template_part('template-parts/cta', 'footer'); ?>
<footer class="site-footer">
<div class="container site-footer-inner">
<div class="site-logo footer-logo">
<img
src="<?php echo esc_url(AURORA_THEME_URI . '/assets/images/logo.png'); ?>"
alt="<?php echo esc_attr(get_bloginfo('name')); ?>"
width="180"
height="65"
>
</div>
<nav class="footer-nav" aria-label="<?php esc_attr_e('Footer', 'aurora-admin-theme'); ?>">
<a href="<?php echo esc_url(home_url('/')); ?>"><?php esc_html_e('Home', 'aurora-admin-theme'); ?></a>
<a href="<?php echo esc_url(home_url('/features/')); ?>"><?php esc_html_e('Features', 'aurora-admin-theme'); ?></a>
<a href="<?php echo esc_url(home_url('/blog/')); ?>"><?php esc_html_e('Blog', 'aurora-admin-theme'); ?></a>
</nav>
<p class="footer-copy">
&copy; <?php echo esc_html(date('Y')); ?> Aurora Dragon Studio. <?php esc_html_e('Free, no license key, no upsell.', 'aurora-admin-theme'); ?>
</p>
</div>
</footer>
</div>
<?php wp_footer(); ?>
</body>
</html>
+57
View File
@@ -0,0 +1,57 @@
<?php
defined('ABSPATH') || exit;
get_header();
$highlight_features = [
['icon' => '🖥️', 'title' => 'Real replacement screens', 'desc' => 'Posts, Pages, Media, Users, Comments, Plugins, Nav Menus, Widgets, Themes, Settings, Tools, Export, and Import — rebuilt, not reskinned.'],
['icon' => '🌓', 'title' => 'A real dark mode', 'desc' => 'Covers the entire admin, including native screens Aurora frames rather than rebuilds. 10 color presets plus 2 flat neutrals.'],
['icon' => '🧰', 'title' => 'Power tools', 'desc' => 'Role Editor, Activity Log with Admin/User tabs, Menu Creator with drag-and-drop, Media Folders, White Label, Login Redirect, and more.'],
['icon' => '🧩', 'title' => 'Disable Gutenberg', 'desc' => 'One toggle switches every post type back to the classic editor, for anyone who prefers it.'],
];
?>
<section class="hero">
<div class="container hero-inner">
<h1><?php esc_html_e('A modern, fast redesign of the WordPress admin', 'aurora-admin-theme'); ?></h1>
<p class="hero-sub">
<?php esc_html_e('Real replacement screens for Posts, Pages, Media, Users, and more, plus a full dark mode — all free, no upsell.', 'aurora-admin-theme'); ?>
</p>
<div class="hero-actions">
<a class="btn btn-primary" href="https://github.com/WPAuroraAdmin/aurora-admin/releases/latest" target="_blank" rel="noopener">
<?php esc_html_e('Download the latest release', 'aurora-admin-theme'); ?>
</a>
<a class="btn btn-outline" href="<?php echo esc_url(home_url('/features/')); ?>">
<?php esc_html_e('See all features', 'aurora-admin-theme'); ?>
</a>
</div>
</div>
</section>
<section class="feature-teaser">
<div class="container">
<div class="feature-grid">
<?php foreach ($highlight_features as $feature) : ?>
<?php get_template_part('template-parts/content-feature-card', null, $feature); ?>
<?php endforeach; ?>
</div>
</div>
</section>
<section class="free-band">
<div class="container free-band-inner">
<h2><?php esc_html_e('Everything here is free', 'aurora-admin-theme'); ?></h2>
<p><?php esc_html_e("There's no license key, no locked features, and no upsell.", 'aurora-admin-theme'); ?></p>
</div>
</section>
<section class="screenshots">
<div class="container">
<h2><?php esc_html_e('See it in action', 'aurora-admin-theme'); ?></h2>
<div class="screenshot-grid">
<img src="<?php echo esc_url(AURORA_THEME_URI . '/assets/images/screenshot-1.png'); ?>" alt="<?php esc_attr_e('The Aurora dashboard', 'aurora-admin-theme'); ?>">
<img src="<?php echo esc_url(AURORA_THEME_URI . '/assets/images/screenshot-2.png'); ?>" alt="<?php esc_attr_e('Role Editor with capability tooltips', 'aurora-admin-theme'); ?>">
<img src="<?php echo esc_url(AURORA_THEME_URI . '/assets/images/screenshot-3.png'); ?>" alt="<?php esc_attr_e('Media Library with folders, dark mode across the admin', 'aurora-admin-theme'); ?>">
</div>
</div>
</section>
<?php
get_footer();
+10
View File
@@ -0,0 +1,10 @@
<?php
defined('ABSPATH') || exit;
define('AURORA_THEME_VERSION', '1.0.0');
define('AURORA_THEME_DIR', get_template_directory());
define('AURORA_THEME_URI', get_template_directory_uri());
require_once AURORA_THEME_DIR . '/inc/theme-setup.php';
require_once AURORA_THEME_DIR . '/inc/enqueue.php';
require_once AURORA_THEME_DIR . '/inc/template-tags.php';
+33
View File
@@ -0,0 +1,33 @@
<?php
defined('ABSPATH') || exit;
?><!doctype html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo('charset'); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<?php wp_body_open(); ?>
<div class="site-wrap">
<header class="site-header">
<div class="container site-header-inner">
<div class="site-logo">
<a href="<?php echo esc_url(home_url('/')); ?>">
<?php if (has_custom_logo()) : ?>
<?php the_custom_logo(); ?>
<?php else : ?>
<img
src="<?php echo esc_url(AURORA_THEME_URI . '/assets/images/logo.png'); ?>"
alt="<?php echo esc_attr(get_bloginfo('name')); ?>"
class="logo-image"
width="240"
height="87"
>
<?php endif; ?>
</a>
</div>
<?php get_template_part('template-parts/nav', 'primary'); ?>
</div>
</header>
<main class="site-main">
+23
View File
@@ -0,0 +1,23 @@
<?php
defined('ABSPATH') || exit;
get_header();
?>
<div class="container">
<header class="blog-header">
<h1><?php esc_html_e('Blog', 'aurora-admin-theme'); ?></h1>
<p><?php esc_html_e('Release notes and updates for Aurora Admin.', 'aurora-admin-theme'); ?></p>
</header>
<?php if (have_posts()) : ?>
<div class="post-grid">
<?php while (have_posts()) : the_post(); ?>
<?php get_template_part('template-parts/content-post-card'); ?>
<?php endwhile; ?>
</div>
<?php the_posts_pagination(); ?>
<?php else : ?>
<p><?php esc_html_e('No posts yet — check back soon.', 'aurora-admin-theme'); ?></p>
<?php endif; ?>
</div>
<?php
get_footer();
+12
View File
@@ -0,0 +1,12 @@
<?php
defined('ABSPATH') || exit;
add_action('wp_enqueue_scripts', function () {
$ver = AURORA_THEME_VERSION;
wp_enqueue_style('aurora-theme-style', get_stylesheet_uri(), [], $ver);
wp_enqueue_style('aurora-theme-tokens', AURORA_THEME_URI . '/assets/css/theme.css', ['aurora-theme-style'], $ver);
wp_enqueue_style('aurora-theme-main', AURORA_THEME_URI . '/assets/css/main.css', ['aurora-theme-tokens'], $ver);
wp_enqueue_script('aurora-theme-main', AURORA_THEME_URI . '/assets/js/main.js', [], $ver, true);
});
+29
View File
@@ -0,0 +1,29 @@
<?php
defined('ABSPATH') || exit;
/**
* Renders one FAQ item as a native <details>/<summary> accordion — no JS
* needed for expand/collapse.
*/
function aurora_faq_item($question, $answer_html)
{
?>
<details class="faq-item">
<summary><?php echo esc_html($question); ?></summary>
<div class="faq-answer"><?php echo wp_kses_post($answer_html); ?></div>
</details>
<?php
}
/**
* Short excerpt for blog post cards — respects a manual excerpt if the
* author set one, otherwise trims the_content() to a fixed word count.
*/
function aurora_card_excerpt($word_count = 24)
{
if (has_excerpt()) {
echo esc_html(get_the_excerpt());
return;
}
echo esc_html(wp_trim_words(get_the_content(), $word_count));
}
+24
View File
@@ -0,0 +1,24 @@
<?php
defined('ABSPATH') || exit;
add_action('after_setup_theme', function () {
add_theme_support('title-tag');
add_theme_support('post-thumbnails');
add_theme_support('html5', ['search-form', 'comment-form', 'gallery', 'caption', 'script', 'style']);
add_theme_support('automatic-feed-links');
add_theme_support('custom-logo', [
'height' => 60,
'width' => 240,
'flex-height' => true,
'flex-width' => true,
]);
register_nav_menus([
'primary' => __('Primary Navigation', 'aurora-admin-theme'),
]);
});
// No admin bar on the marketing site — this is a public-facing product site,
// not an app, and the front end should never look like wp-admin leaked
// through.
add_filter('show_admin_bar', '__return_false');
+18
View File
@@ -0,0 +1,18 @@
<?php
defined('ABSPATH') || exit;
get_header();
?>
<div class="container">
<?php if (have_posts()) : ?>
<div class="post-grid">
<?php while (have_posts()) : the_post(); ?>
<?php get_template_part('template-parts/content-post-card'); ?>
<?php endwhile; ?>
</div>
<?php the_posts_pagination(); ?>
<?php else : ?>
<p><?php esc_html_e('Nothing found.', 'aurora-admin-theme'); ?></p>
<?php endif; ?>
</div>
<?php
get_footer();
+106
View File
@@ -0,0 +1,106 @@
<?php
/* Template Name: Features */
defined('ABSPATH') || exit;
get_header();
$replacement_screens = [
['icon' => '📝', 'title' => 'Posts, Pages & Media', 'desc' => 'Full list/edit/delete flows for Posts, Pages, and the Media Library — the same data and capabilities, rebuilt.'],
['icon' => '👥', 'title' => 'Users & Comments', 'desc' => 'Manage users and comments with a modern interface, including Add User and Comments moderation.'],
['icon' => '🔌', 'title' => 'Plugins', 'desc' => 'A rebuilt Plugins screen that stays correctly in sync after activate/deactivate/delete.'],
['icon' => '🎨', 'title' => 'Appearance', 'desc' => 'Nav Menus, Widgets, and Themes all get the same modern frame.'],
['icon' => '⚙️', 'title' => 'Core Settings', 'desc' => 'General, Writing, Reading, Discussion, and Permalinks — rebuilt, not reskinned.'],
['icon' => '🛠️', 'title' => 'Tools, Export & Import', 'desc' => 'Available Tools, Export, and Import all get real Aurora-built replacements.'],
['icon' => '🧑', 'title' => 'Profile & the block editor', 'desc' => 'Your profile page and the block editor get the same modern, dark-themed frame.'],
];
$power_tools = [
['icon' => '🎭', 'title' => 'Role Editor', 'desc' => 'A visual capability editor for every role, with plain-English tooltips explaining what each capability actually does.'],
['icon' => '📜', 'title' => 'Activity Log', 'desc' => 'A filterable table — Date, Author, IP Address, Type, Action, Description — with separate Admin and User tabs.'],
['icon' => '📁', 'title' => 'Media Folders', 'desc' => 'Organize your Media Library into folders, drag-and-drop included.'],
['icon' => '📋', 'title' => 'Menu Creator', 'desc' => 'Build and customize your own wp-admin sidebar menu, with drag-and-drop reordering.'],
['icon' => '🔔', 'title' => 'Admin Notices', 'desc' => 'Control which plugin nag notices you actually see.'],
['icon' => '🏷️', 'title' => 'White Label', 'desc' => 'Rename and rebrand the admin for client sites.'],
['icon' => '↪️', 'title' => 'Login Redirect', 'desc' => "Optionally send logged-out visitors and specific roles to custom URLs — never touches wp-login.php itself."],
['icon' => '✏️', 'title' => 'Disable Gutenberg', 'desc' => 'An opt-in toggle that switches every post type to the classic editor instead of the block editor.'],
['icon' => '🧩', 'title' => 'Modules', 'desc' => "A one-click addon marketplace for Aurora's standalone companion plugins (File Manager, Database Explorer, Site Backup)."],
];
$look_and_feel = [
['icon' => '🌓', 'title' => 'A real dark mode', 'desc' => 'Covers the entire admin, not just a few screens — including native screens Aurora frames rather than rebuilds.'],
['icon' => '🎨', 'title' => '10 color presets', 'desc' => 'Plus 2 flat neutrals, applied across the whole interface.'],
['icon' => '🟦', 'title' => 'Rounded, framed cards', 'desc' => 'Theme-tinted scrollbars; the block editor and other full-screen views get the same treatment.'],
['icon' => '🔤', 'title' => 'Optional Google Font', 'desc' => 'Off by default — see Privacy below for what that means.'],
];
?>
<div class="container page-header">
<h1><?php esc_html_e('Features', 'aurora-admin-theme'); ?></h1>
<p><?php esc_html_e('Everything Aurora Admin replaces and adds — all free, no upsell.', 'aurora-admin-theme'); ?></p>
</div>
<section class="feature-section">
<div class="container">
<h2><?php esc_html_e('Real replacement screens', 'aurora-admin-theme'); ?></h2>
<div class="feature-grid">
<?php foreach ($replacement_screens as $feature) : ?>
<?php get_template_part('template-parts/content-feature-card', null, $feature); ?>
<?php endforeach; ?>
</div>
</div>
</section>
<section class="feature-section">
<div class="container">
<h2><?php esc_html_e('Power tools', 'aurora-admin-theme'); ?></h2>
<div class="feature-grid">
<?php foreach ($power_tools as $feature) : ?>
<?php get_template_part('template-parts/content-feature-card', null, $feature); ?>
<?php endforeach; ?>
</div>
</div>
</section>
<section class="feature-section">
<div class="container">
<h2><?php esc_html_e('Look and feel', 'aurora-admin-theme'); ?></h2>
<div class="feature-grid">
<?php foreach ($look_and_feel as $feature) : ?>
<?php get_template_part('template-parts/content-feature-card', null, $feature); ?>
<?php endforeach; ?>
</div>
</div>
</section>
<section class="feature-section privacy-section">
<div class="container">
<h2><?php esc_html_e('Privacy / external services', 'aurora-admin-theme'); ?></h2>
<p><?php esc_html_e('The optional "Report a Bug" screen sends your bug description and basic diagnostics (plugin version, WordPress version, PHP version, active theme name, and your site\'s domain) to a feedback endpoint on auroraplugins.com when you choose to submit it. Nothing is sent automatically or in the background.', 'aurora-admin-theme'); ?></p>
<p><?php esc_html_e('The interface font setting is empty by default, in which case Aurora uses your system font and makes no external requests. If you choose a Google Font, that font file is loaded from Google Fonts on admin pages. Leave the setting empty to avoid any external font requests.', 'aurora-admin-theme'); ?></p>
<p><?php esc_html_e('The Modules page\'s install buttons for the companion plugins download that plugin\'s zip using WordPress\'s own plugin-installer API, the same mechanism the native Plugins screen uses. This only happens when you click one of those buttons.', 'aurora-admin-theme'); ?></p>
</div>
</section>
<section class="feature-section faq-section">
<div class="container">
<h2><?php esc_html_e('Frequently Asked Questions', 'aurora-admin-theme'); ?></h2>
<?php
aurora_faq_item(
__('Does this replace WordPress core, or is it a theme?', 'aurora-admin-theme'),
__('Neither. Aurora Admin is a plugin that replaces individual wp-admin screens in place — the URLs don\'t change, and disabling the plugin returns you to the native WordPress screens exactly as they were.', 'aurora-admin-theme')
);
aurora_faq_item(
__('Is this really free, no paid tiers?', 'aurora-admin-theme'),
__('Yes. Every feature listed above is available with no license key and no restrictions.', 'aurora-admin-theme')
);
aurora_faq_item(
__('Will this work with my other plugins?', 'aurora-admin-theme'),
__('Aurora Admin only replaces the built-in WordPress admin screens it explicitly targets. Screens added by other plugins are untouched, and each replacement can be toggled off individually in Aurora\'s settings.', 'aurora-admin-theme')
);
aurora_faq_item(
__('Does Aurora load anything from external servers?', 'aurora-admin-theme'),
__('Not by default. It only makes an external request if you opt in: choosing a Google Font, submitting the "Report a Bug" form, or clicking a Modules install button.', 'aurora-admin-theme')
);
?>
</div>
</section>
<?php
get_footer();
+16
View File
@@ -0,0 +1,16 @@
<?php
defined('ABSPATH') || exit;
get_header();
?>
<div class="container">
<?php while (have_posts()) : the_post(); ?>
<article <?php post_class('single-page'); ?>>
<h1><?php the_title(); ?></h1>
<div class="single-page-content">
<?php the_content(); ?>
</div>
</article>
<?php endwhile; ?>
</div>
<?php
get_footer();
+26
View File
@@ -0,0 +1,26 @@
<?php
defined('ABSPATH') || exit;
get_header();
?>
<div class="container">
<?php while (have_posts()) : the_post(); ?>
<article <?php post_class('single-post'); ?>>
<header class="single-post-header">
<h1><?php the_title(); ?></h1>
<p class="post-card-date"><?php echo esc_html(get_the_date()); ?></p>
</header>
<?php if (has_post_thumbnail()) : ?>
<div class="single-post-thumb"><?php the_post_thumbnail('large'); ?></div>
<?php endif; ?>
<div class="single-post-content">
<?php the_content(); ?>
</div>
</article>
<nav class="single-post-nav">
<div><?php previous_post_link('%link', '&larr; %title'); ?></div>
<div><?php next_post_link('%link', '%title &rarr;'); ?></div>
</nav>
<?php endwhile; ?>
</div>
<?php
get_footer();
+31
View File
@@ -0,0 +1,31 @@
/*
Theme Name: Aurora Admin
Theme URI: https://auroraadmin.dev
Author: Aurora Dragon Studio
Author URI: https://auroradragon.studio
Description: Marketing/product site theme for Aurora Admin — a free WordPress admin-replacement plugin.
Version: 1.0.0
Requires at least: 5.5
Requires PHP: 7.4
Text Domain: aurora-admin-theme
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
margin: 0;
}
img {
max-width: 100%;
height: auto;
display: block;
}
a {
text-decoration: none;
}
+18
View File
@@ -0,0 +1,18 @@
<?php
defined('ABSPATH') || exit;
/**
* Expects $args = ['icon' => dashicon slug or emoji, 'title' => string, 'desc' => string]
* Called via get_template_part('template-parts/content-feature-card', null, $args).
*/
$icon = $args['icon'] ?? '';
$title = $args['title'] ?? '';
$desc = $args['desc'] ?? '';
?>
<div class="feature-card">
<?php if ($icon) : ?>
<div class="feature-icon" aria-hidden="true"><?php echo esc_html($icon); ?></div>
<?php endif; ?>
<h3><?php echo esc_html($title); ?></h3>
<p><?php echo esc_html($desc); ?></p>
</div>
+16
View File
@@ -0,0 +1,16 @@
<?php
defined('ABSPATH') || exit;
?>
<article <?php post_class('post-card'); ?>>
<?php if (has_post_thumbnail()) : ?>
<a class="post-card-thumb" href="<?php the_permalink(); ?>">
<?php the_post_thumbnail('medium'); ?>
</a>
<?php endif; ?>
<div class="post-card-body">
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<p class="post-card-date"><?php echo esc_html(get_the_date()); ?></p>
<p class="post-card-excerpt"><?php aurora_card_excerpt(); ?></p>
<a class="post-card-link" href="<?php the_permalink(); ?>"><?php esc_html_e('Read more', 'aurora-admin-theme'); ?> &rarr;</a>
</div>
</article>
+20
View File
@@ -0,0 +1,20 @@
<?php
defined('ABSPATH') || exit;
?>
<section class="cta-band">
<div class="container cta-band-inner">
<h2><?php esc_html_e('Get Aurora Admin — free', 'aurora-admin-theme'); ?></h2>
<p><?php esc_html_e('No license key, no locked features, no upsell. Ever.', 'aurora-admin-theme'); ?></p>
<?php
/**
* TODO: once the plugin is live on WordPress.org, switch this to
* https://wordpress.org/plugins/aurora-admin/ — for now it points at
* the GitHub Releases page, which is the only place it's actually
* downloadable today.
*/
?>
<a class="btn btn-primary" href="https://github.com/WPAuroraAdmin/aurora-admin/releases/latest" target="_blank" rel="noopener">
<?php esc_html_e('Download the latest release', 'aurora-admin-theme'); ?>
</a>
</div>
</section>
+31
View File
@@ -0,0 +1,31 @@
<?php
defined('ABSPATH') || exit;
?>
<nav class="site-nav" id="site-nav-menu" aria-label="<?php esc_attr_e('Primary', 'aurora-admin-theme'); ?>">
<?php
if (has_nav_menu('primary')) {
wp_nav_menu([
'theme_location' => 'primary',
'container' => false,
'menu_class' => 'nav-menu',
'fallback_cb' => false,
]);
} else {
// No menu assigned yet in Appearance > Menus — fall back to the three
// pages this theme expects, so the site is never left with an empty nav.
?>
<ul class="nav-menu">
<li><a href="<?php echo esc_url(home_url('/')); ?>"><?php esc_html_e('Home', 'aurora-admin-theme'); ?></a></li>
<li><a href="<?php echo esc_url(home_url('/features/')); ?>"><?php esc_html_e('Features', 'aurora-admin-theme'); ?></a></li>
<li><a href="<?php echo esc_url(home_url('/blog/')); ?>"><?php esc_html_e('Blog', 'aurora-admin-theme'); ?></a></li>
</ul>
<?php
}
?>
</nav>
<button type="button" class="nav-toggle" aria-expanded="false" aria-controls="site-nav-menu">
<span class="sr-only"><?php esc_html_e('Menu', 'aurora-admin-theme'); ?></span>
<span class="nav-toggle-bar"></span>
<span class="nav-toggle-bar"></span>
<span class="nav-toggle-bar"></span>
</button>