commit 1b2a90f61aa701027c0c4cee5bf2afd4b9232efc
Author: root <root@hub.scroll.pub>
Date: 2024-12-27 07:07:16 +0000
Subject: Initial commit
diff --git a/body.html b/body.html
new file mode 100644
index 0000000..04c0f22
--- /dev/null
+++ b/body.html
@@ -0,0 +1,76 @@
+<header>
+ <nav class="main-nav">
+ <div class="logo">ClientView</div>
+ <button class="mobile-menu" aria-label="Toggle menu">
+ <span></span><span></span><span></span>
+ </button>
+ <ul class="nav-links">
+ <li><a href="#dashboard" class="active">Dashboard</a></li>
+ <li><a href="#strategies">Strategies</a></li>
+ <li><a href="#deliverables">Deliverables</a></li>
+ <li><a href="#reports">Reports</a></li>
+ </ul>
+ </nav>
+</header>
+
+<main>
+ <section id="dashboard" class="dashboard-grid">
+ <div class="card contract-overview">
+ <h2>Contract Overview</h2>
+ <div class="contract-details">
+ <p>Service Package: Premium Strategy</p>
+ <p>Start Date: January 1, 2024</p>
+ <p>Duration: 12 months</p>
+ </div>
+ </div>
+
+ <div class="card calendar">
+ <h2>Project Timeline</h2>
+ <div class="calendar-wrapper">
+ <div class="calendar-header">
+ <button id="prevMonth"><</button>
+ <h3 id="currentMonth">January 2024</h3>
+ <button id="nextMonth">></button>
+ </div>
+ <div id="calendarGrid" class="calendar-grid"></div>
+ </div>
+ </div>
+
+ <div class="card deliverables">
+ <h2>Recent Deliverables</h2>
+ <ul class="deliverables-list">
+ <li class="completed">Market Analysis Report <span>Dec 28</span></li>
+ <li class="completed">Q4 Strategy Review <span>Dec 15</span></li>
+ <li class="upcoming">Content Calendar Q1 <span>Jan 10</span></li>
+ </ul>
+ </div>
+
+ <div class="card objectives">
+ <h2>Key Objectives</h2>
+ <div class="objectives-progress">
+ <div class="objective">
+ <span class="objective-name">Market Penetration</span>
+ <div class="progress-bar">
+ <div class="progress" style="width: 75%"></div>
+ </div>
+ </div>
+ <div class="objective">
+ <span class="objective-name">Brand Awareness</span>
+ <div class="progress-bar">
+ <div class="progress" style="width: 60%"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </section>
+</main>
+
+<footer>
+ <nav class="footer-nav">
+ <ul>
+ <li><a href="#privacy">Privacy Policy</a></li>
+ <li><a href="#terms">Terms of Service</a></li>
+ <li><a href="#contact">Contact Support</a></li>
+ </ul>
+ </nav>
+</footer>
diff --git a/index.scroll b/index.scroll
new file mode 100644
index 0000000..0a84e5c
--- /dev/null
+++ b/index.scroll
@@ -0,0 +1,8 @@
+buildHtml
+baseUrl https://clientview.scroll.pub
+metaTags
+editButton /edit.html
+title Client Dashboard | Strategic Overview & Deliverables
+style.css
+body.html
+script.js
diff --git a/readme.scroll b/readme.scroll
new file mode 100644
index 0000000..e0aaee9
--- /dev/null
+++ b/readme.scroll
@@ -0,0 +1,2 @@
+# clientview.scroll.pub
+Website generated by Claude from prompt: this online dashboard, would give the client access to view strategies, research, analysis, landscapes etc.. it will also give them an overview of their contract with us, their services etc.. a calendar that sees where we are, and what deliverables were given and what deliverables are upcoming,it also will give them access to view reports , objectives, statuses, content calendars etc..
\ No newline at end of file
diff --git a/script.js b/script.js
new file mode 100644
index 0000000..2bc018d
--- /dev/null
+++ b/script.js
@@ -0,0 +1,75 @@
+document.addEventListener('DOMContentLoaded', function() {
+ // Mobile menu toggle
+ const mobileMenu = document.querySelector('.mobile-menu');
+ const navLinks = document.querySelector('.nav-links');
+
+ mobileMenu.addEventListener('click', () => {
+ navLinks.classList.toggle('active');
+ });
+
+ // Calendar functionality
+ const calendarGrid = document.getElementById('calendarGrid');
+ const currentMonthElement = document.getElementById('currentMonth');
+ const prevMonth = document.getElementById('prevMonth');
+ const nextMonth = document.getElementById('nextMonth');
+
+ let currentDate = new Date();
+
+ function renderCalendar(date) {
+ const firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
+ const lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
+
+ currentMonthElement.textContent = date.toLocaleString('default', {
+ month: 'long',
+ year: 'numeric'
+ });
+
+ calendarGrid.innerHTML = '';
+
+ // Add day headers
+ const days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
+ days.forEach(day => {
+ const dayHeader = document.createElement('div');
+ dayHeader.className = 'calendar-day-header';
+ dayHeader.textContent = day;
+ calendarGrid.appendChild(dayHeader);
+ });
+
+ // Add empty cells for days before first day of month
+ for (let i = 0; i < firstDay.getDay(); i++) {
+ const emptyDay = document.createElement('div');
+ emptyDay.className = 'calendar-day empty';
+ calendarGrid.appendChild(emptyDay);
+ }
+
+ // Add days of month
+ for (let i = 1; i <= lastDay.getDate(); i++) {
+ const dayElement = document.createElement('div');
+ dayElement.className = 'calendar-day';
+ dayElement.textContent = i;
+ calendarGrid.appendChild(dayElement);
+ }
+ }
+
+ renderCalendar(currentDate);
+
+ prevMonth.addEventListener('click', () => {
+ currentDate.setMonth(currentDate.getMonth() - 1);
+ renderCalendar(currentDate);
+ });
+
+ nextMonth.addEventListener('click', () => {
+ currentDate.setMonth(currentDate.getMonth() + 1);
+ renderCalendar(currentDate);
+ });
+
+ // Progress bar animation
+ const progressBars = document.querySelectorAll('.progress');
+ progressBars.forEach(bar => {
+ const width = bar.style.width;
+ bar.style.width = '0';
+ setTimeout(() => {
+ bar.style.width = width;
+ }, 100);
+ });
+});
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..b1f4eee
--- /dev/null
+++ b/style.css
@@ -0,0 +1,201 @@
+:root {
+ --primary: #2a6fd6;
+ --secondary: #1d4e9e;
+ --background: #f5f7fa;
+ --card-bg: #ffffff;
+ --text: #2c3e50;
+ --border: #e1e8f0;
+ --success: #2ecc71;
+ --warning: #f1c40f;
+}
+
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+body {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
+ background: var(--background);
+ color: var(--text);
+ line-height: 1.6;
+}
+
+.main-nav {
+ background: var(--card-bg);
+ padding: 1rem 2rem;
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.logo {
+ font-size: 1.5rem;
+ font-weight: bold;
+ color: var(--primary);
+}
+
+.nav-links {
+ display: flex;
+ list-style: none;
+ gap: 2rem;
+}
+
+.nav-links a {
+ text-decoration: none;
+ color: var(--text);
+ font-weight: 500;
+ transition: color 0.3s ease;
+}
+
+.nav-links a:hover,
+.nav-links a.active {
+ color: var(--primary);
+}
+
+.mobile-menu {
+ display: none;
+ flex-direction: column;
+ gap: 4px;
+ background: none;
+ border: none;
+ cursor: pointer;
+}
+
+.mobile-menu span {
+ width: 25px;
+ height: 2px;
+ background: var(--text);
+ transition: all 0.3s ease;
+}
+
+.dashboard-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ gap: 2rem;
+ padding: 2rem;
+ max-width: 1400px;
+ margin: 0 auto;
+}
+
+.card {
+ background: var(--card-bg);
+ border-radius: 12px;
+ padding: 1.5rem;
+ box-shadow: 0 4px 6px rgba(0,0,0,0.05);
+ transition: transform 0.3s ease;
+}
+
+.card:hover {
+ transform: translateY(-2px);
+}
+
+.card h2 {
+ color: var(--text);
+ margin-bottom: 1rem;
+ font-size: 1.25rem;
+}
+
+.calendar-wrapper {
+ width: 100%;
+}
+
+.calendar-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 1rem;
+}
+
+.calendar-grid {
+ display: grid;
+ grid-template-columns: repeat(7, 1fr);
+ gap: 4px;
+}
+
+.deliverables-list {
+ list-style: none;
+}
+
+.deliverables-list li {
+ display: flex;
+ justify-content: space-between;
+ padding: 0.75rem 0;
+ border-bottom: 1px solid var(--border);
+}
+
+.completed {
+ color: var(--success);
+}
+
+.upcoming {
+ color: var(--warning);
+}
+
+.objectives-progress {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+}
+
+.progress-bar {
+ width: 100%;
+ height: 8px;
+ background: var(--border);
+ border-radius: 4px;
+ overflow: hidden;
+}
+
+.progress {
+ height: 100%;
+ background: var(--primary);
+ transition: width 0.3s ease;
+}
+
+footer {
+ background: var(--card-bg);
+ padding: 2rem;
+ margin-top: 2rem;
+}
+
+.footer-nav ul {
+ display: flex;
+ justify-content: center;
+ gap: 2rem;
+ list-style: none;
+}
+
+.footer-nav a {
+ color: var(--text);
+ text-decoration: none;
+ font-size: 0.9rem;
+}
+
+@media (max-width: 768px) {
+ .mobile-menu {
+ display: flex;
+ }
+
+ .nav-links {
+ display: none;
+ position: absolute;
+ top: 100%;
+ left: 0;
+ right: 0;
+ background: var(--card-bg);
+ flex-direction: column;
+ padding: 1rem;
+ gap: 1rem;
+ }
+
+ .nav-links.active {
+ display: flex;
+ }
+
+ .dashboard-grid {
+ grid-template-columns: 1fr;
+ padding: 1rem;
+ }
+}