Initial commit of slide manager plugin

This commit is contained in:
2026-02-08 21:39:31 -08:00
commit 40099aa68a
32 changed files with 11284 additions and 0 deletions
+409
View File
@@ -0,0 +1,409 @@
/**
* Hi-School Slide Manager - Admin Slides Dashboard Styles
*/
/* General dashboard elements */
.hssm-dashboard-main {
background: #f0f2f5;
padding: 20px;
border-radius: 8px;
}
.hssm-tab-header h2 {
color: #333;
font-size: 20px;
margin-bottom: 15px;
}
/* Styles for the slide list within the 'Manage Slides' tab */
.hssm-slides-list {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 20px;
margin-top: 20px;
}
.hssm-slide-item {
background: #ffffff;
border: 1px solid #e0e0e0;
border-radius: 8px;
padding: 15px;
display: flex;
flex-direction: column;
gap: 10px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.hssm-slide-item:hover {
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.hssm-slide-item .hssm-slide-info {
flex-grow: 1;
}
.hssm-slide-item .hssm-slide-title {
font-size: 1.1em !important;
font-weight: 600;
color: #2c3338 !important;
margin-bottom: 5px !important;
line-height: 1.3 !important;
}
.hssm-slide-item .hssm-slide-subtitle {
font-size: 0.9em;
color: #555d66;
margin-bottom: 10px;
line-height: 1.4;
}
.hssm-slide-item .hssm-slide-meta {
font-size: 0.85em;
color: #72777c;
line-height: 1.6;
}
.hssm-slide-item .hssm-status-badge {
display: inline-block;
padding: 3px 8px;
border-radius: 4px;
font-size: 0.8em;
font-weight: 700;
text-transform: uppercase;
margin-bottom: 5px;
}
.hssm-slide-item .hssm-status-pending {
background-color: #ffba00;
color: #fff;
}
.hssm-slide-item .hssm-status-publish {
background-color: #46b450;
color: #fff;
}
.hssm-slide-item .hssm-slide-thumbnail {
width: 100%;
padding-bottom: 56.25%; /* 16:9 aspect ratio */
background-size: cover;
background-position: center;
background-color: #f0f0f0;
border-radius: 4px;
margin-top: 10px;
}
.hssm-slide-item .hssm-slide-actions {
display: flex;
gap: 8px;
margin-top: 10px;
}
/* Styles for the slide forms in the 'Create Slides' tab */
.hssm-slide-form {
background: #ffffff;
border: 1px solid #e0e0e0;
border-radius: 8px;
padding: 20px;
margin-bottom: 20px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
.hssm-form-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
}
.hssm-form-header h3 {
margin: 0;
font-size: 1.2em;
color: #333;
}
.hssm-remove-form {
background: none;
border: none;
color: #a00;
cursor: pointer;
font-size: 1.5em;
}
.hssm-form-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 20px;
}
.hssm-form-section h4 {
font-size: 1em;
color: #555d66;
margin-top: 0;
margin-bottom: 15px;
padding-bottom: 5px;
border-bottom: 1px solid #eee;
}
.hssm-field-row {
display: flex;
gap: 15px;
margin-bottom: 15px;
}
.hssm-field-row .hssm-field {
flex: 1;
}
.hssm-field label {
display: block;
font-weight: 500;
margin-bottom: 5px;
color: #333;
font-size: 0.9em;
}
.hssm-input, .hssm-textarea, .hssm-select {
width: 100%;
padding: 8px 10px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 0.9em;
color: #333;
background-color: #f9f9f9;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07);
}
.hssm-input[type="date"] {
padding: 7px 10px;
}
.hssm-input:focus, .hssm-textarea:focus, .hssm-select:focus {
border-color: #007cba;
box-shadow: 0 0 0 1px #007cba;
outline: none;
}
.hssm-textarea {
min-height: 80px;
resize: vertical;
}
.hssm-image-preview-small {
width: 100%;
height: 120px; /* Smaller preview */
background-color: #eee;
border: 1px dashed #ccc;
border-radius: 4px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
margin-bottom: 10px;
background-size: cover;
background-position: center;
position: relative;
overflow: hidden;
}
.hssm-image-preview-small .hssm-placeholder {
color: #888;
font-size: 0.9em;
}
.hssm-image-preview-small img {
max-width: 100%;
max-height: 100%;
display: block;
object-fit: cover;
}
.hssm-image-controls {
display: flex;
gap: 8px;
margin-bottom: 15px;
}
.hssm-button-row-compact {
display: flex;
gap: 8px;
align-items: center;
margin-bottom: 8px;
}
.hssm-button-row-compact .hssm-input-small {
flex: 1;
padding: 6px 8px;
font-size: 0.85em;
}
.hssm-btn-tiny {
padding: 4px 8px;
font-size: 0.8em;
background-color: #dc3232;
color: #fff;
border: none;
border-radius: 3px;
cursor: pointer;
}
.hssm-btn-tiny:hover {
background-color: #b30000;
}
.hssm-checkboxes-compact label {
font-size: 0.9em;
color: #333;
margin-bottom: 5px;
}
.hssm-checkbox-compact input[type="checkbox"] {
margin-right: 5px;
}
.hssm-form-actions {
display: flex;
justify-content: flex-end;
gap: 10px;
margin-top: 20px;
padding-top: 15px;
border-top: 1px solid #eee;
}
/* Override some general plugin button styles for admin context if needed */
.hssm-btn-primary {
background-color: #007cba;
color: #fff;
border-color: #007cba;
}
.hssm-btn-primary:hover {
background-color: #006799;
border-color: #006799;
}
.hssm-btn-secondary {
background-color: #6c757d;
color: #fff;
border-color: #6c757d;
}
.hssm-btn-secondary:hover {
background-color: #5a6268;
border-color: #545b62;
}
.hssm-btn-success {
background-color: #28a745;
color: #fff;
border-color: #28a745;
}
.hssm-btn-success:hover {
background-color: #218838;
border-color: #1e7e34;
}
.hssm-btn-outline {
background-color: transparent;
color: #6c757d;
border: 1px solid #6c757d;
}
.hssm-btn-outline:hover {
background-color: #6c757d;
color: #fff;
}
.hssm-btn-large {
padding: 12px 25px;
font-size: 1em;
}
.hssm-btn-small {
padding: 6px 12px;
font-size: 0.85em;
}
.hssm-btn .dashicons {
vertical-align: middle;
margin-right: 5px;
}
/* Specific overrides for the slide preview elements that should look like dashboard items */
/* This applies to the list *below* the main slider preview on the slide preview page */
body.page-template-page-slide-preview .hssm-slides-list.hssm-mt-20 .hssm-slide-item {
flex-direction: row;
align-items: center;
gap: 20px;
padding: 15px;
margin-bottom: 10px;
background: #fdfdfd;
border: 1px solid #eee;
color: #333; /* Ensure general text is legible */
}
body.page-template-page-slide-preview .hssm-slides-list.hssm-mt-20 .hssm-slide-thumbnail {
width: 120px;
min-width: 120px;
height: 70px; /* Adjusted for smaller, list-like thumbnail */
padding-bottom: 0;
border-radius: 4px;
margin: 0;
}
body.page-template-page-slide-preview .hssm-slides-list.hssm-mt-20 .hssm-slide-info {
flex-grow: 1;
}
body.page-template-page-slide-preview .hssm-slides-list.hssm-mt-20 .hssm-slide-title {
font-size: 1.1em !important;
color: #23282d !important;
margin-bottom: 3px !important;
}
body.page-template-page-slide-preview .hssm-slides-list.hssm-mt-20 .hssm-slide-subtitle {
font-size: 0.9em;
color: #555d66;
margin-bottom: 5px;
}
body.page-template-page-slide-preview .hssm-slides-list.hssm-mt-20 .hssm-slide-meta {
font-size: 0.8em;
color: #72777c;
}
body.page-template-page-slide-preview .hssm-slides-list.hssm-mt-20 .hssm-slide-actions {
flex-direction: row;
flex-wrap: nowrap;
gap: 5px;
margin-top: 0;
}
body.page-template-page-slide-preview .hssm-slides-list.hssm-mt-20 .hssm-slide-item .hssm-slide-title {
background-color: #007cba;
color: #ffffff;
padding: 5px 10px;
border-radius: 4px;
display: inline-block;
}
body.page-template-page-slide-preview .hssm-slides-list.hssm-mt-20 .hssm-slide-item .hssm-slide-subtitle,
body.page-template-page-slide-preview .hssm-slides-list.hssm-mt-20 .hssm-slide-item .hssm-slide-meta {
background-color: #444;
color: #ffffff;
padding: 3px 8px;
border-radius: 3px;
display: inline-block;
margin-top: 5px;
}
body.page-template-page-slide-preview .hssm-slides-list.hssm-mt-20 .hssm-btn {
padding: 5px 10px;
font-size: 0.8em;
}
+75
View File
@@ -0,0 +1,75 @@
/**
* Hi-School Slide Manager - Admin Styles
*/
.hssm-admin-page {
max-width: 1200px;
margin: 20px 0;
}
.hssm-admin-header {
background: #fff;
border: 1px solid #ccd0d4;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
padding: 20px;
margin-bottom: 20px;
}
.hssm-admin-header h1 {
margin: 0;
color: #23282d;
}
.hssm-settings-form {
background: #fff;
border: 1px solid #ccd0d4;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
padding: 20px;
}
.hssm-form-group {
margin-bottom: 20px;
}
.hssm-form-group label {
display: block;
margin-bottom: 5px;
font-weight: 600;
color: #23282d;
}
.hssm-form-group input,
.hssm-form-group select,
.hssm-form-group textarea {
width: 100%;
max-width: 400px;
padding: 8px 12px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 14px;
}
.hssm-form-group textarea {
min-height: 100px;
resize: vertical;
}
.hssm-btn {
background: #0073aa;
color: #fff;
border: none;
padding: 10px 20px;
border-radius: 4px;
cursor: pointer;
font-size: 14px;
transition: background-color 0.3s ease;
}
.hssm-btn:hover {
background: #005a87;
}
.hssm-btn:focus {
outline: 2px solid #0073aa;
outline-offset: 2px;
}
File diff suppressed because it is too large Load Diff
+61
View File
@@ -0,0 +1,61 @@
/**
* Hi-School Slide Manager - Frontend Styles
*/
.hssm-slides-container {
display: flex;
flex-wrap: wrap;
gap: 20px;
margin: 20px 0;
}
.hssm-slide {
background: #fff;
border: 1px solid #ddd;
border-radius: 8px;
padding: 20px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
flex: 1;
min-width: 300px;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.hssm-slide:hover {
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}
.hssm-slide h3 {
margin: 0 0 15px 0;
color: #333;
font-size: 1.4em;
border-bottom: 2px solid #0073aa;
padding-bottom: 10px;
}
.hssm-slide-content {
margin-bottom: 15px;
line-height: 1.6;
color: #555;
}
.hssm-slide-image {
text-align: center;
}
.hssm-slide-image img {
max-width: 100%;
height: auto;
border-radius: 4px;
}
/* Responsive design */
@media (max-width: 768px) {
.hssm-slides-container {
flex-direction: column;
}
.hssm-slide {
min-width: auto;
}
}
+296
View File
@@ -0,0 +1,296 @@
/**
* HSSM Slider Styles
* Custom classes and styles based on client specifications
* Optimized for Classic Divi environments
*/
:root {
--hssm-ratio: 42.85714%; /* 900 / 2100 * 100 */
--hssm-red: #ff0000;
--hssm-bg-overlay: rgba(0, 0, 0, 0.3);
--hssm-shadow: 0.08em 0.08em 0px rgba(0, 0, 0, 0.6);
/* Default Sizes */
--hssm-title-size: 32px;
--hssm-subtitle-size: 20px;
--hssm-content-size: 18px;
--hssm-arrow-size: 50px;
}
/* Force 80% width container */
.hssm-slider-container {
position: relative !important;
width: 80% !important;
max-width: 1980px !important;
margin: 60px auto !important;
box-sizing: border-box !important;
padding: 0 !important;
}
.hssm-slider {
position: relative !important;
width: 100% !important;
}
.hssm-viewport {
position: relative !important;
overflow: hidden !important;
width: 100% !important;
border-radius: 20px !important;
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35) !important;
background: #000 !important;
}
.hssm-track {
display: flex !important;
transition: transform 0.6s cubic-bezier(0.45, 0.05, 0.55, 0.95) !important;
width: 100% !important;
padding: 0 !important;
margin: 0 !important;
}
.hssm-slide {
flex: 0 0 100% !important;
width: 100% !important;
min-width: 100% !important;
position: relative !important;
margin: 0 !important;
padding: 0 !important;
}
/* Aspect Ratio Maintainer - Very Aggressive */
.hssm-slide-inner {
position: relative !important;
width: 100% !important;
height: 0 !important;
padding-bottom: var(--hssm-ratio) !important;
background-size: cover !important;
background-position: center !important;
background-repeat: no-repeat !important;
overflow: hidden !important;
display: block !important;
}
/* Fallback for modern browsers */
@supports (aspect-ratio: 21 / 9) {
.hssm-slide-inner {
padding-bottom: 0 !important;
height: auto !important;
aspect-ratio: 2100 / 900 !important;
min-height: 300px !important; /* Safety min-height */
}
}
.hssm-slide-content-wrapper {
position: absolute !important;
top: 0 !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
display: flex !important;
flex-direction: column !important;
justify-content: center !important;
align-items: center !important;
padding: 40px 5% !important;
z-index: 5 !important;
}
.hssm-slide-content {
display: flex !important;
flex-direction: column !important;
align-items: center !important;
text-align: center !important;
width: 100% !important;
margin: 0 auto !important;
}
/* Spacing between rows */
.hssm-slide-content > * {
margin-bottom: 30px !important;
}
.hssm-slide-content > *:last-child {
margin-bottom: 0 !important;
}
/* Title Styles - 80% width */
.hssm-slide-title {
font-size: var(--hssm-title-size) !important;
color: #ffffff !important;
font-weight: 600 !important;
line-height: 1.3em !important;
letter-spacing: 1px !important;
max-width: 80% !important;
margin: 0 0 30px 0 !important;
}
.hssm-slide-title span {
background: var(--hssm-bg-overlay) !important;
padding: 5px 15px !important;
border-radius: 8px !important;
text-shadow: var(--hssm-shadow) !important;
display: inline-block !important;
}
/* Subtitle Styles - 80% width */
.hssm-slide-subtitle {
font-size: var(--hssm-subtitle-size) !important;
color: #ffffff !important;
font-weight: 600 !important;
line-height: 1em !important;
letter-spacing: 1px !important;
max-width: 80% !important;
margin: 0 0 30px 0 !important;
}
.hssm-slide-subtitle span {
background: var(--hssm-bg-overlay) !important;
padding: 5px 12px !important;
border-radius: 6px !important;
text-shadow: var(--hssm-shadow) !important;
display: inline-block !important;
}
/* Description / Content Styles - 50% width */
.hssm-slide-description {
font-size: var(--hssm-content-size) !important;
color: #ffffff !important;
font-weight: 500 !important;
line-height: 1.6em !important;
letter-spacing: 1px !important;
max-width: 50% !important;
margin: 0 0 30px 0 !important;
}
.hssm-slide-description span {
background: var(--hssm-bg-overlay) !important;
padding: 10px 20px !important;
border-radius: 8px !important;
text-shadow: var(--hssm-shadow) !important;
display: inline-block !important;
}
/* Button Container */
.hssm-button-container {
display: flex !important;
flex-wrap: wrap !important;
gap: 15px !important;
justify-content: center !important;
}
.hssm-button {
background: var(--hssm-red) !important;
color: #ffffff !important;
font-size: 16px !important;
font-weight: 600 !important;
padding: 12px 25px !important;
border-radius: 8px !important;
text-decoration: none !important;
transition: transform 0.2s ease, background 0.2s ease !important;
text-transform: uppercase !important;
display: inline-block !important;
border: none !important;
box-shadow: 0 4px 10px rgba(0,0,0,0.2) !important;
}
.hssm-button:hover {
transform: scale(1.05) !important;
background: #e60000 !important;
}
/* Arrows */
.hssm-arrow {
position: absolute !important;
top: 50% !important;
transform: translateY(-50%) !important;
width: var(--hssm-arrow-size) !important;
height: var(--hssm-arrow-size) !important;
background: var(--hssm-red) !important;
border: none !important;
border-radius: 50% !important;
color: white !important;
cursor: pointer !important;
z-index: 10 !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.4) !important;
transition: all 0.3s ease !important;
padding: 0 !important;
}
.hssm-arrow:hover {
background: #d00000 !important;
transform: translateY(-50%) scale(1.1) !important;
}
.hssm-arrow-prev { left: -25px !important; }
.hssm-arrow-next { right: -25px !important; }
.hssm-arrow-icon {
display: block !important;
width: 14px !important;
height: 14px !important;
border-top: 4px solid white !important;
border-right: 4px solid white !important;
}
.hssm-arrow-prev .hssm-arrow-icon {
transform: rotate(-135deg) !important;
margin-left: 6px !important;
}
.hssm-arrow-next .hssm-arrow-icon {
transform: rotate(45deg) !important;
margin-right: 4px !important;
}
/* Responsive */
/* X-Large Screen Breakpoint: 1921px and up */
@media (min-width: 1921px) {
:root {
--hssm-title-size: 35.2px;
--hssm-subtitle-size: 22px;
--hssm-content-size: 19.8px;
}
}
@media (max-width: 1400px) {
.hssm-slider-container { width: 90% !important; }
.hssm-slide-description { max-width: 70% !important; }
}
@media (max-width: 980px) {
:root {
--hssm-arrow-size: 44px;
}
.hssm-slider-container { width: 92% !important; margin: 40px auto !important; }
.hssm-slide-description { max-width: 85% !important; }
.hssm-arrow-prev { left: -22px !important; }
.hssm-arrow-next { right: -22px !important; }
}
@media (max-width: 768px) {
.hssm-slider-container { width: 95% !important; margin: 30px auto !important; }
.hssm-viewport { border-radius: 12px !important; }
.hssm-slide-description { max-width: 95% !important; }
.hssm-slide-title, .hssm-slide-subtitle { max-width: 95% !important; }
.hssm-arrow { width: 40px !important; height: 40px !important; }
.hssm-arrow-prev { left: -15px !important; }
.hssm-arrow-next { right: -15px !important; }
:root {
--hssm-title-size: 24px;
--hssm-subtitle-size: 16px;
--hssm-content-size: 14px;
}
}
@media (max-width: 480px) {
.hssm-slider-container { width: 100% !important; border-radius: 0 !important; margin: 20px 0 !important; }
.hssm-viewport { border-radius: 0 !important; }
.hssm-arrow { width: 32px !important; height: 32px !important; }
.hssm-arrow-prev { left: 5px !important; }
.hssm-arrow-next { right: 5px !important; }
}