diff --git a/concept-modern/package.json b/concept-modern/package.json
index 6672a0d..1138b5f 100644
--- a/concept-modern/package.json
+++ b/concept-modern/package.json
@@ -34,6 +34,7 @@
"daterangepicker": "^3.1.0",
"moment": "^2.30.1",
"sortablejs": "^1.15.6",
- "tom-select": "^2.4.3"
+ "tom-select": "^2.4.3",
+ "quill": "^2.0.2"
}
}
diff --git a/concept-modern/src/config/navigation.js b/concept-modern/src/config/navigation.js
index 8c589c9..49e6afd 100644
--- a/concept-modern/src/config/navigation.js
+++ b/concept-modern/src/config/navigation.js
@@ -55,14 +55,34 @@ export const navigation = [
divider: true,
label: 'Features'
},
+ {
+ id: 'ecommerce',
+ label: 'E-Commerce',
+ icon: 'fa-shopping-cart',
+ submenu: [
+ { id: 'products', label: 'Products', href: '/pages/ecommerce/products.html' },
+ { id: 'product-single', label: 'Product Details', href: '/pages/ecommerce/product-single.html' },
+ { id: 'checkout', label: 'Checkout', href: '/pages/ecommerce/checkout.html' }
+ ]
+ },
+ {
+ id: 'influencer',
+ label: 'Influencer',
+ icon: 'fa-users',
+ submenu: [
+ { id: 'influencer-finder', label: 'Influencer Finder', href: '/pages/apps/influencer-finder.html' },
+ { id: 'influencer-profile', label: 'Influencer Profile', href: '/pages/apps/influencer-profile.html' }
+ ]
+ },
{
id: 'pages',
label: 'Pages',
icon: 'fa-file',
submenu: [
{ id: 'blank-page', label: 'Blank Page', href: '/pages/misc/blank-page.html' },
- { id: 'login', label: 'Login', href: '/pages/misc/login.html' },
- { id: 'signup', label: 'Sign Up', href: '/pages/misc/signup.html' },
+ { id: 'login', label: 'Login', href: '/pages/auth/login.html' },
+ { id: 'signup', label: 'Sign Up', href: '/pages/auth/signup.html' },
+ { id: 'forgot-password', label: 'Forgot Password', href: '/pages/auth/forgot-password.html' },
{ id: '404', label: '404 page', href: '/pages/misc/404.html' }
]
},
@@ -73,8 +93,17 @@ export const navigation = [
badge: { text: 'New', color: 'danger' },
submenu: [
{ id: 'calendar', label: 'Calendar', href: '/pages/calendar.html' },
- { id: 'chat', label: 'Chat', href: '/pages/chat.html' },
- { id: 'inbox', label: 'Mail', href: '/pages/inbox.html' }
+ { id: 'chat', label: 'Chat', href: '/pages/chat.html' }
+ ]
+ },
+ {
+ id: 'email',
+ label: 'Email',
+ icon: 'fa-envelope',
+ submenu: [
+ { id: 'inbox', label: 'Inbox', href: '/pages/email/inbox.html' },
+ { id: 'compose', label: 'Compose', href: '/pages/email/compose.html' },
+ { id: 'details', label: 'Email Details', href: '/pages/email/details.html' }
]
}
];
diff --git a/concept-modern/src/js/pages/compose.js b/concept-modern/src/js/pages/compose.js
new file mode 100644
index 0000000..8627d50
--- /dev/null
+++ b/concept-modern/src/js/pages/compose.js
@@ -0,0 +1,179 @@
+// Email Compose Page functionality
+import Quill from 'quill';
+import 'quill/dist/quill.snow.css';
+
+export function initializeCompose() {
+ // Initialize Quill editor for email body
+ const editor = new Quill('#emailEditor', {
+ theme: 'snow',
+ placeholder: 'Write your message here...',
+ modules: {
+ toolbar: [
+ ['bold', 'italic', 'underline', 'strike'],
+ ['blockquote', 'code-block'],
+ [{ 'header': 1 }, { 'header': 2 }],
+ [{ 'list': 'ordered'}, { 'list': 'bullet' }],
+ [{ 'script': 'sub'}, { 'script': 'super' }],
+ [{ 'indent': '-1'}, { 'indent': '+1' }],
+ [{ 'direction': 'rtl' }],
+ [{ 'size': ['small', false, 'large', 'huge'] }],
+ [{ 'header': [1, 2, 3, 4, 5, 6, false] }],
+ [{ 'color': [] }, { 'background': [] }],
+ [{ 'font': [] }],
+ [{ 'align': [] }],
+ ['clean'],
+ ['link', 'image', 'video']
+ ]
+ }
+ });
+
+ // Handle file attachments
+ const fileInput = document.getElementById('fileAttachment');
+ const attachmentArea = document.querySelector('.attachment-area');
+
+ if (fileInput && attachmentArea) {
+ // File input change
+ fileInput.addEventListener('change', handleFileSelect);
+
+ // Drag and drop
+ attachmentArea.addEventListener('dragover', (e) => {
+ e.preventDefault();
+ attachmentArea.classList.add('drag-over');
+ });
+
+ attachmentArea.addEventListener('dragleave', () => {
+ attachmentArea.classList.remove('drag-over');
+ });
+
+ attachmentArea.addEventListener('drop', (e) => {
+ e.preventDefault();
+ attachmentArea.classList.remove('drag-over');
+ handleFiles(e.dataTransfer.files);
+ });
+ }
+
+ // Handle form submission
+ const composeForm = document.getElementById('composeForm');
+ if (composeForm) {
+ composeForm.addEventListener('submit', (e) => {
+ e.preventDefault();
+ handleSendEmail();
+ });
+ }
+
+ // Handle discard button
+ const discardBtn = document.querySelector('button[type="button"]:has(.fa-trash)');
+ if (discardBtn) {
+ discardBtn.addEventListener('click', handleDiscard);
+ }
+
+ // Handle save draft
+ const saveDraftBtn = document.querySelector('button[type="button"]:has(.fa-save)');
+ if (saveDraftBtn) {
+ saveDraftBtn.addEventListener('click', handleSaveDraft);
+ }
+}
+
+function handleFileSelect(e) {
+ handleFiles(e.target.files);
+}
+
+function handleFiles(files) {
+ console.log('Files attached:', files);
+ // In a real app, would handle file upload and display
+
+ // Show notification
+ showNotification(`${files.length} file(s) attached successfully`, 'success');
+}
+
+function handleSendEmail() {
+ const to = document.getElementById('toEmail').value;
+ const cc = document.getElementById('ccEmail').value;
+ const bcc = document.getElementById('bccEmail').value;
+ const subject = document.getElementById('emailSubject').value;
+
+ if (!to) {
+ showNotification('Please enter at least one recipient', 'error');
+ return;
+ }
+
+ if (!subject) {
+ showNotification('Please enter a subject', 'error');
+ return;
+ }
+
+ // In a real app, would send the email
+ console.log('Sending email...', { to, cc, bcc, subject });
+ showNotification('Email sent successfully!', 'success');
+
+ // Redirect to inbox after delay
+ setTimeout(() => {
+ window.location.href = '/pages/email/inbox.html';
+ }, 1500);
+}
+
+function handleDiscard() {
+ if (confirm('Are you sure you want to discard this email?')) {
+ window.location.href = '/pages/email/inbox.html';
+ }
+}
+
+function handleSaveDraft() {
+ // In a real app, would save the draft
+ showNotification('Draft saved successfully', 'success');
+}
+
+function showNotification(message, type = 'info') {
+ const alertClass = type === 'error' ? 'alert-danger' :
+ type === 'success' ? 'alert-success' : 'alert-info';
+
+ const alert = document.createElement('div');
+ alert.className = `alert ${alertClass} alert-dismissible fade show position-fixed top-0 end-0 m-3`;
+ alert.style.zIndex = '1050';
+ alert.innerHTML = `
+ ${message}
+
+ `;
+
+ document.body.appendChild(alert);
+
+ setTimeout(() => {
+ alert.remove();
+ }, 5000);
+}
+
+// Add drag-over styles
+const style = document.createElement('style');
+style.textContent = `
+ .attachment-area.drag-over {
+ background-color: #e9ecef;
+ border-color: #5969ff;
+ border-style: dashed;
+ }
+
+ .attachment-area.drag-over * {
+ pointer-events: none;
+ }
+
+ #emailEditor {
+ min-height: 300px;
+ }
+
+ .ql-toolbar {
+ border-top-left-radius: 0.375rem;
+ border-top-right-radius: 0.375rem;
+ }
+
+ .ql-container {
+ border-bottom-left-radius: 0.375rem;
+ border-bottom-right-radius: 0.375rem;
+ }
+`;
+document.head.appendChild(style);
+
+// Initialize on DOM ready
+if (document.readyState === 'loading') {
+ document.addEventListener('DOMContentLoaded', initializeCompose);
+} else {
+ initializeCompose();
+}
\ No newline at end of file
diff --git a/concept-modern/src/js/pages/email-details.js b/concept-modern/src/js/pages/email-details.js
new file mode 100644
index 0000000..4bd6e45
--- /dev/null
+++ b/concept-modern/src/js/pages/email-details.js
@@ -0,0 +1,218 @@
+// Email Details Page functionality
+import * as bootstrap from 'bootstrap';
+
+export function initializeEmailDetails() {
+ // Initialize tooltips
+ const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
+ tooltipTriggerList.map(function (tooltipTriggerEl) {
+ return new bootstrap.Tooltip(tooltipTriggerEl);
+ });
+
+ // Handle email actions
+ const emailActions = {
+ reply: document.querySelector('button[title="Reply"]'),
+ replyAll: document.querySelector('button[title="Reply All"]'),
+ forward: document.querySelector('button[title="Forward"]'),
+ star: document.querySelector('button[title="Star"]'),
+ delete: document.querySelector('button[title="Delete"]')
+ };
+
+ // Reply button
+ if (emailActions.reply) {
+ emailActions.reply.addEventListener('click', () => {
+ scrollToReply();
+ focusReplyTextarea();
+ });
+ }
+
+ // Reply All button
+ if (emailActions.replyAll) {
+ emailActions.replyAll.addEventListener('click', () => {
+ scrollToReply();
+ focusReplyTextarea();
+ // In real app, would populate CC field with all recipients
+ });
+ }
+
+ // Forward button
+ if (emailActions.forward) {
+ emailActions.forward.addEventListener('click', () => {
+ window.location.href = '/pages/email/compose.html?action=forward';
+ });
+ }
+
+ // Star button
+ if (emailActions.star) {
+ emailActions.star.addEventListener('click', function() {
+ const icon = this.querySelector('i');
+ if (icon.classList.contains('far')) {
+ icon.classList.remove('far');
+ icon.classList.add('fas', 'text-warning');
+ showNotification('Email starred', 'success');
+ } else {
+ icon.classList.remove('fas', 'text-warning');
+ icon.classList.add('far');
+ showNotification('Star removed', 'info');
+ }
+ });
+ }
+
+ // Delete button
+ if (emailActions.delete) {
+ emailActions.delete.addEventListener('click', () => {
+ if (confirm('Are you sure you want to delete this email?')) {
+ showNotification('Email deleted', 'success');
+ setTimeout(() => {
+ window.location.href = '/pages/email/inbox.html';
+ }, 1000);
+ }
+ });
+ }
+
+ // Handle reply form
+ const replyForm = document.getElementById('replyForm');
+ if (replyForm) {
+ replyForm.addEventListener('submit', (e) => {
+ e.preventDefault();
+ handleReplySubmit();
+ });
+ }
+
+ // Handle attachment downloads
+ document.querySelectorAll('.attachment-item button').forEach(btn => {
+ btn.addEventListener('click', function() {
+ const fileName = this.closest('.attachment-item').querySelector('h6').textContent;
+ showNotification(`Downloading ${fileName}...`, 'info');
+ // In real app, would trigger actual download
+ });
+ });
+
+ // Handle attachment clicks
+ document.querySelectorAll('.attachment-item').forEach(item => {
+ item.style.cursor = 'pointer';
+ item.addEventListener('click', function(e) {
+ if (!e.target.closest('button')) {
+ const fileName = this.querySelector('h6').textContent;
+ console.log('Preview file:', fileName);
+ // In real app, would open preview modal
+ }
+ });
+ });
+}
+
+function scrollToReply() {
+ const replySection = document.querySelector('.email-reply');
+ if (replySection) {
+ replySection.scrollIntoView({ behavior: 'smooth', block: 'center' });
+ }
+}
+
+function focusReplyTextarea() {
+ const textarea = document.querySelector('.email-reply textarea');
+ if (textarea) {
+ setTimeout(() => {
+ textarea.focus();
+ }, 500);
+ }
+}
+
+function handleReplySubmit() {
+ const textarea = document.querySelector('.email-reply textarea');
+ const replyText = textarea.value.trim();
+
+ if (!replyText) {
+ showNotification('Please enter a reply message', 'error');
+ return;
+ }
+
+ // In real app, would send the reply
+ showNotification('Reply sent successfully!', 'success');
+
+ // Clear textarea
+ textarea.value = '';
+
+ // Add reply to the conversation (demo)
+ addReplyToConversation(replyText);
+}
+
+function addReplyToConversation(replyText) {
+ const emailBody = document.querySelector('.email-body');
+ const replyHtml = `
+
+
+
+
+
Me
+ Just now
+
+
+
${replyText}
+
+ `;
+
+ emailBody.insertAdjacentHTML('beforeend', replyHtml);
+}
+
+function showNotification(message, type = 'info') {
+ const alertClass = type === 'error' ? 'alert-danger' :
+ type === 'success' ? 'alert-success' : 'alert-info';
+
+ const alert = document.createElement('div');
+ alert.className = `alert ${alertClass} alert-dismissible fade show position-fixed top-0 end-0 m-3`;
+ alert.style.zIndex = '1050';
+ alert.innerHTML = `
+ ${message}
+
+ `;
+
+ document.body.appendChild(alert);
+
+ setTimeout(() => {
+ alert.remove();
+ }, 5000);
+}
+
+// Add hover effect styles
+const style = document.createElement('style');
+style.textContent = `
+ .attachment-item {
+ transition: all 0.2s ease;
+ }
+
+ .attachment-item:hover {
+ background-color: #f8f9fa;
+ transform: translateY(-2px);
+ box-shadow: 0 2px 8px rgba(0,0,0,0.1);
+ }
+
+ .email-actions button {
+ transition: all 0.2s ease;
+ }
+
+ .email-actions button:hover {
+ transform: translateY(-1px);
+ }
+
+ .reply-message {
+ animation: slideIn 0.3s ease;
+ }
+
+ @keyframes slideIn {
+ from {
+ opacity: 0;
+ transform: translateY(10px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+ }
+`;
+document.head.appendChild(style);
+
+// Initialize on DOM ready
+if (document.readyState === 'loading') {
+ document.addEventListener('DOMContentLoaded', initializeEmailDetails);
+} else {
+ initializeEmailDetails();
+}
\ No newline at end of file
diff --git a/concept-modern/src/js/pages/inbox.js b/concept-modern/src/js/pages/inbox.js
new file mode 100644
index 0000000..4826718
--- /dev/null
+++ b/concept-modern/src/js/pages/inbox.js
@@ -0,0 +1,345 @@
+// Inbox Page functionality
+import * as bootstrap from 'bootstrap';
+
+export function initializeInbox() {
+ // Initialize tooltips
+ const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
+ tooltipTriggerList.map(function (tooltipTriggerEl) {
+ return new bootstrap.Tooltip(tooltipTriggerEl);
+ });
+
+ // Email data for different folders
+ const emailData = {
+ inbox: [
+ {
+ id: 1,
+ from: 'John Doe',
+ initials: 'JD',
+ color: 'primary',
+ subject: 'Q4 Product Launch Strategy Meeting',
+ preview: 'Hi team, I wanted to reach out regarding our upcoming Q4 product launch strategy meeting...',
+ time: '2:30 PM',
+ starred: true,
+ unread: true,
+ attachments: true,
+ labels: ['work', 'important']
+ },
+ {
+ id: 2,
+ from: 'Sarah Miller',
+ initials: 'SM',
+ color: 'success',
+ subject: 'Budget Review - Updated Figures',
+ preview: 'Please find attached the updated budget figures for Q4. We need to discuss the marketing allocation...',
+ time: '11:45 AM',
+ starred: false,
+ unread: true,
+ attachments: true,
+ labels: ['work']
+ },
+ {
+ id: 3,
+ from: 'Michael Chen',
+ initials: 'MC',
+ color: 'warning',
+ subject: 'Re: Website Redesign Proposal',
+ preview: 'I\'ve reviewed the mockups and they look great! I have a few suggestions about the color scheme...',
+ time: '10:30 AM',
+ starred: false,
+ unread: false,
+ attachments: false,
+ labels: ['personal']
+ },
+ {
+ id: 4,
+ from: 'Emily Johnson',
+ initials: 'EJ',
+ color: 'danger',
+ subject: 'Team Building Event - Save the Date!',
+ preview: 'Mark your calendars! Our annual team building event is scheduled for next month. We\'ll be...',
+ time: 'Yesterday',
+ starred: true,
+ unread: false,
+ attachments: false,
+ labels: ['personal']
+ },
+ {
+ id: 5,
+ from: 'David Wilson',
+ initials: 'DW',
+ color: 'info',
+ subject: 'API Documentation Update',
+ preview: 'The API documentation has been updated with the new endpoints. Please review section 3.2 for...',
+ time: 'Yesterday',
+ starred: false,
+ unread: false,
+ attachments: true,
+ labels: ['work']
+ }
+ ],
+ starred: [
+ {
+ id: 1,
+ from: 'John Doe',
+ initials: 'JD',
+ color: 'primary',
+ subject: 'Q4 Product Launch Strategy Meeting',
+ preview: 'Hi team, I wanted to reach out regarding our upcoming Q4 product launch strategy meeting...',
+ time: '2:30 PM',
+ starred: true,
+ unread: true,
+ attachments: true,
+ labels: ['work', 'important']
+ },
+ {
+ id: 4,
+ from: 'Emily Johnson',
+ initials: 'EJ',
+ color: 'danger',
+ subject: 'Team Building Event - Save the Date!',
+ preview: 'Mark your calendars! Our annual team building event is scheduled for next month. We\'ll be...',
+ time: 'Yesterday',
+ starred: true,
+ unread: false,
+ attachments: false,
+ labels: ['personal']
+ }
+ ],
+ sent: [
+ {
+ id: 6,
+ from: 'Me',
+ to: 'John Doe',
+ initials: 'ME',
+ color: 'secondary',
+ subject: 'Re: Q4 Product Launch Strategy Meeting',
+ preview: 'Thanks for the update John. I\'ve reviewed the documents and have some feedback...',
+ time: '1:15 PM',
+ starred: false,
+ unread: false,
+ attachments: false,
+ labels: ['work']
+ }
+ ],
+ drafts: [
+ {
+ id: 7,
+ from: 'Draft',
+ to: 'Marketing Team',
+ initials: 'DR',
+ color: 'secondary',
+ subject: 'New Campaign Ideas',
+ preview: 'Hi team, I\'ve been thinking about our next campaign and wanted to share some initial ideas...',
+ time: 'Draft',
+ starred: false,
+ unread: false,
+ attachments: false,
+ labels: []
+ }
+ ],
+ trash: []
+ };
+
+ let currentFolder = 'inbox';
+ let selectedEmails = new Set();
+
+ // Initialize email list
+ renderEmails(currentFolder);
+
+ // Folder navigation
+ document.querySelectorAll('[data-folder]').forEach(link => {
+ link.addEventListener('click', (e) => {
+ e.preventDefault();
+ const folder = e.currentTarget.dataset.folder;
+
+ // Update active state
+ document.querySelectorAll('[data-folder]').forEach(el => el.classList.remove('active'));
+ e.currentTarget.classList.add('active');
+
+ // Render emails for selected folder
+ currentFolder = folder;
+ renderEmails(folder);
+ });
+ });
+
+ // Select all checkbox
+ const selectAllCheckbox = document.getElementById('selectAll');
+ if (selectAllCheckbox) {
+ selectAllCheckbox.addEventListener('change', (e) => {
+ const checkboxes = document.querySelectorAll('.email-checkbox');
+ checkboxes.forEach(cb => {
+ cb.checked = e.target.checked;
+ const emailId = parseInt(cb.value);
+ if (e.target.checked) {
+ selectedEmails.add(emailId);
+ } else {
+ selectedEmails.delete(emailId);
+ }
+ });
+ });
+ }
+
+ // Email item interactions
+ document.addEventListener('click', (e) => {
+ // Email checkbox
+ if (e.target.classList.contains('email-checkbox')) {
+ const emailId = parseInt(e.target.value);
+ if (e.target.checked) {
+ selectedEmails.add(emailId);
+ } else {
+ selectedEmails.delete(emailId);
+ }
+ }
+
+ // Star toggle
+ if (e.target.closest('.star-toggle')) {
+ e.preventDefault();
+ const star = e.target.closest('.star-toggle');
+ const emailId = parseInt(star.dataset.emailId);
+ toggleStar(emailId);
+ }
+
+ // Email item click (not on checkbox or star)
+ if (e.target.closest('.email-item') && !e.target.closest('.email-checkbox') && !e.target.closest('.star-toggle')) {
+ window.location.href = '/pages/email/details.html';
+ }
+ });
+
+ function renderEmails(folder) {
+ const emailItems = document.getElementById('emailItems');
+ const emails = emailData[folder] || [];
+
+ if (emails.length === 0) {
+ emailItems.innerHTML = `
+
+
+
No emails in ${folder}
+
+ `;
+ return;
+ }
+
+ emailItems.innerHTML = emails.map(email => `
+
+
+
+
+
+
+ ${email.initials}
+
+
+
+
${email.from}
+ ${email.to ? `
to ${email.to} ` : ''}
+ ${email.attachments ? `
` : ''}
+
${email.time}
+
+
${email.subject}
+
${email.preview}
+ ${email.labels.length > 0 ? `
+
+ ${email.labels.map(label => `
+ ${label}
+ `).join('')}
+
+ ` : ''}
+
+
+
+
+
+
+ `).join('');
+ }
+
+ function getLabelColor(label) {
+ const colors = {
+ work: 'success',
+ personal: 'primary',
+ important: 'warning',
+ private: 'danger'
+ };
+ return colors[label] || 'secondary';
+ }
+
+ function toggleStar(emailId) {
+ // Find email in all folders and toggle star
+ Object.keys(emailData).forEach(folder => {
+ const email = emailData[folder].find(e => e.id === emailId);
+ if (email) {
+ email.starred = !email.starred;
+ // Update UI
+ const star = document.querySelector(`[data-email-id="${emailId}"] i`);
+ if (star) {
+ star.classList.toggle('fas');
+ star.classList.toggle('far');
+ star.classList.toggle('text-warning');
+ star.classList.toggle('text-muted');
+ }
+ }
+ });
+ }
+}
+
+// Add custom styles
+const style = document.createElement('style');
+style.textContent = `
+ .avatar {
+ width: 40px !important;
+ height: 40px !important;
+ min-width: 40px !important;
+ min-height: 40px !important;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-shrink: 0;
+ }
+
+ .avatar-initial {
+ font-size: 0.875rem;
+ font-weight: 600;
+ color: white;
+ line-height: 1;
+ }
+
+ .hover-bg-light:hover {
+ background-color: #f8f9fa !important;
+ cursor: pointer;
+ }
+
+ .hover-text-warning:hover {
+ color: #ffc107 !important;
+ cursor: pointer;
+ }
+
+ .min-width-0 {
+ min-width: 0;
+ }
+
+ .email-item {
+ transition: background-color 0.15s ease-in-out;
+ }
+
+ .email-checkbox {
+ cursor: pointer;
+ }
+
+ .list-group-item-action:hover {
+ background-color: #f8f9fa;
+ }
+
+ .list-group-item-action.active {
+ background-color: #e9ecef;
+ color: #212529;
+ border-color: transparent;
+ }
+`;
+document.head.appendChild(style);
+
+// Initialize on DOM ready
+if (document.readyState === 'loading') {
+ document.addEventListener('DOMContentLoaded', initializeInbox);
+} else {
+ initializeInbox();
+}
\ No newline at end of file
diff --git a/concept-modern/src/pages/auth/forgot-password.html b/concept-modern/src/pages/auth/forgot-password.html
new file mode 100644
index 0000000..3da10f4
--- /dev/null
+++ b/concept-modern/src/pages/auth/forgot-password.html
@@ -0,0 +1,164 @@
+
+
+
+ {{> layouts/head pageTitle="Forgot Password" }}
+
+
+
+
+
+
+
+ Concept
+
+
Reset your password
+
+
+
+
+
+
+
+
+
Forgot Password?
+
No worries, we'll send you reset instructions.
+
+
+
+
+
+
+
+
+
+
+
Check your email
+
We've sent a password reset link to your email address.
+
+
+
+
+ Didn't receive the email? Check your spam folder or
+ click here to resend
+
+
+
+
+
+
+
+
+
+
+ Remember your password?
+ Login
+
+
+
+
+
+
+ {{> layouts/scripts }}
+
+
+
+
+
\ No newline at end of file
diff --git a/concept-modern/src/pages/misc/login.html b/concept-modern/src/pages/auth/login.html
similarity index 96%
rename from concept-modern/src/pages/misc/login.html
rename to concept-modern/src/pages/auth/login.html
index fabf4cc..944b024 100644
--- a/concept-modern/src/pages/misc/login.html
+++ b/concept-modern/src/pages/auth/login.html
@@ -32,7 +32,7 @@
diff --git a/concept-modern/src/pages/misc/signup.html b/concept-modern/src/pages/auth/signup.html
similarity index 98%
rename from concept-modern/src/pages/misc/signup.html
rename to concept-modern/src/pages/auth/signup.html
index 2d49446..bb4f835 100644
--- a/concept-modern/src/pages/misc/signup.html
+++ b/concept-modern/src/pages/auth/signup.html
@@ -100,7 +100,7 @@
Already have an account?
-
Sign in
+
Sign in
@@ -175,7 +175,7 @@
// Here you would normally submit the form
console.log('Form is valid, creating account...');
// Redirect to login or dashboard
- window.location.href = '/pages/misc/login.html';
+ window.location.href = '/pages/auth/login.html';
}
form.classList.add('was-validated');
diff --git a/concept-modern/src/pages/email/compose.html b/concept-modern/src/pages/email/compose.html
new file mode 100644
index 0000000..0de26a2
--- /dev/null
+++ b/concept-modern/src/pages/email/compose.html
@@ -0,0 +1,192 @@
+{{> layouts/main title="Compose Email" activeMenu="email" activePage="compose"}}
+
+{{#*inline "content"}}
+
+
+ {{> layouts/header}}
+
+
+ {{> layouts/sidebar activeMenu="email" activePage="compose"}}
+
+
+
+
+
+
+ {{> layouts/footer}}
+
+
+
+
+
+{{/inline}}
+
+{{> layouts/base}}
\ No newline at end of file
diff --git a/concept-modern/src/pages/email/details.html b/concept-modern/src/pages/email/details.html
new file mode 100644
index 0000000..10a8fbf
--- /dev/null
+++ b/concept-modern/src/pages/email/details.html
@@ -0,0 +1,295 @@
+{{> layouts/main title="Email Details" activeMenu="email" activePage="details"}}
+
+{{#*inline "content"}}
+
+
+ {{> layouts/header}}
+
+
+ {{> layouts/sidebar activeMenu="email" activePage="details"}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hi Team,
+
+
I hope this email finds you well. I wanted to reach out regarding our upcoming Q4 product launch strategy meeting scheduled for next Tuesday.
+
+
As we prepare for this important discussion, I've compiled a comprehensive agenda that covers all critical aspects of our launch plan:
+
+
Meeting Agenda:
+
+
+ Market Analysis Review (30 min)
+
+ Current market trends and competitor positioning
+ Customer feedback from beta testing
+ Pricing strategy recommendations
+
+
+
+ Product Roadmap Update (45 min)
+
+ Feature prioritization for launch
+ Technical milestones and dependencies
+ Risk assessment and mitigation plans
+
+
+
+ Marketing Campaign Strategy (45 min)
+
+ Digital marketing initiatives
+ Content calendar and social media plan
+ Partnership opportunities
+
+
+
+ Sales Enablement (30 min)
+
+ Sales team training schedule
+ Demo environment setup
+ Commission structure updates
+
+
+
+
+
Please review the attached documents before the meeting:
+
+
+
Attachments (3)
+
+
+
+
+
+
+
Market_Analysis_Q4.pdf
+ 2.4 MB
+
+
+
+
+
+
+
+
+
+
+
+
+
Product_Roadmap.xlsx
+ 856 KB
+
+
+
+
+
+
+
+
+
+
+
+
+
Launch_Strategy.pptx
+ 4.1 MB
+
+
+
+
+
+
+
+
+
+
+
If you have any questions or would like to add items to the agenda, please let me know by end of day Monday.
+
+
Looking forward to our discussion!
+
+
Best regards,
+ John Doe
+ Product Manager
+ Company Inc.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{> layouts/footer}}
+
+
+
+
+
+{{/inline}}
+
+{{> layouts/base}}
\ No newline at end of file
diff --git a/concept-modern/src/pages/email/inbox.html b/concept-modern/src/pages/email/inbox.html
new file mode 100644
index 0000000..779dab1
--- /dev/null
+++ b/concept-modern/src/pages/email/inbox.html
@@ -0,0 +1,159 @@
+{{> layouts/main title="Inbox" activeMenu="email" activePage="inbox"}}
+
+{{#*inline "content"}}
+
+
+ {{> layouts/header}}
+
+
+ {{> layouts/sidebar activeMenu="email" activePage="inbox"}}
+
+
+
+
+
+
+ {{> layouts/footer}}
+
+
+
+
+
+{{/inline}}
+
+{{> layouts/base}}
\ No newline at end of file
diff --git a/concept-modern/src/pages/inbox.html b/concept-modern/src/pages/inbox.html
deleted file mode 100644
index b35a9f4..0000000
--- a/concept-modern/src/pages/inbox.html
+++ /dev/null
@@ -1,742 +0,0 @@
-
-
-
- {{> layouts/head pageTitle="Inbox" }}
-
-
-
- {{> layouts/header }}
- {{> layouts/sidebar currentPage="inbox" }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{> layouts/footer }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Attach
-
-
- Insert Photo
-
-
- Insert Link
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/concept-modern/src/partials/layouts/sidebar.hbs b/concept-modern/src/partials/layouts/sidebar.hbs
index eff7bbc..85d172f 100644
--- a/concept-modern/src/partials/layouts/sidebar.hbs
+++ b/concept-modern/src/partials/layouts/sidebar.hbs
@@ -149,10 +149,13 @@
Blank Page
- Login
+ Login
- Sign Up
+ Sign Up
+
+
+ Forgot Password
404 page
diff --git a/concept-modern/vite.config.js b/concept-modern/vite.config.js
index ae1cf16..063cc58 100644
--- a/concept-modern/vite.config.js
+++ b/concept-modern/vite.config.js
@@ -73,10 +73,12 @@ export default defineConfig({
// User Management
'users': resolve(__dirname, 'src/pages/users.html'),
'timeline': resolve(__dirname, 'src/pages/timeline.html'),
+ // Auth Pages
+ 'login': resolve(__dirname, 'src/pages/auth/login.html'),
+ 'signup': resolve(__dirname, 'src/pages/auth/signup.html'),
+ 'forgot-password': resolve(__dirname, 'src/pages/auth/forgot-password.html'),
// Misc Pages
'blank-page': resolve(__dirname, 'src/pages/misc/blank-page.html'),
- 'login': resolve(__dirname, 'src/pages/misc/login.html'),
- 'signup': resolve(__dirname, 'src/pages/misc/signup.html'),
'404': resolve(__dirname, 'src/pages/misc/404.html'),
},
output: {
diff --git a/index.html b/index.html
deleted file mode 100644
index acc369c..0000000
--- a/index.html
+++ /dev/null
@@ -1,1013 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Concept - Bootstrap 4 Admin Dashboard Template
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/email-compose.html b/pages/email-compose.html
deleted file mode 100644
index e5585f0..0000000
--- a/pages/email-compose.html
+++ /dev/null
@@ -1,570 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Concept - Bootstrap 4 Admin Dashboard Template
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/email-details.html b/pages/email-details.html
deleted file mode 100644
index 2896c91..0000000
--- a/pages/email-details.html
+++ /dev/null
@@ -1,532 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- Concept - Bootstrap 4 Admin Dashboard Template
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Hello,
-
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.
-
Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna.
-
Regards ,
- Justine Myranda
-
-
-
Attachments (2 files, 16,24 KB)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/forgot-password.html b/pages/forgot-password.html
deleted file mode 100644
index 75fd66e..0000000
--- a/pages/forgot-password.html
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
-
-
-
- Concept - Bootstrap 4 Admin Dashboard Template
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Don't worry, we'll send you an email to reset your password.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/inbox.html b/pages/inbox.html
deleted file mode 100644
index 8d8f9a7..0000000
--- a/pages/inbox.html
+++ /dev/null
@@ -1,631 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- Concept - Bootstrap 4 Admin Dashboard Template
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- With selected
-
-
-
- Archive
- Span
- Delete
-
-
- Order by
-
-
-
-
-
-
-
-
-
-
-
28 JulPenelope Thornton
-
Urgent - You forgot your keys in the class room, please come imediatly!
-
-
-
-
-
13 JulBenji Harper
-
Urgent - You forgot your keys in the class room, please come imediatly!
-
-
-
-
-
23 Jun Justine Myranda
-
Urgent - You forgot your keys in the class room, please come imediatly!
-
-
-
-
-
17 May John Doe
-
Urgent - You forgot your keys in the class room, please come imediatly!
-
-
-
-
-
16 May Sherwood Clifford
-
Urgent - You forgot your keys in the class room, please come imediatly!
-
-
-
-
-
12 May Kristopher Donny
-
Urgent - You forgot your keys in the class room, please come imediatly!
-
-
-
-
-
12 May Kristopher Donny
-
Urgent - You forgot your keys in the class room, please come imediatly!
-
-
-
-
-
12 May Kristopher Donny
-
Urgent - You forgot your keys in the class room, please come imediatly!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/login.html b/pages/login.html
deleted file mode 100644
index f53d7c7..0000000
--- a/pages/login.html
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
-
-
-
- Login
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/pages-sign-up.html b/pages/pages-sign-up.html
deleted file mode 100644
index 355659f..0000000
--- a/pages/pages-sign-up.html
+++ /dev/null
@@ -1,383 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- Concept - Bootstrap 4 Admin Dashboard Template
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Error 404: Page not found
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
It looks like nothing was found at this location. Maybe try one of the links below or a search?
-
-
-
- Search for:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pages/sign-up.html b/pages/sign-up.html
deleted file mode 100644
index ac5f022..0000000
--- a/pages/sign-up.html
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
-
-
-
-
Concept - Bootstrap 4 Admin Dashboard Template
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Register My Account
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file