diff --git a/assets/css/custom.css b/assets/css/custom.css new file mode 100644 index 0000000..95c1c87 --- /dev/null +++ b/assets/css/custom.css @@ -0,0 +1,113 @@ +/* TeamSync Custom Styles */ + +:root { + --primary-color: #4F46E5; + --secondary-color: #10B981; + --background-color: #F3F4F6; + --surface-color: #FFFFFF; + --text-color: #111827; + --muted-text-color: #6B7280; + --warning-color: #F59E0B; + --danger-color: #EF4444; + --ooo-color: #3B82F6; + --border-radius: 0.5rem; +} + +body { + font-family: 'Inter', sans-serif; + background-color: var(--background-color); + color: var(--text-color); +} + +.app-header { + background: linear-gradient(90deg, rgba(79, 70, 229, 0.95) 0%, rgba(79, 70, 229, 1) 100%); + padding: 1rem 0; + color: white; +} + +.logo { + font-weight: 700; + font-size: 1.5rem; +} + +.avatar { + width: 40px; + height: 40px; + border-radius: 50%; + border: 2px solid rgba(255, 255, 255, 0.8); +} + +.team-name { + font-weight: 700; +} + +.record-btn { + background-color: var(--primary-color); + border-color: var(--primary-color); + font-weight: 500; + display: inline-flex; + align-items: center; + gap: 0.5rem; +} + +.record-btn svg { + width: 20px; + height: 20px; +} + +.status-board-card { + border: none; + border-radius: var(--border-radius); + box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); +} + +.status-board-card .card-header { + background-color: var(--surface-color); + border-bottom: 1px solid #E5E7EB; + font-weight: 500; + border-top-left-radius: var(--border-radius); + border-top-right-radius: var(--border-radius); +} + +.list-group-item { + padding: 1rem 1.5rem; +} + +.list-group-item:hover { + background-color: #F9FAFB; +} + +.member-name { + font-weight: 500; +} + +.status-icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + border-radius: 50%; +} + +.status-icon svg { + width: 16px; + height: 16px; + color: white; +} + +.status-icon.submitted { + background-color: var(--secondary-color); +} + +.status-icon.pending { + background-color: var(--warning-color); +} + +.status-icon.missed { + background-color: var(--danger-color); +} + +.status-icon.ooo { + background-color: var(--ooo-color); +} diff --git a/assets/icons/check.svg b/assets/icons/check.svg new file mode 100644 index 0000000..fe50233 --- /dev/null +++ b/assets/icons/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/clock.svg b/assets/icons/clock.svg new file mode 100644 index 0000000..2580096 --- /dev/null +++ b/assets/icons/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/palm.svg b/assets/icons/palm.svg new file mode 100644 index 0000000..55355db --- /dev/null +++ b/assets/icons/palm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/video.svg b/assets/icons/video.svg new file mode 100644 index 0000000..7128e37 --- /dev/null +++ b/assets/icons/video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/x.svg b/assets/icons/x.svg new file mode 100644 index 0000000..4e068e4 --- /dev/null +++ b/assets/icons/x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..2e926a2 --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,9 @@ +// Main JavaScript for TeamSync + +document.addEventListener('DOMContentLoaded', function () { + console.log('TeamSync dashboard loaded.'); + + // Future interactivity can be added here. + // For example, handling the click on the 'Record Update' button + // when it's no longer disabled. +}); diff --git a/index.php b/index.php index 7205f3d..d30616e 100644 --- a/index.php +++ b/index.php @@ -1,150 +1,90 @@ - - + - - - New Style - - - - - - - - - - - - - - - - - - - + + + TeamSync Dashboard + + + + + -
-
-

Analyzing your requirements and generating your website…

-
- Loading… -
-

AI is collecting your requirements and applying the first changes.

-

This page will update automatically as the plan is implemented.

-

Runtime: PHP — UTC

-
-
- + + 'Alex Doe', + 'avatar_url' => 'https://i.pravatar.cc/40?u=alex' + ]; + $team_members = [ + ['full_name' => 'Samantha Bright', 'avatar_url' => 'https://i.pravatar.cc/40?u=samantha', 'status' => 'submitted'], + ['full_name' => 'Leo Valdez', 'avatar_url' => 'https://i.pravatar.cc/40?u=leo', 'status' => 'pending', 'detail' => '2h 15m remaining'], + ['full_name' => 'Mei Lin', 'avatar_url' => 'https://i.pravatar.cc/40?u=mei', 'status' => 'missed'], + ['full_name' => 'Kenji Tanaka', 'avatar_url' => 'https://i.pravatar.cc/40?u=kenji', 'status' => 'ooo'], + ['full_name' => 'Fatima Ahmed', 'avatar_url' => 'https://i.pravatar.cc/40?u=fatima', 'status' => 'submitted'], + ]; + + function getStatusIndicator($status) { + switch ($status) { + case 'submitted': + return '' . file_get_contents("assets/icons/check.svg") . ''; + case 'pending': + return '' . file_get_contents("assets/icons/clock.svg") . ''; + case 'missed': + return '' . file_get_contents("assets/icons/x.svg") . ''; + case 'ooo': + return '' . file_get_contents("assets/icons/palm.svg") . ''; + default: + return ''; + } + } + ?> + +
+
+ + +
+
+ +
+
+

+ +
+ +
+
+ Daily Standup Status +
+ +
+
+ + + - + \ No newline at end of file