Changes to clientview.scroll.pub

root
root
26 days ago
Initial commit
body.html
Changed around line 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Contract Overview

+
+

Service Package: Premium Strategy

+

Start Date: January 1, 2024

+

Duration: 12 months

+
+
+
+
+

Project Timeline

+
+
+
+

January 2024

+
+
+
+
+
+
+
+

Recent Deliverables

+
    +
  • Market Analysis Report Dec 28
  • +
  • Q4 Strategy Review Dec 15
  • +
  • Content Calendar Q1 Jan 10
  • +
    +
    +
    +
    +

    Key Objectives

    +
    +
    + Market Penetration
    +
    +
    +
    +
    +
    + Brand Awareness
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
      +
      +
      +
      index.scroll
      Changed around line 1
      + buildHtml
      + baseUrl https://clientview.scroll.pub
      + metaTags
      + editButton /edit.html
      + title Client Dashboard | Strategic Overview & Deliverables
      + style.css
      + body.html
      + script.js
      readme.scroll
      Changed around line 1
      + # 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..
      script.js
      Changed around line 1
      + 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);
      + });
      + });
      style.css
      Changed around line 1
      + :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;
      + }
      + }