Plugin packaging and docs

This commit is contained in:
IGNY8 VPS (Salman)
2026-01-09 22:45:30 +00:00
parent 80f1709a2e
commit 4343f62140
63 changed files with 1369 additions and 223 deletions

View File

@@ -0,0 +1,847 @@
/**
* Admin Styles - IGNY8 Bridge
* Updated with IGNY8 brand colors and modern UI
*
* @package Igny8Bridge
*/
/* ============================================
IGNY8 Brand Colors
============================================ */
:root {
--igny8-primary: #3B82F6;
--igny8-primary-hover: #2563EB;
--igny8-success: #10B981;
--igny8-warning: #F59E0B;
--igny8-error: #EF4444;
--igny8-purple: #8B5CF6;
--igny8-gray: #6B7280;
--igny8-light-gray: #F3F4F6;
}
/* ============================================
Container & Layout
============================================ */
.igny8-settings-container {
width: 95%;
margin: 0 auto;
max-width: none;
box-sizing: border-box;
}
/* On somewhat smaller screens cap at 1200px */
@media (max-width: 1440px) {
.igny8-settings-container {
width: 1200px;
max-width: 100%;
}
}
/* Very small screens: use full width with side padding */
@media (max-width: 1200px) {
.igny8-settings-container {
width: 100%;
padding: 0 16px;
}
}
/* Page header */
.igny8-page-header {
height: 100px;
display: flex;
align-items: center;
border-radius: 8px;
margin: 12px 0 24px 0;
}
.igny8-page-header h1 {
margin: 0;
font-size: 20px;
font-weight: 700;
color: #111827;
}
.igny8-module-title h2 {
margin: 0;
font-size: 18px;
font-weight: 700;
color: #0f172a;
}
/* Ensure top cards equal height */
.igny8-top-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
align-items: stretch;
margin-bottom: 32px;
}
.igny8-top-grid > .igny8-settings-card {
display: flex;
flex-direction: column;
justify-content: flex-start;
height: 100%;
}
/* Make communication primary buttons match API connection buttons */
.igny8-settings-card .button-primary,
.igny8-connection-actions .button-primary {
background: var(--igny8-primary) !important;
border-color: var(--igny8-primary) !important;
color: #fff !important;
border-radius: 8px !important;
padding: 10px 18px !important;
box-shadow: 0 6px 12px rgba(59,130,246,0.08);
}
/* Automation settings UI improvements */
.automation-block label,
.automation-block .description,
.automation-block h3 {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial;
}
.automation-block label {
display: flex;
align-items: center;
gap: 10px;
color: #111827;
font-size: 14px;
line-height: 1.7;
margin-bottom: 6px;
}
.automation-block input[type="checkbox"] {
width: 18px;
height: 18px;
accent-color: var(--igny8-primary);
}
/* Taxonomies list split into two columns inside right automation column */
.taxonomy-list {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 6px 18px;
align-items: start;
}
.taxonomy-item {
display: flex;
align-items: center;
gap: 8px;
font-size: 14px;
color: #111827;
}
.taxonomy-slug {
color: #6B7280;
font-size: 12px;
margin-left: 6px;
}
/* Module header gradient (left-to-right) */
.igny8-module-title {
background: linear-gradient(90deg, #9810fa 0%, #0693e3 100%);
border-radius: 10px;
padding: 22px 26px;
color: #fff;
margin-bottom: 18px;
box-shadow: 0 6px 18px rgba(9,10,33,0.06);
}
.igny8-module-title h2 {
color: #fff;
font-size: 20px;
margin: 0;
font-weight: 700;
}
.igny8-module-title p {
margin: 6px 0 0 0;
color: rgba(255,255,255,0.9);
font-size: 14px;
}
/* Prevent top-grid cards from visually bleeding into the next panels */
.igny8-top-grid + .igny8-settings-card,
.igny8-top-grid + .automation-block {
margin-top: 32px;
}
/* Connection status single-row layout */
.igny8-connection-status-display {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px;
background: linear-gradient(135deg, #F9FAFB 0%, #F3F4F6 100%);
border: 1px solid #E5E7EB;
border-radius: 12px;
margin-bottom: 20px;
}
.igny8-connection-status-display .igny8-status-label {
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.05em;
color: #6B7280;
margin: 0;
font-weight: 600;
}
.igny8-connection-status-display .igny8-status-value {
font-size: 18px;
font-weight: 700;
color: #111827;
display: flex;
align-items: center;
gap: 10px;
}
.igny8-connection-status-display .igny8-status-value span {
margin: 0;
}
@media (max-width: 900px) {
.igny8-connection-status-display {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}
.igny8-module-title {
padding: 16px;
}
}
/* Top two-column layout for API Connection / Communication */
.igny8-top-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24px;
align-items: start;
margin-bottom: 32px; /* ensure separation from subsequent sections */
}
@media (max-width: 900px) {
.igny8-top-grid {
grid-template-columns: 1fr;
}
}
/* Automation settings split into two columns */
.igny8-automation-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
align-items: start;
}
.igny8-top-grid > .igny8-settings-card {
margin: 0; /* grid handles spacing */
position: relative;
z-index: 1; /* prevent visual stacking/bleeding */
min-height: 160px; /* ensure cards don't collapse and overlap following content */
box-sizing: border-box;
}
.igny8-settings-card {
position: relative; /* ensure proper stacking context */
z-index: 0;
}
.automation-column-left,
.automation-column-right {
background: transparent;
}
@media (max-width: 900px) {
.igny8-automation-grid {
grid-template-columns: 1fr;
}
}
.igny8-settings-card {
background: #fff;
border: 1px solid #E5E7EB;
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
padding: 24px;
margin: 24px 0;
border-radius: 8px;
}
.igny8-settings-card h2 {
margin-top: 0;
padding-bottom: 12px;
border-bottom: 2px solid var(--igny8-light-gray);
color: #111827;
font-size: 20px;
font-weight: 600;
}
/* ============================================
Toggle Switch
============================================ */
.igny8-toggle-wrapper {
display: flex;
align-items: center;
gap: 12px;
}
.igny8-toggle-input {
position: relative;
width: 48px;
height: 24px;
-webkit-appearance: none;
appearance: none;
background: var(--igny8-gray);
outline: none;
border-radius: 24px;
cursor: pointer;
transition: 0.3s;
}
.igny8-toggle-input:checked {
background: var(--igny8-success);
}
.igny8-toggle-input::before {
content: '';
position: absolute;
width: 20px;
height: 20px;
border-radius: 50%;
top: 2px;
left: 2px;
background: #fff;
transition: 0.3s;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
.igny8-toggle-input:checked::before {
left: 26px;
}
/* ============================================
Sync Operations Grid
============================================ */
.igny8-sync-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 20px;
margin-top: 20px;
}
.igny8-sync-card {
background: #fff;
border: 2px solid #E5E7EB;
border-radius: 12px;
padding: 24px;
transition: all 0.3s ease;
}
.igny8-sync-card:hover {
border-color: var(--igny8-primary);
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
transform: translateY(-2px);
}
.igny8-sync-card-highlight {
border-color: var(--igny8-primary);
background: linear-gradient(135deg, #EFF6FF 0%, #DBEAFE 100%);
}
.igny8-sync-icon {
width: 48px;
height: 48px;
background: var(--igny8-primary);
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 16px;
color: white;
}
.igny8-sync-card h3 {
margin: 0 0 8px 0;
font-size: 16px;
font-weight: 600;
color: #111827;
}
.igny8-sync-description {
font-size: 14px;
color: #6B7280;
line-height: 1.5;
margin-bottom: 12px;
}
.igny8-sync-meta {
font-size: 12px;
color: #9CA3AF;
margin-bottom: 16px;
}
.igny8-sync-time {
display: inline-flex;
align-items: center;
gap: 4px;
}
.igny8-sync-button {
width: 100%;
height: 40px;
background: var(--igny8-primary) !important;
border-color: var(--igny8-primary) !important;
color: white !important;
font-weight: 500 !important;
border-radius: 8px !important;
transition: all 0.2s ease !important;
}
.igny8-sync-button:hover:not(:disabled) {
background: var(--igny8-primary-hover) !important;
border-color: var(--igny8-primary-hover) !important;
transform: translateY(-1px);
box-shadow: 0 4px 6px -1px rgba(59, 130, 246, 0.3);
}
.igny8-sync-button:disabled {
opacity: 0.5 !important;
cursor: not-allowed !important;
}
.button-loading {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
}
/* ============================================
Statistics Cards
============================================ */
.igny8-stats-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
margin-top: 20px;
}
.igny8-stat-card {
background: linear-gradient(135deg, #ffffff 0%, #f9fafb 100%);
border: 1px solid #E5E7EB;
border-radius: 12px;
padding: 20px;
display: flex;
align-items: flex-start;
gap: 16px;
transition: all 0.3s ease;
}
.igny8-stat-card:hover {
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
transform: translateY(-2px);
}
.igny8-stat-icon {
width: 48px;
height: 48px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.igny8-stat-content {
flex: 1;
}
.igny8-stat-label {
font-size: 12px;
color: #6B7280;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 4px;
font-weight: 500;
}
.igny8-stat-value {
font-size: 28px;
font-weight: 700;
color: #111827;
line-height: 1.2;
margin-bottom: 4px;
}
.igny8-stat-meta {
font-size: 12px;
color: #9CA3AF;
}
/* ============================================
Semantic Summary
============================================ */
.igny8-semantic-summary {
margin-top: 24px;
padding: 20px;
background: linear-gradient(135deg, #F3E8FF 0%, #E9D5FF 100%);
border-radius: 12px;
border: 1px solid #D8B4FE;
}
.igny8-semantic-summary h3 {
margin: 0 0 16px 0;
font-size: 16px;
font-weight: 600;
color: #6B21A8;
}
.igny8-semantic-stats {
display: flex;
gap: 32px;
flex-wrap: wrap;
}
.igny8-semantic-stat {
display: flex;
flex-direction: column;
gap: 4px;
}
.igny8-semantic-stat .value {
font-size: 24px;
font-weight: 700;
color: #7C3AED;
}
.igny8-semantic-stat .label {
font-size: 12px;
color: #8B5CF6;
text-transform: uppercase;
letter-spacing: 0.05em;
}
/* ============================================
Status Indicators
============================================ */
.igny8-status-connected {
color: var(--igny8-success);
font-weight: 600;
}
.igny8-status-disconnected {
color: var(--igny8-error);
font-weight: 600;
}
/* ============================================
API Connection Form
============================================ */
.igny8-api-connection-form {
background: linear-gradient(135deg, #ffffff 0%, #f9fafb 100%);
border: 2px solid #E5E7EB;
border-radius: 12px;
padding: 32px;
margin: 0 0 24px 0;
}
.igny8-api-form-group {
margin-bottom: 20px;
}
.igny8-api-form-group label {
display: block;
margin-bottom: 8px;
font-weight: 600;
color: #111827;
font-size: 14px;
}
.igny8-api-form-group input[type="text"],
.igny8-api-form-group input[type="password"] {
width: 100%;
padding: 12px 14px;
border: 1px solid #D1D5DB;
border-radius: 8px;
font-size: 14px;
transition: all 0.2s ease;
font-family: 'Courier New', monospace;
background-color: #fff;
}
.igny8-api-form-group input[type="text"]:focus,
.igny8-api-form-group input[type="password"]:focus {
outline: none;
border-color: var(--igny8-primary);
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}
.igny8-api-form-group input[type="text"]:disabled {
background-color: #F3F4F6;
color: #9CA3AF;
cursor: not-allowed;
}
.igny8-api-form-description {
font-size: 13px;
color: #6B7280;
margin-top: 6px;
line-height: 1.5;
}
.igny8-api-form-description a {
color: var(--igny8-primary);
text-decoration: none;
font-weight: 500;
}
.igny8-api-form-description a:hover {
text-decoration: underline;
}
.igny8-connection-actions {
display: flex;
gap: 12px;
flex-wrap: wrap;
margin-top: 24px;
}
.igny8-connection-actions .button {
border-radius: 8px;
padding: 10px 20px;
font-weight: 500;
border: none;
cursor: pointer;
transition: all 0.2s ease;
height: auto;
}
.igny8-connection-actions .button-primary {
background: var(--igny8-primary) !important;
color: white !important;
}
.igny8-connection-actions .button-primary:hover {
background: var(--igny8-primary-hover) !important;
transform: translateY(-1px);
box-shadow: 0 4px 6px -1px rgba(59, 130, 246, 0.3);
}
.igny8-connection-actions .button-secondary {
background: #E5E7EB !important;
color: #111827 !important;
}
.igny8-connection-actions .button-secondary:hover {
background: #D1D5DB !important;
}
.igny8-connection-status-display {
padding: 20px;
background: linear-gradient(135deg, #F9FAFB 0%, #F3F4F6 100%);
border: 1px solid #E5E7EB;
border-radius: 12px;
margin-bottom: 20px;
}
.igny8-connection-status-display .igny8-status-label {
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.05em;
color: #6B7280;
margin-bottom: 8px;
font-weight: 500;
}
.igny8-connection-status-display .igny8-status-value {
font-size: 20px;
font-weight: 700;
display: flex;
align-items: center;
gap: 8px;
}
.igny8-status-indicator {
width: 12px;
height: 12px;
border-radius: 50%;
display: inline-block;
}
.igny8-status-indicator.connected {
background-color: var(--igny8-success);
}
.igny8-status-indicator.disconnected {
background-color: var(--igny8-gray);
}
.igny8-api-key-display {
display: flex;
align-items: center;
gap: 12px;
padding: 12px;
background-color: #F3F4F6;
border-radius: 8px;
word-break: break-all;
}
.igny8-api-key-mask {
font-family: 'Courier New', monospace;
color: #6B7280;
font-size: 14px;
}
/* ============================================
Diagnostics
============================================ */
.igny8-diagnostics-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 16px;
margin-top: 20px;
}
.igny8-diagnostic-item {
padding: 16px;
background: linear-gradient(135deg, #F9FAFB 0%, #F3F4F6 100%);
border: 1px solid #E5E7EB;
border-radius: 8px;
transition: all 0.2s ease;
}
.igny8-diagnostic-item:hover {
border-color: var(--igny8-primary);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
.igny8-diagnostic-label {
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.05em;
color: #6B7280;
margin-bottom: 8px;
font-weight: 500;
}
.igny8-diagnostic-value {
font-size: 16px;
font-weight: 600;
color: #111827;
}
.igny8-diagnostic-item .description {
margin: 6px 0 0;
color: #9CA3AF;
font-size: 12px;
}
/* ============================================
Sync Status Messages
============================================ */
.igny8-sync-status {
margin-top: 20px;
padding: 16px;
border-radius: 8px;
display: none;
font-size: 14px;
}
.igny8-sync-status.igny8-sync-status-success {
background-color: #D1FAE5;
border: 1px solid #6EE7B7;
color: #065F46;
display: block;
}
.igny8-sync-status.igny8-sync-status-error {
background-color: #FEE2E2;
border: 1px solid #FCA5A5;
color: #991B1B;
display: block;
}
.igny8-sync-status.igny8-sync-status-loading {
background-color: #DBEAFE;
border: 1px solid #93C5FD;
color: #1E40AF;
display: block;
}
/* ============================================
Loading States
============================================ */
.igny8-loading {
opacity: 0.6;
pointer-events: none;
}
@keyframes igny8-spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* ============================================
Messages & Notifications
============================================ */
.igny8-message {
padding: 16px;
margin: 15px 0;
border-left: 4px solid;
background: #fff;
border-radius: 4px;
}
.igny8-message.igny8-message-success {
border-color: var(--igny8-success);
background-color: #F0FDF4;
color: #065F46;
}
.igny8-message.igny8-message-error {
border-color: var(--igny8-error);
background-color: #FEF2F2;
color: #991B1B;
}
.igny8-message.igny8-message-info {
border-color: var(--igny8-primary);
background-color: #EFF6FF;
color: #1E40AF;
}
.igny8-message.igny8-message-warning {
border-color: var(--igny8-warning);
background-color: #FFFBEB;
color: #92400E;
}
/* ============================================
Responsive
============================================ */
@media (max-width: 782px) {
.igny8-sync-grid {
grid-template-columns: 1fr;
}
.igny8-stats-grid {
grid-template-columns: 1fr;
}
.igny8-diagnostics-grid {
grid-template-columns: 1fr;
}
}
@media (max-width: 600px) {
.igny8-settings-card {
padding: 16px;
}
.igny8-sync-card {
padding: 16px;
}
.igny8-stat-card {
flex-direction: column;
}
}