NeerajCodz commited on
Commit
05f6bf1
·
1 Parent(s): 1226a86

feat: redesign UI with navy blue and cyan theme colors

Browse files
frontend/src/App.tsx CHANGED
@@ -27,22 +27,22 @@ function NavBar() {
27
  ];
28
 
29
  return (
30
- <nav className="bg-gradient-to-r from-gray-900 via-gray-900 to-gray-800 border-b border-gray-700/50 shadow-lg">
31
  <div className="px-4 sm:px-6 lg:px-8">
32
  <div className="flex items-center justify-between h-14">
33
  {/* Logo */}
34
  <div className="flex items-center gap-3">
35
  <div className="relative">
36
- <div className="w-9 h-9 bg-gradient-to-br from-emerald-500 via-cyan-500 to-blue-500 rounded-lg flex items-center justify-center shadow-lg shadow-emerald-500/20">
37
  <Brain className="w-5 h-5 text-white" />
38
  </div>
39
- <div className="absolute -top-0.5 -right-0.5 w-2.5 h-2.5 bg-emerald-400 rounded-full animate-pulse" />
40
  </div>
41
  <div className="flex flex-col">
42
- <span className="text-lg font-bold bg-gradient-to-r from-emerald-400 via-cyan-400 to-blue-400 bg-clip-text text-transparent">
43
  ScrapeRL
44
  </span>
45
- <span className="text-[9px] text-gray-500 font-medium tracking-wider -mt-0.5">
46
  RL-POWERED SCRAPING
47
  </span>
48
  </div>
 
27
  ];
28
 
29
  return (
30
+ <nav className="bg-gradient-to-r from-navy-900 via-navy-800 to-navy-900 border-b border-cyan-900/30 shadow-lg shadow-cyan-500/10">
31
  <div className="px-4 sm:px-6 lg:px-8">
32
  <div className="flex items-center justify-between h-14">
33
  {/* Logo */}
34
  <div className="flex items-center gap-3">
35
  <div className="relative">
36
+ <div className="w-9 h-9 bg-gradient-to-br from-cyan-500 via-cyan-600 to-cyan-700 rounded-lg flex items-center justify-center shadow-lg shadow-cyan-500/40">
37
  <Brain className="w-5 h-5 text-white" />
38
  </div>
39
+ <div className="absolute -top-0.5 -right-0.5 w-2.5 h-2.5 bg-cyan-400 rounded-full animate-pulse shadow-lg shadow-cyan-400/50" />
40
  </div>
41
  <div className="flex flex-col">
42
+ <span className="text-lg font-bold bg-gradient-to-r from-cyan-400 via-cyan-300 to-cyan-500 bg-clip-text text-transparent">
43
  ScrapeRL
44
  </span>
45
+ <span className="text-[9px] text-cyan-600 font-medium tracking-wider -mt-0.5">
46
  RL-POWERED SCRAPING
47
  </span>
48
  </div>
frontend/src/index.css CHANGED
@@ -4,11 +4,13 @@
4
 
5
  @layer base {
6
  * {
7
- @apply border-dark-700;
8
  }
9
 
10
  body {
11
- @apply bg-dark-900 text-dark-100 antialiased;
 
 
12
  }
13
 
14
  ::-webkit-scrollbar {
@@ -16,47 +18,45 @@
16
  }
17
 
18
  ::-webkit-scrollbar-track {
19
- @apply bg-dark-800;
20
  }
21
 
22
  ::-webkit-scrollbar-thumb {
23
- @apply bg-dark-600 rounded-full;
24
- }
25
-
26
- ::-webkit-scrollbar-thumb:hover {
27
- @apply bg-dark-500;
28
  }
29
  }
30
 
31
  @layer components {
32
  .card {
33
- @apply bg-dark-800 border border-dark-700 rounded-xl p-4 shadow-lg;
 
34
  }
35
 
36
  .card-header {
37
- @apply flex items-center justify-between mb-4 pb-3 border-b border-dark-700;
38
  }
39
 
40
  .card-title {
41
- @apply text-lg font-semibold text-dark-100;
42
  }
43
 
44
  .btn {
45
  @apply inline-flex items-center justify-center gap-2 px-4 py-2 text-sm font-medium
46
  rounded-lg transition-all duration-200 focus:outline-none focus:ring-2
47
- focus:ring-accent-primary/50 disabled:opacity-50 disabled:cursor-not-allowed;
48
  }
49
 
50
  .btn-primary {
51
- @apply bg-accent-primary text-white hover:bg-accent-secondary active:bg-accent-tertiary;
 
52
  }
53
 
54
  .btn-secondary {
55
- @apply bg-dark-700 text-dark-200 hover:bg-dark-600 active:bg-dark-500;
56
  }
57
 
58
  .btn-ghost {
59
- @apply bg-transparent text-dark-300 hover:bg-dark-700 hover:text-dark-100;
60
  }
61
 
62
  .btn-danger {
@@ -64,15 +64,15 @@
64
  }
65
 
66
  .input {
67
- @apply w-full px-3 py-2 bg-dark-900 border border-dark-600 rounded-lg text-dark-100
68
- placeholder-dark-500 focus:outline-none focus:border-accent-primary focus:ring-1
69
- focus:ring-accent-primary/50 transition-colors;
70
  }
71
 
72
  .select {
73
- @apply w-full px-3 py-2 bg-dark-900 border border-dark-600 rounded-lg text-dark-100
74
- focus:outline-none focus:border-accent-primary focus:ring-1
75
- focus:ring-accent-primary/50 transition-colors cursor-pointer;
76
  }
77
 
78
  .badge {
@@ -80,7 +80,7 @@
80
  }
81
 
82
  .badge-success {
83
- @apply bg-green-500/20 text-green-400 border border-green-500/30;
84
  }
85
 
86
  .badge-warning {
@@ -92,24 +92,24 @@
92
  }
93
 
94
  .badge-info {
95
- @apply bg-blue-500/20 text-blue-400 border border-blue-500/30;
96
  }
97
 
98
  .badge-neutral {
99
- @apply bg-dark-600/50 text-dark-300 border border-dark-500/30;
100
  }
101
 
102
  .tab {
103
- @apply px-4 py-2 text-sm font-medium text-dark-400 hover:text-dark-200
104
  border-b-2 border-transparent transition-colors;
105
  }
106
 
107
  .tab-active {
108
- @apply text-accent-primary border-accent-primary;
109
  }
110
 
111
  .panel {
112
- @apply bg-dark-850 rounded-lg p-3;
113
  }
114
 
115
  .status-indicator {
@@ -117,7 +117,7 @@
117
  }
118
 
119
  .status-active {
120
- @apply bg-green-500 animate-pulse;
121
  }
122
 
123
  .status-idle {
@@ -129,35 +129,44 @@
129
  }
130
 
131
  .status-offline {
132
- @apply bg-dark-500;
133
  }
134
 
135
  .thought-bubble {
136
- @apply bg-dark-700/50 border border-dark-600 rounded-lg p-3 text-sm text-dark-300
137
  font-mono italic;
138
  }
139
 
140
  .code-block {
141
- @apply bg-dark-950 border border-dark-700 rounded-lg p-3 font-mono text-sm
142
- text-dark-200 overflow-x-auto;
143
  }
144
 
145
  .timeline-item {
146
- @apply relative pl-6 pb-4 border-l-2 border-dark-700 last:border-l-transparent;
147
  }
148
 
149
  .timeline-dot {
150
- @apply absolute left-0 top-0 w-3 h-3 bg-accent-primary rounded-full
151
- -translate-x-[7px] ring-4 ring-dark-800;
152
  }
153
 
154
  .gradient-text {
155
- @apply bg-gradient-to-r from-accent-primary to-accent-tertiary
156
  bg-clip-text text-transparent;
157
  }
158
 
159
  .glass {
160
- @apply bg-dark-800/80 backdrop-blur-sm;
 
 
 
 
 
 
 
 
 
161
  }
162
  }
163
 
 
4
 
5
  @layer base {
6
  * {
7
+ @apply border-navy-700;
8
  }
9
 
10
  body {
11
+ @apply bg-navy-950 text-gray-100 antialiased;
12
+ background: linear-gradient(135deg, #0a192f 0%, #020d14 100%);
13
+ min-height: 100vh;
14
  }
15
 
16
  ::-webkit-scrollbar {
 
18
  }
19
 
20
  ::-webkit-scrollbar-track {
21
+ @apply bg-navy-900;
22
  }
23
 
24
  ::-webkit-scrollbar-thumb {
25
+ @apply bg-cyan-700 rounded-full hover:bg-cyan-600;
 
 
 
 
26
  }
27
  }
28
 
29
  @layer components {
30
  .card {
31
+ @apply bg-navy-900/80 backdrop-blur-sm border border-cyan-900/30 rounded-xl p-4 shadow-lg;
32
+ box-shadow: 0 4px 20px rgba(0, 217, 255, 0.1);
33
  }
34
 
35
  .card-header {
36
+ @apply flex items-center justify-between mb-4 pb-3 border-b border-cyan-900/30;
37
  }
38
 
39
  .card-title {
40
+ @apply text-lg font-semibold text-cyan-400;
41
  }
42
 
43
  .btn {
44
  @apply inline-flex items-center justify-center gap-2 px-4 py-2 text-sm font-medium
45
  rounded-lg transition-all duration-200 focus:outline-none focus:ring-2
46
+ focus:ring-cyan-500/50 disabled:opacity-50 disabled:cursor-not-allowed;
47
  }
48
 
49
  .btn-primary {
50
+ @apply bg-gradient-to-r from-cyan-600 to-cyan-500 text-white hover:from-cyan-500 hover:to-cyan-400
51
+ active:from-cyan-700 active:to-cyan-600 shadow-lg shadow-cyan-500/30;
52
  }
53
 
54
  .btn-secondary {
55
+ @apply bg-navy-800 text-cyan-300 hover:bg-navy-700 active:bg-navy-600 border border-cyan-900/50;
56
  }
57
 
58
  .btn-ghost {
59
+ @apply bg-transparent text-cyan-400 hover:bg-navy-800 hover:text-cyan-300;
60
  }
61
 
62
  .btn-danger {
 
64
  }
65
 
66
  .input {
67
+ @apply w-full px-3 py-2 bg-navy-900 border border-cyan-900/50 rounded-lg text-gray-100
68
+ placeholder-gray-500 focus:outline-none focus:border-cyan-500 focus:ring-1
69
+ focus:ring-cyan-500/50 transition-colors;
70
  }
71
 
72
  .select {
73
+ @apply w-full px-3 py-2 bg-navy-900 border border-cyan-900/50 rounded-lg text-gray-100
74
+ focus:outline-none focus:border-cyan-500 focus:ring-1
75
+ focus:ring-cyan-500/50 transition-colors cursor-pointer;
76
  }
77
 
78
  .badge {
 
80
  }
81
 
82
  .badge-success {
83
+ @apply bg-emerald-500/20 text-emerald-400 border border-emerald-500/30;
84
  }
85
 
86
  .badge-warning {
 
92
  }
93
 
94
  .badge-info {
95
+ @apply bg-cyan-500/20 text-cyan-400 border border-cyan-500/30;
96
  }
97
 
98
  .badge-neutral {
99
+ @apply bg-navy-800/50 text-gray-400 border border-navy-700/30;
100
  }
101
 
102
  .tab {
103
+ @apply px-4 py-2 text-sm font-medium text-gray-500 hover:text-cyan-400
104
  border-b-2 border-transparent transition-colors;
105
  }
106
 
107
  .tab-active {
108
+ @apply text-cyan-400 border-cyan-500;
109
  }
110
 
111
  .panel {
112
+ @apply bg-navy-900/50 rounded-lg p-3 border border-cyan-900/20;
113
  }
114
 
115
  .status-indicator {
 
117
  }
118
 
119
  .status-active {
120
+ @apply bg-cyan-400 animate-pulse shadow-lg shadow-cyan-500/50;
121
  }
122
 
123
  .status-idle {
 
129
  }
130
 
131
  .status-offline {
132
+ @apply bg-gray-600;
133
  }
134
 
135
  .thought-bubble {
136
+ @apply bg-navy-800/50 border border-cyan-900/30 rounded-lg p-3 text-sm text-gray-400
137
  font-mono italic;
138
  }
139
 
140
  .code-block {
141
+ @apply bg-navy-950 border border-cyan-900/30 rounded-lg p-3 font-mono text-sm
142
+ text-gray-300 overflow-x-auto;
143
  }
144
 
145
  .timeline-item {
146
+ @apply relative pl-6 pb-4 border-l-2 border-cyan-900/30 last:border-l-transparent;
147
  }
148
 
149
  .timeline-dot {
150
+ @apply absolute left-0 top-0 w-3 h-3 bg-cyan-500 rounded-full
151
+ -translate-x-[7px] ring-4 ring-navy-900 shadow-lg shadow-cyan-500/50;
152
  }
153
 
154
  .gradient-text {
155
+ @apply bg-gradient-to-r from-cyan-400 to-cyan-600
156
  bg-clip-text text-transparent;
157
  }
158
 
159
  .glass {
160
+ @apply bg-navy-900/60 backdrop-blur-md border border-cyan-900/20;
161
+ }
162
+
163
+ .glow-border {
164
+ @apply border-cyan-500/50 shadow-lg shadow-cyan-500/20;
165
+ }
166
+
167
+ .neon-text {
168
+ @apply text-cyan-400;
169
+ text-shadow: 0 0 10px rgba(100, 255, 218, 0.5);
170
  }
171
  }
172
 
frontend/tailwind.config.js CHANGED
@@ -5,23 +5,51 @@ export default {
5
  theme: {
6
  extend: {
7
  colors: {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  dark: {
9
- 50: '#f7f7f8',
10
- 100: '#ececf1',
11
- 200: '#d9d9e3',
12
- 300: '#c5c5d2',
13
- 400: '#acacbe',
14
- 500: '#8e8ea0',
15
- 600: '#565869',
16
- 700: '#40414f',
17
- 800: '#343541',
18
- 900: '#202123',
19
- 950: '#0d0d0f',
20
  },
21
  accent: {
22
- primary: '#10a37f',
23
- secondary: '#1a7f64',
24
- tertiary: '#19c37d',
 
25
  },
26
  },
27
  fontFamily: {
@@ -32,6 +60,7 @@ export default {
32
  'pulse-slow': 'pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite',
33
  'fade-in': 'fadeIn 0.3s ease-in-out',
34
  'slide-up': 'slideUp 0.3s ease-out',
 
35
  },
36
  keyframes: {
37
  fadeIn: {
@@ -42,6 +71,15 @@ export default {
42
  '0%': { opacity: '0', transform: 'translateY(10px)' },
43
  '100%': { opacity: '1', transform: 'translateY(0)' },
44
  },
 
 
 
 
 
 
 
 
 
45
  },
46
  },
47
  },
 
5
  theme: {
6
  extend: {
7
  colors: {
8
+ // Navy Blue and Cyan Theme
9
+ navy: {
10
+ 50: '#e6f0ff',
11
+ 100: '#b3d4ff',
12
+ 200: '#80b8ff',
13
+ 300: '#4d9cff',
14
+ 400: '#1a80ff',
15
+ 500: '#0a2540', // Base navy
16
+ 600: '#081f35',
17
+ 700: '#06192a',
18
+ 800: '#04131f',
19
+ 900: '#020d14',
20
+ 950: '#001f3f', // Deep navy
21
+ },
22
+ cyan: {
23
+ 50: '#e6fffa',
24
+ 100: '#b3fff0',
25
+ 200: '#80ffe5',
26
+ 300: '#4dffda',
27
+ 400: '#1affd0',
28
+ 500: '#00d9ff', // Bright cyan
29
+ 600: '#00b8d4',
30
+ 700: '#0097a9',
31
+ 800: '#00767e',
32
+ 900: '#005553',
33
+ 950: '#64ffda', // Neon cyan
34
+ },
35
  dark: {
36
+ 50: '#f7f8fa',
37
+ 100: '#e3e6eb',
38
+ 200: '#c7ced7',
39
+ 300: '#a3aeba',
40
+ 400: '#7e8e9e',
41
+ 500: '#5a6e82',
42
+ 600: '#445566',
43
+ 700: '#0a192f', // Navy base
44
+ 800: '#0a1929',
45
+ 900: '#051120',
46
+ 950: '#020a14',
47
  },
48
  accent: {
49
+ primary: '#00d9ff', // Bright cyan
50
+ secondary: '#64ffda', // Neon cyan
51
+ tertiary: '#0097a9', // Deep cyan
52
+ navy: '#0a192f', // Navy
53
  },
54
  },
55
  fontFamily: {
 
60
  'pulse-slow': 'pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite',
61
  'fade-in': 'fadeIn 0.3s ease-in-out',
62
  'slide-up': 'slideUp 0.3s ease-out',
63
+ 'glow': 'glow 2s ease-in-out infinite',
64
  },
65
  keyframes: {
66
  fadeIn: {
 
71
  '0%': { opacity: '0', transform: 'translateY(10px)' },
72
  '100%': { opacity: '1', transform: 'translateY(0)' },
73
  },
74
+ glow: {
75
+ '0%, 100%': { opacity: '1', boxShadow: '0 0 20px rgba(0, 217, 255, 0.5)' },
76
+ '50%': { opacity: '0.8', boxShadow: '0 0 30px rgba(100, 255, 218, 0.7)' },
77
+ },
78
+ },
79
+ backgroundImage: {
80
+ 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
81
+ 'gradient-navy': 'linear-gradient(135deg, #0a192f 0%, #051120 100%)',
82
+ 'gradient-cyan': 'linear-gradient(135deg, #00d9ff 0%, #64ffda 100%)',
83
  },
84
  },
85
  },