Initial commit: Aurora Admin plugin

This commit is contained in:
Kris Parish
2026-07-03 02:53:29 -05:00
commit 03cabe2fe4
73 changed files with 9591 additions and 0 deletions
+282
View File
@@ -0,0 +1,282 @@
/*
* Native WordPress admin dark theme.
*
* Loaded ONLY on native (non-Aurora) admin pages, and every rule is gated
* on html.aurora-dark so it is completely inert in light mode. It restyles
* the common WordPress admin elements to match Aurora's dark palette using
* the --aurora-* variables defined in the shell stylesheet.
*
* Scope is kept under #wpcontent / #wpbody-content so it never reaches the
* Aurora sidebar/toolbar (which live in their own root) and cannot leak to
* the front end. This is the one intentionally-large styling surface, kept
* isolated in a single file on purpose.
*/
html.aurora-dark.aurora-ready #wpbody-content,
html.aurora-dark.aurora-ready #wpbody-content .wrap {
color: var(--aurora-text);
}
/* Headings & text -------------------------------------------------------- */
html.aurora-dark.aurora-ready #wpbody-content h1,
html.aurora-dark.aurora-ready #wpbody-content h2,
html.aurora-dark.aurora-ready #wpbody-content h3,
html.aurora-dark.aurora-ready #wpbody-content h4,
html.aurora-dark.aurora-ready #wpbody-content h5,
html.aurora-dark.aurora-ready #wpbody-content h6,
html.aurora-dark.aurora-ready #wpbody-content p,
html.aurora-dark.aurora-ready #wpbody-content li,
html.aurora-dark.aurora-ready #wpbody-content dt,
html.aurora-dark.aurora-ready #wpbody-content dd,
html.aurora-dark.aurora-ready #wpbody-content label,
html.aurora-dark.aurora-ready #wpbody-content th,
html.aurora-dark.aurora-ready #wpbody-content td,
html.aurora-dark.aurora-ready #wpbody-content strong {
color: var(--aurora-text);
}
html.aurora-dark.aurora-ready #wpbody-content .description,
html.aurora-dark.aurora-ready #wpbody-content .howto,
html.aurora-dark.aurora-ready #wpbody-content .subtitle,
html.aurora-dark.aurora-ready #wpbody-content .wp-heading-inline + .subtitle {
color: var(--aurora-text-muted);
}
html.aurora-dark.aurora-ready #wpbody-content a {
color: var(--aurora-accent);
}
/* Postboxes, cards, metaboxes ------------------------------------------- */
html.aurora-dark.aurora-ready #wpbody-content .postbox,
html.aurora-dark.aurora-ready #wpbody-content .card,
html.aurora-dark.aurora-ready #wpbody-content .welcome-panel,
html.aurora-dark.aurora-ready #wpbody-content .wp-list-table,
html.aurora-dark.aurora-ready #wpbody-content .stuffbox {
background: var(--aurora-card-bg);
border-color: var(--aurora-card-border);
color: var(--aurora-text);
box-shadow: none;
}
html.aurora-dark.aurora-ready #wpbody-content .postbox-header,
html.aurora-dark.aurora-ready #wpbody-content .postbox .hndle,
html.aurora-dark.aurora-ready #wpbody-content .postbox h2,
html.aurora-dark.aurora-ready #wpbody-content .postbox h3 {
border-color: var(--aurora-card-border);
color: var(--aurora-text);
}
html.aurora-dark.aurora-ready #wpbody-content .inside,
html.aurora-dark.aurora-ready #wpbody-content .welcome-panel-content {
color: var(--aurora-text);
}
html.aurora-dark.aurora-ready #wpbody-content .handlediv,
html.aurora-dark.aurora-ready #wpbody-content .postbox .handle-order-higher,
html.aurora-dark.aurora-ready #wpbody-content .postbox .handle-order-lower {
color: var(--aurora-text-muted);
}
/* Tables ---------------------------------------------------------------- */
html.aurora-dark.aurora-ready #wpbody-content .wp-list-table th,
html.aurora-dark.aurora-ready #wpbody-content .wp-list-table td {
border-color: var(--aurora-border);
}
html.aurora-dark.aurora-ready #wpbody-content .wp-list-table thead th,
html.aurora-dark.aurora-ready #wpbody-content .wp-list-table tfoot th,
html.aurora-dark.aurora-ready #wpbody-content .wp-list-table thead th a,
html.aurora-dark.aurora-ready #wpbody-content .wp-list-table tfoot th a {
color: var(--aurora-text);
}
html.aurora-dark.aurora-ready #wpbody-content .wp-list-table.striped > tbody > :nth-child(odd),
html.aurora-dark.aurora-ready #wpbody-content .striped > tbody > :nth-child(odd) {
background: var(--aurora-bg-subtle);
}
html.aurora-dark.aurora-ready #wpbody-content .wp-list-table tbody tr:hover {
background: var(--aurora-accent-soft);
}
html.aurora-dark.aurora-ready #wpbody-content .row-actions {
color: var(--aurora-text-muted);
}
/* Form fields ----------------------------------------------------------- */
html.aurora-dark.aurora-ready #wpbody-content input[type='text'],
html.aurora-dark.aurora-ready #wpbody-content input[type='search'],
html.aurora-dark.aurora-ready #wpbody-content input[type='email'],
html.aurora-dark.aurora-ready #wpbody-content input[type='url'],
html.aurora-dark.aurora-ready #wpbody-content input[type='password'],
html.aurora-dark.aurora-ready #wpbody-content input[type='number'],
html.aurora-dark.aurora-ready #wpbody-content input[type='tel'],
html.aurora-dark.aurora-ready #wpbody-content input[type='date'],
html.aurora-dark.aurora-ready #wpbody-content textarea,
html.aurora-dark.aurora-ready #wpbody-content select {
background: var(--aurora-bg-subtle);
border-color: var(--aurora-border);
color: var(--aurora-text);
}
html.aurora-dark.aurora-ready #wpbody-content input::placeholder,
html.aurora-dark.aurora-ready #wpbody-content textarea::placeholder {
color: var(--aurora-text-muted);
}
html.aurora-dark.aurora-ready #wpbody-content input[type='text']:focus,
html.aurora-dark.aurora-ready #wpbody-content input[type='search']:focus,
html.aurora-dark.aurora-ready #wpbody-content textarea:focus,
html.aurora-dark.aurora-ready #wpbody-content select:focus {
border-color: var(--aurora-accent);
box-shadow: 0 0 0 1px var(--aurora-accent);
outline: none;
}
/* Buttons --------------------------------------------------------------- */
html.aurora-dark.aurora-ready #wpbody-content .button,
html.aurora-dark.aurora-ready #wpbody-content .button-secondary {
background: var(--aurora-bg-subtle);
border-color: var(--aurora-border);
color: var(--aurora-text);
}
html.aurora-dark.aurora-ready #wpbody-content .button:hover,
html.aurora-dark.aurora-ready #wpbody-content .button-secondary:hover {
background: var(--aurora-border);
border-color: var(--aurora-text-muted);
color: var(--aurora-text);
}
html.aurora-dark.aurora-ready #wpbody-content .button-primary {
background: var(--aurora-accent);
border-color: var(--aurora-accent);
color: #fff;
text-shadow: none;
box-shadow: none;
}
html.aurora-dark.aurora-ready #wpbody-content .button-primary:hover {
filter: brightness(1.1);
}
/* Nav tabs -------------------------------------------------------------- */
html.aurora-dark.aurora-ready #wpbody-content .nav-tab-wrapper,
html.aurora-dark.aurora-ready #wpbody-content .wp-filter {
border-color: var(--aurora-border);
}
html.aurora-dark.aurora-ready #wpbody-content .nav-tab {
background: var(--aurora-bg-subtle);
border-color: var(--aurora-border);
color: var(--aurora-text-muted);
}
html.aurora-dark.aurora-ready #wpbody-content .nav-tab-active {
background: var(--aurora-card-bg);
border-bottom-color: var(--aurora-card-bg);
color: var(--aurora-text);
}
/* Notices --------------------------------------------------------------- */
html.aurora-dark.aurora-ready #wpbody-content .notice,
html.aurora-dark.aurora-ready #wpbody-content div.updated,
html.aurora-dark.aurora-ready #wpbody-content div.error {
background: var(--aurora-card-bg);
color: var(--aurora-text);
}
/* Code ------------------------------------------------------------------ */
html.aurora-dark.aurora-ready #wpbody-content code,
html.aurora-dark.aurora-ready #wpbody-content kbd,
html.aurora-dark.aurora-ready #wpbody-content pre {
background: var(--aurora-bg-subtle);
color: var(--aurora-text);
}
/* Tablenav / pagination / filters --------------------------------------- */
html.aurora-dark.aurora-ready #wpbody-content .tablenav,
html.aurora-dark.aurora-ready #wpbody-content .subsubsub,
html.aurora-dark.aurora-ready #wpbody-content .tablenav .displaying-num {
color: var(--aurora-text-muted);
}
html.aurora-dark.aurora-ready #wpbody-content .tablenav-pages a,
html.aurora-dark.aurora-ready #wpbody-content .pagination-links a {
background: var(--aurora-bg-subtle);
border-color: var(--aurora-border);
color: var(--aurora-text);
}
/* Screen meta (Help / Screen Options pull-down tabs) -------------------- */
html.aurora-dark.aurora-ready #screen-meta,
html.aurora-dark.aurora-ready #screen-meta-links .show-settings,
html.aurora-dark.aurora-ready #contextual-help-wrap,
html.aurora-dark.aurora-ready #screen-options-wrap {
background: var(--aurora-card-bg);
border-color: var(--aurora-border);
color: var(--aurora-text);
}
/* Form tables (settings pages) ----------------------------------------- */
html.aurora-dark.aurora-ready #wpbody-content .form-table th,
html.aurora-dark.aurora-ready #wpbody-content .form-table td {
border-color: var(--aurora-border);
color: var(--aurora-text);
}
/* Horizontal rules & misc dividers ------------------------------------- */
html.aurora-dark.aurora-ready #wpbody-content hr,
html.aurora-dark.aurora-ready #wpbody-content .wp-header-end {
border-color: var(--aurora-border);
}
/* ---------------------------------------------------------------------------
* WordPress Updates page (update-core.php) — boxed "card" layout.
* native-enhance.js wraps each section (Current version, Plugins, Themes)
* into a .aurora-native-card div; these rules give those cards the same
* surface look as the dashboard cards, plus a clean title and accent button.
* Scoped to the updates page body class so it can't affect other screens.
* ------------------------------------------------------------------------ */
html.aurora-dark.aurora-ready body.update-core-php #wpbody-content .wrap > h1 {
font-size: 1.5rem;
font-weight: 700;
margin: 0 0 6px;
}
html.aurora-dark.aurora-ready body.update-core-php #wpbody-content .wrap > p {
color: var(--aurora-text-muted);
font-size: 0.875rem;
margin: 0 0 20px;
}
html.aurora-dark.aurora-ready body.update-core-php #wpbody-content .aurora-native-card {
background: var(--aurora-card-bg);
border: 1px solid var(--aurora-card-border);
border-radius: 16px;
padding: 20px 24px;
margin-bottom: 16px;
}
html.aurora-dark.aurora-ready body.update-core-php #wpbody-content .aurora-native-card h2 {
font-size: 1.05rem;
font-weight: 600;
margin: 4px 0 8px;
color: var(--aurora-text);
border: 0;
padding-top: 0;
}
html.aurora-dark.aurora-ready body.update-core-php #wpbody-content .aurora-native-card h2.response {
font-size: 1.15rem;
}
html.aurora-dark.aurora-ready body.update-core-php #wpbody-content .aurora-native-card .button {
background: transparent;
border: 1px solid var(--aurora-accent);
color: var(--aurora-accent);
border-radius: 8px;
padding: 7px 18px;
font-weight: 500;
height: auto;
box-shadow: none;
text-shadow: none;
}
html.aurora-dark.aurora-ready body.update-core-php #wpbody-content .aurora-native-card .button:hover {
background: var(--aurora-accent-soft);
}
+71
View File
@@ -0,0 +1,71 @@
/**
* Progressive enhancement for native WordPress admin pages that benefit from
* Aurora's boxed "card" layout but ship as flat sibling markup.
*
* Currently targets the Updates page (update-core.php): it groups each
* section (Current version, Plugins, Themes) into a .aurora-native-card div
* so the dark stylesheet can give them the same surface as the dashboard
* cards. Purely visual and reversible — no native behaviour is altered.
*/
(function () {
'use strict';
function enhanceUpdates() {
var wrap = document.querySelector('#wpbody-content .wrap');
if (!wrap || wrap.querySelector('.aurora-native-card')) {
return;
}
var children = Array.prototype.slice.call(wrap.children);
// A new card starts at each major section heading. The "response" h2
// ("You have the latest version") belongs inside the version section,
// so it is not treated as a boundary.
var isBoundary = function (el) {
return el.tagName === 'H2' && !el.classList.contains('response');
};
var groups = [];
var current = null;
children.forEach(function (el) {
if (el.tagName === 'H1') {
return; // page title stays outside the cards
}
if (!current && !isBoundary(el)) {
return; // intro paragraph(s) before the first section stay in place
}
if (isBoundary(el)) {
current = [];
groups.push(current);
}
if (current) {
current.push(el);
}
});
groups.forEach(function (group) {
if (!group.length) {
return;
}
var card = document.createElement('div');
card.className = 'aurora-native-card';
group[0].parentNode.insertBefore(card, group[0]);
group.forEach(function (el) {
card.appendChild(el);
});
});
}
function run() {
if (document.body.classList.contains('update-core-php')) {
enhanceUpdates();
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', run);
} else {
run();
}
})();