Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
306 changes: 306 additions & 0 deletions assets/css/settings.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,306 @@
/**
* Anything Shortcodes — Admin Styles
* Provides layout and visuals for the plugin settings page.
*
* Table of Contents:
* 1. Base / Global
* 2. Header
* 3. Tabs
* 4. Sidebar / Card / Links
* 5. Main / Form
* 6. Mobile FAB & Sheet
* 7. Responsive (≤782px)
*
* @since NEXT
*/

/* ======================================
1. Base / Global
====================================== */
#wpcontent { padding-left: 0; }

.anys-settings-grid {
display: grid;
grid-template-columns: 1fr 300px;
gap: 24px;
align-items: start;
margin-top: 20px;
padding-inline: 2rem;
}

/* ======================================
2. Header
====================================== */
.anys-page-header {
display: flex;
justify-content: space-between;
align-items: center;
background: #fff;
padding: 1rem 2rem;
}

.anys-title {
margin: 0;
font-size: 24px;
font-weight: 600;
}

.anys-pro-cta {
background: #DAFFD9;
border: 1px solid transparent;
color: #1D2327;
font-weight: 500;
padding: 16px;
border-radius: 3px;
text-decoration: none;
font-size: 13px;
transition: all .2s ease;
}

.anys-pro-cta:hover {
background: #d8f3e3d6;
color: #1D2327;
border-color: #b8e0c3;
}

/* ======================================
3. Tabs
====================================== */
.anys-tabs {
padding-inline: 2rem;
padding-top: 0;
background: #fff;
border-block: 1px solid #e5e5e5;
}

.anys-tabs .anys-tab {
background: transparent;
border: none;
box-shadow: none;
margin-right: 18px;
padding: 10px 0;
color: #7E7E7F;
border-bottom: 3px solid transparent;
transition: border-color .2s ease, color .2s ease;
}

.anys-tabs .anys-tab:hover {
color: #0a0a0a;
border-bottom-color: #0a0a0a;
}

.anys-tabs .anys-tab.nav-tab-active {
background: transparent;
border: none;
border-bottom: 3px solid #1d2327;
color: #1d2327;
font-weight: 600;
}

.anys-tabs .anys-tab:focus {
outline: none;
box-shadow: none;
}

/* ======================================
4. Sidebar / Card / Links
====================================== */
.anys-sidebar {
background: #fff;
border: 1px solid #e0e0e0;
border-radius: 6px;
align-self: start;
}

.anys-card {
border-top: 2px solid #f0f0f0;
padding: 1rem;
}

.anys-sidebar h3 {
margin: 0;
font-size: 14px;
font-weight: 600;
padding: .8rem 1rem;
}

.anys-links { list-style: none; margin: 0; padding: 0; }
.anys-links li { margin: 8px 0; }

.anys-links a {
color: #000;
text-decoration: none;
font-size: 13px;
}

.anys-links a:hover { font-weight: 600; }
.anys-links a:focus { outline: none; box-shadow: none; }

/* ======================================
5. Main / Form
====================================== */
.anys-main { border-radius: 6px; }

.form-table th {
width: 200px;
padding: 12px 10px;
vertical-align: top;
}

.form-table td { padding: 12px 10px; }

.form-table input[type="text"],
.form-table input[type="number"],
.form-table select,
.form-table textarea {
width: 100%;
max-width: 100%;
border: 1px solid #ccc;
border-radius: 3px;
padding: 6px 8px;
font-size: 13px;
background: #fff;
box-sizing: border-box;
}

.form-table .description {
color: #666;
font-size: 12px;
margin-top: 4px;
}

input[type="checkbox"],
input[type="radio"] { vertical-align: middle; }

.anys-field-group {
display: flex;
flex-direction: column;
gap: 16px;
padding: 12px 0;
border-bottom: 1px solid #f1f1f1;
}

.anys-field-group:last-child { border-bottom: 0; }

.anys-field-label {
font-weight: 500;
font-size: 13px;
line-height: 16px;
color: #000;
}

.anys-field-label label { font-weight: 600; }

.anys-field-control {
flex: 1 1 auto;
min-width: 0;
}

.anys-field-control .regular-text,
.anys-field-control input[type="text"],
.anys-field-control input[type="number"],
.anys-field-control select,
.anys-field-control textarea {
width: 100%;
max-width: 640px;
box-sizing: border-box;
padding: 2px 8px;
}

.anys-field-control .description {
color: #666;
font-size: 12px;
}

/* ======================================
6. Mobile FAB & Sheet
====================================== */
.anys-fab {
position: fixed;
right: 16px;
bottom: 16px;
width: 56px;
height: 56px;
border-radius: 50%;
border: none;
background: #2271b1;
color: #fff;
box-shadow: 0 6px 16px rgba(0,0,0,.2);
cursor: pointer;
display: none;
z-index: 1000;
}

.anys-fab span {
font-size: 24px;
line-height: 28px;
margin-top: -2px;
}

.anys-mobile-sheet[hidden] { display: none; }

.anys-mobile-sheet {
position: fixed;
inset: 0;
z-index: 999;
display: none;
}

.anys-mobile-sheet.is-open { display: block; }

.anys-mobile-sheet__backdrop {
position: absolute;
inset: 0;
}

.anys-mobile-sheet__content {
position: absolute;
right: 12px;
bottom: 76px;
min-width: 260px;
max-width: 90vw;
background: #fff;
border-radius: 12px;
box-shadow: 0 10px 24px rgba(0,0,0,.25);
padding: 12px 14px 14px;
z-index: 50;
}

.anys-mobile-sheet__content h3 { margin-top: 0; }

.anys-mobile-sheet__close {
position: absolute;
top: 8px;
right: 8px;
border: none;
background: transparent;
font-size: 18px;
cursor: pointer;
}

/* ======================================
7. Responsive (≤ 782px)
====================================== */
@media (max-width: 782px) {
.anys-settings-grid { grid-template-columns: 1fr; }
.anys-sidebar { display: none; }
.anys-main { order: 2; }
.anys-sidebar { order: 1; }

.anys-page-header {
flex-direction: column;
align-items: flex-start;
gap: 12px;
}

.anys-field-group { gap: 8px; }
.anys-field-label { padding-top: 0; }

#wpcontent { padding-left: 0 !important; }

.anys-fab {
display: inline-flex;
align-items: center;
justify-content: center;
}
}
38 changes: 38 additions & 0 deletions assets/js/admin-mobile-sidebar.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
(function(){
// Elements
var fab = document.querySelector('.anys-fab');
var sheet = document.getElementById('anys-mobile-menu');
var closeBtn = sheet ? sheet.querySelector('.anys-mobile-sheet__close') : null;
var backdrop = sheet ? sheet.querySelector('.anys-mobile-sheet__backdrop') : null;

if(!fab || !sheet) return;

// Open/close helpers
function openSheet(){
sheet.hidden = false;
sheet.classList.add('is-open');
fab.setAttribute('aria-expanded', 'true');
// Focus first link for accessibility
var firstLink = sheet.querySelector('a,button,[tabindex]:not([tabindex="-1"])');
if(firstLink) firstLink.focus();
}
function closeSheet(){
sheet.classList.remove('is-open');
fab.setAttribute('aria-expanded', 'false');
// Use a microtask so CSS can apply before hiding
setTimeout(function(){ sheet.hidden = true; }, 0);
}

// Toggle
fab.addEventListener('click', function(){
var expanded = fab.getAttribute('aria-expanded') === 'true';
if(expanded) { closeSheet(); } else { openSheet(); }
});

// Close handlers
if(closeBtn) closeBtn.addEventListener('click', closeSheet);
if(backdrop) backdrop.addEventListener('click', closeSheet);
document.addEventListener('keydown', function(e){
if(e.key === 'Escape') closeSheet();
});
})();
Loading