's Dashboard
++ +
+diff --git a/assets/css/custom.css b/assets/css/custom.css new file mode 100644 index 0000000..0a8d757 --- /dev/null +++ b/assets/css/custom.css @@ -0,0 +1,194 @@ +body { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + background-color: #F8F9FA; + color: #343A40; +} + +.hero { + background: linear-gradient(45deg, #007BFF, #0056b3); + color: white; + padding: 100px 0; + text-align: center; +} + +.hero h1 { + font-family: Georgia, 'Times New Roman', Times, serif; + font-size: 3.5rem; + font-weight: bold; +} + +.features { + padding: 80px 0; +} + +.feature-icon { + font-size: 3rem; + color: #007BFF; +} + +#invite-form-section { + padding: 80px 0; + background-color: #FFFFFF; +} + +.toast-container { + position: fixed; + top: 20px; + right: 20px; + z-index: 1050; +} + +/* Dashboard Styles */ +.dashboard-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 16px 32px; + background-color: #FFFFFF; + border-bottom: 1px solid #DEE2E6; +} + +.dashboard-header .logo a { + font-family: Georgia, 'Times New Roman', Times, serif; + font-size: 1.5rem; + font-weight: bold; + color: #007BFF; + text-decoration: none; +} + +.dashboard-nav a { + margin-left: 24px; + text-decoration: none; + color: #6C757D; + font-weight: 500; +} + +.dashboard-nav a.active { + color: #007BFF; +} + +.logout-btn { + border: 1px solid #007BFF; + padding: 8px 16px; + border-radius: 4px; + color: #007BFF; +} + +.logout-btn:hover { + background-color: #007BFF; + color: #FFFFFF; +} + +.dashboard-main { + padding: 32px; +} + +.dashboard-title { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 32px; +} + +.dashboard-title h1 { + font-family: Georgia, 'Times New Roman', Times, serif; + font-size: 2.5rem; +} + +.date-range-picker { + display: flex; + align-items: center; + border: 1px solid #DEE2E6; + padding: 8px 12px; + border-radius: 4px; + background-color: #FFFFFF; +} + +.date-range-picker input { + border: none; + outline: none; + font-size: 1rem; + color: #6C757D; +} + +.date-range-picker svg { + margin-left: 8px; +} + +.metrics-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: 24px; + margin-bottom: 32px; +} + +.metric-card { + background-color: #FFFFFF; + padding: 24px; + border-radius: 8px; + border: 1px solid #DEE2E6; +} + +.metric-title { + font-size: 1rem; + color: #6C757D; + margin-bottom: 8px; +} + +.metric-value { + font-size: 2rem; + font-weight: bold; + margin-bottom: 8px; +} + +.metric-change { + font-size: 1rem; +} + +.metric-change.positive { + color: #28A745; +} + +.metric-change.negative { + color: #DC3545; +} + +.chart-section { + background-color: #FFFFFF; + padding: 24px; + border-radius: 8px; + border: 1px solid #DEE2E6; +} + +.chart-title { + font-size: 1.25rem; + font-weight: bold; + margin-bottom: 24px; +} + +.chart { + display: flex; + justify-content: space-around; + align-items: flex-end; + height: 300px; +} + +.chart-bar-wrapper { + display: flex; + flex-direction: column; + align-items: center; + flex-grow: 1; +} + +.chart-bar { + width: 70%; + background: linear-gradient(to top, #007BFF, #0056b3); + border-radius: 4px 4px 0 0; + transition: height 0.5s ease-in-out; +} + +.chart-label { + margin-top: 8px; + font-size: 0.875rem; + color: #6C757D; +} diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..d9eeb9e --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,62 @@ +document.addEventListener('DOMContentLoaded', function () { + const inviteForm = document.getElementById('invite-form'); + if (inviteForm) { + inviteForm.addEventListener('submit', function (e) { + e.preventDefault(); + const email = document.getElementById('email').value; + const formData = new FormData(); + formData.append('email', email); + + fetch('request_invite.php', { + method: 'POST', + body: formData + }) + .then(response => response.json()) + .then(data => { + showToast(data.message, data.success ? 'success' : 'error'); + if (data.success) { + inviteForm.reset(); + } + }) + .catch(error => { + showToast('An unexpected error occurred.', 'error'); + console.error('Error:', error); + }); + }); + } + + function showToast(message, type) { + const toastContainer = document.getElementById('toast-container'); + if (!toastContainer) return; + + const toast = document.createElement('div'); + toast.className = `toast align-items-center text-white bg-${type === 'success' ? 'success' : 'danger'} border-0 show`; + toast.setAttribute('role', 'alert'); + toast.setAttribute('aria-live', 'assertive'); + toast.setAttribute('aria-atomic', 'true'); + + const toastBody = document.createElement('div'); + toastBody.className = 'd-flex'; + toastBody.innerHTML = `
+ +
+= ($_SERVER['HTTP_HOST'] ?? '') === 'appwizzy.com' ? 'AppWizzy' : 'Flatlogic' ?> AI is collecting your requirements and applying the first changes.
-This page will update automatically as the plan is implemented.
-Runtime: PHP = htmlspecialchars($phpVersion) ?> — UTC = htmlspecialchars($now) ?>
Save time, track performance, and create custom, branded reports with ease.
+ Get Started +Connect all your marketing channels and see your data in one place.
+Create beautiful, custom reports and schedule them to send automatically.
+White-label the platform with your own logo and branding.
+Get exclusive access to the platform.
+ +