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 +
+
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.

+
+ +
+
+ + +
+ Please enter a valid email address. +
+
+ +
+ +
+ + +
+ + +
+
+
+ +
+

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 @@
- Forgot password? + Forgot password?
Don't have an account? - Sign up + Sign up
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"}} + + +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+ +
+
+
+
+
+
+ + + {{> 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 }} -
-
- - - - - - - - - \ 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 +